From 504f6907357db3748c04ffe58dc46d129f2dacc3 Mon Sep 17 00:00:00 2001 From: Kenzi Connor Date: Fri, 19 Jul 2024 22:18:57 -0700 Subject: [PATCH 01/44] simplify a little with gloo::file::FileList::from --- examples/file_upload/src/main.rs | 24 +++++------------------- 1 file changed, 5 insertions(+), 19 deletions(-) diff --git a/examples/file_upload/src/main.rs b/examples/file_upload/src/main.rs index 1e882fcbda7..c503bcb52bf 100644 --- a/examples/file_upload/src/main.rs +++ b/examples/file_upload/src/main.rs @@ -4,8 +4,8 @@ use std::collections::HashMap; use base64::engine::general_purpose::STANDARD; use base64::Engine; use gloo::file::callbacks::FileReader; -use gloo::file::File; -use web_sys::{DragEvent, Event, FileList, HtmlInputElement}; +use gloo::file::FileList; +use web_sys::{DragEvent, Event, HtmlInputElement}; use yew::html::TargetCast; use yew::{html, Callback, Component, Context, Html}; @@ -17,7 +17,7 @@ struct FileDetails { pub enum Msg { Loaded(String, String, Vec), - Files(Vec), + Files(FileList), } pub struct App { @@ -81,7 +81,7 @@ impl Component for App { ondrop={ctx.link().callback(|event: DragEvent| { event.prevent_default(); let files = event.data_transfer().unwrap().files(); - Self::upload_files(files) + Msg::Files(gloo::file::FileList::from(files.expect("files"))) })} ondragover={Callback::from(|event: DragEvent| { event.prevent_default(); @@ -101,7 +101,7 @@ impl Component for App { multiple={true} onchange={ctx.link().callback(move |e: Event| { let input: HtmlInputElement = e.target_unchecked_into(); - Self::upload_files(input.files()) + Msg::Files(gloo::file::FileList::from(input.files().expect("files"))) })} />
@@ -130,21 +130,7 @@ impl App { } } - fn upload_files(files: Option) -> Msg { - let mut result = Vec::new(); - - if let Some(files) = files { - let files = js_sys::try_iter(&files) - .unwrap() - .unwrap() - .map(|v| web_sys::File::from(v.unwrap())) - .map(File::from); - result.extend(files); - } - Msg::Files(result) - } } - fn main() { yew::Renderer::::new().render(); } From 5625a2fb9740e1d22a227a6bcd5c49111434f2bb Mon Sep 17 00:00:00 2001 From: Kenzi Connor Date: Fri, 19 Jul 2024 22:26:25 -0700 Subject: [PATCH 02/44] a little less repetition --- Cargo.lock | 87 ++------------------------------ examples/file_upload/src/main.rs | 44 +++++++--------- 2 files changed, 21 insertions(+), 110 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index e2075b835f7..1da9a34717e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2112,16 +2112,6 @@ dependencies = [ "yew", ] -[[package]] -name = "nu-ansi-term" -version = "0.46.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" -dependencies = [ - "overload", - "winapi", -] - [[package]] name = "num-traits" version = "0.2.15" @@ -2207,12 +2197,6 @@ dependencies = [ "vcpkg", ] -[[package]] -name = "overload" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" - [[package]] name = "papergrid" version = "0.10.0" @@ -2787,15 +2771,6 @@ dependencies = [ "digest", ] -[[package]] -name = "sharded-slab" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" -dependencies = [ - "lazy_static", -] - [[package]] name = "signal-hook-registry" version = "1.4.1" @@ -2812,14 +2787,14 @@ dependencies = [ "bytes", "clap", "futures 0.3.29", + "log", "reqwest", "serde", - "time", "tokio", - "tracing-subscriber", - "tracing-web", "uuid", "warp", + "wasm-bindgen-futures", + "wasm-logger", "yew", ] @@ -3058,16 +3033,6 @@ dependencies = [ "syn 2.0.38", ] -[[package]] -name = "thread_local" -version = "1.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" -dependencies = [ - "cfg-if", - "once_cell", -] - [[package]] name = "time" version = "0.3.30" @@ -3075,7 +3040,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c4a34ab300f2dee6e562c10a046fc05e358b29f9bf92277f30c3c8d82275f6f5" dependencies = [ "deranged", - "js-sys", "powerfmt", "serde", "time-core", @@ -3310,45 +3274,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" dependencies = [ "once_cell", - "valuable", -] - -[[package]] -name = "tracing-log" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" -dependencies = [ - "log", - "once_cell", - "tracing-core", -] - -[[package]] -name = "tracing-subscriber" -version = "0.3.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" -dependencies = [ - "nu-ansi-term", - "sharded-slab", - "smallvec", - "thread_local", - "tracing-core", - "tracing-log", -] - -[[package]] -name = "tracing-web" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9e6a141feebd51f8d91ebfd785af50fca223c570b86852166caa3b141defe7c" -dependencies = [ - "js-sys", - "tracing-core", - "tracing-subscriber", - "wasm-bindgen", - "web-sys", ] [[package]] @@ -3485,12 +3410,6 @@ dependencies = [ "serde", ] -[[package]] -name = "valuable" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" - [[package]] name = "vcpkg" version = "0.2.15" diff --git a/examples/file_upload/src/main.rs b/examples/file_upload/src/main.rs index c503bcb52bf..273dfd83acc 100644 --- a/examples/file_upload/src/main.rs +++ b/examples/file_upload/src/main.rs @@ -4,20 +4,19 @@ use std::collections::HashMap; use base64::engine::general_purpose::STANDARD; use base64::Engine; use gloo::file::callbacks::FileReader; -use gloo::file::FileList; use web_sys::{DragEvent, Event, HtmlInputElement}; use yew::html::TargetCast; use yew::{html, Callback, Component, Context, Html}; -struct FileDetails { +pub struct FileDetails { name: String, file_type: String, data: Vec, } pub enum Msg { - Loaded(String, String, Vec), - Files(FileList), + Loaded(FileDetails), + Files(Option), } pub struct App { @@ -38,33 +37,28 @@ impl Component for App { fn update(&mut self, ctx: &Context, msg: Self::Message) -> bool { match msg { - Msg::Loaded(file_name, file_type, data) => { - self.files.push(FileDetails { - data, - file_type, - name: file_name.clone(), - }); - self.readers.remove(&file_name); + Msg::Loaded(file) => { + let name = file.name.clone(); + self.files.push(file); + self.readers.remove(&name); true } Msg::Files(files) => { - for file in files.into_iter() { - let file_name = file.name(); + for file in gloo::file::FileList::from(files.expect("files")).iter() { + let link = ctx.link().clone(); + let name = file.name().clone(); let file_type = file.raw_mime_type(); let task = { - let link = ctx.link().clone(); - let file_name = file_name.clone(); - - gloo::file::callbacks::read_as_bytes(&file, move |res| { - link.send_message(Msg::Loaded( - file_name, + gloo::file::callbacks::read_as_bytes(file, move |res| { + link.send_message(Msg::Loaded(FileDetails { + data: res.expect("failed to read file"), file_type, - res.expect("failed to read file"), - )) + name, + })) }) }; - self.readers.insert(file_name, task); + self.readers.insert(file.name(), task); } true } @@ -80,8 +74,7 @@ impl Component for App { id="drop-container" ondrop={ctx.link().callback(|event: DragEvent| { event.prevent_default(); - let files = event.data_transfer().unwrap().files(); - Msg::Files(gloo::file::FileList::from(files.expect("files"))) + Msg::Files(event.data_transfer().unwrap().files()) })} ondragover={Callback::from(|event: DragEvent| { event.prevent_default(); @@ -101,7 +94,7 @@ impl Component for App { multiple={true} onchange={ctx.link().callback(move |e: Event| { let input: HtmlInputElement = e.target_unchecked_into(); - Msg::Files(gloo::file::FileList::from(input.files().expect("files"))) + Msg::Files(input.files()) })} />
@@ -129,7 +122,6 @@ impl App {
} } - } fn main() { yew::Renderer::::new().render(); From a51196e2942e07501a51fed05fa07184b062328f Mon Sep 17 00:00:00 2001 From: Kenzi Connor Date: Fri, 19 Jul 2024 22:46:35 -0700 Subject: [PATCH 03/44] trim the web_sys feature flags a bit --- examples/file_upload/Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/file_upload/Cargo.toml b/examples/file_upload/Cargo.toml index 3c4d3817a5e..25cd8a68d32 100644 --- a/examples/file_upload/Cargo.toml +++ b/examples/file_upload/Cargo.toml @@ -13,4 +13,4 @@ gloo = "0.10" [dependencies.web-sys] version = "0.3" -features = ["File", "DragEvent", "DataTransfer"] +features = ["DataTransfer"] From 1db7edb35a8f0f3dd15ed2e74dfe9863e499e456 Mon Sep 17 00:00:00 2001 From: Kenzi Connor Date: Sun, 21 Jul 2024 11:11:43 -0700 Subject: [PATCH 04/44] drop the clone --- examples/file_upload/src/main.rs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/examples/file_upload/src/main.rs b/examples/file_upload/src/main.rs index 273dfd83acc..121ef0b671c 100644 --- a/examples/file_upload/src/main.rs +++ b/examples/file_upload/src/main.rs @@ -38,9 +38,8 @@ impl Component for App { fn update(&mut self, ctx: &Context, msg: Self::Message) -> bool { match msg { Msg::Loaded(file) => { - let name = file.name.clone(); + self.readers.remove(&file.name); self.files.push(file); - self.readers.remove(&name); true } Msg::Files(files) => { From d19fc6759143f708f8cdfefb6640a9f95e25c38e Mon Sep 17 00:00:00 2001 From: Kenzi Connor Date: Sun, 21 Jul 2024 11:30:34 -0700 Subject: [PATCH 05/44] more golf --- examples/file_upload/src/main.rs | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/examples/file_upload/src/main.rs b/examples/file_upload/src/main.rs index 121ef0b671c..93b9de9a05b 100644 --- a/examples/file_upload/src/main.rs +++ b/examples/file_upload/src/main.rs @@ -65,6 +65,10 @@ impl Component for App { } fn view(&self, ctx: &Context) -> Html { + let noop_drag = Callback::from( |e: DragEvent| { + e.prevent_default(); + }); + html! {

{ "Upload Your Files To The Cloud" }

@@ -75,12 +79,8 @@ impl Component for App { event.prevent_default(); Msg::Files(event.data_transfer().unwrap().files()) })} - ondragover={Callback::from(|event: DragEvent| { - event.prevent_default(); - })} - ondragenter={Callback::from(|event: DragEvent| { - event.prevent_default(); - })} + ondragover={&noop_drag} + ondragenter={&noop_drag} >

{"Drop your images here or click to select"}

@@ -106,15 +106,17 @@ impl Component for App { impl App { fn view_file(file: &FileDetails) -> Html { + let file_type = file.file_type.to_string(); + let src = format!("data:{};base64,{}", file_type, STANDARD.encode(&file.data)); html! {
-

{ format!("{}", file.name) }

+

{ &file.name }

if file.file_type.contains("image") { - + } else if file.file_type.contains("video") { }
From af68646258fa6e5cba5907602a45339e989e3bb2 Mon Sep 17 00:00:00 2001 From: Tomoaki Kawada Date: Thu, 25 Jul 2024 12:39:38 +0900 Subject: [PATCH 06/44] Fix CI (#3679) * refactor(yew-macro): ignore `dead_code` for `Lint::lint` if not `cfg(yew_lints)` `dead_code` has become more precise in recent toolchains. * refactor(yew): stop using `static mut` hack to get static reference to an empty `Vec` The old code triggered `static_mut_refs` lint in the latest stable toolchain. * refactor(yew): ignore `clippy::to_string_trait_impl` for `impl ToString for Classes` * perf(yew,yew-router): use `const {}` syntax for `thread_local!` Addresses `clippy::thread_local_initializer_can_be_made_const`. May provide performance benefits. * refactor(yew): remove `yew::html::component::lifecycle::Stateful::as_any_mut` Addresses `dead_code` lint. * refactor(yew): ignore `clippy::incompatible_msrv` for `TopologicalQueue::pop_topmost` if Rust version >= 1.66 The use of `BTreeMap::pop_first` (stabilized in 1.66) is already gated by `#[rustversion(since(1.66))]` hence we can ignore this warning. * refactor(yew): gate `yew::html::component::lifecycle::Stateful::{rendered,props_changed}` by `cfg(feature = "csr")` Addresses `dead_code` lint. * test(website-test): ignore `clippy::needless_doctest_main` * doc(examples): replace `clone` + assignment with `clone_from` Addresses `clippy::assigning_clones` lint. --- examples/todomvc/src/main.rs | 2 +- packages/yew-macro/src/html_tree/lint/mod.rs | 1 + packages/yew-router/src/utils.rs | 2 +- packages/yew/src/html/classes.rs | 1 + packages/yew/src/html/component/lifecycle.rs | 9 ++++----- packages/yew/src/renderer.rs | 2 +- packages/yew/src/scheduler.rs | 1 + packages/yew/src/virtual_dom/vlist.rs | 7 +++---- tools/website-test/src/lib.rs | 1 + 9 files changed, 14 insertions(+), 12 deletions(-) diff --git a/examples/todomvc/src/main.rs b/examples/todomvc/src/main.rs index 2024805290d..4cd1aed36bd 100644 --- a/examples/todomvc/src/main.rs +++ b/examples/todomvc/src/main.rs @@ -73,7 +73,7 @@ impl Component for App { .filter(|e| self.state.filter.fits(e)) .nth(idx) .unwrap(); - self.state.edit_value = entry.description.clone(); + self.state.edit_value.clone_from(&entry.description); self.state.clear_all_edit(); self.state.toggle_edit(idx); } diff --git a/packages/yew-macro/src/html_tree/lint/mod.rs b/packages/yew-macro/src/html_tree/lint/mod.rs index bbb34f24648..82b0c351f04 100644 --- a/packages/yew-macro/src/html_tree/lint/mod.rs +++ b/packages/yew-macro/src/html_tree/lint/mod.rs @@ -12,6 +12,7 @@ use crate::props::{ElementProps, Prop}; /// use `proc-macro-error` (and the `emit_warning!` macro) to produce a warning. At present, these /// are only emitted on nightly. pub trait Lint { + #[cfg_attr(not(yew_lints), allow(dead_code))] fn lint(element: &HtmlElement); } diff --git a/packages/yew-router/src/utils.rs b/packages/yew-router/src/utils.rs index ba356701725..588e7d5badb 100644 --- a/packages/yew-router/src/utils.rs +++ b/packages/yew-router/src/utils.rs @@ -8,7 +8,7 @@ pub(crate) fn strip_slash_suffix(path: &str) -> &str { static BASE_URL_LOADED: std::sync::Once = std::sync::Once::new(); thread_local! { - static BASE_URL: RefCell> = RefCell::new(None); + static BASE_URL: RefCell> = const { RefCell::new(None) }; } // This exists so we can cache the base url. It costs us a `to_string` call instead of a DOM API diff --git a/packages/yew/src/html/classes.rs b/packages/yew/src/html/classes.rs index 941ec617bf2..d2305a129e4 100644 --- a/packages/yew/src/html/classes.rs +++ b/packages/yew/src/html/classes.rs @@ -165,6 +165,7 @@ impl IntoIterator for &Classes { } } +#[allow(clippy::to_string_trait_impl)] impl ToString for Classes { fn to_string(&self) -> String { let mut iter = self.set.iter().cloned(); diff --git a/packages/yew/src/html/component/lifecycle.rs b/packages/yew/src/html/component/lifecycle.rs index c86e4349e22..5bf523ee0d9 100644 --- a/packages/yew/src/html/component/lifecycle.rs +++ b/packages/yew/src/html/component/lifecycle.rs @@ -148,16 +148,17 @@ where /// methods. pub(crate) trait Stateful { fn view(&self) -> HtmlResult; + #[cfg(feature = "csr")] fn rendered(&mut self, first_render: bool); fn destroy(&mut self); fn any_scope(&self) -> AnyScope; fn flush_messages(&mut self) -> bool; + #[cfg(feature = "csr")] fn props_changed(&mut self, props: Rc) -> bool; fn as_any(&self) -> &dyn Any; - fn as_any_mut(&mut self) -> &mut dyn Any; #[cfg(feature = "hydration")] fn creation_mode(&self) -> RenderMode; @@ -171,6 +172,7 @@ where self.component.view(&self.context) } + #[cfg(feature = "csr")] fn rendered(&mut self, first_render: bool) { self.component.rendered(&self.context, first_render) } @@ -199,6 +201,7 @@ where }) } + #[cfg(feature = "csr")] fn props_changed(&mut self, props: Rc) -> bool { let props = match Rc::downcast::(props) { Ok(m) => m, @@ -216,10 +219,6 @@ where fn as_any(&self) -> &dyn Any { self } - - fn as_any_mut(&mut self) -> &mut dyn Any { - self - } } pub(crate) struct ComponentState { diff --git a/packages/yew/src/renderer.rs b/packages/yew/src/renderer.rs index 442268a281c..7c7e20e63c6 100644 --- a/packages/yew/src/renderer.rs +++ b/packages/yew/src/renderer.rs @@ -8,7 +8,7 @@ use crate::app_handle::AppHandle; use crate::html::BaseComponent; thread_local! { - static PANIC_HOOK_IS_SET: Cell = Cell::new(false); + static PANIC_HOOK_IS_SET: Cell = const { Cell::new(false) }; } /// Set a custom panic hook. diff --git a/packages/yew/src/scheduler.rs b/packages/yew/src/scheduler.rs index 6f9113bf346..31bd57938ce 100644 --- a/packages/yew/src/scheduler.rs +++ b/packages/yew/src/scheduler.rs @@ -55,6 +55,7 @@ impl TopologicalQueue { /// Take a single entry, preferring parents over children #[rustversion::since(1.66)] + #[allow(clippy::incompatible_msrv)] #[inline] fn pop_topmost(&mut self) -> Option { self.inner.pop_first().map(|(_, v)| v) diff --git a/packages/yew/src/virtual_dom/vlist.rs b/packages/yew/src/virtual_dom/vlist.rs index 62dc5b14e0a..b5d34f9476f 100644 --- a/packages/yew/src/virtual_dom/vlist.rs +++ b/packages/yew/src/virtual_dom/vlist.rs @@ -45,10 +45,9 @@ impl Deref for VList { match self.children { Some(ref m) => m, None => { - // This is mutable because the Vec is not Sync - static mut EMPTY: Vec = Vec::new(); - // SAFETY: The EMPTY value is always read-only - unsafe { &EMPTY } + // This can be replaced with `const { &Vec::new() }` in Rust 1.79. + const EMPTY: &Vec = &Vec::new(); + EMPTY } } } diff --git a/tools/website-test/src/lib.rs b/tools/website-test/src/lib.rs index 310f4203239..f814b314878 100644 --- a/tools/website-test/src/lib.rs +++ b/tools/website-test/src/lib.rs @@ -1,3 +1,4 @@ +#![allow(clippy::needless_doctest_main)] pub mod tutorial; include!(concat!(env!("OUT_DIR"), "/website_tests.rs")); From 08aef70f1a3c530a14c70bef1896a85042eb26b8 Mon Sep 17 00:00:00 2001 From: Cecile Tonglet Date: Thu, 25 Jul 2024 16:18:59 +0200 Subject: [PATCH 07/44] Update implicit-clone to 0.5.0 (#3682) Fixes #3659 --- Cargo.lock | 91 ++--------------------------------- examples/immutable/Cargo.toml | 2 +- packages/yew/Cargo.toml | 2 +- 3 files changed, 7 insertions(+), 88 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index e2075b835f7..66b5f213a8b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1675,9 +1675,9 @@ dependencies = [ [[package]] name = "implicit-clone" -version = "0.4.8" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc06a255cbf402a52ae399c05a518c68c569c916ea11423620111df576b9b9bb" +checksum = "1bd41bf647018e1da0e32dac34d02135d61d7204cee650e4633eddbd0b23ec38" dependencies = [ "implicit-clone-derive", "indexmap 2.0.2", @@ -2112,16 +2112,6 @@ dependencies = [ "yew", ] -[[package]] -name = "nu-ansi-term" -version = "0.46.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" -dependencies = [ - "overload", - "winapi", -] - [[package]] name = "num-traits" version = "0.2.15" @@ -2207,12 +2197,6 @@ dependencies = [ "vcpkg", ] -[[package]] -name = "overload" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" - [[package]] name = "papergrid" version = "0.10.0" @@ -2787,15 +2771,6 @@ dependencies = [ "digest", ] -[[package]] -name = "sharded-slab" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" -dependencies = [ - "lazy_static", -] - [[package]] name = "signal-hook-registry" version = "1.4.1" @@ -2812,14 +2787,14 @@ dependencies = [ "bytes", "clap", "futures 0.3.29", + "log", "reqwest", "serde", - "time", "tokio", - "tracing-subscriber", - "tracing-web", "uuid", "warp", + "wasm-bindgen-futures", + "wasm-logger", "yew", ] @@ -3058,16 +3033,6 @@ dependencies = [ "syn 2.0.38", ] -[[package]] -name = "thread_local" -version = "1.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" -dependencies = [ - "cfg-if", - "once_cell", -] - [[package]] name = "time" version = "0.3.30" @@ -3075,7 +3040,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c4a34ab300f2dee6e562c10a046fc05e358b29f9bf92277f30c3c8d82275f6f5" dependencies = [ "deranged", - "js-sys", "powerfmt", "serde", "time-core", @@ -3310,45 +3274,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" dependencies = [ "once_cell", - "valuable", -] - -[[package]] -name = "tracing-log" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" -dependencies = [ - "log", - "once_cell", - "tracing-core", -] - -[[package]] -name = "tracing-subscriber" -version = "0.3.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" -dependencies = [ - "nu-ansi-term", - "sharded-slab", - "smallvec", - "thread_local", - "tracing-core", - "tracing-log", -] - -[[package]] -name = "tracing-web" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9e6a141feebd51f8d91ebfd785af50fca223c570b86852166caa3b141defe7c" -dependencies = [ - "js-sys", - "tracing-core", - "tracing-subscriber", - "wasm-bindgen", - "web-sys", ] [[package]] @@ -3485,12 +3410,6 @@ dependencies = [ "serde", ] -[[package]] -name = "valuable" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" - [[package]] name = "vcpkg" version = "0.2.15" diff --git a/examples/immutable/Cargo.toml b/examples/immutable/Cargo.toml index df3a2b41b0f..d8902c3652e 100644 --- a/examples/immutable/Cargo.toml +++ b/examples/immutable/Cargo.toml @@ -6,7 +6,7 @@ edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -implicit-clone = { version = "0.4", features = ["map"] } +implicit-clone = { version = "0.5", features = ["map"] } wasm-bindgen = "0.2" web-sys = "0.3" yew = { path = "../../packages/yew", features = ["csr"] } diff --git a/packages/yew/Cargo.toml b/packages/yew/Cargo.toml index 27c6c545ef8..db069d9efa8 100644 --- a/packages/yew/Cargo.toml +++ b/packages/yew/Cargo.toml @@ -27,7 +27,7 @@ yew-macro = { version = "^0.21.0", path = "../yew-macro" } thiserror = "1.0" futures = { version = "0.3", default-features = false, features = ["std"] } html-escape = { version = "0.2.13", optional = true } -implicit-clone = { version = "0.4.8", features = ["map"] } +implicit-clone = { version = "0.5", features = ["map"] } base64ct = { version = "1.6.0", features = ["std"], optional = true } bincode = { version = "1.3.3", optional = true } serde = { version = "1", features = ["derive"] } From 62567cc2978c8e91b90e176027b12861117dac71 Mon Sep 17 00:00:00 2001 From: Tomoaki Kawada Date: Thu, 25 Jul 2024 23:19:30 +0900 Subject: [PATCH 08/44] feat(macro): add `inert` to the boolean attributes list (#3678) --- packages/yew-macro/src/props/element.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/yew-macro/src/props/element.rs b/packages/yew-macro/src/props/element.rs index 17a90e3f9db..a707af77bb8 100644 --- a/packages/yew-macro/src/props/element.rs +++ b/packages/yew-macro/src/props/element.rs @@ -61,6 +61,7 @@ static BOOLEAN_SET: Lazy> = Lazy::new(|| { "disabled", "formnovalidate", "hidden", + "inert", "ismap", "itemscope", "loop", From 4b3c223dbf92c46dd38732d0ca7449c6f36d32f3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 25 Jul 2024 19:23:35 +0500 Subject: [PATCH 09/44] Bump actions/upload-artifact from 3 to 4 (#3576) Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 3 to 4. - [Release notes](https://github.com/actions/upload-artifact/releases) - [Commits](https://github.com/actions/upload-artifact/compare/v3...v4) --- updated-dependencies: - dependency-name: actions/upload-artifact dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/benchmark-core.yml | 2 +- .github/workflows/benchmark-ssr.yml | 2 +- .github/workflows/benchmark.yml | 2 +- .github/workflows/build-api-docs.yml | 4 ++-- .github/workflows/build-website.yml | 4 ++-- .github/workflows/size-cmp.yml | 2 +- 6 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/benchmark-core.yml b/.github/workflows/benchmark-core.yml index b7259056ba7..5e7d0a943e4 100644 --- a/.github/workflows/benchmark-core.yml +++ b/.github/workflows/benchmark-core.yml @@ -61,7 +61,7 @@ jobs: echo "${{ github.event.number }}" > .PR_NUMBER - name: Upload Artifact - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: benchmark-core path: | diff --git a/.github/workflows/benchmark-ssr.yml b/.github/workflows/benchmark-ssr.yml index 52ddb31be57..c470077adb6 100644 --- a/.github/workflows/benchmark-ssr.yml +++ b/.github/workflows/benchmark-ssr.yml @@ -62,7 +62,7 @@ jobs: echo "${{ github.event.number }}" > .PR_NUMBER - name: Upload Artifact - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: benchmark-ssr path: | diff --git a/.github/workflows/benchmark.yml b/.github/workflows/benchmark.yml index bb034a4bc5a..9cd5877257b 100644 --- a/.github/workflows/benchmark.yml +++ b/.github/workflows/benchmark.yml @@ -120,7 +120,7 @@ jobs: EVENT_INFO: ${{ toJSON(github.event) }} - name: Upload result artifacts - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: results path: artifacts/ diff --git a/.github/workflows/build-api-docs.yml b/.github/workflows/build-api-docs.yml index 44a69b3fa0f..62085f2e875 100644 --- a/.github/workflows/build-api-docs.yml +++ b/.github/workflows/build-api-docs.yml @@ -46,7 +46,7 @@ jobs: cp -r target/doc/* api-docs/dist/next - name: Upload build artifact - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: api-docs path: api-docs/ @@ -59,7 +59,7 @@ jobs: - if: github.event_name == 'pull_request' name: Upload pr info - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: pr-info path: "${{ env.PR_INFO_FILE }}" diff --git a/.github/workflows/build-website.yml b/.github/workflows/build-website.yml index 742a5491a83..6cc7c7a4454 100644 --- a/.github/workflows/build-website.yml +++ b/.github/workflows/build-website.yml @@ -48,7 +48,7 @@ jobs: npm run build - name: Upload build artifact - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: website path: website/build/ @@ -61,7 +61,7 @@ jobs: - if: github.event_name == 'pull_request' name: Upload pr info - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: pr-info path: "${{ env.PR_INFO_FILE }}" diff --git a/.github/workflows/size-cmp.yml b/.github/workflows/size-cmp.yml index 066dbb287c0..efaa041d6ca 100644 --- a/.github/workflows/size-cmp.yml +++ b/.github/workflows/size-cmp.yml @@ -65,7 +65,7 @@ jobs: ISSUE_NUMBER: ${{ github.event.number }} - name: Upload Artifact - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: size-cmp-${{ matrix.target }}-info path: ".SIZE_CMP_INFO" From 89c9dfe52710a8067e0bd366dfb47ce727ca3ad7 Mon Sep 17 00:00:00 2001 From: Tim Kurdov Date: Thu, 25 Jul 2024 15:25:52 +0100 Subject: [PATCH 10/44] Allow `Self` in prop fields (#3569) * added replacement of `Self` in fields and attrs * added more tests * todo -> unimplemented --- packages/yew-macro/src/derive_props/field.rs | 6 +- packages/yew-macro/src/derive_props/mod.rs | 104 ++++++++++++++++-- .../yew-macro/src/derive_props/wrapper.rs | 6 +- packages/yew-macro/src/lib.rs | 3 +- .../yew-macro/tests/props_macro/props-pass.rs | 16 +++ 5 files changed, 119 insertions(+), 16 deletions(-) diff --git a/packages/yew-macro/src/derive_props/field.rs b/packages/yew-macro/src/derive_props/field.rs index 37dc28c8bc3..da2af9ee97c 100644 --- a/packages/yew-macro/src/derive_props/field.rs +++ b/packages/yew-macro/src/derive_props/field.rs @@ -12,7 +12,7 @@ use crate::derive_props::generics::push_type_param; #[allow(clippy::large_enum_variant)] #[derive(PartialEq, Eq)] -enum PropAttr { +pub enum PropAttr { Required { wrapped_name: Ident }, PropOr(Expr), PropOrElse(Expr), @@ -21,9 +21,9 @@ enum PropAttr { #[derive(Eq)] pub struct PropField { - ty: Type, + pub ty: Type, name: Ident, - attr: PropAttr, + pub attr: PropAttr, extra_attrs: Vec, } diff --git a/packages/yew-macro/src/derive_props/mod.rs b/packages/yew-macro/src/derive_props/mod.rs index db18527222f..017f3fd7fb2 100644 --- a/packages/yew-macro/src/derive_props/mod.rs +++ b/packages/yew-macro/src/derive_props/mod.rs @@ -10,9 +10,16 @@ use field::PropField; use proc_macro2::{Ident, Span}; use quote::{format_ident, quote, ToTokens}; use syn::parse::{Parse, ParseStream, Result}; -use syn::{Attribute, DeriveInput, Generics, Visibility}; +use syn::punctuated::Pair; +use syn::visit_mut::VisitMut; +use syn::{ + AngleBracketedGenericArguments, Attribute, ConstParam, DeriveInput, GenericArgument, + GenericParam, Generics, Path, PathArguments, PathSegment, Type, TypeParam, TypePath, + Visibility, +}; use wrapper::PropsWrapper; +use self::field::PropAttr; use self::generics::to_arguments; pub struct DerivePropsInput { @@ -23,6 +30,76 @@ pub struct DerivePropsInput { preserved_attrs: Vec, } +/// AST visitor that replaces all occurences of the keyword `Self` with `new_self` +struct Normaliser<'ast> { + new_self: &'ast Ident, + generics: &'ast Generics, + /// `Option` for one-time initialisation + new_self_full: Option, +} + +impl<'ast> Normaliser<'ast> { + pub fn new(new_self: &'ast Ident, generics: &'ast Generics) -> Self { + Self { + new_self, + generics, + new_self_full: None, + } + } + + fn get_new_self(&mut self) -> PathSegment { + self.new_self_full + .get_or_insert_with(|| { + PathSegment { + ident: self.new_self.clone(), + arguments: if self.generics.lt_token.is_some() { + PathArguments::AngleBracketed(AngleBracketedGenericArguments { + colon2_token: Some(Default::default()), + lt_token: Default::default(), + args: self + .generics + .params + .pairs() + .map(|pair| { + let (value, punct) = pair.cloned().into_tuple(); + let value = match value { + GenericParam::Lifetime(param) => { + GenericArgument::Lifetime(param.lifetime) + } + GenericParam::Type(TypeParam { ident, .. }) + | GenericParam::Const(ConstParam { ident, .. }) => { + GenericArgument::Type(Type::Path(TypePath { + qself: None, + path: ident.into(), + })) + } + }; + Pair::new(value, punct) + }) + .collect(), + gt_token: Default::default(), + }) + } else { + // if no generics were defined for the struct + PathArguments::None + }, + } + }) + .clone() + } +} + +impl VisitMut for Normaliser<'_> { + fn visit_path_mut(&mut self, path: &mut Path) { + if let Some(first) = path.segments.first_mut() { + if first.ident == "Self" { + *first = self.get_new_self(); + } + syn::visit_mut::visit_path_mut(self, path) + } + } +} + /// Some attributes on the original struct are to be preserved and added to the builder struct, /// in order to avoid warnings (sometimes reported as errors) in the output. fn should_preserve_attr(attr: &Attribute) -> bool { @@ -74,22 +151,33 @@ impl Parse for DerivePropsInput { } } +impl DerivePropsInput { + /// Replaces all occurences of `Self` in the struct with the actual name of the struct. + /// Must be called before tokenising the struct. + pub fn normalise(&mut self) { + let mut normaliser = Normaliser::new(&self.props_name, &self.generics); + for field in &mut self.prop_fields { + normaliser.visit_type_mut(&mut field.ty); + if let PropAttr::PropOr(expr) | PropAttr::PropOrElse(expr) = &mut field.attr { + normaliser.visit_expr_mut(expr) + } + } + } +} + impl ToTokens for DerivePropsInput { fn to_tokens(&self, tokens: &mut proc_macro2::TokenStream) { let Self { generics, props_name, + prop_fields, + preserved_attrs, .. } = self; // The wrapper is a new struct which wraps required props in `Option` let wrapper_name = format_ident!("{}Wrapper", props_name, span = Span::mixed_site()); - let wrapper = PropsWrapper::new( - &wrapper_name, - generics, - &self.prop_fields, - &self.preserved_attrs, - ); + let wrapper = PropsWrapper::new(&wrapper_name, generics, prop_fields, preserved_attrs); tokens.extend(wrapper.into_token_stream()); // The builder will only build if all required props have been set @@ -101,7 +189,7 @@ impl ToTokens for DerivePropsInput { self, &wrapper_name, &check_all_props_name, - &self.preserved_attrs, + preserved_attrs, ); let generic_args = to_arguments(generics); tokens.extend(builder.into_token_stream()); diff --git a/packages/yew-macro/src/derive_props/wrapper.rs b/packages/yew-macro/src/derive_props/wrapper.rs index 148a8e51feb..83ad4774e2e 100644 --- a/packages/yew-macro/src/derive_props/wrapper.rs +++ b/packages/yew-macro/src/derive_props/wrapper.rs @@ -48,13 +48,13 @@ impl ToTokens for PropsWrapper<'_> { } } -impl<'a> PropsWrapper<'_> { +impl<'a> PropsWrapper<'a> { pub fn new( name: &'a Ident, generics: &'a Generics, prop_fields: &'a [PropField], extra_attrs: &'a [Attribute], - ) -> PropsWrapper<'a> { + ) -> Self { PropsWrapper { wrapper_name: name, generics, @@ -62,9 +62,7 @@ impl<'a> PropsWrapper<'_> { extra_attrs, } } -} -impl PropsWrapper<'_> { fn field_defs(&self) -> impl Iterator { self.prop_fields.iter().map(|pf| pf.to_field_def()) } diff --git a/packages/yew-macro/src/lib.rs b/packages/yew-macro/src/lib.rs index 5d7216d84a0..acc0d4f8dfa 100644 --- a/packages/yew-macro/src/lib.rs +++ b/packages/yew-macro/src/lib.rs @@ -107,7 +107,8 @@ fn is_ide_completion() -> bool { #[proc_macro_derive(Properties, attributes(prop_or, prop_or_else, prop_or_default))] pub fn derive_props(input: TokenStream) -> TokenStream { - let input = parse_macro_input!(input as DerivePropsInput); + let mut input = parse_macro_input!(input as DerivePropsInput); + input.normalise(); TokenStream::from(input.into_token_stream()) } diff --git a/packages/yew-macro/tests/props_macro/props-pass.rs b/packages/yew-macro/tests/props_macro/props-pass.rs index cdd51db77f9..4e1186d9323 100644 --- a/packages/yew-macro/tests/props_macro/props-pass.rs +++ b/packages/yew-macro/tests/props_macro/props-pass.rs @@ -56,6 +56,22 @@ pub struct RawIdentProps { r#pointless_raw_name: ::std::primitive::usize, } +#[derive(::yew::Properties)] +pub struct SelfRefProps<'a, T> { + x: ::std::boxed::Box, + y: ::std::boxed::Box, + z: &'a Self, + a: ::std::marker::PhantomData<(&'a Self, Self)>, + b: ::std::marker::PhantomData<::std::boxed::Box>, + c: fn(&Self) -> Self, +} + +impl ::std::cmp::PartialEq for SelfRefProps<'_, T> { + fn eq(&self, _: &Self) -> ::std::primitive::bool { + ::std::unimplemented!() + } +} + fn pass_raw_idents() { ::yew::props!(RawIdentProps { r#true: 5 }); let (r#true, r#pointless_raw_name) = (3, 5); From 37e668b19b02112ce3649ea89c670a93d00084e0 Mon Sep 17 00:00:00 2001 From: Elina Date: Thu, 25 Jul 2024 20:33:14 +0500 Subject: [PATCH 11/44] Fix CI for 1.80 (#3691) * fix rust 1.80 lints * attempt to fix benchmark ci --- .github/workflows/benchmark.yml | 4 ++++ Cargo.toml | 1 + packages/yew-macro/Cargo.toml | 4 ++++ packages/yew/Cargo.toml | 4 ++++ packages/yew/src/dom_bundle/blist.rs | 1 + 5 files changed, 14 insertions(+) diff --git a/.github/workflows/benchmark.yml b/.github/workflows/benchmark.yml index 9cd5877257b..3eccceb4a52 100644 --- a/.github/workflows/benchmark.yml +++ b/.github/workflows/benchmark.yml @@ -49,6 +49,10 @@ jobs: cache-dependency-path: js-framework-benchmark/package-lock.json - uses: Swatinem/rust-cache@v2 + - name: Setup chrome + uses: browser-actions/setup-chrome@v1 + with: + install-chromedriver: true - name: setup js-framework-benchmark working-directory: js-framework-benchmark diff --git a/Cargo.toml b/Cargo.toml index 9205d8e3dcb..e68496c32e4 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -20,3 +20,4 @@ lto = true codegen-units = 1 panic = "abort" opt-level = 3 + diff --git a/packages/yew-macro/Cargo.toml b/packages/yew-macro/Cargo.toml index 9d497486b92..af83d0c3e54 100644 --- a/packages/yew-macro/Cargo.toml +++ b/packages/yew-macro/Cargo.toml @@ -28,3 +28,7 @@ prettyplease = "0.2" rustversion = "1" trybuild = "1" yew = { path = "../yew" } + +[lints.rust] +unexpected_cfgs = { level = "allow", check-cfg = ['cfg(nightly_yew)'] } + diff --git a/packages/yew/Cargo.toml b/packages/yew/Cargo.toml index db069d9efa8..07780f2d9dd 100644 --- a/packages/yew/Cargo.toml +++ b/packages/yew/Cargo.toml @@ -100,3 +100,7 @@ default = [] [package.metadata.docs.rs] all-features = true rustdoc-args = ["--cfg", "documenting"] + +[lints.rust] +unexpected_cfgs = { level = "allow", check-cfg = ['cfg(nightly_yew)'] } + diff --git a/packages/yew/src/dom_bundle/blist.rs b/packages/yew/src/dom_bundle/blist.rs index ab763fa11c2..9c2ad6b5f30 100644 --- a/packages/yew/src/dom_bundle/blist.rs +++ b/packages/yew/src/dom_bundle/blist.rs @@ -248,6 +248,7 @@ impl BList { let rights_to = rev_bundles.len() - matching_len_start; let mut spliced_middle = rev_bundles.splice(matching_len_end..rights_to, std::iter::empty()); + #[allow(clippy::mutable_key_type)] let mut spare_bundles: HashSet = HashSet::with_capacity((matching_len_end..rights_to).len()); for (idx, r) in (&mut spliced_middle).enumerate() { From d13ee882ad95b316b2c140d4613d72d3a879eb57 Mon Sep 17 00:00:00 2001 From: Raphael Martin Schindler Date: Fri, 26 Jul 2024 07:37:53 -0700 Subject: [PATCH 12/44] Fix typos in introduction.mdx (#3605) --- .../version-0.21/getting-started/introduction.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/versioned_docs/version-0.21/getting-started/introduction.mdx b/website/versioned_docs/version-0.21/getting-started/introduction.mdx index fedde6320c4..4198ca6ae8b 100644 --- a/website/versioned_docs/version-0.21/getting-started/introduction.mdx +++ b/website/versioned_docs/version-0.21/getting-started/introduction.mdx @@ -49,5 +49,5 @@ There are options other than Trunk that may be used for bundling Yew application ## Next steps -With your development environment setup, you can now either proceed with reading the documentation. +With your development environment set up, you can now proceed with reading the documentation. If you like to learn by getting your hands dirty, we recommend you check out our [tutorial](../tutorial). From 43a78bd3ab209ca358314f4646ec1a361434a9b4 Mon Sep 17 00:00:00 2001 From: gcmutator <134900551+gcmutator@users.noreply.github.com> Date: Fri, 26 Jul 2024 22:39:11 +0800 Subject: [PATCH 13/44] remove repetitive words (#3628) Signed-off-by: gcmutator <329964069@qq.com> --- examples/function_todomvc/src/components/entry.rs | 2 +- packages/yew/src/dom_bundle/btag/mod.rs | 2 +- packages/yew/src/html/component/marker.rs | 2 +- website/versioned_docs/version-0.20/concepts/agents.mdx | 2 +- website/versioned_docs/version-0.20/more/deployment.mdx | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/examples/function_todomvc/src/components/entry.rs b/examples/function_todomvc/src/components/entry.rs index 4df733ff159..98f04444c03 100644 --- a/examples/function_todomvc/src/components/entry.rs +++ b/examples/function_todomvc/src/components/entry.rs @@ -19,7 +19,7 @@ pub fn entry(props: &EntryProps) -> Html { let mut class = Classes::from("todo"); // We use the `use_bool_toggle` hook and set the default value to `false` - // as the default we are not editing the the entry. When we want to edit the + // as the default we are not editing the entry. When we want to edit the // entry we can call the toggle method on the `UseBoolToggleHandle` // which will trigger a re-render with the toggle value being `true` for that // render and after that render the value of toggle will be flipped back to diff --git a/packages/yew/src/dom_bundle/btag/mod.rs b/packages/yew/src/dom_bundle/btag/mod.rs index a376d3b1fc9..244fc1a02a1 100644 --- a/packages/yew/src/dom_bundle/btag/mod.rs +++ b/packages/yew/src/dom_bundle/btag/mod.rs @@ -985,7 +985,7 @@ mod tests { let elem_vtag = assert_vtag(next_elem); // Sync happens here - // this should remove the the "disabled" attribute + // this should remove the "disabled" attribute elem_vtag.reconcile_node(&root, &scope, &parent, DomSlot::at_end(), &mut elem); assert_eq!( diff --git a/packages/yew/src/html/component/marker.rs b/packages/yew/src/html/component/marker.rs index abd2d152d5e..f7d8e2c5cfa 100644 --- a/packages/yew/src/html/component/marker.rs +++ b/packages/yew/src/html/component/marker.rs @@ -5,7 +5,7 @@ use crate::html::{BaseComponent, ChildrenProps, Html}; /// A Component to represent a component that does not exist in current implementation. /// -/// During Hydration, Yew expected the Virtual DOM hierarchy to match the the layout used in +/// During Hydration, Yew expected the Virtual DOM hierarchy to match the layout used in /// server-side rendering. However, sometimes it is possible / reasonable to omit certain components /// from one side of the implementation. This component is used to represent a component as if a /// component "existed" in the place it is defined. diff --git a/website/versioned_docs/version-0.20/concepts/agents.mdx b/website/versioned_docs/version-0.20/concepts/agents.mdx index 278875cb04d..6fb3066ee8b 100644 --- a/website/versioned_docs/version-0.20/concepts/agents.mdx +++ b/website/versioned_docs/version-0.20/concepts/agents.mdx @@ -36,7 +36,7 @@ The code can be found in the tag of the svgs. - Private - Spawn a new agent in a web worker for every new bridge. This is good for moving shared but independent behavior that communicates with the browser out of components. When - the the connected bridge is dropped, the agent will disappear. + the connected bridge is dropped, the agent will disappear. - Global \(WIP\) diff --git a/website/versioned_docs/version-0.20/more/deployment.mdx b/website/versioned_docs/version-0.20/more/deployment.mdx index 374bf4c4294..2e664c81436 100644 --- a/website/versioned_docs/version-0.20/more/deployment.mdx +++ b/website/versioned_docs/version-0.20/more/deployment.mdx @@ -22,7 +22,7 @@ An application with Yew router is built as a [Single Page Application (SPA)](htt But on a fresh load, such as when navigating to the page by entering it in the address bar or refreshing the page, all of these actions are handled by the browser itself, outside the running application. The browser makes a direct request to the server for that URL, bypassing the router. A wrongly configured server would return with status 404 - Not Found. -By returning `index.html` instead, the app loads as it normally would as if request was for `/`, until the router notices that the the route is `/show/42` and displays the appropriate contents. +By returning `index.html` instead, the app loads as it normally would as if request was for `/`, until the router notices that the route is `/show/42` and displays the appropriate contents. ### Configuring correct MIME-type for Web Assembly asset. From 7ba977e69e241d96fb50f485be40f7dcd831f660 Mon Sep 17 00:00:00 2001 From: Astariul <43774355+astariul@users.noreply.github.com> Date: Fri, 26 Jul 2024 23:39:34 +0900 Subject: [PATCH 14/44] Fix typo in the docs (#3631) --- website/docs/concepts/basic-web-technologies/web-sys.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/concepts/basic-web-technologies/web-sys.mdx b/website/docs/concepts/basic-web-technologies/web-sys.mdx index daffd9ad2b6..392eb2d5257 100644 --- a/website/docs/concepts/basic-web-technologies/web-sys.mdx +++ b/website/docs/concepts/basic-web-technologies/web-sys.mdx @@ -145,7 +145,7 @@ document.getElementById('mousemoveme').onmousemove = (e) => { ### `web-sys` example -Using `web-sys` alone the above JavaSciprt example could be implemented like this: +Using `web-sys` alone the above JavaScript example could be implemented like this: ```toml title=Cargo.toml [dependencies] From b8d3e21ca009122a6df8a480bd2e0140cbbd4b07 Mon Sep 17 00:00:00 2001 From: Elina Date: Sat, 3 Aug 2024 16:09:34 +0500 Subject: [PATCH 15/44] Raise MSRV to 1.76 (#3693) * raise msrv to 1.76 * remove older impls * bless trybuild tests * Update packages/yew/src/scheduler.rs --- .github/workflows/main-checks.yml | 4 +- packages/yew-agent-macro/Cargo.toml | 2 +- packages/yew-agent/Cargo.toml | 2 +- packages/yew-macro/Cargo.toml | 2 +- packages/yew-macro/Makefile.toml | 2 +- .../tests/classes_macro/classes-fail.stderr | 101 +++++----- .../yew-macro/tests/classes_macro_test.rs | 2 +- .../yew-macro/tests/derive_props/fail.stderr | 109 +++++------ packages/yew-macro/tests/derive_props_test.rs | 2 +- .../yew-macro/tests/function_attr_test.rs | 2 +- .../bad-return-type-fail.stderr | 2 +- .../generic-props-fail.stderr | 80 +++++--- packages/yew-macro/tests/hook_attr_test.rs | 2 +- packages/yew-macro/tests/hook_macro_test.rs | 2 +- .../tests/html_macro/block-fail.stderr | 23 ++- .../tests/html_macro/component-fail.stderr | 137 ++++++------- .../component-unimplemented-fail.stderr | 4 +- .../tests/html_macro/element-fail.stderr | 182 ++++++++++++------ .../html_macro/generic-component-fail.stderr | 2 +- .../tests/html_macro/iterable-fail.stderr | 43 +++-- .../tests/html_macro/list-fail.stderr | 2 +- .../tests/html_macro/node-fail.stderr | 24 +-- packages/yew-macro/tests/html_macro_test.rs | 2 +- .../tests/props_macro/props-fail.stderr | 6 +- .../props_macro/resolve-prop-fail.stderr | 37 +++- packages/yew-macro/tests/props_macro_test.rs | 2 +- packages/yew-router-macro/Cargo.toml | 2 +- packages/yew-router-macro/Makefile.toml | 2 +- .../tests/routable_derive_test.rs | 2 +- packages/yew-router/Cargo.toml | 2 +- packages/yew/Cargo.toml | 2 +- packages/yew/src/scheduler.rs | 10 - packages/yew/src/server_renderer.rs | 14 -- website/docs/getting-started/introduction.mdx | 2 +- .../getting-started/introduction.mdx | 2 +- 35 files changed, 450 insertions(+), 366 deletions(-) diff --git a/.github/workflows/main-checks.yml b/.github/workflows/main-checks.yml index e0bb2ba7e81..e825c3b143e 100644 --- a/.github/workflows/main-checks.yml +++ b/.github/workflows/main-checks.yml @@ -67,7 +67,7 @@ jobs: fail-fast: false matrix: toolchain: - - 1.64.0 + - 1.76.0 - stable steps: @@ -116,7 +116,7 @@ jobs: fail-fast: false matrix: toolchain: - - 1.64.0 + - 1.76.0 - stable - nightly diff --git a/packages/yew-agent-macro/Cargo.toml b/packages/yew-agent-macro/Cargo.toml index 149198c5cee..383213dcdd0 100644 --- a/packages/yew-agent-macro/Cargo.toml +++ b/packages/yew-agent-macro/Cargo.toml @@ -2,7 +2,7 @@ name = "yew-agent-macro" version = "0.2.0" edition = "2021" -rust-version = "1.64.0" +rust-version = "1.76.0" authors = ["Kaede Hoshikawa "] repository = "https://github.com/yewstack/yew" homepage = "https://yew.rs" diff --git a/packages/yew-agent/Cargo.toml b/packages/yew-agent/Cargo.toml index 2007b54f86f..ea62ebd9b66 100644 --- a/packages/yew-agent/Cargo.toml +++ b/packages/yew-agent/Cargo.toml @@ -9,7 +9,7 @@ edition = "2021" readme = "../../README.md" description = "Agents for Yew" license = "MIT OR Apache-2.0" -rust-version = "1.64.0" +rust-version = "1.76.0" [dependencies] yew = { version = "0.21.0", path = "../yew" } diff --git a/packages/yew-macro/Cargo.toml b/packages/yew-macro/Cargo.toml index af83d0c3e54..7825f2850f7 100644 --- a/packages/yew-macro/Cargo.toml +++ b/packages/yew-macro/Cargo.toml @@ -10,7 +10,7 @@ license = "MIT OR Apache-2.0" keywords = ["web", "wasm", "frontend", "webasm", "webassembly"] categories = ["gui", "web-programming", "wasm"] description = "A framework for making client-side single-page apps" -rust-version = "1.64.0" +rust-version = "1.76.0" [lib] proc-macro = true diff --git a/packages/yew-macro/Makefile.toml b/packages/yew-macro/Makefile.toml index b679fa4fa51..f1a5a6ad133 100644 --- a/packages/yew-macro/Makefile.toml +++ b/packages/yew-macro/Makefile.toml @@ -1,6 +1,6 @@ [tasks.test] clear = true -toolchain = "1.64.0" +toolchain = "1.76.0" command = "cargo" # test target can be optionally specified like `cargo make test html_macro`, args = ["test", "${@}"] diff --git a/packages/yew-macro/tests/classes_macro/classes-fail.stderr b/packages/yew-macro/tests/classes_macro/classes-fail.stderr index 9d30a817b18..9987bf14a13 100644 --- a/packages/yew-macro/tests/classes_macro/classes-fail.stderr +++ b/packages/yew-macro/tests/classes_macro/classes-fail.stderr @@ -17,16 +17,16 @@ error[E0277]: the trait bound `Classes: From<{integer}>` is not satisfied | ^^ the trait `From<{integer}>` is not implemented for `Classes` | = help: the following other types implement trait `From`: - > - >> - > - > - > >> - >> + > + >> > + >> + > + > + > and $N others - = note: required because of the requirements on the impl of `Into` for `{integer}` + = note: required for `{integer}` to implement `Into` note: required by a bound in `Classes::push` --> $WORKSPACE/packages/yew/src/html/classes.rs | @@ -40,16 +40,16 @@ error[E0277]: the trait bound `Classes: From<{float}>` is not satisfied | ^^^^ the trait `From<{float}>` is not implemented for `Classes` | = help: the following other types implement trait `From`: - > - >> - > - > - > >> - >> + > + >> > + >> + > + > + > and $N others - = note: required because of the requirements on the impl of `Into` for `{float}` + = note: required for `{float}` to implement `Into` note: required by a bound in `Classes::push` --> $WORKSPACE/packages/yew/src/html/classes.rs | @@ -60,22 +60,25 @@ error[E0277]: the trait bound `Classes: From<{integer}>` is not satisfied --> tests/classes_macro/classes-fail.rs:9:14 | 9 | classes!(vec![42]); - | ^^^ the trait `From<{integer}>` is not implemented for `Classes` + | ---^^^^^ + | | + | the trait `From<{integer}>` is not implemented for `Classes` + | required by a bound introduced by this call | = help: the following other types implement trait `From`: - > - >> - > - > - > >> - >> + > + >> > + >> + > + > + > and $N others - = note: required because of the requirements on the impl of `Into` for `{integer}` - = note: required because of the requirements on the impl of `From>` for `Classes` + = note: required for `{integer}` to implement `Into` + = note: required for `Classes` to implement `From>` = note: 1 redundant requirement hidden - = note: required because of the requirements on the impl of `Into` for `Vec<{integer}>` + = note: required for `Vec<{integer}>` to implement `Into` note: required by a bound in `Classes::push` --> $WORKSPACE/packages/yew/src/html/classes.rs | @@ -89,19 +92,19 @@ error[E0277]: the trait bound `Classes: From<{integer}>` is not satisfied | ^^^^ the trait `From<{integer}>` is not implemented for `Classes` | = help: the following other types implement trait `From`: - > - >> - > - > - > >> - >> + > + >> > + >> + > + > + > and $N others - = note: required because of the requirements on the impl of `Into` for `{integer}` - = note: required because of the requirements on the impl of `From>` for `Classes` + = note: required for `{integer}` to implement `Into` + = note: required for `Classes` to implement `From>` = note: 1 redundant requirement hidden - = note: required because of the requirements on the impl of `Into` for `Option<{integer}>` + = note: required for `Option<{integer}>` to implement `Into` note: required by a bound in `Classes::push` --> $WORKSPACE/packages/yew/src/html/classes.rs | @@ -115,19 +118,19 @@ error[E0277]: the trait bound `Classes: From` is not satisfied | ^^^^ the trait `From` is not implemented for `Classes` | = help: the following other types implement trait `From`: - > - >> - > - > - > >> - >> + > + >> > + >> + > + > + > and $N others - = note: required because of the requirements on the impl of `Into` for `u32` - = note: required because of the requirements on the impl of `From>` for `Classes` + = note: required for `u32` to implement `Into` + = note: required for `Classes` to implement `From>` = note: 1 redundant requirement hidden - = note: required because of the requirements on the impl of `Into` for `Option` + = note: required for `Option` to implement `Into` note: required by a bound in `Classes::push` --> $WORKSPACE/packages/yew/src/html/classes.rs | @@ -141,16 +144,16 @@ error[E0277]: the trait bound `Classes: From<{integer}>` is not satisfied | ^^ the trait `From<{integer}>` is not implemented for `Classes` | = help: the following other types implement trait `From`: - > - >> - > - > - > >> - >> + > + >> > + >> + > + > + > and $N others - = note: required because of the requirements on the impl of `Into` for `{integer}` + = note: required for `{integer}` to implement `Into` note: required by a bound in `Classes::push` --> $WORKSPACE/packages/yew/src/html/classes.rs | diff --git a/packages/yew-macro/tests/classes_macro_test.rs b/packages/yew-macro/tests/classes_macro_test.rs index e2cadf8cf39..fdf00df084c 100644 --- a/packages/yew-macro/tests/classes_macro_test.rs +++ b/packages/yew-macro/tests/classes_macro_test.rs @@ -1,5 +1,5 @@ #[allow(dead_code)] -#[rustversion::attr(stable(1.64), test)] +#[rustversion::attr(stable(1.76), test)] fn classes_macro() { let t = trybuild::TestCases::new(); t.pass("tests/classes_macro/*-pass.rs"); diff --git a/packages/yew-macro/tests/derive_props/fail.stderr b/packages/yew-macro/tests/derive_props/fail.stderr index e3d2c5461ff..b03963506ae 100644 --- a/packages/yew-macro/tests/derive_props/fail.stderr +++ b/packages/yew-macro/tests/derive_props/fail.stderr @@ -32,10 +32,12 @@ error[E0277]: the trait bound `Value: Default` is not satisfied | ^^^^^^^^^^ the trait `Default` is not implemented for `Value` | note: required by a bound in `Option::::unwrap_or_default` + --> $RUST/core/src/option.rs = note: this error originates in the derive macro `Properties` (in Nightly builds, run with -Z macro-backtrace for more info) help: consider annotating `Value` with `#[derive(Default)]` | -8 | #[derive(Default)] +8 + #[derive(Default)] +9 | struct Value; | error[E0369]: binary operation `==` cannot be applied to type `Value` @@ -47,35 +49,16 @@ error[E0369]: binary operation `==` cannot be applied to type `Value` 13 | value: Value, | ^^^^^^^^^^^^ | -note: an implementation of `PartialEq<_>` might be missing for `Value` +note: an implementation of `PartialEq` might be missing for `Value` --> tests/derive_props/fail.rs:8:5 | 8 | struct Value; - | ^^^^^^^^^^^^ must implement `PartialEq<_>` + | ^^^^^^^^^^^^ must implement `PartialEq` = note: this error originates in the derive macro `PartialEq` (in Nightly builds, run with -Z macro-backtrace for more info) help: consider annotating `Value` with `#[derive(PartialEq)]` | -8 | #[derive(PartialEq)] - | - -error[E0369]: binary operation `!=` cannot be applied to type `Value` - --> tests/derive_props/fail.rs:13:9 - | -9 | #[derive(Clone, Properties, PartialEq)] - | --------- in this derive macro expansion -... -13 | value: Value, - | ^^^^^^^^^^^^ - | -note: an implementation of `PartialEq<_>` might be missing for `Value` - --> tests/derive_props/fail.rs:8:5 - | -8 | struct Value; - | ^^^^^^^^^^^^ must implement `PartialEq<_>` - = note: this error originates in the derive macro `PartialEq` (in Nightly builds, run with -Z macro-backtrace for more info) -help: consider annotating `Value` with `#[derive(PartialEq)]` - | -8 | #[derive(PartialEq)] +8 + #[derive(PartialEq)] +9 | struct Value; | error[E0277]: the trait bound `AssertAllProps: HasProp` is not satisfied @@ -85,26 +68,29 @@ error[E0277]: the trait bound `AssertAllProps: HasProp` is | ^^^^^ the trait `HasProp` is not implemented for `AssertAllProps` | = help: the following other types implement trait `HasProp`: - as HasProp>> - as HasProp>> - as HasProp>> - as HasProp>> - as HasProp>> - as HasProp>> - as HasProp>> - as HasProp>> + as HasProp>> + as HasProp>> + as HasProp>> + as HasProp>> + as HasProp>> + as HasProp>> + as HasProp>> + as HasProp>> and $N others -note: required because of the requirements on the impl of `HasAllProps` for `t3::CheckPropsAll` +note: required for `t3::CheckPropsAll` to implement `HasAllProps` --> tests/derive_props/fail.rs:29:21 | 29 | #[derive(Clone, Properties, PartialEq)] - | ^^^^^^^^^^ - = note: required because of the requirements on the impl of `AllPropsFor` for `AssertAllProps` + | ^^^^^^^^^^ unsatisfied trait bound introduced in this `derive` macro + = note: required for `AssertAllProps` to implement `AllPropsFor` note: required by a bound in `html::component::properties::__macro::PreBuild::::build` --> $WORKSPACE/packages/yew/src/html/component/properties.rs | + | pub fn build(self) -> B::Output + | ----- required by a bound in this associated function + | where | Token: AllPropsFor, - | ^^^^^^^^^^^^^^^^^^^ required by this bound in `html::component::properties::__macro::PreBuild::::build` + | ^^^^^^^^^^^^^^^^^^^ required by this bound in `PreBuild::::build` = note: this error originates in the derive macro `Properties` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0277]: the trait bound `AssertAllProps: HasProp` is not satisfied @@ -114,54 +100,53 @@ error[E0277]: the trait bound `AssertAllProps: HasProp` is | ^^^^^ the trait `HasProp` is not implemented for `AssertAllProps` | = help: the following other types implement trait `HasProp`: - as HasProp>> - as HasProp>> - as HasProp>> - as HasProp>> - as HasProp>> - as HasProp>> - as HasProp>> - as HasProp>> + as HasProp>> + as HasProp>> + as HasProp>> + as HasProp>> + as HasProp>> + as HasProp>> + as HasProp>> + as HasProp>> and $N others -note: required because of the requirements on the impl of `HasAllProps` for `t4::CheckPropsAll` +note: required for `t4::CheckPropsAll` to implement `HasAllProps` --> tests/derive_props/fail.rs:41:21 | 41 | #[derive(Clone, Properties, PartialEq)] - | ^^^^^^^^^^ - = note: required because of the requirements on the impl of `AllPropsFor` for `AssertAllProps` + | ^^^^^^^^^^ unsatisfied trait bound introduced in this `derive` macro + = note: required for `AssertAllProps` to implement `AllPropsFor` note: required by a bound in `html::component::properties::__macro::PreBuild::::build` --> $WORKSPACE/packages/yew/src/html/component/properties.rs | + | pub fn build(self) -> B::Output + | ----- required by a bound in this associated function + | where | Token: AllPropsFor, - | ^^^^^^^^^^^^^^^^^^^ required by this bound in `html::component::properties::__macro::PreBuild::::build` + | ^^^^^^^^^^^^^^^^^^^ required by this bound in `PreBuild::::build` = note: this error originates in the derive macro `Properties` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0308]: mismatched types --> tests/derive_props/fail.rs:66:19 | 66 | #[prop_or(123)] - | ^^^ + | ^^^- help: try using a conversion method: `.to_string()` | | - | expected struct `String`, found integer + | expected `String`, found integer | arguments to this function are incorrect | -note: associated function defined here -help: try using a conversion method - | -66 | #[prop_or(123.to_string())] - | ++++++++++++ -66 | #[prop_or(123.to_string())] - | ++++++++++++ +note: method defined here + --> $RUST/core/src/option.rs -error[E0277]: expected a `FnOnce<()>` closure, found `{integer}` +error[E0277]: expected a `FnOnce()` closure, found `{integer}` --> tests/derive_props/fail.rs:76:24 | 76 | #[prop_or_else(123)] - | ^^^ expected an `FnOnce<()>` closure, found `{integer}` + | ^^^ expected an `FnOnce()` closure, found `{integer}` | = help: the trait `FnOnce<()>` is not implemented for `{integer}` = note: wrap the `{integer}` in a closure with no arguments: `|| { /* code */ }` note: required by a bound in `Option::::unwrap_or_else` + --> $RUST/core/src/option.rs error[E0593]: function is expected to take 0 arguments, but it takes 1 argument --> tests/derive_props/fail.rs:96:24 @@ -173,11 +158,13 @@ error[E0593]: function is expected to take 0 arguments, but it takes 1 argument | -------------------------- takes 1 argument | note: required by a bound in `Option::::unwrap_or_else` + --> $RUST/core/src/option.rs -error[E0271]: type mismatch resolving ` i32 {t10::foo} as FnOnce<()>>::Output == String` +error[E0271]: expected `foo` to be a fn item that returns `String`, but it returns `i32` --> tests/derive_props/fail.rs:110:24 | 110 | #[prop_or_else(foo)] - | ^^^ expected struct `String`, found `i32` + | ^^^ expected `String`, found `i32` | note: required by a bound in `Option::::unwrap_or_else` + --> $RUST/core/src/option.rs diff --git a/packages/yew-macro/tests/derive_props_test.rs b/packages/yew-macro/tests/derive_props_test.rs index c98e8feb953..674d9a76383 100644 --- a/packages/yew-macro/tests/derive_props_test.rs +++ b/packages/yew-macro/tests/derive_props_test.rs @@ -1,5 +1,5 @@ #[allow(dead_code)] -#[rustversion::attr(stable(1.64), test)] +#[rustversion::attr(stable(1.76), test)] fn derive_props() { let t = trybuild::TestCases::new(); t.pass("tests/derive_props/pass.rs"); diff --git a/packages/yew-macro/tests/function_attr_test.rs b/packages/yew-macro/tests/function_attr_test.rs index ed3cf9d044a..ec02d263090 100644 --- a/packages/yew-macro/tests/function_attr_test.rs +++ b/packages/yew-macro/tests/function_attr_test.rs @@ -1,5 +1,5 @@ #[allow(dead_code)] -#[rustversion::attr(stable(1.64), test)] +#[rustversion::attr(stable(1.76), test)] fn tests() { let t = trybuild::TestCases::new(); t.pass("tests/function_component_attr/*-pass.rs"); diff --git a/packages/yew-macro/tests/function_component_attr/bad-return-type-fail.stderr b/packages/yew-macro/tests/function_component_attr/bad-return-type-fail.stderr index 9b8e8a2ab5d..b5b42e19988 100644 --- a/packages/yew-macro/tests/function_component_attr/bad-return-type-fail.stderr +++ b/packages/yew-macro/tests/function_component_attr/bad-return-type-fail.stderr @@ -11,6 +11,6 @@ error[E0277]: the trait bound `u32: IntoHtmlResult` is not satisfied | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `IntoHtmlResult` is not implemented for `u32` | = help: the following other types implement trait `IntoHtmlResult`: - Result VNode + Result = note: this error originates in the attribute macro `function_component` (in Nightly builds, run with -Z macro-backtrace for more info) diff --git a/packages/yew-macro/tests/function_component_attr/generic-props-fail.stderr b/packages/yew-macro/tests/function_component_attr/generic-props-fail.stderr index e60f09af641..df2912f89e0 100644 --- a/packages/yew-macro/tests/function_component_attr/generic-props-fail.stderr +++ b/packages/yew-macro/tests/function_component_attr/generic-props-fail.stderr @@ -1,11 +1,13 @@ error[E0412]: cannot find type `INVALID` in this scope --> tests/function_component_attr/generic-props-fail.rs:25:19 | -20 | fn compile_fail() { - | - help: you might be missing a type parameter: `` -... 25 | html! { /> }; | ^^^^^^^ not found in this scope + | +help: you might be missing a type parameter + | +20 | fn compile_fail() { + | +++++++++ error[E0277]: the trait bound `AssertAllProps: HasProp` is not satisfied --> tests/function_component_attr/generic-props-fail.rs:22:14 @@ -14,35 +16,59 @@ error[E0277]: the trait bound `AssertAllProps: HasProp` is not satisfied | ^^^^ the trait `HasProp` is not implemented for `AssertAllProps` | = help: the following other types implement trait `HasProp`: - as HasProp>> - as HasProp>> + as HasProp>> + as HasProp>> as HasProp>> - as HasProp>> - as HasProp>> - as HasProp>> as HasProp>> - as HasProp>> + as HasProp>> + as HasProp>> + as HasProp>> + as HasProp>> and $N others -note: required because of the requirements on the impl of `HasAllProps` for `CheckPropsAll` +note: required for `CheckPropsAll` to implement `HasAllProps` --> tests/function_component_attr/generic-props-fail.rs:3:17 | 3 | #[derive(Clone, Properties, PartialEq)] - | ^^^^^^^^^^ - = note: required because of the requirements on the impl of `AllPropsFor` for `AssertAllProps` + | ^^^^^^^^^^ unsatisfied trait bound introduced in this `derive` macro + = note: required for `AssertAllProps` to implement `AllPropsFor` note: required by a bound in `yew::html::component::properties::__macro::PreBuild::::build` --> $WORKSPACE/packages/yew/src/html/component/properties.rs | + | pub fn build(self) -> B::Output + | ----- required by a bound in this associated function + | where | Token: AllPropsFor, - | ^^^^^^^^^^^^^^^^^^^ required by this bound in `yew::html::component::properties::__macro::PreBuild::::build` + | ^^^^^^^^^^^^^^^^^^^ required by this bound in `PreBuild::::build` = note: this error originates in the macro `html` which comes from the expansion of the derive macro `Properties` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0277]: the trait bound `Comp: yew::BaseComponent` is not satisfied --> tests/function_component_attr/generic-props-fail.rs:27:14 | 27 | html! { /> }; - | ^^^^ the trait `yew::BaseComponent` is not implemented for `Comp` + | ^^^^^^^^^^^^^^^^^^^^^^^ the trait `yew::BaseComponent` is not implemented for `Comp` | = help: the trait `yew::BaseComponent` is implemented for `Comp

` + +error[E0277]: the trait bound `MissingTypeBounds: yew::Properties` is not satisfied + --> tests/function_component_attr/generic-props-fail.rs:27:14 + | +27 | html! { /> }; + | ^^^^ the trait `yew::Properties` is not implemented for `MissingTypeBounds` + | + = help: the following other types implement trait `yew::Properties`: + Props + ContextProviderProps + ChildrenProps + SuspenseProps + () +note: required by a bound in `Comp` + --> tests/function_component_attr/generic-props-fail.rs:11:8 + | +8 | #[function_component(Comp)] + | ---- required by a bound in this struct +... +11 | P: Properties + PartialEq, + | ^^^^^^^^^^ required by this bound in `Comp` = note: this error originates in the macro `html` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0599]: the function or associated item `new` exists for struct `VChild>`, but its trait bounds were not satisfied @@ -56,33 +82,25 @@ error[E0599]: the function or associated item `new` exists for struct `VChild: yew::BaseComponent` -note: the following trait must be implemented +note: the trait `yew::BaseComponent` must be implemented --> $WORKSPACE/packages/yew/src/html/component/mod.rs | | pub trait BaseComponent: Sized + 'static { | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ = note: this error originates in the macro `html` (in Nightly builds, run with -Z macro-backtrace for more info) -error[E0277]: the trait bound `MissingTypeBounds: yew::Properties` is not satisfied +error[E0277]: the trait bound `Comp: yew::BaseComponent` is not satisfied --> tests/function_component_attr/generic-props-fail.rs:27:14 | 27 | html! { /> }; - | ^^^^ the trait `yew::Properties` is not implemented for `MissingTypeBounds` + | ^^^^ the trait `yew::BaseComponent` is not implemented for `Comp` | - = help: the following other types implement trait `yew::Properties`: - () - ChildrenProps - ContextProviderProps - Props - SuspenseProps -note: required by a bound in `Comp` - --> tests/function_component_attr/generic-props-fail.rs:11:8 + = help: the trait `yew::BaseComponent` is implemented for `Comp

` +note: required by a bound in `VChild` + --> $WORKSPACE/packages/yew/src/virtual_dom/vcomp.rs | -8 | #[function_component(Comp)] - | ---- required by a bound in this -... -11 | P: Properties + PartialEq, - | ^^^^^^^^^^ required by this bound in `Comp` + | pub struct VChild { + | ^^^^^^^^^^^^^ required by this bound in `VChild` = note: this error originates in the macro `html` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0107]: missing generics for struct `Comp` @@ -101,4 +119,4 @@ note: struct defined here, with 1 generic parameter: `P` help: add missing generic argument | 30 | html! { /> }; - | ~~~~~~~ + | +++ diff --git a/packages/yew-macro/tests/hook_attr_test.rs b/packages/yew-macro/tests/hook_attr_test.rs index bd0a3b28812..6298193caf1 100644 --- a/packages/yew-macro/tests/hook_attr_test.rs +++ b/packages/yew-macro/tests/hook_attr_test.rs @@ -1,5 +1,5 @@ #[allow(dead_code)] -#[rustversion::attr(stable(1.64), test)] +#[rustversion::attr(stable(1.76), test)] fn tests() { let t = trybuild::TestCases::new(); t.pass("tests/hook_attr/*-pass.rs"); diff --git a/packages/yew-macro/tests/hook_macro_test.rs b/packages/yew-macro/tests/hook_macro_test.rs index 01e81a41345..ebfaa3c053c 100644 --- a/packages/yew-macro/tests/hook_macro_test.rs +++ b/packages/yew-macro/tests/hook_macro_test.rs @@ -1,5 +1,5 @@ #[allow(dead_code)] -#[rustversion::attr(stable(1.64), test)] +#[rustversion::attr(stable(1.76), test)] fn tests() { let t = trybuild::TestCases::new(); t.pass("tests/hook_macro/*-pass.rs"); diff --git a/packages/yew-macro/tests/html_macro/block-fail.stderr b/packages/yew-macro/tests/html_macro/block-fail.stderr index e659ec66f26..a723ea94037 100644 --- a/packages/yew-macro/tests/html_macro/block-fail.stderr +++ b/packages/yew-macro/tests/html_macro/block-fail.stderr @@ -2,16 +2,18 @@ error[E0277]: `()` doesn't implement `std::fmt::Display` --> tests/html_macro/block-fail.rs:6:15 | 6 | { () } - | ^^ `()` cannot be formatted with the default formatter + | ^^ + | | + | `()` cannot be formatted with the default formatter + | required by a bound introduced by this call | = help: the trait `std::fmt::Display` is not implemented for `()` = note: in format strings you may be able to use `{:?}` (or {:#?} for pretty-print) instead - = note: required because of the requirements on the impl of `ToString` for `()` - = note: required because of the requirements on the impl of `From<()>` for `VNode` - = note: required because of the requirements on the impl of `Into` for `()` + = note: required for `()` to implement `ToString` + = note: required for `VNode` to implement `From<()>` + = note: required for `()` to implement `Into` = note: 2 redundant requirements hidden - = note: required because of the requirements on the impl of `Into>` for `()` - = note: this error originates in the macro `html` (in Nightly builds, run with -Z macro-backtrace for more info) + = note: required for `()` to implement `Into>` error[E0277]: `()` doesn't implement `std::fmt::Display` --> tests/html_macro/block-fail.rs:15:17 @@ -21,11 +23,14 @@ error[E0277]: `()` doesn't implement `std::fmt::Display` | = help: the trait `std::fmt::Display` is not implemented for `()` = note: in format strings you may be able to use `{:?}` (or {:#?} for pretty-print) instead - = note: required because of the requirements on the impl of `ToString` for `()` - = note: required because of the requirements on the impl of `From<()>` for `VNode` - = note: required because of the requirements on the impl of `Into` for `()` + = note: required for `()` to implement `ToString` + = note: required for `VNode` to implement `From<()>` + = note: required for `()` to implement `Into` note: required by a bound in `into_node_iter` --> $WORKSPACE/packages/yew/src/utils/mod.rs | + | pub fn into_node_iter(it: IT) -> impl Iterator + | -------------- required by a bound in this function +... | T: Into, | ^^^^^^^ required by this bound in `into_node_iter` diff --git a/packages/yew-macro/tests/html_macro/component-fail.stderr b/packages/yew-macro/tests/html_macro/component-fail.stderr index 440ffed4c64..051f546f2c6 100644 --- a/packages/yew-macro/tests/html_macro/component-fail.stderr +++ b/packages/yew-macro/tests/html_macro/component-fail.stderr @@ -406,7 +406,7 @@ error[E0308]: mismatched types --> tests/html_macro/component-fail.rs:53:22 | 53 | html! { }; - | ----- ^^^^^^^ expected struct `ChildProperties`, found struct `std::ops::Range` + | ----- ^^^^^^^ expected `ChildProperties`, found `Range<_>` | | | expected due to this | @@ -464,6 +464,7 @@ error[E0277]: the trait bound `(): IntoPropValue` is not satisfied | required by a bound introduced by this call | = help: the trait `IntoPropValue` is implemented for `()` + = help: for that trait implementation, expected `VNode`, found `String` note: required by a bound in `ChildPropertiesBuilder::string` --> tests/html_macro/component-fail.rs:4:17 | @@ -471,7 +472,7 @@ note: required by a bound in `ChildPropertiesBuilder::string` | ^^^^^^^^^^ required by this bound in `ChildPropertiesBuilder::string` ... 7 | pub string: String, - | ------ required by a bound in this + | ------ required by a bound in this associated function = note: this error originates in the derive macro `Properties` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0277]: the trait bound `{integer}: IntoPropValue` is not satisfied @@ -483,14 +484,14 @@ error[E0277]: the trait bound `{integer}: IntoPropValue` is not satisfie | required by a bound introduced by this call | = help: the following other types implement trait `IntoPropValue`: - f32 - f64 - i128 + isize + i8 i16 i32 i64 - i8 - isize + i128 + usize + u8 and $N others note: required by a bound in `ChildPropertiesBuilder::string` --> tests/html_macro/component-fail.rs:4:17 @@ -499,7 +500,7 @@ note: required by a bound in `ChildPropertiesBuilder::string` | ^^^^^^^^^^ required by this bound in `ChildPropertiesBuilder::string` ... 7 | pub string: String, - | ------ required by a bound in this + | ------ required by a bound in this associated function = note: this error originates in the derive macro `Properties` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0277]: the trait bound `{integer}: IntoPropValue` is not satisfied @@ -511,14 +512,14 @@ error[E0277]: the trait bound `{integer}: IntoPropValue` is not satisfie | required by a bound introduced by this call | = help: the following other types implement trait `IntoPropValue`: - f32 - f64 - i128 + isize + i8 i16 i32 i64 - i8 - isize + i128 + usize + u8 and $N others note: required by a bound in `ChildPropertiesBuilder::string` --> tests/html_macro/component-fail.rs:4:17 @@ -527,7 +528,7 @@ note: required by a bound in `ChildPropertiesBuilder::string` | ^^^^^^^^^^ required by this bound in `ChildPropertiesBuilder::string` ... 7 | pub string: String, - | ------ required by a bound in this + | ------ required by a bound in this associated function = note: this error originates in the derive macro `Properties` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0609]: no field `r#ref` on type `ChildProperties` @@ -555,16 +556,8 @@ error[E0277]: the trait bound `u32: IntoPropValue` is not satisfied | | | required by a bound introduced by this call | - = help: the following other types implement trait `IntoPropValue`: - f32 - f64 - i128 - i16 - i32 - i64 - i8 - isize - and $N others + = help: the trait `IntoPropValue` is implemented for `u32` + = help: for that trait implementation, expected `VNode`, found `i32` note: required by a bound in `ChildPropertiesBuilder::int` --> tests/html_macro/component-fail.rs:4:17 | @@ -572,7 +565,7 @@ note: required by a bound in `ChildPropertiesBuilder::int` | ^^^^^^^^^^ required by this bound in `ChildPropertiesBuilder::int` ... 8 | pub int: i32, - | --- required by a bound in this + | --- required by a bound in this associated function = note: this error originates in the derive macro `Properties` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0277]: the trait bound `AssertAllProps: HasProp` is not satisfied @@ -582,26 +575,29 @@ error[E0277]: the trait bound `AssertAllProps: HasProp` is not satisfied | ^^^^^ the trait `HasProp` is not implemented for `AssertAllProps` | = help: the following other types implement trait `HasProp`: - as HasProp>> + as HasProp>> + as HasProp>> as HasProp>> - as HasProp>> - as HasProp>> - as HasProp>> - as HasProp>> as HasProp<_ChildContainerProperties::children, HasChildContainerPropertieschildren>> - as HasProp>> + as HasProp>> + as HasProp>> + as HasProp>> + as HasProp>> and $N others -note: required because of the requirements on the impl of `HasAllProps` for `CheckChildPropertiesAll` +note: required for `CheckChildPropertiesAll` to implement `HasAllProps` --> tests/html_macro/component-fail.rs:4:17 | 4 | #[derive(Clone, Properties, PartialEq)] - | ^^^^^^^^^^ - = note: required because of the requirements on the impl of `AllPropsFor` for `AssertAllProps` + | ^^^^^^^^^^ unsatisfied trait bound introduced in this `derive` macro + = note: required for `AssertAllProps` to implement `AllPropsFor` note: required by a bound in `yew::html::component::properties::__macro::PreBuild::::build` --> $WORKSPACE/packages/yew/src/html/component/properties.rs | + | pub fn build(self) -> B::Output + | ----- required by a bound in this associated function + | where | Token: AllPropsFor, - | ^^^^^^^^^^^^^^^^^^^ required by this bound in `yew::html::component::properties::__macro::PreBuild::::build` + | ^^^^^^^^^^^^^^^^^^^ required by this bound in `PreBuild::::build` = note: this error originates in the macro `html` which comes from the expansion of the derive macro `Properties` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0609]: no field `children` on type `ChildProperties` @@ -610,7 +606,6 @@ error[E0609]: no field `children` on type `ChildProperties` 103 | html! { { "Not allowed" } }; | ^^^^^ unknown field | - = note: available fields are: `string`, `int` = note: this error originates in the macro `html` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0599]: no method named `children` found for struct `ChildPropertiesBuilder` in the current scope @@ -630,7 +625,6 @@ error[E0609]: no field `children` on type `ChildProperties` 110 | | ^^^^^ unknown field | - = note: available fields are: `string`, `int` = note: this error originates in the macro `html` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0277]: the trait bound `AssertAllProps: HasProp<_ChildContainerProperties::children, _>` is not satisfied @@ -640,26 +634,29 @@ error[E0277]: the trait bound `AssertAllProps: HasProp<_ChildContainerProperties | ^^^^^^^^^^^^^^ the trait `HasProp<_ChildContainerProperties::children, _>` is not implemented for `AssertAllProps` | = help: the following other types implement trait `HasProp`: - as HasProp>> + as HasProp>> + as HasProp>> as HasProp>> - as HasProp>> - as HasProp>> - as HasProp>> - as HasProp>> as HasProp<_ChildContainerProperties::children, HasChildContainerPropertieschildren>> - as HasProp>> + as HasProp>> + as HasProp>> + as HasProp>> + as HasProp>> and $N others -note: required because of the requirements on the impl of `HasAllProps` for `CheckChildContainerPropertiesAll` +note: required for `CheckChildContainerPropertiesAll` to implement `HasAllProps` --> tests/html_macro/component-fail.rs:24:17 | 24 | #[derive(Clone, Properties, PartialEq)] - | ^^^^^^^^^^ - = note: required because of the requirements on the impl of `AllPropsFor` for `AssertAllProps` + | ^^^^^^^^^^ unsatisfied trait bound introduced in this `derive` macro + = note: required for `AssertAllProps` to implement `AllPropsFor` note: required by a bound in `yew::html::component::properties::__macro::PreBuild::::build` --> $WORKSPACE/packages/yew/src/html/component/properties.rs | + | pub fn build(self) -> B::Output + | ----- required by a bound in this associated function + | where | Token: AllPropsFor, - | ^^^^^^^^^^^^^^^^^^^ required by this bound in `yew::html::component::properties::__macro::PreBuild::::build` + | ^^^^^^^^^^^^^^^^^^^ required by this bound in `PreBuild::::build` = note: this error originates in the macro `html` which comes from the expansion of the derive macro `Properties` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0277]: the trait bound `AssertAllProps: HasProp<_ChildContainerProperties::children, _>` is not satisfied @@ -669,33 +666,38 @@ error[E0277]: the trait bound `AssertAllProps: HasProp<_ChildContainerProperties | ^^^^^^^^^^^^^^ the trait `HasProp<_ChildContainerProperties::children, _>` is not implemented for `AssertAllProps` | = help: the following other types implement trait `HasProp`: - as HasProp>> + as HasProp>> + as HasProp>> as HasProp>> - as HasProp>> - as HasProp>> - as HasProp>> - as HasProp>> as HasProp<_ChildContainerProperties::children, HasChildContainerPropertieschildren>> - as HasProp>> + as HasProp>> + as HasProp>> + as HasProp>> + as HasProp>> and $N others -note: required because of the requirements on the impl of `HasAllProps` for `CheckChildContainerPropertiesAll` +note: required for `CheckChildContainerPropertiesAll` to implement `HasAllProps` --> tests/html_macro/component-fail.rs:24:17 | 24 | #[derive(Clone, Properties, PartialEq)] - | ^^^^^^^^^^ - = note: required because of the requirements on the impl of `AllPropsFor` for `AssertAllProps` + | ^^^^^^^^^^ unsatisfied trait bound introduced in this `derive` macro + = note: required for `AssertAllProps` to implement `AllPropsFor` note: required by a bound in `yew::html::component::properties::__macro::PreBuild::::build` --> $WORKSPACE/packages/yew/src/html/component/properties.rs | + | pub fn build(self) -> B::Output + | ----- required by a bound in this associated function + | where | Token: AllPropsFor, - | ^^^^^^^^^^^^^^^^^^^ required by this bound in `yew::html::component::properties::__macro::PreBuild::::build` + | ^^^^^^^^^^^^^^^^^^^ required by this bound in `PreBuild::::build` = note: this error originates in the macro `html` which comes from the expansion of the derive macro `Properties` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0277]: the trait bound `yew::virtual_dom::VText: IntoPropValue>>` is not satisfied - --> tests/html_macro/component-fail.rs:117:14 + --> tests/html_macro/component-fail.rs:117:31 | 117 | html! { { "Not allowed" } }; - | ^^^^^^^^^^^^^^ the trait `IntoPropValue>>` is not implemented for `yew::virtual_dom::VText` + | -------------- ^^^^^^^^^^^^^ the trait `IntoPropValue>>` is not implemented for `yew::virtual_dom::VText` + | | + | required by a bound introduced by this call | = help: the following other types implement trait `IntoPropValue`: >> @@ -707,8 +709,8 @@ note: required by a bound in `ChildContainerPropertiesBuilder::children` | ^^^^^^^^^^ required by this bound in `ChildContainerPropertiesBuilder::children` 25 | pub struct ChildContainerProperties { 26 | pub children: ChildrenWithProps, - | -------- required by a bound in this - = note: this error originates in the macro `html` which comes from the expansion of the derive macro `Properties` (in Nightly builds, run with -Z macro-backtrace for more info) + | -------- required by a bound in this associated function + = note: this error originates in the derive macro `Properties` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0277]: the trait bound `VChild: From` is not satisfied --> tests/html_macro/component-fail.rs:118:29 @@ -716,15 +718,18 @@ error[E0277]: the trait bound `VChild: From` is not satisfied 118 | html! { <> }; | ^ the trait `From` is not implemented for `VChild` | - = note: required because of the requirements on the impl of `Into>` for `VNode` + = note: required for `VNode` to implement `Into>` error[E0277]: the trait bound `VNode: IntoPropValue>>` is not satisfied - --> tests/html_macro/component-fail.rs:119:14 + --> tests/html_macro/component-fail.rs:119:30 | 119 | html! { }; - | ^^^^^^^^^^^^^^ the trait `IntoPropValue>>` is not implemented for `VNode` + | -------------- ^^^^^ the trait `IntoPropValue>>` is not implemented for `VNode` + | | + | required by a bound introduced by this call | = help: the trait `IntoPropValue>` is implemented for `VNode` + = help: for that trait implementation, expected `VNode`, found `VChild` note: required by a bound in `ChildContainerPropertiesBuilder::children` --> tests/html_macro/component-fail.rs:24:17 | @@ -732,5 +737,5 @@ note: required by a bound in `ChildContainerPropertiesBuilder::children` | ^^^^^^^^^^ required by this bound in `ChildContainerPropertiesBuilder::children` 25 | pub struct ChildContainerProperties { 26 | pub children: ChildrenWithProps, - | -------- required by a bound in this - = note: this error originates in the macro `html` which comes from the expansion of the derive macro `Properties` (in Nightly builds, run with -Z macro-backtrace for more info) + | -------- required by a bound in this associated function + = note: this error originates in the derive macro `Properties` (in Nightly builds, run with -Z macro-backtrace for more info) diff --git a/packages/yew-macro/tests/html_macro/component-unimplemented-fail.stderr b/packages/yew-macro/tests/html_macro/component-unimplemented-fail.stderr index b229ced60b6..3a26724acaa 100644 --- a/packages/yew-macro/tests/html_macro/component-unimplemented-fail.stderr +++ b/packages/yew-macro/tests/html_macro/component-unimplemented-fail.stderr @@ -5,7 +5,7 @@ error[E0277]: the trait bound `Unimplemented: yew::Component` is not satisfied | ^^^^^^^^^^^^^ the trait `yew::Component` is not implemented for `Unimplemented` | = help: the trait `yew::Component` is implemented for `ContextProvider` - = note: required because of the requirements on the impl of `BaseComponent` for `Unimplemented` + = note: required for `Unimplemented` to implement `BaseComponent` = note: this error originates in the macro `html` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0599]: the function or associated item `new` exists for struct `VChild`, but its trait bounds were not satisfied @@ -19,7 +19,7 @@ error[E0599]: the function or associated item `new` exists for struct `VChild $WORKSPACE/packages/yew/src/html/component/mod.rs | | pub trait BaseComponent: Sized + 'static { diff --git a/packages/yew-macro/tests/html_macro/element-fail.stderr b/packages/yew-macro/tests/html_macro/element-fail.stderr index bcc320a8975..bec8a082cfe 100644 --- a/packages/yew-macro/tests/html_macro/element-fail.stderr +++ b/packages/yew-macro/tests/html_macro/element-fail.stderr @@ -342,7 +342,16 @@ error[E0308]: mismatched types | | expected `bool`, found integer | arguments to this enum variant are incorrect | +help: the type constructed contains `{integer}` due to the type of the argument passed + --> tests/html_macro/element-fail.rs:36:5 + | +36 | html! { }; + | ^^^^^^^^^^^^^^^^^^^^^^^-^^^^^ + | | + | this argument influences the type of `{{root}}` note: tuple variant defined here + --> $RUST/core/src/option.rs + = note: this error originates in the macro `html` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0308]: mismatched types --> tests/html_macro/element-fail.rs:37:29 @@ -350,12 +359,25 @@ error[E0308]: mismatched types 37 | html! { }; | ------------------------^^^^^^^^^^^------ | | | - | | expected `bool`, found enum `Option` + | | expected `bool`, found `Option` | arguments to this enum variant are incorrect | = note: expected type `bool` found enum `Option` +help: the type constructed contains `Option` due to the type of the argument passed + --> tests/html_macro/element-fail.rs:37:5 + | +37 | html! { }; + | ^^^^^^^^^^^^^^^^^^^^^^^^-----------^^^^^^ + | | + | this argument influences the type of `{{root}}` note: tuple variant defined here + --> $RUST/core/src/option.rs + = note: this error originates in the macro `html` (in Nightly builds, run with -Z macro-backtrace for more info) +help: use `Option::is_some` to test if the `Option` has a value + | +37 | html! { }; + | ++++++++++ error[E0308]: mismatched types --> tests/html_macro/element-fail.rs:38:29 @@ -376,10 +398,14 @@ error[E0308]: mismatched types --> tests/html_macro/element-fail.rs:39:30 | 39 | html! { }; - | ^^^^^^^^^^ expected `bool`, found enum `Option` + | ^^^^^^^^^^ expected `bool`, found `Option` | = note: expected type `bool` found enum `Option` +help: use `Option::is_some` to test if the `Option` has a value + | +39 | html! { }; + | ++++++++++ error[E0308]: mismatched types --> tests/html_macro/element-fail.rs:40:30 @@ -403,6 +429,7 @@ error[E0277]: the trait bound `(): IntoPropValue>` is not implemented for `()` | = help: the trait `IntoPropValue` is implemented for `()` + = help: for that trait implementation, expected `VNode`, found `Option` error[E0277]: the trait bound `(): IntoPropValue>` is not satisfied --> tests/html_macro/element-fail.rs:44:27 @@ -411,6 +438,7 @@ error[E0277]: the trait bound `(): IntoPropValue>` is not implemented for `()` | = help: the trait `IntoPropValue` is implemented for `()` + = help: for that trait implementation, expected `VNode`, found `Option` error[E0277]: the trait bound `(): IntoPropValue>` is not satisfied --> tests/html_macro/element-fail.rs:45:22 @@ -419,6 +447,7 @@ error[E0277]: the trait bound `(): IntoPropValue>` is not implemented for `()` | = help: the trait `IntoPropValue` is implemented for `()` + = help: for that trait implementation, expected `VNode`, found `Option` error[E0277]: the trait bound `NotToString: IntoPropValue>` is not satisfied --> tests/html_macro/element-fail.rs:46:28 @@ -427,64 +456,70 @@ error[E0277]: the trait bound `NotToString: IntoPropValue>` is not implemented for `NotToString` | = help: the following other types implement trait `IntoPropValue`: - <&'static [(K, V)] as IntoPropValue>> - <&'static [T] as IntoPropValue>> - <&'static str as IntoPropValue> - <&'static str as IntoPropValue>> - <&'static str as IntoPropValue>> - <&'static str as IntoPropValue> - <&'static str as IntoPropValue> - <&String as IntoPropValue> + > + > + > + > + > + > + > + > and $N others error[E0277]: the trait bound `Option: IntoPropValue>` is not satisfied --> tests/html_macro/element-fail.rs:47:23 | 47 | html! { }; - | ^^^^ the trait `IntoPropValue>` is not implemented for `Option` + | ----^^^^^^^^^^^^^ + | | + | the trait `IntoPropValue>` is not implemented for `Option` + | required by a bound introduced by this call | = help: the following other types implement trait `IntoPropValue`: - as IntoPropValue>> - as IntoPropValue>> > as IntoPropValue>> - as IntoPropValue>>> - > as IntoPropValue>> - as IntoPropValue>> > as IntoPropValue>>> as IntoPropValue> + > as IntoPropValue>> + as IntoPropValue>> + as IntoPropValue>> + as IntoPropValue>> + as IntoPropValue>>> error[E0277]: the trait bound `Option<{integer}>: IntoPropValue>` is not satisfied --> tests/html_macro/element-fail.rs:48:22 | 48 | html! { }; - | ^^^^ the trait `IntoPropValue>` is not implemented for `Option<{integer}>` + | ----^^^ + | | + | the trait `IntoPropValue>` is not implemented for `Option<{integer}>` + | required by a bound introduced by this call | = help: the following other types implement trait `IntoPropValue`: - as IntoPropValue>> - as IntoPropValue>> > as IntoPropValue>> - as IntoPropValue>>> - > as IntoPropValue>> - as IntoPropValue>> > as IntoPropValue>>> as IntoPropValue> + > as IntoPropValue>> + as IntoPropValue>> + as IntoPropValue>> + as IntoPropValue>> + as IntoPropValue>>> -error[E0277]: expected a `Fn<(MouseEvent,)>` closure, found `{integer}` +error[E0277]: expected a `Fn(MouseEvent)` closure, found `{integer}` --> tests/html_macro/element-fail.rs:51:28 | 51 | html! { }; | -----------------------^----- | | | - | | expected an `Fn<(MouseEvent,)>` closure, found `{integer}` + | | expected an `Fn(MouseEvent)` closure, found `{integer}` | required by a bound introduced by this call | = help: the trait `Fn<(MouseEvent,)>` is not implemented for `{integer}` = help: the following other types implement trait `IntoEventCallback`: - &yew::Callback - Option - Option> yew::Callback - = note: required because of the requirements on the impl of `IntoEventCallback` for `{integer}` + Option> + Option + &yew::Callback + = note: required for `{integer}` to implement `IntoEventCallback` note: required by a bound in `yew::html::onclick::Wrapper::__macro_new` --> $WORKSPACE/packages/yew/src/html/listener/events.rs | @@ -495,23 +530,26 @@ note: required by a bound in `yew::html::onclick::Wrapper::__macro_new` ... | | | ontransitionstart(TransitionEvent) | | } - | |_^ required by this bound in `yew::html::onclick::Wrapper::__macro_new` + | | ^ + | | | + | |_required by a bound in this associated function + | required by this bound in `Wrapper::__macro_new` = note: this error originates in the macro `impl_action` which comes from the expansion of the macro `impl_short` (in Nightly builds, run with -Z macro-backtrace for more info) -error[E0277]: expected a `Fn<(MouseEvent,)>` closure, found `yew::Callback` +error[E0277]: expected a `Fn(MouseEvent)` closure, found `yew::Callback` --> tests/html_macro/element-fail.rs:52:29 | 52 | html! { }; | ------------------------^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^------ | | | - | | expected an `Fn<(MouseEvent,)>` closure, found `yew::Callback` + | | expected an `Fn(MouseEvent)` closure, found `yew::Callback` | required by a bound introduced by this call | = help: the trait `Fn<(MouseEvent,)>` is not implemented for `yew::Callback` = help: the following other types implement trait `IntoEventCallback`: - &yew::Callback yew::Callback - = note: required because of the requirements on the impl of `IntoEventCallback` for `yew::Callback` + &yew::Callback + = note: required for `yew::Callback` to implement `IntoEventCallback` note: required by a bound in `yew::html::onclick::Wrapper::__macro_new` --> $WORKSPACE/packages/yew/src/html/listener/events.rs | @@ -522,7 +560,10 @@ note: required by a bound in `yew::html::onclick::Wrapper::__macro_new` ... | | | ontransitionstart(TransitionEvent) | | } - | |_^ required by this bound in `yew::html::onclick::Wrapper::__macro_new` + | | ^ + | | | + | |_required by a bound in this associated function + | required by this bound in `Wrapper::__macro_new` = note: this error originates in the macro `impl_action` which comes from the expansion of the macro `impl_short` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0277]: the trait bound `Option<{integer}>: IntoEventCallback` is not satisfied @@ -535,8 +576,8 @@ error[E0277]: the trait bound `Option<{integer}>: IntoEventCallback` | required by a bound introduced by this call | = help: the following other types implement trait `IntoEventCallback`: - Option Option> + Option note: required by a bound in `yew::html::onfocus::Wrapper::__macro_new` --> $WORKSPACE/packages/yew/src/html/listener/events.rs | @@ -547,49 +588,57 @@ note: required by a bound in `yew::html::onfocus::Wrapper::__macro_new` ... | | | ontransitionstart(TransitionEvent) | | } - | |_^ required by this bound in `yew::html::onfocus::Wrapper::__macro_new` + | | ^ + | | | + | |_required by a bound in this associated function + | required by this bound in `Wrapper::__macro_new` = note: this error originates in the macro `impl_action` which comes from the expansion of the macro `impl_short` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0277]: the trait bound `(): IntoPropValue` is not satisfied --> tests/html_macro/element-fail.rs:56:25 | 56 | html! { }; - | ^^ the trait `IntoPropValue` is not implemented for `()` + | ^^ + | | + | the trait `IntoPropValue` is not implemented for `()` + | required by a bound introduced by this call | = help: the trait `IntoPropValue` is implemented for `()` - = note: this error originates in the macro `html` (in Nightly builds, run with -Z macro-backtrace for more info) + = help: for that trait implementation, expected `VNode`, found `yew::NodeRef` error[E0277]: the trait bound `Option: IntoPropValue` is not satisfied --> tests/html_macro/element-fail.rs:57:25 | 57 | html! { }; - | ^^^^ the trait `IntoPropValue` is not implemented for `Option` + | ----^^^^^^^^^^^^^^^^^^^^ + | | + | the trait `IntoPropValue` is not implemented for `Option` + | required by a bound introduced by this call | = help: the following other types implement trait `IntoPropValue`: - as IntoPropValue>> - as IntoPropValue>> > as IntoPropValue>> - as IntoPropValue>>> - > as IntoPropValue>> - as IntoPropValue>> > as IntoPropValue>>> as IntoPropValue> - = note: this error originates in the macro `html` (in Nightly builds, run with -Z macro-backtrace for more info) + > as IntoPropValue>> + as IntoPropValue>> + as IntoPropValue>> + as IntoPropValue>> + as IntoPropValue>>> -error[E0277]: expected a `Fn<(MouseEvent,)>` closure, found `yew::Callback` +error[E0277]: expected a `Fn(MouseEvent)` closure, found `yew::Callback` --> tests/html_macro/element-fail.rs:58:29 | 58 | html! { }; | ------------------------^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^------ | | | - | | expected an `Fn<(MouseEvent,)>` closure, found `yew::Callback` + | | expected an `Fn(MouseEvent)` closure, found `yew::Callback` | required by a bound introduced by this call | = help: the trait `Fn<(MouseEvent,)>` is not implemented for `yew::Callback` = help: the following other types implement trait `IntoEventCallback`: - &yew::Callback yew::Callback - = note: required because of the requirements on the impl of `IntoEventCallback` for `yew::Callback` + &yew::Callback + = note: required for `yew::Callback` to implement `IntoEventCallback` note: required by a bound in `yew::html::onclick::Wrapper::__macro_new` --> $WORKSPACE/packages/yew/src/html/listener/events.rs | @@ -600,7 +649,10 @@ note: required by a bound in `yew::html::onclick::Wrapper::__macro_new` ... | | | ontransitionstart(TransitionEvent) | | } - | |_^ required by this bound in `yew::html::onclick::Wrapper::__macro_new` + | | ^ + | | | + | |_required by a bound in this associated function + | required by this bound in `Wrapper::__macro_new` = note: this error originates in the macro `impl_action` which comes from the expansion of the macro `impl_short` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0277]: the trait bound `NotToString: IntoPropValue>` is not satisfied @@ -610,24 +662,27 @@ error[E0277]: the trait bound `NotToString: IntoPropValue>` is not implemented for `NotToString` | = help: the following other types implement trait `IntoPropValue`: - <&'static [(K, V)] as IntoPropValue>> - <&'static [T] as IntoPropValue>> - <&'static str as IntoPropValue> - <&'static str as IntoPropValue>> - <&'static str as IntoPropValue>> - <&'static str as IntoPropValue> - <&'static str as IntoPropValue> - <&String as IntoPropValue> + > + > + > + > + > + > + > + > and $N others error[E0277]: the trait bound `(): IntoPropValue` is not satisfied --> tests/html_macro/element-fail.rs:62:25 | 62 | html! { }; - | ^^ the trait `IntoPropValue` is not implemented for `()` + | ^^ + | | + | the trait `IntoPropValue` is not implemented for `()` + | required by a bound introduced by this call | = help: the trait `IntoPropValue` is implemented for `()` - = note: this error originates in the macro `html` (in Nightly builds, run with -Z macro-backtrace for more info) + = help: for that trait implementation, expected `VNode`, found `yew::NodeRef` error[E0277]: the trait bound `implicit_clone::unsync::string::IString: From<{integer}>` is not satisfied --> tests/html_macro/element-fail.rs:77:16 @@ -636,9 +691,10 @@ error[E0277]: the trait bound `implicit_clone::unsync::string::IString: From<{in | ^^ the trait `From<{integer}>` is not implemented for `implicit_clone::unsync::string::IString` | = help: the following other types implement trait `From`: - > - > >> >> > - = note: required because of the requirements on the impl of `Into` for `{integer}` + >> + > + > + = note: required for `{integer}` to implement `Into` diff --git a/packages/yew-macro/tests/html_macro/generic-component-fail.stderr b/packages/yew-macro/tests/html_macro/generic-component-fail.stderr index a0071a87b44..6717522f1e8 100644 --- a/packages/yew-macro/tests/html_macro/generic-component-fail.stderr +++ b/packages/yew-macro/tests/html_macro/generic-component-fail.stderr @@ -20,7 +20,7 @@ error: mismatched closing tags: expected `Generic`, found `Generic --> tests/html_macro/generic-component-fail.rs:50:14 | 50 | html! { >> }; - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ error: expected a valid closing tag for component note: found opening tag `>` diff --git a/packages/yew-macro/tests/html_macro/iterable-fail.stderr b/packages/yew-macro/tests/html_macro/iterable-fail.stderr index 54649e26bbe..6b71efea4a1 100644 --- a/packages/yew-macro/tests/html_macro/iterable-fail.stderr +++ b/packages/yew-macro/tests/html_macro/iterable-fail.stderr @@ -11,16 +11,19 @@ error[E0277]: `()` is not an iterator | ^^ `()` is not an iterator | = help: the trait `Iterator` is not implemented for `()` - = note: required because of the requirements on the impl of `IntoIterator` for `()` + = note: required for `()` to implement `IntoIterator` error[E0277]: `()` is not an iterator --> tests/html_macro/iterable-fail.rs:6:17 | 6 | html! { for {()} }; - | ^^^^ `()` is not an iterator + | ^--^ + | || + | |this tail expression is of type `()` + | `()` is not an iterator | = help: the trait `Iterator` is not implemented for `()` - = note: required because of the requirements on the impl of `IntoIterator` for `()` + = note: required for `()` to implement `IntoIterator` error[E0277]: `()` doesn't implement `std::fmt::Display` --> tests/html_macro/iterable-fail.rs:7:17 @@ -31,11 +34,12 @@ error[E0277]: `()` doesn't implement `std::fmt::Display` = help: the trait `std::fmt::Display` is not implemented for `()` = note: in format strings you may be able to use `{:?}` (or {:#?} for pretty-print) instead = help: the trait `FromIterator` is implemented for `VNode` - = note: required because of the requirements on the impl of `ToString` for `()` - = note: required because of the requirements on the impl of `From<()>` for `VNode` - = note: required because of the requirements on the impl of `Into` for `()` - = note: required because of the requirements on the impl of `FromIterator<()>` for `VNode` + = note: required for `()` to implement `ToString` + = note: required for `VNode` to implement `From<()>` + = note: required for `()` to implement `Into` + = note: required for `VNode` to implement `FromIterator<()>` note: required by a bound in `collect` + --> $RUST/core/src/iter/traits/iterator.rs error[E0277]: `()` doesn't implement `std::fmt::Display` --> tests/html_macro/iterable-fail.rs:10:17 @@ -46,11 +50,12 @@ error[E0277]: `()` doesn't implement `std::fmt::Display` = help: the trait `std::fmt::Display` is not implemented for `()` = note: in format strings you may be able to use `{:?}` (or {:#?} for pretty-print) instead = help: the trait `FromIterator` is implemented for `VNode` - = note: required because of the requirements on the impl of `ToString` for `()` - = note: required because of the requirements on the impl of `From<()>` for `VNode` - = note: required because of the requirements on the impl of `Into` for `()` - = note: required because of the requirements on the impl of `FromIterator<()>` for `VNode` + = note: required for `()` to implement `ToString` + = note: required for `VNode` to implement `From<()>` + = note: required for `()` to implement `Into` + = note: required for `VNode` to implement `FromIterator<()>` note: required by a bound in `collect` + --> $RUST/core/src/iter/traits/iterator.rs error[E0277]: `()` doesn't implement `std::fmt::Display` --> tests/html_macro/iterable-fail.rs:13:17 @@ -61,12 +66,13 @@ error[E0277]: `()` doesn't implement `std::fmt::Display` = help: the trait `std::fmt::Display` is not implemented for `()` = note: in format strings you may be able to use `{:?}` (or {:#?} for pretty-print) instead = help: the trait `FromIterator` is implemented for `VNode` - = note: required because of the requirements on the impl of `std::fmt::Display` for `&()` - = note: required because of the requirements on the impl of `ToString` for `&()` - = note: required because of the requirements on the impl of `From<&()>` for `VNode` - = note: required because of the requirements on the impl of `Into` for `&()` - = note: required because of the requirements on the impl of `FromIterator<&()>` for `VNode` + = note: required for `&()` to implement `std::fmt::Display` + = note: required for `&()` to implement `ToString` + = note: required for `VNode` to implement `From<&()>` + = note: required for `&()` to implement `Into` + = note: required for `VNode` to implement `FromIterator<&()>` note: required by a bound in `collect` + --> $RUST/core/src/iter/traits/iterator.rs error[E0277]: `()` is not an iterator --> tests/html_macro/iterable-fail.rs:18:19 @@ -75,9 +81,12 @@ error[E0277]: `()` is not an iterator | ^^ `()` is not an iterator | = help: the trait `Iterator` is not implemented for `()` - = note: required because of the requirements on the impl of `IntoIterator` for `()` + = note: required for `()` to implement `IntoIterator` note: required by a bound in `into_node_iter` --> $WORKSPACE/packages/yew/src/utils/mod.rs | + | pub fn into_node_iter(it: IT) -> impl Iterator + | -------------- required by a bound in this function + | where | IT: IntoIterator, | ^^^^^^^^^^^^^^^^^^^^^^ required by this bound in `into_node_iter` diff --git a/packages/yew-macro/tests/html_macro/list-fail.stderr b/packages/yew-macro/tests/html_macro/list-fail.stderr index 6fba4bb44ba..7bed9347ec2 100644 --- a/packages/yew-macro/tests/html_macro/list-fail.stderr +++ b/packages/yew-macro/tests/html_macro/list-fail.stderr @@ -44,7 +44,7 @@ error: expected an expression following this equals sign --> tests/html_macro/list-fail.rs:18:17 | 18 | html! { }; - | ^^ + | ^ error: the property value must be either a literal or enclosed in braces. Consider adding braces around your expression.: Expr::MethodCall { attrs: [], diff --git a/packages/yew-macro/tests/html_macro/node-fail.stderr b/packages/yew-macro/tests/html_macro/node-fail.stderr index 9b5f5a70717..608f3a568c4 100644 --- a/packages/yew-macro/tests/html_macro/node-fail.stderr +++ b/packages/yew-macro/tests/html_macro/node-fail.stderr @@ -42,9 +42,9 @@ error[E0425]: cannot find value `invalid` in this scope | help: consider importing one of these items | -1 | use core::ptr::invalid; +1 + use core::ptr::invalid; | -1 | use std::ptr::invalid; +1 + use std::ptr::invalid; | error[E0277]: `()` doesn't implement `std::fmt::Display` @@ -56,17 +56,17 @@ error[E0277]: `()` doesn't implement `std::fmt::Display` = help: the trait `std::fmt::Display` is not implemented for `()` = note: in format strings you may be able to use `{:?}` (or {:#?} for pretty-print) instead = help: the following other types implement trait `From`: - >> - > - >> > + >> + >> > > > > > - = note: required because of the requirements on the impl of `ToString` for `()` - = note: required because of the requirements on the impl of `From<()>` for `VNode` + > + = note: required for `()` to implement `ToString` + = note: required for `VNode` to implement `From<()>` = note: this error originates in the macro `html` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0277]: `()` doesn't implement `std::fmt::Display` @@ -78,15 +78,15 @@ error[E0277]: `()` doesn't implement `std::fmt::Display` = help: the trait `std::fmt::Display` is not implemented for `()` = note: in format strings you may be able to use `{:?}` (or {:#?} for pretty-print) instead = help: the following other types implement trait `From`: - >> - > - >> > + >> + >> > > > > > - = note: required because of the requirements on the impl of `ToString` for `()` - = note: required because of the requirements on the impl of `From<()>` for `VNode` + > + = note: required for `()` to implement `ToString` + = note: required for `VNode` to implement `From<()>` = note: this error originates in the macro `html` (in Nightly builds, run with -Z macro-backtrace for more info) diff --git a/packages/yew-macro/tests/html_macro_test.rs b/packages/yew-macro/tests/html_macro_test.rs index 4a91060b1fc..69d62934bfa 100644 --- a/packages/yew-macro/tests/html_macro_test.rs +++ b/packages/yew-macro/tests/html_macro_test.rs @@ -1,7 +1,7 @@ use yew::{html, html_nested}; #[allow(dead_code)] -#[rustversion::attr(stable(1.64), test)] +#[rustversion::attr(stable(1.76), test)] fn html_macro() { let t = trybuild::TestCases::new(); diff --git a/packages/yew-macro/tests/props_macro/props-fail.stderr b/packages/yew-macro/tests/props_macro/props-fail.stderr index ed0f4b24e1f..187f81afb57 100644 --- a/packages/yew-macro/tests/props_macro/props-fail.stderr +++ b/packages/yew-macro/tests/props_macro/props-fail.stderr @@ -14,7 +14,7 @@ error: expected ident --> tests/props_macro/props-fail.rs:13:31 | 13 | yew::props!(Props { a: 1, ..props }); - | ^^ + | ^ error[E0425]: cannot find value `does_not_exist` in this scope --> tests/props_macro/props-fail.rs:15:25 @@ -28,7 +28,7 @@ error[E0609]: no field `fail` on type `Props` 10 | yew::props!(Props { a: 5, fail: 10 }); | ^^^^ unknown field | - = note: available fields are: `a` + = note: available field is: `a` error[E0599]: no method named `fail` found for struct `PropsBuilder` in the current scope --> tests/props_macro/props-fail.rs:10:31 @@ -45,7 +45,7 @@ error[E0609]: no field `does_not_exist` on type `Props` 15 | yew::props!(Props { does_not_exist }); | ^^^^^^^^^^^^^^ unknown field | - = note: available fields are: `a` + = note: available field is: `a` error[E0599]: no method named `does_not_exist` found for struct `PropsBuilder` in the current scope --> tests/props_macro/props-fail.rs:15:25 diff --git a/packages/yew-macro/tests/props_macro/resolve-prop-fail.stderr b/packages/yew-macro/tests/props_macro/resolve-prop-fail.stderr index d58e437a03f..1ea3b75896e 100644 --- a/packages/yew-macro/tests/props_macro/resolve-prop-fail.stderr +++ b/packages/yew-macro/tests/props_macro/resolve-prop-fail.stderr @@ -1,17 +1,42 @@ error[E0277]: can't compare `Props` with `Props` - --> tests/props_macro/resolve-prop-fail.rs:3:17 + --> tests/props_macro/resolve-prop-fail.rs:4:8 | -3 | #[derive(Clone, Properties)] - | ^^^^^^^^^^ no implementation for `Props == Props` +4 | struct Props {} + | ^^^^^ no implementation for `Props == Props` | = help: the trait `PartialEq` is not implemented for `Props` note: required by a bound in `yew::Properties` --> $WORKSPACE/packages/yew/src/html/component/properties.rs | | pub trait Properties: PartialEq { - | ^^^^^^^^^ required by this bound in `yew::Properties` - = note: this error originates in the derive macro `Properties` (in Nightly builds, run with -Z macro-backtrace for more info) + | ^^^^^^^^^ required by this bound in `Properties` help: consider annotating `Props` with `#[derive(PartialEq)]` | -4 | #[derive(PartialEq)] +4 + #[derive(PartialEq)] +5 | struct Props {} | + +error[E0277]: can't compare `Props` with `Props` + --> tests/props_macro/resolve-prop-fail.rs:9:23 + | +9 | type Properties = Props; + | ^^^^^ no implementation for `Props == Props` + | + = help: the trait `PartialEq` is not implemented for `Props` + = help: the following other types implement trait `yew::Properties`: + Props + ContextProviderProps + ChildrenProps + SuspenseProps + () + = note: required for `::Properties` to implement `yew::Properties` +note: required by a bound in `yew::Component::Properties` + --> $WORKSPACE/packages/yew/src/html/component/mod.rs + | + | type Properties: Properties; + | ^^^^^^^^^^ required by this bound in `Component::Properties` +help: consider annotating `Props` with `#[derive(PartialEq)]` + | +4 + #[derive(PartialEq)] +5 | struct Props {} + | diff --git a/packages/yew-macro/tests/props_macro_test.rs b/packages/yew-macro/tests/props_macro_test.rs index b82adc18486..008b161d5d3 100644 --- a/packages/yew-macro/tests/props_macro_test.rs +++ b/packages/yew-macro/tests/props_macro_test.rs @@ -1,5 +1,5 @@ #[allow(dead_code)] -#[rustversion::attr(stable(1.64), test)] +#[rustversion::attr(stable(1.76), test)] fn props_macro() { let t = trybuild::TestCases::new(); t.pass("tests/props_macro/*-pass.rs"); diff --git a/packages/yew-router-macro/Cargo.toml b/packages/yew-router-macro/Cargo.toml index 381f09d03c2..550b84f58cb 100644 --- a/packages/yew-router-macro/Cargo.toml +++ b/packages/yew-router-macro/Cargo.toml @@ -6,7 +6,7 @@ edition = "2021" license = "MIT OR Apache-2.0" description = "Contains macros used with yew-router" repository = "https://github.com/yewstack/yew" -rust-version = "1.64.0" +rust-version = "1.76.0" [lib] proc-macro = true diff --git a/packages/yew-router-macro/Makefile.toml b/packages/yew-router-macro/Makefile.toml index 1eae4efc7c4..c194283736b 100644 --- a/packages/yew-router-macro/Makefile.toml +++ b/packages/yew-router-macro/Makefile.toml @@ -1,6 +1,6 @@ [tasks.test] clear = true -toolchain = "1.64.0" +toolchain = "1.76.0" command = "cargo" args = ["test"] diff --git a/packages/yew-router-macro/tests/routable_derive_test.rs b/packages/yew-router-macro/tests/routable_derive_test.rs index 59dbd5e0104..e57f58fdbb6 100644 --- a/packages/yew-router-macro/tests/routable_derive_test.rs +++ b/packages/yew-router-macro/tests/routable_derive_test.rs @@ -1,5 +1,5 @@ #[allow(dead_code)] -#[rustversion::attr(stable(1.64), test)] +#[rustversion::attr(stable(1.76), test)] fn tests() { let t = trybuild::TestCases::new(); t.pass("tests/routable_derive/*-pass.rs"); diff --git a/packages/yew-router/Cargo.toml b/packages/yew-router/Cargo.toml index e5b7d68e18a..1424edcd926 100644 --- a/packages/yew-router/Cargo.toml +++ b/packages/yew-router/Cargo.toml @@ -9,7 +9,7 @@ keywords = ["web", "yew", "router"] categories = ["gui", "web-programming"] description = "A router implementation for the Yew framework" repository = "https://github.com/yewstack/yew" -rust-version = "1.64.0" +rust-version = "1.76.0" [dependencies] yew = { version = "0.21.0", path = "../yew", default-features= false } diff --git a/packages/yew/Cargo.toml b/packages/yew/Cargo.toml index 07780f2d9dd..d5129857375 100644 --- a/packages/yew/Cargo.toml +++ b/packages/yew/Cargo.toml @@ -14,7 +14,7 @@ keywords = ["web", "webasm", "javascript"] categories = ["gui", "wasm", "web-programming"] description = "A framework for creating reliable and efficient web applications" readme = "../../README.md" -rust-version = "1.64.0" +rust-version = "1.76.0" [dependencies] console_error_panic_hook = "0.1" diff --git a/packages/yew/src/scheduler.rs b/packages/yew/src/scheduler.rs index 31bd57938ce..08c596cbf9e 100644 --- a/packages/yew/src/scheduler.rs +++ b/packages/yew/src/scheduler.rs @@ -46,16 +46,6 @@ impl TopologicalQueue { } /// Take a single entry, preferring parents over children - #[rustversion::before(1.66)] - fn pop_topmost(&mut self) -> Option { - // BTreeMap::pop_first is available after 1.66. - let key = *self.inner.keys().next()?; - self.inner.remove(&key) - } - - /// Take a single entry, preferring parents over children - #[rustversion::since(1.66)] - #[allow(clippy::incompatible_msrv)] #[inline] fn pop_topmost(&mut self) -> Option { self.inner.pop_first().map(|(_, v)| v) diff --git a/packages/yew/src/server_renderer.rs b/packages/yew/src/server_renderer.rs index 2fbd13e628f..64a253d87b3 100644 --- a/packages/yew/src/server_renderer.rs +++ b/packages/yew/src/server_renderer.rs @@ -145,7 +145,6 @@ where // These implementations should be merged once https://github.com/tokio-rs/tracing/issues/2503 is resolved. /// Renders Yew Application into a string Stream - #[rustversion::since(1.70)] #[allow(clippy::let_with_type_underscore)] #[tracing::instrument( level = tracing::Level::DEBUG, @@ -157,19 +156,6 @@ where pub fn render_stream(self) -> impl Stream { self.render_stream_inner() } - - /// Renders Yew Application into a string Stream - #[rustversion::before(1.70)] - #[tracing::instrument( - level = tracing::Level::DEBUG, - name = "render_stream", - skip(self), - fields(hydratable = self.hydratable), - )] - #[inline(always)] - pub fn render_stream(self) -> impl Stream { - self.render_stream_inner() - } } /// A Yew Server-side Renderer. diff --git a/website/docs/getting-started/introduction.mdx b/website/docs/getting-started/introduction.mdx index fedde6320c4..e013bdb14a0 100644 --- a/website/docs/getting-started/introduction.mdx +++ b/website/docs/getting-started/introduction.mdx @@ -11,7 +11,7 @@ bundler for Rust. To install Rust, follow the [official instructions](https://www.rust-lang.org/tools/install). :::important -The minimum supported Rust version (MSRV) for Yew is `1.64.0`. Older versions will not compile. +The minimum supported Rust version (MSRV) for Yew is `1.76.0`. Older versions will not compile. You can check your toolchain version using `rustup show` (under "active toolchain") or `rustc --version`. To update your toolchain, run `rustup update`. diff --git a/website/versioned_docs/version-0.21/getting-started/introduction.mdx b/website/versioned_docs/version-0.21/getting-started/introduction.mdx index 4198ca6ae8b..bb73d5f7583 100644 --- a/website/versioned_docs/version-0.21/getting-started/introduction.mdx +++ b/website/versioned_docs/version-0.21/getting-started/introduction.mdx @@ -11,7 +11,7 @@ bundler for Rust. To install Rust, follow the [official instructions](https://www.rust-lang.org/tools/install). :::important -The minimum supported Rust version (MSRV) for Yew is `1.64.0`. Older versions will not compile. +The minimum supported Rust version (MSRV) for Yew is `1.76.0`. Older versions will not compile. You can check your toolchain version using `rustup show` (under "active toolchain") or `rustc --version`. To update your toolchain, run `rustup update`. From 620d9076f8edb0554da78c0c2e618e8580e4e16a Mon Sep 17 00:00:00 2001 From: WorldSEnder Date: Sat, 3 Aug 2024 17:15:39 +0200 Subject: [PATCH 16/44] fix example serving (#3701) specifying an absolute URL as the public base is necessary since trunk 0.19 see also trunk-rs/trunk#668 --- ci/build-examples.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ci/build-examples.sh b/ci/build-examples.sh index 2bc3f56b184..69a0029d14b 100755 --- a/ci/build-examples.sh +++ b/ci/build-examples.sh @@ -33,7 +33,7 @@ for path in examples/*; do export RUSTFLAGS="-Zshare-generics=n -Clto=thin $RUSTFLAGS" fi - trunk build --release --dist "$dist_dir" --public-url "$PUBLIC_URL_PREFIX$example" + trunk build --release --dist "$dist_dir" --public-url "$PUBLIC_URL_PREFIX/$example" # check that there are no undefined symbols. Those generate an import .. from 'env', # which isn't available in the browser. From c5d486160cfc1aaa4615f13968b3eddb368cb764 Mon Sep 17 00:00:00 2001 From: Alex Parrill Date: Sat, 3 Aug 2024 16:32:04 -0400 Subject: [PATCH 17/44] Add use_ref (#3548) * Add use_ref Works like use_mut_ref but doesn't forcibly wrap your type in `RefCell`, so that users can handle more complex or specialized cases of interior mutability. * mention use_ref hook in docs --------- Co-authored-by: Martin Molzer --- packages/yew/src/functional/hooks/use_ref.rs | 68 +++++++++++++++++-- .../hooks/introduction.mdx | 1 + 2 files changed, 64 insertions(+), 5 deletions(-) diff --git a/packages/yew/src/functional/hooks/use_ref.rs b/packages/yew/src/functional/hooks/use_ref.rs index e03db8a2130..330c9be938d 100644 --- a/packages/yew/src/functional/hooks/use_ref.rs +++ b/packages/yew/src/functional/hooks/use_ref.rs @@ -4,18 +4,74 @@ use std::rc::Rc; use crate::functional::{hook, use_state, Hook, HookContext}; use crate::NodeRef; -struct UseMutRef { +struct UseRef { init_fn: F, } -impl T> Hook for UseMutRef { - type Output = Rc>; +impl T> Hook for UseRef { + type Output = Rc; fn run(self, ctx: &mut HookContext) -> Self::Output { - ctx.next_state(|_| RefCell::new((self.init_fn)())) + ctx.next_state(|_| (self.init_fn)()) } } +/// This hook is used for obtaining a reference to a stateful value. +/// Its state persists across renders. +/// +/// Mutation must be done via interior mutability, such as `Cell` or `RefCell`. +/// +/// It is important to note that you do not get notified of state changes. +/// If you need the component to be re-rendered on state change, consider using +/// [`use_state`](super::use_state()). +/// +/// # Example +/// ```rust +/// use std::cell::Cell; +/// use std::ops::{Deref, DerefMut}; +/// use std::rc::Rc; +/// +/// use web_sys::HtmlInputElement; +/// use yew::prelude::*; +/// +/// #[function_component(UseRef)] +/// fn ref_hook() -> Html { +/// let message = use_state(|| "".to_string()); +/// let message_count = use_ref(|| Cell::new(0)); +/// +/// let onclick = Callback::from(move |e| { +/// let window = gloo::utils::window(); +/// +/// if message_count.get() > 3 { +/// window.alert_with_message("Message limit reached"); +/// } else { +/// message_count.set(message_count.get() + 1); +/// window.alert_with_message("Message sent"); +/// } +/// }); +/// +/// let onchange = { +/// let message = message.clone(); +/// Callback::from(move |e: Event| { +/// let input: HtmlInputElement = e.target_unchecked_into(); +/// message.set(input.value()) +/// }) +/// }; +/// +/// html! { +///

+/// } +/// } +pub fn use_ref(init_fn: F) -> impl Hook> +where + F: FnOnce() -> T, +{ + UseRef { init_fn } +} + /// This hook is used for obtaining a mutable reference to a stateful value. /// Its state persists across renders. /// @@ -68,7 +124,9 @@ pub fn use_mut_ref(init_fn: F) -> impl Hook T, { - UseMutRef { init_fn } + UseRef { + init_fn: || RefCell::new(init_fn()), + } } /// This hook is used for obtaining a [`NodeRef`]. diff --git a/website/docs/concepts/function-components/hooks/introduction.mdx b/website/docs/concepts/function-components/hooks/introduction.mdx index d2c1896f22c..c39a12d5f7b 100644 --- a/website/docs/concepts/function-components/hooks/introduction.mdx +++ b/website/docs/concepts/function-components/hooks/introduction.mdx @@ -29,6 +29,7 @@ Yew comes with the following predefined Hooks: - `use_state_eq` - `use_memo` - `use_callback` +- `use_ref` - `use_mut_ref` - `use_node_ref` - `use_reducer` From 4faa150104c5152e6af865f9c79914d4b85cb482 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9o=20Gaspard?= Date: Sat, 3 Aug 2024 23:35:38 +0200 Subject: [PATCH 18/44] use_future_with: simplify code a bit by using read-only use_memo rather than use_state (#3610) * use_future_with: simplify code a bit by using read-only use_memo rather than use_state * use use_ref instead of use_memo_base --------- Co-authored-by: Elina --- packages/yew/src/suspense/hooks.rs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/yew/src/suspense/hooks.rs b/packages/yew/src/suspense/hooks.rs index b31a57663d6..3d975e346fd 100644 --- a/packages/yew/src/suspense/hooks.rs +++ b/packages/yew/src/suspense/hooks.rs @@ -94,8 +94,7 @@ where let output = use_state(|| None); // We only commit a result if it comes from the latest spawned future. Otherwise, this // might trigger pointless updates or even override newer state. - let latest_id = use_state(|| Cell::new(0u32)); - + let latest_id = use_ref(|| Cell::new(0u32)); let suspension = { let output = output.clone(); From d5088ee54deb89f1e85f09044b1a0ca9c039f64a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 4 Aug 2024 02:45:02 +0500 Subject: [PATCH 19/44] Bump the cargo-deps group across 1 directory with 52 updates (#3705) --- Cargo.lock | 995 +++++++++++------- examples/async_clock/Cargo.toml | 2 +- examples/boids/Cargo.toml | 2 +- examples/counter/Cargo.toml | 2 +- examples/dyn_create_destroy_apps/Cargo.toml | 4 +- examples/file_upload/Cargo.toml | 4 +- examples/function_memory_game/Cargo.toml | 6 +- examples/function_router/Cargo.toml | 4 +- examples/function_todomvc/Cargo.toml | 6 +- examples/futures/Cargo.toml | 2 +- examples/game_of_life/Cargo.toml | 2 +- examples/inner_html/Cargo.toml | 2 +- examples/keyed_list/Cargo.toml | 2 +- examples/mount_point/Cargo.toml | 2 +- examples/password_strength/Cargo.toml | 4 +- examples/password_strength/src/app.rs | 9 +- examples/portals/Cargo.toml | 2 +- examples/router/Cargo.toml | 4 +- examples/simple_ssr/Cargo.toml | 10 +- examples/ssr_router/Cargo.toml | 9 +- .../ssr_router/src/bin/ssr_router_server.rs | 84 +- examples/suspense/Cargo.toml | 2 +- examples/timer/Cargo.toml | 2 +- examples/timer_functional/Cargo.toml | 2 +- examples/todomvc/Cargo.toml | 6 +- examples/two_apps/Cargo.toml | 2 +- examples/web_worker_prime/Cargo.toml | 6 +- packages/yew-agent/Cargo.toml | 4 +- packages/yew-router/Cargo.toml | 2 +- packages/yew/Cargo.toml | 10 +- tools/benchmark-core/Cargo.toml | 2 +- tools/benchmark-hooks/Cargo.toml | 6 +- tools/benchmark-ssr/Cargo.toml | 12 +- tools/benchmark-struct/Cargo.toml | 6 +- tools/changelog/Cargo.toml | 6 +- tools/website-test/Cargo.toml | 4 +- 36 files changed, 755 insertions(+), 474 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 66b5f213a8b..065467885c6 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -43,15 +43,16 @@ dependencies = [ [[package]] name = "anstream" -version = "0.6.1" +version = "0.6.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6cd65a4b849ace0b7f6daeebcc1a1d111282227ca745458c61dbf670e52a597" +checksum = "64e15c1ab1f89faffbf04a634d5e1962e9074f2741eef6d97f3c4e322426d526" dependencies = [ "anstyle", "anstyle-parse", "anstyle-query", "anstyle-wincon", "colorchoice", + "is_terminal_polyfill", "utf8parse", ] @@ -81,19 +82,19 @@ dependencies = [ [[package]] name = "anstyle-wincon" -version = "3.0.0" +version = "3.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0238ca56c96dfa37bdf7c373c8886dd591322500aceeeccdb2216fe06dc2f796" +checksum = "5bf74e1b6e971609db8ca7a9ce79fd5768ab6ae46441c572e46cf596f59e57f8" dependencies = [ "anstyle", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] name = "anyhow" -version = "1.0.75" +version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6" +checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da" [[package]] name = "anymap2" @@ -109,7 +110,7 @@ checksum = "b9ccdd8f2a161be9bd5c023df56f1b2a0bd1d83872ae53b71a84a12c9bf6e842" dependencies = [ "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.72", ] [[package]] @@ -117,8 +118,8 @@ name = "async_clock" version = "0.0.1" dependencies = [ "chrono", - "futures 0.3.29", - "gloo-net 0.4.0", + "futures 0.3.30", + "gloo-net 0.5.0", "yew", ] @@ -131,6 +132,12 @@ dependencies = [ "critical-section", ] +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + [[package]] name = "autocfg" version = "1.1.0" @@ -139,9 +146,9 @@ checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" [[package]] name = "average" -version = "0.14.1" +version = "0.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d804c74bb2d66e9b7047658d21af0f1c937d7d2466410cbf1aed3b0c04048d4" +checksum = "3a237a6822e1c3c98e700b6db5b293eb341b7524dcb8d227941245702b7431dc" dependencies = [ "easy-cast", "float-ord", @@ -150,18 +157,19 @@ dependencies = [ [[package]] name = "axum" -version = "0.6.20" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b829e4e32b91e643de6eafe82b1d90675f5874230191a4ffbc1b336dec4d6bf" +checksum = "3a6c9af12842a67734c9a2e355436e5d03b22383ed60cf13cd0c18fbfe3dcbcf" dependencies = [ "async-trait", "axum-core", - "bitflags 1.3.2", "bytes", "futures-util", - "http", - "http-body", - "hyper", + "http 1.1.0", + "http-body 1.0.1", + "http-body-util", + "hyper 1.4.1", + "hyper-util", "itoa", "matchit", "memchr", @@ -173,28 +181,33 @@ dependencies = [ "serde_json", "serde_path_to_error", "serde_urlencoded", - "sync_wrapper", + "sync_wrapper 1.0.1", "tokio", "tower", "tower-layer", "tower-service", + "tracing", ] [[package]] name = "axum-core" -version = "0.3.4" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "759fa577a247914fd3f7f76d62972792636412fbfd634cd452f6a385a74d2d2c" +checksum = "a15c63fd72d41492dc4f497196f5da1fb04fb7529e631d73630d1b491e47a2e3" dependencies = [ "async-trait", "bytes", "futures-util", - "http", - "http-body", + "http 1.1.0", + "http-body 1.0.1", + "http-body-util", "mime", + "pin-project-lite", "rustversion", + "sync_wrapper 0.1.2", "tower-layer", "tower-service", + "tracing", ] [[package]] @@ -220,9 +233,9 @@ checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" [[package]] name = "base64" -version = "0.21.5" +version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35636a1494ede3b646cc98f74f8e62c773a38a659ebc777a2cf26b9b74171df9" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" [[package]] name = "base64ct" @@ -314,7 +327,7 @@ version = "0.1.0" dependencies = [ "anyhow", "getrandom", - "gloo 0.10.0", + "gloo 0.11.0", "rand", "serde", "web-sys", @@ -341,17 +354,18 @@ checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" [[package]] name = "bytes" -version = "1.5.0" +version = "1.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" +checksum = "8318a53db07bb3f8dca91a600466bdb3f2eaadeedfdbcf02e1accbad9271ba50" [[package]] name = "cc" -version = "1.0.79" +version = "1.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f" +checksum = "26a5c3fd7bfa1ce3897a3a3501d362b2d87b7f2583ebcb4a949ec25911025cbc" dependencies = [ "jobserver", + "libc", ] [[package]] @@ -378,23 +392,23 @@ dependencies = [ [[package]] name = "chrono" -version = "0.4.31" +version = "0.4.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f2c685bad3eb3d45a01354cedb7d5faa66194d1d58ba6e267a8de788f79db38" +checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" dependencies = [ "android-tzdata", "iana-time-zone", "js-sys", "num-traits", "wasm-bindgen", - "windows-targets 0.48.1", + "windows-targets 0.52.6", ] [[package]] name = "clap" -version = "4.4.7" +version = "4.5.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac495e00dcec98c83465d5ad66c5c4fabd652fd6686e7c6269b117e729a6f17b" +checksum = "0fbb260a053428790f3de475e304ff84cdbc4face759ea7a3e64c1edd938a7fc" dependencies = [ "clap_builder", "clap_derive", @@ -402,9 +416,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.4.7" +version = "4.5.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c77ed9a32a62e6ca27175d00d29d05ca32e396ea1eb5fb01d8256b669cec7663" +checksum = "64b17d7ea74e9f833c7dbf2cbe4fb12ff26783eda4782a8975b72f895c9b4d99" dependencies = [ "anstream", "anstyle", @@ -415,21 +429,21 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.4.7" +version = "4.5.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf9804afaaf59a91e75b022a30fb7229a7901f60c755489cc61c9b423b836442" +checksum = "501d359d5f3dcaf6ecdeee48833ae73ec6e42723a1e52419c79abf9507eec0a0" dependencies = [ - "heck", + "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.72", ] [[package]] name = "clap_lex" -version = "0.6.0" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "702fc72eb24e5a1e48ce58027a675bc24edd52096d5397d4aea7c6dd9eca0bd1" +checksum = "1462739cb27611015575c0c11df5df7601141071f07518d56fcc1be504cbec97" [[package]] name = "cobs" @@ -530,22 +544,11 @@ version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" -[[package]] -name = "core_affinity" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "622892f5635ce1fc38c8f16dfc938553ed64af482edb5e150bf4caedbfcb2304" -dependencies = [ - "libc", - "num_cpus", - "winapi", -] - [[package]] name = "counter" version = "0.1.1" dependencies = [ - "gloo 0.10.0", + "gloo 0.11.0", "js-sys", "wasm-bindgen", "yew", @@ -585,9 +588,9 @@ dependencies = [ [[package]] name = "darling" -version = "0.14.4" +version = "0.20.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b750cb3417fd1b327431a470f388520309479ab0bf5e323505daf0290cd3850" +checksum = "6f63b86c8a8826a49b8c21f08a2d07338eec8d900540f8630dc76284be802989" dependencies = [ "darling_core", "darling_macro", @@ -595,27 +598,27 @@ dependencies = [ [[package]] name = "darling_core" -version = "0.14.4" +version = "0.20.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "109c1ca6e6b7f82cc233a97004ea8ed7ca123a9af07a8230878fcfda9b158bf0" +checksum = "95133861a8032aaea082871032f5815eb9e98cef03fa916ab4500513994df9e5" dependencies = [ "fnv", "ident_case", "proc-macro2", "quote", "strsim", - "syn 1.0.109", + "syn 2.0.72", ] [[package]] name = "darling_macro" -version = "0.14.4" +version = "0.20.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4aab4dbc9f7611d8b55048a3a16d2d010c2c8334e46304b40ac1cc14bf3b48e" +checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" dependencies = [ "darling_core", "quote", - "syn 1.0.109", + "syn 2.0.72", ] [[package]] @@ -635,46 +638,46 @@ dependencies = [ [[package]] name = "derive_builder" -version = "0.12.0" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d67778784b508018359cbc8696edb3db78160bab2c2a28ba7f56ef6932997f8" +checksum = "0350b5cb0331628a5916d6c5c0b72e97393b8b6b03b47a9284f4e7f5a405ffd7" dependencies = [ "derive_builder_macro", ] [[package]] name = "derive_builder_core" -version = "0.12.0" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c11bdc11a0c47bc7d37d582b5285da6849c96681023680b906673c5707af7b0f" +checksum = "d48cda787f839151732d396ac69e3473923d54312c070ee21e9effcaa8ca0b1d" dependencies = [ "darling", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.72", ] [[package]] name = "derive_builder_macro" -version = "0.12.0" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebcda35c7a396850a55ffeac740804b40ffec779b98fffbb1738f4033f0ee79e" +checksum = "206868b8242f27cecce124c19fd88157fbd0dd334df2587f36417bafbc85097b" dependencies = [ "derive_builder_core", - "syn 1.0.109", + "syn 2.0.72", ] [[package]] name = "derive_more" -version = "0.99.17" +version = "0.99.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321" +checksum = "5f33878137e4dafd7fa914ad4e259e18a4e8e532b9617a2d0150262bf53abfce" dependencies = [ "convert_case", "proc-macro2", "quote", "rustc_version", - "syn 1.0.109", + "syn 2.0.72", ] [[package]] @@ -695,34 +698,34 @@ dependencies = [ [[package]] name = "divan" -version = "0.1.1" +version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9fe20b31e5a6a2c689cb9cd6b8ab3e1b417536b2369830b037acfee34b11469" +checksum = "a0d567df2c9c2870a43f3f2bd65aaeb18dbce1c18f217c3e564b4fbaeb3ee56c" dependencies = [ + "cfg-if", "clap", "condtype", - "core_affinity", "divan-macros", - "linkme", + "libc", "regex-lite", ] [[package]] name = "divan-macros" -version = "0.1.1" +version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c41656525d3cbca56bc91ca045ffb591b7b7d7bd7453750b63bacc35c46f3cc" +checksum = "27540baf49be0d484d8f0130d7d8da3011c32a44d4fc873368154f1510e574a2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.72", ] [[package]] name = "dyn_create_destroy_apps" version = "0.1.0" dependencies = [ - "gloo 0.10.0", + "gloo 0.11.0", "js-sys", "slab", "wasm-bindgen", @@ -762,9 +765,9 @@ dependencies = [ [[package]] name = "env_logger" -version = "0.10.0" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85cdab6a89accf66733ad5a1693a4dcced6aeff64602b634530dd73c1f3ee9f0" +checksum = "4cd405aab171cb85d6735e5c8d9db038c17d3ca007a4d2c25f337935c3d90580" dependencies = [ "humantime", "is-terminal", @@ -802,9 +805,9 @@ dependencies = [ [[package]] name = "fake" -version = "2.9.1" +version = "2.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26221445034074d46b276e13eb97a265ebdb8ed8da705c4dddd3dd20b66b45d2" +checksum = "1c25829bde82205da46e1823b2259db6273379f626fc211f126f65654a2669be" dependencies = [ "deunicode", "rand", @@ -812,12 +815,13 @@ dependencies = [ [[package]] name = "fancy-regex" -version = "0.11.0" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b95f7c0680e4142284cf8b22c14a476e87d61b004a3a0861872b32ef7ead40a2" +checksum = "531e46835a22af56d1e3b66f04844bed63158bc094a628bec1d321d9b4c44bf2" dependencies = [ "bit-set", - "regex", + "regex-automata", + "regex-syntax", ] [[package]] @@ -833,8 +837,8 @@ dependencies = [ name = "file_upload" version = "0.1.0" dependencies = [ - "base64 0.21.5", - "gloo 0.10.0", + "base64 0.22.1", + "gloo 0.11.0", "js-sys", "web-sys", "yew", @@ -881,7 +885,7 @@ name = "function_memory_game" version = "0.1.0" dependencies = [ "getrandom", - "gloo 0.10.0", + "gloo 0.11.0", "nanoid", "rand", "serde", @@ -896,7 +900,7 @@ name = "function_router" version = "0.1.0" dependencies = [ "getrandom", - "gloo 0.10.0", + "gloo 0.11.0", "instant", "lipsum", "log", @@ -912,7 +916,7 @@ dependencies = [ name = "function_todomvc" version = "0.1.0" dependencies = [ - "gloo 0.10.0", + "gloo 0.11.0", "serde", "strum", "strum_macros", @@ -924,7 +928,7 @@ dependencies = [ name = "futures" version = "0.1.0" dependencies = [ - "gloo 0.10.0", + "gloo 0.11.0", "pulldown-cmark", "wasm-bindgen", "wasm-bindgen-futures", @@ -934,9 +938,9 @@ dependencies = [ [[package]] name = "futures" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da0290714b38af9b4a7b094b8a37086d1b4e61f2df9122c3cad2577669145335" +checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" dependencies = [ "futures-channel", "futures-core", @@ -949,9 +953,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff4dd66668b557604244583e3e1e1eada8c5c2e96a6d0d6653ede395b78bbacb" +checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" dependencies = [ "futures-core", "futures-sink", @@ -959,15 +963,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb1d22c66e66d9d72e1758f0bd7d4fd0bee04cad842ee34587d68c07e45d088c" +checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" [[package]] name = "futures-executor" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f4fb8693db0cf099eadcca0efe2a5a22e4550f98ed16aba6c48700da29597bc" +checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d" dependencies = [ "futures-core", "futures-task", @@ -976,38 +980,38 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bf34a163b5c4c52d0478a4d757da8fb65cabef42ba90515efee0f6f9fa45aaa" +checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" [[package]] name = "futures-macro" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53b153fd91e4b0147f4aced87be237c98248656bb01050b96bf3ee89220a8ddb" +checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.72", ] [[package]] name = "futures-sink" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e36d3378ee38c2a36ad710c5d30c2911d752cb941c00c72dbabfb786a7970817" +checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" [[package]] name = "futures-task" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "efd193069b0ddadc69c46389b740bbccdd97203899b48d09c5f7969591d6bae2" +checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" [[package]] name = "futures-util" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a19526d624e703a3179b3d322efec918b6246ea0fa51d41124525f00f1cc8104" +checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" dependencies = [ "futures-channel", "futures-core", @@ -1026,7 +1030,7 @@ name = "game_of_life" version = "0.1.4" dependencies = [ "getrandom", - "gloo 0.10.0", + "gloo 0.11.0", "log", "rand", "wasm-logger", @@ -1045,9 +1049,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.10" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427" +checksum = "94b22e06ecb0110981051723910cbf0b5f5e09a2062dd7663334ee79a9d1286c" dependencies = [ "cfg-if", "js-sys", @@ -1064,9 +1068,9 @@ checksum = "b6c80984affa11d98d1b88b66ac8853f143217b399d3c74116778ff8fdb4ed2e" [[package]] name = "git2" -version = "0.18.1" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbf97ba92db08df386e10c8ede66a2a0369bd277090afd8710e19e38de9ec0cd" +checksum = "b903b73e45dc0c6c596f2d37eccece7c1c8bb6e4407b001096387c63d0d93724" dependencies = [ "bitflags 2.4.0", "libc", @@ -1104,21 +1108,21 @@ dependencies = [ [[package]] name = "gloo" -version = "0.10.0" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd35526c28cc55c1db77aed6296de58677dbab863b118483a27845631d870249" +checksum = "d15282ece24eaf4bd338d73ef580c6714c8615155c4190c781290ee3fa0fd372" dependencies = [ "gloo-console 0.3.0", "gloo-dialogs 0.2.0", "gloo-events 0.2.0", "gloo-file 0.3.0", "gloo-history 0.2.0", - "gloo-net 0.4.0", + "gloo-net 0.5.0", "gloo-render 0.2.0", "gloo-storage 0.3.0", "gloo-timers 0.3.0", "gloo-utils 0.2.0", - "gloo-worker 0.4.1", + "gloo-worker 0.5.0", ] [[package]] @@ -1254,7 +1258,7 @@ dependencies = [ "futures-core", "futures-sink", "gloo-utils 0.1.7", - "http", + "http 0.2.9", "js-sys", "pin-project", "serde", @@ -1267,15 +1271,15 @@ dependencies = [ [[package]] name = "gloo-net" -version = "0.4.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ac9e8288ae2c632fa9f8657ac70bfe38a1530f345282d7ba66a1f70b72b7dc4" +checksum = "43aaa242d1239a8822c15c645f02166398da4f8b5c4bae795c1f5b44e9eee173" dependencies = [ "futures-channel", "futures-core", "futures-sink", "gloo-utils 0.2.0", - "http", + "http 0.2.9", "js-sys", "pin-project", "serde", @@ -1403,12 +1407,12 @@ dependencies = [ [[package]] name = "gloo-worker" -version = "0.4.1" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2cbd4c35cc3a2b1fb792318acc06bd514193f6d058173da5cdbcdabe6514303" +checksum = "085f262d7604911c8150162529cefab3782e91adb20202e8658f7275d2aefe5d" dependencies = [ "bincode", - "futures 0.3.29", + "futures 0.3.30", "gloo-utils 0.2.0", "gloo-worker-macros", "js-sys", @@ -1429,22 +1433,41 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.72", ] [[package]] name = "h2" -version = "0.3.20" +version = "0.3.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97ec8491ebaf99c8eaa73058b045fe58073cd6be7f596ac993ced0b0a0c01049" +checksum = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8" dependencies = [ "bytes", "fnv", "futures-core", "futures-sink", "futures-util", - "http", - "indexmap 1.9.3", + "http 0.2.9", + "indexmap", + "slab", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "h2" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa82e28a107a8cc405f0839610bdc9b15f1e25ec7d696aa5cf173edbcb1486ab" +dependencies = [ + "atomic-waker", + "bytes", + "fnv", + "futures-core", + "futures-sink", + "http 1.1.0", + "indexmap", "slab", "tokio", "tokio-util", @@ -1460,12 +1483,6 @@ dependencies = [ "byteorder", ] -[[package]] -name = "hashbrown" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" - [[package]] name = "hashbrown" version = "0.14.1" @@ -1482,7 +1499,7 @@ dependencies = [ "bitflags 1.3.2", "bytes", "headers-core", - "http", + "http 0.2.9", "httpdate", "mime", "sha1", @@ -1494,7 +1511,7 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e7f66481bfee273957b1f20485a4ff3362987f85b2c236580d81b4eb7a326429" dependencies = [ - "http", + "http 0.2.9", ] [[package]] @@ -1517,6 +1534,12 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + [[package]] name = "hermit-abi" version = "0.2.6" @@ -1552,6 +1575,17 @@ dependencies = [ "itoa", ] +[[package]] +name = "http" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21b9ddb458710bc376481b842f5da65cdf31522de232c1ca8146abce2a358258" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + [[package]] name = "http-body" version = "0.4.5" @@ -1559,15 +1593,38 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1" dependencies = [ "bytes", - "http", + "http 0.2.9", + "pin-project-lite", +] + +[[package]] +name = "http-body" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" +dependencies = [ + "bytes", + "http 1.1.0", +] + +[[package]] +name = "http-body-util" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f" +dependencies = [ + "bytes", + "futures-util", + "http 1.1.0", + "http-body 1.0.1", "pin-project-lite", ] [[package]] name = "http-range-header" -version = "0.3.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bfe8eed0a9285ef776bb792479ea3834e8b94e13d615c2f66d03dd50a435a29" +checksum = "08a397c49fec283e3d6211adbe480be95aae5f304cfb923e9970e08956d5168a" [[package]] name = "httparse" @@ -1589,39 +1646,100 @@ checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" [[package]] name = "hyper" -version = "0.14.27" +version = "0.14.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffb1cfd654a8219eaef89881fdb3bb3b1cdc5fa75ded05d6933b2b382e395468" +checksum = "a152ddd61dfaec7273fe8419ab357f33aee0d914c5f4efbf0d96fa749eea5ec9" dependencies = [ "bytes", "futures-channel", "futures-core", "futures-util", - "h2", - "http", - "http-body", + "h2 0.3.26", + "http 0.2.9", + "http-body 0.4.5", "httparse", "httpdate", "itoa", "pin-project-lite", - "socket2 0.4.9", + "socket2", "tokio", "tower-service", "tracing", "want", ] +[[package]] +name = "hyper" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50dfd22e0e76d0f662d429a5f80fcaf3855009297eab6a0a9f8543834744ba05" +dependencies = [ + "bytes", + "futures-channel", + "futures-util", + "h2 0.4.5", + "http 1.1.0", + "http-body 1.0.1", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "smallvec", + "tokio", + "want", +] + +[[package]] +name = "hyper-rustls" +version = "0.27.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ee4be2c948921a1a5320b629c4193916ed787a7f7f293fd3f7f5a6c9de74155" +dependencies = [ + "futures-util", + "http 1.1.0", + "hyper 1.4.1", + "hyper-util", + "rustls", + "rustls-pki-types", + "tokio", + "tokio-rustls", + "tower-service", +] + [[package]] name = "hyper-tls" -version = "0.5.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" +checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" dependencies = [ "bytes", - "hyper", + "http-body-util", + "hyper 1.4.1", + "hyper-util", "native-tls", "tokio", "tokio-native-tls", + "tower-service", +] + +[[package]] +name = "hyper-util" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ab92f4f49ee4fb4f997c784b7a2e0fa70050211e0b6a287f898c3c9785ca956" +dependencies = [ + "bytes", + "futures-channel", + "futures-util", + "http 1.1.0", + "http-body 1.0.1", + "hyper 1.4.1", + "pin-project-lite", + "socket2", + "tokio", + "tower", + "tower-service", + "tracing", ] [[package]] @@ -1680,7 +1798,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1bd41bf647018e1da0e32dac34d02135d61d7204cee650e4633eddbd0b23ec38" dependencies = [ "implicit-clone-derive", - "indexmap 2.0.2", + "indexmap", ] [[package]] @@ -1690,34 +1808,24 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9311685eb9a34808bbb0608ad2fcab9ae216266beca5848613e95553ac914e3b" dependencies = [ "quote", - "syn 2.0.38", -] - -[[package]] -name = "indexmap" -version = "1.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" -dependencies = [ - "autocfg", - "hashbrown 0.12.3", + "syn 2.0.72", ] [[package]] name = "indexmap" -version = "2.0.2" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8adf3ddd720272c6ea8bf59463c04e0f93d0bbf7c5439b691bca2987e0270897" +checksum = "de3fc2e30ba82dd1b3911c8de1ffc143c74a914a14e99514d7637e3099df5ea0" dependencies = [ "equivalent", - "hashbrown 0.14.1", + "hashbrown", ] [[package]] name = "indicatif" -version = "0.17.7" +version = "0.17.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb28741c9db9a713d93deb3bb9515c20788cef5815265bee4980e87bde7e0f25" +checksum = "763a5a8f45087d6bcea4222e7b72c291a054edf80e4ef6efd2a4979878c7bea3" dependencies = [ "console", "instant", @@ -1730,16 +1838,16 @@ dependencies = [ name = "inner_html" version = "0.1.0" dependencies = [ - "gloo 0.10.0", + "gloo 0.11.0", "web-sys", "yew", ] [[package]] name = "instant" -version = "0.1.12" +version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" +checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" dependencies = [ "cfg-if", "js-sys", @@ -1776,11 +1884,17 @@ dependencies = [ "windows-sys 0.48.0", ] +[[package]] +name = "is_terminal_polyfill" +version = "1.70.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" + [[package]] name = "itertools" -version = "0.10.5" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" dependencies = [ "either", ] @@ -1813,9 +1927,9 @@ dependencies = [ [[package]] name = "jobserver" -version = "0.1.26" +version = "0.1.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "936cfd212a0155903bcbc060e316fb6cc7cbf2e1907329391ebadc1fe0ce77c2" +checksum = "48d1dbcbbeb6a7fec7e059840aa538bd62aaccf972c7346c4d9d2059312853d0" dependencies = [ "libc", ] @@ -1844,9 +1958,9 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.64" +version = "0.3.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935a" +checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d" dependencies = [ "wasm-bindgen", ] @@ -1890,9 +2004,9 @@ checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" [[package]] name = "libgit2-sys" -version = "0.16.2+1.7.2" +version = "0.17.0+1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee4126d8b4ee5c9d9ea891dd875cfdc1e9d0950437179104b183d7d8a74d24e8" +checksum = "10472326a8a6477c3c20a64547b0059e4b0d086869eee31e6d7da728a8eb7224" dependencies = [ "cc", "libc", @@ -1934,26 +2048,6 @@ dependencies = [ "vcpkg", ] -[[package]] -name = "linkme" -version = "0.3.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91ed2ee9464ff9707af8e9ad834cffa4802f072caad90639c583dd3c62e6e608" -dependencies = [ - "linkme-impl", -] - -[[package]] -name = "linkme-impl" -version = "0.3.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba125974b109d512fccbc6c0244e7580143e460895dfd6ea7f8bbb692fd94396" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.38", -] - [[package]] name = "linux-raw-sys" version = "0.3.8" @@ -1968,9 +2062,9 @@ checksum = "da2479e8c062e40bf0066ffa0bc823de0a9368974af99c9f6df941d2c231e03f" [[package]] name = "lipsum" -version = "0.9.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c5e9ef2d2ad6fe67a59ace27c203c8d3a71d195532ee82e3bbe0d5f9a9ca541" +checksum = "636860251af8963cc40f6b4baadee105f02e21b28131d76eba8e40ce84ab8064" dependencies = [ "rand", "rand_chacha", @@ -1988,9 +2082,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.20" +version = "0.4.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" +checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" [[package]] name = "matchit" @@ -2044,7 +2138,7 @@ dependencies = [ name = "mount_point" version = "0.1.0" dependencies = [ - "gloo 0.10.0", + "gloo 0.11.0", "wasm-bindgen", "web-sys", "yew", @@ -2059,7 +2153,7 @@ dependencies = [ "bytes", "encoding_rs", "futures-util", - "http", + "http 0.2.9", "httparse", "log", "memchr", @@ -2112,6 +2206,12 @@ dependencies = [ "yew", ] +[[package]] +name = "num-conv" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" + [[package]] name = "num-traits" version = "0.2.15" @@ -2149,9 +2249,9 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.18.0" +version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" +checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" [[package]] name = "openssl" @@ -2176,7 +2276,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.72", ] [[package]] @@ -2199,9 +2299,9 @@ dependencies = [ [[package]] name = "papergrid" -version = "0.10.0" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2ccbe15f2b6db62f9a9871642746427e297b0ceb85f9a7f1ee5ff47d184d0c8" +checksum = "9ad43c07024ef767f9160710b3a6773976194758c7919b17e63b863db0bdf7fb" dependencies = [ "bytecount", "fnv", @@ -2267,7 +2367,7 @@ checksum = "39407670928234ebc5e6e580247dd567ad73a3578460c5990f9503df207e8f07" dependencies = [ "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.72", ] [[package]] @@ -2288,7 +2388,7 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a829027bd95e54cfe13e3e258a1ae7b645960553fb82b75ff852c29688ee595b" dependencies = [ - "futures 0.3.29", + "futures 0.3.30", "rustversion", "thiserror", ] @@ -2309,7 +2409,7 @@ checksum = "767eb9f07d4a5ebcb39bbf2d452058a93c011373abf6832e24194a1c3f004794" name = "portals" version = "0.1.0" dependencies = [ - "gloo 0.10.0", + "gloo 0.11.0", "wasm-bindgen", "web-sys", "yew", @@ -2340,19 +2440,19 @@ checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" [[package]] name = "prettyplease" -version = "0.2.15" +version = "0.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae005bd773ab59b4725093fd7df83fd7892f7d8eafb48dbd7de6e024e4215f9d" +checksum = "5f12335488a2f3b0a83b14edad48dca9879ce89b2edd10e80237e4e852dd645e" dependencies = [ "proc-macro2", - "syn 2.0.38", + "syn 2.0.72", ] [[package]] name = "primes" -version = "0.3.0" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68a61082d8bceecd71a3870e9162002bb75f7ba9c7aa8b76227e887782fef9c8" +checksum = "0466ef49edd4a5a4bc9d62804a34e89366810bd8bfc3ed537101e3d099f245c5" [[package]] name = "proc-macro-crate" @@ -2390,9 +2490,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.69" +version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "134c189feb4956b20f6f547d2cf727d4c0fe06722b20a0eec87ed445a97f92da" +checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" dependencies = [ "unicode-ident", ] @@ -2412,7 +2512,7 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "03b55e106e5791fa5a13abd13c85d6127312e8e09098059ca2bc9b03ca4cf488" dependencies = [ - "futures 0.3.29", + "futures 0.3.30", "gloo 0.8.1", "num_cpus", "once_cell", @@ -2425,26 +2525,20 @@ dependencies = [ [[package]] name = "pulldown-cmark" -version = "0.9.3" +version = "0.9.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77a1a2f1f0a7ecff9c31abbe177637be0e97a0aef46cf8738ece09327985d998" +checksum = "57206b407293d2bcd3af849ce869d52068623f19e1b5ff8e8778e3309439682b" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.4.0", "memchr", "unicase", ] -[[package]] -name = "quick-error" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a993555f31e5a609f617c12db6250dedcac1b0a85076912c436e6fc9b2c8e6a3" - [[package]] name = "quote" -version = "1.0.33" +version = "1.0.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" +checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" dependencies = [ "proc-macro2", ] @@ -2490,9 +2584,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.10.2" +version = "1.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343" +checksum = "4219d74c6b67a3654a9fbebc4b419e22126d13d2f3c4a07ee0cb61ff79a79619" dependencies = [ "aho-corasick", "memchr", @@ -2502,9 +2596,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.3" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f" +checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df" dependencies = [ "aho-corasick", "memchr", @@ -2525,20 +2619,24 @@ checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" [[package]] name = "reqwest" -version = "0.11.22" +version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "046cd98826c46c2ac8ddecae268eb5c2e58628688a5fc7a2643704a73faba95b" +checksum = "c7d6d2a27d57148378eb5e111173f4276ad26340ecc5c49a4a2152167a2d6a37" dependencies = [ - "base64 0.21.5", + "base64 0.22.1", "bytes", "encoding_rs", + "futures-channel", "futures-core", "futures-util", - "h2", - "http", - "http-body", - "hyper", + "h2 0.4.5", + "http 1.1.0", + "http-body 1.0.1", + "http-body-util", + "hyper 1.4.1", + "hyper-rustls", "hyper-tls", + "hyper-util", "ipnet", "js-sys", "log", @@ -2547,9 +2645,11 @@ dependencies = [ "once_cell", "percent-encoding", "pin-project-lite", + "rustls-pemfile", "serde", "serde_json", "serde_urlencoded", + "sync_wrapper 1.0.1", "system-configuration", "tokio", "tokio-native-tls", @@ -2561,6 +2661,21 @@ dependencies = [ "winreg", ] +[[package]] +name = "ring" +version = "0.17.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" +dependencies = [ + "cc", + "cfg-if", + "getrandom", + "libc", + "spin", + "untrusted", + "windows-sys 0.52.0", +] + [[package]] name = "route-recognizer" version = "0.3.1" @@ -2572,7 +2687,7 @@ name = "router" version = "0.1.0" dependencies = [ "getrandom", - "gloo 0.10.0", + "gloo 0.11.0", "instant", "lipsum", "log", @@ -2626,20 +2741,51 @@ dependencies = [ "windows-sys 0.48.0", ] +[[package]] +name = "rustls" +version = "0.23.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c58f8c84392efc0a126acce10fa59ff7b3d2ac06ab451a33f2741989b806b044" +dependencies = [ + "once_cell", + "rustls-pki-types", + "rustls-webpki", + "subtle", + "zeroize", +] + [[package]] name = "rustls-pemfile" -version = "1.0.3" +version = "2.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "196fe16b00e106300d3e45ecfcb764fa292a535d7326a29a5875c579c7417425" +dependencies = [ + "base64 0.22.1", + "rustls-pki-types", +] + +[[package]] +name = "rustls-pki-types" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "976295e77ce332211c0d24d92c0e83e50f5c5f046d11082cea19f3df13a3562d" + +[[package]] +name = "rustls-webpki" +version = "0.102.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d3987094b1d07b653b7dfdc3f70ce9a1da9c51ac18c1b06b662e4f9a0e9f4b2" +checksum = "8e6b52d4fda176fd835fdc55a835d4a89b8499cad995885a21149d5ad62f852e" dependencies = [ - "base64 0.21.5", + "ring", + "rustls-pki-types", + "untrusted", ] [[package]] name = "rustversion" -version = "1.0.14" +version = "1.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4" +checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6" [[package]] name = "ryu" @@ -2693,15 +2839,15 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.20" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "836fa6a3e1e547f9a2c4040802ec865b5d85f4014efe00555d7090a3dcaa1090" +checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" [[package]] name = "serde" -version = "1.0.190" +version = "1.0.193" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91d3c334ca1ee894a2c6f6ad698fe8c435b76d504b13d436f0685d648d6d96f7" +checksum = "25dd9975e68d0cb5aa1120c288333fc98731bd1dd12f561e468ea4728c042b89" dependencies = [ "serde_derive", ] @@ -2719,20 +2865,20 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.190" +version = "1.0.193" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67c5609f394e5c2bd7fc51efda478004ea80ef42fee983d5c67a65e34f32c0e3" +checksum = "43576ca501357b9b071ac53cdc7da8ef0cbd9493d8df094cd821777ea6e894d3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.72", ] [[package]] name = "serde_json" -version = "1.0.107" +version = "1.0.109" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b420ce6e3d8bd882e9b243c6eed35dbc9a6110c9769e74b584e0d68d1f20c65" +checksum = "cb0652c533506ad7a2e353cce269330d6afd8bdfb6d75e0ace5b35aacbd7b9e9" dependencies = [ "itoa", "ryu", @@ -2786,7 +2932,7 @@ version = "0.1.0" dependencies = [ "bytes", "clap", - "futures 0.3.29", + "futures 0.3.30", "log", "reqwest", "serde", @@ -2809,28 +2955,18 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0" - -[[package]] -name = "socket2" -version = "0.4.9" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64a4a911eed85daf18834cfaa86a79b7d266ff93ff5ba14005426219480ed662" -dependencies = [ - "libc", - "winapi", -] +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "socket2" -version = "0.5.4" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4031e820eb552adee9295814c0ced9e5cf38ddf1e8b7d566d6de8e2538ea989e" +checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" dependencies = [ "libc", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] @@ -2850,8 +2986,9 @@ dependencies = [ "clap", "env_logger", "function_router", - "futures 0.3.29", - "hyper", + "futures 0.3.30", + "hyper 1.4.1", + "hyper-util", "jemallocator", "log", "tokio", @@ -2870,37 +3007,43 @@ checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" [[package]] name = "strsim" -version = "0.10.0" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" [[package]] name = "strum" -version = "0.25.0" +version = "0.26.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "290d54ea6f91c969195bdbcd7442c8c2a2ba87da8bf60a7ee86a235d4bc1e125" +checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06" dependencies = [ "strum_macros", ] [[package]] name = "strum_macros" -version = "0.25.3" +version = "0.26.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23dc1fa9ac9c169a78ba62f0b841814b7abae11bdd047b9c58f893439e309ea0" +checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be" dependencies = [ - "heck", + "heck 0.5.0", "proc-macro2", "quote", "rustversion", - "syn 2.0.38", + "syn 2.0.72", ] +[[package]] +name = "subtle" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" + [[package]] name = "suspense" version = "0.1.0" dependencies = [ - "gloo 0.10.0", + "gloo 0.11.0", "wasm-bindgen", "wasm-bindgen-futures", "web-sys", @@ -2920,9 +3063,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.38" +version = "2.0.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e96b79aaa137db8f61e26363a0c9b47d8b4ec75da28b7d1d614c2303e232408b" +checksum = "dc4b9b9bf2add8093d3f2c0204471e951b2285580335de42f9d2534f3ae7a8af" dependencies = [ "proc-macro2", "quote", @@ -2935,6 +3078,12 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" +[[package]] +name = "sync_wrapper" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7065abeca94b6a8a577f9bd45aa0867a2238b74e8eb67cf10d492bc39351394" + [[package]] name = "system-configuration" version = "0.5.1" @@ -2958,9 +3107,9 @@ dependencies = [ [[package]] name = "tabled" -version = "0.14.0" +version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfe9c3632da101aba5131ed63f9eed38665f8b3c68703a6bb18124835c1a5d22" +checksum = "4c998b0c8b921495196a48aabaf1901ff28be0760136e31604f7967b0792050e" dependencies = [ "papergrid", "tabled_derive", @@ -2969,11 +3118,11 @@ dependencies = [ [[package]] name = "tabled_derive" -version = "0.6.0" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99f688a08b54f4f02f0a3c382aefdb7884d3d69609f785bd253dc033243e3fe4" +checksum = "4c138f99377e5d653a371cdad263615634cfc8467685dfe8e73e2b8e98f44b17" dependencies = [ - "heck", + "heck 0.4.1", "proc-macro-error", "proc-macro2", "quote", @@ -3015,31 +3164,32 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.50" +version = "1.0.55" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9a7210f5c9a7156bb50aa36aed4c95afb51df0df00713949448cf9e97d382d2" +checksum = "6e3de26b0965292219b4287ff031fcba86837900fe9cd2b34ea8ad893c0953d2" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.50" +version = "1.0.55" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "266b2e40bc00e5a6c09c3584011e08b06f123c00362c92b975ba9843aaaa14b8" +checksum = "268026685b2be38d7103e9e507c938a1fcb3d7e6eb15e87870b617bf37b6d581" dependencies = [ "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.72", ] [[package]] name = "time" -version = "0.3.30" +version = "0.3.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4a34ab300f2dee6e562c10a046fc05e358b29f9bf92277f30c3c8d82275f6f5" +checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885" dependencies = [ "deranged", + "num-conv", "powerfmt", "serde", "time-core", @@ -3055,7 +3205,7 @@ checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" name = "timer" version = "0.1.0" dependencies = [ - "gloo 0.10.0", + "gloo 0.11.0", "js-sys", "wasm-bindgen", "yew", @@ -3065,7 +3215,7 @@ dependencies = [ name = "timer_functional" version = "0.1.0" dependencies = [ - "gloo 0.10.0", + "gloo 0.11.0", "js-sys", "yew", ] @@ -3089,7 +3239,7 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" name = "todomvc" version = "0.1.0" dependencies = [ - "gloo 0.10.0", + "gloo 0.11.0", "serde", "serde_derive", "strum", @@ -3100,9 +3250,9 @@ dependencies = [ [[package]] name = "tokio" -version = "1.33.0" +version = "1.38.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f38200e3ef7995e5ef13baec2f432a6da0aa9ac495b2c0e8f3b7eec2c92d653" +checksum = "eb2caba9f80616f438e09748d5acda951967e1ea58508ef53d9c6402485a46df" dependencies = [ "backtrace", "bytes", @@ -3112,20 +3262,20 @@ dependencies = [ "parking_lot", "pin-project-lite", "signal-hook-registry", - "socket2 0.5.4", + "socket2", "tokio-macros", "windows-sys 0.48.0", ] [[package]] name = "tokio-macros" -version = "2.1.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675e" +checksum = "5f5ae998a069d4b5aba8ee9dad856af7d520c3699e6159b185c2acd48155d39a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.72", ] [[package]] @@ -3138,6 +3288,17 @@ dependencies = [ "tokio", ] +[[package]] +name = "tokio-rustls" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c7bc40d0e5a97695bb96e27995cd3a08538541b0a846f65bba7a359f36700d4" +dependencies = [ + "rustls", + "rustls-pki-types", + "tokio", +] + [[package]] name = "tokio-stream" version = "0.1.14" @@ -3151,9 +3312,9 @@ dependencies = [ [[package]] name = "tokio-tungstenite" -version = "0.20.1" +version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "212d5dcb2a1ce06d81107c3d0ffa3121fe974b73f068c8282cb1c32328113b6c" +checksum = "c83b561d025642014097b66e6c1bb422783339e0909e4429cde4749d1990bc38" dependencies = [ "futures-util", "log", @@ -3187,7 +3348,7 @@ version = "0.19.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f8123f27e969974a3dfba720fdb560be359f57b44302d280ba72e76a74480e8a" dependencies = [ - "indexmap 2.0.2", + "indexmap", "toml_datetime", "winnow", ] @@ -3210,16 +3371,16 @@ dependencies = [ [[package]] name = "tower-http" -version = "0.3.5" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f873044bf02dd1e8239e9c1293ea39dad76dc594ec16185d0a1bf31d8dc8d858" +checksum = "1e9cd434a998747dd2c4276bc96ee2e0c7a2eadf3cae88e52be55a05fa9053f5" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.4.0", "bytes", - "futures-core", "futures-util", - "http", - "http-body", + "http 1.1.0", + "http-body 1.0.1", + "http-body-util", "http-range-header", "httpdate", "mime", @@ -3230,6 +3391,7 @@ dependencies = [ "tokio-util", "tower-layer", "tower-service", + "tracing", ] [[package]] @@ -3264,7 +3426,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.72", ] [[package]] @@ -3284,9 +3446,9 @@ checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed" [[package]] name = "trybuild" -version = "1.0.85" +version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "196a58260a906cedb9bf6d8034b6379d0c11f552416960452f267402ceeddff1" +checksum = "8419ecd263363827c5730386f418715766f584e2f874d32c23c5b00bd9727e7e" dependencies = [ "basic-toml", "glob", @@ -3299,14 +3461,14 @@ dependencies = [ [[package]] name = "tungstenite" -version = "0.20.1" +version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e3dac10fd62eaf6617d3a904ae222845979aec67c615d1c842b4002c7666fb9" +checksum = "9ef1a641ea34f399a848dea702823bbecfb4c486f911735368f1f137cb8257e1" dependencies = [ "byteorder", "bytes", "data-encoding", - "http", + "http 1.1.0", "httparse", "log", "rand", @@ -3320,7 +3482,7 @@ dependencies = [ name = "two_apps" version = "0.1.0" dependencies = [ - "gloo 0.10.0", + "gloo 0.11.0", "yew", ] @@ -3366,6 +3528,12 @@ version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b" +[[package]] +name = "untrusted" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" + [[package]] name = "url" version = "2.4.0" @@ -3403,9 +3571,9 @@ checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" [[package]] name = "uuid" -version = "1.5.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88ad59a7560b41a70d191093a945f0b87bc1deeda46fb237479708a1d6b6cdfc" +checksum = "81dfa00651efa65069b0b6b651f4aaa31ba9e3c3ce0137aaad053604ee7e0314" dependencies = [ "serde", ] @@ -3433,29 +3601,27 @@ dependencies = [ [[package]] name = "warp" -version = "0.3.6" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1e92e22e03ff1230c03a1a8ee37d2f89cd489e2e541b7550d6afad96faed169" +checksum = "4378d202ff965b011c64817db11d5829506d3404edeadb61f190d111da3f231c" dependencies = [ "bytes", "futures-channel", "futures-util", "headers", - "http", - "hyper", + "http 0.2.9", + "hyper 0.14.30", "log", "mime", "mime_guess", "multer", "percent-encoding", "pin-project", - "rustls-pemfile", "scoped-tls", "serde", "serde_json", "serde_urlencoded", "tokio", - "tokio-stream", "tokio-tungstenite", "tokio-util", "tower-service", @@ -3470,9 +3636,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.87" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342" +checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" dependencies = [ "cfg-if", "wasm-bindgen-macro", @@ -3480,24 +3646,24 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.87" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd" +checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.72", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.37" +version = "0.4.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c02dbc21516f9f1f04f187958890d7e6026df8d16540b7ad9492bc34a67cea03" +checksum = "76bc14366121efc8dbb487ab05bcc9d346b3b5ec0eaa76e46594cabbe51762c0" dependencies = [ "cfg-if", "js-sys", @@ -3507,9 +3673,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.87" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d" +checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -3517,28 +3683,28 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.87" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" +checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.72", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.87" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1" +checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" [[package]] name = "wasm-bindgen-test" -version = "0.3.37" +version = "0.3.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e6e302a7ea94f83a6d09e78e7dc7d9ca7b186bc2829c24a22d0753efd680671" +checksum = "d9bf62a58e0780af3e852044583deee40983e5886da43a271dd772379987667b" dependencies = [ "console_error_panic_hook", "js-sys", @@ -3550,12 +3716,13 @@ dependencies = [ [[package]] name = "wasm-bindgen-test-macro" -version = "0.3.37" +version = "0.3.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ecb993dd8c836930ed130e020e77d9b2e65dd0fbab1b67c790b0f5d80b11a575" +checksum = "b7f89739351a2e03cb94beb799d47fb2cac01759b40ec441f7de39b00cbf7ef0" dependencies = [ "proc-macro2", "quote", + "syn 2.0.72", ] [[package]] @@ -3571,9 +3738,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.64" +version = "0.3.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b85cbef8c220a6abc02aefd892dfc0fc23afb1c6a426316ec33253a3877249b" +checksum = "77afa9a11836342370f4817622a2f0f418b134426d91a82dfb48f532d2ec13ef" dependencies = [ "js-sys", "wasm-bindgen", @@ -3617,7 +3784,7 @@ version = "0.1.0" dependencies = [ "derive_more", "glob", - "gloo 0.10.0", + "gloo 0.11.0", "js-sys", "tokio", "wasm-bindgen", @@ -3703,6 +3870,15 @@ dependencies = [ "windows-targets 0.48.1", ] +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.6", +] + [[package]] name = "windows-targets" version = "0.42.2" @@ -3733,6 +3909,22 @@ dependencies = [ "windows_x86_64_msvc 0.48.0", ] +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", +] + [[package]] name = "windows_aarch64_gnullvm" version = "0.42.2" @@ -3745,6 +3937,12 @@ version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc" +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + [[package]] name = "windows_aarch64_msvc" version = "0.42.2" @@ -3757,6 +3955,12 @@ version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3" +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + [[package]] name = "windows_i686_gnu" version = "0.42.2" @@ -3769,6 +3973,18 @@ version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241" +[[package]] +name = "windows_i686_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + [[package]] name = "windows_i686_msvc" version = "0.42.2" @@ -3781,6 +3997,12 @@ version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00" +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + [[package]] name = "windows_x86_64_gnu" version = "0.42.2" @@ -3793,6 +4015,12 @@ version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1" +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + [[package]] name = "windows_x86_64_gnullvm" version = "0.42.2" @@ -3805,6 +4033,12 @@ version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953" +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + [[package]] name = "windows_x86_64_msvc" version = "0.42.2" @@ -3817,6 +4051,12 @@ version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + [[package]] name = "winnow" version = "0.5.4" @@ -3828,9 +4068,9 @@ dependencies = [ [[package]] name = "winreg" -version = "0.50.0" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" +checksum = "a277a57398d4bfa075df44f501a17cfdf8542d224f0d36095a2adc7aee4ef0a5" dependencies = [ "cfg-if", "windows-sys 0.48.0", @@ -3843,11 +4083,11 @@ dependencies = [ "base64ct", "bincode", "console_error_panic_hook", - "futures 0.3.29", - "gloo 0.10.0", + "futures 0.3.30", + "gloo 0.11.0", "html-escape", "implicit-clone", - "indexmap 2.0.2", + "indexmap", "js-sys", "prokio", "rustversion", @@ -3868,8 +4108,8 @@ dependencies = [ name = "yew-agent" version = "0.3.0" dependencies = [ - "futures 0.3.29", - "gloo-worker 0.4.1", + "futures 0.3.30", + "gloo-worker 0.5.0", "serde", "wasm-bindgen", "yew", @@ -3883,7 +4123,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.38", + "syn 2.0.72", "trybuild", "yew-agent", ] @@ -3896,7 +4136,7 @@ checksum = "58865a8f2470a6ad839274e05c9627170d32930f39a2348f8c425880a6131792" dependencies = [ "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.72", ] [[package]] @@ -3909,7 +4149,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.38", + "syn 2.0.72", "trybuild", "yew", ] @@ -3918,7 +4158,7 @@ dependencies = [ name = "yew-router" version = "0.18.0" dependencies = [ - "gloo 0.10.0", + "gloo 0.11.0", "js-sys", "route-recognizer", "serde", @@ -3939,7 +4179,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.38", + "syn 2.0.72", "trybuild", "yew-router", ] @@ -3961,25 +4201,32 @@ dependencies = [ name = "yew-worker-prime" version = "0.1.0" dependencies = [ - "futures 0.3.29", + "futures 0.3.30", "primes", "serde", "yew", "yew-agent", ] +[[package]] +name = "zeroize" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" + [[package]] name = "zxcvbn" -version = "2.2.2" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "103fa851fff70ea29af380e87c25c48ff7faac5c530c70bd0e65366d4e0c94e4" +checksum = "ad76e35b00ad53688d6b90c431cabe3cbf51f7a4a154739e04b63004ab1c736c" dependencies = [ + "chrono", "derive_builder", "fancy-regex", "itertools", - "js-sys", "lazy_static", - "quick-error", "regex", "time", + "wasm-bindgen", + "web-sys", ] diff --git a/examples/async_clock/Cargo.toml b/examples/async_clock/Cargo.toml index c648b83031a..645542818fa 100644 --- a/examples/async_clock/Cargo.toml +++ b/examples/async_clock/Cargo.toml @@ -9,4 +9,4 @@ license = "MIT OR Apache-2.0" yew = { path = "../../packages/yew", features = ["csr"] } chrono = "0.4" futures = "0.3" -gloo-net = "0.4" +gloo-net = "0.5" diff --git a/examples/boids/Cargo.toml b/examples/boids/Cargo.toml index 1a3a1b8178c..55e2cf676ad 100644 --- a/examples/boids/Cargo.toml +++ b/examples/boids/Cargo.toml @@ -12,7 +12,7 @@ getrandom = { version = "0.2", features = ["js"] } rand = "0.8" serde = { version = "1.0", features = ["derive"] } yew = { path = "../../packages/yew", features = ["csr"] } -gloo = "0.10" +gloo = "0.11" [dependencies.web-sys] version = "0.3" diff --git a/examples/counter/Cargo.toml b/examples/counter/Cargo.toml index 381c2cc0d7f..feaad6adceb 100644 --- a/examples/counter/Cargo.toml +++ b/examples/counter/Cargo.toml @@ -6,7 +6,7 @@ edition = "2021" license = "MIT OR Apache-2.0" [dependencies] -gloo = "0.10" +gloo = "0.11" js-sys = "0.3" yew = { path = "../../packages/yew", features = ["csr"] } wasm-bindgen = "0.2" diff --git a/examples/dyn_create_destroy_apps/Cargo.toml b/examples/dyn_create_destroy_apps/Cargo.toml index 7880e6ebe20..f28250cb270 100644 --- a/examples/dyn_create_destroy_apps/Cargo.toml +++ b/examples/dyn_create_destroy_apps/Cargo.toml @@ -9,11 +9,11 @@ license = "MIT OR Apache-2.0" js-sys = "0.3" yew = { path = "../../packages/yew", features = ["csr"] } slab = "0.4.9" -gloo = "0.10" +gloo = "0.11" wasm-bindgen = "0.2" [dependencies.web-sys] -version = "0.3.64" +version = "0.3.69" features = [ "Document", "Element", diff --git a/examples/file_upload/Cargo.toml b/examples/file_upload/Cargo.toml index 3c4d3817a5e..be7408989b2 100644 --- a/examples/file_upload/Cargo.toml +++ b/examples/file_upload/Cargo.toml @@ -8,8 +8,8 @@ license = "MIT OR Apache-2.0" [dependencies] js-sys = "0.3" yew = { path = "../../packages/yew", features = ["csr"] } -base64 = "0.21.5" -gloo = "0.10" +base64 = "0.22.1" +gloo = "0.11" [dependencies.web-sys] version = "0.3" diff --git a/examples/function_memory_game/Cargo.toml b/examples/function_memory_game/Cargo.toml index 363e2e2b31c..08c8809af27 100644 --- a/examples/function_memory_game/Cargo.toml +++ b/examples/function_memory_game/Cargo.toml @@ -7,9 +7,9 @@ license = "MIT OR Apache-2.0" [dependencies] serde = { version = "1.0", features = ["derive"] } -strum = "0.25" -strum_macros = "0.25" -gloo = "0.10" +strum = "0.26" +strum_macros = "0.26" +gloo = "0.11" nanoid = "0.4" rand = "0.8" getrandom = { version = "0.2", features = ["js"] } diff --git a/examples/function_router/Cargo.toml b/examples/function_router/Cargo.toml index 4e3b73a3ca2..0dd0cfdd201 100644 --- a/examples/function_router/Cargo.toml +++ b/examples/function_router/Cargo.toml @@ -5,13 +5,13 @@ edition = "2021" license = "MIT OR Apache-2.0" [dependencies] -lipsum = "0.9.0" +lipsum = "0.9.1" log = "0.4" rand = { version = "0.8", features = ["small_rng"] } yew = { path = "../../packages/yew" } yew-router = { path = "../../packages/yew-router" } serde = { version = "1.0", features = ["derive"] } -gloo = "0.10" +gloo = "0.11" wasm-logger = "0.2" instant = { version = "0.1", features = ["wasm-bindgen"] } once_cell = "1" diff --git a/examples/function_todomvc/Cargo.toml b/examples/function_todomvc/Cargo.toml index f6dcc2378e2..f089fafb19d 100644 --- a/examples/function_todomvc/Cargo.toml +++ b/examples/function_todomvc/Cargo.toml @@ -7,9 +7,9 @@ license = "MIT OR Apache-2.0" [dependencies] serde = { version = "1.0", features = ["derive"] } -strum = "0.25" -strum_macros = "0.25" -gloo = "0.10" +strum = "0.26" +strum_macros = "0.26" +gloo = "0.11" yew = { path = "../../packages/yew", features = ["csr"] } [dependencies.web-sys] diff --git a/examples/futures/Cargo.toml b/examples/futures/Cargo.toml index bd0c70d5bc9..99a8b43f28f 100644 --- a/examples/futures/Cargo.toml +++ b/examples/futures/Cargo.toml @@ -10,7 +10,7 @@ pulldown-cmark = { version = "0.9", default-features = false } wasm-bindgen = "0.2" wasm-bindgen-futures = "0.4" yew = { path = "../../packages/yew", features = ["csr"] } -gloo = "0.10" +gloo = "0.11" [dependencies.web-sys] version = "0.3" diff --git a/examples/game_of_life/Cargo.toml b/examples/game_of_life/Cargo.toml index 8b81d044a7d..ed153a0f96a 100644 --- a/examples/game_of_life/Cargo.toml +++ b/examples/game_of_life/Cargo.toml @@ -15,4 +15,4 @@ log = "0.4" rand = "0.8" wasm-logger = "0.2" yew = { path = "../../packages/yew", features = ["csr"] } -gloo = "0.10" +gloo = "0.11" diff --git a/examples/inner_html/Cargo.toml b/examples/inner_html/Cargo.toml index 9b9a12047bc..37f971a8bf4 100644 --- a/examples/inner_html/Cargo.toml +++ b/examples/inner_html/Cargo.toml @@ -7,7 +7,7 @@ license = "MIT OR Apache-2.0" [dependencies] yew = { path = "../../packages/yew", features = ["csr"] } -gloo = "0.10" +gloo = "0.11" [dependencies.web-sys] version = "0.3" diff --git a/examples/keyed_list/Cargo.toml b/examples/keyed_list/Cargo.toml index 3b1b9eeb4c6..f207c4ea9c5 100644 --- a/examples/keyed_list/Cargo.toml +++ b/examples/keyed_list/Cargo.toml @@ -6,7 +6,7 @@ edition = "2021" license = "MIT OR Apache-2.0" [dependencies] -fake = "2.9.1" +fake = "2.9.2" getrandom = { version = "0.2", features = ["js"] } instant = { version = "0.1", features = ["wasm-bindgen"] } log = "0.4" diff --git a/examples/mount_point/Cargo.toml b/examples/mount_point/Cargo.toml index d33af38f6ee..225c10cbe36 100644 --- a/examples/mount_point/Cargo.toml +++ b/examples/mount_point/Cargo.toml @@ -8,7 +8,7 @@ license = "MIT OR Apache-2.0" [dependencies] wasm-bindgen = "0.2" yew = { path = "../../packages/yew", features = ["csr"] } -gloo = "0.10" +gloo = "0.11" [dependencies.web-sys] version = "0.3" diff --git a/examples/password_strength/Cargo.toml b/examples/password_strength/Cargo.toml index a61491eec51..7dbfd972904 100644 --- a/examples/password_strength/Cargo.toml +++ b/examples/password_strength/Cargo.toml @@ -7,8 +7,8 @@ edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] yew = { path = "../../packages/yew", features = ["csr"] } -zxcvbn = "2.2.2" -time = "0.3.30" +zxcvbn = "3.1.0" +time = "0.3.36" js-sys = "0.3.64" web-sys = { version = "0.3", features = ["Event","EventTarget","InputEvent"] } wasm-bindgen = "0.2" diff --git a/examples/password_strength/src/app.rs b/examples/password_strength/src/app.rs index 3ffbcfe58ae..72e4854887a 100644 --- a/examples/password_strength/src/app.rs +++ b/examples/password_strength/src/app.rs @@ -17,17 +17,16 @@ pub struct App { } impl App { - fn get_estimate(&self) -> Option { - zxcvbn(&self.password, &[]) - .ok() - .map(|estimate| estimate.score()) + fn get_estimate(&self) -> u8 { + let score = zxcvbn(&self.password, &[]).score(); + score.into() } fn redout_top_row_text(&self) -> String { if self.password.is_empty() { return "Provide a password".to_string(); } - let estimate_text = match self.get_estimate().unwrap_or(0) { + let estimate_text = match self.get_estimate() { 0 => "That's a password?", 1 => "You can do a lot better.", 2 => "Meh", diff --git a/examples/portals/Cargo.toml b/examples/portals/Cargo.toml index a7b04290582..6729e15e8c1 100644 --- a/examples/portals/Cargo.toml +++ b/examples/portals/Cargo.toml @@ -7,7 +7,7 @@ license = "MIT OR Apache-2.0" [dependencies] yew = { path = "../../packages/yew", features = ["csr"] } -gloo = "0.10" +gloo = "0.11" wasm-bindgen = "0.2" [dependencies.web-sys] diff --git a/examples/router/Cargo.toml b/examples/router/Cargo.toml index 9c21071b012..0c96778db32 100644 --- a/examples/router/Cargo.toml +++ b/examples/router/Cargo.toml @@ -6,7 +6,7 @@ license = "MIT OR Apache-2.0" [dependencies] instant = { version = "0.1", features = ["wasm-bindgen"] } -lipsum = "0.9.0" +lipsum = "0.9.1" log = "0.4" getrandom = { version = "0.2", features = ["js"] } rand = { version = "0.8", features = ["small_rng"] } @@ -15,4 +15,4 @@ yew = { path = "../../packages/yew", features = ["csr"] } yew-router = { path = "../../packages/yew-router" } serde = { version = "1.0", features = ["derive"] } once_cell = "1" -gloo = "0.10" +gloo = "0.11" diff --git a/examples/simple_ssr/Cargo.toml b/examples/simple_ssr/Cargo.toml index cb602eb4e70..b4c93299a21 100644 --- a/examples/simple_ssr/Cargo.toml +++ b/examples/simple_ssr/Cargo.toml @@ -14,11 +14,11 @@ required-features = ["ssr"] [dependencies] yew = { path = "../../packages/yew" } -reqwest = { version = "0.11.22", features = ["json"] } -serde = { version = "1.0.190", features = ["derive"] } -uuid = { version = "1.5.0", features = ["serde"] } +reqwest = { version = "0.12.5", features = ["json"] } +serde = { version = "1.0.193", features = ["derive"] } +uuid = { version = "1.10.0", features = ["serde"] } futures = "0.3" -bytes = "1.5" +bytes = "1.7" [target.'cfg(target_arch = "wasm32")'.dependencies] wasm-bindgen-futures = "0.4" @@ -26,7 +26,7 @@ wasm-logger = "0.2" log = "0.4" [target.'cfg(not(target_arch = "wasm32"))'.dependencies] -tokio = { version = "1.33.0", features = ["full"] } +tokio = { version = "1.38.1", features = ["full"] } warp = "0.3" clap = { version = "4", features = ["derive"] } diff --git a/examples/ssr_router/Cargo.toml b/examples/ssr_router/Cargo.toml index 84a23c63653..dd5908a2f78 100644 --- a/examples/ssr_router/Cargo.toml +++ b/examples/ssr_router/Cargo.toml @@ -18,19 +18,20 @@ yew = { path = "../../packages/yew" } function_router = { path = "../function_router" } log = "0.4" futures = { version = "0.3", features = ["std"], default-features = false } +hyper-util = "0.1.6" [target.'cfg(target_arch = "wasm32")'.dependencies] wasm-bindgen-futures = "0.4" wasm-logger = "0.2" [target.'cfg(not(target_arch = "wasm32"))'.dependencies] -tokio = { version = "1.33.0", features = ["full"] } -axum = "0.6" +tokio = { version = "1.38.1", features = ["full"] } +axum = "0.7" tower = { version = "0.4", features = ["make"] } -tower-http = { version = "0.3", features = ["fs"] } +tower-http = { version = "0.5", features = ["fs"] } env_logger = "0.10" clap = { version = "4", features = ["derive"] } -hyper = { version = "0.14", features = ["server", "http1"] } +hyper = { version = "1.4", features = ["server", "http1"] } [target.'cfg(unix)'.dependencies] jemallocator = "0.5" diff --git a/examples/ssr_router/src/bin/ssr_router_server.rs b/examples/ssr_router/src/bin/ssr_router_server.rs index 9ecd2c57c99..5a25266302a 100644 --- a/examples/ssr_router/src/bin/ssr_router_server.rs +++ b/examples/ssr_router/src/bin/ssr_router_server.rs @@ -1,21 +1,24 @@ use std::collections::HashMap; use std::convert::Infallible; use std::future::Future; +use std::net::SocketAddr; use std::path::PathBuf; -use axum::body::StreamBody; -use axum::error_handling::HandleError; -use axum::extract::{Query, State}; +use axum::body::Body; +use axum::extract::{Query, Request, State}; use axum::handler::HandlerWithoutStateExt; -use axum::http::{StatusCode, Uri}; +use axum::http::Uri; use axum::response::IntoResponse; use axum::routing::get; use axum::Router; use clap::Parser; use function_router::{ServerApp, ServerAppProps}; use futures::stream::{self, StreamExt}; -use hyper::server::Server; -use tower::ServiceExt; +use hyper::body::Incoming; +use hyper_util::rt::TokioIo; +use hyper_util::server; +use tokio::net::TcpListener; +use tower::Service; use tower_http::services::ServeDir; use yew::platform::Runtime; @@ -44,7 +47,7 @@ async fn render( queries, }); - StreamBody::new( + Body::from_stream( stream::once(async move { index_html_before }) .chain(renderer.render_stream()) .chain(stream::once(async move { index_html_after })) @@ -75,7 +78,7 @@ where } #[tokio::main] -async fn main() { +async fn main() -> Result<(), Box> { let exec = Executor::default(); env_logger::init(); @@ -92,30 +95,61 @@ async fn main() { let index_html_after = index_html_after.to_owned(); - let handle_error = |e| async move { - ( - StatusCode::INTERNAL_SERVER_ERROR, - format!("error occurred: {e}"), - ) - }; - - let app = Router::new().fallback_service(HandleError::new( + let app = Router::new().fallback_service( ServeDir::new(opts.dir) .append_index_html_on_directories(false) .fallback( get(render) .with_state((index_html_before.clone(), index_html_after.clone())) - .into_service() - .map_err(|err| -> std::io::Error { match err {} }), + .into_service(), ), - handle_error, - )); + ); + + let addr: SocketAddr = ([127, 0, 0, 1], 8080).into(); println!("You can view the website at: http://localhost:8080/"); - Server::bind(&"127.0.0.1:8080".parse().unwrap()) - .executor(exec) - .serve(app.into_make_service()) - .await - .unwrap(); + let listener = TcpListener::bind(addr).await?; + + // Continuously accept new connections. + loop { + // In this example we discard the remote address. See `fn serve_with_connect_info` for how + // to expose that. + let (socket, _remote_addr) = listener.accept().await.unwrap(); + + // We don't need to call `poll_ready` because `Router` is always ready. + let tower_service = app.clone(); + + let exec = exec.clone(); + // Spawn a task to handle the connection. That way we can handle multiple connections + // concurrently. + tokio::spawn(async move { + // Hyper has its own `AsyncRead` and `AsyncWrite` traits and doesn't use tokio. + // `TokioIo` converts between them. + let socket = TokioIo::new(socket); + + // Hyper also has its own `Service` trait and doesn't use tower. We can use + // `hyper::service::service_fn` to create a hyper `Service` that calls our app through + // `tower::Service::call`. + let hyper_service = hyper::service::service_fn(move |request: Request| { + // We have to clone `tower_service` because hyper's `Service` uses `&self` whereas + // tower's `Service` requires `&mut self`. + // + // We don't need to call `poll_ready` since `Router` is always ready. + tower_service.clone().call(request) + }); + + // `server::conn::auto::Builder` supports both http1 and http2. + // + // `TokioExecutor` tells hyper to use `tokio::spawn` to spawn tasks. + if let Err(err) = server::conn::auto::Builder::new(exec) + // `serve_connection_with_upgrades` is required for websockets. If you don't need + // that you can use `serve_connection` instead. + .serve_connection_with_upgrades(socket, hyper_service) + .await + { + eprintln!("failed to serve connection: {err:#}"); + } + }); + } } diff --git a/examples/suspense/Cargo.toml b/examples/suspense/Cargo.toml index 170984be100..d8ff4f9252c 100644 --- a/examples/suspense/Cargo.toml +++ b/examples/suspense/Cargo.toml @@ -8,7 +8,7 @@ license = "MIT OR Apache-2.0" [dependencies] yew = { path = "../../packages/yew", features = ["csr"] } -gloo = { version = "0.10", features = ["futures"] } +gloo = { version = "0.11", features = ["futures"] } wasm-bindgen-futures = "0.4" wasm-bindgen = "0.2" diff --git a/examples/timer/Cargo.toml b/examples/timer/Cargo.toml index d8e3545e4e4..3e7d0dd3d32 100644 --- a/examples/timer/Cargo.toml +++ b/examples/timer/Cargo.toml @@ -8,5 +8,5 @@ license = "MIT OR Apache-2.0" [dependencies] yew = { path = "../../packages/yew", features = ["csr"] } js-sys = "0.3" -gloo = "0.10" +gloo = "0.11" wasm-bindgen = "0.2" diff --git a/examples/timer_functional/Cargo.toml b/examples/timer_functional/Cargo.toml index aaa13975bf2..a546d1f296c 100644 --- a/examples/timer_functional/Cargo.toml +++ b/examples/timer_functional/Cargo.toml @@ -6,6 +6,6 @@ edition = "2021" license = "MIT OR Apache-2.0" [dependencies] -gloo = "0.10.0" +gloo = "0.11.0" js-sys = "0.3.64" yew = { path = "../../packages/yew", features = ["csr"] } diff --git a/examples/todomvc/Cargo.toml b/examples/todomvc/Cargo.toml index dfb83760194..261d90b24fb 100644 --- a/examples/todomvc/Cargo.toml +++ b/examples/todomvc/Cargo.toml @@ -6,12 +6,12 @@ edition = "2021" license = "MIT OR Apache-2.0" [dependencies] -strum = "0.25" -strum_macros = "0.25" +strum = "0.26" +strum_macros = "0.26" serde = "1" serde_derive = "1" yew = { path = "../../packages/yew", features = ["csr"] } -gloo = "0.10" +gloo = "0.11" [dependencies.web-sys] version = "0.3" diff --git a/examples/two_apps/Cargo.toml b/examples/two_apps/Cargo.toml index 01fa89c05d3..679db2b2477 100644 --- a/examples/two_apps/Cargo.toml +++ b/examples/two_apps/Cargo.toml @@ -7,4 +7,4 @@ license = "MIT OR Apache-2.0" [dependencies] yew = { path = "../../packages/yew", features = ["csr"] } -gloo = "0.10" +gloo = "0.11" diff --git a/examples/web_worker_prime/Cargo.toml b/examples/web_worker_prime/Cargo.toml index f33cdccf54e..d3f998db5f5 100644 --- a/examples/web_worker_prime/Cargo.toml +++ b/examples/web_worker_prime/Cargo.toml @@ -6,6 +6,6 @@ edition = "2021" [dependencies] yew-agent = { path = "../../packages/yew-agent" } yew = { path = "../../packages/yew", features = ["csr"] } -futures = "0.3.29" -primes = "0.3.0" -serde = { version = "1.0.190", features = ["derive"] } +futures = "0.3.30" +primes = "0.4.0" +serde = { version = "1.0.193", features = ["derive"] } diff --git a/packages/yew-agent/Cargo.toml b/packages/yew-agent/Cargo.toml index ea62ebd9b66..8848161b16f 100644 --- a/packages/yew-agent/Cargo.toml +++ b/packages/yew-agent/Cargo.toml @@ -13,11 +13,11 @@ rust-version = "1.76.0" [dependencies] yew = { version = "0.21.0", path = "../yew" } -gloo-worker = { version = "0.4", features = ["futures"] } +gloo-worker = { version = "0.5", features = ["futures"] } wasm-bindgen = "0.2" serde = { version = "1", features = ["derive"] } futures = "0.3" yew-agent-macro = { version = "0.2", path = "../yew-agent-macro" } [dev-dependencies] -serde = "1.0.190" +serde = "1.0.193" diff --git a/packages/yew-router/Cargo.toml b/packages/yew-router/Cargo.toml index 1424edcd926..056e5633a27 100644 --- a/packages/yew-router/Cargo.toml +++ b/packages/yew-router/Cargo.toml @@ -17,7 +17,7 @@ yew-router-macro = { version = "0.18.0", path = "../yew-router-macro" } wasm-bindgen = "0.2" js-sys = "0.3" -gloo = { version = "0.10", features = ["futures"] } +gloo = { version = "0.11", features = ["futures"] } route-recognizer = "0.3" serde = "1" serde_urlencoded = "0.7.1" diff --git a/packages/yew/Cargo.toml b/packages/yew/Cargo.toml index d5129857375..b63f17e01e8 100644 --- a/packages/yew/Cargo.toml +++ b/packages/yew/Cargo.toml @@ -18,7 +18,7 @@ rust-version = "1.76.0" [dependencies] console_error_panic_hook = "0.1" -gloo = "0.10" +gloo = "0.11" indexmap = { version = "2", features = ["std"] } js-sys = "0.3" slab = "0.4" @@ -40,10 +40,10 @@ wasm-bindgen-futures = "0.4" [target.'cfg(not(target_arch = "wasm32"))'.dependencies] # We still need tokio as we have docs linked to it. -tokio = { version = "1.33", features = ["rt"] } +tokio = { version = "1.38", features = ["rt"] } [dependencies.web-sys] -version = "^0.3.64" +version = "^0.3.69" features = [ "AnimationEvent", "Document", @@ -79,11 +79,11 @@ features = [ ] [target.'cfg(not(target_arch = "wasm32"))'.dev-dependencies] -tokio = { version = "1.33", features = ["full"] } +tokio = { version = "1.38", features = ["full"] } [dev-dependencies] wasm-bindgen-test = "0.3" -gloo = { version = "0.10", features = ["futures"] } +gloo = { version = "0.11", features = ["futures"] } wasm-bindgen-futures = "0.4" trybuild = "1" diff --git a/tools/benchmark-core/Cargo.toml b/tools/benchmark-core/Cargo.toml index 871323c0700..7ea6ef7341f 100644 --- a/tools/benchmark-core/Cargo.toml +++ b/tools/benchmark-core/Cargo.toml @@ -10,5 +10,5 @@ name = "vnode" harness = false [dependencies] -divan = "0.1.0" +divan = "0.1.14" yew = { path = "../../packages/yew" } diff --git a/tools/benchmark-hooks/Cargo.toml b/tools/benchmark-hooks/Cargo.toml index cf5dba99bf6..ba0cadabb7c 100644 --- a/tools/benchmark-hooks/Cargo.toml +++ b/tools/benchmark-hooks/Cargo.toml @@ -9,9 +9,9 @@ crate-type = ["cdylib"] [dependencies] rand = { version = "0.8.5", features = ["small_rng"] } -getrandom = { version = "0.2.10", features = ["js"] } -wasm-bindgen = "0.2.87" -web-sys = { version = "0.3.64", features = ["Window"]} +getrandom = { version = "0.2.14", features = ["js"] } +wasm-bindgen = "0.2.92" +web-sys = { version = "0.3.69", features = ["Window"]} yew = { version = "0.21.0", features = ["csr"], path = "../../packages/yew" } [package.metadata.wasm-pack.profile.release] diff --git a/tools/benchmark-ssr/Cargo.toml b/tools/benchmark-ssr/Cargo.toml index 4b6ad7e0e4d..bc0afa2258a 100644 --- a/tools/benchmark-ssr/Cargo.toml +++ b/tools/benchmark-ssr/Cargo.toml @@ -8,12 +8,12 @@ edition = "2021" [dependencies] yew = { path = "../../packages/yew", features = ["ssr"] } function_router = { path = "../../examples/function_router" } -tokio = { version = "1.33", features = ["full"] } -average = "0.14.1" -tabled = "0.14.0" -indicatif = "0.17.7" -serde = { version = "1.0.190", features = ["derive"] } -serde_json = "1.0.107" +tokio = { version = "1.38", features = ["full"] } +average = "0.15.1" +tabled = "0.15.0" +indicatif = "0.17.8" +serde = { version = "1.0.193", features = ["derive"] } +serde_json = "1.0.109" clap = { version = "4", features = ["derive"] } [target.'cfg(unix)'.dependencies] diff --git a/tools/benchmark-struct/Cargo.toml b/tools/benchmark-struct/Cargo.toml index a1db7065461..fc8475ef5b3 100644 --- a/tools/benchmark-struct/Cargo.toml +++ b/tools/benchmark-struct/Cargo.toml @@ -9,9 +9,9 @@ crate-type = ["cdylib"] [dependencies] rand = { version = "0.8.5", features = ["small_rng"] } -getrandom = { version = "0.2.10", features = ["js"] } -wasm-bindgen = "0.2.87" -web-sys = { version = "0.3.64", features = ["Window"]} +getrandom = { version = "0.2.14", features = ["js"] } +wasm-bindgen = "0.2.92" +web-sys = { version = "0.3.69", features = ["Window"]} yew = { version = "0.21.0", features = ["csr"], path = "../../packages/yew" } [package.metadata.wasm-pack.profile.release] diff --git a/tools/changelog/Cargo.toml b/tools/changelog/Cargo.toml index a5bc3bb9357..e84273ba009 100644 --- a/tools/changelog/Cargo.toml +++ b/tools/changelog/Cargo.toml @@ -9,11 +9,11 @@ edition = "2021" [dependencies] anyhow = "1" chrono = "0.4" -git2 = "0.18" +git2 = "0.19" regex = "1" -reqwest = { version = "0.11", features = ["blocking", "json"] } +reqwest = { version = "0.12", features = ["blocking", "json"] } serde = { version = "1", features = ["derive"] } -strum = { version = "0.25", features = ["derive"] } +strum = { version = "0.26", features = ["derive"] } clap = { version = "4", features = ["derive"] } semver = "1.0" once_cell = "1" diff --git a/tools/website-test/Cargo.toml b/tools/website-test/Cargo.toml index a930210e718..1d5f0786063 100644 --- a/tools/website-test/Cargo.toml +++ b/tools/website-test/Cargo.toml @@ -11,7 +11,7 @@ yew-agent = { path = "../../packages/yew-agent/" } [dev-dependencies] derive_more = "0.99" -gloo = "0.10" +gloo = "0.11" js-sys = "0.3" wasm-bindgen = "0.2" wasm-bindgen-futures = "0.4" @@ -19,7 +19,7 @@ weblog = "0.3.0" yew = { path = "../../packages/yew/", features = ["ssr", "csr"] } yew-autoprops = "0.4.1" yew-router = { path = "../../packages/yew-router/" } -tokio = { version = "1.33.0", features = ["rt", "macros"] } +tokio = { version = "1.38.1", features = ["rt", "macros"] } [dev-dependencies.web-sys] version = "0.3" From 73d519e675277db92a7f892b946496c83e38c6d2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 4 Aug 2024 19:18:16 +0500 Subject: [PATCH 20/44] Bump openssl from 0.10.60 to 0.10.66 (#3690) --- Cargo.lock | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 065467885c6..66ee46d0e3f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2255,9 +2255,9 @@ checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" [[package]] name = "openssl" -version = "0.10.60" +version = "0.10.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79a4c6c3a2b158f7f8f2a2fc5a969fa3a068df6fc9dbb4a43845436e3af7c800" +checksum = "9529f4786b70a3e8c61e11179af17ab6188ad8d0ded78c5529441ed39d4bd9c1" dependencies = [ "bitflags 2.4.0", "cfg-if", @@ -2287,9 +2287,9 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "openssl-sys" -version = "0.9.96" +version = "0.9.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3812c071ba60da8b5677cc12bcb1d42989a65553772897a7e0355545a819838f" +checksum = "7f9e8deee91df40a943c71b917e5874b951d32a802526c85721ce3b776c929d6" dependencies = [ "cc", "libc", From 387141817467291af1b5e13dd514fcb3ee542351 Mon Sep 17 00:00:00 2001 From: WorldSEnder Date: Thu, 22 Aug 2024 17:04:04 +0200 Subject: [PATCH 21/44] Modernize github workflows (#3711) * modernize github workflows this mainly fixes some inconsistencies in style, outdated or wrong comments and action version - replace Legit-Labs/action-download-artifact with actions/download-artifact - fix Swatinem/rust-cache arguments - fix benchmark transformations - expand feature soundness lints - wording and capitalization in comments * fix no_run on crate level doc * fix some more small issues --- .github/workflows/benchmark-core.yml | 23 +++------ .github/workflows/benchmark-ssr.yml | 19 +++---- .github/workflows/benchmark.yml | 50 ++++++++++-------- .github/workflows/build-api-docs.yml | 6 +-- .github/workflows/build-website.yml | 6 +-- .github/workflows/clippy.yml | 24 ++++----- .github/workflows/main-checks.yml | 10 +++- .github/workflows/post-benchmark-core.yml | 22 +++----- .github/workflows/post-benchmark-ssr.yml | 20 +++----- .github/workflows/post-benchmark.yml | 10 ++-- .github/workflows/post-size-cmp.yml | 24 ++++----- .github/workflows/publish-api-docs.yml | 27 ++++------ .github/workflows/publish-examples.yml | 2 + .github/workflows/publish-website.yml | 27 ++++------ .github/workflows/size-cmp.yml | 3 +- .github/workflows/test-website.yml | 8 +-- .gitignore | 1 + Cargo.toml | 1 - ci/build-examples.sh | 8 +-- ci/feature-soundness-release.sh | 30 +++++------ ci/feature-soundness.sh | 30 +++++------ ci/install-wasm-bindgen-cli.sh | 1 + packages/yew/src/lib.rs | 4 +- packages/yew/src/renderer.rs | 3 ++ tools/process-benchmark-results/src/main.rs | 56 +++++++++++++++++---- 25 files changed, 200 insertions(+), 215 deletions(-) diff --git a/.github/workflows/benchmark-core.yml b/.github/workflows/benchmark-core.yml index 5e7d0a943e4..94d6e6f6c54 100644 --- a/.github/workflows/benchmark-core.yml +++ b/.github/workflows/benchmark-core.yml @@ -1,4 +1,3 @@ ---- name: Benchmark - core on: @@ -32,29 +31,21 @@ jobs: with: toolchain: stable - - name: Restore Rust cache for master + - name: Restore Rust cache for yew packages uses: Swatinem/rust-cache@v2 with: - working-directory: yew-master - key: master - - - name: Restore Rust cache for current pull request - uses: Swatinem/rust-cache@v2 - with: - working-directory: current-pr - key: pr + shared-key: yew-packages + workspaces: | + yew-master + current-pr - name: Run pull request benchmark - run: cargo bench -q > ../output.log working-directory: current-pr/tools/benchmark-core + run: cargo bench -q > ../output.log - name: Run master benchmark - run: cargo bench -q > ../output.log - continue-on-error: true working-directory: yew-master/tools/benchmark-core - - - name: Make sure master's output log exists - run: touch yew-master/tools/output.log + run: cargo bench -q > ../output.log - name: Write Pull Request ID run: | diff --git a/.github/workflows/benchmark-ssr.yml b/.github/workflows/benchmark-ssr.yml index c470077adb6..536ccc71387 100644 --- a/.github/workflows/benchmark-ssr.yml +++ b/.github/workflows/benchmark-ssr.yml @@ -1,4 +1,3 @@ ---- name: Benchmark - SSR on: @@ -37,25 +36,21 @@ jobs: toolchain: stable targets: wasm32-unknown-unknown - - name: Restore Rust cache for master + - name: Restore Rust cache for yew packages uses: Swatinem/rust-cache@v2 with: - working-directory: yew-master - key: master - - - name: Restore Rust cache for current pull request - uses: Swatinem/rust-cache@v2 - with: - working-directory: current-pr - key: pr + shared-key: yew-packages + workspaces: | + yew-master + current-pr - name: Run pull request benchmark - run: cargo run --profile=bench -- --output-path ../output.json working-directory: current-pr/tools/benchmark-ssr + run: cargo run --profile=bench -- --output-path ../output.json - name: Run master benchmark - run: cargo run --profile=bench -- --output-path ../output.json working-directory: yew-master/tools/benchmark-ssr + run: cargo run --profile=bench -- --output-path ../output.json - name: Write Pull Request ID run: | diff --git a/.github/workflows/benchmark.yml b/.github/workflows/benchmark.yml index 3eccceb4a52..162d76d921b 100644 --- a/.github/workflows/benchmark.yml +++ b/.github/workflows/benchmark.yml @@ -11,11 +11,11 @@ on: - "website/**" types: [labeled, synchronize, opened, reopened] -permissions: - # deployments permission to deploy GitHub pages website - deployments: write - # contents permission to update benchmark contents in gh-pages branch - contents: write +# Cancel outstanding benchmarks on pull requests +# https://docs.github.com/en/actions/writing-workflows/workflow-syntax-for-github-actions#example-using-a-fallback-value +concurrency: + group: ${{ github.head_ref || github.run_id }} + cancel-in-progress: true jobs: benchmark: @@ -37,31 +37,37 @@ jobs: toolchain: stable targets: wasm32-unknown-unknown - - uses: jetli/wasm-pack-action@v0.4.0 - with: - version: "latest" + - name: Setup wasm-pack + uses: jetli/wasm-pack-action@v0.4.0 - name: Setup Node uses: actions/setup-node@v4 with: - node-version: 18 + node-version: ">=18" cache: "npm" cache-dependency-path: js-framework-benchmark/package-lock.json - - uses: Swatinem/rust-cache@v2 + - name: Restore Rust cache for yew packages + uses: Swatinem/rust-cache@v2 + with: + shared-key: yew-packages + workspaces: | + yew + - name: Setup chrome + id: setup-chrome uses: browser-actions/setup-chrome@v1 with: install-chromedriver: true - - name: setup js-framework-benchmark + - name: Setup js-framework-benchmark working-directory: js-framework-benchmark run: | npm ci npm run install-server npm run install-webdriver-ts - - name: setup benchmark-struct benchmark + - name: Setup benchmark-struct benchmark run: | ls -lauh rm *.js @@ -69,7 +75,7 @@ jobs: echo "STRUCT_BUILD_DIR=$PWD" >> $GITHUB_ENV working-directory: js-framework-benchmark/frameworks/keyed/yew/bundled-dist/ - - name: build benchmark-struct app + - name: Build benchmark-struct app working-directory: yew/tools/benchmark-struct run: | wasm-pack build \ @@ -79,11 +85,11 @@ jobs: --out-name js-framework-benchmark-yew \ --out-dir $STRUCT_BUILD_DIR - - name: show built benchmark-struct benchmark files + - name: Show built benchmark-struct benchmark files run: | ls -lauh js-framework-benchmark/frameworks/keyed/yew/bundled-dist/ - - name: setup yew-hooks benchmark + - name: Setup yew-hooks benchmark run: | ls -lauh rm *.js @@ -91,7 +97,7 @@ jobs: echo "HOOKS_BUILD_DIR=$PWD" >> $GITHUB_ENV working-directory: js-framework-benchmark/frameworks/keyed/yew-hooks/bundled-dist/ - - name: build benchmark-hooks app + - name: Build benchmark-hooks app working-directory: yew/tools/benchmark-hooks run: | wasm-pack build \ @@ -101,25 +107,25 @@ jobs: --out-name js-framework-benchmark-yew-hooks \ --out-dir $HOOKS_BUILD_DIR - - name: show built benchmark-hooks benchmark files + - name: Show built benchmark-hooks benchmark files run: | ls -lauh js-framework-benchmark/frameworks/keyed/yew-hooks/bundled-dist/ - - name: run js-framework-benchmark server + - name: Run js-framework-benchmark server working-directory: js-framework-benchmark run: | npm start & sleep 5 - - name: js-framework-benchmark/webdriver-ts npm run bench + - name: Run js-framework-benchmark/webdriver-ts npm run bench working-directory: js-framework-benchmark/webdriver-ts - run: xvfb-run npm run bench -- --framework keyed/yew keyed/yew-hooks --runner playwright + run: xvfb-run npm run bench -- --framework keyed/yew keyed/yew-hooks --runner playwright --chromeBinary "${{ steps.setup-chrome.outputs.chrome-path }}" - - name: transform results to be fit for display benchmark-action/github-action-benchmark@v1 + - name: Transform results to be fit for display benchmark-action/github-action-benchmark@v1 run: | mkdir artifacts/ jq -s . js-framework-benchmark/webdriver-ts/results/*.json | cargo run --manifest-path yew/Cargo.toml --release -p process-benchmark-results > artifacts/results.json - echo "$EVENT_INFO" > artifacts/PR_INFO + echo "$EVENT_INFO" > artifacts/.PR_INFO env: EVENT_INFO: ${{ toJSON(github.event) }} diff --git a/.github/workflows/build-api-docs.yml b/.github/workflows/build-api-docs.yml index 62085f2e875..b3bdea488a7 100644 --- a/.github/workflows/build-api-docs.yml +++ b/.github/workflows/build-api-docs.yml @@ -16,8 +16,6 @@ on: jobs: build: runs-on: ubuntu-latest - env: - PR_INFO_FILE: ".PR_INFO" steps: - uses: actions/checkout@v4 @@ -55,12 +53,12 @@ jobs: - if: github.event_name == 'pull_request' name: Build pr info run: | - echo "${{ github.event.number }}" > $PR_INFO_FILE + echo "${{ github.event.number }}" > .PR_INFO - if: github.event_name == 'pull_request' name: Upload pr info uses: actions/upload-artifact@v4 with: name: pr-info - path: "${{ env.PR_INFO_FILE }}" + path: .PR_INFO retention-days: 1 diff --git a/.github/workflows/build-website.yml b/.github/workflows/build-website.yml index 6cc7c7a4454..2aead565a87 100644 --- a/.github/workflows/build-website.yml +++ b/.github/workflows/build-website.yml @@ -17,8 +17,6 @@ jobs: build: name: Build Website runs-on: ubuntu-latest - env: - PR_INFO_FILE: ".PR_INFO" steps: - uses: actions/checkout@v4 @@ -57,12 +55,12 @@ jobs: - if: github.event_name == 'pull_request' name: Build pr info run: | - echo "${{ github.event.number }}" > $PR_INFO_FILE + echo "${{ github.event.number }}" > .PR_INFO - if: github.event_name == 'pull_request' name: Upload pr info uses: actions/upload-artifact@v4 with: name: pr-info - path: "${{ env.PR_INFO_FILE }}" + path: .PR_INFO retention-days: 1 diff --git a/.github/workflows/clippy.yml b/.github/workflows/clippy.yml index f8abed21053..6afd5bc7590 100644 --- a/.github/workflows/clippy.yml +++ b/.github/workflows/clippy.yml @@ -16,6 +16,9 @@ jobs: feature-soundness: name: Feature Soundness runs-on: ubuntu-latest + # if normal clippy doesn't succeed, do not try to lint feature soundness + needs: clippy + strategy: fail-fast: false matrix: @@ -32,27 +35,16 @@ jobs: components: clippy - uses: Swatinem/rust-cache@v2 + with: + shared-key: clippy - name: Lint feature soundness if: matrix.profile == 'dev' - run: bash ../../ci/feature-soundness.sh - working-directory: packages/yew + run: bash ./ci/feature-soundness.sh - name: Lint feature soundness if: matrix.profile == 'release' - run: bash ../../ci/feature-soundness-release.sh - working-directory: packages/yew - - - name: Run release clippy - if: matrix.profile == 'release' - run: | - ls packages | xargs -I {} \ - cargo clippy \ - -p {} \ - --all-targets \ - --all-features \ - --workspace \ - -- -D warnings + run: bash ./ci/feature-soundness-release.sh clippy: name: Clippy Workspace @@ -73,6 +65,8 @@ jobs: components: clippy - uses: Swatinem/rust-cache@v2 + with: + shared-key: clippy - name: Run clippy run: | diff --git a/.github/workflows/main-checks.yml b/.github/workflows/main-checks.yml index e825c3b143e..a1046bb97af 100644 --- a/.github/workflows/main-checks.yml +++ b/.github/workflows/main-checks.yml @@ -28,6 +28,8 @@ jobs: steps: - uses: actions/checkout@v4 - uses: Swatinem/rust-cache@v2 + with: + shared-key: yew-packages # for wasm-bindgen-cli, always use stable rust - name: Setup toolchain @@ -74,6 +76,8 @@ jobs: - uses: actions/checkout@v4 - uses: Swatinem/rust-cache@v2 + with: + shared-key: yew-packages # for wasm-bindgen-cli, always use stable rust - name: Setup toolchain @@ -122,8 +126,6 @@ jobs: steps: - uses: actions/checkout@v4 - with: - fetch-depth: 0 - name: Setup toolchain uses: dtolnay/rust-toolchain@master @@ -131,6 +133,8 @@ jobs: toolchain: ${{ matrix.toolchain }} - uses: Swatinem/rust-cache@v2 + with: + shared-key: yew-packages - name: Run native tests env: @@ -159,6 +163,8 @@ jobs: toolchain: nightly - uses: Swatinem/rust-cache@v2 + with: + shared-key: yew-packages - name: Run tests env: diff --git a/.github/workflows/post-benchmark-core.yml b/.github/workflows/post-benchmark-core.yml index 5a54eba0471..5f2b563ca3c 100644 --- a/.github/workflows/post-benchmark-core.yml +++ b/.github/workflows/post-benchmark-core.yml @@ -1,4 +1,3 @@ ---- name: Post Comment for Benchmark - core on: @@ -9,8 +8,8 @@ on: jobs: post-benchmark-core: - if: github.event.workflow_run.event == 'pull_request' - name: Post Comment on Pull Request + name: Post Benchmark Comment on Pull Request + if: github.event.workflow_run.conclusion == 'success' && github.event.workflow_run.event == 'pull_request' runs-on: ubuntu-latest steps: @@ -18,13 +17,12 @@ jobs: uses: actions/checkout@v4 - name: Download Artifact - uses: Legit-Labs/action-download-artifact@v2 + uses: actions/download-artifact@v4 with: - github_token: "${{ secrets.GITHUB_TOKEN }}" - workflow: benchmark-core.yml - run_id: ${{ github.event.workflow_run.id }} + github-token: "${{ secrets.GITHUB_TOKEN }}" + run-id: ${{ github.event.workflow_run.id }} name: benchmark-core - path: "benchmark-core/" + path: benchmark-core/ - name: Make pull request comment run: | @@ -45,13 +43,7 @@ jobs: EOF - name: Read Pull Request ID - run: | - PR_NUMBER=$(cat "benchmark-core/.PR_NUMBER") - if ! [[ "$PR_NUMBER" =~ ^[0-9]+$ ]]; then - echo "pr number invalid" - exit 1 - fi - echo "PR_NUMBER=$PR_NUMBER" >> $GITHUB_ENV + run: echo "PR_NUMBER=$(cat benchmark-core/.PR_NUMBER)" >> $GITHUB_ENV - name: Post Comment uses: actions/github-script@v6 diff --git a/.github/workflows/post-benchmark-ssr.yml b/.github/workflows/post-benchmark-ssr.yml index 2e874e10547..6cddabd8819 100644 --- a/.github/workflows/post-benchmark-ssr.yml +++ b/.github/workflows/post-benchmark-ssr.yml @@ -1,4 +1,3 @@ ---- name: Post Comment for Benchmark - SSR on: @@ -9,8 +8,8 @@ on: jobs: post-benchmark-ssr: - if: github.event.workflow_run.event == 'pull_request' name: Post Comment on Pull Request + if: github.event.workflow_run.conclusion == 'success' && github.event.workflow_run.event == 'pull_request' runs-on: ubuntu-latest steps: @@ -18,25 +17,18 @@ jobs: uses: actions/checkout@v4 - name: Download Artifact - uses: Legit-Labs/action-download-artifact@v2 + uses: actions/download-artifact@v4 with: - github_token: "${{ secrets.GITHUB_TOKEN }}" - workflow: benchmark-ssr.yml - run_id: ${{ github.event.workflow_run.id }} + github-token: "${{ secrets.GITHUB_TOKEN }}" + run-id: ${{ github.event.workflow_run.id }} name: benchmark-ssr - path: "benchmark-ssr/" + path: benchmark-ssr/ - name: Make pull request comment run: python3 ci/make_benchmark_ssr_cmt.py - name: Read Pull Request ID - run: | - PR_NUMBER=$(cat "benchmark-ssr/.PR_NUMBER") - if ! [[ "$PR_NUMBER" =~ ^[0-9]+$ ]]; then - echo "pr number invalid" - exit 1 - fi - echo "PR_NUMBER=$PR_NUMBER" >> $GITHUB_ENV + run: echo "PR_NUMBER=$(cat benchmark-ssr/.PR_NUMBER)" >> $GITHUB_ENV - name: Post Comment uses: actions/github-script@v6 diff --git a/.github/workflows/post-benchmark.yml b/.github/workflows/post-benchmark.yml index fcbacf90c0a..d8e0aeda1e1 100644 --- a/.github/workflows/post-benchmark.yml +++ b/.github/workflows/post-benchmark.yml @@ -8,18 +8,18 @@ on: jobs: post-benchmark-results: - runs-on: ubuntu-latest if: github.event.workflow_run.conclusion == 'success' + runs-on: ubuntu-latest steps: # Checkout repo for the github-action-benchmark action - uses: actions/checkout@v4 - name: Download result artifacts - uses: Legit-Labs/action-download-artifact@v2 + uses: actions/download-artifact@v4 with: - workflow: benchmark.yml - run_id: ${{ github.event.workflow_run.id }} + github-token: "${{ secrets.GITHUB_TOKEN }}" + run-id: ${{ github.event.workflow_run.id }} name: results path: ./artifacts @@ -27,7 +27,7 @@ jobs: uses: mathiasvr/command-output@v1 id: test-pr with: - run: cat artifacts/PR_INFO + run: cat artifacts/.PR_INFO # gh-pages branch is updated and pushed automatically with extracted benchmark data - name: Store benchmark result diff --git a/.github/workflows/post-size-cmp.yml b/.github/workflows/post-size-cmp.yml index 1e767b7a92e..ddd3f051018 100644 --- a/.github/workflows/post-size-cmp.yml +++ b/.github/workflows/post-size-cmp.yml @@ -1,4 +1,3 @@ ---- name: Post Comment for Size Comparison on: @@ -9,30 +8,27 @@ on: jobs: post-size-cmp: - name: Post Comment on Pull Request + name: Post Size Comment on Pull Request + if: github.event.workflow_run.conclusion == 'success' && github.event.workflow_run.event == 'pull_request' runs-on: ubuntu-latest steps: - name: Download Repository uses: actions/checkout@v4 - - if: github.event.workflow_run.event == 'pull_request' - name: Download Artifact (master) - uses: Legit-Labs/action-download-artifact@v2 + - name: Download Artifact (master) + uses: actions/download-artifact@v4 with: - github_token: "${{ secrets.GITHUB_TOKEN }}" - workflow: size-cmp.yml - run_id: ${{ github.event.workflow_run.id }} + github-token: "${{ secrets.GITHUB_TOKEN }}" + run-id: ${{ github.event.workflow_run.id }} name: size-cmp-master-info path: "size-cmp-master-info/" - - if: github.event.workflow_run.event == 'pull_request' - name: Download Artifact (PR) - uses: Legit-Labs/action-download-artifact@v2 + - name: Download Artifact (PR) + uses: actions/download-artifact@v4 with: - github_token: "${{ secrets.GITHUB_TOKEN }}" - workflow: size-cmp.yml - run_id: ${{ github.event.workflow_run.id }} + github-token: "${{ secrets.GITHUB_TOKEN }}" + run-id: ${{ github.event.workflow_run.id }} name: size-cmp-pr-info path: "size-cmp-pr-info/" diff --git a/.github/workflows/publish-api-docs.yml b/.github/workflows/publish-api-docs.yml index 38c8822a348..a889948aee4 100644 --- a/.github/workflows/publish-api-docs.yml +++ b/.github/workflows/publish-api-docs.yml @@ -7,41 +7,34 @@ on: jobs: publish: + if: github.event.workflow_run.conclusion == 'success' runs-on: ubuntu-latest - env: - PR_INFO_FILE: ".PR_INFO" - steps: - - if: github.event.workflow_run.conclusion != 'success' - name: Abort if build failed - run: | - echo "build failed" - exit 1 + steps: # need to checkout to get "firebase.json", ".firebaserc" - uses: actions/checkout@v4 - name: Download build artifact - uses: dawidd6/action-download-artifact@v2 + uses: actions/download-artifact@v4 with: - github_token: "${{ secrets.GITHUB_TOKEN }}" - workflow: build-api-docs.yml - run_id: ${{ github.event.workflow_run.id }} + github-token: "${{ secrets.GITHUB_TOKEN }}" + run-id: ${{ github.event.workflow_run.id }} name: api-docs path: api-docs/ - if: github.event.workflow_run.event == 'pull_request' name: Download pr info - uses: dawidd6/action-download-artifact@v2 + uses: actions/download-artifact@v4 with: - github_token: "${{ secrets.GITHUB_TOKEN }}" - workflow: build-api-docs.yml - run_id: ${{ github.event.workflow_run.id }} + github-token: "${{ secrets.GITHUB_TOKEN }}" + run-id: ${{ github.event.workflow_run.id }} name: pr-info + path: artifacts - if: github.event.workflow_run.event == 'pull_request' name: Apply pull request environment run: | - pr_number=$(cat "$PR_INFO_FILE") + pr_number=$(cat "artifacts/.PR_INFO") if ! [[ "$pr_number" =~ ^[0-9]+$ ]]; then echo "pr number invalid" exit 1 diff --git a/.github/workflows/publish-examples.yml b/.github/workflows/publish-examples.yml index 6a2219188fc..d800a9fa026 100644 --- a/.github/workflows/publish-examples.yml +++ b/.github/workflows/publish-examples.yml @@ -25,6 +25,8 @@ jobs: components: rust-src - uses: Swatinem/rust-cache@v2 + with: + shared-key: publish-examples - uses: jetli/trunk-action@v0.4.0 with: diff --git a/.github/workflows/publish-website.yml b/.github/workflows/publish-website.yml index 42d897528f1..a12f627f30d 100644 --- a/.github/workflows/publish-website.yml +++ b/.github/workflows/publish-website.yml @@ -7,41 +7,34 @@ on: jobs: publish: + if: github.event.workflow_run.conclusion == 'success' runs-on: ubuntu-latest - env: - PR_INFO_FILE: ".PR_INFO" + steps: - - if: github.event.workflow_run.conclusion != 'success' - name: Abort if build failed - run: | - echo "build failed" - exit 1 # need to checkout to get "firebase.json", ".firebaserc" - uses: actions/checkout@v4 - name: Download build artifact - uses: Legit-Labs/action-download-artifact@v2 + uses: actions/download-artifact@v4 with: - github_token: "${{ secrets.GITHUB_TOKEN }}" - workflow: build-website.yml - run_id: ${{ github.event.workflow_run.id }} + github-token: "${{ secrets.GITHUB_TOKEN }}" + run-id: ${{ github.event.workflow_run.id }} name: website path: website/build - if: github.event.workflow_run.event == 'pull_request' name: Download pr info - uses: Legit-Labs/action-download-artifact@v2 + uses: actions/download-artifact@v4 with: - github_token: "${{ secrets.GITHUB_TOKEN }}" - workflow: build-website.yml - run_id: ${{ github.event.workflow_run.id }} + github-token: "${{ secrets.GITHUB_TOKEN }}" + run-id: ${{ github.event.workflow_run.id }} name: pr-info path: artifacts - if: github.event.workflow_run.event == 'pull_request' name: Apply pull request environment run: | - pr_number=$(cat "artifacts/$PR_INFO_FILE") + pr_number=$(cat "artifacts/.PR_INFO") if ! [[ "$pr_number" =~ ^[0-9]+$ ]]; then echo "pr number invalid" exit 1 @@ -49,10 +42,12 @@ jobs: echo "PR_NUMBER=$pr_number" >> $GITHUB_ENV echo "PR_BRANCH=${{ github.event.workflow_run.head_branch }}" >> $GITHUB_ENV echo "COMMIT_SHA=${{ github.event.workflow_run.head_sha }}" >> $GITHUB_ENV + - if: github.event.workflow_run.event == 'push' name: Apply push environment run: | echo "CHANNEL_ID=live" >> $GITHUB_ENV + - name: Deploy to Firebase uses: siku2/action-hosting-deploy@v1 with: diff --git a/.github/workflows/size-cmp.yml b/.github/workflows/size-cmp.yml index efaa041d6ca..cc507e3286e 100644 --- a/.github/workflows/size-cmp.yml +++ b/.github/workflows/size-cmp.yml @@ -1,4 +1,3 @@ ---- name: Size Comparison on: @@ -46,6 +45,8 @@ jobs: - name: Restore Rust cache for master uses: Swatinem/rust-cache@v2 + with: + shared-key: size-compare - name: Setup Trunk uses: jetli/trunk-action@v0.4.0 diff --git a/.github/workflows/test-website.yml b/.github/workflows/test-website.yml index 667fb0074ed..ebafcb6f8b0 100644 --- a/.github/workflows/test-website.yml +++ b/.github/workflows/test-website.yml @@ -1,4 +1,3 @@ ---- name: "Test Website" on: @@ -17,11 +16,6 @@ jobs: steps: - uses: actions/checkout@v4 - - name: Setup toolchain - uses: dtolnay/rust-toolchain@master - with: - toolchain: stable - # for wasm-bindgen-cli, always use stable rust - name: Setup toolchain uses: dtolnay/rust-toolchain@master @@ -39,6 +33,8 @@ jobs: targets: wasm32-unknown-unknown - uses: Swatinem/rust-cache@v2 + with: + shared-key: yew-packages - uses: browser-actions/setup-geckodriver@latest with: diff --git a/.gitignore b/.gitignore index ff4c7afbdf4..bec5f8c71aa 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ target/ +dist/ # backup files generated by rustfmt **/*.rs.bk diff --git a/Cargo.toml b/Cargo.toml index e68496c32e4..1c5626cc75d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -18,6 +18,5 @@ opt-level = "z" [profile.bench] lto = true codegen-units = 1 -panic = "abort" opt-level = 3 diff --git a/ci/build-examples.sh b/ci/build-examples.sh index 69a0029d14b..843b1870ebc 100755 --- a/ci/build-examples.sh +++ b/ci/build-examples.sh @@ -1,3 +1,4 @@ +#!/usr/bin/env bash # Must be run from root of the repo: # yew $ ./ci/build-examples.sh @@ -25,13 +26,6 @@ for path in examples/*; do cd "$path" dist_dir="$output/$example" export RUSTFLAGS="--cfg nightly_yew" - if [[ "$example" == "boids" || "$example" == "password_strength" ]]; then - # works around issue rust-lang/rust#96486 - # where the compiler forgets to link some symbols connected to const_eval - # only an issue on nightly and with build-std enabled which we do for code size - # this deoptimizes only the examples that otherwise fail to build - export RUSTFLAGS="-Zshare-generics=n -Clto=thin $RUSTFLAGS" - fi trunk build --release --dist "$dist_dir" --public-url "$PUBLIC_URL_PREFIX/$example" diff --git a/ci/feature-soundness-release.sh b/ci/feature-soundness-release.sh index 0fd501fba3c..19387aaeabb 100755 --- a/ci/feature-soundness-release.sh +++ b/ci/feature-soundness-release.sh @@ -2,19 +2,19 @@ set -xe # You can extract the feature list with the following command: -# cargo hack check --feature-powerset --exclude-features nightly +# cargo hack -p yew -p yew-agent -p yew-router --feature-powerset --print-command-list clippy --release -- -D warnings -# You need to run this script in packages/yew - -cargo clippy --release --no-default-features -- --deny=warnings -cargo clippy --release --no-default-features --features csr -- --deny=warnings -cargo clippy --release --no-default-features --features default -- --deny=warnings -cargo clippy --release --no-default-features --features csr,default -- --deny=warnings -cargo clippy --release --no-default-features --features hydration -- --deny=warnings -cargo clippy --release --no-default-features --features default,hydration -- --deny=warnings -cargo clippy --release --no-default-features --features ssr -- --deny=warnings -cargo clippy --release --no-default-features --features csr,ssr -- --deny=warnings -cargo clippy --release --no-default-features --features default,ssr -- --deny=warnings -cargo clippy --release --no-default-features --features csr,default,ssr -- --deny=warnings -cargo clippy --release --no-default-features --features hydration,ssr -- --deny=warnings -cargo clippy --release --no-default-features --features default,hydration,ssr -- --deny=warnings +cargo clippy --release --manifest-path packages/yew/Cargo.toml --no-default-features -- -D warnings +cargo clippy --release --manifest-path packages/yew/Cargo.toml --no-default-features --features default,hydration,ssr -- -D warnings +cargo clippy --release --manifest-path packages/yew/Cargo.toml --no-default-features --features csr -- -D warnings +cargo clippy --release --manifest-path packages/yew/Cargo.toml --no-default-features --features default -- -D warnings +cargo clippy --release --manifest-path packages/yew/Cargo.toml --no-default-features --features csr,default -- -D warnings +cargo clippy --release --manifest-path packages/yew/Cargo.toml --no-default-features --features hydration -- -D warnings +cargo clippy --release --manifest-path packages/yew/Cargo.toml --no-default-features --features default,hydration -- -D warnings +cargo clippy --release --manifest-path packages/yew/Cargo.toml --no-default-features --features ssr -- -D warnings +cargo clippy --release --manifest-path packages/yew/Cargo.toml --no-default-features --features csr,ssr -- -D warnings +cargo clippy --release --manifest-path packages/yew/Cargo.toml --no-default-features --features default,ssr -- -D warnings +cargo clippy --release --manifest-path packages/yew/Cargo.toml --no-default-features --features csr,default,ssr -- -D warnings +cargo clippy --release --manifest-path packages/yew/Cargo.toml --no-default-features --features hydration,ssr -- -D warnings +cargo clippy --release --manifest-path packages/yew-agent/Cargo.toml -- -D warnings +cargo clippy --release --manifest-path packages/yew-router/Cargo.toml -- -D warnings diff --git a/ci/feature-soundness.sh b/ci/feature-soundness.sh index b23b2592f73..e4067a531fe 100755 --- a/ci/feature-soundness.sh +++ b/ci/feature-soundness.sh @@ -2,19 +2,19 @@ set -xe # You can extract the feature list with the following command: -# cargo hack check --feature-powerset --exclude-features nightly +# cargo hack -p yew -p yew-agent -p yew-router --feature-powerset --print-command-list clippy -- -D warnings -# You need to run this script in packages/yew - -cargo clippy --no-default-features -- --deny=warnings -cargo clippy --no-default-features --features csr -- --deny=warnings -cargo clippy --no-default-features --features default -- --deny=warnings -cargo clippy --no-default-features --features csr,default -- --deny=warnings -cargo clippy --no-default-features --features hydration -- --deny=warnings -cargo clippy --no-default-features --features default,hydration -- --deny=warnings -cargo clippy --no-default-features --features ssr -- --deny=warnings -cargo clippy --no-default-features --features csr,ssr -- --deny=warnings -cargo clippy --no-default-features --features default,ssr -- --deny=warnings -cargo clippy --no-default-features --features csr,default,ssr -- --deny=warnings -cargo clippy --no-default-features --features hydration,ssr -- --deny=warnings -cargo clippy --no-default-features --features default,hydration,ssr -- --deny=warnings +cargo clippy --manifest-path packages/yew/Cargo.toml --no-default-features -- -D warnings +cargo clippy --manifest-path packages/yew/Cargo.toml --no-default-features --features default,hydration,ssr -- -D warnings +cargo clippy --manifest-path packages/yew/Cargo.toml --no-default-features --features csr -- -D warnings +cargo clippy --manifest-path packages/yew/Cargo.toml --no-default-features --features default -- -D warnings +cargo clippy --manifest-path packages/yew/Cargo.toml --no-default-features --features csr,default -- -D warnings +cargo clippy --manifest-path packages/yew/Cargo.toml --no-default-features --features hydration -- -D warnings +cargo clippy --manifest-path packages/yew/Cargo.toml --no-default-features --features default,hydration -- -D warnings +cargo clippy --manifest-path packages/yew/Cargo.toml --no-default-features --features ssr -- -D warnings +cargo clippy --manifest-path packages/yew/Cargo.toml --no-default-features --features csr,ssr -- -D warnings +cargo clippy --manifest-path packages/yew/Cargo.toml --no-default-features --features default,ssr -- -D warnings +cargo clippy --manifest-path packages/yew/Cargo.toml --no-default-features --features csr,default,ssr -- -D warnings +cargo clippy --manifest-path packages/yew/Cargo.toml --no-default-features --features hydration,ssr -- -D warnings +cargo clippy --manifest-path packages/yew-agent/Cargo.toml -- -D warnings +cargo clippy --manifest-path packages/yew-router/Cargo.toml -- -D warnings diff --git a/ci/install-wasm-bindgen-cli.sh b/ci/install-wasm-bindgen-cli.sh index e592a9c83b2..1962c94b3fd 100755 --- a/ci/install-wasm-bindgen-cli.sh +++ b/ci/install-wasm-bindgen-cli.sh @@ -1,3 +1,4 @@ +#!/usr/bin/env bash if [ ! -f "Cargo.lock" ]; then cargo fetch fi diff --git a/packages/yew/src/lib.rs b/packages/yew/src/lib.rs index cd85d32af3e..75442817802 100644 --- a/packages/yew/src/lib.rs +++ b/packages/yew/src/lib.rs @@ -30,7 +30,7 @@ //! //! ## Example //! -//! ```rust +//! ```rust,no_run //! use yew::prelude::*; //! //! enum Msg { @@ -68,11 +68,9 @@ //! } //! } //! -//! # fn dont_execute() { //! fn main() { //! yew::Renderer::::new().render(); //! } -//! # } //! ``` #![deny( diff --git a/packages/yew/src/renderer.rs b/packages/yew/src/renderer.rs index 7c7e20e63c6..591d5da07e7 100644 --- a/packages/yew/src/renderer.rs +++ b/packages/yew/src/renderer.rs @@ -1,4 +1,7 @@ use std::cell::Cell; +#[rustversion::since(1.81)] +use std::panic::PanicHookInfo as PanicInfo; +#[rustversion::before(1.81)] use std::panic::PanicInfo; use std::rc::Rc; diff --git a/tools/process-benchmark-results/src/main.rs b/tools/process-benchmark-results/src/main.rs index 66eb157bad3..8a7f30c200f 100644 --- a/tools/process-benchmark-results/src/main.rs +++ b/tools/process-benchmark-results/src/main.rs @@ -1,31 +1,65 @@ +use std::collections::HashMap; use std::io; use std::io::{Read, Write}; use anyhow::Result; -use serde::Serialize; +use serde::{Deserialize, Serialize}; use serde_json::Value; #[derive(Serialize)] struct GhActionBenchmark { name: String, unit: String, - value: String, + value: Value, +} + +// from https://github.com/krausest/js-framework-benchmark/blob/master/webdriver-ts/src/writeResults.ts#L67 function createResultFile +#[derive(Deserialize)] +struct ResultData { + median: Value, + // some keys missing +} + +#[derive(Deserialize)] +struct JsKrauseBenchmarkResult<'r> { + framework: &'r str, + benchmark: &'r str, + r#type: &'r str, + values: HashMap<&'r str, ResultData>, +} + +fn transform_results(mut result: JsKrauseBenchmarkResult<'_>) -> GhActionBenchmark { + let key = if result.r#type == "cpu" { + "total" + } else { + "DEFAULT" + }; + let values = result.values.remove(key).unwrap_or_else(|| { + panic!( + "Expect benchmark data to be present for type {}. Found keys: {:?}, expected {key:?}", + result.r#type, + result.values.keys().cloned().collect::>(), + ) + }); + assert!( + values.median.is_number(), + "expected a numerical benchmark value" + ); + GhActionBenchmark { + name: format!("{} {}", result.framework, result.benchmark).replace('"', ""), + unit: String::default(), + value: values.median, + } } fn main() -> Result<()> { let mut buffer = "".to_string(); io::stdin().read_to_string(&mut buffer)?; - let input_json: Vec = serde_json::from_str(buffer.as_str())?; + let input_json: Vec<_> = serde_json::from_str(buffer.as_str())?; - let transformed_benchmarks: Vec = input_json - .into_iter() - .map(|v| GhActionBenchmark { - name: format!("{} {}", v["framework"], v["benchmark"]).replace('"', ""), - unit: String::default(), - value: v["median"].to_string(), - }) - .collect(); + let transformed_benchmarks: Vec = + input_json.into_iter().map(transform_results).collect(); let output = serde_json::to_string(&transformed_benchmarks)?; From aa211192a9a6d5edccc3db13d36756d2cbc2a0bf Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 23 Aug 2024 02:31:58 +0500 Subject: [PATCH 22/44] Bump the cargo-deps group across 1 directory with 23 updates (#3713) * Bump the cargo-deps group across 1 directory with 23 updates Bumps the cargo-deps group with 20 updates in the / directory: | Package | From | To | | --- | --- | --- | | [indexmap](https://github.com/indexmap-rs/indexmap) | `2.3.0` | `2.4.0` | | [js-sys](https://github.com/rustwasm/wasm-bindgen) | `0.3.69` | `0.3.70` | | [thiserror](https://github.com/dtolnay/thiserror) | `1.0.55` | `1.0.63` | | [serde](https://github.com/serde-rs/serde) | `1.0.193` | `1.0.208` | | [web-sys](https://github.com/rustwasm/wasm-bindgen) | `0.3.69` | `0.3.70` | | [wasm-bindgen-futures](https://github.com/rustwasm/wasm-bindgen) | `0.4.42` | `0.4.43` | | [wasm-bindgen-test](https://github.com/rustwasm/wasm-bindgen) | `0.3.42` | `0.3.43` | | [trybuild](https://github.com/dtolnay/trybuild) | `1.0.86` | `1.0.99` | | [syn](https://github.com/dtolnay/syn) | `2.0.72` | `2.0.75` | | [getrandom](https://github.com/rust-random/getrandom) | `0.2.14` | `0.2.15` | | [tabled](https://github.com/zhiburt/tabled) | `0.15.0` | `0.16.0` | | [clap](https://github.com/clap-rs/clap) | `4.5.13` | `4.5.16` | | [reqwest](https://github.com/seanmonstar/reqwest) | `0.12.5` | `0.12.7` | | [derive_more](https://github.com/JelteF/derive_more) | `0.99.18` | `1.0.0` | | [gloo-net](https://github.com/rustwasm/gloo) | `0.5.0` | `0.6.0` | | [pulldown-cmark](https://github.com/raphlinus/pulldown-cmark) | `0.9.6` | `0.12.0` | | [hyper-util](https://github.com/hyperium/hyper-util) | `0.1.6` | `0.1.7` | | [tower](https://github.com/tower-rs/tower) | `0.4.13` | `0.5.0` | | [env_logger](https://github.com/rust-cli/env_logger) | `0.10.2` | `0.11.5` | | [postcard](https://github.com/jamesmunns/postcard) | `1.0.8` | `1.0.10` | Updates `indexmap` from 2.3.0 to 2.4.0 - [Changelog](https://github.com/indexmap-rs/indexmap/blob/master/RELEASES.md) - [Commits](https://github.com/indexmap-rs/indexmap/compare/2.3.0...2.4.0) Updates `js-sys` from 0.3.69 to 0.3.70 - [Release notes](https://github.com/rustwasm/wasm-bindgen/releases) - [Changelog](https://github.com/rustwasm/wasm-bindgen/blob/main/CHANGELOG.md) - [Commits](https://github.com/rustwasm/wasm-bindgen/commits) Updates `wasm-bindgen` from 0.2.92 to 0.2.93 - [Release notes](https://github.com/rustwasm/wasm-bindgen/releases) - [Changelog](https://github.com/rustwasm/wasm-bindgen/blob/main/CHANGELOG.md) - [Commits](https://github.com/rustwasm/wasm-bindgen/compare/0.2.92...0.2.93) Updates `thiserror` from 1.0.55 to 1.0.63 - [Release notes](https://github.com/dtolnay/thiserror/releases) - [Commits](https://github.com/dtolnay/thiserror/compare/1.0.55...1.0.63) Updates `serde` from 1.0.193 to 1.0.208 - [Release notes](https://github.com/serde-rs/serde/releases) - [Commits](https://github.com/serde-rs/serde/compare/v1.0.193...v1.0.208) Updates `web-sys` from 0.3.69 to 0.3.70 - [Release notes](https://github.com/rustwasm/wasm-bindgen/releases) - [Changelog](https://github.com/rustwasm/wasm-bindgen/blob/main/CHANGELOG.md) - [Commits](https://github.com/rustwasm/wasm-bindgen/commits) Updates `wasm-bindgen-futures` from 0.4.42 to 0.4.43 - [Release notes](https://github.com/rustwasm/wasm-bindgen/releases) - [Changelog](https://github.com/rustwasm/wasm-bindgen/blob/main/CHANGELOG.md) - [Commits](https://github.com/rustwasm/wasm-bindgen/commits) Updates `wasm-bindgen-test` from 0.3.42 to 0.3.43 - [Release notes](https://github.com/rustwasm/wasm-bindgen/releases) - [Changelog](https://github.com/rustwasm/wasm-bindgen/blob/main/CHANGELOG.md) - [Commits](https://github.com/rustwasm/wasm-bindgen/commits) Updates `trybuild` from 1.0.86 to 1.0.99 - [Release notes](https://github.com/dtolnay/trybuild/releases) - [Commits](https://github.com/dtolnay/trybuild/compare/1.0.86...1.0.99) Updates `syn` from 2.0.72 to 2.0.75 - [Release notes](https://github.com/dtolnay/syn/releases) - [Commits](https://github.com/dtolnay/syn/compare/2.0.72...2.0.75) Updates `getrandom` from 0.2.14 to 0.2.15 - [Changelog](https://github.com/rust-random/getrandom/blob/master/CHANGELOG.md) - [Commits](https://github.com/rust-random/getrandom/compare/v0.2.14...v0.2.15) Updates `tabled` from 0.15.0 to 0.16.0 - [Changelog](https://github.com/zhiburt/tabled/blob/master/CHANGELOG.md) - [Commits](https://github.com/zhiburt/tabled/commits) Updates `serde_json` from 1.0.109 to 1.0.125 - [Release notes](https://github.com/serde-rs/json/releases) - [Commits](https://github.com/serde-rs/json/compare/v1.0.109...1.0.125) Updates `clap` from 4.5.13 to 4.5.16 - [Release notes](https://github.com/clap-rs/clap/releases) - [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md) - [Commits](https://github.com/clap-rs/clap/compare/clap_complete-v4.5.13...clap_complete-v4.5.16) Updates `reqwest` from 0.12.5 to 0.12.7 - [Release notes](https://github.com/seanmonstar/reqwest/releases) - [Changelog](https://github.com/seanmonstar/reqwest/blob/master/CHANGELOG.md) - [Commits](https://github.com/seanmonstar/reqwest/compare/v0.12.5...v0.12.7) Updates `derive_more` from 0.99.18 to 1.0.0 - [Release notes](https://github.com/JelteF/derive_more/releases) - [Changelog](https://github.com/JelteF/derive_more/blob/master/CHANGELOG.md) - [Commits](https://github.com/JelteF/derive_more/compare/v0.99.18...v1.0.0) Updates `gloo-net` from 0.5.0 to 0.6.0 - [Release notes](https://github.com/rustwasm/gloo/releases) - [Changelog](https://github.com/rustwasm/gloo/blob/master/CHANGELOG.md) - [Commits](https://github.com/rustwasm/gloo/compare/0.5.0...0.6.0) Updates `pulldown-cmark` from 0.9.6 to 0.12.0 - [Release notes](https://github.com/raphlinus/pulldown-cmark/releases) - [Commits](https://github.com/raphlinus/pulldown-cmark/compare/v0.9.6...v0.12.0) Updates `hyper-util` from 0.1.6 to 0.1.7 - [Release notes](https://github.com/hyperium/hyper-util/releases) - [Changelog](https://github.com/hyperium/hyper-util/blob/master/CHANGELOG.md) - [Commits](https://github.com/hyperium/hyper-util/compare/v0.1.6...v0.1.7) Updates `tower` from 0.4.13 to 0.5.0 - [Release notes](https://github.com/tower-rs/tower/releases) - [Commits](https://github.com/tower-rs/tower/compare/tower-0.4.13...tower-0.5.0) Updates `env_logger` from 0.10.2 to 0.11.5 - [Release notes](https://github.com/rust-cli/env_logger/releases) - [Changelog](https://github.com/rust-cli/env_logger/blob/main/CHANGELOG.md) - [Commits](https://github.com/rust-cli/env_logger/compare/v0.10.2...v0.11.5) Updates `serde_derive` from 1.0.193 to 1.0.208 - [Release notes](https://github.com/serde-rs/serde/releases) - [Commits](https://github.com/serde-rs/serde/compare/v1.0.193...v1.0.208) Updates `postcard` from 1.0.8 to 1.0.10 - [Release notes](https://github.com/jamesmunns/postcard/releases) - [Changelog](https://github.com/jamesmunns/postcard/blob/main/CHANGELOG.md) - [Commits](https://github.com/jamesmunns/postcard/compare/v1.0.8...v1.0.10) --- updated-dependencies: - dependency-name: indexmap dependency-type: direct:production update-type: version-update:semver-minor dependency-group: cargo-deps - dependency-name: js-sys dependency-type: direct:production update-type: version-update:semver-patch dependency-group: cargo-deps - dependency-name: wasm-bindgen dependency-type: direct:production update-type: version-update:semver-patch dependency-group: cargo-deps - dependency-name: thiserror dependency-type: direct:production update-type: version-update:semver-patch dependency-group: cargo-deps - dependency-name: serde dependency-type: direct:production update-type: version-update:semver-patch dependency-group: cargo-deps - dependency-name: web-sys dependency-type: direct:production update-type: version-update:semver-patch dependency-group: cargo-deps - dependency-name: wasm-bindgen-futures dependency-type: direct:production update-type: version-update:semver-patch dependency-group: cargo-deps - dependency-name: wasm-bindgen-test dependency-type: direct:production update-type: version-update:semver-patch dependency-group: cargo-deps - dependency-name: trybuild dependency-type: direct:production update-type: version-update:semver-patch dependency-group: cargo-deps - dependency-name: syn dependency-type: direct:production update-type: version-update:semver-patch dependency-group: cargo-deps - dependency-name: getrandom dependency-type: direct:production update-type: version-update:semver-patch dependency-group: cargo-deps - dependency-name: tabled dependency-type: direct:production update-type: version-update:semver-minor dependency-group: cargo-deps - dependency-name: serde_json dependency-type: direct:production update-type: version-update:semver-patch dependency-group: cargo-deps - dependency-name: clap dependency-type: direct:production update-type: version-update:semver-patch dependency-group: cargo-deps - dependency-name: reqwest dependency-type: direct:production update-type: version-update:semver-patch dependency-group: cargo-deps - dependency-name: derive_more dependency-type: direct:production update-type: version-update:semver-major dependency-group: cargo-deps - dependency-name: gloo-net dependency-type: direct:production update-type: version-update:semver-minor dependency-group: cargo-deps - dependency-name: pulldown-cmark dependency-type: direct:production update-type: version-update:semver-minor dependency-group: cargo-deps - dependency-name: hyper-util dependency-type: direct:production update-type: version-update:semver-patch dependency-group: cargo-deps - dependency-name: tower dependency-type: direct:production update-type: version-update:semver-minor dependency-group: cargo-deps - dependency-name: env_logger dependency-type: direct:production update-type: version-update:semver-minor dependency-group: cargo-deps - dependency-name: serde_derive dependency-type: direct:production update-type: version-update:semver-patch dependency-group: cargo-deps - dependency-name: postcard dependency-type: direct:production update-type: version-update:semver-patch dependency-group: cargo-deps ... Signed-off-by: dependabot[bot] * fix markup parsing * update web_sys bindings to non-deprecated * fix formatting * fix feature set for derive_more * update lock file to work around tower-rs/tower#784 --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Martin Molzer --- .github/workflows/post-benchmark.yml | 3 + Cargo.lock | 1155 +++++++++-------- ci/build-examples.sh | 2 +- examples/async_clock/Cargo.toml | 2 +- examples/dyn_create_destroy_apps/Cargo.toml | 2 +- examples/futures/Cargo.toml | 2 +- examples/futures/src/main.rs | 6 +- examples/futures/src/markdown.rs | 413 +++--- examples/password_strength/Cargo.toml | 2 +- examples/simple_ssr/Cargo.toml | 4 +- examples/ssr_router/Cargo.toml | 6 +- examples/timer_functional/Cargo.toml | 2 +- examples/web_worker_fib/Cargo.toml | 2 +- examples/web_worker_prime/Cargo.toml | 2 +- packages/yew-agent/Cargo.toml | 2 +- .../function_component_attr/generic-pass.rs | 6 +- .../tests/hook_attr/hook-trait-item-pass.rs | 2 +- .../tests/html_macro/node-fail.stderr | 2 +- packages/yew/Cargo.toml | 2 +- packages/yew/src/dom_bundle/subtree_root.rs | 5 +- tools/benchmark-hooks/Cargo.toml | 4 +- tools/benchmark-ssr/Cargo.toml | 4 +- tools/benchmark-struct/Cargo.toml | 4 +- tools/website-test/Cargo.toml | 2 +- 24 files changed, 854 insertions(+), 782 deletions(-) diff --git a/.github/workflows/post-benchmark.yml b/.github/workflows/post-benchmark.yml index d8e0aeda1e1..538795f82bc 100644 --- a/.github/workflows/post-benchmark.yml +++ b/.github/workflows/post-benchmark.yml @@ -45,3 +45,6 @@ jobs: # Only push when this is a non-pr commit that has been benchmarked, i.e. master auto-push: ${{ fromJSON(steps.test-pr.outputs.stdout).number == '' }} save-data-file: ${{ fromJSON(steps.test-pr.outputs.stdout).number == '' }} + # Enable job summary + summary-always: true + comment-always: true diff --git a/Cargo.lock b/Cargo.lock index 66ee46d0e3f..42e7973cd14 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,9 +4,9 @@ version = 3 [[package]] name = "addr2line" -version = "0.19.0" +version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a76fd60b23679b7d19bd066031410fb7e458ccc5e958eb5c325888ce4baedc97" +checksum = "6e4503c46a5c0c7844e948c9a4d6acd9f50cccb4de1c48eb9e291ea17470c678" dependencies = [ "gimli", ] @@ -19,9 +19,9 @@ checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" [[package]] name = "aho-corasick" -version = "1.0.2" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43f6cb1bf222025340178f382c426f13757b2960e89779dfcb319c32542a5a41" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" dependencies = [ "memchr", ] @@ -58,26 +58,26 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.1" +version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a30da5c5f2d5e72842e00bcb57657162cdabef0931f40e2deb9b4140440cecd" +checksum = "1bec1de6f59aedf83baf9ff929c98f2ad654b97c9510f4e70cf6f661d49fd5b1" [[package]] name = "anstyle-parse" -version = "0.2.1" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "938874ff5980b03a87c5524b3ae5b59cf99b1d6bc836848df7bc5ada9643c333" +checksum = "eb47de1e80c2b463c735db5b217a0ddc39d612e7ac9e2e96a5aed1f57616c1cb" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.0.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ca11d4be1bab0c8bc8734a9aa7bf4ee8316d462a08c6ac5052f888fef5b494b" +checksum = "6d36fc52c7f6c869915e99412912f22093507da8d9e942ceaf66fe4b7c14422a" dependencies = [ - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] @@ -104,13 +104,13 @@ checksum = "d301b3b94cb4b2f23d7917810addbbaff90738e0ca2be692bd027e70d7e0330c" [[package]] name = "async-trait" -version = "0.1.68" +version = "0.1.81" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9ccdd8f2a161be9bd5c023df56f1b2a0bd1d83872ae53b71a84a12c9bf6e842" +checksum = "6e0c28dcc82d7c8ead5cb13beb15405b57b8546e93215673ff8ca0349a028107" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.75", ] [[package]] @@ -119,15 +119,15 @@ version = "0.0.1" dependencies = [ "chrono", "futures 0.3.30", - "gloo-net 0.5.0", + "gloo-net 0.6.0", "yew", ] [[package]] name = "atomic-polyfill" -version = "0.1.11" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3ff7eb3f316534d83a8a2c3d1674ace8a5a71198eba31e2e2b597833f699b28" +checksum = "8cf2bce30dfe09ef0bfaef228b9d414faaf7e563035494d7fe092dba54b300f4" dependencies = [ "critical-section", ] @@ -140,9 +140,9 @@ checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" [[package]] name = "autocfg" -version = "1.1.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "average" @@ -183,7 +183,7 @@ dependencies = [ "serde_urlencoded", "sync_wrapper 1.0.1", "tokio", - "tower", + "tower 0.4.13", "tower-layer", "tower-service", "tracing", @@ -212,9 +212,9 @@ dependencies = [ [[package]] name = "backtrace" -version = "0.3.67" +version = "0.3.73" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "233d376d6d185f2a3093e58f283f60f880315b6c60075b01f36b3b85154564ca" +checksum = "5cc23269a4f8976d0a4d2e7109211a419fe30e8d88d677cd60b6bc79c5732e0a" dependencies = [ "addr2line", "cc", @@ -227,9 +227,9 @@ dependencies = [ [[package]] name = "base64" -version = "0.13.1" +version = "0.21.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" +checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" [[package]] name = "base64" @@ -243,15 +243,6 @@ version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" -[[package]] -name = "basic-toml" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c0de75129aa8d0cceaf750b89013f0e08804d6ec61416da787b35ad0d7cddf1" -dependencies = [ - "serde", -] - [[package]] name = "benchmark-core" version = "0.1.0" @@ -302,15 +293,9 @@ checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" [[package]] name = "bitflags" -version = "1.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" - -[[package]] -name = "bitflags" -version = "2.4.0" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4682ae6287fcf752ecaabbfcc7b6f9b72aa33933dc23a554d853aea8eea8635" +checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" [[package]] name = "block-buffer" @@ -336,21 +321,21 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.13.0" +version = "3.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3e2c3daef883ecc1b5d58c15adae93470a91d425f3532ba1695849656af3fc1" +checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" [[package]] name = "bytecount" -version = "0.6.3" +version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c676a478f63e9fa2dd5368a42f28bba0d6c560b775f38583c8bbaa7fcd67c9c" +checksum = "5ce89b21cab1437276d2650d57e971f9d548a2d9037cc231abdc0562b97498ce" [[package]] name = "byteorder" -version = "1.4.3" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" @@ -360,12 +345,13 @@ checksum = "8318a53db07bb3f8dca91a600466bdb3f2eaadeedfdbcf02e1accbad9271ba50" [[package]] name = "cc" -version = "1.1.7" +version = "1.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26a5c3fd7bfa1ce3897a3a3501d362b2d87b7f2583ebcb4a949ec25911025cbc" +checksum = "72db2f7947ecee9b03b510377e8bb9077afa27176fdbff55c51027e976fdcc48" dependencies = [ "jobserver", "libc", + "shlex", ] [[package]] @@ -406,9 +392,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.13" +version = "4.5.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fbb260a053428790f3de475e304ff84cdbc4face759ea7a3e64c1edd938a7fc" +checksum = "ed6719fffa43d0d87e5fd8caeab59be1554fb028cd30edc88fc4369b17971019" dependencies = [ "clap_builder", "clap_derive", @@ -416,9 +402,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.13" +version = "4.5.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64b17d7ea74e9f833c7dbf2cbe4fb12ff26783eda4782a8975b72f895c9b4d99" +checksum = "216aec2b177652e3846684cbfe25c9964d18ec45234f0f5da5157b207ed1aab6" dependencies = [ "anstream", "anstyle", @@ -436,7 +422,7 @@ dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.75", ] [[package]] @@ -453,9 +439,9 @@ checksum = "67ba02a97a2bd10f4b59b25c7973101c79642302776489e030cd13cdab09ed15" [[package]] name = "colorchoice" -version = "1.0.0" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" +checksum = "d3fd119d74b830634cea2a0f58bbd0d54540518a14397557951e79340abc28c0" [[package]] name = "communication_child_to_parent" @@ -493,15 +479,15 @@ checksum = "baf0a07a401f374238ab8e2f11a104d2851bf9ce711ec69804834de8af45c7af" [[package]] name = "console" -version = "0.15.7" +version = "0.15.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c926e00cc70edefdc64d3a5ff31cc65bb97a3460097762bd23afb4d8145fccf8" +checksum = "0e1f83fc076bd6dd27517eacdf25fef6c4dfe5f1d7448bafaaf3a26f13b5e4eb" dependencies = [ "encode_unicode", "lazy_static", "libc", "unicode-width", - "windows-sys 0.45.0", + "windows-sys 0.52.0", ] [[package]] @@ -522,17 +508,11 @@ dependencies = [ "yew-agent", ] -[[package]] -name = "convert_case" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" - [[package]] name = "core-foundation" -version = "0.9.3" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" dependencies = [ "core-foundation-sys", "libc", @@ -540,9 +520,9 @@ dependencies = [ [[package]] name = "core-foundation-sys" -version = "0.8.4" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" [[package]] name = "counter" @@ -563,18 +543,18 @@ dependencies = [ [[package]] name = "cpufeatures" -version = "0.2.8" +version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03e69e28e9f7f77debdedbaafa2866e1de9ba56df55a8bd7cfc724c25a09987c" +checksum = "51e852e6dc9a5bed1fae92dd2375037bf2b768725bf3be87811edee3249d09ad" dependencies = [ "libc", ] [[package]] name = "critical-section" -version = "1.1.1" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6548a0ad5d2549e111e1f6a11a6c2e2d00ce6a3dafe22948d67c2b443f775e52" +checksum = "f64009896348fc5af4222e9cf7d7d82a95a256c634ebcf61c53e4ea461422242" [[package]] name = "crypto-common" @@ -607,7 +587,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.72", + "syn 2.0.75", ] [[package]] @@ -618,20 +598,20 @@ checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" dependencies = [ "darling_core", "quote", - "syn 2.0.72", + "syn 2.0.75", ] [[package]] name = "data-encoding" -version = "2.4.0" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2e66c9d817f1720209181c316d28635c050fa304f9c79e47a520882661b7308" +checksum = "e8566979429cf69b49a5c740c60791108e86440e8be149bbea4fe54d2c32d6e2" [[package]] name = "deranged" -version = "0.3.9" +version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f32d04922c60427da6f9fef14d042d9edddef64cb9d4ce0d64d0685fbeb1fd3" +checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" dependencies = [ "powerfmt", ] @@ -654,7 +634,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.75", ] [[package]] @@ -664,27 +644,34 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "206868b8242f27cecce124c19fd88157fbd0dd334df2587f36417bafbc85097b" dependencies = [ "derive_builder_core", - "syn 2.0.72", + "syn 2.0.75", ] [[package]] name = "derive_more" -version = "0.99.18" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a9b99b9cbbe49445b21764dc0625032a89b145a2642e67603e1c936f5458d05" +dependencies = [ + "derive_more-impl", +] + +[[package]] +name = "derive_more-impl" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f33878137e4dafd7fa914ad4e259e18a4e8e532b9617a2d0150262bf53abfce" +checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22" dependencies = [ - "convert_case", "proc-macro2", "quote", - "rustc_version", - "syn 2.0.72", + "syn 2.0.75", ] [[package]] name = "deunicode" -version = "1.4.1" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a1abaf4d861455be59f64fd2b55606cb151fce304ede7165f410243ce96bde6" +checksum = "339544cc9e2c4dc3fc7149fd630c5f22263a4fdf18a98afd0075784968b5cf00" [[package]] name = "digest" @@ -718,7 +705,7 @@ checksum = "27540baf49be0d484d8f0130d7d8da3011c32a44d4fc873368154f1510e574a2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.75", ] [[package]] @@ -744,9 +731,9 @@ dependencies = [ [[package]] name = "either" -version = "1.8.1" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91" +checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" [[package]] name = "encode_unicode" @@ -756,51 +743,50 @@ checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" [[package]] name = "encoding_rs" -version = "0.8.32" +version = "0.8.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "071a31f4ee85403370b58aca746f01041ede6f0da2730960ad001edc2b71b394" +checksum = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59" dependencies = [ "cfg-if", ] [[package]] -name = "env_logger" -version = "0.10.2" +name = "env_filter" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cd405aab171cb85d6735e5c8d9db038c17d3ca007a4d2c25f337935c3d90580" +checksum = "4f2c92ceda6ceec50f43169f9ee8424fe2db276791afde7b2cd8bc084cb376ab" dependencies = [ - "humantime", - "is-terminal", "log", "regex", - "termcolor", ] [[package]] -name = "equivalent" -version = "1.0.0" +name = "env_logger" +version = "0.11.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88bffebc5d80432c9b140ee17875ff173a8ab62faad5b257da912bd2f6c1c0a1" +checksum = "e13fa619b91fb2381732789fc5de83b45675e882f66623b7d8cb4f643017018d" +dependencies = [ + "anstream", + "anstyle", + "env_filter", + "humantime", + "log", +] [[package]] -name = "errno" -version = "0.3.1" +name = "equivalent" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bcfec3a70f97c962c307b2d2c56e358cf1d00b558d74262b5f929ee8cc7e73a" -dependencies = [ - "errno-dragonfly", - "libc", - "windows-sys 0.48.0", -] +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" [[package]] -name = "errno-dragonfly" -version = "0.1.2" +name = "errno" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" +checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" dependencies = [ - "cc", "libc", + "windows-sys 0.52.0", ] [[package]] @@ -826,12 +812,9 @@ dependencies = [ [[package]] name = "fastrand" -version = "1.9.0" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be" -dependencies = [ - "instant", -] +checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a" [[package]] name = "file_upload" @@ -873,9 +856,9 @@ checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" [[package]] name = "form_urlencoded" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" dependencies = [ "percent-encoding", ] @@ -992,7 +975,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.75", ] [[package]] @@ -1049,9 +1032,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.14" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94b22e06ecb0110981051723910cbf0b5f5e09a2062dd7663334ee79a9d1286c" +checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" dependencies = [ "cfg-if", "js-sys", @@ -1062,9 +1045,9 @@ dependencies = [ [[package]] name = "gimli" -version = "0.27.3" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6c80984affa11d98d1b88b66ac8853f143217b399d3c74116778ff8fdb4ed2e" +checksum = "40ecd4077b5ae9fd2e9e169b102c6c330d0605168eb0e8bf79952b256dbefffd" [[package]] name = "git2" @@ -1072,7 +1055,7 @@ version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b903b73e45dc0c6c596f2d37eccece7c1c8bb6e4407b001096387c63d0d93724" dependencies = [ - "bitflags 2.4.0", + "bitflags", "libc", "libgit2-sys", "log", @@ -1097,7 +1080,7 @@ dependencies = [ "gloo-dialogs 0.1.1", "gloo-events 0.1.2", "gloo-file 0.2.3", - "gloo-history 0.1.4", + "gloo-history 0.1.5", "gloo-net 0.3.1", "gloo-render 0.1.1", "gloo-storage 0.2.2", @@ -1116,7 +1099,7 @@ dependencies = [ "gloo-dialogs 0.2.0", "gloo-events 0.2.0", "gloo-file 0.3.0", - "gloo-history 0.2.0", + "gloo-history 0.2.2", "gloo-net 0.5.0", "gloo-render 0.2.0", "gloo-storage 0.3.0", @@ -1218,14 +1201,14 @@ dependencies = [ [[package]] name = "gloo-history" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddfd137a4b629e72b8c949ec56c71ea9bd5491cc66358a0a7787e94875feec71" +checksum = "85725d90bf0ed47063b3930ef28e863658a7905989e9929a8708aab74a1d5e7f" dependencies = [ "gloo-events 0.1.2", "gloo-utils 0.1.7", "serde", - "serde-wasm-bindgen", + "serde-wasm-bindgen 0.5.0", "serde_urlencoded", "thiserror", "wasm-bindgen", @@ -1234,14 +1217,15 @@ dependencies = [ [[package]] name = "gloo-history" -version = "0.2.0" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91be9f3dd048f35a59c8de3d716ef6d568360078c73ed35a7700776ed53153c8" +checksum = "903f432be5ba34427eac5e16048ef65604a82061fe93789f2212afc73d8617d6" dependencies = [ + "getrandom", "gloo-events 0.2.0", "gloo-utils 0.2.0", "serde", - "serde-wasm-bindgen", + "serde-wasm-bindgen 0.6.5", "serde_urlencoded", "thiserror", "wasm-bindgen", @@ -1258,7 +1242,7 @@ dependencies = [ "futures-core", "futures-sink", "gloo-utils 0.1.7", - "http 0.2.9", + "http 0.2.12", "js-sys", "pin-project", "serde", @@ -1279,7 +1263,28 @@ dependencies = [ "futures-core", "futures-sink", "gloo-utils 0.2.0", - "http 0.2.9", + "http 0.2.12", + "js-sys", + "pin-project", + "serde", + "serde_json", + "thiserror", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "gloo-net" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c06f627b1a58ca3d42b45d6104bf1e1a03799df472df00988b6ba21accc10580" +dependencies = [ + "futures-channel", + "futures-core", + "futures-sink", + "gloo-utils 0.2.0", + "http 1.1.0", "js-sys", "pin-project", "serde", @@ -1433,7 +1438,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.75", ] [[package]] @@ -1447,7 +1452,7 @@ dependencies = [ "futures-core", "futures-sink", "futures-util", - "http 0.2.9", + "http 0.2.12", "indexmap", "slab", "tokio", @@ -1457,9 +1462,9 @@ dependencies = [ [[package]] name = "h2" -version = "0.4.5" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa82e28a107a8cc405f0839610bdc9b15f1e25ec7d696aa5cf173edbcb1486ab" +checksum = "524e8ac6999421f49a846c2d4411f337e53497d8ec55d67753beffa43c5d9205" dependencies = [ "atomic-waker", "bytes", @@ -1485,21 +1490,20 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.14.1" +version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7dfda62a12f55daeae5015f81b0baea145391cb4520f86c248fc615d72640d12" +checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" [[package]] name = "headers" -version = "0.3.8" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3e372db8e5c0d213e0cd0b9be18be2aca3d44cf2fe30a9d46a65581cd454584" +checksum = "06683b93020a07e3dbcf5f8c0f6d40080d725bea7936fc01ad345c01b97dc270" dependencies = [ - "base64 0.13.1", - "bitflags 1.3.2", + "base64 0.21.7", "bytes", "headers-core", - "http 0.2.9", + "http 0.2.12", "httpdate", "mime", "sha1", @@ -1511,14 +1515,14 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e7f66481bfee273957b1f20485a4ff3362987f85b2c236580d81b4eb7a326429" dependencies = [ - "http 0.2.9", + "http 0.2.12", ] [[package]] name = "heapless" -version = "0.7.16" +version = "0.7.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db04bc24a18b9ea980628ecf00e6c0264f3c1426dac36c00cb49b6fbad8b0743" +checksum = "cdc6457c0eb62c71aac4bc17216026d8410337c4126773b9c5daba343f17964f" dependencies = [ "atomic-polyfill", "hash32", @@ -1542,18 +1546,9 @@ checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] name = "hermit-abi" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7" -dependencies = [ - "libc", -] - -[[package]] -name = "hermit-abi" -version = "0.3.1" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fed44880c466736ef9a5c5b5facefb5ed0785676d0c02d612db14e54f0d84286" +checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" [[package]] name = "html-escape" @@ -1566,9 +1561,9 @@ dependencies = [ [[package]] name = "http" -version = "0.2.9" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd6effc99afb63425aff9b05836f029929e345a6148a14b7ecd5ab67af944482" +checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" dependencies = [ "bytes", "fnv", @@ -1588,12 +1583,12 @@ dependencies = [ [[package]] name = "http-body" -version = "0.4.5" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1" +checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" dependencies = [ "bytes", - "http 0.2.9", + "http 0.2.12", "pin-project-lite", ] @@ -1628,15 +1623,15 @@ checksum = "08a397c49fec283e3d6211adbe480be95aae5f304cfb923e9970e08956d5168a" [[package]] name = "httparse" -version = "1.8.0" +version = "1.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" +checksum = "0fcc0b4a115bf80b728eb8ea024ad5bd707b615bfed49e0665b6e0f86fd082d9" [[package]] name = "httpdate" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421" +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" [[package]] name = "humantime" @@ -1655,8 +1650,8 @@ dependencies = [ "futures-core", "futures-util", "h2 0.3.26", - "http 0.2.9", - "http-body 0.4.5", + "http 0.2.12", + "http-body 0.4.6", "httparse", "httpdate", "itoa", @@ -1677,7 +1672,7 @@ dependencies = [ "bytes", "futures-channel", "futures-util", - "h2 0.4.5", + "h2 0.4.6", "http 1.1.0", "http-body 1.0.1", "httparse", @@ -1724,9 +1719,9 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ab92f4f49ee4fb4f997c784b7a2e0fa70050211e0b6a287f898c3c9785ca956" +checksum = "cde7055719c54e36e95e8719f95883f22072a48ede39db7fc17a4e1d5281e9b9" dependencies = [ "bytes", "futures-channel", @@ -1737,23 +1732,23 @@ dependencies = [ "pin-project-lite", "socket2", "tokio", - "tower", + "tower 0.4.13", "tower-service", "tracing", ] [[package]] name = "iana-time-zone" -version = "0.1.57" +version = "0.1.60" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fad5b825842d2b38bd206f3e81d6957625fd7f0a361e345c30e01a0ae2dd613" +checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141" dependencies = [ "android_system_properties", "core-foundation-sys", "iana-time-zone-haiku", "js-sys", "wasm-bindgen", - "windows", + "windows-core", ] [[package]] @@ -1773,9 +1768,9 @@ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] name = "idna" -version = "0.4.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c" +checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" dependencies = [ "unicode-bidi", "unicode-normalization", @@ -1808,14 +1803,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9311685eb9a34808bbb0608ad2fcab9ae216266beca5848613e95553ac914e3b" dependencies = [ "quote", - "syn 2.0.72", + "syn 2.0.75", ] [[package]] name = "indexmap" -version = "2.3.0" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de3fc2e30ba82dd1b3911c8de1ffc143c74a914a14e99514d7637e3099df5ea0" +checksum = "93ead53efc7ea8ed3cfb0c79fc8023fbb782a5432b52830b6518941cebe6505c" dependencies = [ "equivalent", "hashbrown", @@ -1855,34 +1850,11 @@ dependencies = [ "web-sys", ] -[[package]] -name = "io-lifetimes" -version = "1.0.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2" -dependencies = [ - "hermit-abi 0.3.1", - "libc", - "windows-sys 0.48.0", -] - [[package]] name = "ipnet" -version = "2.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28b29a3cd74f0f4598934efe3aeba42bae0eb4680554128851ebbecb02af14e6" - -[[package]] -name = "is-terminal" -version = "0.4.7" +version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adcf93614601c8129ddf72e2d5633df827ba6551541c6d8c59520a371475be1f" -dependencies = [ - "hermit-abi 0.3.1", - "io-lifetimes", - "rustix 0.37.25", - "windows-sys 0.48.0", -] +checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" [[package]] name = "is_terminal_polyfill" @@ -1901,15 +1873,15 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.6" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6" +checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" [[package]] name = "jemalloc-sys" -version = "0.5.3+5.3.0-patched" +version = "0.5.4+5.3.0-patched" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9bd5d616ea7ed58b571b2e209a65759664d7fb021a0819d7a790afc67e47ca1" +checksum = "ac6c1946e1cea1788cbfde01c993b52a10e2da07f4bac608228d1bed20bfebf2" dependencies = [ "cc", "libc", @@ -1958,9 +1930,9 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.69" +version = "0.3.70" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d" +checksum = "1868808506b929d7b0cfa8f75951347aa71bb21144b7791bae35d9bccfcfe37a" dependencies = [ "wasm-bindgen", ] @@ -1992,15 +1964,15 @@ dependencies = [ [[package]] name = "lazy_static" -version = "1.4.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.153" +version = "0.2.158" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" +checksum = "d8adc4bb1803a324070e64a98ae98f38934d91957a99cfb3a43dcbc01bc56439" [[package]] name = "libgit2-sys" @@ -2018,9 +1990,9 @@ dependencies = [ [[package]] name = "libm" -version = "0.2.7" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7012b1bbb0719e1097c47611d3898568c546d597c2e74d66f6087edd5233ff4" +checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" [[package]] name = "libssh2-sys" @@ -2038,9 +2010,9 @@ dependencies = [ [[package]] name = "libz-sys" -version = "1.1.9" +version = "1.1.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56ee889ecc9568871456d42f603d6a0ce59ff328d291063a45cbdf0036baf6db" +checksum = "fdc53a7799a7496ebc9fd29f31f7df80e83c9bda5299768af5f9e59eeea74647" dependencies = [ "cc", "libc", @@ -2050,15 +2022,9 @@ dependencies = [ [[package]] name = "linux-raw-sys" -version = "0.3.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519" - -[[package]] -name = "linux-raw-sys" -version = "0.4.10" +version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da2479e8c062e40bf0066ffa0bc823de0a9368974af99c9f6df941d2c231e03f" +checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" [[package]] name = "lipsum" @@ -2072,9 +2038,9 @@ dependencies = [ [[package]] name = "lock_api" -version = "0.4.10" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1cc9717a20b1bb222f333e6a92fd32f7d8a18ddc5a3191a11af45dcbf4dcd16" +checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" dependencies = [ "autocfg", "scopeguard", @@ -2088,15 +2054,15 @@ checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" [[package]] name = "matchit" -version = "0.7.0" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b87248edafb776e59e6ee64a79086f65890d3510f2c656c000bf2a7e8a0aea40" +checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94" [[package]] name = "memchr" -version = "2.6.3" +version = "2.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f232d6ef707e1956a43342693d2a31e72989554d58299d7a88738cc95b0d35c" +checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" [[package]] name = "mime" @@ -2106,32 +2072,43 @@ checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" [[package]] name = "mime_guess" -version = "2.0.4" +version = "2.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4192263c238a5f0d0c6bfd21f336a313a4ce1c450542449ca191bb657b4642ef" +checksum = "f7c44f8e672c00fe5308fa235f821cb4198414e1c77935c1ab6948d3fd78550e" dependencies = [ "mime", "unicase", ] +[[package]] +name = "minicov" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c71e683cd655513b99affab7d317deb690528255a0d5f717f1024093c12b169" +dependencies = [ + "cc", + "walkdir", +] + [[package]] name = "miniz_oxide" -version = "0.6.2" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b275950c28b37e794e8c55d88aeb5e139d0ce23fdbbeda68f8d7174abdf9e8fa" +checksum = "b8a240ddb74feaf34a79a7add65a741f3167852fba007066dcac1ca548d89c08" dependencies = [ "adler", ] [[package]] name = "mio" -version = "0.8.11" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" +checksum = "80e04d1dcff3aae0704555fe5fee3bcfaf3d1fdf8a7e521d5b9d2b42acb52cec" dependencies = [ + "hermit-abi", "libc", "wasi", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] @@ -2153,7 +2130,7 @@ dependencies = [ "bytes", "encoding_rs", "futures-util", - "http 0.2.9", + "http 0.2.12", "httparse", "log", "memchr", @@ -2173,11 +2150,10 @@ dependencies = [ [[package]] name = "native-tls" -version = "0.2.11" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07226173c32f2926027b63cce4bcd8076c3552846cbe7925f3aaffeac0a3b92e" +checksum = "a8614eb2c83d59d1c8cc974dd3f920198647674a0a035e1af1fa58707e317466" dependencies = [ - "lazy_static", "libc", "log", "openssl", @@ -2214,9 +2190,9 @@ checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" [[package]] name = "num-traits" -version = "0.2.15" +version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" dependencies = [ "autocfg", "libm", @@ -2224,11 +2200,11 @@ dependencies = [ [[package]] name = "num_cpus" -version = "1.15.0" +version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b" +checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" dependencies = [ - "hermit-abi 0.2.6", + "hermit-abi", "libc", ] @@ -2240,9 +2216,9 @@ checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" [[package]] name = "object" -version = "0.30.4" +version = "0.36.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03b4680b86d9cfafba8fc491dc9b6df26b68cf40e9e6cd73909194759a63c385" +checksum = "27b64972346851a39438c60b341ebc01bba47464ae329e55cf343eb93964efd9" dependencies = [ "memchr", ] @@ -2259,7 +2235,7 @@ version = "0.10.66" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9529f4786b70a3e8c61e11179af17ab6188ad8d0ded78c5529441ed39d4bd9c1" dependencies = [ - "bitflags 2.4.0", + "bitflags", "cfg-if", "foreign-types", "libc", @@ -2276,7 +2252,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.75", ] [[package]] @@ -2299,9 +2275,9 @@ dependencies = [ [[package]] name = "papergrid" -version = "0.11.0" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ad43c07024ef767f9160710b3a6773976194758c7919b17e63b863db0bdf7fb" +checksum = "c7419ad52a7de9b60d33e11085a0fe3df1fbd5926aa3f93d3dd53afbc9e86725" dependencies = [ "bytecount", "fnv", @@ -2310,9 +2286,9 @@ dependencies = [ [[package]] name = "parking_lot" -version = "0.12.1" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" +checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" dependencies = [ "lock_api", "parking_lot_core", @@ -2320,15 +2296,15 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.8" +version = "0.9.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93f00c865fe7cabf650081affecd3871070f26767e7b2070a3ffae14c654b447" +checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" dependencies = [ "cfg-if", "libc", "redox_syscall", "smallvec", - "windows-targets 0.48.1", + "windows-targets 0.52.6", ] [[package]] @@ -2346,35 +2322,35 @@ dependencies = [ [[package]] name = "percent-encoding" -version = "2.3.0" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "pin-project" -version = "1.1.0" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c95a7476719eab1e366eaf73d0260af3021184f18177925b07f54b30089ceead" +checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.0" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39407670928234ebc5e6e580247dd567ad73a3578460c5990f9503df207e8f07" +checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.75", ] [[package]] name = "pin-project-lite" -version = "0.2.13" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" +checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" [[package]] name = "pin-utils" @@ -2395,15 +2371,15 @@ dependencies = [ [[package]] name = "pkg-config" -version = "0.3.27" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964" +checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" [[package]] name = "portable-atomic" -version = "1.3.3" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "767eb9f07d4a5ebcb39bbf2d452058a93c011373abf6832e24194a1c3f004794" +checksum = "da544ee218f0d287a911e9c99a39a8c9bc8fcad3cb8db5959940044ecfc67265" [[package]] name = "portals" @@ -2417,9 +2393,9 @@ dependencies = [ [[package]] name = "postcard" -version = "1.0.8" +version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a55c51ee6c0db07e68448e336cf8ea4131a620edefebf9893e759b2d793420f8" +checksum = "5f7f0a8d620d71c457dd1d47df76bb18960378da56af4527aaa10f515eee732e" dependencies = [ "cobs", "heapless", @@ -2434,9 +2410,12 @@ checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" [[package]] name = "ppv-lite86" -version = "0.2.17" +version = "0.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" +checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" +dependencies = [ + "zerocopy", +] [[package]] name = "prettyplease" @@ -2445,7 +2424,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5f12335488a2f3b0a83b14edad48dca9879ce89b2edd10e80237e4e852dd645e" dependencies = [ "proc-macro2", - "syn 2.0.72", + "syn 2.0.75", ] [[package]] @@ -2461,7 +2440,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" dependencies = [ "once_cell", - "toml_edit", + "toml_edit 0.19.15", ] [[package]] @@ -2525,11 +2504,11 @@ dependencies = [ [[package]] name = "pulldown-cmark" -version = "0.9.6" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57206b407293d2bcd3af849ce869d52068623f19e1b5ff8e8778e3309439682b" +checksum = "4d31cbfcd94884c3a67ec210c83efb06cb43674043458b0ad59f6947f8462c23" dependencies = [ - "bitflags 2.4.0", + "bitflags", "memchr", "unicase", ] @@ -2575,11 +2554,11 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.3.5" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" +checksum = "2a908a6e00f1fdd0dfd9c0eb08ce85126f6d8bbda50017e74bc4a4b7d4a926a4" dependencies = [ - "bitflags 1.3.2", + "bitflags", ] [[package]] @@ -2607,21 +2586,21 @@ dependencies = [ [[package]] name = "regex-lite" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30b661b2f27137bdbc16f00eda72866a92bb28af1753ffbd56744fb6e2e9cd8e" +checksum = "53a49587ad06b26609c52e423de037e7f57f20d53535d66e08c695f347df952a" [[package]] name = "regex-syntax" -version = "0.8.2" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" +checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b" [[package]] name = "reqwest" -version = "0.12.5" +version = "0.12.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7d6d2a27d57148378eb5e111173f4276ad26340ecc5c49a4a2152167a2d6a37" +checksum = "f8f4955649ef5c38cc7f9e8aa41761d48fb9677197daea9984dc54f56aad5e63" dependencies = [ "base64 0.22.1", "bytes", @@ -2629,7 +2608,7 @@ dependencies = [ "futures-channel", "futures-core", "futures-util", - "h2 0.4.5", + "h2 0.4.6", "http 1.1.0", "http-body 1.0.1", "http-body-util", @@ -2658,7 +2637,7 @@ dependencies = [ "wasm-bindgen", "wasm-bindgen-futures", "web-sys", - "winreg", + "windows-registry", ] [[package]] @@ -2701,9 +2680,9 @@ dependencies = [ [[package]] name = "rustc-demangle" -version = "0.1.23" +version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" +checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" [[package]] name = "rustc_version" @@ -2716,29 +2695,15 @@ dependencies = [ [[package]] name = "rustix" -version = "0.37.25" +version = "0.38.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4eb579851244c2c03e7c24f501c3432bed80b8f720af1d6e5b0e0f01555a035" +checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" dependencies = [ - "bitflags 1.3.2", + "bitflags", "errno", - "io-lifetimes", "libc", - "linux-raw-sys 0.3.8", - "windows-sys 0.48.0", -] - -[[package]] -name = "rustix" -version = "0.38.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7db8590df6dfcd144d22afd1b83b36c21a18d7cbc1dc4bb5295a8712e9eb662" -dependencies = [ - "bitflags 2.4.0", - "errno", - "libc", - "linux-raw-sys 0.4.10", - "windows-sys 0.48.0", + "linux-raw-sys", + "windows-sys 0.52.0", ] [[package]] @@ -2766,9 +2731,9 @@ dependencies = [ [[package]] name = "rustls-pki-types" -version = "1.7.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "976295e77ce332211c0d24d92c0e83e50f5c5f046d11082cea19f3df13a3562d" +checksum = "fc0a2ce646f8655401bb81e7927b812614bd5d91dbc968696be50603510fcaf0" [[package]] name = "rustls-webpki" @@ -2789,17 +2754,26 @@ checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6" [[package]] name = "ryu" -version = "1.0.13" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f91339c0467de62360649f8d3e185ca8de4224ff281f66000de5eb2a77a79041" +checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] [[package]] name = "schannel" -version = "0.1.21" +version = "0.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "713cfb06c7059f3588fb8044c0fad1d09e3c01d225e25b9220dbfdcf16dbb1b3" +checksum = "fbc91545643bcf3a0bbb6569265615222618bdf33ce4ffbbd13c4bbd4c093534" dependencies = [ - "windows-sys 0.42.0", + "windows-sys 0.52.0", ] [[package]] @@ -2810,17 +2784,17 @@ checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" [[package]] name = "scopeguard" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "security-framework" -version = "2.9.1" +version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fc758eb7bffce5b308734e9b0c1468893cae9ff70ebf13e7090be8dcbcc83a8" +checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" dependencies = [ - "bitflags 1.3.2", + "bitflags", "core-foundation", "core-foundation-sys", "libc", @@ -2829,9 +2803,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.9.0" +version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f51d0c0d83bec45f16480d0ce0058397a69e48fcdc52d1dc8855fb68acbd31a7" +checksum = "75da29fe9b9b08fe9d6b22b5b4bcbc75d8db3aa31e639aa56bb62e9d46bfceaf" dependencies = [ "core-foundation-sys", "libc", @@ -2845,9 +2819,9 @@ checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" [[package]] name = "serde" -version = "1.0.193" +version = "1.0.208" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25dd9975e68d0cb5aa1120c288333fc98731bd1dd12f561e468ea4728c042b89" +checksum = "cff085d2cb684faa248efb494c39b68e522822ac0de72ccf08109abde717cfb2" dependencies = [ "serde_derive", ] @@ -2863,33 +2837,55 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "serde-wasm-bindgen" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8302e169f0eddcc139c70f139d19d6467353af16f9fce27e8c30158036a1e16b" +dependencies = [ + "js-sys", + "serde", + "wasm-bindgen", +] + [[package]] name = "serde_derive" -version = "1.0.193" +version = "1.0.208" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43576ca501357b9b071ac53cdc7da8ef0cbd9493d8df094cd821777ea6e894d3" +checksum = "24008e81ff7613ed8e5ba0cfaf24e2c2f1e5b8a0495711e44fcd4882fca62bcf" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.75", ] [[package]] name = "serde_json" -version = "1.0.109" +version = "1.0.125" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb0652c533506ad7a2e353cce269330d6afd8bdfb6d75e0ace5b35aacbd7b9e9" +checksum = "83c8e735a073ccf5be70aa8066aa984eaf2fa000db6c8d0100ae605b366d31ed" dependencies = [ "itoa", + "memchr", "ryu", "serde", ] [[package]] name = "serde_path_to_error" -version = "0.1.11" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af99884400da37c88f5e9146b7f1fd0fbcae8f6eec4e9da38b67d05486f814a6" +dependencies = [ + "itoa", + "serde", +] + +[[package]] +name = "serde_spanned" +version = "0.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7f05c1d5476066defcdfacce1f52fc3cae3af1d3089727100c02ae92e5abbe0" +checksum = "eb5b1b31579f3811bf615c144393417496f152e12ac8b7663bf664f4a815306d" dependencies = [ "serde", ] @@ -2908,20 +2904,26 @@ dependencies = [ [[package]] name = "sha1" -version = "0.10.5" +version = "0.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f04293dc80c3993519f2d7f6f511707ee7094fe0c6d3406feb330cdb3540eba3" +checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" dependencies = [ "cfg-if", "cpufeatures", "digest", ] +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + [[package]] name = "signal-hook-registry" -version = "1.4.1" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1" +checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" dependencies = [ "libc", ] @@ -2992,7 +2994,7 @@ dependencies = [ "jemallocator", "log", "tokio", - "tower", + "tower 0.5.0", "tower-http", "wasm-bindgen-futures", "wasm-logger", @@ -3030,7 +3032,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.72", + "syn 2.0.75", ] [[package]] @@ -3063,9 +3065,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.72" +version = "2.0.75" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc4b9b9bf2add8093d3f2c0204471e951b2285580335de42f9d2534f3ae7a8af" +checksum = "f6af063034fc1935ede7be0122941bafa9bacb949334d090b77ca98b5817c7d9" dependencies = [ "proc-macro2", "quote", @@ -3083,23 +3085,26 @@ name = "sync_wrapper" version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a7065abeca94b6a8a577f9bd45aa0867a2238b74e8eb67cf10d492bc39351394" +dependencies = [ + "futures-core", +] [[package]] name = "system-configuration" -version = "0.5.1" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" +checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" dependencies = [ - "bitflags 1.3.2", + "bitflags", "core-foundation", "system-configuration-sys", ] [[package]] name = "system-configuration-sys" -version = "0.5.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" +checksum = "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4" dependencies = [ "core-foundation-sys", "libc", @@ -3107,20 +3112,19 @@ dependencies = [ [[package]] name = "tabled" -version = "0.15.0" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c998b0c8b921495196a48aabaf1901ff28be0760136e31604f7967b0792050e" +checksum = "77c9303ee60b9bedf722012ea29ae3711ba13a67c9b9ae28993838b63057cb1b" dependencies = [ "papergrid", "tabled_derive", - "unicode-width", ] [[package]] name = "tabled_derive" -version = "0.7.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c138f99377e5d653a371cdad263615634cfc8467685dfe8e73e2b8e98f44b17" +checksum = "bf0fb8bfdc709786c154e24a66777493fb63ae97e3036d914c8666774c477069" dependencies = [ "heck 0.4.1", "proc-macro-error", @@ -3131,23 +3135,22 @@ dependencies = [ [[package]] name = "tempfile" -version = "3.6.0" +version = "3.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31c0432476357e58790aaa47a8efb0c5138f137343f3b5f23bd36a27e3b0a6d6" +checksum = "04cbcdd0c794ebb0d4cf35e88edd2f7d2c4c3e9a5a6dab322839b321c6a87a64" dependencies = [ - "autocfg", "cfg-if", "fastrand", - "redox_syscall", - "rustix 0.37.25", - "windows-sys 0.48.0", + "once_cell", + "rustix", + "windows-sys 0.59.0", ] [[package]] name = "termcolor" -version = "1.2.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be55cf8942feac5c765c2c993422806843c9a9a45d4d5c407ad6dd2ea95eb9b6" +checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" dependencies = [ "winapi-util", ] @@ -3158,28 +3161,28 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "21bebf2b7c9e0a515f6e0f8c51dc0f8e4696391e6f1ff30379559f8365fb0df7" dependencies = [ - "rustix 0.38.13", + "rustix", "windows-sys 0.48.0", ] [[package]] name = "thiserror" -version = "1.0.55" +version = "1.0.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e3de26b0965292219b4287ff031fcba86837900fe9cd2b34ea8ad893c0953d2" +checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.55" +version = "1.0.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "268026685b2be38d7103e9e507c938a1fcb3d7e6eb15e87870b617bf37b6d581" +checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.75", ] [[package]] @@ -3222,9 +3225,9 @@ dependencies = [ [[package]] name = "tinyvec" -version = "1.6.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938" dependencies = [ "tinyvec_macros", ] @@ -3250,32 +3253,31 @@ dependencies = [ [[package]] name = "tokio" -version = "1.38.1" +version = "1.39.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb2caba9f80616f438e09748d5acda951967e1ea58508ef53d9c6402485a46df" +checksum = "9babc99b9923bfa4804bd74722ff02c0381021eafa4db9949217e3be8e84fff5" dependencies = [ "backtrace", "bytes", "libc", "mio", - "num_cpus", "parking_lot", "pin-project-lite", "signal-hook-registry", "socket2", "tokio-macros", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] name = "tokio-macros" -version = "2.3.0" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f5ae998a069d4b5aba8ee9dad856af7d520c3699e6159b185c2acd48155d39a" +checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.75", ] [[package]] @@ -3301,9 +3303,9 @@ dependencies = [ [[package]] name = "tokio-stream" -version = "0.1.14" +version = "0.1.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "397c988d37662c7dda6d2208364a706264bf3d6138b11d436cbac0ad38832842" +checksum = "267ac89e0bec6e691e5813911606935d77c476ff49024f98abcea3e7b15e37af" dependencies = [ "futures-core", "pin-project-lite", @@ -3324,33 +3326,60 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.8" +version = "0.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "806fe8c2c87eccc8b3267cbae29ed3ab2d0bd37fca70ab622e46aaa9375ddb7d" +checksum = "9cf6b47b3771c49ac75ad09a6162f53ad4b8088b76ac60e8ec1455b31a189fe1" dependencies = [ "bytes", "futures-core", "futures-sink", "pin-project-lite", "tokio", - "tracing", +] + +[[package]] +name = "toml" +version = "0.8.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1ed1f98e3fdc28d6d910e6737ae6ab1a93bf1985935a1193e68f93eeb68d24e" +dependencies = [ + "serde", + "serde_spanned", + "toml_datetime", + "toml_edit 0.22.20", ] [[package]] name = "toml_datetime" -version = "0.6.3" +version = "0.6.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_edit" +version = "0.19.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b" +checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" +dependencies = [ + "indexmap", + "toml_datetime", + "winnow 0.5.40", +] [[package]] name = "toml_edit" -version = "0.19.14" +version = "0.22.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8123f27e969974a3dfba720fdb560be359f57b44302d280ba72e76a74480e8a" +checksum = "583c44c02ad26b0c3f3066fe629275e50627026c51ac2e595cca4c230ce1ce1d" dependencies = [ "indexmap", + "serde", + "serde_spanned", "toml_datetime", - "winnow", + "winnow 0.6.18", ] [[package]] @@ -3369,13 +3398,26 @@ dependencies = [ "tracing", ] +[[package]] +name = "tower" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36b837f86b25d7c0d7988f00a54e74739be6477f2aac6201b8f429a7569991b7" +dependencies = [ + "futures-util", + "pin-project-lite", + "tokio", + "tower-layer", + "tower-service", +] + [[package]] name = "tower-http" version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e9cd434a998747dd2c4276bc96ee2e0c7a2eadf3cae88e52be55a05fa9053f5" dependencies = [ - "bitflags 2.4.0", + "bitflags", "bytes", "futures-util", "http 1.1.0", @@ -3396,15 +3438,15 @@ dependencies = [ [[package]] name = "tower-layer" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c20c8dbed6283a09604c3e69b4b7eeb54e298b8a600d4d5ecb5ad39de609f1d0" +checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" [[package]] name = "tower-service" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" +checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" [[package]] name = "tracing" @@ -3426,7 +3468,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.75", ] [[package]] @@ -3440,23 +3482,22 @@ dependencies = [ [[package]] name = "try-lock" -version = "0.2.4" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" [[package]] name = "trybuild" -version = "1.0.86" +version = "1.0.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8419ecd263363827c5730386f418715766f584e2f874d32c23c5b00bd9727e7e" +checksum = "207aa50d36c4be8d8c6ea829478be44a372c6a77669937bb39c698e52f1491e8" dependencies = [ - "basic-toml", "glob", - "once_cell", "serde", "serde_derive", "serde_json", "termcolor", + "toml", ] [[package]] @@ -3488,45 +3529,45 @@ dependencies = [ [[package]] name = "typenum" -version = "1.16.0" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba" +checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" [[package]] name = "unicase" -version = "2.6.0" +version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50f37be617794602aabbeee0be4f259dc1778fabe05e2d67ee8f79326d5cb4f6" +checksum = "f7d2d4dafb69621809a81864c9c1b864479e1235c0dd4e199924b9742439ed89" dependencies = [ "version_check", ] [[package]] name = "unicode-bidi" -version = "0.3.13" +version = "0.3.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" +checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" [[package]] name = "unicode-ident" -version = "1.0.9" +version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b15811caf2415fb889178633e7724bad2509101cde276048e013b9def5e51fa0" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" [[package]] name = "unicode-normalization" -version = "0.1.22" +version = "0.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" +checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5" dependencies = [ "tinyvec", ] [[package]] name = "unicode-width" -version = "0.1.10" +version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b" +checksum = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85" [[package]] name = "untrusted" @@ -3536,9 +3577,9 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "url" -version = "2.4.0" +version = "2.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50bff7831e19200a85b17131d085c25d7811bc4e186efdaf54bbd132994a88cb" +checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" dependencies = [ "form_urlencoded", "idna", @@ -3559,15 +3600,15 @@ checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" [[package]] name = "utf8-width" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5190c9442dcdaf0ddd50f37420417d219ae5261bbf5db120d0f9bab996c9cba1" +checksum = "86bd8d4e895da8537e5315b8254664e6b769c4ff3db18321b297a1e7004392e3" [[package]] name = "utf8parse" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" +checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "uuid" @@ -3586,9 +3627,19 @@ checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" [[package]] name = "version_check" -version = "0.9.4" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[package]] +name = "walkdir" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" +dependencies = [ + "same-file", + "winapi-util", +] [[package]] name = "want" @@ -3609,7 +3660,7 @@ dependencies = [ "futures-channel", "futures-util", "headers", - "http 0.2.9", + "http 0.2.12", "hyper 0.14.30", "log", "mime", @@ -3636,34 +3687,35 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.92" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" +checksum = "a82edfc16a6c469f5f44dc7b571814045d60404b55a0ee849f9bcfa2e63dd9b5" dependencies = [ "cfg-if", + "once_cell", "wasm-bindgen-macro", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.92" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da" +checksum = "9de396da306523044d3302746f1208fa71d7532227f15e347e2d93e4145dd77b" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.75", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.42" +version = "0.4.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76bc14366121efc8dbb487ab05bcc9d346b3b5ec0eaa76e46594cabbe51762c0" +checksum = "61e9300f63a621e96ed275155c108eb6f843b6a26d053f122ab69724559dc8ed" dependencies = [ "cfg-if", "js-sys", @@ -3673,9 +3725,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.92" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" +checksum = "585c4c91a46b072c92e908d99cb1dcdf95c5218eeb6f3bf1efa991ee7a68cccf" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -3683,31 +3735,32 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.92" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" +checksum = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.75", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.92" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" +checksum = "c62a0a307cb4a311d3a07867860911ca130c3494e8c2719593806c08bc5d0484" [[package]] name = "wasm-bindgen-test" -version = "0.3.42" +version = "0.3.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9bf62a58e0780af3e852044583deee40983e5886da43a271dd772379987667b" +checksum = "68497a05fb21143a08a7d24fc81763384a3072ee43c44e86aad1744d6adef9d9" dependencies = [ "console_error_panic_hook", "js-sys", + "minicov", "scoped-tls", "wasm-bindgen", "wasm-bindgen-futures", @@ -3716,13 +3769,13 @@ dependencies = [ [[package]] name = "wasm-bindgen-test-macro" -version = "0.3.42" +version = "0.3.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7f89739351a2e03cb94beb799d47fb2cac01759b40ec441f7de39b00cbf7ef0" +checksum = "4b8220be1fa9e4c889b30fd207d4906657e7e90b12e0e6b0c8b8d8709f5de021" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.75", ] [[package]] @@ -3738,9 +3791,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.69" +version = "0.3.70" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77afa9a11836342370f4817622a2f0f418b134426d91a82dfb48f532d2ec13ef" +checksum = "26fdeaafd9bd129f65e7c031593c24d62186301e0c72c8978fa1678be7d532c0" dependencies = [ "js-sys", "wasm-bindgen", @@ -3798,67 +3851,51 @@ dependencies = [ ] [[package]] -name = "winapi" -version = "0.3.9" +name = "winapi-util" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" dependencies = [ - "winapi-i686-pc-windows-gnu", - "winapi-x86_64-pc-windows-gnu", + "windows-sys 0.59.0", ] [[package]] -name = "winapi-i686-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" - -[[package]] -name = "winapi-util" -version = "0.1.5" +name = "windows-core" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" +checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" dependencies = [ - "winapi", + "windows-targets 0.52.6", ] [[package]] -name = "winapi-x86_64-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" - -[[package]] -name = "windows" -version = "0.48.0" +name = "windows-registry" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f" +checksum = "e400001bb720a623c1c69032f8e3e4cf09984deec740f007dd2b03ec864804b0" dependencies = [ - "windows-targets 0.48.1", + "windows-result", + "windows-strings", + "windows-targets 0.52.6", ] [[package]] -name = "windows-sys" -version = "0.42.0" +name = "windows-result" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7" +checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e" dependencies = [ - "windows_aarch64_gnullvm 0.42.2", - "windows_aarch64_msvc 0.42.2", - "windows_i686_gnu 0.42.2", - "windows_i686_msvc 0.42.2", - "windows_x86_64_gnu 0.42.2", - "windows_x86_64_gnullvm 0.42.2", - "windows_x86_64_msvc 0.42.2", + "windows-targets 0.52.6", ] [[package]] -name = "windows-sys" -version = "0.45.0" +name = "windows-strings" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" +checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" dependencies = [ - "windows-targets 0.42.2", + "windows-result", + "windows-targets 0.52.6", ] [[package]] @@ -3867,7 +3904,7 @@ version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" dependencies = [ - "windows-targets 0.48.1", + "windows-targets 0.48.5", ] [[package]] @@ -3880,33 +3917,27 @@ dependencies = [ ] [[package]] -name = "windows-targets" -version = "0.42.2" +name = "windows-sys" +version = "0.59.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" dependencies = [ - "windows_aarch64_gnullvm 0.42.2", - "windows_aarch64_msvc 0.42.2", - "windows_i686_gnu 0.42.2", - "windows_i686_msvc 0.42.2", - "windows_x86_64_gnu 0.42.2", - "windows_x86_64_gnullvm 0.42.2", - "windows_x86_64_msvc 0.42.2", + "windows-targets 0.52.6", ] [[package]] name = "windows-targets" -version = "0.48.1" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05d4b17490f70499f20b9e791dcf6a299785ce8af4d709018206dc5b4953e95f" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" dependencies = [ - "windows_aarch64_gnullvm 0.48.0", - "windows_aarch64_msvc 0.48.0", - "windows_i686_gnu 0.48.0", - "windows_i686_msvc 0.48.0", - "windows_x86_64_gnu 0.48.0", - "windows_x86_64_gnullvm 0.48.0", - "windows_x86_64_msvc 0.48.0", + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", ] [[package]] @@ -3927,15 +3958,9 @@ dependencies = [ [[package]] name = "windows_aarch64_gnullvm" -version = "0.42.2" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" [[package]] name = "windows_aarch64_gnullvm" @@ -3945,15 +3970,9 @@ checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" [[package]] name = "windows_aarch64_msvc" -version = "0.42.2" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" [[package]] name = "windows_aarch64_msvc" @@ -3963,15 +3982,9 @@ checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" [[package]] name = "windows_i686_gnu" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" - -[[package]] -name = "windows_i686_gnu" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" [[package]] name = "windows_i686_gnu" @@ -3987,15 +4000,9 @@ checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" [[package]] name = "windows_i686_msvc" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" - -[[package]] -name = "windows_i686_msvc" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" [[package]] name = "windows_i686_msvc" @@ -4005,15 +4012,9 @@ checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" [[package]] name = "windows_x86_64_gnu" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" [[package]] name = "windows_x86_64_gnu" @@ -4023,15 +4024,9 @@ checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" [[package]] name = "windows_x86_64_gnullvm" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" [[package]] name = "windows_x86_64_gnullvm" @@ -4041,15 +4036,9 @@ checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" [[package]] name = "windows_x86_64_msvc" -version = "0.42.2" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] name = "windows_x86_64_msvc" @@ -4059,21 +4048,20 @@ checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "winnow" -version = "0.5.4" +version = "0.5.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acaaa1190073b2b101e15083c38ee8ec891b5e05cbee516521e94ec008f61e64" +checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" dependencies = [ "memchr", ] [[package]] -name = "winreg" -version = "0.52.0" +name = "winnow" +version = "0.6.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a277a57398d4bfa075df44f501a17cfdf8542d224f0d36095a2adc7aee4ef0a5" +checksum = "68a9bda4691f099d435ad181000724da8e5899daa10713c2d432552b9ccd3a6f" dependencies = [ - "cfg-if", - "windows-sys 0.48.0", + "memchr", ] [[package]] @@ -4123,7 +4111,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.72", + "syn 2.0.75", "trybuild", "yew-agent", ] @@ -4136,7 +4124,7 @@ checksum = "58865a8f2470a6ad839274e05c9627170d32930f39a2348f8c425880a6131792" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.75", ] [[package]] @@ -4149,7 +4137,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.72", + "syn 2.0.75", "trybuild", "yew", ] @@ -4179,7 +4167,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.72", + "syn 2.0.75", "trybuild", "yew-router", ] @@ -4208,6 +4196,27 @@ dependencies = [ "yew-agent", ] +[[package]] +name = "zerocopy" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" +dependencies = [ + "byteorder", + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.75", +] + [[package]] name = "zeroize" version = "1.8.1" diff --git a/ci/build-examples.sh b/ci/build-examples.sh index 843b1870ebc..dfd0cd8db59 100755 --- a/ci/build-examples.sh +++ b/ci/build-examples.sh @@ -27,7 +27,7 @@ for path in examples/*; do dist_dir="$output/$example" export RUSTFLAGS="--cfg nightly_yew" - trunk build --release --dist "$dist_dir" --public-url "$PUBLIC_URL_PREFIX/$example" + trunk build --release --dist "$dist_dir" --public-url "$PUBLIC_URL_PREFIX/$example" --no-sri # check that there are no undefined symbols. Those generate an import .. from 'env', # which isn't available in the browser. diff --git a/examples/async_clock/Cargo.toml b/examples/async_clock/Cargo.toml index 645542818fa..1127e5c36e9 100644 --- a/examples/async_clock/Cargo.toml +++ b/examples/async_clock/Cargo.toml @@ -9,4 +9,4 @@ license = "MIT OR Apache-2.0" yew = { path = "../../packages/yew", features = ["csr"] } chrono = "0.4" futures = "0.3" -gloo-net = "0.5" +gloo-net = "0.6" diff --git a/examples/dyn_create_destroy_apps/Cargo.toml b/examples/dyn_create_destroy_apps/Cargo.toml index f28250cb270..f701460f2c2 100644 --- a/examples/dyn_create_destroy_apps/Cargo.toml +++ b/examples/dyn_create_destroy_apps/Cargo.toml @@ -13,7 +13,7 @@ gloo = "0.11" wasm-bindgen = "0.2" [dependencies.web-sys] -version = "0.3.69" +version = "0.3.70" features = [ "Document", "Element", diff --git a/examples/futures/Cargo.toml b/examples/futures/Cargo.toml index 99a8b43f28f..eff1da1f642 100644 --- a/examples/futures/Cargo.toml +++ b/examples/futures/Cargo.toml @@ -6,7 +6,7 @@ edition = "2021" license = "MIT OR Apache-2.0" [dependencies] -pulldown-cmark = { version = "0.9", default-features = false } +pulldown-cmark = { version = "0.12", default-features = false } wasm-bindgen = "0.2" wasm-bindgen-futures = "0.4" yew = { path = "../../packages/yew", features = ["csr"] } diff --git a/examples/futures/src/main.rs b/examples/futures/src/main.rs index e1e6cb7694c..3abc455658b 100644 --- a/examples/futures/src/main.rs +++ b/examples/futures/src/main.rs @@ -43,9 +43,9 @@ pub enum FetchState { /// Consult the following for an example of the fetch api by the team behind web_sys: /// https://rustwasm.github.io/wasm-bindgen/examples/fetch.html async fn fetch_markdown(url: &'static str) -> Result { - let mut opts = RequestInit::new(); - opts.method("GET"); - opts.mode(RequestMode::Cors); + let opts = RequestInit::new(); + opts.set_method("GET"); + opts.set_mode(RequestMode::Cors); let request = Request::new_with_str_and_init(url, &opts)?; diff --git a/examples/futures/src/markdown.rs b/examples/futures/src/markdown.rs index afdad6bf98f..878396d9355 100644 --- a/examples/futures/src/markdown.rs +++ b/examples/futures/src/markdown.rs @@ -1,199 +1,258 @@ /// Original author of this code is [Nathan Ringo](https://github.com/remexre) /// Source: https://github.com/acmumn/mentoring/blob/master/web-client/src/view/markdown.rs -use std::rc::Rc; - -use pulldown_cmark::{Alignment, CodeBlockKind, Event, Options, Parser, Tag}; +use pulldown_cmark::{Alignment, CodeBlockKind, Event, Options, Parser, Tag, TagEnd}; use yew::virtual_dom::{VNode, VTag, VText}; -use yew::{html, Classes, Html}; - -/// Adds a class to the VTag. -/// You can also provide multiple classes separated by ascii whitespaces. -/// -/// Note that this has a complexity of O(n), -/// where n is the number of classes already in VTag plus -/// the number of classes to be added. -fn add_class(vtag: &mut VTag, class: impl Into) { - let mut classes: Classes = vtag - .attributes - .iter() - .find(|(k, _)| *k == "class") - .map(|(_, v)| Classes::from(v.to_owned())) - .unwrap_or_default(); - classes.push(class); - vtag.add_attribute("class", classes.to_string()); +use yew::Html; + +struct TableContext { + next_cell_index: usize, + in_head: bool, + has_body: bool, + alignment: Vec, } -/// Renders a string of Markdown to HTML with the default options (footnotes -/// disabled, tables enabled). -pub fn render_markdown(src: &str) -> Html { - let mut elems = vec![]; - let mut spine = vec![]; - - macro_rules! add_child { - ($child:expr) => {{ - let l = spine.len(); - assert_ne!(l, 0); - spine[l - 1].add_child($child); - }}; +struct TagWriter { + root_children: Vec, + spine: Vec, + table_ctx: Option, +} + +impl TagWriter { + fn new() -> Self { + Self { + root_children: vec![], + spine: vec![], + table_ctx: None, + } } - let mut options = Options::empty(); - options.insert(Options::ENABLE_TABLES); + fn finish(mut self) -> VNode { + assert!( + self.spine.is_empty(), + "expected all nested elements to be closed" + ); + if self.root_children.len() == 1 { + self.root_children.pop().unwrap() + } else { + self.root_children.into_iter().collect() + } + } - for ev in Parser::new_ext(src, options) { - match ev { - Event::Start(tag) => { - spine.push(make_tag(tag)); - } - Event::End(tag) => { - // TODO Verify stack end. - let l = spine.len(); - assert!(l >= 1); - let mut top = spine.pop().unwrap(); - if let Tag::CodeBlock(_) = tag { - let mut pre = VTag::new("pre"); - pre.add_child(top.into()); - top = pre; - } else if let Tag::Table(aligns) = tag { - if let Some(top_children) = top.children_mut() { - for r in top_children.to_vlist_mut().iter_mut() { - if let VNode::VTag(ref mut vtag) = r { - if let Some(vtag_children) = Rc::make_mut(vtag).children_mut() { - for (i, c) in - vtag_children.to_vlist_mut().iter_mut().enumerate() - { - if let VNode::VTag(ref mut vtag) = c { - match aligns[i] { - Alignment::None => {} - Alignment::Left => { - add_class(Rc::make_mut(vtag), "text-left") - } - Alignment::Center => { - add_class(Rc::make_mut(vtag), "text-center") - } - Alignment::Right => { - add_class(Rc::make_mut(vtag), "text-right") - } - } - } - } - } - } - } + fn add_child(&mut self, child: VNode) { + if let Some(host) = self.spine.last_mut() { + host.add_child(child); + } else { + self.root_children.push(child); + } + } + + fn pop_spine(&mut self) { + let top = self.spine.pop().expect("an element to close"); + self.add_child(top.into()); + } + + fn get_table_ctx(&mut self) -> &mut TableContext { + self.table_ctx.as_mut().expect("a table context") + } + + fn open_table_ctx(&mut self, alignment: Vec) { + assert!(self.table_ctx.is_none(), "nested tables not supported"); + self.table_ctx = Some(TableContext { + next_cell_index: 0, + in_head: false, + has_body: false, + alignment, + }); + } + + fn close_table_ctx(&mut self) -> TableContext { + self.table_ctx.take().expect("expected to be in a table") + } + + fn start_tag(&mut self, tag: Tag) { + let wrapper = match tag { + Tag::Paragraph => VTag::new("p"), + Tag::Heading { level, .. } => VTag::new(level.to_string()), + Tag::BlockQuote(_) => { + let mut el = VTag::new("blockquote"); + el.add_attribute("class", "blockquote"); + el + } + Tag::CodeBlock(code_block_kind) => { + self.spine.push(VTag::new("pre")); + + let mut el = VTag::new("code"); + if let CodeBlockKind::Fenced(lang) = code_block_kind { + // Different color schemes may be used for different code blocks, + // but a different library (likely js based at the moment) would be necessary to + // actually provide the highlighting support by locating the + // language classes and applying dom transforms on their contents. + match lang.as_ref() { + "html" => el.add_attribute("class", "html-language"), + "rust" => el.add_attribute("class", "rust-language"), + "java" => el.add_attribute("class", "java-language"), + "c" => el.add_attribute("class", "c-language"), + _ => {} // Add your own language highlighting support + }; + } + + el + } + Tag::List(None) => VTag::new("ul"), + Tag::List(Some(1)) => VTag::new("ol"), + Tag::List(Some(ref start)) => { + let mut el = VTag::new("ol"); + el.add_attribute("start", start.to_string()); + el + } + Tag::Item => VTag::new("li"), + Tag::Table(alignment) => { + self.open_table_ctx(alignment); + let mut el = VTag::new("table"); + el.add_attribute("class", "table"); + el + } + Tag::TableHead => { + let ctx = self.get_table_ctx(); + ctx.next_cell_index = 0; + ctx.in_head = true; + self.spine.push(VTag::new("thead")); + VTag::new("tr") + } + Tag::TableRow => { + let ctx = self.get_table_ctx(); + ctx.next_cell_index = 0; + if !ctx.has_body { + ctx.has_body = true; + self.spine.push(VTag::new("tbody")); + } + VTag::new("tr") + } + Tag::TableCell => { + let ctx = self.get_table_ctx(); + let idx = ctx.next_cell_index; + ctx.next_cell_index += 1; + + let mut tag = if ctx.in_head { + let mut th = VTag::new("th"); + th.add_attribute("scope", "col"); + th + } else { + VTag::new("td") + }; + match &ctx.alignment[idx] { + Alignment::None => {} + Alignment::Left => { + tag.add_attribute("class", "text-left"); + } + Alignment::Center => { + tag.add_attribute("class", "text-center"); } - } else if let Tag::TableHead = tag { - if let Some(top_children) = top.children_mut() { - for c in top_children.to_vlist_mut().iter_mut() { - if let VNode::VTag(ref mut vtag) = c { - // TODO - // vtag.tag = "th".into(); - Rc::make_mut(vtag).add_attribute("scope", "col"); - } - } + Alignment::Right => { + tag.add_attribute("class", "text-right"); } } - if l == 1 { - elems.push(top); - } else { - spine[l - 2].add_child(top.into()); + tag + } + Tag::Emphasis => { + let mut el = VTag::new("span"); + el.add_attribute("class", "font-italic"); + el + } + Tag::Strong => { + let mut el = VTag::new("span"); + el.add_attribute("class", "font-weight-bold"); + el + } + Tag::Link { + ref dest_url, + ref title, + link_type: _, + id: _, + } => { + let mut el = VTag::new("a"); + el.add_attribute("href", dest_url.to_string()); + let title = title.clone().into_string(); + if !title.is_empty() { + el.add_attribute("title", title); } + el } - Event::Text(text) => add_child!(VText::new(text.to_string()).into()), - Event::Rule => add_child!(VTag::new("hr").into()), - Event::SoftBreak => add_child!(VText::new("\n").into()), - Event::HardBreak => add_child!(VTag::new("br").into()), - _ => println!("Unknown event: {ev:#?}"), - } + Tag::Image { + ref dest_url, + ref title, + link_type: _, + id: _, + } => { + let mut el = VTag::new("img"); + el.add_attribute("src", dest_url.to_string()); + let title = title.clone().into_string(); + if !title.is_empty() { + el.add_attribute("title", title); + } + el + } + Tag::FootnoteDefinition(ref _footnote_id) => VTag::new("span"), // Footnotes are not + // rendered as anything + // special + Tag::Strikethrough => { + let mut el = VTag::new("span"); + el.add_attribute("class", "text-decoration-strikethrough"); + el + } + Tag::HtmlBlock => VTag::new("div"), + _ => { + gloo::console::log!(format!("Unhandled tag: {tag:#?}")); + VTag::new("div") + } + }; + self.spine.push(wrapper); } - if elems.len() == 1 { - VNode::VTag(Rc::new(elems.pop().unwrap())) - } else { - html! { -
{ for elems.into_iter() }
+ fn end_tag(&mut self, tag: TagEnd) { + self.pop_spine(); + match tag { + TagEnd::CodeBlock => { + self.pop_spine(); // Close
+            }
+            TagEnd::TableHead => {
+                self.pop_spine(); // Close 
+                self.get_table_ctx().in_head = false;
+            }
+            TagEnd::Table => {
+                let ctx = self.close_table_ctx();
+                if ctx.has_body {
+                    self.pop_spine(); // Close 
+                }
+            }
+            _ => {}
         }
     }
+
+    fn write_event(&mut self, ev: Event) {
+        match ev {
+            Event::Start(tag) => self.start_tag(tag),
+            Event::End(tag) => self.end_tag(tag),
+            Event::Text(text) => self.add_child(VText::new(text.to_string()).into()),
+            Event::Rule => self.add_child(VTag::new("hr").into()),
+            Event::SoftBreak => self.add_child(VText::new("\n").into()),
+            Event::HardBreak => self.add_child(VTag::new("br").into()),
+            _ => gloo::console::log!(format!("Unhandled event: {ev:#?}")),
+        };
+    }
 }
 
-fn make_tag(t: Tag) -> VTag {
-    match t {
-        Tag::Paragraph => VTag::new("p"),
-        Tag::Heading(n, ..) => VTag::new(n.to_string()),
-        Tag::BlockQuote => {
-            let mut el = VTag::new("blockquote");
-            el.add_attribute("class", "blockquote");
-            el
-        }
-        Tag::CodeBlock(code_block_kind) => {
-            let mut el = VTag::new("code");
-
-            if let CodeBlockKind::Fenced(lang) = code_block_kind {
-                // Different color schemes may be used for different code blocks,
-                // but a different library (likely js based at the moment) would be necessary to
-                // actually provide the highlighting support by locating the
-                // language classes and applying dom transforms on their contents.
-                match lang.as_ref() {
-                    "html" => el.add_attribute("class", "html-language"),
-                    "rust" => el.add_attribute("class", "rust-language"),
-                    "java" => el.add_attribute("class", "java-language"),
-                    "c" => el.add_attribute("class", "c-language"),
-                    _ => {} // Add your own language highlighting support
-                };
-            }
+/// Renders a string of Markdown to HTML with the default options (footnotes
+/// disabled, tables enabled).
+pub fn render_markdown(src: &str) -> Html {
+    let mut writer = TagWriter::new();
 
-            el
-        }
-        Tag::List(None) => VTag::new("ul"),
-        Tag::List(Some(1)) => VTag::new("ol"),
-        Tag::List(Some(ref start)) => {
-            let mut el = VTag::new("ol");
-            el.add_attribute("start", start.to_string());
-            el
-        }
-        Tag::Item => VTag::new("li"),
-        Tag::Table(_) => {
-            let mut el = VTag::new("table");
-            el.add_attribute("class", "table");
-            el
-        }
-        Tag::TableHead => VTag::new("th"),
-        Tag::TableRow => VTag::new("tr"),
-        Tag::TableCell => VTag::new("td"),
-        Tag::Emphasis => {
-            let mut el = VTag::new("span");
-            el.add_attribute("class", "font-italic");
-            el
-        }
-        Tag::Strong => {
-            let mut el = VTag::new("span");
-            el.add_attribute("class", "font-weight-bold");
-            el
-        }
-        Tag::Link(_link_type, ref href, ref title) => {
-            let mut el = VTag::new("a");
-            el.add_attribute("href", href.to_string());
-            let title = title.clone().into_string();
-            if !title.is_empty() {
-                el.add_attribute("title", title);
-            }
-            el
-        }
-        Tag::Image(_link_type, ref src, ref title) => {
-            let mut el = VTag::new("img");
-            el.add_attribute("src", src.to_string());
-            let title = title.clone().into_string();
-            if !title.is_empty() {
-                el.add_attribute("title", title);
-            }
-            el
-        }
-        Tag::FootnoteDefinition(ref _footnote_id) => VTag::new("span"), // Footnotes are not
-        // rendered as anything
-        // special
-        Tag::Strikethrough => {
-            let mut el = VTag::new("span");
-            el.add_attribute("class", "text-decoration-strikethrough");
-            el
-        }
+    let mut options = Options::empty();
+    options.insert(Options::ENABLE_TABLES);
+
+    for ev in Parser::new_ext(src, options) {
+        writer.write_event(ev);
     }
+
+    writer.finish()
 }
diff --git a/examples/password_strength/Cargo.toml b/examples/password_strength/Cargo.toml
index 7dbfd972904..97c2269ed60 100644
--- a/examples/password_strength/Cargo.toml
+++ b/examples/password_strength/Cargo.toml
@@ -9,7 +9,7 @@ edition = "2021"
 yew = { path = "../../packages/yew", features = ["csr"] }
 zxcvbn = "3.1.0"
 time = "0.3.36"
-js-sys = "0.3.64"
+js-sys = "0.3.70"
 web-sys = { version = "0.3", features = ["Event","EventTarget","InputEvent"] }
 wasm-bindgen = "0.2"
 chrono = { version = "0.4", features = ["wasmbind"] }
diff --git a/examples/simple_ssr/Cargo.toml b/examples/simple_ssr/Cargo.toml
index b4c93299a21..14bb1aaf850 100644
--- a/examples/simple_ssr/Cargo.toml
+++ b/examples/simple_ssr/Cargo.toml
@@ -14,8 +14,8 @@ required-features = ["ssr"]
 
 [dependencies]
 yew = { path = "../../packages/yew" }
-reqwest = { version = "0.12.5", features = ["json"] }
-serde = { version = "1.0.193", features = ["derive"] }
+reqwest = { version = "0.12.7", features = ["json"] }
+serde = { version = "1.0.208", features = ["derive"] }
 uuid = { version = "1.10.0", features = ["serde"] }
 futures = "0.3"
 bytes = "1.7"
diff --git a/examples/ssr_router/Cargo.toml b/examples/ssr_router/Cargo.toml
index dd5908a2f78..db64e8f1ed2 100644
--- a/examples/ssr_router/Cargo.toml
+++ b/examples/ssr_router/Cargo.toml
@@ -18,7 +18,7 @@ yew = { path = "../../packages/yew" }
 function_router = { path = "../function_router" }
 log = "0.4"
 futures = { version = "0.3", features = ["std"], default-features = false }
-hyper-util = "0.1.6"
+hyper-util = "0.1.7"
 
 [target.'cfg(target_arch = "wasm32")'.dependencies]
 wasm-bindgen-futures = "0.4"
@@ -27,9 +27,9 @@ wasm-logger = "0.2"
 [target.'cfg(not(target_arch = "wasm32"))'.dependencies]
 tokio = { version = "1.38.1", features = ["full"] }
 axum = "0.7"
-tower = { version = "0.4", features = ["make"] }
+tower = { version = "0.5", features = ["make"] }
 tower-http = { version = "0.5", features = ["fs"] }
-env_logger = "0.10"
+env_logger = "0.11"
 clap = { version = "4", features = ["derive"] }
 hyper = { version = "1.4", features = ["server", "http1"] }
 
diff --git a/examples/timer_functional/Cargo.toml b/examples/timer_functional/Cargo.toml
index a546d1f296c..d0b9588a00e 100644
--- a/examples/timer_functional/Cargo.toml
+++ b/examples/timer_functional/Cargo.toml
@@ -7,5 +7,5 @@ license = "MIT OR Apache-2.0"
 
 [dependencies]
 gloo = "0.11.0"
-js-sys = "0.3.64"
+js-sys = "0.3.70"
 yew = { path = "../../packages/yew", features = ["csr"] }
diff --git a/examples/web_worker_fib/Cargo.toml b/examples/web_worker_fib/Cargo.toml
index 74291540861..d07c5755fc3 100644
--- a/examples/web_worker_fib/Cargo.toml
+++ b/examples/web_worker_fib/Cargo.toml
@@ -11,4 +11,4 @@ wasm-bindgen = "0.2"
 js-sys = "0.3"
 web-sys = { version = "0.3", features = [ "HtmlInputElement" ] }
 serde = { version = "1", features = ["derive"] }
-postcard = "1.0.8"
+postcard = "1.0.10"
diff --git a/examples/web_worker_prime/Cargo.toml b/examples/web_worker_prime/Cargo.toml
index d3f998db5f5..704ee388704 100644
--- a/examples/web_worker_prime/Cargo.toml
+++ b/examples/web_worker_prime/Cargo.toml
@@ -8,4 +8,4 @@ yew-agent = { path = "../../packages/yew-agent" }
 yew = { path = "../../packages/yew", features = ["csr"] }
 futures = "0.3.30"
 primes = "0.4.0"
-serde = { version = "1.0.193", features = ["derive"] }
+serde = { version = "1.0.208", features = ["derive"] }
diff --git a/packages/yew-agent/Cargo.toml b/packages/yew-agent/Cargo.toml
index 8848161b16f..f898776f41c 100644
--- a/packages/yew-agent/Cargo.toml
+++ b/packages/yew-agent/Cargo.toml
@@ -20,4 +20,4 @@ futures = "0.3"
 yew-agent-macro = { version = "0.2", path = "../yew-agent-macro" }
 
 [dev-dependencies]
-serde = "1.0.193"
+serde = "1.0.208"
diff --git a/packages/yew-macro/tests/function_component_attr/generic-pass.rs b/packages/yew-macro/tests/function_component_attr/generic-pass.rs
index 29df3007d46..40653add2f4 100644
--- a/packages/yew-macro/tests/function_component_attr/generic-pass.rs
+++ b/packages/yew-macro/tests/function_component_attr/generic-pass.rs
@@ -68,10 +68,10 @@ fn const_generics() -> ::yew::Html {
 }
 
 fn compile_pass() {
-    ::yew::html! {  a=10 /> };
-    ::yew::html! {  /> };
+    let _ = ::yew::html! {  a=10 /> };
+    let _ = ::yew::html! {  /> };
 
-    ::yew::html! {  /> };
+    let _ = ::yew::html! {  /> };
 }
 
 fn main() {}
diff --git a/packages/yew-macro/tests/hook_attr/hook-trait-item-pass.rs b/packages/yew-macro/tests/hook_attr/hook-trait-item-pass.rs
index 7fc8ae6dcc8..dcb7cf84476 100644
--- a/packages/yew-macro/tests/hook_attr/hook-trait-item-pass.rs
+++ b/packages/yew-macro/tests/hook_attr/hook-trait-item-pass.rs
@@ -11,7 +11,7 @@ pub trait MyTrait {
 
 #[yew::hook]
 pub fn use_query_state(
-    selector: impl yew::html::IntoPropValue,
+    _selector: impl yew::html::IntoPropValue,
 ) -> QueryState
 where
     Props: MyTrait,
diff --git a/packages/yew-macro/tests/html_macro/node-fail.stderr b/packages/yew-macro/tests/html_macro/node-fail.stderr
index 608f3a568c4..fc94b419875 100644
--- a/packages/yew-macro/tests/html_macro/node-fail.stderr
+++ b/packages/yew-macro/tests/html_macro/node-fail.stderr
@@ -4,7 +4,7 @@ error: only one root html element is allowed (hint: you can wrap multiple html e
 4 |     html! { "valid" "invalid" };
   |                     ^^^^^^^^^
 
-error: unexpected token
+error: unexpected token, expected `}`
  --> tests/html_macro/node-fail.rs:5:29
   |
 5 |     html! { { "valid" "invalid" } };
diff --git a/packages/yew/Cargo.toml b/packages/yew/Cargo.toml
index b63f17e01e8..6ba565a66eb 100644
--- a/packages/yew/Cargo.toml
+++ b/packages/yew/Cargo.toml
@@ -43,7 +43,7 @@ wasm-bindgen-futures = "0.4"
 tokio = { version = "1.38", features = ["rt"] }
 
 [dependencies.web-sys]
-version = "^0.3.69"
+version = "^0.3.70"
 features = [
   "AnimationEvent",
   "Document",
diff --git a/packages/yew/src/dom_bundle/subtree_root.rs b/packages/yew/src/dom_bundle/subtree_root.rs
index 83720fecddf..050816bab3a 100644
--- a/packages/yew/src/dom_bundle/subtree_root.rs
+++ b/packages/yew/src/dom_bundle/subtree_root.rs
@@ -152,8 +152,9 @@ impl EventListener {
 
         let callback = Closure::wrap(Box::new(callback) as Box);
         // defaults: { once: false }
-        let mut options = AddEventListenerOptions::new();
-        options.capture(true).passive(desc.passive);
+        let options = AddEventListenerOptions::new();
+        options.set_capture(true);
+        options.set_passive(desc.passive);
 
         target
             .add_event_listener_with_callback_and_add_event_listener_options(
diff --git a/tools/benchmark-hooks/Cargo.toml b/tools/benchmark-hooks/Cargo.toml
index ba0cadabb7c..d603f57a8f1 100644
--- a/tools/benchmark-hooks/Cargo.toml
+++ b/tools/benchmark-hooks/Cargo.toml
@@ -9,9 +9,9 @@ crate-type = ["cdylib"]
 
 [dependencies]
 rand = { version = "0.8.5", features = ["small_rng"] }
-getrandom = { version = "0.2.14", features = ["js"] }
+getrandom = { version = "0.2.15", features = ["js"] }
 wasm-bindgen = "0.2.92"
-web-sys = { version = "0.3.69", features = ["Window"]}
+web-sys = { version = "0.3.70", features = ["Window"]}
 yew = { version = "0.21.0", features = ["csr"], path = "../../packages/yew" }
 
 [package.metadata.wasm-pack.profile.release]
diff --git a/tools/benchmark-ssr/Cargo.toml b/tools/benchmark-ssr/Cargo.toml
index bc0afa2258a..4e389418882 100644
--- a/tools/benchmark-ssr/Cargo.toml
+++ b/tools/benchmark-ssr/Cargo.toml
@@ -10,9 +10,9 @@ yew = { path = "../../packages/yew", features = ["ssr"] }
 function_router = { path = "../../examples/function_router" }
 tokio = { version = "1.38", features = ["full"] }
 average = "0.15.1"
-tabled = "0.15.0"
+tabled = "0.16.0"
 indicatif = "0.17.8"
-serde = { version = "1.0.193", features = ["derive"] }
+serde = { version = "1.0.208", features = ["derive"] }
 serde_json = "1.0.109"
 clap = { version = "4", features = ["derive"] }
 
diff --git a/tools/benchmark-struct/Cargo.toml b/tools/benchmark-struct/Cargo.toml
index fc8475ef5b3..757046ab4cd 100644
--- a/tools/benchmark-struct/Cargo.toml
+++ b/tools/benchmark-struct/Cargo.toml
@@ -9,9 +9,9 @@ crate-type = ["cdylib"]
 
 [dependencies]
 rand = { version = "0.8.5", features = ["small_rng"] }
-getrandom = { version = "0.2.14", features = ["js"] }
+getrandom = { version = "0.2.15", features = ["js"] }
 wasm-bindgen = "0.2.92"
-web-sys = { version = "0.3.69", features = ["Window"]}
+web-sys = { version = "0.3.70", features = ["Window"]}
 yew = { version = "0.21.0", features = ["csr"], path = "../../packages/yew" }
 
 [package.metadata.wasm-pack.profile.release]
diff --git a/tools/website-test/Cargo.toml b/tools/website-test/Cargo.toml
index 1d5f0786063..dcc608bae68 100644
--- a/tools/website-test/Cargo.toml
+++ b/tools/website-test/Cargo.toml
@@ -10,7 +10,7 @@ rust-version = "1.62"
 yew-agent = { path = "../../packages/yew-agent/" }
 
 [dev-dependencies]
-derive_more = "0.99"
+derive_more = { version = "1.0", features = ["from"] }
 gloo = "0.11"
 js-sys = "0.3"
 wasm-bindgen = "0.2"

From aecde4bf63e273fe304612ed8da555a1c25153ff Mon Sep 17 00:00:00 2001
From: WorldSEnder 
Date: Fri, 23 Aug 2024 15:53:59 +0200
Subject: [PATCH 23/44] Provide reference ref for benchmark action and make it
 less spammy (#3716)

* provide reference ref for benchmark action

it's apparently not possible to also provide a PR number for the comment
to target, since that is automically determined by the action (and wrong
for workflow_run workflows)

See also: benchmark-action/github-action-benchmark#250

* guard benchmark action with performance label again

This check was removed in #2774 for simplicity, bring it back to spam less
---
 .github/workflows/benchmark.yml      | 1 +
 .github/workflows/post-benchmark.yml | 1 +
 2 files changed, 2 insertions(+)

diff --git a/.github/workflows/benchmark.yml b/.github/workflows/benchmark.yml
index 162d76d921b..84c2316f7bb 100644
--- a/.github/workflows/benchmark.yml
+++ b/.github/workflows/benchmark.yml
@@ -19,6 +19,7 @@ concurrency:
 
 jobs:
   benchmark:
+    if: github.event_name != 'pull_request' || contains(github.event.pull_request.labels.*.name, 'performance')
     runs-on: ubuntu-latest
 
     steps:
diff --git a/.github/workflows/post-benchmark.yml b/.github/workflows/post-benchmark.yml
index 538795f82bc..2350a74a843 100644
--- a/.github/workflows/post-benchmark.yml
+++ b/.github/workflows/post-benchmark.yml
@@ -48,3 +48,4 @@ jobs:
           # Enable job summary
           summary-always: true
           comment-always: true
+          ref: ${{ github.event.workflow_run.head_sha }}

From c0c8963f2f2cf915fbbcfc04e5925d1af067a46d Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Fri, 23 Aug 2024 19:59:18 +0500
Subject: [PATCH 24/44] Bump quote from 1.0.36 to 1.0.37 in the cargo-deps
 group (#3714)

Bumps the cargo-deps group with 1 update: [quote](https://github.com/dtolnay/quote).


Updates `quote` from 1.0.36 to 1.0.37
- [Release notes](https://github.com/dtolnay/quote/releases)
- [Commits](https://github.com/dtolnay/quote/compare/1.0.36...1.0.37)

---
updated-dependencies:
- dependency-name: quote
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-deps
...

Signed-off-by: dependabot[bot] 
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
 Cargo.lock | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/Cargo.lock b/Cargo.lock
index 42e7973cd14..c5eecfe4ca3 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -2515,9 +2515,9 @@ dependencies = [
 
 [[package]]
 name = "quote"
-version = "1.0.36"
+version = "1.0.37"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7"
+checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af"
 dependencies = [
  "proc-macro2",
 ]

From 2e3a0c37a45378bae83649487299bdc05e799882 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Fri, 23 Aug 2024 18:32:19 +0200
Subject: [PATCH 25/44] Bump oleksiyrudenko/gha-git-credentials from 2.1.1 to
 2.1.2 (#3696)

Bumps [oleksiyrudenko/gha-git-credentials](https://github.com/oleksiyrudenko/gha-git-credentials) from 2.1.1 to 2.1.2.
- [Release notes](https://github.com/oleksiyrudenko/gha-git-credentials/releases)
- [Changelog](https://github.com/OleksiyRudenko/gha-git-credentials/blob/master/CHANGELOG.md)
- [Commits](https://github.com/oleksiyrudenko/gha-git-credentials/compare/v2.1.1...v2.1.2)

---
updated-dependencies:
- dependency-name: oleksiyrudenko/gha-git-credentials
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] 
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
 .github/workflows/publish.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml
index 93a0676a141..11e55ea7821 100644
--- a/.github/workflows/publish.yml
+++ b/.github/workflows/publish.yml
@@ -31,7 +31,7 @@ jobs:
           fetch-depth: 0
 
       - name: Config Git
-        uses: oleksiyrudenko/gha-git-credentials@v2.1.1
+        uses: oleksiyrudenko/gha-git-credentials@v2.1.2
         with:
           token: "${{ secrets.YEWTEMPBOT_TOKEN }}"
 

From 1ba7f0b66c2595ad182fc125cf3f0ed066cafd8e Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Fri, 30 Aug 2024 20:03:14 +0500
Subject: [PATCH 26/44] Bump the cargo-deps group with 5 updates (#3717)

Bumps the cargo-deps group with 5 updates:

| Package | From | To |
| --- | --- | --- |
| [serde](https://github.com/serde-rs/serde) | `1.0.208` | `1.0.209` |
| [syn](https://github.com/dtolnay/syn) | `2.0.75` | `2.0.76` |
| [prettyplease](https://github.com/dtolnay/prettyplease) | `0.2.20` | `0.2.22` |
| [serde_json](https://github.com/serde-rs/json) | `1.0.125` | `1.0.127` |
| [serde_derive](https://github.com/serde-rs/serde) | `1.0.208` | `1.0.209` |


Updates `serde` from 1.0.208 to 1.0.209
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.208...v1.0.209)

Updates `syn` from 2.0.75 to 2.0.76
- [Release notes](https://github.com/dtolnay/syn/releases)
- [Commits](https://github.com/dtolnay/syn/compare/2.0.75...2.0.76)

Updates `prettyplease` from 0.2.20 to 0.2.22
- [Release notes](https://github.com/dtolnay/prettyplease/releases)
- [Commits](https://github.com/dtolnay/prettyplease/compare/0.2.20...0.2.22)

Updates `serde_json` from 1.0.125 to 1.0.127
- [Release notes](https://github.com/serde-rs/json/releases)
- [Commits](https://github.com/serde-rs/json/compare/1.0.125...1.0.127)

Updates `serde_derive` from 1.0.208 to 1.0.209
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.208...v1.0.209)

---
updated-dependencies:
- dependency-name: serde
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-deps
- dependency-name: syn
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-deps
- dependency-name: prettyplease
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-deps
- dependency-name: serde_json
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-deps
- dependency-name: serde_derive
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-deps
...

Signed-off-by: dependabot[bot] 
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
 Cargo.lock                           | 74 ++++++++++++++--------------
 examples/simple_ssr/Cargo.toml       |  2 +-
 examples/web_worker_prime/Cargo.toml |  2 +-
 packages/yew-agent/Cargo.toml        |  2 +-
 tools/benchmark-ssr/Cargo.toml       |  4 +-
 5 files changed, 42 insertions(+), 42 deletions(-)

diff --git a/Cargo.lock b/Cargo.lock
index c5eecfe4ca3..7ae603e8258 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -110,7 +110,7 @@ checksum = "6e0c28dcc82d7c8ead5cb13beb15405b57b8546e93215673ff8ca0349a028107"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.75",
+ "syn 2.0.76",
 ]
 
 [[package]]
@@ -422,7 +422,7 @@ dependencies = [
  "heck 0.5.0",
  "proc-macro2",
  "quote",
- "syn 2.0.75",
+ "syn 2.0.76",
 ]
 
 [[package]]
@@ -587,7 +587,7 @@ dependencies = [
  "proc-macro2",
  "quote",
  "strsim",
- "syn 2.0.75",
+ "syn 2.0.76",
 ]
 
 [[package]]
@@ -598,7 +598,7 @@ checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806"
 dependencies = [
  "darling_core",
  "quote",
- "syn 2.0.75",
+ "syn 2.0.76",
 ]
 
 [[package]]
@@ -634,7 +634,7 @@ dependencies = [
  "darling",
  "proc-macro2",
  "quote",
- "syn 2.0.75",
+ "syn 2.0.76",
 ]
 
 [[package]]
@@ -644,7 +644,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "206868b8242f27cecce124c19fd88157fbd0dd334df2587f36417bafbc85097b"
 dependencies = [
  "derive_builder_core",
- "syn 2.0.75",
+ "syn 2.0.76",
 ]
 
 [[package]]
@@ -664,7 +664,7 @@ checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.75",
+ "syn 2.0.76",
 ]
 
 [[package]]
@@ -705,7 +705,7 @@ checksum = "27540baf49be0d484d8f0130d7d8da3011c32a44d4fc873368154f1510e574a2"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.75",
+ "syn 2.0.76",
 ]
 
 [[package]]
@@ -975,7 +975,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.75",
+ "syn 2.0.76",
 ]
 
 [[package]]
@@ -1438,7 +1438,7 @@ dependencies = [
  "proc-macro-crate",
  "proc-macro2",
  "quote",
- "syn 2.0.75",
+ "syn 2.0.76",
 ]
 
 [[package]]
@@ -1803,7 +1803,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "9311685eb9a34808bbb0608ad2fcab9ae216266beca5848613e95553ac914e3b"
 dependencies = [
  "quote",
- "syn 2.0.75",
+ "syn 2.0.76",
 ]
 
 [[package]]
@@ -2252,7 +2252,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.75",
+ "syn 2.0.76",
 ]
 
 [[package]]
@@ -2343,7 +2343,7 @@ checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.75",
+ "syn 2.0.76",
 ]
 
 [[package]]
@@ -2419,12 +2419,12 @@ dependencies = [
 
 [[package]]
 name = "prettyplease"
-version = "0.2.20"
+version = "0.2.22"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5f12335488a2f3b0a83b14edad48dca9879ce89b2edd10e80237e4e852dd645e"
+checksum = "479cf940fbbb3426c32c5d5176f62ad57549a0bb84773423ba8be9d089f5faba"
 dependencies = [
  "proc-macro2",
- "syn 2.0.75",
+ "syn 2.0.76",
 ]
 
 [[package]]
@@ -2819,9 +2819,9 @@ checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b"
 
 [[package]]
 name = "serde"
-version = "1.0.208"
+version = "1.0.209"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cff085d2cb684faa248efb494c39b68e522822ac0de72ccf08109abde717cfb2"
+checksum = "99fce0ffe7310761ca6bf9faf5115afbc19688edd00171d81b1bb1b116c63e09"
 dependencies = [
  "serde_derive",
 ]
@@ -2850,20 +2850,20 @@ dependencies = [
 
 [[package]]
 name = "serde_derive"
-version = "1.0.208"
+version = "1.0.209"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "24008e81ff7613ed8e5ba0cfaf24e2c2f1e5b8a0495711e44fcd4882fca62bcf"
+checksum = "a5831b979fd7b5439637af1752d535ff49f4860c0f341d1baeb6faf0f4242170"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.75",
+ "syn 2.0.76",
 ]
 
 [[package]]
 name = "serde_json"
-version = "1.0.125"
+version = "1.0.127"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "83c8e735a073ccf5be70aa8066aa984eaf2fa000db6c8d0100ae605b366d31ed"
+checksum = "8043c06d9f82bd7271361ed64f415fe5e12a77fdb52e573e7f06a516dea329ad"
 dependencies = [
  "itoa",
  "memchr",
@@ -3032,7 +3032,7 @@ dependencies = [
  "proc-macro2",
  "quote",
  "rustversion",
- "syn 2.0.75",
+ "syn 2.0.76",
 ]
 
 [[package]]
@@ -3065,9 +3065,9 @@ dependencies = [
 
 [[package]]
 name = "syn"
-version = "2.0.75"
+version = "2.0.76"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f6af063034fc1935ede7be0122941bafa9bacb949334d090b77ca98b5817c7d9"
+checksum = "578e081a14e0cefc3279b0472138c513f37b41a08d5a3cca9b6e4e8ceb6cd525"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -3182,7 +3182,7 @@ checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.75",
+ "syn 2.0.76",
 ]
 
 [[package]]
@@ -3277,7 +3277,7 @@ checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.75",
+ "syn 2.0.76",
 ]
 
 [[package]]
@@ -3468,7 +3468,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.75",
+ "syn 2.0.76",
 ]
 
 [[package]]
@@ -3707,7 +3707,7 @@ dependencies = [
  "once_cell",
  "proc-macro2",
  "quote",
- "syn 2.0.75",
+ "syn 2.0.76",
  "wasm-bindgen-shared",
 ]
 
@@ -3741,7 +3741,7 @@ checksum = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.75",
+ "syn 2.0.76",
  "wasm-bindgen-backend",
  "wasm-bindgen-shared",
 ]
@@ -3775,7 +3775,7 @@ checksum = "4b8220be1fa9e4c889b30fd207d4906657e7e90b12e0e6b0c8b8d8709f5de021"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.75",
+ "syn 2.0.76",
 ]
 
 [[package]]
@@ -4111,7 +4111,7 @@ dependencies = [
  "proc-macro2",
  "quote",
  "rustversion",
- "syn 2.0.75",
+ "syn 2.0.76",
  "trybuild",
  "yew-agent",
 ]
@@ -4124,7 +4124,7 @@ checksum = "58865a8f2470a6ad839274e05c9627170d32930f39a2348f8c425880a6131792"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.75",
+ "syn 2.0.76",
 ]
 
 [[package]]
@@ -4137,7 +4137,7 @@ dependencies = [
  "proc-macro2",
  "quote",
  "rustversion",
- "syn 2.0.75",
+ "syn 2.0.76",
  "trybuild",
  "yew",
 ]
@@ -4167,7 +4167,7 @@ dependencies = [
  "proc-macro2",
  "quote",
  "rustversion",
- "syn 2.0.75",
+ "syn 2.0.76",
  "trybuild",
  "yew-router",
 ]
@@ -4214,7 +4214,7 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.75",
+ "syn 2.0.76",
 ]
 
 [[package]]
diff --git a/examples/simple_ssr/Cargo.toml b/examples/simple_ssr/Cargo.toml
index 14bb1aaf850..1d2c9f379bd 100644
--- a/examples/simple_ssr/Cargo.toml
+++ b/examples/simple_ssr/Cargo.toml
@@ -15,7 +15,7 @@ required-features = ["ssr"]
 [dependencies]
 yew = { path = "../../packages/yew" }
 reqwest = { version = "0.12.7", features = ["json"] }
-serde = { version = "1.0.208", features = ["derive"] }
+serde = { version = "1.0.209", features = ["derive"] }
 uuid = { version = "1.10.0", features = ["serde"] }
 futures = "0.3"
 bytes = "1.7"
diff --git a/examples/web_worker_prime/Cargo.toml b/examples/web_worker_prime/Cargo.toml
index 704ee388704..ff23d80df61 100644
--- a/examples/web_worker_prime/Cargo.toml
+++ b/examples/web_worker_prime/Cargo.toml
@@ -8,4 +8,4 @@ yew-agent = { path = "../../packages/yew-agent" }
 yew = { path = "../../packages/yew", features = ["csr"] }
 futures = "0.3.30"
 primes = "0.4.0"
-serde = { version = "1.0.208", features = ["derive"] }
+serde = { version = "1.0.209", features = ["derive"] }
diff --git a/packages/yew-agent/Cargo.toml b/packages/yew-agent/Cargo.toml
index f898776f41c..cb6c5270e54 100644
--- a/packages/yew-agent/Cargo.toml
+++ b/packages/yew-agent/Cargo.toml
@@ -20,4 +20,4 @@ futures = "0.3"
 yew-agent-macro = { version = "0.2", path = "../yew-agent-macro" }
 
 [dev-dependencies]
-serde = "1.0.208"
+serde = "1.0.209"
diff --git a/tools/benchmark-ssr/Cargo.toml b/tools/benchmark-ssr/Cargo.toml
index 4e389418882..8ec5a6ac825 100644
--- a/tools/benchmark-ssr/Cargo.toml
+++ b/tools/benchmark-ssr/Cargo.toml
@@ -12,8 +12,8 @@ tokio = { version = "1.38", features = ["full"] }
 average = "0.15.1"
 tabled = "0.16.0"
 indicatif = "0.17.8"
-serde = { version = "1.0.208", features = ["derive"] }
-serde_json = "1.0.109"
+serde = { version = "1.0.209", features = ["derive"] }
+serde_json = "1.0.127"
 clap = { version = "4", features = ["derive"] }
 
 [target.'cfg(unix)'.dependencies]

From 6481524369661b4a2217c99f1031ca504ebbc8c7 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Sun, 1 Sep 2024 18:56:50 +0700
Subject: [PATCH 27/44] Bump jetli/trunk-action from 0.4.0 to 0.5.0 (#3722)

Bumps [jetli/trunk-action](https://github.com/jetli/trunk-action) from 0.4.0 to 0.5.0.
- [Release notes](https://github.com/jetli/trunk-action/releases)
- [Commits](https://github.com/jetli/trunk-action/compare/v0.4.0...v0.5.0)

---
updated-dependencies:
- dependency-name: jetli/trunk-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] 
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
 .github/workflows/publish-examples.yml | 2 +-
 .github/workflows/size-cmp.yml         | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/.github/workflows/publish-examples.yml b/.github/workflows/publish-examples.yml
index d800a9fa026..a60c3a300e4 100644
--- a/.github/workflows/publish-examples.yml
+++ b/.github/workflows/publish-examples.yml
@@ -28,7 +28,7 @@ jobs:
         with:
           shared-key: publish-examples
 
-      - uses: jetli/trunk-action@v0.4.0
+      - uses: jetli/trunk-action@v0.5.0
         with:
           version: 'latest'
 
diff --git a/.github/workflows/size-cmp.yml b/.github/workflows/size-cmp.yml
index cc507e3286e..a64f682ee12 100644
--- a/.github/workflows/size-cmp.yml
+++ b/.github/workflows/size-cmp.yml
@@ -49,7 +49,7 @@ jobs:
           shared-key: size-compare
 
       - name: Setup Trunk
-        uses: jetli/trunk-action@v0.4.0
+        uses: jetli/trunk-action@v0.5.0
         with:
           version: "latest"
 

From 86c6c8a5dd609133b0224aae16f5ce398763b040 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Sun, 1 Sep 2024 18:58:17 +0700
Subject: [PATCH 28/44] Bump softprops/action-gh-release from 1 to 2 (#3720)

Bumps [softprops/action-gh-release](https://github.com/softprops/action-gh-release) from 1 to 2.
- [Release notes](https://github.com/softprops/action-gh-release/releases)
- [Changelog](https://github.com/softprops/action-gh-release/blob/master/CHANGELOG.md)
- [Commits](https://github.com/softprops/action-gh-release/compare/v1...v2)

---
updated-dependencies:
- dependency-name: softprops/action-gh-release
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] 
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
 .github/workflows/publish.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml
index 11e55ea7821..6a2332d9c67 100644
--- a/.github/workflows/publish.yml
+++ b/.github/workflows/publish.yml
@@ -77,7 +77,7 @@ jobs:
           branch: ${{ steps.gettag.outputs.tag }}
 
       - name: Create a Release
-        uses: softprops/action-gh-release@v1
+        uses: softprops/action-gh-release@v2
         with:
           token: ${{ secrets.YEWTEMPBOT_TOKEN }}
           tag_name: ${{ steps.gettag.outputs.tag }}

From 1f1c5c247c926cb84738e2fe6f3f259da73107ec Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Sun, 1 Sep 2024 18:59:18 +0700
Subject: [PATCH 29/44] Bump baptiste0928/cargo-install from 2 to 3 (#3721)

Bumps [baptiste0928/cargo-install](https://github.com/baptiste0928/cargo-install) from 2 to 3.
- [Release notes](https://github.com/baptiste0928/cargo-install/releases)
- [Changelog](https://github.com/baptiste0928/cargo-install/blob/main/CHANGELOG.md)
- [Commits](https://github.com/baptiste0928/cargo-install/compare/v2...v3)

---
updated-dependencies:
- dependency-name: baptiste0928/cargo-install
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] 
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
 .github/workflows/publish.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml
index 6a2332d9c67..2c589cc5dd1 100644
--- a/.github/workflows/publish.yml
+++ b/.github/workflows/publish.yml
@@ -41,7 +41,7 @@ jobs:
           toolchain: stable
 
       - name: Install cargo binary dependencies
-        uses: baptiste0928/cargo-install@v2
+        uses: baptiste0928/cargo-install@v3
         with:
           crate: cargo-release
           version: =0.23.1

From e9d80ae47a96a2a4c0efa2545aa00514ee2d45c1 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 2 Sep 2024 14:03:00 +0000
Subject: [PATCH 30/44] Bump the website-deps group across 1 directory with 17
 updates (#3723)

* Bump micromatch from 4.0.5 to 4.0.8 in /website

Bumps [micromatch](https://github.com/micromatch/micromatch) from 4.0.5 to 4.0.8.
- [Release notes](https://github.com/micromatch/micromatch/releases)
- [Changelog](https://github.com/micromatch/micromatch/blob/master/CHANGELOG.md)
- [Commits](https://github.com/micromatch/micromatch/compare/4.0.5...4.0.8)

---
updated-dependencies:
- dependency-name: micromatch
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] 

* Bump webpack from 5.89.0 to 5.94.0 in /website

Bumps [webpack](https://github.com/webpack/webpack) from 5.89.0 to 5.94.0.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v5.89.0...v5.94.0)

---
updated-dependencies:
- dependency-name: webpack
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] 

* Bump the website-deps group across 1 directory with 17 updates

Bumps the website-deps group with 16 updates in the /website directory:

| Package | From | To |
| --- | --- | --- |
| [@docusaurus/core](https://github.com/facebook/docusaurus/tree/HEAD/packages/docusaurus) | `3.0.0` | `3.5.2` |
| [@docusaurus/plugin-client-redirects](https://github.com/facebook/docusaurus/tree/HEAD/packages/docusaurus-plugin-client-redirects) | `3.0.0` | `3.5.2` |
| [@docusaurus/preset-classic](https://github.com/facebook/docusaurus/tree/HEAD/packages/docusaurus-preset-classic) | `3.0.0` | `3.5.2` |
| [@mdx-js/react](https://github.com/mdx-js/mdx/tree/HEAD/packages/react) | `3.0.0` | `3.0.1` |
| [clsx](https://github.com/lukeed/clsx) | `2.0.0` | `2.1.1` |
| [react](https://github.com/facebook/react/tree/HEAD/packages/react) | `18.2.0` | `18.3.1` |
| [@types/react](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react) | `18.2.34` | `18.3.5` |
| [react-dom](https://github.com/facebook/react/tree/HEAD/packages/react-dom) | `18.2.0` | `18.3.1` |
| [sass](https://github.com/sass/dart-sass) | `1.69.5` | `1.77.8` |
| [@docusaurus/tsconfig](https://github.com/facebook/docusaurus/tree/HEAD/packages/docusaurus-tsconfig) | `3.0.0` | `3.5.2` |
| [@types/react-helmet](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react-helmet) | `6.1.8` | `6.1.11` |
| [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) | `6.9.1` | `8.3.0` |
| [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) | `6.9.1` | `8.3.0` |
| [dir-compare](https://github.com/gliviu/dir-compare) | `4.2.0` | `5.0.0` |
| [prettier](https://github.com/prettier/prettier) | `3.0.3` | `3.3.3` |
| [typescript](https://github.com/Microsoft/TypeScript) | `5.2.2` | `5.5.4` |



Updates `@docusaurus/core` from 3.0.0 to 3.5.2
- [Release notes](https://github.com/facebook/docusaurus/releases)
- [Changelog](https://github.com/facebook/docusaurus/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/docusaurus/commits/v3.5.2/packages/docusaurus)

Updates `@docusaurus/plugin-client-redirects` from 3.0.0 to 3.5.2
- [Release notes](https://github.com/facebook/docusaurus/releases)
- [Changelog](https://github.com/facebook/docusaurus/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/docusaurus/commits/v3.5.2/packages/docusaurus-plugin-client-redirects)

Updates `@docusaurus/preset-classic` from 3.0.0 to 3.5.2
- [Release notes](https://github.com/facebook/docusaurus/releases)
- [Changelog](https://github.com/facebook/docusaurus/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/docusaurus/commits/v3.5.2/packages/docusaurus-preset-classic)

Updates `@mdx-js/react` from 3.0.0 to 3.0.1
- [Release notes](https://github.com/mdx-js/mdx/releases)
- [Changelog](https://github.com/mdx-js/mdx/blob/main/changelog.md)
- [Commits](https://github.com/mdx-js/mdx/commits/3.0.1/packages/react)

Updates `clsx` from 2.0.0 to 2.1.1
- [Release notes](https://github.com/lukeed/clsx/releases)
- [Commits](https://github.com/lukeed/clsx/compare/v2.0.0...v2.1.1)

Updates `react` from 18.2.0 to 18.3.1
- [Release notes](https://github.com/facebook/react/releases)
- [Changelog](https://github.com/facebook/react/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/react/commits/v18.3.1/packages/react)

Updates `@types/react` from 18.2.34 to 18.3.5
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react)

Updates `react-dom` from 18.2.0 to 18.3.1
- [Release notes](https://github.com/facebook/react/releases)
- [Changelog](https://github.com/facebook/react/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/react/commits/v18.3.1/packages/react-dom)

Updates `sass` from 1.69.5 to 1.77.8
- [Release notes](https://github.com/sass/dart-sass/releases)
- [Changelog](https://github.com/sass/dart-sass/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sass/dart-sass/compare/1.69.5...1.77.8)

Updates `@docusaurus/module-type-aliases` from 3.0.0 to 3.5.2
- [Release notes](https://github.com/facebook/docusaurus/releases)
- [Changelog](https://github.com/facebook/docusaurus/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/docusaurus/commits/v3.5.2/packages/docusaurus-module-type-aliases)

Updates `@docusaurus/tsconfig` from 3.0.0 to 3.5.2
- [Release notes](https://github.com/facebook/docusaurus/releases)
- [Changelog](https://github.com/facebook/docusaurus/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/docusaurus/commits/v3.5.2/packages/docusaurus-tsconfig)

Updates `@types/react` from 18.2.34 to 18.3.5
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react)

Updates `@types/react-helmet` from 6.1.8 to 6.1.11
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react-helmet)

Updates `@typescript-eslint/eslint-plugin` from 6.9.1 to 8.3.0
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.3.0/packages/eslint-plugin)

Updates `@typescript-eslint/parser` from 6.9.1 to 8.3.0
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.3.0/packages/parser)

Updates `dir-compare` from 4.2.0 to 5.0.0
- [Release notes](https://github.com/gliviu/dir-compare/releases)
- [Commits](https://github.com/gliviu/dir-compare/compare/v4.2.0...v5.0.0)

Updates `prettier` from 3.0.3 to 3.3.3
- [Release notes](https://github.com/prettier/prettier/releases)
- [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md)
- [Commits](https://github.com/prettier/prettier/compare/3.0.3...3.3.3)

Updates `typescript` from 5.2.2 to 5.5.4
- [Release notes](https://github.com/Microsoft/TypeScript/releases)
- [Changelog](https://github.com/microsoft/TypeScript/blob/main/azure-pipelines.release.yml)
- [Commits](https://github.com/Microsoft/TypeScript/compare/v5.2.2...v5.5.4)

---
updated-dependencies:
- dependency-name: "@docusaurus/core"
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: website-deps
- dependency-name: "@docusaurus/plugin-client-redirects"
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: website-deps
- dependency-name: "@docusaurus/preset-classic"
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: website-deps
- dependency-name: "@mdx-js/react"
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: website-deps
- dependency-name: clsx
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: website-deps
- dependency-name: react
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: website-deps
- dependency-name: "@types/react"
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: website-deps
- dependency-name: react-dom
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: website-deps
- dependency-name: sass
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: website-deps
- dependency-name: "@docusaurus/module-type-aliases"
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: website-deps
- dependency-name: "@docusaurus/tsconfig"
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: website-deps
- dependency-name: "@types/react"
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: website-deps
- dependency-name: "@types/react-helmet"
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: website-deps
- dependency-name: "@typescript-eslint/eslint-plugin"
  dependency-type: direct:development
  update-type: version-update:semver-major
  dependency-group: website-deps
- dependency-name: "@typescript-eslint/parser"
  dependency-type: direct:development
  update-type: version-update:semver-major
  dependency-group: website-deps
- dependency-name: dir-compare
  dependency-type: direct:development
  update-type: version-update:semver-major
  dependency-group: website-deps
- dependency-name: prettier
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: website-deps
- dependency-name: typescript
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: website-deps
...

Signed-off-by: dependabot[bot] 

* fix non-truncated blog post warning

* always build with package lock

* fix prettier warning

* fix scss deprecation warning

* really only install with ci

* adjust docusaurus language codes

---------

Signed-off-by: dependabot[bot] 
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Martin Molzer 
---
 .github/workflows/build-website.yml           |    2 +-
 website/blog/2023-09-23-release-0-21.md       |    2 +
 website/i18n/ja/code.json                     |   32 +
 website/i18n/zh-Hans/code.json                |   36 +-
 website/i18n/zh-Hant/code.json                |   36 +-
 website/package-lock.json                     | 4183 ++++++-----------
 website/package.json                          |   32 +-
 website/src/pages/index.module.scss           |    6 +-
 .../theme/NavbarItem/DefaultNavbarItem.tsx    |    2 +-
 9 files changed, 1661 insertions(+), 2670 deletions(-)

diff --git a/.github/workflows/build-website.yml b/.github/workflows/build-website.yml
index 2aead565a87..80110d8f61e 100644
--- a/.github/workflows/build-website.yml
+++ b/.github/workflows/build-website.yml
@@ -28,7 +28,7 @@ jobs:
       - name: Install dependencies
         run: |
           cd website
-          npm install
+          npm ci
 
       - name: Run prettier
         run: |
diff --git a/website/blog/2023-09-23-release-0-21.md b/website/blog/2023-09-23-release-0-21.md
index a93f40f07ee..f6eec0c836a 100644
--- a/website/blog/2023-09-23-release-0-21.md
+++ b/website/blog/2023-09-23-release-0-21.md
@@ -6,6 +6,8 @@ authors: [hamza]
 The Yew development team is thrilled to unveil Yew 0.21.0, a significant milestone in the journey of empowering developers to create dependable and high-performance web applications with Rust.
 Let's dive into the major highlights of this release.
 
+
+
 ## What's new
 
 ### 1. Changing Signatures: A Shift in Hook Dependencies
diff --git a/website/i18n/ja/code.json b/website/i18n/ja/code.json
index ec7078b1f94..35d8cde5133 100644
--- a/website/i18n/ja/code.json
+++ b/website/i18n/ja/code.json
@@ -423,5 +423,37 @@
   "theme.SearchModal.placeholder": {
     "message": "ドキュメントを検索",
     "description": "The placeholder of the input of the DocSearch pop-up modal"
+  },
+  "theme.docs.DocCard.categoryDescription.plurals": {
+    "message": "{count}項目",
+    "description": "The default description for a category card in the generated index about how many items this category includes"
+  },
+  "theme.blog.author.pageTitle": {
+    "message": "{authorName} - {nPosts}",
+    "description": "The title of the page for a blog author"
+  },
+  "theme.blog.authorsList.pageTitle": {
+    "message": "Authors",
+    "description": "The title of the authors page"
+  },
+  "theme.blog.authorsList.viewAll": {
+    "message": "View All Authors",
+    "description": "The label of the link targeting the blog authors page"
+  },
+  "theme.contentVisibility.unlistedBanner.title": {
+    "message": "非公開のページ",
+    "description": "The unlisted content banner title"
+  },
+  "theme.contentVisibility.unlistedBanner.message": {
+    "message": "このページは非公開です。 検索対象外となり、このページのリンクに直接アクセスできるユーザーのみに公開されます。",
+    "description": "The unlisted content banner message"
+  },
+  "theme.contentVisibility.draftBanner.title": {
+    "message": "Draft page",
+    "description": "The draft content banner title"
+  },
+  "theme.contentVisibility.draftBanner.message": {
+    "message": "This page is a draft. It will only be visible in dev and be excluded from the production build.",
+    "description": "The draft content banner message"
   }
 }
diff --git a/website/i18n/zh-Hans/code.json b/website/i18n/zh-Hans/code.json
index f45429b13a6..4d13dba093f 100644
--- a/website/i18n/zh-Hans/code.json
+++ b/website/i18n/zh-Hans/code.json
@@ -48,7 +48,7 @@
     "description": "The label used to navigate to the older blog posts page (next page)"
   },
   "theme.blog.post.readingTime.plurals": {
-    "message": "One min read|{readingTime} min read",
+    "message": "{readingTime} min read",
     "description": "Pluralized label for \"{readingTime} min read\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)"
   },
   "theme.blog.post.readMore": {
@@ -72,7 +72,7 @@
     "description": "The ARIA label for recent posts in the blog sidebar"
   },
   "theme.blog.post.plurals": {
-    "message": "One post|{count} posts",
+    "message": "{count} posts",
     "description": "Pluralized label for \"{count} posts\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)"
   },
   "theme.blog.tagTitle": {
@@ -423,5 +423,37 @@
   "theme.SearchModal.placeholder": {
     "message": "搜索文档",
     "description": "The placeholder of the input of the DocSearch pop-up modal"
+  },
+  "theme.docs.DocCard.categoryDescription.plurals": {
+    "message": "{count} 个项目",
+    "description": "The default description for a category card in the generated index about how many items this category includes"
+  },
+  "theme.blog.author.pageTitle": {
+    "message": "{authorName} - {nPosts}",
+    "description": "The title of the page for a blog author"
+  },
+  "theme.blog.authorsList.pageTitle": {
+    "message": "Authors",
+    "description": "The title of the authors page"
+  },
+  "theme.blog.authorsList.viewAll": {
+    "message": "View All Authors",
+    "description": "The label of the link targeting the blog authors page"
+  },
+  "theme.contentVisibility.unlistedBanner.title": {
+    "message": "未列出页",
+    "description": "The unlisted content banner title"
+  },
+  "theme.contentVisibility.unlistedBanner.message": {
+    "message": "此页面未列出。搜索引擎不会对其索引,只有拥有直接链接的用户才能访问。",
+    "description": "The unlisted content banner message"
+  },
+  "theme.contentVisibility.draftBanner.title": {
+    "message": "Draft page",
+    "description": "The draft content banner title"
+  },
+  "theme.contentVisibility.draftBanner.message": {
+    "message": "This page is a draft. It will only be visible in dev and be excluded from the production build.",
+    "description": "The draft content banner message"
   }
 }
diff --git a/website/i18n/zh-Hant/code.json b/website/i18n/zh-Hant/code.json
index 1f1d637ae1a..9b2d1df19e5 100644
--- a/website/i18n/zh-Hant/code.json
+++ b/website/i18n/zh-Hant/code.json
@@ -48,7 +48,7 @@
     "description": "The label used to navigate to the older blog posts page (next page)"
   },
   "theme.blog.post.readingTime.plurals": {
-    "message": "One min read|{readingTime} min read",
+    "message": "{readingTime} min read",
     "description": "Pluralized label for \"{readingTime} min read\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)"
   },
   "theme.blog.post.readMore": {
@@ -72,7 +72,7 @@
     "description": "The ARIA label for recent posts in the blog sidebar"
   },
   "theme.blog.post.plurals": {
-    "message": "One post|{count} posts",
+    "message": "{count} posts",
     "description": "Pluralized label for \"{count} posts\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)"
   },
   "theme.blog.tagTitle": {
@@ -423,5 +423,37 @@
   "theme.SearchModal.placeholder": {
     "message": "搜索文檔",
     "description": "The placeholder of the input of the DocSearch pop-up modal"
+  },
+  "theme.docs.DocCard.categoryDescription.plurals": {
+    "message": "{count} 個項目",
+    "description": "The default description for a category card in the generated index about how many items this category includes"
+  },
+  "theme.blog.author.pageTitle": {
+    "message": "{authorName} - {nPosts}",
+    "description": "The title of the page for a blog author"
+  },
+  "theme.blog.authorsList.pageTitle": {
+    "message": "Authors",
+    "description": "The title of the authors page"
+  },
+  "theme.blog.authorsList.viewAll": {
+    "message": "View All Authors",
+    "description": "The label of the link targeting the blog authors page"
+  },
+  "theme.contentVisibility.unlistedBanner.title": {
+    "message": "未列出頁",
+    "description": "The unlisted content banner title"
+  },
+  "theme.contentVisibility.unlistedBanner.message": {
+    "message": "此頁面未列出。搜索引擎不會對其索引,只有擁有直接連結的用戶才能訪問。",
+    "description": "The unlisted content banner message"
+  },
+  "theme.contentVisibility.draftBanner.title": {
+    "message": "Draft page",
+    "description": "The draft content banner title"
+  },
+  "theme.contentVisibility.draftBanner.message": {
+    "message": "This page is a draft. It will only be visible in dev and be excluded from the production build.",
+    "description": "The draft content banner message"
   }
 }
diff --git a/website/package-lock.json b/website/package-lock.json
index 8eb72bfd220..3a267ff874b 100644
--- a/website/package-lock.json
+++ b/website/package-lock.json
@@ -8,30 +8,30 @@
             "name": "yew-docs",
             "version": "0.0.0",
             "dependencies": {
-                "@docusaurus/core": "^3.0.0",
-                "@docusaurus/plugin-client-redirects": "^3.0.0",
-                "@docusaurus/preset-classic": "^3.0.0",
-                "@mdx-js/react": "^3.0.0",
+                "@docusaurus/core": "^3.5.2",
+                "@docusaurus/plugin-client-redirects": "^3.5.2",
+                "@docusaurus/preset-classic": "^3.5.2",
+                "@mdx-js/react": "^3.0.1",
                 "@svgr/webpack": "^8.1.0",
-                "clsx": "^2.0.0",
+                "clsx": "^2.1.1",
                 "docusaurus-plugin-sass": "^0.2.5",
                 "file-loader": "^6.2.0",
-                "react": "^18.2.0",
-                "react-dom": "^18.2.0",
-                "sass": "^1.69.5",
+                "react": "^18.3.1",
+                "react-dom": "^18.3.1",
+                "sass": "^1.77.8",
                 "url-loader": "^4.1.1"
             },
             "devDependencies": {
                 "@docusaurus/module-type-aliases": "^3.0.0",
-                "@docusaurus/tsconfig": "3.0.0",
-                "@types/react": "^18.2.34",
-                "@types/react-helmet": "^6.1.8",
+                "@docusaurus/tsconfig": "3.5.2",
+                "@types/react": "^18.3.5",
+                "@types/react-helmet": "^6.1.11",
                 "@types/react-router-dom": "^5.3.3",
-                "@typescript-eslint/eslint-plugin": "^6.9.1",
-                "@typescript-eslint/parser": "^6.9.1",
-                "dir-compare": "^4.2.0",
-                "prettier": "^3.0.3",
-                "typescript": "^5.2.2"
+                "@typescript-eslint/eslint-plugin": "^8.3.0",
+                "@typescript-eslint/parser": "^8.3.0",
+                "dir-compare": "^5.0.0",
+                "prettier": "^3.3.3",
+                "typescript": "^5.5.4"
             },
             "engines": {
                 "node": ">=18.0"
@@ -89,74 +89,125 @@
             }
         },
         "node_modules/@algolia/cache-browser-local-storage": {
-            "version": "4.20.0",
-            "resolved": "https://registry.npmjs.org/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.20.0.tgz",
-            "integrity": "sha512-uujahcBt4DxduBTvYdwO3sBfHuJvJokiC3BP1+O70fglmE1ShkH8lpXqZBac1rrU3FnNYSUs4pL9lBdTKeRPOQ==",
+            "version": "4.24.0",
+            "resolved": "https://registry.npmjs.org/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.24.0.tgz",
+            "integrity": "sha512-t63W9BnoXVrGy9iYHBgObNXqYXM3tYXCjDSHeNwnsc324r4o5UiVKUiAB4THQ5z9U5hTj6qUvwg/Ez43ZD85ww==",
             "dependencies": {
-                "@algolia/cache-common": "4.20.0"
+                "@algolia/cache-common": "4.24.0"
             }
         },
         "node_modules/@algolia/cache-common": {
-            "version": "4.20.0",
-            "resolved": "https://registry.npmjs.org/@algolia/cache-common/-/cache-common-4.20.0.tgz",
-            "integrity": "sha512-vCfxauaZutL3NImzB2G9LjLt36vKAckc6DhMp05An14kVo8F1Yofb6SIl6U3SaEz8pG2QOB9ptwM5c+zGevwIQ=="
+            "version": "4.24.0",
+            "resolved": "https://registry.npmjs.org/@algolia/cache-common/-/cache-common-4.24.0.tgz",
+            "integrity": "sha512-emi+v+DmVLpMGhp0V9q9h5CdkURsNmFC+cOS6uK9ndeJm9J4TiqSvPYVu+THUP8P/S08rxf5x2P+p3CfID0Y4g=="
         },
         "node_modules/@algolia/cache-in-memory": {
-            "version": "4.20.0",
-            "resolved": "https://registry.npmjs.org/@algolia/cache-in-memory/-/cache-in-memory-4.20.0.tgz",
-            "integrity": "sha512-Wm9ak/IaacAZXS4mB3+qF/KCoVSBV6aLgIGFEtQtJwjv64g4ePMapORGmCyulCFwfePaRAtcaTbMcJF+voc/bg==",
+            "version": "4.24.0",
+            "resolved": "https://registry.npmjs.org/@algolia/cache-in-memory/-/cache-in-memory-4.24.0.tgz",
+            "integrity": "sha512-gDrt2so19jW26jY3/MkFg5mEypFIPbPoXsQGQWAi6TrCPsNOSEYepBMPlucqWigsmEy/prp5ug2jy/N3PVG/8w==",
             "dependencies": {
-                "@algolia/cache-common": "4.20.0"
+                "@algolia/cache-common": "4.24.0"
             }
         },
         "node_modules/@algolia/client-account": {
-            "version": "4.20.0",
-            "resolved": "https://registry.npmjs.org/@algolia/client-account/-/client-account-4.20.0.tgz",
-            "integrity": "sha512-GGToLQvrwo7am4zVkZTnKa72pheQeez/16sURDWm7Seyz+HUxKi3BM6fthVVPUEBhtJ0reyVtuK9ArmnaKl10Q==",
+            "version": "4.24.0",
+            "resolved": "https://registry.npmjs.org/@algolia/client-account/-/client-account-4.24.0.tgz",
+            "integrity": "sha512-adcvyJ3KjPZFDybxlqnf+5KgxJtBjwTPTeyG2aOyoJvx0Y8dUQAEOEVOJ/GBxX0WWNbmaSrhDURMhc+QeevDsA==",
+            "dependencies": {
+                "@algolia/client-common": "4.24.0",
+                "@algolia/client-search": "4.24.0",
+                "@algolia/transporter": "4.24.0"
+            }
+        },
+        "node_modules/@algolia/client-account/node_modules/@algolia/client-common": {
+            "version": "4.24.0",
+            "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.24.0.tgz",
+            "integrity": "sha512-bc2ROsNL6w6rqpl5jj/UywlIYC21TwSSoFHKl01lYirGMW+9Eek6r02Tocg4gZ8HAw3iBvu6XQiM3BEbmEMoiA==",
+            "dependencies": {
+                "@algolia/requester-common": "4.24.0",
+                "@algolia/transporter": "4.24.0"
+            }
+        },
+        "node_modules/@algolia/client-account/node_modules/@algolia/client-search": {
+            "version": "4.24.0",
+            "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.24.0.tgz",
+            "integrity": "sha512-uRW6EpNapmLAD0mW47OXqTP8eiIx5F6qN9/x/7HHO6owL3N1IXqydGwW5nhDFBrV+ldouro2W1VX3XlcUXEFCA==",
             "dependencies": {
-                "@algolia/client-common": "4.20.0",
-                "@algolia/client-search": "4.20.0",
-                "@algolia/transporter": "4.20.0"
+                "@algolia/client-common": "4.24.0",
+                "@algolia/requester-common": "4.24.0",
+                "@algolia/transporter": "4.24.0"
             }
         },
         "node_modules/@algolia/client-analytics": {
-            "version": "4.20.0",
-            "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-4.20.0.tgz",
-            "integrity": "sha512-EIr+PdFMOallRdBTHHdKI3CstslgLORQG7844Mq84ib5oVFRVASuuPmG4bXBgiDbcsMLUeOC6zRVJhv1KWI0ug==",
+            "version": "4.24.0",
+            "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-4.24.0.tgz",
+            "integrity": "sha512-y8jOZt1OjwWU4N2qr8G4AxXAzaa8DBvyHTWlHzX/7Me1LX8OayfgHexqrsL4vSBcoMmVw2XnVW9MhL+Y2ZDJXg==",
             "dependencies": {
-                "@algolia/client-common": "4.20.0",
-                "@algolia/client-search": "4.20.0",
-                "@algolia/requester-common": "4.20.0",
-                "@algolia/transporter": "4.20.0"
+                "@algolia/client-common": "4.24.0",
+                "@algolia/client-search": "4.24.0",
+                "@algolia/requester-common": "4.24.0",
+                "@algolia/transporter": "4.24.0"
             }
         },
-        "node_modules/@algolia/client-common": {
-            "version": "4.20.0",
-            "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.20.0.tgz",
-            "integrity": "sha512-P3WgMdEss915p+knMMSd/fwiHRHKvDu4DYRrCRaBrsfFw7EQHon+EbRSm4QisS9NYdxbS04kcvNoavVGthyfqQ==",
+        "node_modules/@algolia/client-analytics/node_modules/@algolia/client-common": {
+            "version": "4.24.0",
+            "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.24.0.tgz",
+            "integrity": "sha512-bc2ROsNL6w6rqpl5jj/UywlIYC21TwSSoFHKl01lYirGMW+9Eek6r02Tocg4gZ8HAw3iBvu6XQiM3BEbmEMoiA==",
+            "dependencies": {
+                "@algolia/requester-common": "4.24.0",
+                "@algolia/transporter": "4.24.0"
+            }
+        },
+        "node_modules/@algolia/client-analytics/node_modules/@algolia/client-search": {
+            "version": "4.24.0",
+            "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.24.0.tgz",
+            "integrity": "sha512-uRW6EpNapmLAD0mW47OXqTP8eiIx5F6qN9/x/7HHO6owL3N1IXqydGwW5nhDFBrV+ldouro2W1VX3XlcUXEFCA==",
             "dependencies": {
-                "@algolia/requester-common": "4.20.0",
-                "@algolia/transporter": "4.20.0"
+                "@algolia/client-common": "4.24.0",
+                "@algolia/requester-common": "4.24.0",
+                "@algolia/transporter": "4.24.0"
+            }
+        },
+        "node_modules/@algolia/client-common": {
+            "version": "5.2.3",
+            "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-5.2.3.tgz",
+            "integrity": "sha512-zqfcbgjYR72Y/rx/+/6g5Li/eV33yhRq5mkGbU06JYBzvGq6viy0gZl1ckCFhLLifKzXZ4yzUQTw/KG6FV+smg==",
+            "peer": true,
+            "engines": {
+                "node": ">= 14.0.0"
             }
         },
         "node_modules/@algolia/client-personalization": {
-            "version": "4.20.0",
-            "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-4.20.0.tgz",
-            "integrity": "sha512-N9+zx0tWOQsLc3K4PVRDV8GUeOLAY0i445En79Pr3zWB+m67V+n/8w4Kw1C5LlbHDDJcyhMMIlqezh6BEk7xAQ==",
+            "version": "4.24.0",
+            "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-4.24.0.tgz",
+            "integrity": "sha512-l5FRFm/yngztweU0HdUzz1rC4yoWCFo3IF+dVIVTfEPg906eZg5BOd1k0K6rZx5JzyyoP4LdmOikfkfGsKVE9w==",
+            "dependencies": {
+                "@algolia/client-common": "4.24.0",
+                "@algolia/requester-common": "4.24.0",
+                "@algolia/transporter": "4.24.0"
+            }
+        },
+        "node_modules/@algolia/client-personalization/node_modules/@algolia/client-common": {
+            "version": "4.24.0",
+            "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.24.0.tgz",
+            "integrity": "sha512-bc2ROsNL6w6rqpl5jj/UywlIYC21TwSSoFHKl01lYirGMW+9Eek6r02Tocg4gZ8HAw3iBvu6XQiM3BEbmEMoiA==",
             "dependencies": {
-                "@algolia/client-common": "4.20.0",
-                "@algolia/requester-common": "4.20.0",
-                "@algolia/transporter": "4.20.0"
+                "@algolia/requester-common": "4.24.0",
+                "@algolia/transporter": "4.24.0"
             }
         },
         "node_modules/@algolia/client-search": {
-            "version": "4.20.0",
-            "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.20.0.tgz",
-            "integrity": "sha512-zgwqnMvhWLdpzKTpd3sGmMlr4c+iS7eyyLGiaO51zDZWGMkpgoNVmltkzdBwxOVXz0RsFMznIxB9zuarUv4TZg==",
+            "version": "5.2.3",
+            "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-5.2.3.tgz",
+            "integrity": "sha512-xXdCg8vpiwE8gqSyvjxq8V3qbFa+gHasY5epIz718IByWv3WKLLi/n4SMIfB/zRwXTLVWeGOH/UJSz5VCnAAqg==",
+            "peer": true,
             "dependencies": {
-                "@algolia/client-common": "4.20.0",
-                "@algolia/requester-common": "4.20.0",
-                "@algolia/transporter": "4.20.0"
+                "@algolia/client-common": "5.2.3",
+                "@algolia/requester-browser-xhr": "5.2.3",
+                "@algolia/requester-node-http": "5.2.3"
+            },
+            "engines": {
+                "node": ">= 14.0.0"
             }
         },
         "node_modules/@algolia/events": {
@@ -165,160 +216,157 @@
             "integrity": "sha512-FQzvOCgoFXAbf5Y6mYozw2aj5KCJoA3m4heImceldzPSMbdyS4atVjJzXKMsfX3wnZTFYwkkt8/z8UesLHlSBQ=="
         },
         "node_modules/@algolia/logger-common": {
-            "version": "4.20.0",
-            "resolved": "https://registry.npmjs.org/@algolia/logger-common/-/logger-common-4.20.0.tgz",
-            "integrity": "sha512-xouigCMB5WJYEwvoWW5XDv7Z9f0A8VoXJc3VKwlHJw/je+3p2RcDXfksLI4G4lIVncFUYMZx30tP/rsdlvvzHQ=="
+            "version": "4.24.0",
+            "resolved": "https://registry.npmjs.org/@algolia/logger-common/-/logger-common-4.24.0.tgz",
+            "integrity": "sha512-LLUNjkahj9KtKYrQhFKCzMx0BY3RnNP4FEtO+sBybCjJ73E8jNdaKJ/Dd8A/VA4imVHP5tADZ8pn5B8Ga/wTMA=="
         },
         "node_modules/@algolia/logger-console": {
-            "version": "4.20.0",
-            "resolved": "https://registry.npmjs.org/@algolia/logger-console/-/logger-console-4.20.0.tgz",
-            "integrity": "sha512-THlIGG1g/FS63z0StQqDhT6bprUczBI8wnLT3JWvfAQDZX5P6fCg7dG+pIrUBpDIHGszgkqYEqECaKKsdNKOUA==",
+            "version": "4.24.0",
+            "resolved": "https://registry.npmjs.org/@algolia/logger-console/-/logger-console-4.24.0.tgz",
+            "integrity": "sha512-X4C8IoHgHfiUROfoRCV+lzSy+LHMgkoEEU1BbKcsfnV0i0S20zyy0NLww9dwVHUWNfPPxdMU+/wKmLGYf96yTg==",
             "dependencies": {
-                "@algolia/logger-common": "4.20.0"
+                "@algolia/logger-common": "4.24.0"
             }
         },
-        "node_modules/@algolia/requester-browser-xhr": {
-            "version": "4.20.0",
-            "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.20.0.tgz",
-            "integrity": "sha512-HbzoSjcjuUmYOkcHECkVTwAelmvTlgs48N6Owt4FnTOQdwn0b8pdht9eMgishvk8+F8bal354nhx/xOoTfwiAw==",
+        "node_modules/@algolia/recommend": {
+            "version": "4.24.0",
+            "resolved": "https://registry.npmjs.org/@algolia/recommend/-/recommend-4.24.0.tgz",
+            "integrity": "sha512-P9kcgerfVBpfYHDfVZDvvdJv0lEoCvzNlOy2nykyt5bK8TyieYyiD0lguIJdRZZYGre03WIAFf14pgE+V+IBlw==",
             "dependencies": {
-                "@algolia/requester-common": "4.20.0"
+                "@algolia/cache-browser-local-storage": "4.24.0",
+                "@algolia/cache-common": "4.24.0",
+                "@algolia/cache-in-memory": "4.24.0",
+                "@algolia/client-common": "4.24.0",
+                "@algolia/client-search": "4.24.0",
+                "@algolia/logger-common": "4.24.0",
+                "@algolia/logger-console": "4.24.0",
+                "@algolia/requester-browser-xhr": "4.24.0",
+                "@algolia/requester-common": "4.24.0",
+                "@algolia/requester-node-http": "4.24.0",
+                "@algolia/transporter": "4.24.0"
             }
         },
-        "node_modules/@algolia/requester-common": {
-            "version": "4.20.0",
-            "resolved": "https://registry.npmjs.org/@algolia/requester-common/-/requester-common-4.20.0.tgz",
-            "integrity": "sha512-9h6ye6RY/BkfmeJp7Z8gyyeMrmmWsMOCRBXQDs4mZKKsyVlfIVICpcSibbeYcuUdurLhIlrOUkH3rQEgZzonng=="
-        },
-        "node_modules/@algolia/requester-node-http": {
-            "version": "4.20.0",
-            "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-4.20.0.tgz",
-            "integrity": "sha512-ocJ66L60ABSSTRFnCHIEZpNHv6qTxsBwJEPfYaSBsLQodm0F9ptvalFkHMpvj5DfE22oZrcrLbOYM2bdPJRHng==",
+        "node_modules/@algolia/recommend/node_modules/@algolia/client-common": {
+            "version": "4.24.0",
+            "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.24.0.tgz",
+            "integrity": "sha512-bc2ROsNL6w6rqpl5jj/UywlIYC21TwSSoFHKl01lYirGMW+9Eek6r02Tocg4gZ8HAw3iBvu6XQiM3BEbmEMoiA==",
             "dependencies": {
-                "@algolia/requester-common": "4.20.0"
+                "@algolia/requester-common": "4.24.0",
+                "@algolia/transporter": "4.24.0"
             }
         },
-        "node_modules/@algolia/transporter": {
-            "version": "4.20.0",
-            "resolved": "https://registry.npmjs.org/@algolia/transporter/-/transporter-4.20.0.tgz",
-            "integrity": "sha512-Lsii1pGWOAISbzeyuf+r/GPhvHMPHSPrTDWNcIzOE1SG1inlJHICaVe2ikuoRjcpgxZNU54Jl+if15SUCsaTUg==",
+        "node_modules/@algolia/recommend/node_modules/@algolia/client-search": {
+            "version": "4.24.0",
+            "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.24.0.tgz",
+            "integrity": "sha512-uRW6EpNapmLAD0mW47OXqTP8eiIx5F6qN9/x/7HHO6owL3N1IXqydGwW5nhDFBrV+ldouro2W1VX3XlcUXEFCA==",
             "dependencies": {
-                "@algolia/cache-common": "4.20.0",
-                "@algolia/logger-common": "4.20.0",
-                "@algolia/requester-common": "4.20.0"
+                "@algolia/client-common": "4.24.0",
+                "@algolia/requester-common": "4.24.0",
+                "@algolia/transporter": "4.24.0"
             }
         },
-        "node_modules/@ampproject/remapping": {
-            "version": "2.2.1",
-            "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz",
-            "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==",
+        "node_modules/@algolia/recommend/node_modules/@algolia/requester-browser-xhr": {
+            "version": "4.24.0",
+            "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.24.0.tgz",
+            "integrity": "sha512-Z2NxZMb6+nVXSjF13YpjYTdvV3032YTBSGm2vnYvYPA6mMxzM3v5rsCiSspndn9rzIW4Qp1lPHBvuoKJV6jnAA==",
             "dependencies": {
-                "@jridgewell/gen-mapping": "^0.3.0",
-                "@jridgewell/trace-mapping": "^0.3.9"
-            },
-            "engines": {
-                "node": ">=6.0.0"
+                "@algolia/requester-common": "4.24.0"
             }
         },
-        "node_modules/@babel/code-frame": {
-            "version": "7.22.13",
-            "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz",
-            "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==",
+        "node_modules/@algolia/recommend/node_modules/@algolia/requester-node-http": {
+            "version": "4.24.0",
+            "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-4.24.0.tgz",
+            "integrity": "sha512-JF18yTjNOVYvU/L3UosRcvbPMGT9B+/GQWNWnenIImglzNVGpyzChkXLnrSf6uxwVNO6ESGu6oN8MqcGQcjQJw==",
             "dependencies": {
-                "@babel/highlight": "^7.22.13",
-                "chalk": "^2.4.2"
-            },
-            "engines": {
-                "node": ">=6.9.0"
+                "@algolia/requester-common": "4.24.0"
             }
         },
-        "node_modules/@babel/code-frame/node_modules/ansi-styles": {
-            "version": "3.2.1",
-            "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
-            "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+        "node_modules/@algolia/requester-browser-xhr": {
+            "version": "5.2.3",
+            "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.2.3.tgz",
+            "integrity": "sha512-lezcE4E7ax7JkDGDKA/xAnyAY9p9LZ4AxzsyL0pksqUpOvn4U0msP553M2yJRfsxxdGDp15noCnPuRsh7u8dMg==",
+            "peer": true,
             "dependencies": {
-                "color-convert": "^1.9.0"
+                "@algolia/client-common": "5.2.3"
             },
             "engines": {
-                "node": ">=4"
+                "node": ">= 14.0.0"
             }
         },
-        "node_modules/@babel/code-frame/node_modules/chalk": {
-            "version": "2.4.2",
-            "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
-            "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+        "node_modules/@algolia/requester-common": {
+            "version": "4.24.0",
+            "resolved": "https://registry.npmjs.org/@algolia/requester-common/-/requester-common-4.24.0.tgz",
+            "integrity": "sha512-k3CXJ2OVnvgE3HMwcojpvY6d9kgKMPRxs/kVohrwF5WMr2fnqojnycZkxPoEg+bXm8fi5BBfFmOqgYztRtHsQA=="
+        },
+        "node_modules/@algolia/requester-node-http": {
+            "version": "5.2.3",
+            "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-5.2.3.tgz",
+            "integrity": "sha512-xTxsRnJqxG1dylIkxmflrHO9LJfJKjSHqEF5yGdRrtnqIEvb2hiQPCHm2XwqxMa3NBcf6lmydGfJqhPLnRJwtw==",
+            "peer": true,
             "dependencies": {
-                "ansi-styles": "^3.2.1",
-                "escape-string-regexp": "^1.0.5",
-                "supports-color": "^5.3.0"
+                "@algolia/client-common": "5.2.3"
             },
             "engines": {
-                "node": ">=4"
+                "node": ">= 14.0.0"
             }
         },
-        "node_modules/@babel/code-frame/node_modules/color-convert": {
-            "version": "1.9.3",
-            "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
-            "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+        "node_modules/@algolia/transporter": {
+            "version": "4.24.0",
+            "resolved": "https://registry.npmjs.org/@algolia/transporter/-/transporter-4.24.0.tgz",
+            "integrity": "sha512-86nI7w6NzWxd1Zp9q3413dRshDqAzSbsQjhcDhPIatEFiZrL1/TjnHL8S7jVKFePlIMzDsZWXAXwXzcok9c5oA==",
             "dependencies": {
-                "color-name": "1.1.3"
+                "@algolia/cache-common": "4.24.0",
+                "@algolia/logger-common": "4.24.0",
+                "@algolia/requester-common": "4.24.0"
             }
         },
-        "node_modules/@babel/code-frame/node_modules/color-name": {
-            "version": "1.1.3",
-            "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
-            "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw=="
-        },
-        "node_modules/@babel/code-frame/node_modules/escape-string-regexp": {
-            "version": "1.0.5",
-            "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
-            "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
-            "engines": {
-                "node": ">=0.8.0"
-            }
-        },
-        "node_modules/@babel/code-frame/node_modules/has-flag": {
-            "version": "3.0.0",
-            "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
-            "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
+        "node_modules/@ampproject/remapping": {
+            "version": "2.2.1",
+            "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz",
+            "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==",
+            "dependencies": {
+                "@jridgewell/gen-mapping": "^0.3.0",
+                "@jridgewell/trace-mapping": "^0.3.9"
+            },
             "engines": {
-                "node": ">=4"
+                "node": ">=6.0.0"
             }
         },
-        "node_modules/@babel/code-frame/node_modules/supports-color": {
-            "version": "5.5.0",
-            "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
-            "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+        "node_modules/@babel/code-frame": {
+            "version": "7.24.7",
+            "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz",
+            "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==",
             "dependencies": {
-                "has-flag": "^3.0.0"
+                "@babel/highlight": "^7.24.7",
+                "picocolors": "^1.0.0"
             },
             "engines": {
-                "node": ">=4"
+                "node": ">=6.9.0"
             }
         },
         "node_modules/@babel/compat-data": {
-            "version": "7.23.2",
-            "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.2.tgz",
-            "integrity": "sha512-0S9TQMmDHlqAZ2ITT95irXKfxN9bncq8ZCoJhun3nHL/lLUxd2NKBJYoNGWH7S0hz6fRQwWlAWn/ILM0C70KZQ==",
+            "version": "7.25.4",
+            "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.4.tgz",
+            "integrity": "sha512-+LGRog6RAsCJrrrg/IO6LGmpphNe5DiK30dGjCoxxeGv49B10/3XYGxPsAwrDlMFcFEvdAUavDT8r9k/hSyQqQ==",
             "engines": {
                 "node": ">=6.9.0"
             }
         },
         "node_modules/@babel/core": {
-            "version": "7.23.2",
-            "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.2.tgz",
-            "integrity": "sha512-n7s51eWdaWZ3vGT2tD4T7J6eJs3QoBXydv7vkUM06Bf1cbVD2Kc2UrkzhiQwobfV7NwOnQXYL7UBJ5VPU+RGoQ==",
+            "version": "7.25.2",
+            "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.25.2.tgz",
+            "integrity": "sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==",
             "dependencies": {
                 "@ampproject/remapping": "^2.2.0",
-                "@babel/code-frame": "^7.22.13",
-                "@babel/generator": "^7.23.0",
-                "@babel/helper-compilation-targets": "^7.22.15",
-                "@babel/helper-module-transforms": "^7.23.0",
-                "@babel/helpers": "^7.23.2",
-                "@babel/parser": "^7.23.0",
-                "@babel/template": "^7.22.15",
-                "@babel/traverse": "^7.23.2",
-                "@babel/types": "^7.23.0",
+                "@babel/code-frame": "^7.24.7",
+                "@babel/generator": "^7.25.0",
+                "@babel/helper-compilation-targets": "^7.25.2",
+                "@babel/helper-module-transforms": "^7.25.2",
+                "@babel/helpers": "^7.25.0",
+                "@babel/parser": "^7.25.0",
+                "@babel/template": "^7.25.0",
+                "@babel/traverse": "^7.25.2",
+                "@babel/types": "^7.25.2",
                 "convert-source-map": "^2.0.0",
                 "debug": "^4.1.0",
                 "gensync": "^1.0.0-beta.2",
@@ -342,13 +390,13 @@
             }
         },
         "node_modules/@babel/generator": {
-            "version": "7.23.0",
-            "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz",
-            "integrity": "sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==",
+            "version": "7.25.6",
+            "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.25.6.tgz",
+            "integrity": "sha512-VPC82gr1seXOpkjAAKoLhP50vx4vGNlF4msF64dSFq1P8RfB+QAuJWGHPXXPc8QyfVWwwB/TNNU4+ayZmHNbZw==",
             "dependencies": {
-                "@babel/types": "^7.23.0",
-                "@jridgewell/gen-mapping": "^0.3.2",
-                "@jridgewell/trace-mapping": "^0.3.17",
+                "@babel/types": "^7.25.6",
+                "@jridgewell/gen-mapping": "^0.3.5",
+                "@jridgewell/trace-mapping": "^0.3.25",
                 "jsesc": "^2.5.1"
             },
             "engines": {
@@ -378,13 +426,13 @@
             }
         },
         "node_modules/@babel/helper-compilation-targets": {
-            "version": "7.22.15",
-            "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz",
-            "integrity": "sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==",
+            "version": "7.25.2",
+            "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.2.tgz",
+            "integrity": "sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==",
             "dependencies": {
-                "@babel/compat-data": "^7.22.9",
-                "@babel/helper-validator-option": "^7.22.15",
-                "browserslist": "^4.21.9",
+                "@babel/compat-data": "^7.25.2",
+                "@babel/helper-validator-option": "^7.24.8",
+                "browserslist": "^4.23.1",
                 "lru-cache": "^5.1.1",
                 "semver": "^6.3.1"
             },
@@ -512,26 +560,26 @@
             }
         },
         "node_modules/@babel/helper-module-imports": {
-            "version": "7.22.15",
-            "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz",
-            "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==",
+            "version": "7.24.7",
+            "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz",
+            "integrity": "sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==",
             "dependencies": {
-                "@babel/types": "^7.22.15"
+                "@babel/traverse": "^7.24.7",
+                "@babel/types": "^7.24.7"
             },
             "engines": {
                 "node": ">=6.9.0"
             }
         },
         "node_modules/@babel/helper-module-transforms": {
-            "version": "7.23.0",
-            "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.0.tgz",
-            "integrity": "sha512-WhDWw1tdrlT0gMgUJSlX0IQvoO1eN279zrAUbVB+KpV2c3Tylz8+GnKOLllCS6Z/iZQEyVYxhZVUdPTqs2YYPw==",
+            "version": "7.25.2",
+            "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.25.2.tgz",
+            "integrity": "sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==",
             "dependencies": {
-                "@babel/helper-environment-visitor": "^7.22.20",
-                "@babel/helper-module-imports": "^7.22.15",
-                "@babel/helper-simple-access": "^7.22.5",
-                "@babel/helper-split-export-declaration": "^7.22.6",
-                "@babel/helper-validator-identifier": "^7.22.20"
+                "@babel/helper-module-imports": "^7.24.7",
+                "@babel/helper-simple-access": "^7.24.7",
+                "@babel/helper-validator-identifier": "^7.24.7",
+                "@babel/traverse": "^7.25.2"
             },
             "engines": {
                 "node": ">=6.9.0"
@@ -592,11 +640,12 @@
             }
         },
         "node_modules/@babel/helper-simple-access": {
-            "version": "7.22.5",
-            "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz",
-            "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==",
+            "version": "7.24.7",
+            "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz",
+            "integrity": "sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==",
             "dependencies": {
-                "@babel/types": "^7.22.5"
+                "@babel/traverse": "^7.24.7",
+                "@babel/types": "^7.24.7"
             },
             "engines": {
                 "node": ">=6.9.0"
@@ -625,25 +674,25 @@
             }
         },
         "node_modules/@babel/helper-string-parser": {
-            "version": "7.22.5",
-            "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz",
-            "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==",
+            "version": "7.24.8",
+            "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz",
+            "integrity": "sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==",
             "engines": {
                 "node": ">=6.9.0"
             }
         },
         "node_modules/@babel/helper-validator-identifier": {
-            "version": "7.22.20",
-            "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz",
-            "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==",
+            "version": "7.24.7",
+            "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz",
+            "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==",
             "engines": {
                 "node": ">=6.9.0"
             }
         },
         "node_modules/@babel/helper-validator-option": {
-            "version": "7.22.15",
-            "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz",
-            "integrity": "sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==",
+            "version": "7.24.8",
+            "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz",
+            "integrity": "sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==",
             "engines": {
                 "node": ">=6.9.0"
             }
@@ -662,26 +711,26 @@
             }
         },
         "node_modules/@babel/helpers": {
-            "version": "7.23.2",
-            "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.2.tgz",
-            "integrity": "sha512-lzchcp8SjTSVe/fPmLwtWVBFC7+Tbn8LGHDVfDp9JGxpAY5opSaEFgt8UQvrnECWOTdji2mOWMz1rOhkHscmGQ==",
+            "version": "7.25.6",
+            "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.25.6.tgz",
+            "integrity": "sha512-Xg0tn4HcfTijTwfDwYlvVCl43V6h4KyVVX2aEm4qdO/PC6L2YvzLHFdmxhoeSA3eslcE6+ZVXHgWwopXYLNq4Q==",
             "dependencies": {
-                "@babel/template": "^7.22.15",
-                "@babel/traverse": "^7.23.2",
-                "@babel/types": "^7.23.0"
+                "@babel/template": "^7.25.0",
+                "@babel/types": "^7.25.6"
             },
             "engines": {
                 "node": ">=6.9.0"
             }
         },
         "node_modules/@babel/highlight": {
-            "version": "7.22.20",
-            "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz",
-            "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==",
+            "version": "7.24.7",
+            "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz",
+            "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==",
             "dependencies": {
-                "@babel/helper-validator-identifier": "^7.22.20",
+                "@babel/helper-validator-identifier": "^7.24.7",
                 "chalk": "^2.4.2",
-                "js-tokens": "^4.0.0"
+                "js-tokens": "^4.0.0",
+                "picocolors": "^1.0.0"
             },
             "engines": {
                 "node": ">=6.9.0"
@@ -752,9 +801,12 @@
             }
         },
         "node_modules/@babel/parser": {
-            "version": "7.23.0",
-            "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz",
-            "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==",
+            "version": "7.25.6",
+            "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.6.tgz",
+            "integrity": "sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q==",
+            "dependencies": {
+                "@babel/types": "^7.25.6"
+            },
             "bin": {
                 "parser": "bin/babel-parser.js"
             },
@@ -2071,32 +2123,29 @@
             }
         },
         "node_modules/@babel/template": {
-            "version": "7.22.15",
-            "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz",
-            "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==",
+            "version": "7.25.0",
+            "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.0.tgz",
+            "integrity": "sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==",
             "dependencies": {
-                "@babel/code-frame": "^7.22.13",
-                "@babel/parser": "^7.22.15",
-                "@babel/types": "^7.22.15"
+                "@babel/code-frame": "^7.24.7",
+                "@babel/parser": "^7.25.0",
+                "@babel/types": "^7.25.0"
             },
             "engines": {
                 "node": ">=6.9.0"
             }
         },
         "node_modules/@babel/traverse": {
-            "version": "7.23.2",
-            "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz",
-            "integrity": "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==",
-            "dependencies": {
-                "@babel/code-frame": "^7.22.13",
-                "@babel/generator": "^7.23.0",
-                "@babel/helper-environment-visitor": "^7.22.20",
-                "@babel/helper-function-name": "^7.23.0",
-                "@babel/helper-hoist-variables": "^7.22.5",
-                "@babel/helper-split-export-declaration": "^7.22.6",
-                "@babel/parser": "^7.23.0",
-                "@babel/types": "^7.23.0",
-                "debug": "^4.1.0",
+            "version": "7.25.6",
+            "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.6.tgz",
+            "integrity": "sha512-9Vrcx5ZW6UwK5tvqsj0nGpp/XzqthkT0dqIc9g1AdtygFToNtTF67XzYS//dm+SAK9cp3B9R4ZO/46p63SCjlQ==",
+            "dependencies": {
+                "@babel/code-frame": "^7.24.7",
+                "@babel/generator": "^7.25.6",
+                "@babel/parser": "^7.25.6",
+                "@babel/template": "^7.25.0",
+                "@babel/types": "^7.25.6",
+                "debug": "^4.3.1",
                 "globals": "^11.1.0"
             },
             "engines": {
@@ -2104,12 +2153,12 @@
             }
         },
         "node_modules/@babel/types": {
-            "version": "7.23.0",
-            "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz",
-            "integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==",
+            "version": "7.25.6",
+            "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.6.tgz",
+            "integrity": "sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw==",
             "dependencies": {
-                "@babel/helper-string-parser": "^7.22.5",
-                "@babel/helper-validator-identifier": "^7.22.20",
+                "@babel/helper-string-parser": "^7.24.8",
+                "@babel/helper-validator-identifier": "^7.24.7",
                 "to-fast-properties": "^2.0.0"
             },
             "engines": {
@@ -2134,18 +2183,18 @@
             }
         },
         "node_modules/@docsearch/css": {
-            "version": "3.5.2",
-            "resolved": "https://registry.npmjs.org/@docsearch/css/-/css-3.5.2.tgz",
-            "integrity": "sha512-SPiDHaWKQZpwR2siD0KQUwlStvIAnEyK6tAE2h2Wuoq8ue9skzhlyVQ1ddzOxX6khULnAALDiR/isSF3bnuciA=="
+            "version": "3.6.1",
+            "resolved": "https://registry.npmjs.org/@docsearch/css/-/css-3.6.1.tgz",
+            "integrity": "sha512-VtVb5DS+0hRIprU2CO6ZQjK2Zg4QU5HrDM1+ix6rT0umsYvFvatMAnf97NHZlVWDaaLlx7GRfR/7FikANiM2Fg=="
         },
         "node_modules/@docsearch/react": {
-            "version": "3.5.2",
-            "resolved": "https://registry.npmjs.org/@docsearch/react/-/react-3.5.2.tgz",
-            "integrity": "sha512-9Ahcrs5z2jq/DcAvYtvlqEBHImbm4YJI8M9y0x6Tqg598P40HTEkX7hsMcIuThI+hTFxRGZ9hll0Wygm2yEjng==",
+            "version": "3.6.1",
+            "resolved": "https://registry.npmjs.org/@docsearch/react/-/react-3.6.1.tgz",
+            "integrity": "sha512-qXZkEPvybVhSXj0K7U3bXc233tk5e8PfhoZ6MhPOiik/qUQxYC+Dn9DnoS7CxHQQhHfCvTiN0eY9M12oRghEXw==",
             "dependencies": {
                 "@algolia/autocomplete-core": "1.9.3",
                 "@algolia/autocomplete-preset-algolia": "1.9.3",
-                "@docsearch/css": "3.5.2",
+                "@docsearch/css": "3.6.1",
                 "algoliasearch": "^4.19.1"
             },
             "peerDependencies": {
@@ -2170,12 +2219,12 @@
             }
         },
         "node_modules/@docusaurus/core": {
-            "version": "3.0.0",
-            "resolved": "https://registry.npmjs.org/@docusaurus/core/-/core-3.0.0.tgz",
-            "integrity": "sha512-bHWtY55tJTkd6pZhHrWz1MpWuwN4edZe0/UWgFF7PW/oJeDZvLSXKqwny3L91X1/LGGoypBGkeZn8EOuKeL4yQ==",
+            "version": "3.5.2",
+            "resolved": "https://registry.npmjs.org/@docusaurus/core/-/core-3.5.2.tgz",
+            "integrity": "sha512-4Z1WkhCSkX4KO0Fw5m/Vuc7Q3NxBG53NE5u59Rs96fWkMPZVSrzEPP16/Nk6cWb/shK7xXPndTmalJtw7twL/w==",
             "dependencies": {
-                "@babel/core": "^7.22.9",
-                "@babel/generator": "^7.22.9",
+                "@babel/core": "^7.23.3",
+                "@babel/generator": "^7.23.3",
                 "@babel/plugin-syntax-dynamic-import": "^7.8.3",
                 "@babel/plugin-transform-runtime": "^7.22.9",
                 "@babel/preset-env": "^7.22.9",
@@ -2184,15 +2233,12 @@
                 "@babel/runtime": "^7.22.6",
                 "@babel/runtime-corejs3": "^7.22.6",
                 "@babel/traverse": "^7.22.8",
-                "@docusaurus/cssnano-preset": "3.0.0",
-                "@docusaurus/logger": "3.0.0",
-                "@docusaurus/mdx-loader": "3.0.0",
-                "@docusaurus/react-loadable": "5.5.2",
-                "@docusaurus/utils": "3.0.0",
-                "@docusaurus/utils-common": "3.0.0",
-                "@docusaurus/utils-validation": "3.0.0",
-                "@slorber/static-site-generator-webpack-plugin": "^4.0.7",
-                "@svgr/webpack": "^6.5.1",
+                "@docusaurus/cssnano-preset": "3.5.2",
+                "@docusaurus/logger": "3.5.2",
+                "@docusaurus/mdx-loader": "3.5.2",
+                "@docusaurus/utils": "3.5.2",
+                "@docusaurus/utils-common": "3.5.2",
+                "@docusaurus/utils-validation": "3.5.2",
                 "autoprefixer": "^10.4.14",
                 "babel-loader": "^9.1.3",
                 "babel-plugin-dynamic-import-node": "^2.3.3",
@@ -2206,12 +2252,13 @@
                 "copy-webpack-plugin": "^11.0.0",
                 "core-js": "^3.31.1",
                 "css-loader": "^6.8.1",
-                "css-minimizer-webpack-plugin": "^4.2.2",
-                "cssnano": "^5.1.15",
+                "css-minimizer-webpack-plugin": "^5.0.1",
+                "cssnano": "^6.1.2",
                 "del": "^6.1.1",
                 "detect-port": "^1.5.1",
                 "escape-html": "^1.0.3",
                 "eta": "^2.2.0",
+                "eval": "^0.1.8",
                 "file-loader": "^6.2.0",
                 "fs-extra": "^11.1.1",
                 "html-minifier-terser": "^7.2.0",
@@ -2220,12 +2267,13 @@
                 "leven": "^3.1.0",
                 "lodash": "^4.17.21",
                 "mini-css-extract-plugin": "^2.7.6",
+                "p-map": "^4.0.0",
                 "postcss": "^8.4.26",
                 "postcss-loader": "^7.3.3",
                 "prompts": "^2.4.2",
                 "react-dev-utils": "^12.0.1",
                 "react-helmet-async": "^1.3.0",
-                "react-loadable": "npm:@docusaurus/react-loadable@5.5.2",
+                "react-loadable": "npm:@docusaurus/react-loadable@6.0.0",
                 "react-loadable-ssr-addon-v5-slorber": "^1.0.1",
                 "react-router": "^5.3.4",
                 "react-router-config": "^5.1.1",
@@ -2238,7 +2286,6 @@
                 "tslib": "^2.6.0",
                 "update-notifier": "^6.0.2",
                 "url-loader": "^4.1.1",
-                "wait-on": "^7.0.1",
                 "webpack": "^5.88.1",
                 "webpack-bundle-analyzer": "^4.9.0",
                 "webpack-dev-server": "^4.15.1",
@@ -2252,1273 +2299,534 @@
                 "node": ">=18.0"
             },
             "peerDependencies": {
+                "@mdx-js/react": "^3.0.0",
                 "react": "^18.0.0",
                 "react-dom": "^18.0.0"
             }
         },
-        "node_modules/@docusaurus/core/node_modules/@svgr/babel-plugin-add-jsx-attribute": {
-            "version": "6.5.1",
-            "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-6.5.1.tgz",
-            "integrity": "sha512-9PYGcXrAxitycIjRmZB+Q0JaN07GZIWaTBIGQzfaZv+qr1n8X1XUEJ5rZ/vx6OVD9RRYlrNnXWExQXcmZeD/BQ==",
-            "engines": {
-                "node": ">=10"
-            },
-            "funding": {
-                "type": "github",
-                "url": "https://github.com/sponsors/gregberge"
+        "node_modules/@docusaurus/cssnano-preset": {
+            "version": "3.5.2",
+            "resolved": "https://registry.npmjs.org/@docusaurus/cssnano-preset/-/cssnano-preset-3.5.2.tgz",
+            "integrity": "sha512-D3KiQXOMA8+O0tqORBrTOEQyQxNIfPm9jEaJoALjjSjc2M/ZAWcUfPQEnwr2JB2TadHw2gqWgpZckQmrVWkytA==",
+            "dependencies": {
+                "cssnano-preset-advanced": "^6.1.2",
+                "postcss": "^8.4.38",
+                "postcss-sort-media-queries": "^5.2.0",
+                "tslib": "^2.6.0"
             },
-            "peerDependencies": {
-                "@babel/core": "^7.0.0-0"
+            "engines": {
+                "node": ">=18.0"
             }
         },
-        "node_modules/@docusaurus/core/node_modules/@svgr/babel-plugin-replace-jsx-attribute-value": {
-            "version": "6.5.1",
-            "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-6.5.1.tgz",
-            "integrity": "sha512-8DPaVVE3fd5JKuIC29dqyMB54sA6mfgki2H2+swh+zNJoynC8pMPzOkidqHOSc6Wj032fhl8Z0TVn1GiPpAiJg==",
+        "node_modules/@docusaurus/logger": {
+            "version": "3.5.2",
+            "resolved": "https://registry.npmjs.org/@docusaurus/logger/-/logger-3.5.2.tgz",
+            "integrity": "sha512-LHC540SGkeLfyT3RHK3gAMK6aS5TRqOD4R72BEU/DE2M/TY8WwEUAMY576UUc/oNJXv8pGhBmQB6N9p3pt8LQw==",
+            "dependencies": {
+                "chalk": "^4.1.2",
+                "tslib": "^2.6.0"
+            },
             "engines": {
-                "node": ">=10"
+                "node": ">=18.0"
+            }
+        },
+        "node_modules/@docusaurus/mdx-loader": {
+            "version": "3.5.2",
+            "resolved": "https://registry.npmjs.org/@docusaurus/mdx-loader/-/mdx-loader-3.5.2.tgz",
+            "integrity": "sha512-ku3xO9vZdwpiMIVd8BzWV0DCqGEbCP5zs1iHfKX50vw6jX8vQo0ylYo1YJMZyz6e+JFJ17HYHT5FzVidz2IflA==",
+            "dependencies": {
+                "@docusaurus/logger": "3.5.2",
+                "@docusaurus/utils": "3.5.2",
+                "@docusaurus/utils-validation": "3.5.2",
+                "@mdx-js/mdx": "^3.0.0",
+                "@slorber/remark-comment": "^1.0.0",
+                "escape-html": "^1.0.3",
+                "estree-util-value-to-estree": "^3.0.1",
+                "file-loader": "^6.2.0",
+                "fs-extra": "^11.1.1",
+                "image-size": "^1.0.2",
+                "mdast-util-mdx": "^3.0.0",
+                "mdast-util-to-string": "^4.0.0",
+                "rehype-raw": "^7.0.0",
+                "remark-directive": "^3.0.0",
+                "remark-emoji": "^4.0.0",
+                "remark-frontmatter": "^5.0.0",
+                "remark-gfm": "^4.0.0",
+                "stringify-object": "^3.3.0",
+                "tslib": "^2.6.0",
+                "unified": "^11.0.3",
+                "unist-util-visit": "^5.0.0",
+                "url-loader": "^4.1.1",
+                "vfile": "^6.0.1",
+                "webpack": "^5.88.1"
             },
-            "funding": {
-                "type": "github",
-                "url": "https://github.com/sponsors/gregberge"
+            "engines": {
+                "node": ">=18.0"
             },
             "peerDependencies": {
-                "@babel/core": "^7.0.0-0"
+                "react": "^18.0.0",
+                "react-dom": "^18.0.0"
             }
         },
-        "node_modules/@docusaurus/core/node_modules/@svgr/babel-plugin-svg-dynamic-title": {
-            "version": "6.5.1",
-            "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-6.5.1.tgz",
-            "integrity": "sha512-FwOEi0Il72iAzlkaHrlemVurgSQRDFbk0OC8dSvD5fSBPHltNh7JtLsxmZUhjYBZo2PpcU/RJvvi6Q0l7O7ogw==",
-            "engines": {
-                "node": ">=10"
-            },
-            "funding": {
-                "type": "github",
-                "url": "https://github.com/sponsors/gregberge"
+        "node_modules/@docusaurus/module-type-aliases": {
+            "version": "3.5.2",
+            "resolved": "https://registry.npmjs.org/@docusaurus/module-type-aliases/-/module-type-aliases-3.5.2.tgz",
+            "integrity": "sha512-Z+Xu3+2rvKef/YKTMxZHsEXp1y92ac0ngjDiExRdqGTmEKtCUpkbNYH8v5eXo5Ls+dnW88n6WTa+Q54kLOkwPg==",
+            "dependencies": {
+                "@docusaurus/types": "3.5.2",
+                "@types/history": "^4.7.11",
+                "@types/react": "*",
+                "@types/react-router-config": "*",
+                "@types/react-router-dom": "*",
+                "react-helmet-async": "*",
+                "react-loadable": "npm:@docusaurus/react-loadable@6.0.0"
             },
             "peerDependencies": {
-                "@babel/core": "^7.0.0-0"
+                "react": "*",
+                "react-dom": "*"
             }
         },
-        "node_modules/@docusaurus/core/node_modules/@svgr/babel-plugin-svg-em-dimensions": {
-            "version": "6.5.1",
-            "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-6.5.1.tgz",
-            "integrity": "sha512-gWGsiwjb4tw+ITOJ86ndY/DZZ6cuXMNE/SjcDRg+HLuCmwpcjOktwRF9WgAiycTqJD/QXqL2f8IzE2Rzh7aVXA==",
-            "engines": {
-                "node": ">=10"
+        "node_modules/@docusaurus/plugin-client-redirects": {
+            "version": "3.5.2",
+            "resolved": "https://registry.npmjs.org/@docusaurus/plugin-client-redirects/-/plugin-client-redirects-3.5.2.tgz",
+            "integrity": "sha512-GMU0ZNoVG1DEsZlBbwLPdh0iwibrVZiRfmdppvX17SnByCVP74mb/Nne7Ss7ALgxQLtM4IHbXi8ij90VVjAJ+Q==",
+            "dependencies": {
+                "@docusaurus/core": "3.5.2",
+                "@docusaurus/logger": "3.5.2",
+                "@docusaurus/utils": "3.5.2",
+                "@docusaurus/utils-common": "3.5.2",
+                "@docusaurus/utils-validation": "3.5.2",
+                "eta": "^2.2.0",
+                "fs-extra": "^11.1.1",
+                "lodash": "^4.17.21",
+                "tslib": "^2.6.0"
             },
-            "funding": {
-                "type": "github",
-                "url": "https://github.com/sponsors/gregberge"
+            "engines": {
+                "node": ">=18.0"
             },
             "peerDependencies": {
-                "@babel/core": "^7.0.0-0"
+                "react": "^18.0.0",
+                "react-dom": "^18.0.0"
             }
         },
-        "node_modules/@docusaurus/core/node_modules/@svgr/babel-plugin-transform-react-native-svg": {
-            "version": "6.5.1",
-            "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-6.5.1.tgz",
-            "integrity": "sha512-2jT3nTayyYP7kI6aGutkyfJ7UMGtuguD72OjeGLwVNyfPRBD8zQthlvL+fAbAKk5n9ZNcvFkp/b1lZ7VsYqVJg==",
-            "engines": {
-                "node": ">=10"
+        "node_modules/@docusaurus/plugin-content-blog": {
+            "version": "3.5.2",
+            "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-blog/-/plugin-content-blog-3.5.2.tgz",
+            "integrity": "sha512-R7ghWnMvjSf+aeNDH0K4fjyQnt5L0KzUEnUhmf1e3jZrv3wogeytZNN6n7X8yHcMsuZHPOrctQhXWnmxu+IRRg==",
+            "dependencies": {
+                "@docusaurus/core": "3.5.2",
+                "@docusaurus/logger": "3.5.2",
+                "@docusaurus/mdx-loader": "3.5.2",
+                "@docusaurus/theme-common": "3.5.2",
+                "@docusaurus/types": "3.5.2",
+                "@docusaurus/utils": "3.5.2",
+                "@docusaurus/utils-common": "3.5.2",
+                "@docusaurus/utils-validation": "3.5.2",
+                "cheerio": "1.0.0-rc.12",
+                "feed": "^4.2.2",
+                "fs-extra": "^11.1.1",
+                "lodash": "^4.17.21",
+                "reading-time": "^1.5.0",
+                "srcset": "^4.0.0",
+                "tslib": "^2.6.0",
+                "unist-util-visit": "^5.0.0",
+                "utility-types": "^3.10.0",
+                "webpack": "^5.88.1"
             },
-            "funding": {
-                "type": "github",
-                "url": "https://github.com/sponsors/gregberge"
+            "engines": {
+                "node": ">=18.0"
             },
             "peerDependencies": {
-                "@babel/core": "^7.0.0-0"
-            }
-        },
-        "node_modules/@docusaurus/core/node_modules/@svgr/babel-plugin-transform-svg-component": {
-            "version": "6.5.1",
-            "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-6.5.1.tgz",
-            "integrity": "sha512-a1p6LF5Jt33O3rZoVRBqdxL350oge54iZWHNI6LJB5tQ7EelvD/Mb1mfBiZNAan0dt4i3VArkFRjA4iObuNykQ==",
-            "engines": {
-                "node": ">=12"
-            },
-            "funding": {
-                "type": "github",
-                "url": "https://github.com/sponsors/gregberge"
-            },
-            "peerDependencies": {
-                "@babel/core": "^7.0.0-0"
-            }
-        },
-        "node_modules/@docusaurus/core/node_modules/@svgr/babel-preset": {
-            "version": "6.5.1",
-            "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-6.5.1.tgz",
-            "integrity": "sha512-6127fvO/FF2oi5EzSQOAjo1LE3OtNVh11R+/8FXa+mHx1ptAaS4cknIjnUA7e6j6fwGGJ17NzaTJFUwOV2zwCw==",
-            "dependencies": {
-                "@svgr/babel-plugin-add-jsx-attribute": "^6.5.1",
-                "@svgr/babel-plugin-remove-jsx-attribute": "*",
-                "@svgr/babel-plugin-remove-jsx-empty-expression": "*",
-                "@svgr/babel-plugin-replace-jsx-attribute-value": "^6.5.1",
-                "@svgr/babel-plugin-svg-dynamic-title": "^6.5.1",
-                "@svgr/babel-plugin-svg-em-dimensions": "^6.5.1",
-                "@svgr/babel-plugin-transform-react-native-svg": "^6.5.1",
-                "@svgr/babel-plugin-transform-svg-component": "^6.5.1"
-            },
-            "engines": {
-                "node": ">=10"
-            },
-            "funding": {
-                "type": "github",
-                "url": "https://github.com/sponsors/gregberge"
-            },
-            "peerDependencies": {
-                "@babel/core": "^7.0.0-0"
-            }
-        },
-        "node_modules/@docusaurus/core/node_modules/@svgr/core": {
-            "version": "6.5.1",
-            "resolved": "https://registry.npmjs.org/@svgr/core/-/core-6.5.1.tgz",
-            "integrity": "sha512-/xdLSWxK5QkqG524ONSjvg3V/FkNyCv538OIBdQqPNaAta3AsXj/Bd2FbvR87yMbXO2hFSWiAe/Q6IkVPDw+mw==",
-            "dependencies": {
-                "@babel/core": "^7.19.6",
-                "@svgr/babel-preset": "^6.5.1",
-                "@svgr/plugin-jsx": "^6.5.1",
-                "camelcase": "^6.2.0",
-                "cosmiconfig": "^7.0.1"
-            },
-            "engines": {
-                "node": ">=10"
-            },
-            "funding": {
-                "type": "github",
-                "url": "https://github.com/sponsors/gregberge"
-            }
-        },
-        "node_modules/@docusaurus/core/node_modules/@svgr/hast-util-to-babel-ast": {
-            "version": "6.5.1",
-            "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-6.5.1.tgz",
-            "integrity": "sha512-1hnUxxjd83EAxbL4a0JDJoD3Dao3hmjvyvyEV8PzWmLK3B9m9NPlW7GKjFyoWE8nM7HnXzPcmmSyOW8yOddSXw==",
-            "dependencies": {
-                "@babel/types": "^7.20.0",
-                "entities": "^4.4.0"
-            },
-            "engines": {
-                "node": ">=10"
-            },
-            "funding": {
-                "type": "github",
-                "url": "https://github.com/sponsors/gregberge"
-            }
-        },
-        "node_modules/@docusaurus/core/node_modules/@svgr/plugin-jsx": {
-            "version": "6.5.1",
-            "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-6.5.1.tgz",
-            "integrity": "sha512-+UdQxI3jgtSjCykNSlEMuy1jSRQlGC7pqBCPvkG/2dATdWo082zHTTK3uhnAju2/6XpE6B5mZ3z4Z8Ns01S8Gw==",
-            "dependencies": {
-                "@babel/core": "^7.19.6",
-                "@svgr/babel-preset": "^6.5.1",
-                "@svgr/hast-util-to-babel-ast": "^6.5.1",
-                "svg-parser": "^2.0.4"
-            },
-            "engines": {
-                "node": ">=10"
-            },
-            "funding": {
-                "type": "github",
-                "url": "https://github.com/sponsors/gregberge"
-            },
-            "peerDependencies": {
-                "@svgr/core": "^6.0.0"
-            }
-        },
-        "node_modules/@docusaurus/core/node_modules/@svgr/plugin-svgo": {
-            "version": "6.5.1",
-            "resolved": "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-6.5.1.tgz",
-            "integrity": "sha512-omvZKf8ixP9z6GWgwbtmP9qQMPX4ODXi+wzbVZgomNFsUIlHA1sf4fThdwTWSsZGgvGAG6yE+b/F5gWUkcZ/iQ==",
-            "dependencies": {
-                "cosmiconfig": "^7.0.1",
-                "deepmerge": "^4.2.2",
-                "svgo": "^2.8.0"
-            },
-            "engines": {
-                "node": ">=10"
-            },
-            "funding": {
-                "type": "github",
-                "url": "https://github.com/sponsors/gregberge"
-            },
-            "peerDependencies": {
-                "@svgr/core": "*"
-            }
-        },
-        "node_modules/@docusaurus/core/node_modules/@svgr/webpack": {
-            "version": "6.5.1",
-            "resolved": "https://registry.npmjs.org/@svgr/webpack/-/webpack-6.5.1.tgz",
-            "integrity": "sha512-cQ/AsnBkXPkEK8cLbv4Dm7JGXq2XrumKnL1dRpJD9rIO2fTIlJI9a1uCciYG1F2aUsox/hJQyNGbt3soDxSRkA==",
-            "dependencies": {
-                "@babel/core": "^7.19.6",
-                "@babel/plugin-transform-react-constant-elements": "^7.18.12",
-                "@babel/preset-env": "^7.19.4",
-                "@babel/preset-react": "^7.18.6",
-                "@babel/preset-typescript": "^7.18.6",
-                "@svgr/core": "^6.5.1",
-                "@svgr/plugin-jsx": "^6.5.1",
-                "@svgr/plugin-svgo": "^6.5.1"
-            },
-            "engines": {
-                "node": ">=10"
-            },
-            "funding": {
-                "type": "github",
-                "url": "https://github.com/sponsors/gregberge"
-            }
-        },
-        "node_modules/@docusaurus/core/node_modules/cosmiconfig": {
-            "version": "7.1.0",
-            "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz",
-            "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==",
-            "dependencies": {
-                "@types/parse-json": "^4.0.0",
-                "import-fresh": "^3.2.1",
-                "parse-json": "^5.0.0",
-                "path-type": "^4.0.0",
-                "yaml": "^1.10.0"
-            },
-            "engines": {
-                "node": ">=10"
-            }
-        },
-        "node_modules/@docusaurus/core/node_modules/css-select": {
-            "version": "4.3.0",
-            "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz",
-            "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==",
-            "dependencies": {
-                "boolbase": "^1.0.0",
-                "css-what": "^6.0.1",
-                "domhandler": "^4.3.1",
-                "domutils": "^2.8.0",
-                "nth-check": "^2.0.1"
-            },
-            "funding": {
-                "url": "https://github.com/sponsors/fb55"
-            }
-        },
-        "node_modules/@docusaurus/core/node_modules/css-tree": {
-            "version": "1.1.3",
-            "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz",
-            "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==",
-            "dependencies": {
-                "mdn-data": "2.0.14",
-                "source-map": "^0.6.1"
-            },
-            "engines": {
-                "node": ">=8.0.0"
-            }
-        },
-        "node_modules/@docusaurus/core/node_modules/csso": {
-            "version": "4.2.0",
-            "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz",
-            "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==",
-            "dependencies": {
-                "css-tree": "^1.1.2"
-            },
-            "engines": {
-                "node": ">=8.0.0"
-            }
-        },
-        "node_modules/@docusaurus/core/node_modules/dom-serializer": {
-            "version": "1.4.1",
-            "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz",
-            "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==",
-            "dependencies": {
-                "domelementtype": "^2.0.1",
-                "domhandler": "^4.2.0",
-                "entities": "^2.0.0"
-            },
-            "funding": {
-                "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"
-            }
-        },
-        "node_modules/@docusaurus/core/node_modules/dom-serializer/node_modules/entities": {
-            "version": "2.2.0",
-            "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz",
-            "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==",
-            "funding": {
-                "url": "https://github.com/fb55/entities?sponsor=1"
-            }
-        },
-        "node_modules/@docusaurus/core/node_modules/domhandler": {
-            "version": "4.3.1",
-            "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz",
-            "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==",
-            "dependencies": {
-                "domelementtype": "^2.2.0"
-            },
-            "engines": {
-                "node": ">= 4"
-            },
-            "funding": {
-                "url": "https://github.com/fb55/domhandler?sponsor=1"
-            }
-        },
-        "node_modules/@docusaurus/core/node_modules/domutils": {
-            "version": "2.8.0",
-            "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz",
-            "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==",
-            "dependencies": {
-                "dom-serializer": "^1.0.1",
-                "domelementtype": "^2.2.0",
-                "domhandler": "^4.2.0"
-            },
-            "funding": {
-                "url": "https://github.com/fb55/domutils?sponsor=1"
-            }
-        },
-        "node_modules/@docusaurus/core/node_modules/mdn-data": {
-            "version": "2.0.14",
-            "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz",
-            "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow=="
-        },
-        "node_modules/@docusaurus/core/node_modules/source-map": {
-            "version": "0.6.1",
-            "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-            "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-            "engines": {
-                "node": ">=0.10.0"
-            }
-        },
-        "node_modules/@docusaurus/core/node_modules/svgo": {
-            "version": "2.8.0",
-            "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz",
-            "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==",
-            "dependencies": {
-                "@trysound/sax": "0.2.0",
-                "commander": "^7.2.0",
-                "css-select": "^4.1.3",
-                "css-tree": "^1.1.3",
-                "csso": "^4.2.0",
-                "picocolors": "^1.0.0",
-                "stable": "^0.1.8"
-            },
-            "bin": {
-                "svgo": "bin/svgo"
-            },
-            "engines": {
-                "node": ">=10.13.0"
-            }
-        },
-        "node_modules/@docusaurus/core/node_modules/svgo/node_modules/commander": {
-            "version": "7.2.0",
-            "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz",
-            "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==",
-            "engines": {
-                "node": ">= 10"
-            }
-        },
-        "node_modules/@docusaurus/cssnano-preset": {
-            "version": "3.0.0",
-            "resolved": "https://registry.npmjs.org/@docusaurus/cssnano-preset/-/cssnano-preset-3.0.0.tgz",
-            "integrity": "sha512-FHiRfwmVvIVdIGsHcijUOaX7hMn0mugVYB7m4GkpYI6Mi56zwQV4lH5p7DxcW5CUYNWMVxz2loWSCiWEm5ikwA==",
-            "dependencies": {
-                "cssnano-preset-advanced": "^5.3.10",
-                "postcss": "^8.4.26",
-                "postcss-sort-media-queries": "^4.4.1",
-                "tslib": "^2.6.0"
-            },
-            "engines": {
-                "node": ">=18.0"
-            }
-        },
-        "node_modules/@docusaurus/logger": {
-            "version": "3.0.0",
-            "resolved": "https://registry.npmjs.org/@docusaurus/logger/-/logger-3.0.0.tgz",
-            "integrity": "sha512-6eX0eOfioMQCk+qgCnHvbLLuyIAA+r2lSID6d6JusiLtDKmYMfNp3F4yyE8bnb0Abmzt2w68XwptEFYyALSAXw==",
-            "dependencies": {
-                "chalk": "^4.1.2",
-                "tslib": "^2.6.0"
-            },
-            "engines": {
-                "node": ">=18.0"
-            }
-        },
-        "node_modules/@docusaurus/mdx-loader": {
-            "version": "3.0.0",
-            "resolved": "https://registry.npmjs.org/@docusaurus/mdx-loader/-/mdx-loader-3.0.0.tgz",
-            "integrity": "sha512-JkGge6WYDrwjNgMxwkb6kNQHnpISt5L1tMaBWFDBKeDToFr5Kj29IL35MIQm0RfrnoOfr/29RjSH4aRtvlAR0A==",
-            "dependencies": {
-                "@babel/parser": "^7.22.7",
-                "@babel/traverse": "^7.22.8",
-                "@docusaurus/logger": "3.0.0",
-                "@docusaurus/utils": "3.0.0",
-                "@docusaurus/utils-validation": "3.0.0",
-                "@mdx-js/mdx": "^3.0.0",
-                "@slorber/remark-comment": "^1.0.0",
-                "escape-html": "^1.0.3",
-                "estree-util-value-to-estree": "^3.0.1",
-                "file-loader": "^6.2.0",
-                "fs-extra": "^11.1.1",
-                "image-size": "^1.0.2",
-                "mdast-util-mdx": "^3.0.0",
-                "mdast-util-to-string": "^4.0.0",
-                "rehype-raw": "^7.0.0",
-                "remark-directive": "^3.0.0",
-                "remark-emoji": "^4.0.0",
-                "remark-frontmatter": "^5.0.0",
-                "remark-gfm": "^4.0.0",
-                "stringify-object": "^3.3.0",
-                "tslib": "^2.6.0",
-                "unified": "^11.0.3",
-                "unist-util-visit": "^5.0.0",
-                "url-loader": "^4.1.1",
-                "vfile": "^6.0.1",
-                "webpack": "^5.88.1"
-            },
-            "engines": {
-                "node": ">=18.0"
-            },
-            "peerDependencies": {
-                "react": "^18.0.0",
-                "react-dom": "^18.0.0"
-            }
-        },
-        "node_modules/@docusaurus/module-type-aliases": {
-            "version": "3.0.0",
-            "resolved": "https://registry.npmjs.org/@docusaurus/module-type-aliases/-/module-type-aliases-3.0.0.tgz",
-            "integrity": "sha512-CfC6CgN4u/ce+2+L1JdsHNyBd8yYjl4De2B2CBj2a9F7WuJ5RjV1ciuU7KDg8uyju+NRVllRgvJvxVUjCdkPiw==",
-            "dependencies": {
-                "@docusaurus/react-loadable": "5.5.2",
-                "@docusaurus/types": "3.0.0",
-                "@types/history": "^4.7.11",
-                "@types/react": "*",
-                "@types/react-router-config": "*",
-                "@types/react-router-dom": "*",
-                "react-helmet-async": "*",
-                "react-loadable": "npm:@docusaurus/react-loadable@5.5.2"
-            },
-            "peerDependencies": {
-                "react": "*",
-                "react-dom": "*"
-            }
-        },
-        "node_modules/@docusaurus/plugin-client-redirects": {
-            "version": "3.0.0",
-            "resolved": "https://registry.npmjs.org/@docusaurus/plugin-client-redirects/-/plugin-client-redirects-3.0.0.tgz",
-            "integrity": "sha512-JcZLod4lgPdbv/OpCbNwTc57u54d01dcWiDy/sBaxls/4HkDGdj6838oBPzbBdnCWrmasBIRz3JYLk+1GU0IOQ==",
-            "dependencies": {
-                "@docusaurus/core": "3.0.0",
-                "@docusaurus/logger": "3.0.0",
-                "@docusaurus/utils": "3.0.0",
-                "@docusaurus/utils-common": "3.0.0",
-                "@docusaurus/utils-validation": "3.0.0",
-                "eta": "^2.2.0",
-                "fs-extra": "^11.1.1",
-                "lodash": "^4.17.21",
-                "tslib": "^2.6.0"
-            },
-            "engines": {
-                "node": ">=18.0"
-            },
-            "peerDependencies": {
-                "react": "^18.0.0",
-                "react-dom": "^18.0.0"
-            }
-        },
-        "node_modules/@docusaurus/plugin-content-blog": {
-            "version": "3.0.0",
-            "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-blog/-/plugin-content-blog-3.0.0.tgz",
-            "integrity": "sha512-iA8Wc3tIzVnROJxrbIsU/iSfixHW16YeW9RWsBw7hgEk4dyGsip9AsvEDXobnRq3lVv4mfdgoS545iGWf1Ip9w==",
-            "dependencies": {
-                "@docusaurus/core": "3.0.0",
-                "@docusaurus/logger": "3.0.0",
-                "@docusaurus/mdx-loader": "3.0.0",
-                "@docusaurus/types": "3.0.0",
-                "@docusaurus/utils": "3.0.0",
-                "@docusaurus/utils-common": "3.0.0",
-                "@docusaurus/utils-validation": "3.0.0",
-                "cheerio": "^1.0.0-rc.12",
-                "feed": "^4.2.2",
-                "fs-extra": "^11.1.1",
-                "lodash": "^4.17.21",
-                "reading-time": "^1.5.0",
-                "srcset": "^4.0.0",
-                "tslib": "^2.6.0",
-                "unist-util-visit": "^5.0.0",
-                "utility-types": "^3.10.0",
-                "webpack": "^5.88.1"
-            },
-            "engines": {
-                "node": ">=18.0"
-            },
-            "peerDependencies": {
-                "react": "^18.0.0",
-                "react-dom": "^18.0.0"
+                "@docusaurus/plugin-content-docs": "*",
+                "react": "^18.0.0",
+                "react-dom": "^18.0.0"
             }
         },
         "node_modules/@docusaurus/plugin-content-docs": {
-            "version": "3.0.0",
-            "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-docs/-/plugin-content-docs-3.0.0.tgz",
-            "integrity": "sha512-MFZsOSwmeJ6rvoZMLieXxPuJsA9M9vn7/mUZmfUzSUTeHAeq+fEqvLltFOxcj4DVVDTYlQhgWYd+PISIWgamKw==",
-            "dependencies": {
-                "@docusaurus/core": "3.0.0",
-                "@docusaurus/logger": "3.0.0",
-                "@docusaurus/mdx-loader": "3.0.0",
-                "@docusaurus/module-type-aliases": "3.0.0",
-                "@docusaurus/types": "3.0.0",
-                "@docusaurus/utils": "3.0.0",
-                "@docusaurus/utils-validation": "3.0.0",
-                "@types/react-router-config": "^5.0.7",
-                "combine-promises": "^1.1.0",
-                "fs-extra": "^11.1.1",
-                "js-yaml": "^4.1.0",
-                "lodash": "^4.17.21",
-                "tslib": "^2.6.0",
-                "utility-types": "^3.10.0",
-                "webpack": "^5.88.1"
-            },
-            "engines": {
-                "node": ">=18.0"
-            },
-            "peerDependencies": {
-                "react": "^18.0.0",
-                "react-dom": "^18.0.0"
-            }
-        },
-        "node_modules/@docusaurus/plugin-content-pages": {
-            "version": "3.0.0",
-            "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-pages/-/plugin-content-pages-3.0.0.tgz",
-            "integrity": "sha512-EXYHXK2Ea1B5BUmM0DgSwaOYt8EMSzWtYUToNo62Q/EoWxYOQFdWglYnw3n7ZEGyw5Kog4LHaRwlazAdmDomvQ==",
-            "dependencies": {
-                "@docusaurus/core": "3.0.0",
-                "@docusaurus/mdx-loader": "3.0.0",
-                "@docusaurus/types": "3.0.0",
-                "@docusaurus/utils": "3.0.0",
-                "@docusaurus/utils-validation": "3.0.0",
-                "fs-extra": "^11.1.1",
-                "tslib": "^2.6.0",
-                "webpack": "^5.88.1"
-            },
-            "engines": {
-                "node": ">=18.0"
-            },
-            "peerDependencies": {
-                "react": "^18.0.0",
-                "react-dom": "^18.0.0"
-            }
-        },
-        "node_modules/@docusaurus/plugin-debug": {
-            "version": "3.0.0",
-            "resolved": "https://registry.npmjs.org/@docusaurus/plugin-debug/-/plugin-debug-3.0.0.tgz",
-            "integrity": "sha512-gSV07HfQgnUboVEb3lucuVyv5pEoy33E7QXzzn++3kSc/NLEimkjXh3sSnTGOishkxCqlFV9BHfY/VMm5Lko5g==",
-            "dependencies": {
-                "@docusaurus/core": "3.0.0",
-                "@docusaurus/types": "3.0.0",
-                "@docusaurus/utils": "3.0.0",
-                "@microlink/react-json-view": "^1.22.2",
-                "fs-extra": "^11.1.1",
-                "tslib": "^2.6.0"
-            },
-            "engines": {
-                "node": ">=18.0"
-            },
-            "peerDependencies": {
-                "react": "^18.0.0",
-                "react-dom": "^18.0.0"
-            }
-        },
-        "node_modules/@docusaurus/plugin-google-analytics": {
-            "version": "3.0.0",
-            "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-3.0.0.tgz",
-            "integrity": "sha512-0zcLK8w+ohmSm1fjUQCqeRsjmQc0gflvXnaVA/QVVCtm2yCiBtkrSGQXqt4MdpD7Xq8mwo3qVd5nhIcvrcebqw==",
-            "dependencies": {
-                "@docusaurus/core": "3.0.0",
-                "@docusaurus/types": "3.0.0",
-                "@docusaurus/utils-validation": "3.0.0",
-                "tslib": "^2.6.0"
-            },
-            "engines": {
-                "node": ">=18.0"
-            },
-            "peerDependencies": {
-                "react": "^18.0.0",
-                "react-dom": "^18.0.0"
-            }
-        },
-        "node_modules/@docusaurus/plugin-google-gtag": {
-            "version": "3.0.0",
-            "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-3.0.0.tgz",
-            "integrity": "sha512-asEKavw8fczUqvXu/s9kG2m1epLnHJ19W6CCCRZEmpnkZUZKiM8rlkDiEmxApwIc2JDDbIMk+Y2TMkJI8mInbQ==",
-            "dependencies": {
-                "@docusaurus/core": "3.0.0",
-                "@docusaurus/types": "3.0.0",
-                "@docusaurus/utils-validation": "3.0.0",
-                "@types/gtag.js": "^0.0.12",
-                "tslib": "^2.6.0"
-            },
-            "engines": {
-                "node": ">=18.0"
-            },
-            "peerDependencies": {
-                "react": "^18.0.0",
-                "react-dom": "^18.0.0"
-            }
-        },
-        "node_modules/@docusaurus/plugin-google-tag-manager": {
-            "version": "3.0.0",
-            "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-tag-manager/-/plugin-google-tag-manager-3.0.0.tgz",
-            "integrity": "sha512-lytgu2eyn+7p4WklJkpMGRhwC29ezj4IjPPmVJ8vGzcSl6JkR1sADTHLG5xWOMuci420xZl9dGEiLTQ8FjCRyA==",
-            "dependencies": {
-                "@docusaurus/core": "3.0.0",
-                "@docusaurus/types": "3.0.0",
-                "@docusaurus/utils-validation": "3.0.0",
-                "tslib": "^2.6.0"
-            },
-            "engines": {
-                "node": ">=18.0"
-            },
-            "peerDependencies": {
-                "react": "^18.0.0",
-                "react-dom": "^18.0.0"
-            }
-        },
-        "node_modules/@docusaurus/plugin-sitemap": {
-            "version": "3.0.0",
-            "resolved": "https://registry.npmjs.org/@docusaurus/plugin-sitemap/-/plugin-sitemap-3.0.0.tgz",
-            "integrity": "sha512-cfcONdWku56Oi7Hdus2uvUw/RKRRlIGMViiHLjvQ21CEsEqnQ297MRoIgjU28kL7/CXD/+OiANSq3T1ezAiMhA==",
-            "dependencies": {
-                "@docusaurus/core": "3.0.0",
-                "@docusaurus/logger": "3.0.0",
-                "@docusaurus/types": "3.0.0",
-                "@docusaurus/utils": "3.0.0",
-                "@docusaurus/utils-common": "3.0.0",
-                "@docusaurus/utils-validation": "3.0.0",
-                "fs-extra": "^11.1.1",
-                "sitemap": "^7.1.1",
-                "tslib": "^2.6.0"
-            },
-            "engines": {
-                "node": ">=18.0"
-            },
-            "peerDependencies": {
-                "react": "^18.0.0",
-                "react-dom": "^18.0.0"
-            }
-        },
-        "node_modules/@docusaurus/preset-classic": {
-            "version": "3.0.0",
-            "resolved": "https://registry.npmjs.org/@docusaurus/preset-classic/-/preset-classic-3.0.0.tgz",
-            "integrity": "sha512-90aOKZGZdi0+GVQV+wt8xx4M4GiDrBRke8NO8nWwytMEXNrxrBxsQYFRD1YlISLJSCiHikKf3Z/MovMnQpnZyg==",
-            "dependencies": {
-                "@docusaurus/core": "3.0.0",
-                "@docusaurus/plugin-content-blog": "3.0.0",
-                "@docusaurus/plugin-content-docs": "3.0.0",
-                "@docusaurus/plugin-content-pages": "3.0.0",
-                "@docusaurus/plugin-debug": "3.0.0",
-                "@docusaurus/plugin-google-analytics": "3.0.0",
-                "@docusaurus/plugin-google-gtag": "3.0.0",
-                "@docusaurus/plugin-google-tag-manager": "3.0.0",
-                "@docusaurus/plugin-sitemap": "3.0.0",
-                "@docusaurus/theme-classic": "3.0.0",
-                "@docusaurus/theme-common": "3.0.0",
-                "@docusaurus/theme-search-algolia": "3.0.0",
-                "@docusaurus/types": "3.0.0"
-            },
-            "engines": {
-                "node": ">=18.0"
-            },
-            "peerDependencies": {
-                "react": "^18.0.0",
-                "react-dom": "^18.0.0"
-            }
-        },
-        "node_modules/@docusaurus/react-loadable": {
-            "version": "5.5.2",
-            "resolved": "https://registry.npmjs.org/@docusaurus/react-loadable/-/react-loadable-5.5.2.tgz",
-            "integrity": "sha512-A3dYjdBGuy0IGT+wyLIGIKLRE+sAk1iNk0f1HjNDysO7u8lhL4N3VEm+FAubmJbAztn94F7MxBTPmnixbiyFdQ==",
-            "dependencies": {
-                "@types/react": "*",
-                "prop-types": "^15.6.2"
-            },
-            "peerDependencies": {
-                "react": "*"
-            }
-        },
-        "node_modules/@docusaurus/theme-classic": {
-            "version": "3.0.0",
-            "resolved": "https://registry.npmjs.org/@docusaurus/theme-classic/-/theme-classic-3.0.0.tgz",
-            "integrity": "sha512-wWOHSrKMn7L4jTtXBsb5iEJ3xvTddBye5PjYBnWiCkTAlhle2yMdc4/qRXW35Ot+OV/VXu6YFG8XVUJEl99z0A==",
-            "dependencies": {
-                "@docusaurus/core": "3.0.0",
-                "@docusaurus/mdx-loader": "3.0.0",
-                "@docusaurus/module-type-aliases": "3.0.0",
-                "@docusaurus/plugin-content-blog": "3.0.0",
-                "@docusaurus/plugin-content-docs": "3.0.0",
-                "@docusaurus/plugin-content-pages": "3.0.0",
-                "@docusaurus/theme-common": "3.0.0",
-                "@docusaurus/theme-translations": "3.0.0",
-                "@docusaurus/types": "3.0.0",
-                "@docusaurus/utils": "3.0.0",
-                "@docusaurus/utils-common": "3.0.0",
-                "@docusaurus/utils-validation": "3.0.0",
-                "@mdx-js/react": "^3.0.0",
-                "clsx": "^1.2.1",
-                "copy-text-to-clipboard": "^3.2.0",
-                "infima": "0.2.0-alpha.43",
-                "lodash": "^4.17.21",
-                "nprogress": "^0.2.0",
-                "postcss": "^8.4.26",
-                "prism-react-renderer": "^2.1.0",
-                "prismjs": "^1.29.0",
-                "react-router-dom": "^5.3.4",
-                "rtlcss": "^4.1.0",
-                "tslib": "^2.6.0",
-                "utility-types": "^3.10.0"
-            },
-            "engines": {
-                "node": ">=18.0"
-            },
-            "peerDependencies": {
-                "react": "^18.0.0",
-                "react-dom": "^18.0.0"
-            }
-        },
-        "node_modules/@docusaurus/theme-classic/node_modules/clsx": {
-            "version": "1.2.1",
-            "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz",
-            "integrity": "sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==",
-            "engines": {
-                "node": ">=6"
-            }
-        },
-        "node_modules/@docusaurus/theme-common": {
-            "version": "3.0.0",
-            "resolved": "https://registry.npmjs.org/@docusaurus/theme-common/-/theme-common-3.0.0.tgz",
-            "integrity": "sha512-PahRpCLRK5owCMEqcNtUeTMOkTUCzrJlKA+HLu7f+8osYOni617YurXvHASCsSTxurjXaLz/RqZMnASnqATxIA==",
-            "dependencies": {
-                "@docusaurus/mdx-loader": "3.0.0",
-                "@docusaurus/module-type-aliases": "3.0.0",
-                "@docusaurus/plugin-content-blog": "3.0.0",
-                "@docusaurus/plugin-content-docs": "3.0.0",
-                "@docusaurus/plugin-content-pages": "3.0.0",
-                "@docusaurus/utils": "3.0.0",
-                "@docusaurus/utils-common": "3.0.0",
-                "@types/history": "^4.7.11",
-                "@types/react": "*",
-                "@types/react-router-config": "*",
-                "clsx": "^1.2.1",
-                "parse-numeric-range": "^1.3.0",
-                "prism-react-renderer": "^2.1.0",
-                "tslib": "^2.6.0",
-                "utility-types": "^3.10.0"
-            },
-            "engines": {
-                "node": ">=18.0"
-            },
-            "peerDependencies": {
-                "react": "^18.0.0",
-                "react-dom": "^18.0.0"
-            }
-        },
-        "node_modules/@docusaurus/theme-common/node_modules/clsx": {
-            "version": "1.2.1",
-            "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz",
-            "integrity": "sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==",
-            "engines": {
-                "node": ">=6"
-            }
-        },
-        "node_modules/@docusaurus/theme-search-algolia": {
-            "version": "3.0.0",
-            "resolved": "https://registry.npmjs.org/@docusaurus/theme-search-algolia/-/theme-search-algolia-3.0.0.tgz",
-            "integrity": "sha512-PyMUNIS9yu0dx7XffB13ti4TG47pJq3G2KE/INvOFb6M0kWh+wwCnucPg4WAOysHOPh+SD9fjlXILoLQstgEIA==",
-            "dependencies": {
-                "@docsearch/react": "^3.5.2",
-                "@docusaurus/core": "3.0.0",
-                "@docusaurus/logger": "3.0.0",
-                "@docusaurus/plugin-content-docs": "3.0.0",
-                "@docusaurus/theme-common": "3.0.0",
-                "@docusaurus/theme-translations": "3.0.0",
-                "@docusaurus/utils": "3.0.0",
-                "@docusaurus/utils-validation": "3.0.0",
-                "algoliasearch": "^4.18.0",
-                "algoliasearch-helper": "^3.13.3",
-                "clsx": "^1.2.1",
-                "eta": "^2.2.0",
-                "fs-extra": "^11.1.1",
-                "lodash": "^4.17.21",
-                "tslib": "^2.6.0",
-                "utility-types": "^3.10.0"
-            },
-            "engines": {
-                "node": ">=18.0"
-            },
-            "peerDependencies": {
-                "react": "^18.0.0",
-                "react-dom": "^18.0.0"
-            }
-        },
-        "node_modules/@docusaurus/theme-search-algolia/node_modules/clsx": {
-            "version": "1.2.1",
-            "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz",
-            "integrity": "sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==",
-            "engines": {
-                "node": ">=6"
-            }
-        },
-        "node_modules/@docusaurus/theme-translations": {
-            "version": "3.0.0",
-            "resolved": "https://registry.npmjs.org/@docusaurus/theme-translations/-/theme-translations-3.0.0.tgz",
-            "integrity": "sha512-p/H3+5LdnDtbMU+csYukA6601U1ld2v9knqxGEEV96qV27HsHfP63J9Ta2RBZUrNhQAgrwFzIc9GdDO8P1Baag==",
-            "dependencies": {
+            "version": "3.5.2",
+            "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-docs/-/plugin-content-docs-3.5.2.tgz",
+            "integrity": "sha512-Bt+OXn/CPtVqM3Di44vHjE7rPCEsRCB/DMo2qoOuozB9f7+lsdrHvD0QCHdBs0uhz6deYJDppAr2VgqybKPlVQ==",
+            "dependencies": {
+                "@docusaurus/core": "3.5.2",
+                "@docusaurus/logger": "3.5.2",
+                "@docusaurus/mdx-loader": "3.5.2",
+                "@docusaurus/module-type-aliases": "3.5.2",
+                "@docusaurus/theme-common": "3.5.2",
+                "@docusaurus/types": "3.5.2",
+                "@docusaurus/utils": "3.5.2",
+                "@docusaurus/utils-common": "3.5.2",
+                "@docusaurus/utils-validation": "3.5.2",
+                "@types/react-router-config": "^5.0.7",
+                "combine-promises": "^1.1.0",
                 "fs-extra": "^11.1.1",
-                "tslib": "^2.6.0"
+                "js-yaml": "^4.1.0",
+                "lodash": "^4.17.21",
+                "tslib": "^2.6.0",
+                "utility-types": "^3.10.0",
+                "webpack": "^5.88.1"
             },
             "engines": {
                 "node": ">=18.0"
-            }
-        },
-        "node_modules/@docusaurus/tsconfig": {
-            "version": "3.0.0",
-            "resolved": "https://registry.npmjs.org/@docusaurus/tsconfig/-/tsconfig-3.0.0.tgz",
-            "integrity": "sha512-yR9sng4izFudS+v1xV5yboNfc1hATMDpYp9iYfWggbBDwKSm0J1IdIgkygRnqC/AWs1ARUQUpG0gFotPCE/4Ew==",
-            "dev": true
-        },
-        "node_modules/@docusaurus/types": {
-            "version": "3.0.0",
-            "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.0.0.tgz",
-            "integrity": "sha512-Qb+l/hmCOVemReuzvvcFdk84bUmUFyD0Zi81y651ie3VwMrXqC7C0E7yZLKMOsLj/vkqsxHbtkAuYMI89YzNzg==",
-            "dependencies": {
-                "@types/history": "^4.7.11",
-                "@types/react": "*",
-                "commander": "^5.1.0",
-                "joi": "^17.9.2",
-                "react-helmet-async": "^1.3.0",
-                "utility-types": "^3.10.0",
-                "webpack": "^5.88.1",
-                "webpack-merge": "^5.9.0"
             },
             "peerDependencies": {
                 "react": "^18.0.0",
                 "react-dom": "^18.0.0"
             }
         },
-        "node_modules/@docusaurus/utils": {
-            "version": "3.0.0",
-            "resolved": "https://registry.npmjs.org/@docusaurus/utils/-/utils-3.0.0.tgz",
-            "integrity": "sha512-JwGjh5mtjG9XIAESyPxObL6CZ6LO/yU4OSTpq7Q0x+jN25zi/AMbvLjpSyZzWy+qm5uQiFiIhqFaOxvy+82Ekg==",
-            "dependencies": {
-                "@docusaurus/logger": "3.0.0",
-                "@svgr/webpack": "^6.5.1",
-                "escape-string-regexp": "^4.0.0",
-                "file-loader": "^6.2.0",
+        "node_modules/@docusaurus/plugin-content-pages": {
+            "version": "3.5.2",
+            "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-pages/-/plugin-content-pages-3.5.2.tgz",
+            "integrity": "sha512-WzhHjNpoQAUz/ueO10cnundRz+VUtkjFhhaQ9jApyv1a46FPURO4cef89pyNIOMny1fjDz/NUN2z6Yi+5WUrCw==",
+            "dependencies": {
+                "@docusaurus/core": "3.5.2",
+                "@docusaurus/mdx-loader": "3.5.2",
+                "@docusaurus/types": "3.5.2",
+                "@docusaurus/utils": "3.5.2",
+                "@docusaurus/utils-validation": "3.5.2",
                 "fs-extra": "^11.1.1",
-                "github-slugger": "^1.5.0",
-                "globby": "^11.1.0",
-                "gray-matter": "^4.0.3",
-                "jiti": "^1.20.0",
-                "js-yaml": "^4.1.0",
-                "lodash": "^4.17.21",
-                "micromatch": "^4.0.5",
-                "resolve-pathname": "^3.0.0",
-                "shelljs": "^0.8.5",
                 "tslib": "^2.6.0",
-                "url-loader": "^4.1.1",
                 "webpack": "^5.88.1"
             },
             "engines": {
                 "node": ">=18.0"
             },
             "peerDependencies": {
-                "@docusaurus/types": "*"
-            },
-            "peerDependenciesMeta": {
-                "@docusaurus/types": {
-                    "optional": true
-                }
+                "react": "^18.0.0",
+                "react-dom": "^18.0.0"
             }
         },
-        "node_modules/@docusaurus/utils-common": {
-            "version": "3.0.0",
-            "resolved": "https://registry.npmjs.org/@docusaurus/utils-common/-/utils-common-3.0.0.tgz",
-            "integrity": "sha512-7iJWAtt4AHf4PFEPlEPXko9LZD/dbYnhLe0q8e3GRK1EXZyRASah2lznpMwB3lLmVjq/FR6ZAKF+E0wlmL5j0g==",
+        "node_modules/@docusaurus/plugin-debug": {
+            "version": "3.5.2",
+            "resolved": "https://registry.npmjs.org/@docusaurus/plugin-debug/-/plugin-debug-3.5.2.tgz",
+            "integrity": "sha512-kBK6GlN0itCkrmHuCS6aX1wmoWc5wpd5KJlqQ1FyrF0cLDnvsYSnh7+ftdwzt7G6lGBho8lrVwkkL9/iQvaSOA==",
             "dependencies": {
+                "@docusaurus/core": "3.5.2",
+                "@docusaurus/types": "3.5.2",
+                "@docusaurus/utils": "3.5.2",
+                "fs-extra": "^11.1.1",
+                "react-json-view-lite": "^1.2.0",
                 "tslib": "^2.6.0"
             },
             "engines": {
                 "node": ">=18.0"
             },
             "peerDependencies": {
-                "@docusaurus/types": "*"
-            },
-            "peerDependenciesMeta": {
-                "@docusaurus/types": {
-                    "optional": true
-                }
+                "react": "^18.0.0",
+                "react-dom": "^18.0.0"
             }
         },
-        "node_modules/@docusaurus/utils-validation": {
-            "version": "3.0.0",
-            "resolved": "https://registry.npmjs.org/@docusaurus/utils-validation/-/utils-validation-3.0.0.tgz",
-            "integrity": "sha512-MlIGUspB/HBW5CYgHvRhmkZbeMiUWKbyVoCQYvbGN8S19SSzVgzyy97KRpcjCOYYeEdkhmRCUwFBJBlLg3IoNQ==",
+        "node_modules/@docusaurus/plugin-google-analytics": {
+            "version": "3.5.2",
+            "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-3.5.2.tgz",
+            "integrity": "sha512-rjEkJH/tJ8OXRE9bwhV2mb/WP93V441rD6XnM6MIluu7rk8qg38iSxS43ga2V2Q/2ib53PcqbDEJDG/yWQRJhQ==",
             "dependencies": {
-                "@docusaurus/logger": "3.0.0",
-                "@docusaurus/utils": "3.0.0",
-                "joi": "^17.9.2",
-                "js-yaml": "^4.1.0",
+                "@docusaurus/core": "3.5.2",
+                "@docusaurus/types": "3.5.2",
+                "@docusaurus/utils-validation": "3.5.2",
                 "tslib": "^2.6.0"
             },
             "engines": {
                 "node": ">=18.0"
-            }
-        },
-        "node_modules/@docusaurus/utils/node_modules/@svgr/babel-plugin-add-jsx-attribute": {
-            "version": "6.5.1",
-            "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-6.5.1.tgz",
-            "integrity": "sha512-9PYGcXrAxitycIjRmZB+Q0JaN07GZIWaTBIGQzfaZv+qr1n8X1XUEJ5rZ/vx6OVD9RRYlrNnXWExQXcmZeD/BQ==",
-            "engines": {
-                "node": ">=10"
-            },
-            "funding": {
-                "type": "github",
-                "url": "https://github.com/sponsors/gregberge"
-            },
-            "peerDependencies": {
-                "@babel/core": "^7.0.0-0"
-            }
-        },
-        "node_modules/@docusaurus/utils/node_modules/@svgr/babel-plugin-replace-jsx-attribute-value": {
-            "version": "6.5.1",
-            "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-6.5.1.tgz",
-            "integrity": "sha512-8DPaVVE3fd5JKuIC29dqyMB54sA6mfgki2H2+swh+zNJoynC8pMPzOkidqHOSc6Wj032fhl8Z0TVn1GiPpAiJg==",
-            "engines": {
-                "node": ">=10"
-            },
-            "funding": {
-                "type": "github",
-                "url": "https://github.com/sponsors/gregberge"
-            },
-            "peerDependencies": {
-                "@babel/core": "^7.0.0-0"
-            }
-        },
-        "node_modules/@docusaurus/utils/node_modules/@svgr/babel-plugin-svg-dynamic-title": {
-            "version": "6.5.1",
-            "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-6.5.1.tgz",
-            "integrity": "sha512-FwOEi0Il72iAzlkaHrlemVurgSQRDFbk0OC8dSvD5fSBPHltNh7JtLsxmZUhjYBZo2PpcU/RJvvi6Q0l7O7ogw==",
-            "engines": {
-                "node": ">=10"
-            },
-            "funding": {
-                "type": "github",
-                "url": "https://github.com/sponsors/gregberge"
-            },
-            "peerDependencies": {
-                "@babel/core": "^7.0.0-0"
-            }
-        },
-        "node_modules/@docusaurus/utils/node_modules/@svgr/babel-plugin-svg-em-dimensions": {
-            "version": "6.5.1",
-            "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-6.5.1.tgz",
-            "integrity": "sha512-gWGsiwjb4tw+ITOJ86ndY/DZZ6cuXMNE/SjcDRg+HLuCmwpcjOktwRF9WgAiycTqJD/QXqL2f8IzE2Rzh7aVXA==",
-            "engines": {
-                "node": ">=10"
-            },
-            "funding": {
-                "type": "github",
-                "url": "https://github.com/sponsors/gregberge"
-            },
-            "peerDependencies": {
-                "@babel/core": "^7.0.0-0"
-            }
-        },
-        "node_modules/@docusaurus/utils/node_modules/@svgr/babel-plugin-transform-react-native-svg": {
-            "version": "6.5.1",
-            "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-6.5.1.tgz",
-            "integrity": "sha512-2jT3nTayyYP7kI6aGutkyfJ7UMGtuguD72OjeGLwVNyfPRBD8zQthlvL+fAbAKk5n9ZNcvFkp/b1lZ7VsYqVJg==",
-            "engines": {
-                "node": ">=10"
-            },
-            "funding": {
-                "type": "github",
-                "url": "https://github.com/sponsors/gregberge"
-            },
-            "peerDependencies": {
-                "@babel/core": "^7.0.0-0"
-            }
-        },
-        "node_modules/@docusaurus/utils/node_modules/@svgr/babel-plugin-transform-svg-component": {
-            "version": "6.5.1",
-            "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-6.5.1.tgz",
-            "integrity": "sha512-a1p6LF5Jt33O3rZoVRBqdxL350oge54iZWHNI6LJB5tQ7EelvD/Mb1mfBiZNAan0dt4i3VArkFRjA4iObuNykQ==",
-            "engines": {
-                "node": ">=12"
-            },
-            "funding": {
-                "type": "github",
-                "url": "https://github.com/sponsors/gregberge"
             },
             "peerDependencies": {
-                "@babel/core": "^7.0.0-0"
+                "react": "^18.0.0",
+                "react-dom": "^18.0.0"
             }
         },
-        "node_modules/@docusaurus/utils/node_modules/@svgr/babel-preset": {
-            "version": "6.5.1",
-            "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-6.5.1.tgz",
-            "integrity": "sha512-6127fvO/FF2oi5EzSQOAjo1LE3OtNVh11R+/8FXa+mHx1ptAaS4cknIjnUA7e6j6fwGGJ17NzaTJFUwOV2zwCw==",
+        "node_modules/@docusaurus/plugin-google-gtag": {
+            "version": "3.5.2",
+            "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-3.5.2.tgz",
+            "integrity": "sha512-lm8XL3xLkTPHFKKjLjEEAHUrW0SZBSHBE1I+i/tmYMBsjCcUB5UJ52geS5PSiOCFVR74tbPGcPHEV/gaaxFeSA==",
             "dependencies": {
-                "@svgr/babel-plugin-add-jsx-attribute": "^6.5.1",
-                "@svgr/babel-plugin-remove-jsx-attribute": "*",
-                "@svgr/babel-plugin-remove-jsx-empty-expression": "*",
-                "@svgr/babel-plugin-replace-jsx-attribute-value": "^6.5.1",
-                "@svgr/babel-plugin-svg-dynamic-title": "^6.5.1",
-                "@svgr/babel-plugin-svg-em-dimensions": "^6.5.1",
-                "@svgr/babel-plugin-transform-react-native-svg": "^6.5.1",
-                "@svgr/babel-plugin-transform-svg-component": "^6.5.1"
+                "@docusaurus/core": "3.5.2",
+                "@docusaurus/types": "3.5.2",
+                "@docusaurus/utils-validation": "3.5.2",
+                "@types/gtag.js": "^0.0.12",
+                "tslib": "^2.6.0"
             },
             "engines": {
-                "node": ">=10"
-            },
-            "funding": {
-                "type": "github",
-                "url": "https://github.com/sponsors/gregberge"
+                "node": ">=18.0"
             },
             "peerDependencies": {
-                "@babel/core": "^7.0.0-0"
-            }
-        },
-        "node_modules/@docusaurus/utils/node_modules/@svgr/core": {
-            "version": "6.5.1",
-            "resolved": "https://registry.npmjs.org/@svgr/core/-/core-6.5.1.tgz",
-            "integrity": "sha512-/xdLSWxK5QkqG524ONSjvg3V/FkNyCv538OIBdQqPNaAta3AsXj/Bd2FbvR87yMbXO2hFSWiAe/Q6IkVPDw+mw==",
-            "dependencies": {
-                "@babel/core": "^7.19.6",
-                "@svgr/babel-preset": "^6.5.1",
-                "@svgr/plugin-jsx": "^6.5.1",
-                "camelcase": "^6.2.0",
-                "cosmiconfig": "^7.0.1"
-            },
-            "engines": {
-                "node": ">=10"
-            },
-            "funding": {
-                "type": "github",
-                "url": "https://github.com/sponsors/gregberge"
+                "react": "^18.0.0",
+                "react-dom": "^18.0.0"
             }
         },
-        "node_modules/@docusaurus/utils/node_modules/@svgr/hast-util-to-babel-ast": {
-            "version": "6.5.1",
-            "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-6.5.1.tgz",
-            "integrity": "sha512-1hnUxxjd83EAxbL4a0JDJoD3Dao3hmjvyvyEV8PzWmLK3B9m9NPlW7GKjFyoWE8nM7HnXzPcmmSyOW8yOddSXw==",
+        "node_modules/@docusaurus/plugin-google-tag-manager": {
+            "version": "3.5.2",
+            "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-tag-manager/-/plugin-google-tag-manager-3.5.2.tgz",
+            "integrity": "sha512-QkpX68PMOMu10Mvgvr5CfZAzZQFx8WLlOiUQ/Qmmcl6mjGK6H21WLT5x7xDmcpCoKA/3CegsqIqBR+nA137lQg==",
             "dependencies": {
-                "@babel/types": "^7.20.0",
-                "entities": "^4.4.0"
+                "@docusaurus/core": "3.5.2",
+                "@docusaurus/types": "3.5.2",
+                "@docusaurus/utils-validation": "3.5.2",
+                "tslib": "^2.6.0"
             },
             "engines": {
-                "node": ">=10"
+                "node": ">=18.0"
             },
-            "funding": {
-                "type": "github",
-                "url": "https://github.com/sponsors/gregberge"
+            "peerDependencies": {
+                "react": "^18.0.0",
+                "react-dom": "^18.0.0"
             }
         },
-        "node_modules/@docusaurus/utils/node_modules/@svgr/plugin-jsx": {
-            "version": "6.5.1",
-            "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-6.5.1.tgz",
-            "integrity": "sha512-+UdQxI3jgtSjCykNSlEMuy1jSRQlGC7pqBCPvkG/2dATdWo082zHTTK3uhnAju2/6XpE6B5mZ3z4Z8Ns01S8Gw==",
-            "dependencies": {
-                "@babel/core": "^7.19.6",
-                "@svgr/babel-preset": "^6.5.1",
-                "@svgr/hast-util-to-babel-ast": "^6.5.1",
-                "svg-parser": "^2.0.4"
+        "node_modules/@docusaurus/plugin-sitemap": {
+            "version": "3.5.2",
+            "resolved": "https://registry.npmjs.org/@docusaurus/plugin-sitemap/-/plugin-sitemap-3.5.2.tgz",
+            "integrity": "sha512-DnlqYyRAdQ4NHY28TfHuVk414ft2uruP4QWCH//jzpHjqvKyXjj2fmDtI8RPUBh9K8iZKFMHRnLtzJKySPWvFA==",
+            "dependencies": {
+                "@docusaurus/core": "3.5.2",
+                "@docusaurus/logger": "3.5.2",
+                "@docusaurus/types": "3.5.2",
+                "@docusaurus/utils": "3.5.2",
+                "@docusaurus/utils-common": "3.5.2",
+                "@docusaurus/utils-validation": "3.5.2",
+                "fs-extra": "^11.1.1",
+                "sitemap": "^7.1.1",
+                "tslib": "^2.6.0"
             },
             "engines": {
-                "node": ">=10"
-            },
-            "funding": {
-                "type": "github",
-                "url": "https://github.com/sponsors/gregberge"
+                "node": ">=18.0"
             },
             "peerDependencies": {
-                "@svgr/core": "^6.0.0"
+                "react": "^18.0.0",
+                "react-dom": "^18.0.0"
             }
         },
-        "node_modules/@docusaurus/utils/node_modules/@svgr/plugin-svgo": {
-            "version": "6.5.1",
-            "resolved": "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-6.5.1.tgz",
-            "integrity": "sha512-omvZKf8ixP9z6GWgwbtmP9qQMPX4ODXi+wzbVZgomNFsUIlHA1sf4fThdwTWSsZGgvGAG6yE+b/F5gWUkcZ/iQ==",
-            "dependencies": {
-                "cosmiconfig": "^7.0.1",
-                "deepmerge": "^4.2.2",
-                "svgo": "^2.8.0"
+        "node_modules/@docusaurus/preset-classic": {
+            "version": "3.5.2",
+            "resolved": "https://registry.npmjs.org/@docusaurus/preset-classic/-/preset-classic-3.5.2.tgz",
+            "integrity": "sha512-3ihfXQ95aOHiLB5uCu+9PRy2gZCeSZoDcqpnDvf3B+sTrMvMTr8qRUzBvWkoIqc82yG5prCboRjk1SVILKx6sg==",
+            "dependencies": {
+                "@docusaurus/core": "3.5.2",
+                "@docusaurus/plugin-content-blog": "3.5.2",
+                "@docusaurus/plugin-content-docs": "3.5.2",
+                "@docusaurus/plugin-content-pages": "3.5.2",
+                "@docusaurus/plugin-debug": "3.5.2",
+                "@docusaurus/plugin-google-analytics": "3.5.2",
+                "@docusaurus/plugin-google-gtag": "3.5.2",
+                "@docusaurus/plugin-google-tag-manager": "3.5.2",
+                "@docusaurus/plugin-sitemap": "3.5.2",
+                "@docusaurus/theme-classic": "3.5.2",
+                "@docusaurus/theme-common": "3.5.2",
+                "@docusaurus/theme-search-algolia": "3.5.2",
+                "@docusaurus/types": "3.5.2"
             },
             "engines": {
-                "node": ">=10"
-            },
-            "funding": {
-                "type": "github",
-                "url": "https://github.com/sponsors/gregberge"
+                "node": ">=18.0"
             },
             "peerDependencies": {
-                "@svgr/core": "*"
+                "react": "^18.0.0",
+                "react-dom": "^18.0.0"
             }
         },
-        "node_modules/@docusaurus/utils/node_modules/@svgr/webpack": {
-            "version": "6.5.1",
-            "resolved": "https://registry.npmjs.org/@svgr/webpack/-/webpack-6.5.1.tgz",
-            "integrity": "sha512-cQ/AsnBkXPkEK8cLbv4Dm7JGXq2XrumKnL1dRpJD9rIO2fTIlJI9a1uCciYG1F2aUsox/hJQyNGbt3soDxSRkA==",
-            "dependencies": {
-                "@babel/core": "^7.19.6",
-                "@babel/plugin-transform-react-constant-elements": "^7.18.12",
-                "@babel/preset-env": "^7.19.4",
-                "@babel/preset-react": "^7.18.6",
-                "@babel/preset-typescript": "^7.18.6",
-                "@svgr/core": "^6.5.1",
-                "@svgr/plugin-jsx": "^6.5.1",
-                "@svgr/plugin-svgo": "^6.5.1"
+        "node_modules/@docusaurus/theme-classic": {
+            "version": "3.5.2",
+            "resolved": "https://registry.npmjs.org/@docusaurus/theme-classic/-/theme-classic-3.5.2.tgz",
+            "integrity": "sha512-XRpinSix3NBv95Rk7xeMF9k4safMkwnpSgThn0UNQNumKvmcIYjfkwfh2BhwYh/BxMXQHJ/PdmNh22TQFpIaYg==",
+            "dependencies": {
+                "@docusaurus/core": "3.5.2",
+                "@docusaurus/mdx-loader": "3.5.2",
+                "@docusaurus/module-type-aliases": "3.5.2",
+                "@docusaurus/plugin-content-blog": "3.5.2",
+                "@docusaurus/plugin-content-docs": "3.5.2",
+                "@docusaurus/plugin-content-pages": "3.5.2",
+                "@docusaurus/theme-common": "3.5.2",
+                "@docusaurus/theme-translations": "3.5.2",
+                "@docusaurus/types": "3.5.2",
+                "@docusaurus/utils": "3.5.2",
+                "@docusaurus/utils-common": "3.5.2",
+                "@docusaurus/utils-validation": "3.5.2",
+                "@mdx-js/react": "^3.0.0",
+                "clsx": "^2.0.0",
+                "copy-text-to-clipboard": "^3.2.0",
+                "infima": "0.2.0-alpha.44",
+                "lodash": "^4.17.21",
+                "nprogress": "^0.2.0",
+                "postcss": "^8.4.26",
+                "prism-react-renderer": "^2.3.0",
+                "prismjs": "^1.29.0",
+                "react-router-dom": "^5.3.4",
+                "rtlcss": "^4.1.0",
+                "tslib": "^2.6.0",
+                "utility-types": "^3.10.0"
             },
             "engines": {
-                "node": ">=10"
+                "node": ">=18.0"
             },
-            "funding": {
-                "type": "github",
-                "url": "https://github.com/sponsors/gregberge"
-            }
-        },
-        "node_modules/@docusaurus/utils/node_modules/commander": {
-            "version": "7.2.0",
-            "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz",
-            "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==",
-            "engines": {
-                "node": ">= 10"
+            "peerDependencies": {
+                "react": "^18.0.0",
+                "react-dom": "^18.0.0"
             }
         },
-        "node_modules/@docusaurus/utils/node_modules/cosmiconfig": {
-            "version": "7.1.0",
-            "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz",
-            "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==",
+        "node_modules/@docusaurus/theme-common": {
+            "version": "3.5.2",
+            "resolved": "https://registry.npmjs.org/@docusaurus/theme-common/-/theme-common-3.5.2.tgz",
+            "integrity": "sha512-QXqlm9S6x9Ibwjs7I2yEDgsCocp708DrCrgHgKwg2n2AY0YQ6IjU0gAK35lHRLOvAoJUfCKpQAwUykB0R7+Eew==",
             "dependencies": {
-                "@types/parse-json": "^4.0.0",
-                "import-fresh": "^3.2.1",
-                "parse-json": "^5.0.0",
-                "path-type": "^4.0.0",
-                "yaml": "^1.10.0"
+                "@docusaurus/mdx-loader": "3.5.2",
+                "@docusaurus/module-type-aliases": "3.5.2",
+                "@docusaurus/utils": "3.5.2",
+                "@docusaurus/utils-common": "3.5.2",
+                "@types/history": "^4.7.11",
+                "@types/react": "*",
+                "@types/react-router-config": "*",
+                "clsx": "^2.0.0",
+                "parse-numeric-range": "^1.3.0",
+                "prism-react-renderer": "^2.3.0",
+                "tslib": "^2.6.0",
+                "utility-types": "^3.10.0"
             },
             "engines": {
-                "node": ">=10"
-            }
-        },
-        "node_modules/@docusaurus/utils/node_modules/css-select": {
-            "version": "4.3.0",
-            "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz",
-            "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==",
-            "dependencies": {
-                "boolbase": "^1.0.0",
-                "css-what": "^6.0.1",
-                "domhandler": "^4.3.1",
-                "domutils": "^2.8.0",
-                "nth-check": "^2.0.1"
+                "node": ">=18.0"
             },
-            "funding": {
-                "url": "https://github.com/sponsors/fb55"
+            "peerDependencies": {
+                "@docusaurus/plugin-content-docs": "*",
+                "react": "^18.0.0",
+                "react-dom": "^18.0.0"
             }
         },
-        "node_modules/@docusaurus/utils/node_modules/css-tree": {
-            "version": "1.1.3",
-            "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz",
-            "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==",
+        "node_modules/@docusaurus/theme-search-algolia": {
+            "version": "3.5.2",
+            "resolved": "https://registry.npmjs.org/@docusaurus/theme-search-algolia/-/theme-search-algolia-3.5.2.tgz",
+            "integrity": "sha512-qW53kp3VzMnEqZGjakaV90sst3iN1o32PH+nawv1uepROO8aEGxptcq2R5rsv7aBShSRbZwIobdvSYKsZ5pqvA==",
             "dependencies": {
-                "mdn-data": "2.0.14",
-                "source-map": "^0.6.1"
+                "@docsearch/react": "^3.5.2",
+                "@docusaurus/core": "3.5.2",
+                "@docusaurus/logger": "3.5.2",
+                "@docusaurus/plugin-content-docs": "3.5.2",
+                "@docusaurus/theme-common": "3.5.2",
+                "@docusaurus/theme-translations": "3.5.2",
+                "@docusaurus/utils": "3.5.2",
+                "@docusaurus/utils-validation": "3.5.2",
+                "algoliasearch": "^4.18.0",
+                "algoliasearch-helper": "^3.13.3",
+                "clsx": "^2.0.0",
+                "eta": "^2.2.0",
+                "fs-extra": "^11.1.1",
+                "lodash": "^4.17.21",
+                "tslib": "^2.6.0",
+                "utility-types": "^3.10.0"
             },
             "engines": {
-                "node": ">=8.0.0"
+                "node": ">=18.0"
+            },
+            "peerDependencies": {
+                "react": "^18.0.0",
+                "react-dom": "^18.0.0"
             }
         },
-        "node_modules/@docusaurus/utils/node_modules/csso": {
-            "version": "4.2.0",
-            "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz",
-            "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==",
+        "node_modules/@docusaurus/theme-translations": {
+            "version": "3.5.2",
+            "resolved": "https://registry.npmjs.org/@docusaurus/theme-translations/-/theme-translations-3.5.2.tgz",
+            "integrity": "sha512-GPZLcu4aT1EmqSTmbdpVrDENGR2yObFEX8ssEFYTCiAIVc0EihNSdOIBTazUvgNqwvnoU1A8vIs1xyzc3LITTw==",
             "dependencies": {
-                "css-tree": "^1.1.2"
+                "fs-extra": "^11.1.1",
+                "tslib": "^2.6.0"
             },
             "engines": {
-                "node": ">=8.0.0"
+                "node": ">=18.0"
             }
         },
-        "node_modules/@docusaurus/utils/node_modules/dom-serializer": {
-            "version": "1.4.1",
-            "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz",
-            "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==",
+        "node_modules/@docusaurus/tsconfig": {
+            "version": "3.5.2",
+            "resolved": "https://registry.npmjs.org/@docusaurus/tsconfig/-/tsconfig-3.5.2.tgz",
+            "integrity": "sha512-rQ7toURCFnWAIn8ubcquDs0ewhPwviMzxh6WpRjBW7sJVCXb6yzwUaY3HMNa0VXCFw+qkIbFywrMTf+Pb4uHWQ==",
+            "dev": true
+        },
+        "node_modules/@docusaurus/types": {
+            "version": "3.5.2",
+            "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.5.2.tgz",
+            "integrity": "sha512-N6GntLXoLVUwkZw7zCxwy9QiuEXIcTVzA9AkmNw16oc0AP3SXLrMmDMMBIfgqwuKWa6Ox6epHol9kMtJqekACw==",
             "dependencies": {
-                "domelementtype": "^2.0.1",
-                "domhandler": "^4.2.0",
-                "entities": "^2.0.0"
+                "@mdx-js/mdx": "^3.0.0",
+                "@types/history": "^4.7.11",
+                "@types/react": "*",
+                "commander": "^5.1.0",
+                "joi": "^17.9.2",
+                "react-helmet-async": "^1.3.0",
+                "utility-types": "^3.10.0",
+                "webpack": "^5.88.1",
+                "webpack-merge": "^5.9.0"
             },
-            "funding": {
-                "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"
-            }
-        },
-        "node_modules/@docusaurus/utils/node_modules/dom-serializer/node_modules/entities": {
-            "version": "2.2.0",
-            "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz",
-            "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==",
-            "funding": {
-                "url": "https://github.com/fb55/entities?sponsor=1"
+            "peerDependencies": {
+                "react": "^18.0.0",
+                "react-dom": "^18.0.0"
             }
         },
-        "node_modules/@docusaurus/utils/node_modules/domhandler": {
-            "version": "4.3.1",
-            "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz",
-            "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==",
+        "node_modules/@docusaurus/utils": {
+            "version": "3.5.2",
+            "resolved": "https://registry.npmjs.org/@docusaurus/utils/-/utils-3.5.2.tgz",
+            "integrity": "sha512-33QvcNFh+Gv+C2dP9Y9xWEzMgf3JzrpL2nW9PopidiohS1nDcyknKRx2DWaFvyVTTYIkkABVSr073VTj/NITNA==",
             "dependencies": {
-                "domelementtype": "^2.2.0"
+                "@docusaurus/logger": "3.5.2",
+                "@docusaurus/utils-common": "3.5.2",
+                "@svgr/webpack": "^8.1.0",
+                "escape-string-regexp": "^4.0.0",
+                "file-loader": "^6.2.0",
+                "fs-extra": "^11.1.1",
+                "github-slugger": "^1.5.0",
+                "globby": "^11.1.0",
+                "gray-matter": "^4.0.3",
+                "jiti": "^1.20.0",
+                "js-yaml": "^4.1.0",
+                "lodash": "^4.17.21",
+                "micromatch": "^4.0.5",
+                "prompts": "^2.4.2",
+                "resolve-pathname": "^3.0.0",
+                "shelljs": "^0.8.5",
+                "tslib": "^2.6.0",
+                "url-loader": "^4.1.1",
+                "utility-types": "^3.10.0",
+                "webpack": "^5.88.1"
             },
             "engines": {
-                "node": ">= 4"
+                "node": ">=18.0"
             },
-            "funding": {
-                "url": "https://github.com/fb55/domhandler?sponsor=1"
+            "peerDependencies": {
+                "@docusaurus/types": "*"
+            },
+            "peerDependenciesMeta": {
+                "@docusaurus/types": {
+                    "optional": true
+                }
             }
         },
-        "node_modules/@docusaurus/utils/node_modules/domutils": {
-            "version": "2.8.0",
-            "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz",
-            "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==",
+        "node_modules/@docusaurus/utils-common": {
+            "version": "3.5.2",
+            "resolved": "https://registry.npmjs.org/@docusaurus/utils-common/-/utils-common-3.5.2.tgz",
+            "integrity": "sha512-i0AZjHiRgJU6d7faQngIhuHKNrszpL/SHQPgF1zH4H+Ij6E9NBYGy6pkcGWToIv7IVPbs+pQLh1P3whn0gWXVg==",
             "dependencies": {
-                "dom-serializer": "^1.0.1",
-                "domelementtype": "^2.2.0",
-                "domhandler": "^4.2.0"
+                "tslib": "^2.6.0"
             },
-            "funding": {
-                "url": "https://github.com/fb55/domutils?sponsor=1"
-            }
-        },
-        "node_modules/@docusaurus/utils/node_modules/mdn-data": {
-            "version": "2.0.14",
-            "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz",
-            "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow=="
-        },
-        "node_modules/@docusaurus/utils/node_modules/source-map": {
-            "version": "0.6.1",
-            "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-            "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
             "engines": {
-                "node": ">=0.10.0"
+                "node": ">=18.0"
+            },
+            "peerDependencies": {
+                "@docusaurus/types": "*"
+            },
+            "peerDependenciesMeta": {
+                "@docusaurus/types": {
+                    "optional": true
+                }
             }
         },
-        "node_modules/@docusaurus/utils/node_modules/svgo": {
-            "version": "2.8.0",
-            "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz",
-            "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==",
+        "node_modules/@docusaurus/utils-validation": {
+            "version": "3.5.2",
+            "resolved": "https://registry.npmjs.org/@docusaurus/utils-validation/-/utils-validation-3.5.2.tgz",
+            "integrity": "sha512-m+Foq7augzXqB6HufdS139PFxDC5d5q2QKZy8q0qYYvGdI6nnlNsGH4cIGsgBnV7smz+mopl3g4asbSDvMV0jA==",
             "dependencies": {
-                "@trysound/sax": "0.2.0",
-                "commander": "^7.2.0",
-                "css-select": "^4.1.3",
-                "css-tree": "^1.1.3",
-                "csso": "^4.2.0",
-                "picocolors": "^1.0.0",
-                "stable": "^0.1.8"
-            },
-            "bin": {
-                "svgo": "bin/svgo"
+                "@docusaurus/logger": "3.5.2",
+                "@docusaurus/utils": "3.5.2",
+                "@docusaurus/utils-common": "3.5.2",
+                "fs-extra": "^11.2.0",
+                "joi": "^17.9.2",
+                "js-yaml": "^4.1.0",
+                "lodash": "^4.17.21",
+                "tslib": "^2.6.0"
             },
             "engines": {
-                "node": ">=10.13.0"
+                "node": ">=18.0"
             }
         },
         "node_modules/@eslint-community/eslint-utils": {
@@ -3546,9 +2854,9 @@
             }
         },
         "node_modules/@eslint/eslintrc": {
-            "version": "2.1.3",
-            "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.3.tgz",
-            "integrity": "sha512-yZzuIG+jnVu6hNSzFEN07e8BxF3uAzYtQb6uDkaYZLo6oYZDCq454c5kB8zxnzfCYyP4MIuyBn10L0DqwujTmA==",
+            "version": "2.1.4",
+            "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz",
+            "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==",
             "devOptional": true,
             "peer": true,
             "dependencies": {
@@ -3570,9 +2878,9 @@
             }
         },
         "node_modules/@eslint/eslintrc/node_modules/globals": {
-            "version": "13.23.0",
-            "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz",
-            "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==",
+            "version": "13.24.0",
+            "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz",
+            "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==",
             "devOptional": true,
             "peer": true,
             "dependencies": {
@@ -3599,9 +2907,9 @@
             }
         },
         "node_modules/@eslint/js": {
-            "version": "8.53.0",
-            "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.53.0.tgz",
-            "integrity": "sha512-Kn7K8dx/5U6+cT1yEhpX1w4PCSg0M+XyRILPgvwcEBjerFWCwQj5sbr3/VmxqV0JGHCBCzyd6LxypEuehypY1w==",
+            "version": "8.57.0",
+            "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz",
+            "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==",
             "devOptional": true,
             "peer": true,
             "engines": {
@@ -3622,14 +2930,15 @@
             }
         },
         "node_modules/@humanwhocodes/config-array": {
-            "version": "0.11.13",
-            "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz",
-            "integrity": "sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==",
+            "version": "0.11.14",
+            "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz",
+            "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==",
+            "deprecated": "Use @eslint/config-array instead",
             "devOptional": true,
             "peer": true,
             "dependencies": {
-                "@humanwhocodes/object-schema": "^2.0.1",
-                "debug": "^4.1.1",
+                "@humanwhocodes/object-schema": "^2.0.2",
+                "debug": "^4.3.1",
                 "minimatch": "^3.0.5"
             },
             "engines": {
@@ -3651,9 +2960,10 @@
             }
         },
         "node_modules/@humanwhocodes/object-schema": {
-            "version": "2.0.1",
-            "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz",
-            "integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==",
+            "version": "2.0.3",
+            "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz",
+            "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==",
+            "deprecated": "Use @eslint/object-schema instead",
             "devOptional": true,
             "peer": true
         },
@@ -3685,13 +2995,13 @@
             }
         },
         "node_modules/@jridgewell/gen-mapping": {
-            "version": "0.3.3",
-            "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz",
-            "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==",
+            "version": "0.3.5",
+            "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz",
+            "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==",
             "dependencies": {
-                "@jridgewell/set-array": "^1.0.1",
+                "@jridgewell/set-array": "^1.2.1",
                 "@jridgewell/sourcemap-codec": "^1.4.10",
-                "@jridgewell/trace-mapping": "^0.3.9"
+                "@jridgewell/trace-mapping": "^0.3.24"
             },
             "engines": {
                 "node": ">=6.0.0"
@@ -3706,9 +3016,9 @@
             }
         },
         "node_modules/@jridgewell/set-array": {
-            "version": "1.1.2",
-            "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz",
-            "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==",
+            "version": "1.2.1",
+            "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz",
+            "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==",
             "engines": {
                 "node": ">=6.0.0"
             }
@@ -3728,9 +3038,9 @@
             "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg=="
         },
         "node_modules/@jridgewell/trace-mapping": {
-            "version": "0.3.20",
-            "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz",
-            "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==",
+            "version": "0.3.25",
+            "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz",
+            "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==",
             "dependencies": {
                 "@jridgewell/resolve-uri": "^3.1.0",
                 "@jridgewell/sourcemap-codec": "^1.4.14"
@@ -3776,9 +3086,9 @@
             }
         },
         "node_modules/@mdx-js/react": {
-            "version": "3.0.0",
-            "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-3.0.0.tgz",
-            "integrity": "sha512-nDctevR9KyYFyV+m+/+S4cpzCWHqj+iHDHq3QrsWezcC+B17uZdIWgCguESUkwFhM3n/56KxWVE3V6EokrmONQ==",
+            "version": "3.0.1",
+            "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-3.0.1.tgz",
+            "integrity": "sha512-9ZrPIU4MGf6et1m1ov3zKf+q9+deetI51zprKB1D/z3NOb+rUxxtEl3mCjW5wTGh6VhRdwPueh1oRzi6ezkA8A==",
             "dependencies": {
                 "@types/mdx": "^2.0.0"
             },
@@ -3791,33 +3101,6 @@
                 "react": ">=16"
             }
         },
-        "node_modules/@microlink/react-json-view": {
-            "version": "1.23.0",
-            "resolved": "https://registry.npmjs.org/@microlink/react-json-view/-/react-json-view-1.23.0.tgz",
-            "integrity": "sha512-HYJ1nsfO4/qn8afnAMhuk7+5a1vcjEaS8Gm5Vpr1SqdHDY0yLBJGpA+9DvKyxyVKaUkXzKXt3Mif9RcmFSdtYg==",
-            "dependencies": {
-                "flux": "~4.0.1",
-                "react-base16-styling": "~0.6.0",
-                "react-lifecycles-compat": "~3.0.4",
-                "react-textarea-autosize": "~8.3.2"
-            },
-            "peerDependencies": {
-                "react": ">= 15",
-                "react-dom": ">= 15"
-            }
-        },
-        "node_modules/@microlink/react-json-view/node_modules/flux": {
-            "version": "4.0.4",
-            "resolved": "https://registry.npmjs.org/flux/-/flux-4.0.4.tgz",
-            "integrity": "sha512-NCj3XlayA2UsapRpM7va6wU1+9rE5FIL7qoMcmxWHRzbp0yujihMBm9BBHZ1MDIk5h5o2Bl6eGiCe8rYELAmYw==",
-            "dependencies": {
-                "fbemitter": "^3.0.0",
-                "fbjs": "^3.0.1"
-            },
-            "peerDependencies": {
-                "react": "^15.0.2 || ^16.0.0 || ^17.0.0"
-            }
-        },
         "node_modules/@nodelib/fs.scandir": {
             "version": "2.1.5",
             "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
@@ -3936,19 +3219,6 @@
                 "micromark-util-symbol": "^1.0.1"
             }
         },
-        "node_modules/@slorber/static-site-generator-webpack-plugin": {
-            "version": "4.0.7",
-            "resolved": "https://registry.npmjs.org/@slorber/static-site-generator-webpack-plugin/-/static-site-generator-webpack-plugin-4.0.7.tgz",
-            "integrity": "sha512-Ug7x6z5lwrz0WqdnNFOMYrDQNTPAprvHLSh6+/fmml3qUiz6l5eq+2MzLKWtn/q5K5NpSiFsZTP/fck/3vjSxA==",
-            "dependencies": {
-                "eval": "^0.1.8",
-                "p-map": "^4.0.0",
-                "webpack-sources": "^3.2.2"
-            },
-            "engines": {
-                "node": ">=14"
-            }
-        },
         "node_modules/@svgr/babel-plugin-add-jsx-attribute": {
             "version": "8.0.0",
             "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-8.0.0.tgz",
@@ -4261,28 +3531,10 @@
                 "@types/ms": "*"
             }
         },
-        "node_modules/@types/eslint": {
-            "version": "8.44.6",
-            "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.44.6.tgz",
-            "integrity": "sha512-P6bY56TVmX8y9J87jHNgQh43h6VVU+6H7oN7hgvivV81K2XY8qJZ5vqPy/HdUoVIelii2kChYVzQanlswPWVFw==",
-            "dependencies": {
-                "@types/estree": "*",
-                "@types/json-schema": "*"
-            }
-        },
-        "node_modules/@types/eslint-scope": {
-            "version": "3.7.6",
-            "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.6.tgz",
-            "integrity": "sha512-zfM4ipmxVKWdxtDaJ3MP3pBurDXOCoyjvlpE3u6Qzrmw4BPbfm4/ambIeTk/r/J0iq/+2/xp0Fmt+gFvXJY2PQ==",
-            "dependencies": {
-                "@types/eslint": "*",
-                "@types/estree": "*"
-            }
-        },
         "node_modules/@types/estree": {
-            "version": "1.0.4",
-            "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.4.tgz",
-            "integrity": "sha512-2JwWnHK9H+wUZNorf2Zr6ves96WHoWDJIftkcxPKsS7Djta6Zu519LarhRNljPXkpsZR2ZMwNCPeW7omW07BJw=="
+            "version": "1.0.5",
+            "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz",
+            "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw=="
         },
         "node_modules/@types/estree-jsx": {
             "version": "1.0.2",
@@ -4356,22 +3608,22 @@
             }
         },
         "node_modules/@types/istanbul-lib-coverage": {
-            "version": "2.0.5",
-            "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz",
-            "integrity": "sha512-zONci81DZYCZjiLe0r6equvZut0b+dBRPBN5kBDjsONnutYNtJMoWQ9uR2RkL1gLG9NMTzvf+29e5RFfPbeKhQ=="
+            "version": "2.0.6",
+            "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz",
+            "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w=="
         },
         "node_modules/@types/istanbul-lib-report": {
-            "version": "3.0.2",
-            "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.2.tgz",
-            "integrity": "sha512-8toY6FgdltSdONav1XtUHl4LN1yTmLza+EuDazb/fEmRNCwjyqNVIQWs2IfC74IqjHkREs/nQ2FWq5kZU9IC0w==",
+            "version": "3.0.3",
+            "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz",
+            "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==",
             "dependencies": {
                 "@types/istanbul-lib-coverage": "*"
             }
         },
         "node_modules/@types/istanbul-reports": {
-            "version": "3.0.3",
-            "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.3.tgz",
-            "integrity": "sha512-1nESsePMBlf0RPRffLZi5ujYh7IH1BWL4y9pr+Bn3cJBdxz+RTP8bUFljLz9HvzhhOSWKdyBZ4DIivdL6rvgZg==",
+            "version": "3.0.4",
+            "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz",
+            "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==",
             "dependencies": {
                 "@types/istanbul-lib-report": "*"
             }
@@ -4426,9 +3678,9 @@
             "integrity": "sha512-3YmXzzPAdOTVljVMkTMBdBEvlOLg2cDQaDhnnhT3nT9uDbnJzjWhKlzb+desT12Y7tGqaN6d+AbozcKzyL36Ng=="
         },
         "node_modules/@types/prismjs": {
-            "version": "1.26.2",
-            "resolved": "https://registry.npmjs.org/@types/prismjs/-/prismjs-1.26.2.tgz",
-            "integrity": "sha512-/r7Cp7iUIk7gts26mHXD66geUC+2Fo26TZYjQK6Nr4LDfi6lmdRmMqM0oPwfiMhUwoBAOFe8GstKi2pf6hZvwA=="
+            "version": "1.26.4",
+            "resolved": "https://registry.npmjs.org/@types/prismjs/-/prismjs-1.26.4.tgz",
+            "integrity": "sha512-rlAnzkW2sZOjbqZ743IHUhFcvzaGbqijwOu8QZnZCjfQzBqFE3s4lOTJEsxikImav9uzz/42I+O7YUs1mWgMlg=="
         },
         "node_modules/@types/prop-types": {
             "version": "15.7.9",
@@ -4446,19 +3698,18 @@
             "integrity": "sha512-+0autS93xyXizIYiyL02FCY8N+KkKPhILhcUSA276HxzreZ16kl+cmwvV2qAM/PuCCwPXzOXOWhiPcw20uSFcA=="
         },
         "node_modules/@types/react": {
-            "version": "18.2.34",
-            "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.34.tgz",
-            "integrity": "sha512-U6eW/alrRk37FU/MS2RYMjx0Va2JGIVXELTODaTIYgvWGCV4Y4TfTUzG8DdmpDNIT0Xpj/R7GfyHOJJrDttcvg==",
+            "version": "18.3.5",
+            "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.5.tgz",
+            "integrity": "sha512-WeqMfGJLGuLCqHGYRGHxnKrXcTitc6L/nBUWfWPcTarG3t9PsquqUMuVeXZeca+mglY4Vo5GZjCi0A3Or2lnxA==",
             "dependencies": {
                 "@types/prop-types": "*",
-                "@types/scheduler": "*",
                 "csstype": "^3.0.2"
             }
         },
         "node_modules/@types/react-helmet": {
-            "version": "6.1.8",
-            "resolved": "https://registry.npmjs.org/@types/react-helmet/-/react-helmet-6.1.8.tgz",
-            "integrity": "sha512-UyJFvbGWO8xKvfCPFTt/DG/vsgkMqyXbUQAa1pSPco1Whw85Z3ypMEqoHtCDfoW4Qu8XgJp63jyXEhOa4te5Kw==",
+            "version": "6.1.11",
+            "resolved": "https://registry.npmjs.org/@types/react-helmet/-/react-helmet-6.1.11.tgz",
+            "integrity": "sha512-0QcdGLddTERotCXo3VFlUSWO3ztraw8nZ6e3zJSgG7apwV5xt+pJUS8ewPBqT4NYB1optGLprNQzFleIY84u/g==",
             "dev": true,
             "dependencies": {
                 "@types/react": "*"
@@ -4499,24 +3750,13 @@
             "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA=="
         },
         "node_modules/@types/sax": {
-            "version": "1.2.6",
-            "resolved": "https://registry.npmjs.org/@types/sax/-/sax-1.2.6.tgz",
-            "integrity": "sha512-A1mpYCYu1aHFayy8XKN57ebXeAbh9oQIZ1wXcno6b1ESUAfMBDMx7mf/QGlYwcMRaFryh9YBuH03i/3FlPGDkQ==",
+            "version": "1.2.7",
+            "resolved": "https://registry.npmjs.org/@types/sax/-/sax-1.2.7.tgz",
+            "integrity": "sha512-rO73L89PJxeYM3s3pPPjiPgVVcymqU490g0YO5n5By0k2Erzj6tay/4lr1CHAAU4JyOWd1rpQ8bCf6cZfHU96A==",
             "dependencies": {
                 "@types/node": "*"
             }
         },
-        "node_modules/@types/scheduler": {
-            "version": "0.16.5",
-            "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.5.tgz",
-            "integrity": "sha512-s/FPdYRmZR8SjLWGMCuax7r3qCWQw9QKHzXVukAuuIJkXkDRwp+Pu5LMIVFi0Fxbav35WURicYr8u1QsoybnQw=="
-        },
-        "node_modules/@types/semver": {
-            "version": "7.5.4",
-            "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.4.tgz",
-            "integrity": "sha512-MMzuxN3GdFwskAnb6fz0orFvhfqi752yjaXylr0Rp4oDg5H0Zn1IuyRhDVvYOwAXoJirx2xuS16I3WjxnAIHiQ==",
-            "dev": true
-        },
         "node_modules/@types/send": {
             "version": "0.17.3",
             "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.3.tgz",
@@ -4566,46 +3806,44 @@
             }
         },
         "node_modules/@types/yargs": {
-            "version": "17.0.29",
-            "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.29.tgz",
-            "integrity": "sha512-nacjqA3ee9zRF/++a3FUY1suHTFKZeHba2n8WeDw9cCVdmzmHpIxyzOJBcpHvvEmS8E9KqWlSnWHUkOrkhWcvA==",
+            "version": "17.0.33",
+            "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz",
+            "integrity": "sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==",
             "dependencies": {
                 "@types/yargs-parser": "*"
             }
         },
         "node_modules/@types/yargs-parser": {
-            "version": "21.0.2",
-            "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.2.tgz",
-            "integrity": "sha512-5qcvofLPbfjmBfKaLfj/+f+Sbd6pN4zl7w7VSVI5uz7m9QZTuB2aZAa2uo1wHFBNN2x6g/SoTkXmd8mQnQF2Cw=="
+            "version": "21.0.3",
+            "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz",
+            "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ=="
         },
         "node_modules/@typescript-eslint/eslint-plugin": {
-            "version": "6.9.1",
-            "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.9.1.tgz",
-            "integrity": "sha512-w0tiiRc9I4S5XSXXrMHOWgHgxbrBn1Ro+PmiYhSg2ZVdxrAJtQgzU5o2m1BfP6UOn7Vxcc6152vFjQfmZR4xEg==",
+            "version": "8.3.0",
+            "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.3.0.tgz",
+            "integrity": "sha512-FLAIn63G5KH+adZosDYiutqkOkYEx0nvcwNNfJAf+c7Ae/H35qWwTYvPZUKFj5AS+WfHG/WJJfWnDnyNUlp8UA==",
             "dev": true,
             "dependencies": {
-                "@eslint-community/regexpp": "^4.5.1",
-                "@typescript-eslint/scope-manager": "6.9.1",
-                "@typescript-eslint/type-utils": "6.9.1",
-                "@typescript-eslint/utils": "6.9.1",
-                "@typescript-eslint/visitor-keys": "6.9.1",
-                "debug": "^4.3.4",
+                "@eslint-community/regexpp": "^4.10.0",
+                "@typescript-eslint/scope-manager": "8.3.0",
+                "@typescript-eslint/type-utils": "8.3.0",
+                "@typescript-eslint/utils": "8.3.0",
+                "@typescript-eslint/visitor-keys": "8.3.0",
                 "graphemer": "^1.4.0",
-                "ignore": "^5.2.4",
+                "ignore": "^5.3.1",
                 "natural-compare": "^1.4.0",
-                "semver": "^7.5.4",
-                "ts-api-utils": "^1.0.1"
+                "ts-api-utils": "^1.3.0"
             },
             "engines": {
-                "node": "^16.0.0 || >=18.0.0"
+                "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
             },
             "funding": {
                 "type": "opencollective",
                 "url": "https://opencollective.com/typescript-eslint"
             },
             "peerDependencies": {
-                "@typescript-eslint/parser": "^6.0.0 || ^6.0.0-alpha",
-                "eslint": "^7.0.0 || ^8.0.0"
+                "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0",
+                "eslint": "^8.57.0 || ^9.0.0"
             },
             "peerDependenciesMeta": {
                 "typescript": {
@@ -4614,26 +3852,26 @@
             }
         },
         "node_modules/@typescript-eslint/parser": {
-            "version": "6.9.1",
-            "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.9.1.tgz",
-            "integrity": "sha512-C7AK2wn43GSaCUZ9do6Ksgi2g3mwFkMO3Cis96kzmgudoVaKyt62yNzJOktP0HDLb/iO2O0n2lBOzJgr6Q/cyg==",
+            "version": "8.3.0",
+            "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.3.0.tgz",
+            "integrity": "sha512-h53RhVyLu6AtpUzVCYLPhZGL5jzTD9fZL+SYf/+hYOx2bDkyQXztXSc4tbvKYHzfMXExMLiL9CWqJmVz6+78IQ==",
             "dev": true,
             "dependencies": {
-                "@typescript-eslint/scope-manager": "6.9.1",
-                "@typescript-eslint/types": "6.9.1",
-                "@typescript-eslint/typescript-estree": "6.9.1",
-                "@typescript-eslint/visitor-keys": "6.9.1",
+                "@typescript-eslint/scope-manager": "8.3.0",
+                "@typescript-eslint/types": "8.3.0",
+                "@typescript-eslint/typescript-estree": "8.3.0",
+                "@typescript-eslint/visitor-keys": "8.3.0",
                 "debug": "^4.3.4"
             },
             "engines": {
-                "node": "^16.0.0 || >=18.0.0"
+                "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
             },
             "funding": {
                 "type": "opencollective",
                 "url": "https://opencollective.com/typescript-eslint"
             },
             "peerDependencies": {
-                "eslint": "^7.0.0 || ^8.0.0"
+                "eslint": "^8.57.0 || ^9.0.0"
             },
             "peerDependenciesMeta": {
                 "typescript": {
@@ -4642,16 +3880,16 @@
             }
         },
         "node_modules/@typescript-eslint/scope-manager": {
-            "version": "6.9.1",
-            "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.9.1.tgz",
-            "integrity": "sha512-38IxvKB6NAne3g/+MyXMs2Cda/Sz+CEpmm+KLGEM8hx/CvnSRuw51i8ukfwB/B/sESdeTGet1NH1Wj7I0YXswg==",
+            "version": "8.3.0",
+            "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.3.0.tgz",
+            "integrity": "sha512-mz2X8WcN2nVu5Hodku+IR8GgCOl4C0G/Z1ruaWN4dgec64kDBabuXyPAr+/RgJtumv8EEkqIzf3X2U5DUKB2eg==",
             "dev": true,
             "dependencies": {
-                "@typescript-eslint/types": "6.9.1",
-                "@typescript-eslint/visitor-keys": "6.9.1"
+                "@typescript-eslint/types": "8.3.0",
+                "@typescript-eslint/visitor-keys": "8.3.0"
             },
             "engines": {
-                "node": "^16.0.0 || >=18.0.0"
+                "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
             },
             "funding": {
                 "type": "opencollective",
@@ -4659,26 +3897,23 @@
             }
         },
         "node_modules/@typescript-eslint/type-utils": {
-            "version": "6.9.1",
-            "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.9.1.tgz",
-            "integrity": "sha512-eh2oHaUKCK58qIeYp19F5V5TbpM52680sB4zNSz29VBQPTWIlE/hCj5P5B1AChxECe/fmZlspAWFuRniep1Skg==",
+            "version": "8.3.0",
+            "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.3.0.tgz",
+            "integrity": "sha512-wrV6qh//nLbfXZQoj32EXKmwHf4b7L+xXLrP3FZ0GOUU72gSvLjeWUl5J5Ue5IwRxIV1TfF73j/eaBapxx99Lg==",
             "dev": true,
             "dependencies": {
-                "@typescript-eslint/typescript-estree": "6.9.1",
-                "@typescript-eslint/utils": "6.9.1",
+                "@typescript-eslint/typescript-estree": "8.3.0",
+                "@typescript-eslint/utils": "8.3.0",
                 "debug": "^4.3.4",
-                "ts-api-utils": "^1.0.1"
+                "ts-api-utils": "^1.3.0"
             },
             "engines": {
-                "node": "^16.0.0 || >=18.0.0"
+                "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
             },
             "funding": {
                 "type": "opencollective",
                 "url": "https://opencollective.com/typescript-eslint"
             },
-            "peerDependencies": {
-                "eslint": "^7.0.0 || ^8.0.0"
-            },
             "peerDependenciesMeta": {
                 "typescript": {
                     "optional": true
@@ -4686,12 +3921,12 @@
             }
         },
         "node_modules/@typescript-eslint/types": {
-            "version": "6.9.1",
-            "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.9.1.tgz",
-            "integrity": "sha512-BUGslGOb14zUHOUmDB2FfT6SI1CcZEJYfF3qFwBeUrU6srJfzANonwRYHDpLBuzbq3HaoF2XL2hcr01c8f8OaQ==",
+            "version": "8.3.0",
+            "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.3.0.tgz",
+            "integrity": "sha512-y6sSEeK+facMaAyixM36dQ5NVXTnKWunfD1Ft4xraYqxP0lC0POJmIaL/mw72CUMqjY9qfyVfXafMeaUj0noWw==",
             "dev": true,
             "engines": {
-                "node": "^16.0.0 || >=18.0.0"
+                "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
             },
             "funding": {
                 "type": "opencollective",
@@ -4699,21 +3934,22 @@
             }
         },
         "node_modules/@typescript-eslint/typescript-estree": {
-            "version": "6.9.1",
-            "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.9.1.tgz",
-            "integrity": "sha512-U+mUylTHfcqeO7mLWVQ5W/tMLXqVpRv61wm9ZtfE5egz7gtnmqVIw9ryh0mgIlkKk9rZLY3UHygsBSdB9/ftyw==",
+            "version": "8.3.0",
+            "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.3.0.tgz",
+            "integrity": "sha512-Mq7FTHl0R36EmWlCJWojIC1qn/ZWo2YiWYc1XVtasJ7FIgjo0MVv9rZWXEE7IK2CGrtwe1dVOxWwqXUdNgfRCA==",
             "dev": true,
             "dependencies": {
-                "@typescript-eslint/types": "6.9.1",
-                "@typescript-eslint/visitor-keys": "6.9.1",
+                "@typescript-eslint/types": "8.3.0",
+                "@typescript-eslint/visitor-keys": "8.3.0",
                 "debug": "^4.3.4",
-                "globby": "^11.1.0",
+                "fast-glob": "^3.3.2",
                 "is-glob": "^4.0.3",
-                "semver": "^7.5.4",
-                "ts-api-utils": "^1.0.1"
+                "minimatch": "^9.0.4",
+                "semver": "^7.6.0",
+                "ts-api-utils": "^1.3.0"
             },
             "engines": {
-                "node": "^16.0.0 || >=18.0.0"
+                "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
             },
             "funding": {
                 "type": "opencollective",
@@ -4725,42 +3961,63 @@
                 }
             }
         },
+        "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": {
+            "version": "2.0.1",
+            "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+            "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+            "dev": true,
+            "dependencies": {
+                "balanced-match": "^1.0.0"
+            }
+        },
+        "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": {
+            "version": "9.0.5",
+            "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
+            "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
+            "dev": true,
+            "dependencies": {
+                "brace-expansion": "^2.0.1"
+            },
+            "engines": {
+                "node": ">=16 || 14 >=14.17"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/isaacs"
+            }
+        },
         "node_modules/@typescript-eslint/utils": {
-            "version": "6.9.1",
-            "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.9.1.tgz",
-            "integrity": "sha512-L1T0A5nFdQrMVunpZgzqPL6y2wVreSyHhKGZryS6jrEN7bD9NplVAyMryUhXsQ4TWLnZmxc2ekar/lSGIlprCA==",
+            "version": "8.3.0",
+            "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.3.0.tgz",
+            "integrity": "sha512-F77WwqxIi/qGkIGOGXNBLV7nykwfjLsdauRB/DOFPdv6LTF3BHHkBpq81/b5iMPSF055oO2BiivDJV4ChvNtXA==",
             "dev": true,
             "dependencies": {
                 "@eslint-community/eslint-utils": "^4.4.0",
-                "@types/json-schema": "^7.0.12",
-                "@types/semver": "^7.5.0",
-                "@typescript-eslint/scope-manager": "6.9.1",
-                "@typescript-eslint/types": "6.9.1",
-                "@typescript-eslint/typescript-estree": "6.9.1",
-                "semver": "^7.5.4"
+                "@typescript-eslint/scope-manager": "8.3.0",
+                "@typescript-eslint/types": "8.3.0",
+                "@typescript-eslint/typescript-estree": "8.3.0"
             },
             "engines": {
-                "node": "^16.0.0 || >=18.0.0"
+                "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
             },
             "funding": {
                 "type": "opencollective",
                 "url": "https://opencollective.com/typescript-eslint"
             },
             "peerDependencies": {
-                "eslint": "^7.0.0 || ^8.0.0"
+                "eslint": "^8.57.0 || ^9.0.0"
             }
         },
         "node_modules/@typescript-eslint/visitor-keys": {
-            "version": "6.9.1",
-            "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.9.1.tgz",
-            "integrity": "sha512-MUaPUe/QRLEffARsmNfmpghuQkW436DvESW+h+M52w0coICHRfD6Np9/K6PdACwnrq1HmuLl+cSPZaJmeVPkSw==",
+            "version": "8.3.0",
+            "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.3.0.tgz",
+            "integrity": "sha512-RmZwrTbQ9QveF15m/Cl28n0LXD6ea2CjkhH5rQ55ewz3H24w+AMCJHPVYaZ8/0HoG8Z3cLLFFycRXxeO2tz9FA==",
             "dev": true,
             "dependencies": {
-                "@typescript-eslint/types": "6.9.1",
-                "eslint-visitor-keys": "^3.4.1"
+                "@typescript-eslint/types": "8.3.0",
+                "eslint-visitor-keys": "^3.4.3"
             },
             "engines": {
-                "node": "^16.0.0 || >=18.0.0"
+                "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
             },
             "funding": {
                 "type": "opencollective",
@@ -4773,9 +4030,9 @@
             "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ=="
         },
         "node_modules/@webassemblyjs/ast": {
-            "version": "1.11.6",
-            "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz",
-            "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==",
+            "version": "1.12.1",
+            "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz",
+            "integrity": "sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==",
             "dependencies": {
                 "@webassemblyjs/helper-numbers": "1.11.6",
                 "@webassemblyjs/helper-wasm-bytecode": "1.11.6"
@@ -4792,9 +4049,9 @@
             "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q=="
         },
         "node_modules/@webassemblyjs/helper-buffer": {
-            "version": "1.11.6",
-            "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz",
-            "integrity": "sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA=="
+            "version": "1.12.1",
+            "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz",
+            "integrity": "sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw=="
         },
         "node_modules/@webassemblyjs/helper-numbers": {
             "version": "1.11.6",
@@ -4812,14 +4069,14 @@
             "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA=="
         },
         "node_modules/@webassemblyjs/helper-wasm-section": {
-            "version": "1.11.6",
-            "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz",
-            "integrity": "sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==",
+            "version": "1.12.1",
+            "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz",
+            "integrity": "sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==",
             "dependencies": {
-                "@webassemblyjs/ast": "1.11.6",
-                "@webassemblyjs/helper-buffer": "1.11.6",
+                "@webassemblyjs/ast": "1.12.1",
+                "@webassemblyjs/helper-buffer": "1.12.1",
                 "@webassemblyjs/helper-wasm-bytecode": "1.11.6",
-                "@webassemblyjs/wasm-gen": "1.11.6"
+                "@webassemblyjs/wasm-gen": "1.12.1"
             }
         },
         "node_modules/@webassemblyjs/ieee754": {
@@ -4844,26 +4101,26 @@
             "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA=="
         },
         "node_modules/@webassemblyjs/wasm-edit": {
-            "version": "1.11.6",
-            "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz",
-            "integrity": "sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==",
+            "version": "1.12.1",
+            "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz",
+            "integrity": "sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==",
             "dependencies": {
-                "@webassemblyjs/ast": "1.11.6",
-                "@webassemblyjs/helper-buffer": "1.11.6",
+                "@webassemblyjs/ast": "1.12.1",
+                "@webassemblyjs/helper-buffer": "1.12.1",
                 "@webassemblyjs/helper-wasm-bytecode": "1.11.6",
-                "@webassemblyjs/helper-wasm-section": "1.11.6",
-                "@webassemblyjs/wasm-gen": "1.11.6",
-                "@webassemblyjs/wasm-opt": "1.11.6",
-                "@webassemblyjs/wasm-parser": "1.11.6",
-                "@webassemblyjs/wast-printer": "1.11.6"
+                "@webassemblyjs/helper-wasm-section": "1.12.1",
+                "@webassemblyjs/wasm-gen": "1.12.1",
+                "@webassemblyjs/wasm-opt": "1.12.1",
+                "@webassemblyjs/wasm-parser": "1.12.1",
+                "@webassemblyjs/wast-printer": "1.12.1"
             }
         },
         "node_modules/@webassemblyjs/wasm-gen": {
-            "version": "1.11.6",
-            "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz",
-            "integrity": "sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==",
+            "version": "1.12.1",
+            "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz",
+            "integrity": "sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==",
             "dependencies": {
-                "@webassemblyjs/ast": "1.11.6",
+                "@webassemblyjs/ast": "1.12.1",
                 "@webassemblyjs/helper-wasm-bytecode": "1.11.6",
                 "@webassemblyjs/ieee754": "1.11.6",
                 "@webassemblyjs/leb128": "1.11.6",
@@ -4871,22 +4128,22 @@
             }
         },
         "node_modules/@webassemblyjs/wasm-opt": {
-            "version": "1.11.6",
-            "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz",
-            "integrity": "sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==",
+            "version": "1.12.1",
+            "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz",
+            "integrity": "sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==",
             "dependencies": {
-                "@webassemblyjs/ast": "1.11.6",
-                "@webassemblyjs/helper-buffer": "1.11.6",
-                "@webassemblyjs/wasm-gen": "1.11.6",
-                "@webassemblyjs/wasm-parser": "1.11.6"
+                "@webassemblyjs/ast": "1.12.1",
+                "@webassemblyjs/helper-buffer": "1.12.1",
+                "@webassemblyjs/wasm-gen": "1.12.1",
+                "@webassemblyjs/wasm-parser": "1.12.1"
             }
         },
         "node_modules/@webassemblyjs/wasm-parser": {
-            "version": "1.11.6",
-            "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz",
-            "integrity": "sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==",
+            "version": "1.12.1",
+            "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz",
+            "integrity": "sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==",
             "dependencies": {
-                "@webassemblyjs/ast": "1.11.6",
+                "@webassemblyjs/ast": "1.12.1",
                 "@webassemblyjs/helper-api-error": "1.11.6",
                 "@webassemblyjs/helper-wasm-bytecode": "1.11.6",
                 "@webassemblyjs/ieee754": "1.11.6",
@@ -4895,11 +4152,11 @@
             }
         },
         "node_modules/@webassemblyjs/wast-printer": {
-            "version": "1.11.6",
-            "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz",
-            "integrity": "sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==",
+            "version": "1.12.1",
+            "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz",
+            "integrity": "sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==",
             "dependencies": {
-                "@webassemblyjs/ast": "1.11.6",
+                "@webassemblyjs/ast": "1.12.1",
                 "@xtuc/long": "4.2.2"
             }
         },
@@ -4955,10 +4212,10 @@
                 "node": ">=0.4.0"
             }
         },
-        "node_modules/acorn-import-assertions": {
-            "version": "1.9.0",
-            "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz",
-            "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==",
+        "node_modules/acorn-import-attributes": {
+            "version": "1.9.5",
+            "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz",
+            "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==",
             "peerDependencies": {
                 "acorn": "^8"
             }
@@ -5059,30 +4316,31 @@
             }
         },
         "node_modules/algoliasearch": {
-            "version": "4.20.0",
-            "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-4.20.0.tgz",
-            "integrity": "sha512-y+UHEjnOItoNy0bYO+WWmLWBlPwDjKHW6mNHrPi0NkuhpQOOEbrkwQH/wgKFDLh7qlKjzoKeiRtlpewDPDG23g==",
-            "dependencies": {
-                "@algolia/cache-browser-local-storage": "4.20.0",
-                "@algolia/cache-common": "4.20.0",
-                "@algolia/cache-in-memory": "4.20.0",
-                "@algolia/client-account": "4.20.0",
-                "@algolia/client-analytics": "4.20.0",
-                "@algolia/client-common": "4.20.0",
-                "@algolia/client-personalization": "4.20.0",
-                "@algolia/client-search": "4.20.0",
-                "@algolia/logger-common": "4.20.0",
-                "@algolia/logger-console": "4.20.0",
-                "@algolia/requester-browser-xhr": "4.20.0",
-                "@algolia/requester-common": "4.20.0",
-                "@algolia/requester-node-http": "4.20.0",
-                "@algolia/transporter": "4.20.0"
+            "version": "4.24.0",
+            "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-4.24.0.tgz",
+            "integrity": "sha512-bf0QV/9jVejssFBmz2HQLxUadxk574t4iwjCKp5E7NBzwKkrDEhKPISIIjAU/p6K5qDx3qoeh4+26zWN1jmw3g==",
+            "dependencies": {
+                "@algolia/cache-browser-local-storage": "4.24.0",
+                "@algolia/cache-common": "4.24.0",
+                "@algolia/cache-in-memory": "4.24.0",
+                "@algolia/client-account": "4.24.0",
+                "@algolia/client-analytics": "4.24.0",
+                "@algolia/client-common": "4.24.0",
+                "@algolia/client-personalization": "4.24.0",
+                "@algolia/client-search": "4.24.0",
+                "@algolia/logger-common": "4.24.0",
+                "@algolia/logger-console": "4.24.0",
+                "@algolia/recommend": "4.24.0",
+                "@algolia/requester-browser-xhr": "4.24.0",
+                "@algolia/requester-common": "4.24.0",
+                "@algolia/requester-node-http": "4.24.0",
+                "@algolia/transporter": "4.24.0"
             }
         },
         "node_modules/algoliasearch-helper": {
-            "version": "3.15.0",
-            "resolved": "https://registry.npmjs.org/algoliasearch-helper/-/algoliasearch-helper-3.15.0.tgz",
-            "integrity": "sha512-DGUnK3TGtDQsaUE4ayF/LjSN0DGsuYThB8WBgnnDY0Wq04K6lNVruO3LfqJOgSfDiezp+Iyt8Tj4YKHi+/ivSA==",
+            "version": "3.22.4",
+            "resolved": "https://registry.npmjs.org/algoliasearch-helper/-/algoliasearch-helper-3.22.4.tgz",
+            "integrity": "sha512-fvBCywguW9f+939S6awvRMstqMF1XXcd2qs1r1aGqL/PJ1go/DqN06tWmDVmhCDqBJanm++imletrQWf0G2S1g==",
             "dependencies": {
                 "@algolia/events": "^4.0.1"
             },
@@ -5090,6 +4348,41 @@
                 "algoliasearch": ">= 3.1 < 6"
             }
         },
+        "node_modules/algoliasearch/node_modules/@algolia/client-common": {
+            "version": "4.24.0",
+            "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.24.0.tgz",
+            "integrity": "sha512-bc2ROsNL6w6rqpl5jj/UywlIYC21TwSSoFHKl01lYirGMW+9Eek6r02Tocg4gZ8HAw3iBvu6XQiM3BEbmEMoiA==",
+            "dependencies": {
+                "@algolia/requester-common": "4.24.0",
+                "@algolia/transporter": "4.24.0"
+            }
+        },
+        "node_modules/algoliasearch/node_modules/@algolia/client-search": {
+            "version": "4.24.0",
+            "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.24.0.tgz",
+            "integrity": "sha512-uRW6EpNapmLAD0mW47OXqTP8eiIx5F6qN9/x/7HHO6owL3N1IXqydGwW5nhDFBrV+ldouro2W1VX3XlcUXEFCA==",
+            "dependencies": {
+                "@algolia/client-common": "4.24.0",
+                "@algolia/requester-common": "4.24.0",
+                "@algolia/transporter": "4.24.0"
+            }
+        },
+        "node_modules/algoliasearch/node_modules/@algolia/requester-browser-xhr": {
+            "version": "4.24.0",
+            "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.24.0.tgz",
+            "integrity": "sha512-Z2NxZMb6+nVXSjF13YpjYTdvV3032YTBSGm2vnYvYPA6mMxzM3v5rsCiSspndn9rzIW4Qp1lPHBvuoKJV6jnAA==",
+            "dependencies": {
+                "@algolia/requester-common": "4.24.0"
+            }
+        },
+        "node_modules/algoliasearch/node_modules/@algolia/requester-node-http": {
+            "version": "4.24.0",
+            "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-4.24.0.tgz",
+            "integrity": "sha512-JF18yTjNOVYvU/L3UosRcvbPMGT9B+/GQWNWnenIImglzNVGpyzChkXLnrSf6uxwVNO6ESGu6oN8MqcGQcjQJw==",
+            "dependencies": {
+                "@algolia/requester-common": "4.24.0"
+            }
+        },
         "node_modules/ansi-align": {
             "version": "3.0.1",
             "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz",
@@ -5184,11 +4477,6 @@
                 "node": ">=8"
             }
         },
-        "node_modules/asap": {
-            "version": "2.0.6",
-            "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
-            "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA=="
-        },
         "node_modules/astring": {
             "version": "1.8.6",
             "resolved": "https://registry.npmjs.org/astring/-/astring-1.8.6.tgz",
@@ -5197,11 +4485,6 @@
                 "astring": "bin/astring"
             }
         },
-        "node_modules/asynckit": {
-            "version": "0.4.0",
-            "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
-            "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
-        },
         "node_modules/at-least-node": {
             "version": "1.0.0",
             "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz",
@@ -5211,9 +4494,9 @@
             }
         },
         "node_modules/autoprefixer": {
-            "version": "10.4.16",
-            "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.16.tgz",
-            "integrity": "sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ==",
+            "version": "10.4.20",
+            "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.20.tgz",
+            "integrity": "sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==",
             "funding": [
                 {
                     "type": "opencollective",
@@ -5229,11 +4512,11 @@
                 }
             ],
             "dependencies": {
-                "browserslist": "^4.21.10",
-                "caniuse-lite": "^1.0.30001538",
-                "fraction.js": "^4.3.6",
+                "browserslist": "^4.23.3",
+                "caniuse-lite": "^1.0.30001646",
+                "fraction.js": "^4.3.7",
                 "normalize-range": "^0.1.2",
-                "picocolors": "^1.0.0",
+                "picocolors": "^1.0.1",
                 "postcss-value-parser": "^4.2.0"
             },
             "bin": {
@@ -5242,17 +4525,8 @@
             "engines": {
                 "node": "^10 || ^12 || >=14"
             },
-            "peerDependencies": {
-                "postcss": "^8.1.0"
-            }
-        },
-        "node_modules/axios": {
-            "version": "0.27.2",
-            "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz",
-            "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==",
-            "dependencies": {
-                "follow-redirects": "^1.14.9",
-                "form-data": "^4.0.0"
+            "peerDependencies": {
+                "postcss": "^8.1.0"
             }
         },
         "node_modules/babel-loader": {
@@ -5337,11 +4611,6 @@
             "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
             "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
         },
-        "node_modules/base16": {
-            "version": "1.0.0",
-            "resolved": "https://registry.npmjs.org/base16/-/base16-1.0.0.tgz",
-            "integrity": "sha512-pNdYkNPiJUnEhnfXV56+sQy8+AaPcG3POZAUnwr4EeqCUZFz4u2PePbo3e5Gj4ziYPCWGUZT9RHisvJKnwFuBQ=="
-        },
         "node_modules/batch": {
             "version": "0.6.1",
             "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz",
@@ -5364,12 +4633,12 @@
             }
         },
         "node_modules/body-parser": {
-            "version": "1.20.1",
-            "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz",
-            "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==",
+            "version": "1.20.2",
+            "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz",
+            "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==",
             "dependencies": {
                 "bytes": "3.1.2",
-                "content-type": "~1.0.4",
+                "content-type": "~1.0.5",
                 "debug": "2.6.9",
                 "depd": "2.0.0",
                 "destroy": "1.2.0",
@@ -5377,7 +4646,7 @@
                 "iconv-lite": "0.4.24",
                 "on-finished": "2.4.1",
                 "qs": "6.11.0",
-                "raw-body": "2.5.1",
+                "raw-body": "2.5.2",
                 "type-is": "~1.6.18",
                 "unpipe": "1.0.0"
             },
@@ -5454,20 +4723,20 @@
             }
         },
         "node_modules/braces": {
-            "version": "3.0.2",
-            "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
-            "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+            "version": "3.0.3",
+            "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
+            "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
             "dependencies": {
-                "fill-range": "^7.0.1"
+                "fill-range": "^7.1.1"
             },
             "engines": {
                 "node": ">=8"
             }
         },
         "node_modules/browserslist": {
-            "version": "4.22.1",
-            "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.1.tgz",
-            "integrity": "sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==",
+            "version": "4.23.3",
+            "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.3.tgz",
+            "integrity": "sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==",
             "funding": [
                 {
                     "type": "opencollective",
@@ -5483,10 +4752,10 @@
                 }
             ],
             "dependencies": {
-                "caniuse-lite": "^1.0.30001541",
-                "electron-to-chromium": "^1.4.535",
-                "node-releases": "^2.0.13",
-                "update-browserslist-db": "^1.0.13"
+                "caniuse-lite": "^1.0.30001646",
+                "electron-to-chromium": "^1.5.4",
+                "node-releases": "^2.0.18",
+                "update-browserslist-db": "^1.1.0"
             },
             "bin": {
                 "browserslist": "cli.js"
@@ -5545,13 +4814,18 @@
             }
         },
         "node_modules/call-bind": {
-            "version": "1.0.5",
-            "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz",
-            "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==",
+            "version": "1.0.7",
+            "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz",
+            "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==",
             "dependencies": {
+                "es-define-property": "^1.0.0",
+                "es-errors": "^1.3.0",
                 "function-bind": "^1.1.2",
-                "get-intrinsic": "^1.2.1",
-                "set-function-length": "^1.1.1"
+                "get-intrinsic": "^1.2.4",
+                "set-function-length": "^1.2.1"
+            },
+            "engines": {
+                "node": ">= 0.4"
             },
             "funding": {
                 "url": "https://github.com/sponsors/ljharb"
@@ -5597,9 +4871,9 @@
             }
         },
         "node_modules/caniuse-lite": {
-            "version": "1.0.30001561",
-            "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001561.tgz",
-            "integrity": "sha512-NTt0DNoKe958Q0BE0j0c1V9jbUzhBxHIEJy7asmGrpE0yG63KTV7PLHPnK2E1O9RsQrQ081I3NLuXGS6zht3cw==",
+            "version": "1.0.30001655",
+            "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001655.tgz",
+            "integrity": "sha512-jRGVy3iSGO5Uutn2owlb5gR6qsGngTw9ZTb4ali9f3glshcNmJ2noam4Mo9zia5P9Dk3jNNydy7vQjuE5dQmfg==",
             "funding": [
                 {
                     "type": "opencollective",
@@ -5862,9 +5136,9 @@
             }
         },
         "node_modules/clsx": {
-            "version": "2.0.0",
-            "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.0.0.tgz",
-            "integrity": "sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==",
+            "version": "2.1.1",
+            "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz",
+            "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==",
             "engines": {
                 "node": ">=6"
             }
@@ -5912,17 +5186,6 @@
                 "node": ">=10"
             }
         },
-        "node_modules/combined-stream": {
-            "version": "1.0.8",
-            "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
-            "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
-            "dependencies": {
-                "delayed-stream": "~1.0.0"
-            },
-            "engines": {
-                "node": ">= 0.8"
-            }
-        },
         "node_modules/comma-separated-tokens": {
             "version": "2.0.3",
             "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz",
@@ -6066,9 +5329,9 @@
             "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg=="
         },
         "node_modules/cookie": {
-            "version": "0.5.0",
-            "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz",
-            "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==",
+            "version": "0.6.0",
+            "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz",
+            "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==",
             "engines": {
                 "node": ">= 0.6"
             }
@@ -6214,14 +5477,6 @@
                 }
             }
         },
-        "node_modules/cross-fetch": {
-            "version": "3.1.8",
-            "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.8.tgz",
-            "integrity": "sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==",
-            "dependencies": {
-                "node-fetch": "^2.6.12"
-            }
-        },
         "node_modules/cross-spawn": {
             "version": "7.0.3",
             "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
@@ -6261,11 +5516,11 @@
             }
         },
         "node_modules/css-declaration-sorter": {
-            "version": "6.4.1",
-            "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.4.1.tgz",
-            "integrity": "sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g==",
+            "version": "7.2.0",
+            "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-7.2.0.tgz",
+            "integrity": "sha512-h70rUM+3PNFuaBDTLe8wF/cdWu+dOZmb7pJt8Z2sedYbAcQVQV/tEchueg3GWxwqS0cxtbxmaHEdkNACqcvsow==",
             "engines": {
-                "node": "^10 || ^12 || >=14"
+                "node": "^14 || ^16 || >=18"
             },
             "peerDependencies": {
                 "postcss": "^8.0.9"
@@ -6297,16 +5552,16 @@
             }
         },
         "node_modules/css-minimizer-webpack-plugin": {
-            "version": "4.2.2",
-            "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-4.2.2.tgz",
-            "integrity": "sha512-s3Of/4jKfw1Hj9CxEO1E5oXhQAxlayuHO2y/ML+C6I9sQ7FdzfEV6QgMLN3vI+qFsjJGIAFLKtQK7t8BOXAIyA==",
+            "version": "5.0.1",
+            "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-5.0.1.tgz",
+            "integrity": "sha512-3caImjKFQkS+ws1TGcFn0V1HyDJFq1Euy589JlD6/3rV2kj+w7r5G9WDMgSHvpvXHNZ2calVypZWuEDQd9wfLg==",
             "dependencies": {
-                "cssnano": "^5.1.8",
-                "jest-worker": "^29.1.2",
-                "postcss": "^8.4.17",
-                "schema-utils": "^4.0.0",
-                "serialize-javascript": "^6.0.0",
-                "source-map": "^0.6.1"
+                "@jridgewell/trace-mapping": "^0.3.18",
+                "cssnano": "^6.0.1",
+                "jest-worker": "^29.4.3",
+                "postcss": "^8.4.24",
+                "schema-utils": "^4.0.1",
+                "serialize-javascript": "^6.0.1"
             },
             "engines": {
                 "node": ">= 14.15.0"
@@ -6339,14 +5594,6 @@
                 }
             }
         },
-        "node_modules/css-minimizer-webpack-plugin/node_modules/source-map": {
-            "version": "0.6.1",
-            "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-            "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-            "engines": {
-                "node": ">=0.10.0"
-            }
-        },
         "node_modules/css-select": {
             "version": "5.1.0",
             "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz",
@@ -6397,95 +5644,96 @@
             }
         },
         "node_modules/cssnano": {
-            "version": "5.1.15",
-            "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.1.15.tgz",
-            "integrity": "sha512-j+BKgDcLDQA+eDifLx0EO4XSA56b7uut3BQFH+wbSaSTuGLuiyTa/wbRYthUXX8LC9mLg+WWKe8h+qJuwTAbHw==",
+            "version": "6.1.2",
+            "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-6.1.2.tgz",
+            "integrity": "sha512-rYk5UeX7VAM/u0lNqewCdasdtPK81CgX8wJFLEIXHbV2oldWRgJAsZrdhRXkV1NJzA2g850KiFm9mMU2HxNxMA==",
             "dependencies": {
-                "cssnano-preset-default": "^5.2.14",
-                "lilconfig": "^2.0.3",
-                "yaml": "^1.10.2"
+                "cssnano-preset-default": "^6.1.2",
+                "lilconfig": "^3.1.1"
             },
             "engines": {
-                "node": "^10 || ^12 || >=14.0"
+                "node": "^14 || ^16 || >=18.0"
             },
             "funding": {
                 "type": "opencollective",
                 "url": "https://opencollective.com/cssnano"
             },
             "peerDependencies": {
-                "postcss": "^8.2.15"
+                "postcss": "^8.4.31"
             }
         },
         "node_modules/cssnano-preset-advanced": {
-            "version": "5.3.10",
-            "resolved": "https://registry.npmjs.org/cssnano-preset-advanced/-/cssnano-preset-advanced-5.3.10.tgz",
-            "integrity": "sha512-fnYJyCS9jgMU+cmHO1rPSPf9axbQyD7iUhLO5Df6O4G+fKIOMps+ZbU0PdGFejFBBZ3Pftf18fn1eG7MAPUSWQ==",
+            "version": "6.1.2",
+            "resolved": "https://registry.npmjs.org/cssnano-preset-advanced/-/cssnano-preset-advanced-6.1.2.tgz",
+            "integrity": "sha512-Nhao7eD8ph2DoHolEzQs5CfRpiEP0xa1HBdnFZ82kvqdmbwVBUr2r1QuQ4t1pi+D1ZpqpcO4T+wy/7RxzJ/WPQ==",
             "dependencies": {
-                "autoprefixer": "^10.4.12",
-                "cssnano-preset-default": "^5.2.14",
-                "postcss-discard-unused": "^5.1.0",
-                "postcss-merge-idents": "^5.1.1",
-                "postcss-reduce-idents": "^5.2.0",
-                "postcss-zindex": "^5.1.0"
+                "autoprefixer": "^10.4.19",
+                "browserslist": "^4.23.0",
+                "cssnano-preset-default": "^6.1.2",
+                "postcss-discard-unused": "^6.0.5",
+                "postcss-merge-idents": "^6.0.3",
+                "postcss-reduce-idents": "^6.0.3",
+                "postcss-zindex": "^6.0.2"
             },
             "engines": {
-                "node": "^10 || ^12 || >=14.0"
+                "node": "^14 || ^16 || >=18.0"
             },
             "peerDependencies": {
-                "postcss": "^8.2.15"
+                "postcss": "^8.4.31"
             }
         },
         "node_modules/cssnano-preset-default": {
-            "version": "5.2.14",
-            "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.14.tgz",
-            "integrity": "sha512-t0SFesj/ZV2OTylqQVOrFgEh5uanxbO6ZAdeCrNsUQ6fVuXwYTxJPNAGvGTxHbD68ldIJNec7PyYZDBrfDQ+6A==",
-            "dependencies": {
-                "css-declaration-sorter": "^6.3.1",
-                "cssnano-utils": "^3.1.0",
-                "postcss-calc": "^8.2.3",
-                "postcss-colormin": "^5.3.1",
-                "postcss-convert-values": "^5.1.3",
-                "postcss-discard-comments": "^5.1.2",
-                "postcss-discard-duplicates": "^5.1.0",
-                "postcss-discard-empty": "^5.1.1",
-                "postcss-discard-overridden": "^5.1.0",
-                "postcss-merge-longhand": "^5.1.7",
-                "postcss-merge-rules": "^5.1.4",
-                "postcss-minify-font-values": "^5.1.0",
-                "postcss-minify-gradients": "^5.1.1",
-                "postcss-minify-params": "^5.1.4",
-                "postcss-minify-selectors": "^5.2.1",
-                "postcss-normalize-charset": "^5.1.0",
-                "postcss-normalize-display-values": "^5.1.0",
-                "postcss-normalize-positions": "^5.1.1",
-                "postcss-normalize-repeat-style": "^5.1.1",
-                "postcss-normalize-string": "^5.1.0",
-                "postcss-normalize-timing-functions": "^5.1.0",
-                "postcss-normalize-unicode": "^5.1.1",
-                "postcss-normalize-url": "^5.1.0",
-                "postcss-normalize-whitespace": "^5.1.1",
-                "postcss-ordered-values": "^5.1.3",
-                "postcss-reduce-initial": "^5.1.2",
-                "postcss-reduce-transforms": "^5.1.0",
-                "postcss-svgo": "^5.1.0",
-                "postcss-unique-selectors": "^5.1.1"
-            },
-            "engines": {
-                "node": "^10 || ^12 || >=14.0"
-            },
-            "peerDependencies": {
-                "postcss": "^8.2.15"
+            "version": "6.1.2",
+            "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-6.1.2.tgz",
+            "integrity": "sha512-1C0C+eNaeN8OcHQa193aRgYexyJtU8XwbdieEjClw+J9d94E41LwT6ivKH0WT+fYwYWB0Zp3I3IZ7tI/BbUbrg==",
+            "dependencies": {
+                "browserslist": "^4.23.0",
+                "css-declaration-sorter": "^7.2.0",
+                "cssnano-utils": "^4.0.2",
+                "postcss-calc": "^9.0.1",
+                "postcss-colormin": "^6.1.0",
+                "postcss-convert-values": "^6.1.0",
+                "postcss-discard-comments": "^6.0.2",
+                "postcss-discard-duplicates": "^6.0.3",
+                "postcss-discard-empty": "^6.0.3",
+                "postcss-discard-overridden": "^6.0.2",
+                "postcss-merge-longhand": "^6.0.5",
+                "postcss-merge-rules": "^6.1.1",
+                "postcss-minify-font-values": "^6.1.0",
+                "postcss-minify-gradients": "^6.0.3",
+                "postcss-minify-params": "^6.1.0",
+                "postcss-minify-selectors": "^6.0.4",
+                "postcss-normalize-charset": "^6.0.2",
+                "postcss-normalize-display-values": "^6.0.2",
+                "postcss-normalize-positions": "^6.0.2",
+                "postcss-normalize-repeat-style": "^6.0.2",
+                "postcss-normalize-string": "^6.0.2",
+                "postcss-normalize-timing-functions": "^6.0.2",
+                "postcss-normalize-unicode": "^6.1.0",
+                "postcss-normalize-url": "^6.0.2",
+                "postcss-normalize-whitespace": "^6.0.2",
+                "postcss-ordered-values": "^6.0.2",
+                "postcss-reduce-initial": "^6.1.0",
+                "postcss-reduce-transforms": "^6.0.2",
+                "postcss-svgo": "^6.0.3",
+                "postcss-unique-selectors": "^6.0.4"
+            },
+            "engines": {
+                "node": "^14 || ^16 || >=18.0"
+            },
+            "peerDependencies": {
+                "postcss": "^8.4.31"
             }
         },
         "node_modules/cssnano-utils": {
-            "version": "3.1.0",
-            "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-3.1.0.tgz",
-            "integrity": "sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==",
+            "version": "4.0.2",
+            "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-4.0.2.tgz",
+            "integrity": "sha512-ZR1jHg+wZ8o4c3zqf1SIUSTIvm/9mU343FMR6Obe/unskbvpGhZOo1J6d/r8D1pzkRQYuwbcH3hToOuoA2G7oQ==",
             "engines": {
-                "node": "^10 || ^12 || >=14.0"
+                "node": "^14 || ^16 || >=18.0"
             },
             "peerDependencies": {
-                "postcss": "^8.2.15"
+                "postcss": "^8.4.31"
             }
         },
         "node_modules/csso": {
@@ -6619,16 +5867,19 @@
             }
         },
         "node_modules/define-data-property": {
-            "version": "1.1.1",
-            "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz",
-            "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==",
+            "version": "1.1.4",
+            "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz",
+            "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==",
             "dependencies": {
-                "get-intrinsic": "^1.2.1",
-                "gopd": "^1.0.1",
-                "has-property-descriptors": "^1.0.0"
+                "es-define-property": "^1.0.0",
+                "es-errors": "^1.3.0",
+                "gopd": "^1.0.1"
             },
             "engines": {
                 "node": ">= 0.4"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/ljharb"
             }
         },
         "node_modules/define-lazy-prop": {
@@ -6676,14 +5927,6 @@
                 "url": "https://github.com/sponsors/sindresorhus"
             }
         },
-        "node_modules/delayed-stream": {
-            "version": "1.0.0",
-            "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
-            "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
-            "engines": {
-                "node": ">=0.4.0"
-            }
-        },
         "node_modules/depd": {
             "version": "2.0.0",
             "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
@@ -6769,9 +6012,9 @@
             }
         },
         "node_modules/dir-compare": {
-            "version": "4.2.0",
-            "resolved": "https://registry.npmjs.org/dir-compare/-/dir-compare-4.2.0.tgz",
-            "integrity": "sha512-2xMCmOoMrdQIPHdsTawECdNPwlVFB9zGcz3kuhmBO6U3oU+UQjsue0i8ayLKpgBcm+hcXPMVSGUN9d+pvJ6+VQ==",
+            "version": "5.0.0",
+            "resolved": "https://registry.npmjs.org/dir-compare/-/dir-compare-5.0.0.tgz",
+            "integrity": "sha512-/GCjdixGQyJ9sj/HiMTYaNGztXqHnj0kWuKDfrGU6fCvZzQBihMBQLToG/dwg5cSs7lm5707iwbKOdsJh5VV4g==",
             "dev": true,
             "dependencies": {
                 "minimatch": "^3.0.5",
@@ -6936,9 +6179,9 @@
             "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="
         },
         "node_modules/electron-to-chromium": {
-            "version": "1.4.576",
-            "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.576.tgz",
-            "integrity": "sha512-yXsZyXJfAqzWk1WKryr0Wl0MN2D47xodPvEEwlVePBnhU5E7raevLQR+E6b9JAD3GfL/7MbAL9ZtWQQPcLx7wA=="
+            "version": "1.5.13",
+            "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.13.tgz",
+            "integrity": "sha512-lbBcvtIJ4J6sS4tb5TLp1b4LyfCdMkwStzXPyAgVgTRAsep4bvrAGaBOP7ZJtQMNJpSQ9SqG4brWOroNaQtm7Q=="
         },
         "node_modules/emoji-regex": {
             "version": "9.2.2",
@@ -6976,9 +6219,9 @@
             }
         },
         "node_modules/enhanced-resolve": {
-            "version": "5.15.0",
-            "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz",
-            "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==",
+            "version": "5.17.1",
+            "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz",
+            "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==",
             "dependencies": {
                 "graceful-fs": "^4.2.4",
                 "tapable": "^2.2.0"
@@ -7006,15 +6249,34 @@
                 "is-arrayish": "^0.2.1"
             }
         },
+        "node_modules/es-define-property": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz",
+            "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==",
+            "dependencies": {
+                "get-intrinsic": "^1.2.4"
+            },
+            "engines": {
+                "node": ">= 0.4"
+            }
+        },
+        "node_modules/es-errors": {
+            "version": "1.3.0",
+            "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
+            "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
+            "engines": {
+                "node": ">= 0.4"
+            }
+        },
         "node_modules/es-module-lexer": {
             "version": "1.3.1",
             "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.3.1.tgz",
             "integrity": "sha512-JUFAyicQV9mXc3YRxPnDlrfBKpqt6hUYzz9/boprUJHs4e4KVr3XwOF70doO6gwXUor6EWZJAyWAfKki84t20Q=="
         },
         "node_modules/escalade": {
-            "version": "3.1.1",
-            "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
-            "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
+            "version": "3.2.0",
+            "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
+            "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
             "engines": {
                 "node": ">=6"
             }
@@ -7047,17 +6309,17 @@
             }
         },
         "node_modules/eslint": {
-            "version": "8.53.0",
-            "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.53.0.tgz",
-            "integrity": "sha512-N4VuiPjXDUa4xVeV/GC/RV3hQW9Nw+Y463lkWaKKXKYMvmRiRDAtfpuPFLN+E1/6ZhyR8J2ig+eVREnYgUsiag==",
+            "version": "8.57.0",
+            "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz",
+            "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==",
             "devOptional": true,
             "peer": true,
             "dependencies": {
                 "@eslint-community/eslint-utils": "^4.2.0",
                 "@eslint-community/regexpp": "^4.6.1",
-                "@eslint/eslintrc": "^2.1.3",
-                "@eslint/js": "8.53.0",
-                "@humanwhocodes/config-array": "^0.11.13",
+                "@eslint/eslintrc": "^2.1.4",
+                "@eslint/js": "8.57.0",
+                "@humanwhocodes/config-array": "^0.11.14",
                 "@humanwhocodes/module-importer": "^1.0.1",
                 "@nodelib/fs.walk": "^1.2.8",
                 "@ungap/structured-clone": "^1.2.0",
@@ -7396,16 +6658,16 @@
             }
         },
         "node_modules/express": {
-            "version": "4.18.2",
-            "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz",
-            "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==",
+            "version": "4.19.2",
+            "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz",
+            "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==",
             "dependencies": {
                 "accepts": "~1.3.8",
                 "array-flatten": "1.1.1",
-                "body-parser": "1.20.1",
+                "body-parser": "1.20.2",
                 "content-disposition": "0.5.4",
                 "content-type": "~1.0.4",
-                "cookie": "0.5.0",
+                "cookie": "0.6.0",
                 "cookie-signature": "1.0.6",
                 "debug": "2.6.9",
                 "depd": "2.0.0",
@@ -7500,9 +6762,9 @@
             "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
         },
         "node_modules/fast-glob": {
-            "version": "3.3.1",
-            "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz",
-            "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==",
+            "version": "3.3.2",
+            "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz",
+            "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==",
             "dependencies": {
                 "@nodelib/fs.stat": "^2.0.2",
                 "@nodelib/fs.walk": "^1.2.3",
@@ -7565,33 +6827,6 @@
                 "node": ">=0.8.0"
             }
         },
-        "node_modules/fbemitter": {
-            "version": "3.0.0",
-            "resolved": "https://registry.npmjs.org/fbemitter/-/fbemitter-3.0.0.tgz",
-            "integrity": "sha512-KWKaceCwKQU0+HPoop6gn4eOHk50bBv/VxjJtGMfwmJt3D29JpN4H4eisCtIPA+a8GVBam+ldMMpMjJUvpDyHw==",
-            "dependencies": {
-                "fbjs": "^3.0.0"
-            }
-        },
-        "node_modules/fbjs": {
-            "version": "3.0.5",
-            "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-3.0.5.tgz",
-            "integrity": "sha512-ztsSx77JBtkuMrEypfhgc3cI0+0h+svqeie7xHbh1k/IKdcydnvadp/mUaGgjAOXQmQSxsqgaRhS3q9fy+1kxg==",
-            "dependencies": {
-                "cross-fetch": "^3.1.5",
-                "fbjs-css-vars": "^1.0.0",
-                "loose-envify": "^1.0.0",
-                "object-assign": "^4.1.0",
-                "promise": "^7.1.1",
-                "setimmediate": "^1.0.5",
-                "ua-parser-js": "^1.0.35"
-            }
-        },
-        "node_modules/fbjs-css-vars": {
-            "version": "1.0.2",
-            "resolved": "https://registry.npmjs.org/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz",
-            "integrity": "sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ=="
-        },
         "node_modules/feed": {
             "version": "4.2.2",
             "resolved": "https://registry.npmjs.org/feed/-/feed-4.2.2.tgz",
@@ -7661,9 +6896,9 @@
             }
         },
         "node_modules/fill-range": {
-            "version": "7.0.1",
-            "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
-            "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+            "version": "7.1.1",
+            "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
+            "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
             "dependencies": {
                 "to-regex-range": "^5.0.1"
             },
@@ -7762,9 +6997,9 @@
             "peer": true
         },
         "node_modules/follow-redirects": {
-            "version": "1.15.3",
-            "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz",
-            "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==",
+            "version": "1.15.6",
+            "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz",
+            "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==",
             "funding": [
                 {
                     "type": "individual",
@@ -7872,19 +7107,6 @@
                 "node": ">=6"
             }
         },
-        "node_modules/form-data": {
-            "version": "4.0.0",
-            "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
-            "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
-            "dependencies": {
-                "asynckit": "^0.4.0",
-                "combined-stream": "^1.0.8",
-                "mime-types": "^2.1.12"
-            },
-            "engines": {
-                "node": ">= 6"
-            }
-        },
         "node_modules/form-data-encoder": {
             "version": "2.1.4",
             "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-2.1.4.tgz",
@@ -7930,9 +7152,9 @@
             }
         },
         "node_modules/fs-extra": {
-            "version": "11.1.1",
-            "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz",
-            "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==",
+            "version": "11.2.0",
+            "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz",
+            "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==",
             "dependencies": {
                 "graceful-fs": "^4.2.0",
                 "jsonfile": "^6.0.1",
@@ -7982,15 +7204,19 @@
             }
         },
         "node_modules/get-intrinsic": {
-            "version": "1.2.2",
-            "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz",
-            "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==",
+            "version": "1.2.4",
+            "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz",
+            "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==",
             "dependencies": {
+                "es-errors": "^1.3.0",
                 "function-bind": "^1.1.2",
                 "has-proto": "^1.0.1",
                 "has-symbols": "^1.0.3",
                 "hasown": "^2.0.0"
             },
+            "engines": {
+                "node": ">= 0.4"
+            },
             "funding": {
                 "url": "https://github.com/sponsors/ljharb"
             }
@@ -8254,11 +7480,11 @@
             }
         },
         "node_modules/has-property-descriptors": {
-            "version": "1.0.1",
-            "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz",
-            "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==",
+            "version": "1.0.2",
+            "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz",
+            "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==",
             "dependencies": {
-                "get-intrinsic": "^1.2.2"
+                "es-define-property": "^1.0.0"
             },
             "funding": {
                 "url": "https://github.com/sponsors/ljharb"
@@ -8779,9 +8005,9 @@
             }
         },
         "node_modules/ignore": {
-            "version": "5.2.4",
-            "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz",
-            "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==",
+            "version": "5.3.2",
+            "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz",
+            "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==",
             "engines": {
                 "node": ">= 4"
             }
@@ -8854,9 +8080,9 @@
             }
         },
         "node_modules/infima": {
-            "version": "0.2.0-alpha.43",
-            "resolved": "https://registry.npmjs.org/infima/-/infima-0.2.0-alpha.43.tgz",
-            "integrity": "sha512-2uw57LvUqW0rK/SWYnd/2rRfxNA5DDNOh33jxF7fy46VWoNhGxiUQyVZHbBMjQ33mQem0cjdDVwgWVAmlRfgyQ==",
+            "version": "0.2.0-alpha.44",
+            "resolved": "https://registry.npmjs.org/infima/-/infima-0.2.0-alpha.44.tgz",
+            "integrity": "sha512-tuRkUSO/lB3rEhLJk25atwAjgLuzq070+pOW8XcvpHky/YbENnRRdPd85IBkyeTgttmOy5ah+yHYsK1HhUd4lQ==",
             "engines": {
                 "node": ">=12"
             }
@@ -9403,11 +8629,14 @@
             }
         },
         "node_modules/lilconfig": {
-            "version": "2.1.0",
-            "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz",
-            "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==",
+            "version": "3.1.2",
+            "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.2.tgz",
+            "integrity": "sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==",
             "engines": {
-                "node": ">=10"
+                "node": ">=14"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/antonk52"
             }
         },
         "node_modules/lines-and-columns": {
@@ -9455,11 +8684,6 @@
             "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
             "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
         },
-        "node_modules/lodash.curry": {
-            "version": "4.1.1",
-            "resolved": "https://registry.npmjs.org/lodash.curry/-/lodash.curry-4.1.1.tgz",
-            "integrity": "sha512-/u14pXGviLaweY5JI0IUzgzF2J6Ne8INyzAZjImcryjgkZ+ebruBxy2/JaOOkTqScddcYtakjhSaeemV8lR0tA=="
-        },
         "node_modules/lodash.debounce": {
             "version": "4.0.8",
             "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
@@ -9475,11 +8699,6 @@
             "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz",
             "integrity": "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g=="
         },
-        "node_modules/lodash.flow": {
-            "version": "3.5.0",
-            "resolved": "https://registry.npmjs.org/lodash.flow/-/lodash.flow-3.5.0.tgz",
-            "integrity": "sha512-ff3BX/tSioo+XojX4MOsOMhJw0nZoUEF011LX8g8d3gvjVbxd89cCio4BCXronjxcTUIJUoqKEUA+n4CqvvRPw=="
-        },
         "node_modules/lodash.invokemap": {
             "version": "4.6.0",
             "resolved": "https://registry.npmjs.org/lodash.invokemap/-/lodash.invokemap-4.6.0.tgz",
@@ -11678,11 +10897,11 @@
             ]
         },
         "node_modules/micromatch": {
-            "version": "4.0.5",
-            "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
-            "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
+            "version": "4.0.8",
+            "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
+            "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
             "dependencies": {
-                "braces": "^3.0.2",
+                "braces": "^3.0.3",
                 "picomatch": "^2.3.1"
             },
             "engines": {
@@ -11806,9 +11025,9 @@
             }
         },
         "node_modules/nanoid": {
-            "version": "3.3.6",
-            "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz",
-            "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==",
+            "version": "3.3.7",
+            "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz",
+            "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==",
             "funding": [
                 {
                     "type": "github",
@@ -11861,25 +11080,6 @@
                 "skin-tone": "^2.0.0"
             }
         },
-        "node_modules/node-fetch": {
-            "version": "2.7.0",
-            "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz",
-            "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==",
-            "dependencies": {
-                "whatwg-url": "^5.0.0"
-            },
-            "engines": {
-                "node": "4.x || >=6.0.0"
-            },
-            "peerDependencies": {
-                "encoding": "^0.1.0"
-            },
-            "peerDependenciesMeta": {
-                "encoding": {
-                    "optional": true
-                }
-            }
-        },
         "node_modules/node-forge": {
             "version": "1.3.1",
             "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz",
@@ -11889,9 +11089,9 @@
             }
         },
         "node_modules/node-releases": {
-            "version": "2.0.13",
-            "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz",
-            "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ=="
+            "version": "2.0.18",
+            "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz",
+            "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g=="
         },
         "node_modules/normalize-path": {
             "version": "3.0.0",
@@ -11909,17 +11109,6 @@
                 "node": ">=0.10.0"
             }
         },
-        "node_modules/normalize-url": {
-            "version": "6.1.0",
-            "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz",
-            "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==",
-            "engines": {
-                "node": ">=10"
-            },
-            "funding": {
-                "url": "https://github.com/sponsors/sindresorhus"
-            }
-        },
         "node_modules/npm-run-path": {
             "version": "4.0.1",
             "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
@@ -12330,9 +11519,9 @@
             }
         },
         "node_modules/picocolors": {
-            "version": "1.0.0",
-            "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
-            "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="
+            "version": "1.0.1",
+            "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz",
+            "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew=="
         },
         "node_modules/picomatch": {
             "version": "2.3.1",
@@ -12503,9 +11692,9 @@
             }
         },
         "node_modules/postcss": {
-            "version": "8.4.31",
-            "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz",
-            "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==",
+            "version": "8.4.42",
+            "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.42.tgz",
+            "integrity": "sha512-hywKUQB9Ra4dR1mGhldy5Aj1X3MWDSIA1cEi+Uy0CjheLvP6Ual5RlwMCh8i/X121yEDLDIKBsrCQ8ba3FDMfQ==",
             "funding": [
                 {
                     "type": "opencollective",
@@ -12521,114 +11710,117 @@
                 }
             ],
             "dependencies": {
-                "nanoid": "^3.3.6",
-                "picocolors": "^1.0.0",
-                "source-map-js": "^1.0.2"
+                "nanoid": "^3.3.7",
+                "picocolors": "^1.0.1",
+                "source-map-js": "^1.2.0"
             },
             "engines": {
                 "node": "^10 || ^12 || >=14"
             }
         },
         "node_modules/postcss-calc": {
-            "version": "8.2.4",
-            "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.2.4.tgz",
-            "integrity": "sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==",
+            "version": "9.0.1",
+            "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-9.0.1.tgz",
+            "integrity": "sha512-TipgjGyzP5QzEhsOZUaIkeO5mKeMFpebWzRogWG/ysonUlnHcq5aJe0jOjpfzUU8PeSaBQnrE8ehR0QA5vs8PQ==",
             "dependencies": {
-                "postcss-selector-parser": "^6.0.9",
+                "postcss-selector-parser": "^6.0.11",
                 "postcss-value-parser": "^4.2.0"
             },
+            "engines": {
+                "node": "^14 || ^16 || >=18.0"
+            },
             "peerDependencies": {
                 "postcss": "^8.2.2"
             }
         },
         "node_modules/postcss-colormin": {
-            "version": "5.3.1",
-            "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.3.1.tgz",
-            "integrity": "sha512-UsWQG0AqTFQmpBegeLLc1+c3jIqBNB0zlDGRWR+dQ3pRKJL1oeMzyqmH3o2PIfn9MBdNrVPWhDbT769LxCTLJQ==",
+            "version": "6.1.0",
+            "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-6.1.0.tgz",
+            "integrity": "sha512-x9yX7DOxeMAR+BgGVnNSAxmAj98NX/YxEMNFP+SDCEeNLb2r3i6Hh1ksMsnW8Ub5SLCpbescQqn9YEbE9554Sw==",
             "dependencies": {
-                "browserslist": "^4.21.4",
+                "browserslist": "^4.23.0",
                 "caniuse-api": "^3.0.0",
-                "colord": "^2.9.1",
+                "colord": "^2.9.3",
                 "postcss-value-parser": "^4.2.0"
             },
             "engines": {
-                "node": "^10 || ^12 || >=14.0"
+                "node": "^14 || ^16 || >=18.0"
             },
             "peerDependencies": {
-                "postcss": "^8.2.15"
+                "postcss": "^8.4.31"
             }
         },
         "node_modules/postcss-convert-values": {
-            "version": "5.1.3",
-            "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.1.3.tgz",
-            "integrity": "sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA==",
+            "version": "6.1.0",
+            "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-6.1.0.tgz",
+            "integrity": "sha512-zx8IwP/ts9WvUM6NkVSkiU902QZL1bwPhaVaLynPtCsOTqp+ZKbNi+s6XJg3rfqpKGA/oc7Oxk5t8pOQJcwl/w==",
             "dependencies": {
-                "browserslist": "^4.21.4",
+                "browserslist": "^4.23.0",
                 "postcss-value-parser": "^4.2.0"
             },
             "engines": {
-                "node": "^10 || ^12 || >=14.0"
+                "node": "^14 || ^16 || >=18.0"
             },
             "peerDependencies": {
-                "postcss": "^8.2.15"
+                "postcss": "^8.4.31"
             }
         },
         "node_modules/postcss-discard-comments": {
-            "version": "5.1.2",
-            "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz",
-            "integrity": "sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==",
+            "version": "6.0.2",
+            "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-6.0.2.tgz",
+            "integrity": "sha512-65w/uIqhSBBfQmYnG92FO1mWZjJ4GL5b8atm5Yw2UgrwD7HiNiSSNwJor1eCFGzUgYnN/iIknhNRVqjrrpuglw==",
             "engines": {
-                "node": "^10 || ^12 || >=14.0"
+                "node": "^14 || ^16 || >=18.0"
             },
             "peerDependencies": {
-                "postcss": "^8.2.15"
+                "postcss": "^8.4.31"
             }
         },
         "node_modules/postcss-discard-duplicates": {
-            "version": "5.1.0",
-            "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz",
-            "integrity": "sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==",
+            "version": "6.0.3",
+            "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-6.0.3.tgz",
+            "integrity": "sha512-+JA0DCvc5XvFAxwx6f/e68gQu/7Z9ud584VLmcgto28eB8FqSFZwtrLwB5Kcp70eIoWP/HXqz4wpo8rD8gpsTw==",
             "engines": {
-                "node": "^10 || ^12 || >=14.0"
+                "node": "^14 || ^16 || >=18.0"
             },
             "peerDependencies": {
-                "postcss": "^8.2.15"
+                "postcss": "^8.4.31"
             }
         },
         "node_modules/postcss-discard-empty": {
-            "version": "5.1.1",
-            "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz",
-            "integrity": "sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==",
+            "version": "6.0.3",
+            "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-6.0.3.tgz",
+            "integrity": "sha512-znyno9cHKQsK6PtxL5D19Fj9uwSzC2mB74cpT66fhgOadEUPyXFkbgwm5tvc3bt3NAy8ltE5MrghxovZRVnOjQ==",
             "engines": {
-                "node": "^10 || ^12 || >=14.0"
+                "node": "^14 || ^16 || >=18.0"
             },
             "peerDependencies": {
-                "postcss": "^8.2.15"
+                "postcss": "^8.4.31"
             }
         },
         "node_modules/postcss-discard-overridden": {
-            "version": "5.1.0",
-            "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz",
-            "integrity": "sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==",
+            "version": "6.0.2",
+            "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-6.0.2.tgz",
+            "integrity": "sha512-j87xzI4LUggC5zND7KdjsI25APtyMuynXZSujByMaav2roV6OZX+8AaCUcZSWqckZpjAjRyFDdpqybgjFO0HJQ==",
             "engines": {
-                "node": "^10 || ^12 || >=14.0"
+                "node": "^14 || ^16 || >=18.0"
             },
             "peerDependencies": {
-                "postcss": "^8.2.15"
+                "postcss": "^8.4.31"
             }
         },
         "node_modules/postcss-discard-unused": {
-            "version": "5.1.0",
-            "resolved": "https://registry.npmjs.org/postcss-discard-unused/-/postcss-discard-unused-5.1.0.tgz",
-            "integrity": "sha512-KwLWymI9hbwXmJa0dkrzpRbSJEh0vVUd7r8t0yOGPcfKzyJJxFM8kLyC5Ev9avji6nY95pOp1W6HqIrfT+0VGw==",
+            "version": "6.0.5",
+            "resolved": "https://registry.npmjs.org/postcss-discard-unused/-/postcss-discard-unused-6.0.5.tgz",
+            "integrity": "sha512-wHalBlRHkaNnNwfC8z+ppX57VhvS+HWgjW508esjdaEYr3Mx7Gnn2xA4R/CKf5+Z9S5qsqC+Uzh4ueENWwCVUA==",
             "dependencies": {
-                "postcss-selector-parser": "^6.0.5"
+                "postcss-selector-parser": "^6.0.16"
             },
             "engines": {
-                "node": "^10 || ^12 || >=14.0"
+                "node": "^14 || ^16 || >=18.0"
             },
             "peerDependencies": {
-                "postcss": "^8.2.15"
+                "postcss": "^8.4.31"
             }
         },
         "node_modules/postcss-loader": {
@@ -12653,110 +11845,110 @@
             }
         },
         "node_modules/postcss-merge-idents": {
-            "version": "5.1.1",
-            "resolved": "https://registry.npmjs.org/postcss-merge-idents/-/postcss-merge-idents-5.1.1.tgz",
-            "integrity": "sha512-pCijL1TREiCoog5nQp7wUe+TUonA2tC2sQ54UGeMmryK3UFGIYKqDyjnqd6RcuI4znFn9hWSLNN8xKE/vWcUQw==",
+            "version": "6.0.3",
+            "resolved": "https://registry.npmjs.org/postcss-merge-idents/-/postcss-merge-idents-6.0.3.tgz",
+            "integrity": "sha512-1oIoAsODUs6IHQZkLQGO15uGEbK3EAl5wi9SS8hs45VgsxQfMnxvt+L+zIr7ifZFIH14cfAeVe2uCTa+SPRa3g==",
             "dependencies": {
-                "cssnano-utils": "^3.1.0",
+                "cssnano-utils": "^4.0.2",
                 "postcss-value-parser": "^4.2.0"
             },
             "engines": {
-                "node": "^10 || ^12 || >=14.0"
+                "node": "^14 || ^16 || >=18.0"
             },
             "peerDependencies": {
-                "postcss": "^8.2.15"
+                "postcss": "^8.4.31"
             }
         },
         "node_modules/postcss-merge-longhand": {
-            "version": "5.1.7",
-            "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.7.tgz",
-            "integrity": "sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ==",
+            "version": "6.0.5",
+            "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-6.0.5.tgz",
+            "integrity": "sha512-5LOiordeTfi64QhICp07nzzuTDjNSO8g5Ksdibt44d+uvIIAE1oZdRn8y/W5ZtYgRH/lnLDlvi9F8btZcVzu3w==",
             "dependencies": {
                 "postcss-value-parser": "^4.2.0",
-                "stylehacks": "^5.1.1"
+                "stylehacks": "^6.1.1"
             },
             "engines": {
-                "node": "^10 || ^12 || >=14.0"
+                "node": "^14 || ^16 || >=18.0"
             },
             "peerDependencies": {
-                "postcss": "^8.2.15"
+                "postcss": "^8.4.31"
             }
         },
         "node_modules/postcss-merge-rules": {
-            "version": "5.1.4",
-            "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.4.tgz",
-            "integrity": "sha512-0R2IuYpgU93y9lhVbO/OylTtKMVcHb67zjWIfCiKR9rWL3GUk1677LAqD/BcHizukdZEjT8Ru3oHRoAYoJy44g==",
+            "version": "6.1.1",
+            "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-6.1.1.tgz",
+            "integrity": "sha512-KOdWF0gju31AQPZiD+2Ar9Qjowz1LTChSjFFbS+e2sFgc4uHOp3ZvVX4sNeTlk0w2O31ecFGgrFzhO0RSWbWwQ==",
             "dependencies": {
-                "browserslist": "^4.21.4",
+                "browserslist": "^4.23.0",
                 "caniuse-api": "^3.0.0",
-                "cssnano-utils": "^3.1.0",
-                "postcss-selector-parser": "^6.0.5"
+                "cssnano-utils": "^4.0.2",
+                "postcss-selector-parser": "^6.0.16"
             },
             "engines": {
-                "node": "^10 || ^12 || >=14.0"
+                "node": "^14 || ^16 || >=18.0"
             },
             "peerDependencies": {
-                "postcss": "^8.2.15"
+                "postcss": "^8.4.31"
             }
         },
         "node_modules/postcss-minify-font-values": {
-            "version": "5.1.0",
-            "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz",
-            "integrity": "sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==",
+            "version": "6.1.0",
+            "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-6.1.0.tgz",
+            "integrity": "sha512-gklfI/n+9rTh8nYaSJXlCo3nOKqMNkxuGpTn/Qm0gstL3ywTr9/WRKznE+oy6fvfolH6dF+QM4nCo8yPLdvGJg==",
             "dependencies": {
                 "postcss-value-parser": "^4.2.0"
             },
             "engines": {
-                "node": "^10 || ^12 || >=14.0"
+                "node": "^14 || ^16 || >=18.0"
             },
             "peerDependencies": {
-                "postcss": "^8.2.15"
+                "postcss": "^8.4.31"
             }
         },
         "node_modules/postcss-minify-gradients": {
-            "version": "5.1.1",
-            "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz",
-            "integrity": "sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==",
+            "version": "6.0.3",
+            "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-6.0.3.tgz",
+            "integrity": "sha512-4KXAHrYlzF0Rr7uc4VrfwDJ2ajrtNEpNEuLxFgwkhFZ56/7gaE4Nr49nLsQDZyUe+ds+kEhf+YAUolJiYXF8+Q==",
             "dependencies": {
-                "colord": "^2.9.1",
-                "cssnano-utils": "^3.1.0",
+                "colord": "^2.9.3",
+                "cssnano-utils": "^4.0.2",
                 "postcss-value-parser": "^4.2.0"
             },
             "engines": {
-                "node": "^10 || ^12 || >=14.0"
+                "node": "^14 || ^16 || >=18.0"
             },
             "peerDependencies": {
-                "postcss": "^8.2.15"
+                "postcss": "^8.4.31"
             }
         },
         "node_modules/postcss-minify-params": {
-            "version": "5.1.4",
-            "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.1.4.tgz",
-            "integrity": "sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw==",
+            "version": "6.1.0",
+            "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-6.1.0.tgz",
+            "integrity": "sha512-bmSKnDtyyE8ujHQK0RQJDIKhQ20Jq1LYiez54WiaOoBtcSuflfK3Nm596LvbtlFcpipMjgClQGyGr7GAs+H1uA==",
             "dependencies": {
-                "browserslist": "^4.21.4",
-                "cssnano-utils": "^3.1.0",
+                "browserslist": "^4.23.0",
+                "cssnano-utils": "^4.0.2",
                 "postcss-value-parser": "^4.2.0"
             },
             "engines": {
-                "node": "^10 || ^12 || >=14.0"
+                "node": "^14 || ^16 || >=18.0"
             },
             "peerDependencies": {
-                "postcss": "^8.2.15"
+                "postcss": "^8.4.31"
             }
         },
         "node_modules/postcss-minify-selectors": {
-            "version": "5.2.1",
-            "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.2.1.tgz",
-            "integrity": "sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==",
+            "version": "6.0.4",
+            "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-6.0.4.tgz",
+            "integrity": "sha512-L8dZSwNLgK7pjTto9PzWRoMbnLq5vsZSTu8+j1P/2GB8qdtGQfn+K1uSvFgYvgh83cbyxT5m43ZZhUMTJDSClQ==",
             "dependencies": {
-                "postcss-selector-parser": "^6.0.5"
+                "postcss-selector-parser": "^6.0.16"
             },
             "engines": {
-                "node": "^10 || ^12 || >=14.0"
+                "node": "^14 || ^16 || >=18.0"
             },
             "peerDependencies": {
-                "postcss": "^8.2.15"
+                "postcss": "^8.4.31"
             }
         },
         "node_modules/postcss-modules-extract-imports": {
@@ -12815,368 +12007,240 @@
             }
         },
         "node_modules/postcss-normalize-charset": {
-            "version": "5.1.0",
-            "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz",
-            "integrity": "sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==",
+            "version": "6.0.2",
+            "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-6.0.2.tgz",
+            "integrity": "sha512-a8N9czmdnrjPHa3DeFlwqst5eaL5W8jYu3EBbTTkI5FHkfMhFZh1EGbku6jhHhIzTA6tquI2P42NtZ59M/H/kQ==",
             "engines": {
-                "node": "^10 || ^12 || >=14.0"
+                "node": "^14 || ^16 || >=18.0"
             },
             "peerDependencies": {
-                "postcss": "^8.2.15"
+                "postcss": "^8.4.31"
             }
         },
         "node_modules/postcss-normalize-display-values": {
-            "version": "5.1.0",
-            "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz",
-            "integrity": "sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==",
+            "version": "6.0.2",
+            "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-6.0.2.tgz",
+            "integrity": "sha512-8H04Mxsb82ON/aAkPeq8kcBbAtI5Q2a64X/mnRRfPXBq7XeogoQvReqxEfc0B4WPq1KimjezNC8flUtC3Qz6jg==",
             "dependencies": {
                 "postcss-value-parser": "^4.2.0"
             },
             "engines": {
-                "node": "^10 || ^12 || >=14.0"
+                "node": "^14 || ^16 || >=18.0"
             },
             "peerDependencies": {
-                "postcss": "^8.2.15"
+                "postcss": "^8.4.31"
             }
         },
         "node_modules/postcss-normalize-positions": {
-            "version": "5.1.1",
-            "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.1.1.tgz",
-            "integrity": "sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==",
+            "version": "6.0.2",
+            "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-6.0.2.tgz",
+            "integrity": "sha512-/JFzI441OAB9O7VnLA+RtSNZvQ0NCFZDOtp6QPFo1iIyawyXg0YI3CYM9HBy1WvwCRHnPep/BvI1+dGPKoXx/Q==",
             "dependencies": {
                 "postcss-value-parser": "^4.2.0"
             },
             "engines": {
-                "node": "^10 || ^12 || >=14.0"
+                "node": "^14 || ^16 || >=18.0"
             },
             "peerDependencies": {
-                "postcss": "^8.2.15"
+                "postcss": "^8.4.31"
             }
         },
         "node_modules/postcss-normalize-repeat-style": {
-            "version": "5.1.1",
-            "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.1.tgz",
-            "integrity": "sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g==",
+            "version": "6.0.2",
+            "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-6.0.2.tgz",
+            "integrity": "sha512-YdCgsfHkJ2jEXwR4RR3Tm/iOxSfdRt7jplS6XRh9Js9PyCR/aka/FCb6TuHT2U8gQubbm/mPmF6L7FY9d79VwQ==",
             "dependencies": {
                 "postcss-value-parser": "^4.2.0"
             },
             "engines": {
-                "node": "^10 || ^12 || >=14.0"
+                "node": "^14 || ^16 || >=18.0"
             },
             "peerDependencies": {
-                "postcss": "^8.2.15"
+                "postcss": "^8.4.31"
             }
         },
         "node_modules/postcss-normalize-string": {
-            "version": "5.1.0",
-            "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz",
-            "integrity": "sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==",
+            "version": "6.0.2",
+            "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-6.0.2.tgz",
+            "integrity": "sha512-vQZIivlxlfqqMp4L9PZsFE4YUkWniziKjQWUtsxUiVsSSPelQydwS8Wwcuw0+83ZjPWNTl02oxlIvXsmmG+CiQ==",
             "dependencies": {
                 "postcss-value-parser": "^4.2.0"
             },
             "engines": {
-                "node": "^10 || ^12 || >=14.0"
+                "node": "^14 || ^16 || >=18.0"
             },
             "peerDependencies": {
-                "postcss": "^8.2.15"
+                "postcss": "^8.4.31"
             }
         },
         "node_modules/postcss-normalize-timing-functions": {
-            "version": "5.1.0",
-            "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz",
-            "integrity": "sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==",
+            "version": "6.0.2",
+            "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-6.0.2.tgz",
+            "integrity": "sha512-a+YrtMox4TBtId/AEwbA03VcJgtyW4dGBizPl7e88cTFULYsprgHWTbfyjSLyHeBcK/Q9JhXkt2ZXiwaVHoMzA==",
             "dependencies": {
                 "postcss-value-parser": "^4.2.0"
             },
             "engines": {
-                "node": "^10 || ^12 || >=14.0"
+                "node": "^14 || ^16 || >=18.0"
             },
             "peerDependencies": {
-                "postcss": "^8.2.15"
+                "postcss": "^8.4.31"
             }
         },
         "node_modules/postcss-normalize-unicode": {
-            "version": "5.1.1",
-            "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.1.tgz",
-            "integrity": "sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA==",
+            "version": "6.1.0",
+            "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-6.1.0.tgz",
+            "integrity": "sha512-QVC5TQHsVj33otj8/JD869Ndr5Xcc/+fwRh4HAsFsAeygQQXm+0PySrKbr/8tkDKzW+EVT3QkqZMfFrGiossDg==",
             "dependencies": {
-                "browserslist": "^4.21.4",
+                "browserslist": "^4.23.0",
                 "postcss-value-parser": "^4.2.0"
             },
             "engines": {
-                "node": "^10 || ^12 || >=14.0"
+                "node": "^14 || ^16 || >=18.0"
             },
             "peerDependencies": {
-                "postcss": "^8.2.15"
+                "postcss": "^8.4.31"
             }
         },
         "node_modules/postcss-normalize-url": {
-            "version": "5.1.0",
-            "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz",
-            "integrity": "sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==",
-            "dependencies": {
-                "normalize-url": "^6.0.1",
-                "postcss-value-parser": "^4.2.0"
-            },
-            "engines": {
-                "node": "^10 || ^12 || >=14.0"
-            },
-            "peerDependencies": {
-                "postcss": "^8.2.15"
-            }
-        },
-        "node_modules/postcss-normalize-whitespace": {
-            "version": "5.1.1",
-            "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz",
-            "integrity": "sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==",
-            "dependencies": {
-                "postcss-value-parser": "^4.2.0"
-            },
-            "engines": {
-                "node": "^10 || ^12 || >=14.0"
-            },
-            "peerDependencies": {
-                "postcss": "^8.2.15"
-            }
-        },
-        "node_modules/postcss-ordered-values": {
-            "version": "5.1.3",
-            "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.1.3.tgz",
-            "integrity": "sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==",
-            "dependencies": {
-                "cssnano-utils": "^3.1.0",
-                "postcss-value-parser": "^4.2.0"
-            },
-            "engines": {
-                "node": "^10 || ^12 || >=14.0"
-            },
-            "peerDependencies": {
-                "postcss": "^8.2.15"
-            }
-        },
-        "node_modules/postcss-reduce-idents": {
-            "version": "5.2.0",
-            "resolved": "https://registry.npmjs.org/postcss-reduce-idents/-/postcss-reduce-idents-5.2.0.tgz",
-            "integrity": "sha512-BTrLjICoSB6gxbc58D5mdBK8OhXRDqud/zodYfdSi52qvDHdMwk+9kB9xsM8yJThH/sZU5A6QVSmMmaN001gIg==",
-            "dependencies": {
-                "postcss-value-parser": "^4.2.0"
-            },
-            "engines": {
-                "node": "^10 || ^12 || >=14.0"
-            },
-            "peerDependencies": {
-                "postcss": "^8.2.15"
-            }
-        },
-        "node_modules/postcss-reduce-initial": {
-            "version": "5.1.2",
-            "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.2.tgz",
-            "integrity": "sha512-dE/y2XRaqAi6OvjzD22pjTUQ8eOfc6m/natGHgKFBK9DxFmIm69YmaRVQrGgFlEfc1HePIurY0TmDeROK05rIg==",
-            "dependencies": {
-                "browserslist": "^4.21.4",
-                "caniuse-api": "^3.0.0"
-            },
-            "engines": {
-                "node": "^10 || ^12 || >=14.0"
-            },
-            "peerDependencies": {
-                "postcss": "^8.2.15"
-            }
-        },
-        "node_modules/postcss-reduce-transforms": {
-            "version": "5.1.0",
-            "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz",
-            "integrity": "sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==",
+            "version": "6.0.2",
+            "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-6.0.2.tgz",
+            "integrity": "sha512-kVNcWhCeKAzZ8B4pv/DnrU1wNh458zBNp8dh4y5hhxih5RZQ12QWMuQrDgPRw3LRl8mN9vOVfHl7uhvHYMoXsQ==",
             "dependencies": {
                 "postcss-value-parser": "^4.2.0"
             },
             "engines": {
-                "node": "^10 || ^12 || >=14.0"
-            },
-            "peerDependencies": {
-                "postcss": "^8.2.15"
-            }
-        },
-        "node_modules/postcss-selector-parser": {
-            "version": "6.0.13",
-            "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz",
-            "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==",
-            "dependencies": {
-                "cssesc": "^3.0.0",
-                "util-deprecate": "^1.0.2"
-            },
-            "engines": {
-                "node": ">=4"
-            }
-        },
-        "node_modules/postcss-sort-media-queries": {
-            "version": "4.4.1",
-            "resolved": "https://registry.npmjs.org/postcss-sort-media-queries/-/postcss-sort-media-queries-4.4.1.tgz",
-            "integrity": "sha512-QDESFzDDGKgpiIh4GYXsSy6sek2yAwQx1JASl5AxBtU1Lq2JfKBljIPNdil989NcSKRQX1ToiaKphImtBuhXWw==",
-            "dependencies": {
-                "sort-css-media-queries": "2.1.0"
-            },
-            "engines": {
-                "node": ">=10.0.0"
-            },
-            "peerDependencies": {
-                "postcss": "^8.4.16"
-            }
-        },
-        "node_modules/postcss-svgo": {
-            "version": "5.1.0",
-            "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.1.0.tgz",
-            "integrity": "sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==",
-            "dependencies": {
-                "postcss-value-parser": "^4.2.0",
-                "svgo": "^2.7.0"
-            },
-            "engines": {
-                "node": "^10 || ^12 || >=14.0"
-            },
-            "peerDependencies": {
-                "postcss": "^8.2.15"
-            }
-        },
-        "node_modules/postcss-svgo/node_modules/commander": {
-            "version": "7.2.0",
-            "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz",
-            "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==",
-            "engines": {
-                "node": ">= 10"
+                "node": "^14 || ^16 || >=18.0"
+            },
+            "peerDependencies": {
+                "postcss": "^8.4.31"
             }
         },
-        "node_modules/postcss-svgo/node_modules/css-select": {
-            "version": "4.3.0",
-            "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz",
-            "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==",
+        "node_modules/postcss-normalize-whitespace": {
+            "version": "6.0.2",
+            "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-6.0.2.tgz",
+            "integrity": "sha512-sXZ2Nj1icbJOKmdjXVT9pnyHQKiSAyuNQHSgRCUgThn2388Y9cGVDR+E9J9iAYbSbLHI+UUwLVl1Wzco/zgv0Q==",
             "dependencies": {
-                "boolbase": "^1.0.0",
-                "css-what": "^6.0.1",
-                "domhandler": "^4.3.1",
-                "domutils": "^2.8.0",
-                "nth-check": "^2.0.1"
+                "postcss-value-parser": "^4.2.0"
             },
-            "funding": {
-                "url": "https://github.com/sponsors/fb55"
+            "engines": {
+                "node": "^14 || ^16 || >=18.0"
+            },
+            "peerDependencies": {
+                "postcss": "^8.4.31"
             }
         },
-        "node_modules/postcss-svgo/node_modules/css-tree": {
-            "version": "1.1.3",
-            "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz",
-            "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==",
+        "node_modules/postcss-ordered-values": {
+            "version": "6.0.2",
+            "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-6.0.2.tgz",
+            "integrity": "sha512-VRZSOB+JU32RsEAQrO94QPkClGPKJEL/Z9PCBImXMhIeK5KAYo6slP/hBYlLgrCjFxyqvn5VC81tycFEDBLG1Q==",
             "dependencies": {
-                "mdn-data": "2.0.14",
-                "source-map": "^0.6.1"
+                "cssnano-utils": "^4.0.2",
+                "postcss-value-parser": "^4.2.0"
             },
             "engines": {
-                "node": ">=8.0.0"
+                "node": "^14 || ^16 || >=18.0"
+            },
+            "peerDependencies": {
+                "postcss": "^8.4.31"
             }
         },
-        "node_modules/postcss-svgo/node_modules/csso": {
-            "version": "4.2.0",
-            "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz",
-            "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==",
+        "node_modules/postcss-reduce-idents": {
+            "version": "6.0.3",
+            "resolved": "https://registry.npmjs.org/postcss-reduce-idents/-/postcss-reduce-idents-6.0.3.tgz",
+            "integrity": "sha512-G3yCqZDpsNPoQgbDUy3T0E6hqOQ5xigUtBQyrmq3tn2GxlyiL0yyl7H+T8ulQR6kOcHJ9t7/9H4/R2tv8tJbMA==",
             "dependencies": {
-                "css-tree": "^1.1.2"
+                "postcss-value-parser": "^4.2.0"
             },
             "engines": {
-                "node": ">=8.0.0"
+                "node": "^14 || ^16 || >=18.0"
+            },
+            "peerDependencies": {
+                "postcss": "^8.4.31"
             }
         },
-        "node_modules/postcss-svgo/node_modules/dom-serializer": {
-            "version": "1.4.1",
-            "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz",
-            "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==",
+        "node_modules/postcss-reduce-initial": {
+            "version": "6.1.0",
+            "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-6.1.0.tgz",
+            "integrity": "sha512-RarLgBK/CrL1qZags04oKbVbrrVK2wcxhvta3GCxrZO4zveibqbRPmm2VI8sSgCXwoUHEliRSbOfpR0b/VIoiw==",
             "dependencies": {
-                "domelementtype": "^2.0.1",
-                "domhandler": "^4.2.0",
-                "entities": "^2.0.0"
+                "browserslist": "^4.23.0",
+                "caniuse-api": "^3.0.0"
             },
-            "funding": {
-                "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"
+            "engines": {
+                "node": "^14 || ^16 || >=18.0"
+            },
+            "peerDependencies": {
+                "postcss": "^8.4.31"
             }
         },
-        "node_modules/postcss-svgo/node_modules/domhandler": {
-            "version": "4.3.1",
-            "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz",
-            "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==",
+        "node_modules/postcss-reduce-transforms": {
+            "version": "6.0.2",
+            "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-6.0.2.tgz",
+            "integrity": "sha512-sB+Ya++3Xj1WaT9+5LOOdirAxP7dJZms3GRcYheSPi1PiTMigsxHAdkrbItHxwYHr4kt1zL7mmcHstgMYT+aiA==",
             "dependencies": {
-                "domelementtype": "^2.2.0"
+                "postcss-value-parser": "^4.2.0"
             },
             "engines": {
-                "node": ">= 4"
+                "node": "^14 || ^16 || >=18.0"
             },
-            "funding": {
-                "url": "https://github.com/fb55/domhandler?sponsor=1"
+            "peerDependencies": {
+                "postcss": "^8.4.31"
             }
         },
-        "node_modules/postcss-svgo/node_modules/domutils": {
-            "version": "2.8.0",
-            "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz",
-            "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==",
+        "node_modules/postcss-selector-parser": {
+            "version": "6.1.2",
+            "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz",
+            "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==",
             "dependencies": {
-                "dom-serializer": "^1.0.1",
-                "domelementtype": "^2.2.0",
-                "domhandler": "^4.2.0"
+                "cssesc": "^3.0.0",
+                "util-deprecate": "^1.0.2"
             },
-            "funding": {
-                "url": "https://github.com/fb55/domutils?sponsor=1"
-            }
-        },
-        "node_modules/postcss-svgo/node_modules/entities": {
-            "version": "2.2.0",
-            "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz",
-            "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==",
-            "funding": {
-                "url": "https://github.com/fb55/entities?sponsor=1"
+            "engines": {
+                "node": ">=4"
             }
         },
-        "node_modules/postcss-svgo/node_modules/mdn-data": {
-            "version": "2.0.14",
-            "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz",
-            "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow=="
-        },
-        "node_modules/postcss-svgo/node_modules/source-map": {
-            "version": "0.6.1",
-            "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-            "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+        "node_modules/postcss-sort-media-queries": {
+            "version": "5.2.0",
+            "resolved": "https://registry.npmjs.org/postcss-sort-media-queries/-/postcss-sort-media-queries-5.2.0.tgz",
+            "integrity": "sha512-AZ5fDMLD8SldlAYlvi8NIqo0+Z8xnXU2ia0jxmuhxAU+Lqt9K+AlmLNJ/zWEnE9x+Zx3qL3+1K20ATgNOr3fAA==",
+            "dependencies": {
+                "sort-css-media-queries": "2.2.0"
+            },
             "engines": {
-                "node": ">=0.10.0"
+                "node": ">=14.0.0"
+            },
+            "peerDependencies": {
+                "postcss": "^8.4.23"
             }
         },
-        "node_modules/postcss-svgo/node_modules/svgo": {
-            "version": "2.8.0",
-            "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz",
-            "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==",
+        "node_modules/postcss-svgo": {
+            "version": "6.0.3",
+            "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-6.0.3.tgz",
+            "integrity": "sha512-dlrahRmxP22bX6iKEjOM+c8/1p+81asjKT+V5lrgOH944ryx/OHpclnIbGsKVd3uWOXFLYJwCVf0eEkJGvO96g==",
             "dependencies": {
-                "@trysound/sax": "0.2.0",
-                "commander": "^7.2.0",
-                "css-select": "^4.1.3",
-                "css-tree": "^1.1.3",
-                "csso": "^4.2.0",
-                "picocolors": "^1.0.0",
-                "stable": "^0.1.8"
-            },
-            "bin": {
-                "svgo": "bin/svgo"
+                "postcss-value-parser": "^4.2.0",
+                "svgo": "^3.2.0"
             },
             "engines": {
-                "node": ">=10.13.0"
+                "node": "^14 || ^16 || >= 18"
+            },
+            "peerDependencies": {
+                "postcss": "^8.4.31"
             }
         },
         "node_modules/postcss-unique-selectors": {
-            "version": "5.1.1",
-            "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz",
-            "integrity": "sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==",
+            "version": "6.0.4",
+            "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-6.0.4.tgz",
+            "integrity": "sha512-K38OCaIrO8+PzpArzkLKB42dSARtC2tmG6PvD4b1o1Q2E9Os8jzfWFfSy/rixsHwohtsDdFtAWGjFVFUdwYaMg==",
             "dependencies": {
-                "postcss-selector-parser": "^6.0.5"
+                "postcss-selector-parser": "^6.0.16"
             },
             "engines": {
-                "node": "^10 || ^12 || >=14.0"
+                "node": "^14 || ^16 || >=18.0"
             },
             "peerDependencies": {
-                "postcss": "^8.2.15"
+                "postcss": "^8.4.31"
             }
         },
         "node_modules/postcss-value-parser": {
@@ -13185,14 +12249,14 @@
             "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ=="
         },
         "node_modules/postcss-zindex": {
-            "version": "5.1.0",
-            "resolved": "https://registry.npmjs.org/postcss-zindex/-/postcss-zindex-5.1.0.tgz",
-            "integrity": "sha512-fgFMf0OtVSBR1va1JNHYgMxYk73yhn/qb4uQDq1DLGYolz8gHCyr/sesEuGUaYs58E3ZJRcpoGuPVoB7Meiq9A==",
+            "version": "6.0.2",
+            "resolved": "https://registry.npmjs.org/postcss-zindex/-/postcss-zindex-6.0.2.tgz",
+            "integrity": "sha512-5BxW9l1evPB/4ZIc+2GobEBoKC+h8gPGCMi+jxsYvd2x0mjq7wazk6DrP71pStqxE9Foxh5TVnonbWpFZzXaYg==",
             "engines": {
-                "node": "^10 || ^12 || >=14.0"
+                "node": "^14 || ^16 || >=18.0"
             },
             "peerDependencies": {
-                "postcss": "^8.2.15"
+                "postcss": "^8.4.31"
             }
         },
         "node_modules/prelude-ls": {
@@ -13206,9 +12270,9 @@
             }
         },
         "node_modules/prettier": {
-            "version": "3.0.3",
-            "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.0.3.tgz",
-            "integrity": "sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==",
+            "version": "3.3.3",
+            "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz",
+            "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==",
             "dev": true,
             "bin": {
                 "prettier": "bin/prettier.cjs"
@@ -13238,25 +12302,17 @@
             }
         },
         "node_modules/prism-react-renderer": {
-            "version": "2.1.0",
-            "resolved": "https://registry.npmjs.org/prism-react-renderer/-/prism-react-renderer-2.1.0.tgz",
-            "integrity": "sha512-I5cvXHjA1PVGbGm1MsWCpvBCRrYyxEri0MC7/JbfIfYfcXAxHyO5PaUjs3A8H5GW6kJcLhTHxxMaOZZpRZD2iQ==",
+            "version": "2.4.0",
+            "resolved": "https://registry.npmjs.org/prism-react-renderer/-/prism-react-renderer-2.4.0.tgz",
+            "integrity": "sha512-327BsVCD/unU4CNLZTWVHyUHKnsqcvj2qbPlQ8MiBE2eq2rgctjigPA1Gp9HLF83kZ20zNN6jgizHJeEsyFYOw==",
             "dependencies": {
                 "@types/prismjs": "^1.26.0",
-                "clsx": "^1.2.1"
+                "clsx": "^2.0.0"
             },
             "peerDependencies": {
                 "react": ">=16.0.0"
             }
         },
-        "node_modules/prism-react-renderer/node_modules/clsx": {
-            "version": "1.2.1",
-            "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz",
-            "integrity": "sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==",
-            "engines": {
-                "node": ">=6"
-            }
-        },
         "node_modules/prismjs": {
             "version": "1.29.0",
             "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz",
@@ -13270,14 +12326,6 @@
             "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
             "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
         },
-        "node_modules/promise": {
-            "version": "7.3.1",
-            "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz",
-            "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==",
-            "dependencies": {
-                "asap": "~2.0.3"
-            }
-        },
         "node_modules/prompts": {
             "version": "2.4.2",
             "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz",
@@ -13353,11 +12401,6 @@
                 "url": "https://github.com/sponsors/sindresorhus"
             }
         },
-        "node_modules/pure-color": {
-            "version": "1.3.0",
-            "resolved": "https://registry.npmjs.org/pure-color/-/pure-color-1.3.0.tgz",
-            "integrity": "sha512-QFADYnsVoBMw1srW7OVKEYjG+MbIa49s54w1MA1EDY6r2r/sTcKKYqRX1f4GYvnXP7eN/Pe9HFcX+hwzmrXRHA=="
-        },
         "node_modules/qs": {
             "version": "6.11.0",
             "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz",
@@ -13427,9 +12470,9 @@
             }
         },
         "node_modules/raw-body": {
-            "version": "2.5.1",
-            "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz",
-            "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==",
+            "version": "2.5.2",
+            "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz",
+            "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==",
             "dependencies": {
                 "bytes": "3.1.2",
                 "http-errors": "2.0.0",
@@ -13471,9 +12514,9 @@
             }
         },
         "node_modules/react": {
-            "version": "18.2.0",
-            "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz",
-            "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==",
+            "version": "18.3.1",
+            "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz",
+            "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==",
             "dependencies": {
                 "loose-envify": "^1.1.0"
             },
@@ -13481,17 +12524,6 @@
                 "node": ">=0.10.0"
             }
         },
-        "node_modules/react-base16-styling": {
-            "version": "0.6.0",
-            "resolved": "https://registry.npmjs.org/react-base16-styling/-/react-base16-styling-0.6.0.tgz",
-            "integrity": "sha512-yvh/7CArceR/jNATXOKDlvTnPKPmGZz7zsenQ3jUwLzHkNUR0CvY3yGYJbWJ/nnxsL8Sgmt5cO3/SILVuPO6TQ==",
-            "dependencies": {
-                "base16": "^1.0.0",
-                "lodash.curry": "^4.0.1",
-                "lodash.flow": "^3.3.0",
-                "pure-color": "^1.2.0"
-            }
-        },
         "node_modules/react-dev-utils": {
             "version": "12.0.1",
             "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-12.0.1.tgz",
@@ -13535,15 +12567,15 @@
             }
         },
         "node_modules/react-dom": {
-            "version": "18.2.0",
-            "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz",
-            "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==",
+            "version": "18.3.1",
+            "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz",
+            "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==",
             "dependencies": {
                 "loose-envify": "^1.1.0",
-                "scheduler": "^0.23.0"
+                "scheduler": "^0.23.2"
             },
             "peerDependencies": {
-                "react": "^18.2.0"
+                "react": "^18.3.1"
             }
         },
         "node_modules/react-error-overlay": {
@@ -13577,19 +12609,24 @@
             "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
             "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
         },
-        "node_modules/react-lifecycles-compat": {
-            "version": "3.0.4",
-            "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz",
-            "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA=="
+        "node_modules/react-json-view-lite": {
+            "version": "1.4.0",
+            "resolved": "https://registry.npmjs.org/react-json-view-lite/-/react-json-view-lite-1.4.0.tgz",
+            "integrity": "sha512-wh6F6uJyYAmQ4fK0e8dSQMEWuvTs2Wr3el3sLD9bambX1+pSWUVXIz1RFaoy3TI1mZ0FqdpKq9YgbgTTgyrmXA==",
+            "engines": {
+                "node": ">=14"
+            },
+            "peerDependencies": {
+                "react": "^16.13.1 || ^17.0.0 || ^18.0.0"
+            }
         },
         "node_modules/react-loadable": {
             "name": "@docusaurus/react-loadable",
-            "version": "5.5.2",
-            "resolved": "https://registry.npmjs.org/@docusaurus/react-loadable/-/react-loadable-5.5.2.tgz",
-            "integrity": "sha512-A3dYjdBGuy0IGT+wyLIGIKLRE+sAk1iNk0f1HjNDysO7u8lhL4N3VEm+FAubmJbAztn94F7MxBTPmnixbiyFdQ==",
+            "version": "6.0.0",
+            "resolved": "https://registry.npmjs.org/@docusaurus/react-loadable/-/react-loadable-6.0.0.tgz",
+            "integrity": "sha512-YMMxTUQV/QFSnbgrP3tjDzLHRg7vsbMn8e9HAa8o/1iXoiomo48b7sk/kkmWEuWNDPJVlKSJRB6Y2fHqdJk+SQ==",
             "dependencies": {
-                "@types/react": "*",
-                "prop-types": "^15.6.2"
+                "@types/react": "*"
             },
             "peerDependencies": {
                 "react": "*"
@@ -13658,22 +12695,6 @@
                 "react": ">=15"
             }
         },
-        "node_modules/react-textarea-autosize": {
-            "version": "8.3.4",
-            "resolved": "https://registry.npmjs.org/react-textarea-autosize/-/react-textarea-autosize-8.3.4.tgz",
-            "integrity": "sha512-CdtmP8Dc19xL8/R6sWvtknD/eCXkQr30dtvC4VmGInhRsfF8X/ihXCq6+9l9qbxmKRiq407/7z5fxE7cVWQNgQ==",
-            "dependencies": {
-                "@babel/runtime": "^7.10.2",
-                "use-composed-ref": "^1.3.0",
-                "use-latest": "^1.2.1"
-            },
-            "engines": {
-                "node": ">=10"
-            },
-            "peerDependencies": {
-                "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
-            }
-        },
         "node_modules/readable-stream": {
             "version": "3.6.2",
             "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
@@ -14155,9 +13176,9 @@
             "integrity": "sha512-PGMBq03+TTG/p/cRB7HCLKJ1MgDIi07+QU1faSjiYRfmY5UsAttV9Hs08jDAHVwcOwmVLcSJkpwyfXszVjWfIQ=="
         },
         "node_modules/rtlcss": {
-            "version": "4.1.1",
-            "resolved": "https://registry.npmjs.org/rtlcss/-/rtlcss-4.1.1.tgz",
-            "integrity": "sha512-/oVHgBtnPNcggP2aVXQjSy6N1mMAfHg4GSag0QtZBlD5bdDgAHwr4pydqJGd+SUCu9260+Pjqbjwtvu7EMH1KQ==",
+            "version": "4.3.0",
+            "resolved": "https://registry.npmjs.org/rtlcss/-/rtlcss-4.3.0.tgz",
+            "integrity": "sha512-FI+pHEn7Wc4NqKXMXFM+VAYKEj/mRIcW4h24YVwVtyjI+EqGrLc2Hx/Ny0lrZ21cBWU2goLy36eqMcNj3AQJig==",
             "dependencies": {
                 "escalade": "^3.1.1",
                 "picocolors": "^1.0.0",
@@ -14193,14 +13214,6 @@
                 "queue-microtask": "^1.2.2"
             }
         },
-        "node_modules/rxjs": {
-            "version": "7.8.1",
-            "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz",
-            "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==",
-            "dependencies": {
-                "tslib": "^2.1.0"
-            }
-        },
         "node_modules/safe-buffer": {
             "version": "5.2.1",
             "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
@@ -14226,9 +13239,9 @@
             "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
         },
         "node_modules/sass": {
-            "version": "1.69.5",
-            "resolved": "https://registry.npmjs.org/sass/-/sass-1.69.5.tgz",
-            "integrity": "sha512-qg2+UCJibLr2LCVOt3OlPhr/dqVHWOa9XtZf2OjbLs/T4VPSJ00udtgJxH3neXZm+QqX8B+3cU7RaLqp1iVfcQ==",
+            "version": "1.77.8",
+            "resolved": "https://registry.npmjs.org/sass/-/sass-1.77.8.tgz",
+            "integrity": "sha512-4UHg6prsrycW20fqLGPShtEvo/WyHRVRHwOP4DzkUrObWoWI05QBSfzU71TVB7PFaL104TwNaHpjlWXAZbQiNQ==",
             "dependencies": {
                 "chokidar": ">=3.0.0 <4.0.0",
                 "immutable": "^4.0.0",
@@ -14295,14 +13308,14 @@
             }
         },
         "node_modules/sax": {
-            "version": "1.3.0",
-            "resolved": "https://registry.npmjs.org/sax/-/sax-1.3.0.tgz",
-            "integrity": "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA=="
+            "version": "1.4.1",
+            "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz",
+            "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg=="
         },
         "node_modules/scheduler": {
-            "version": "0.23.0",
-            "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz",
-            "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==",
+            "version": "0.23.2",
+            "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz",
+            "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==",
             "dependencies": {
                 "loose-envify": "^1.1.0"
             }
@@ -14357,9 +13370,9 @@
             "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="
         },
         "node_modules/search-insights": {
-            "version": "2.9.0",
-            "resolved": "https://registry.npmjs.org/search-insights/-/search-insights-2.9.0.tgz",
-            "integrity": "sha512-bkWW9nIHOFkLwjQ1xqVaMbjjO5vhP26ERsH9Y3pKr8imthofEFIxlnOabkmGcw6ksRj9jWidcI65vvjJH/nTGg==",
+            "version": "2.17.0",
+            "resolved": "https://registry.npmjs.org/search-insights/-/search-insights-2.17.0.tgz",
+            "integrity": "sha512-AskayU3QNsXQzSL6v4LTYST7NNfs2HWyHHB+sdORP9chsytAhro5XRfToAMI/LAVYgNbzowVZTMfBRodgbUHKg==",
             "peer": true
         },
         "node_modules/section-matter": {
@@ -14392,12 +13405,9 @@
             }
         },
         "node_modules/semver": {
-            "version": "7.5.4",
-            "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
-            "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
-            "dependencies": {
-                "lru-cache": "^6.0.0"
-            },
+            "version": "7.6.3",
+            "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
+            "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
             "bin": {
                 "semver": "bin/semver.js"
             },
@@ -14419,22 +13429,6 @@
                 "url": "https://github.com/sponsors/sindresorhus"
             }
         },
-        "node_modules/semver/node_modules/lru-cache": {
-            "version": "6.0.0",
-            "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
-            "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
-            "dependencies": {
-                "yallist": "^4.0.0"
-            },
-            "engines": {
-                "node": ">=10"
-            }
-        },
-        "node_modules/semver/node_modules/yallist": {
-            "version": "4.0.0",
-            "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
-            "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
-        },
         "node_modules/send": {
             "version": "0.18.0",
             "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz",
@@ -14597,24 +13591,21 @@
             }
         },
         "node_modules/set-function-length": {
-            "version": "1.1.1",
-            "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz",
-            "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==",
+            "version": "1.2.2",
+            "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz",
+            "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==",
             "dependencies": {
-                "define-data-property": "^1.1.1",
-                "get-intrinsic": "^1.2.1",
+                "define-data-property": "^1.1.4",
+                "es-errors": "^1.3.0",
+                "function-bind": "^1.1.2",
+                "get-intrinsic": "^1.2.4",
                 "gopd": "^1.0.1",
-                "has-property-descriptors": "^1.0.0"
+                "has-property-descriptors": "^1.0.2"
             },
             "engines": {
                 "node": ">= 0.4"
             }
         },
-        "node_modules/setimmediate": {
-            "version": "1.0.5",
-            "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz",
-            "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA=="
-        },
         "node_modules/setprototypeof": {
             "version": "1.2.0",
             "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
@@ -14680,13 +13671,17 @@
             }
         },
         "node_modules/side-channel": {
-            "version": "1.0.4",
-            "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
-            "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
+            "version": "1.0.6",
+            "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz",
+            "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==",
             "dependencies": {
-                "call-bind": "^1.0.0",
-                "get-intrinsic": "^1.0.2",
-                "object-inspect": "^1.9.0"
+                "call-bind": "^1.0.7",
+                "es-errors": "^1.3.0",
+                "get-intrinsic": "^1.2.4",
+                "object-inspect": "^1.13.1"
+            },
+            "engines": {
+                "node": ">= 0.4"
             },
             "funding": {
                 "url": "https://github.com/sponsors/ljharb"
@@ -14716,9 +13711,9 @@
             "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg=="
         },
         "node_modules/sitemap": {
-            "version": "7.1.1",
-            "resolved": "https://registry.npmjs.org/sitemap/-/sitemap-7.1.1.tgz",
-            "integrity": "sha512-mK3aFtjz4VdJN0igpIJrinf3EO8U8mxOPsTBzSsy06UtjZQJ3YY3o3Xa7zSc5nMqcMrRwlChHZ18Kxg0caiPBg==",
+            "version": "7.1.2",
+            "resolved": "https://registry.npmjs.org/sitemap/-/sitemap-7.1.2.tgz",
+            "integrity": "sha512-ARCqzHJ0p4gWt+j7NlU5eDlIO9+Rkr/JhPFZKKQ1l5GCus7rJH4UdrlVAh0xC/gDS/Qir2UMxqYNHtsKr2rpCw==",
             "dependencies": {
                 "@types/node": "^17.0.5",
                 "@types/sax": "^1.2.1",
@@ -14777,9 +13772,9 @@
             }
         },
         "node_modules/sort-css-media-queries": {
-            "version": "2.1.0",
-            "resolved": "https://registry.npmjs.org/sort-css-media-queries/-/sort-css-media-queries-2.1.0.tgz",
-            "integrity": "sha512-IeWvo8NkNiY2vVYdPa27MCQiR0MN0M80johAYFVxWWXQ44KU84WNxjslwBHmc/7ZL2ccwkM7/e6S5aiKZXm7jA==",
+            "version": "2.2.0",
+            "resolved": "https://registry.npmjs.org/sort-css-media-queries/-/sort-css-media-queries-2.2.0.tgz",
+            "integrity": "sha512-0xtkGhWCC9MGt/EzgnvbbbKhqWjl1+/rncmhTh5qCpbYguXh6S/qwePfv/JQ8jePXXmqingylxoC49pCkSPIbA==",
             "engines": {
                 "node": ">= 6.3.0"
             }
@@ -14793,9 +13788,9 @@
             }
         },
         "node_modules/source-map-js": {
-            "version": "1.0.2",
-            "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
-            "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
+            "version": "1.2.0",
+            "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz",
+            "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==",
             "engines": {
                 "node": ">=0.10.0"
             }
@@ -14870,12 +13865,6 @@
                 "url": "https://github.com/sponsors/sindresorhus"
             }
         },
-        "node_modules/stable": {
-            "version": "0.1.8",
-            "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz",
-            "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==",
-            "deprecated": "Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility"
-        },
         "node_modules/statuses": {
             "version": "2.0.1",
             "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
@@ -15011,18 +14000,18 @@
             }
         },
         "node_modules/stylehacks": {
-            "version": "5.1.1",
-            "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.1.tgz",
-            "integrity": "sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw==",
+            "version": "6.1.1",
+            "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-6.1.1.tgz",
+            "integrity": "sha512-gSTTEQ670cJNoaeIp9KX6lZmm8LJ3jPB5yJmX8Zq/wQxOsAFXV3qjWzHas3YYk1qesuVIyYWWUpZ0vSE/dTSGg==",
             "dependencies": {
-                "browserslist": "^4.21.4",
-                "postcss-selector-parser": "^6.0.4"
+                "browserslist": "^4.23.0",
+                "postcss-selector-parser": "^6.0.16"
             },
             "engines": {
-                "node": "^10 || ^12 || >=14.0"
+                "node": "^14 || ^16 || >=18.0"
             },
             "peerDependencies": {
-                "postcss": "^8.2.15"
+                "postcss": "^8.4.31"
             }
         },
         "node_modules/supports-color": {
@@ -15053,14 +14042,15 @@
             "integrity": "sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ=="
         },
         "node_modules/svgo": {
-            "version": "3.0.2",
-            "resolved": "https://registry.npmjs.org/svgo/-/svgo-3.0.2.tgz",
-            "integrity": "sha512-Z706C1U2pb1+JGP48fbazf3KxHrWOsLme6Rv7imFBn5EnuanDW1GPaA/P1/dvObE670JDePC3mnj0k0B7P0jjQ==",
+            "version": "3.3.2",
+            "resolved": "https://registry.npmjs.org/svgo/-/svgo-3.3.2.tgz",
+            "integrity": "sha512-OoohrmuUlBs8B8o6MB2Aevn+pRIH9zDALSR+6hhqVfa6fRwG/Qw9VUMSMW9VNg2CFc/MTIfabtdOVl9ODIJjpw==",
             "dependencies": {
                 "@trysound/sax": "0.2.0",
                 "commander": "^7.2.0",
                 "css-select": "^5.1.0",
-                "css-tree": "^2.2.1",
+                "css-tree": "^2.3.1",
+                "css-what": "^6.1.0",
                 "csso": "^5.0.5",
                 "picocolors": "^1.0.0"
             },
@@ -15092,9 +14082,9 @@
             }
         },
         "node_modules/terser": {
-            "version": "5.24.0",
-            "resolved": "https://registry.npmjs.org/terser/-/terser-5.24.0.tgz",
-            "integrity": "sha512-ZpGR4Hy3+wBEzVEnHvstMvqpD/nABNelQn/z2r0fjVWGQsN3bpOLzQlqDxmb4CDZnXq5lpjnQ+mHQLAOpfM5iw==",
+            "version": "5.31.6",
+            "resolved": "https://registry.npmjs.org/terser/-/terser-5.31.6.tgz",
+            "integrity": "sha512-PQ4DAriWzKj+qgehQ7LK5bQqCFNMmlhjR2PFFLuqGCpuCAauxemVBWwWOxo3UIwWQx8+Pr61Df++r76wDmkQBg==",
             "dependencies": {
                 "@jridgewell/source-map": "^0.3.3",
                 "acorn": "^8.8.2",
@@ -15109,15 +14099,15 @@
             }
         },
         "node_modules/terser-webpack-plugin": {
-            "version": "5.3.9",
-            "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz",
-            "integrity": "sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==",
+            "version": "5.3.10",
+            "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz",
+            "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==",
             "dependencies": {
-                "@jridgewell/trace-mapping": "^0.3.17",
+                "@jridgewell/trace-mapping": "^0.3.20",
                 "jest-worker": "^27.4.5",
                 "schema-utils": "^3.1.1",
                 "serialize-javascript": "^6.0.1",
-                "terser": "^5.16.8"
+                "terser": "^5.26.0"
             },
             "engines": {
                 "node": ">= 10.13.0"
@@ -15245,11 +14235,6 @@
                 "node": ">=6"
             }
         },
-        "node_modules/tr46": {
-            "version": "0.0.3",
-            "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
-            "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
-        },
         "node_modules/trim-lines": {
             "version": "3.0.1",
             "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz",
@@ -15269,12 +14254,12 @@
             }
         },
         "node_modules/ts-api-utils": {
-            "version": "1.0.3",
-            "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.3.tgz",
-            "integrity": "sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==",
+            "version": "1.3.0",
+            "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz",
+            "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==",
             "dev": true,
             "engines": {
-                "node": ">=16.13.0"
+                "node": ">=16"
             },
             "peerDependencies": {
                 "typescript": ">=4.2.0"
@@ -15349,9 +14334,9 @@
             }
         },
         "node_modules/typescript": {
-            "version": "5.2.2",
-            "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz",
-            "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==",
+            "version": "5.5.4",
+            "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz",
+            "integrity": "sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==",
             "bin": {
                 "tsc": "bin/tsc",
                 "tsserver": "bin/tsserver"
@@ -15360,28 +14345,6 @@
                 "node": ">=14.17"
             }
         },
-        "node_modules/ua-parser-js": {
-            "version": "1.0.37",
-            "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.37.tgz",
-            "integrity": "sha512-bhTyI94tZofjo+Dn8SN6Zv8nBDvyXTymAdM3LDI/0IboIUwTu1rEhW7v2TfiVsoYWgkQ4kOVqnI8APUFbIQIFQ==",
-            "funding": [
-                {
-                    "type": "opencollective",
-                    "url": "https://opencollective.com/ua-parser-js"
-                },
-                {
-                    "type": "paypal",
-                    "url": "https://paypal.me/faisalman"
-                },
-                {
-                    "type": "github",
-                    "url": "https://github.com/sponsors/faisalman"
-                }
-            ],
-            "engines": {
-                "node": "*"
-            }
-        },
         "node_modules/undici-types": {
             "version": "5.26.5",
             "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
@@ -15568,9 +14531,9 @@
             }
         },
         "node_modules/update-browserslist-db": {
-            "version": "1.0.13",
-            "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz",
-            "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==",
+            "version": "1.1.0",
+            "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz",
+            "integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==",
             "funding": [
                 {
                     "type": "opencollective",
@@ -15586,8 +14549,8 @@
                 }
             ],
             "dependencies": {
-                "escalade": "^3.1.1",
-                "picocolors": "^1.0.0"
+                "escalade": "^3.1.2",
+                "picocolors": "^1.0.1"
             },
             "bin": {
                 "update-browserslist-db": "cli.js"
@@ -15744,43 +14707,6 @@
                 "url": "https://opencollective.com/webpack"
             }
         },
-        "node_modules/use-composed-ref": {
-            "version": "1.3.0",
-            "resolved": "https://registry.npmjs.org/use-composed-ref/-/use-composed-ref-1.3.0.tgz",
-            "integrity": "sha512-GLMG0Jc/jiKov/3Ulid1wbv3r54K9HlMW29IWcDFPEqFkSO2nS0MuefWgMJpeHQ9YJeXDL3ZUF+P3jdXlZX/cQ==",
-            "peerDependencies": {
-                "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
-            }
-        },
-        "node_modules/use-isomorphic-layout-effect": {
-            "version": "1.1.2",
-            "resolved": "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz",
-            "integrity": "sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==",
-            "peerDependencies": {
-                "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
-            },
-            "peerDependenciesMeta": {
-                "@types/react": {
-                    "optional": true
-                }
-            }
-        },
-        "node_modules/use-latest": {
-            "version": "1.2.1",
-            "resolved": "https://registry.npmjs.org/use-latest/-/use-latest-1.2.1.tgz",
-            "integrity": "sha512-xA+AVm/Wlg3e2P/JiItTziwS7FK92LWrDB0p+hgXloIMuVCeJJ8v6f0eeHyPZaJrM+usM1FkFfbNCrJGs8A/zw==",
-            "dependencies": {
-                "use-isomorphic-layout-effect": "^1.1.1"
-            },
-            "peerDependencies": {
-                "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
-            },
-            "peerDependenciesMeta": {
-                "@types/react": {
-                    "optional": true
-                }
-            }
-        },
         "node_modules/util-deprecate": {
             "version": "1.0.2",
             "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
@@ -15868,28 +14794,10 @@
                 "url": "https://opencollective.com/unified"
             }
         },
-        "node_modules/wait-on": {
-            "version": "7.1.0",
-            "resolved": "https://registry.npmjs.org/wait-on/-/wait-on-7.1.0.tgz",
-            "integrity": "sha512-U7TF/OYYzAg+OoiT/B8opvN48UHt0QYMi4aD3PjRFpybQ+o6czQF8Ig3SKCCMJdxpBrCalIJ4O00FBof27Fu9Q==",
-            "dependencies": {
-                "axios": "^0.27.2",
-                "joi": "^17.11.0",
-                "lodash": "^4.17.21",
-                "minimist": "^1.2.8",
-                "rxjs": "^7.8.1"
-            },
-            "bin": {
-                "wait-on": "bin/wait-on"
-            },
-            "engines": {
-                "node": ">=12.0.0"
-            }
-        },
         "node_modules/watchpack": {
-            "version": "2.4.0",
-            "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz",
-            "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==",
+            "version": "2.4.2",
+            "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.2.tgz",
+            "integrity": "sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==",
             "dependencies": {
                 "glob-to-regexp": "^0.4.1",
                 "graceful-fs": "^4.1.2"
@@ -15915,39 +14823,33 @@
                 "url": "https://github.com/sponsors/wooorm"
             }
         },
-        "node_modules/webidl-conversions": {
-            "version": "3.0.1",
-            "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
-            "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="
-        },
         "node_modules/webpack": {
-            "version": "5.89.0",
-            "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.89.0.tgz",
-            "integrity": "sha512-qyfIC10pOr70V+jkmud8tMfajraGCZMBWJtrmuBymQKCrLTRejBI8STDp1MCyZu/QTdZSeacCQYpYNQVOzX5kw==",
-            "dependencies": {
-                "@types/eslint-scope": "^3.7.3",
-                "@types/estree": "^1.0.0",
-                "@webassemblyjs/ast": "^1.11.5",
-                "@webassemblyjs/wasm-edit": "^1.11.5",
-                "@webassemblyjs/wasm-parser": "^1.11.5",
+            "version": "5.94.0",
+            "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.94.0.tgz",
+            "integrity": "sha512-KcsGn50VT+06JH/iunZJedYGUJS5FGjow8wb9c0v5n1Om8O1g4L6LjtfxwlXIATopoQu+vOXXa7gYisWxCoPyg==",
+            "dependencies": {
+                "@types/estree": "^1.0.5",
+                "@webassemblyjs/ast": "^1.12.1",
+                "@webassemblyjs/wasm-edit": "^1.12.1",
+                "@webassemblyjs/wasm-parser": "^1.12.1",
                 "acorn": "^8.7.1",
-                "acorn-import-assertions": "^1.9.0",
-                "browserslist": "^4.14.5",
+                "acorn-import-attributes": "^1.9.5",
+                "browserslist": "^4.21.10",
                 "chrome-trace-event": "^1.0.2",
-                "enhanced-resolve": "^5.15.0",
+                "enhanced-resolve": "^5.17.1",
                 "es-module-lexer": "^1.2.1",
                 "eslint-scope": "5.1.1",
                 "events": "^3.2.0",
                 "glob-to-regexp": "^0.4.1",
-                "graceful-fs": "^4.2.9",
+                "graceful-fs": "^4.2.11",
                 "json-parse-even-better-errors": "^2.3.1",
                 "loader-runner": "^4.2.0",
                 "mime-types": "^2.1.27",
                 "neo-async": "^2.6.2",
                 "schema-utils": "^3.2.0",
                 "tapable": "^2.1.1",
-                "terser-webpack-plugin": "^5.3.7",
-                "watchpack": "^2.4.0",
+                "terser-webpack-plugin": "^5.3.10",
+                "watchpack": "^2.4.1",
                 "webpack-sources": "^3.2.3"
             },
             "bin": {
@@ -16005,9 +14907,9 @@
             }
         },
         "node_modules/webpack-dev-middleware": {
-            "version": "5.3.3",
-            "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz",
-            "integrity": "sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==",
+            "version": "5.3.4",
+            "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.4.tgz",
+            "integrity": "sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q==",
             "dependencies": {
                 "colorette": "^2.0.10",
                 "memfs": "^3.4.3",
@@ -16246,15 +15148,6 @@
                 "node": ">=0.8.0"
             }
         },
-        "node_modules/whatwg-url": {
-            "version": "5.0.0",
-            "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
-            "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
-            "dependencies": {
-                "tr46": "~0.0.3",
-                "webidl-conversions": "^3.0.0"
-            }
-        },
         "node_modules/which": {
             "version": "2.0.2",
             "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
diff --git a/website/package.json b/website/package.json
index 7251a4f1d0a..44c315767aa 100644
--- a/website/package.json
+++ b/website/package.json
@@ -17,17 +17,17 @@
         "fmt:write": "prettier --write ."
     },
     "dependencies": {
-        "@docusaurus/core": "^3.0.0",
-        "@docusaurus/plugin-client-redirects": "^3.0.0",
-        "@docusaurus/preset-classic": "^3.0.0",
-        "@mdx-js/react": "^3.0.0",
+        "@docusaurus/core": "^3.5.2",
+        "@docusaurus/plugin-client-redirects": "^3.5.2",
+        "@docusaurus/preset-classic": "^3.5.2",
+        "@mdx-js/react": "^3.0.1",
         "@svgr/webpack": "^8.1.0",
-        "clsx": "^2.0.0",
+        "clsx": "^2.1.1",
         "docusaurus-plugin-sass": "^0.2.5",
         "file-loader": "^6.2.0",
-        "react": "^18.2.0",
-        "react-dom": "^18.2.0",
-        "sass": "^1.69.5",
+        "react": "^18.3.1",
+        "react-dom": "^18.3.1",
+        "sass": "^1.77.8",
         "url-loader": "^4.1.1"
     },
     "browserslist": {
@@ -47,14 +47,14 @@
     },
     "devDependencies": {
         "@docusaurus/module-type-aliases": "^3.0.0",
-        "@docusaurus/tsconfig": "3.0.0",
-        "@types/react": "^18.2.34",
-        "@types/react-helmet": "^6.1.8",
+        "@docusaurus/tsconfig": "3.5.2",
+        "@types/react": "^18.3.5",
+        "@types/react-helmet": "^6.1.11",
         "@types/react-router-dom": "^5.3.3",
-        "@typescript-eslint/eslint-plugin": "^6.9.1",
-        "@typescript-eslint/parser": "^6.9.1",
-        "dir-compare": "^4.2.0",
-        "prettier": "^3.0.3",
-        "typescript": "^5.2.2"
+        "@typescript-eslint/eslint-plugin": "^8.3.0",
+        "@typescript-eslint/parser": "^8.3.0",
+        "dir-compare": "^5.0.0",
+        "prettier": "^3.3.3",
+        "typescript": "^5.5.4"
     }
 }
diff --git a/website/src/pages/index.module.scss b/website/src/pages/index.module.scss
index cc10a8b2330..0abaac2f59f 100644
--- a/website/src/pages/index.module.scss
+++ b/website/src/pages/index.module.scss
@@ -48,12 +48,12 @@
     img {
         $dimensions: calc(var(--ifm-h1-font-size) * 5);
 
+        width: $dimensions;
+        height: $dimensions;
+
         @include devices(tablet) {
             $dimensions: calc(var(--ifm-h1-font-size) * 3);
         }
-
-        width: $dimensions;
-        height: $dimensions;
     }
 }
 
diff --git a/website/src/theme/NavbarItem/DefaultNavbarItem.tsx b/website/src/theme/NavbarItem/DefaultNavbarItem.tsx
index a8dc16a0b15..6042f2bc96d 100644
--- a/website/src/theme/NavbarItem/DefaultNavbarItem.tsx
+++ b/website/src/theme/NavbarItem/DefaultNavbarItem.tsx
@@ -9,7 +9,7 @@ const regex = /\/docs\/(0.([0-9]+)(\.[0-9]+)?|next)?/
 const useVersion = () => {
     const location = useLocation()
     const match = location.pathname.match(regex)
-    return match ? match[1] ?? '' : ''
+    return match ? (match[1] ?? '') : ''
 }
 
 export default function DefaultNavbarItem(props) {

From 15ac51c399c27b6932357037fce32ddb24f24531 Mon Sep 17 00:00:00 2001
From: WorldSEnder 
Date: Thu, 5 Sep 2024 20:35:43 +0200
Subject: [PATCH 31/44] Fix hidden files not being uploaded with
 actions/upload-artifact upgrade in #3576 (#3724)

It was not prominently explained that "hidden" files, i.e. starting with "." are now ignored
this is only a problem when uploading globbed directories in benchmark where we don't
know the full path by default
---
 .github/workflows/benchmark.yml | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/.github/workflows/benchmark.yml b/.github/workflows/benchmark.yml
index 84c2316f7bb..fed8ed45f33 100644
--- a/.github/workflows/benchmark.yml
+++ b/.github/workflows/benchmark.yml
@@ -136,3 +136,5 @@ jobs:
           name: results
           path: artifacts/
           if-no-files-found: error
+          include-hidden-files: true
+          retention-days: 1

From 4da1263583a94d551e03ffaddbbdb12ac699b539 Mon Sep 17 00:00:00 2001
From: Finn Bear 
Date: Sat, 14 Sep 2024 23:59:27 -0700
Subject: [PATCH 32/44] Fix CI. (#3727)

---
 packages/yew-macro/src/derive_props/field.rs | 2 +-
 packages/yew/src/lib.rs                      | 1 +
 packages/yew/src/tests/layout_tests.rs       | 2 ++
 packages/yew/src/tests/mod.rs                | 1 +
 tools/website-test/build.rs                  | 2 +-
 5 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/packages/yew-macro/src/derive_props/field.rs b/packages/yew-macro/src/derive_props/field.rs
index da2af9ee97c..91e2ba08fad 100644
--- a/packages/yew-macro/src/derive_props/field.rs
+++ b/packages/yew-macro/src/derive_props/field.rs
@@ -57,7 +57,7 @@ impl PropField {
         props_name: &'a Ident,
         vis: &'a Visibility,
         token: &'a GenericParam,
-    ) -> PropFieldCheck<'_> {
+    ) -> PropFieldCheck<'a> {
         let check_struct = self.to_check_name(props_name);
         let check_arg = self.to_check_arg_name(props_name);
         PropFieldCheck {
diff --git a/packages/yew/src/lib.rs b/packages/yew/src/lib.rs
index 75442817802..8e0fda8aefd 100644
--- a/packages/yew/src/lib.rs
+++ b/packages/yew/src/lib.rs
@@ -295,6 +295,7 @@ mod renderer;
 
 #[cfg(feature = "csr")]
 #[cfg(test)]
+#[allow(missing_docs)]
 pub mod tests;
 
 /// The module that contains all events available in the framework.
diff --git a/packages/yew/src/tests/layout_tests.rs b/packages/yew/src/tests/layout_tests.rs
index 657cc96a9d5..97c10df9bfc 100644
--- a/packages/yew/src/tests/layout_tests.rs
+++ b/packages/yew/src/tests/layout_tests.rs
@@ -31,12 +31,14 @@ impl Component for Comp {
 }
 
 #[derive(Debug)]
+#[allow(missing_docs)]
 pub struct TestLayout<'a> {
     pub name: &'a str,
     pub node: VNode,
     pub expected: &'a str,
 }
 
+#[allow(missing_docs)]
 pub fn diff_layouts(layouts: Vec>) {
     let document = gloo::utils::document();
     let scope: AnyScope = AnyScope::test();
diff --git a/packages/yew/src/tests/mod.rs b/packages/yew/src/tests/mod.rs
index 7c8881b072f..15ceb5fde75 100644
--- a/packages/yew/src/tests/mod.rs
+++ b/packages/yew/src/tests/mod.rs
@@ -1 +1,2 @@
+#[allow(missing_docs)]
 pub mod layout_tests;
diff --git a/tools/website-test/build.rs b/tools/website-test/build.rs
index 45b5746cdbc..8620d1100c1 100644
--- a/tools/website-test/build.rs
+++ b/tools/website-test/build.rs
@@ -62,7 +62,7 @@ impl Level {
 
     fn write_into(&self, dst: &mut String, name: &str, level: usize) -> fmt::Result {
         self.write_space(dst, level);
-        let name = name.replace(|c| c == '-' || c == '.', "_");
+        let name = name.replace(['-', '.'], "_");
         writeln!(dst, "pub mod {name} {{")?;
 
         self.write_inner(dst, level + 1)?;

From 5a46ee27a1635e8edb9414b07974b2d15243f9da Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Fri, 20 Sep 2024 19:02:31 +0800
Subject: [PATCH 33/44] Bump the cargo-deps group across 1 directory with 13
 updates (#3732)

Bumps the cargo-deps group with 12 updates in the / directory:

| Package | From | To |
| --- | --- | --- |
| [indexmap](https://github.com/indexmap-rs/indexmap) | `2.4.0` | `2.5.0` |
| [serde](https://github.com/serde-rs/serde) | `1.0.209` | `1.0.210` |
| [tokio](https://github.com/tokio-rs/tokio) | `1.39.3` | `1.40.0` |
| [syn](https://github.com/dtolnay/syn) | `2.0.76` | `2.0.77` |
| [serde_json](https://github.com/serde-rs/json) | `1.0.127` | `1.0.128` |
| [clap](https://github.com/clap-rs/clap) | `4.5.16` | `4.5.17` |
| [anyhow](https://github.com/dtolnay/anyhow) | `1.0.86` | `1.0.89` |
| [pulldown-cmark](https://github.com/raphlinus/pulldown-cmark) | `0.12.0` | `0.12.1` |
| [bytes](https://github.com/tokio-rs/bytes) | `1.7.1` | `1.7.2` |
| [hyper-util](https://github.com/hyperium/hyper-util) | `0.1.7` | `0.1.8` |
| [tower](https://github.com/tower-rs/tower) | `0.5.0` | `0.5.1` |
| [tower-http](https://github.com/tower-rs/tower-http) | `0.5.2` | `0.6.0` |



Updates `indexmap` from 2.4.0 to 2.5.0
- [Changelog](https://github.com/indexmap-rs/indexmap/blob/master/RELEASES.md)
- [Commits](https://github.com/indexmap-rs/indexmap/compare/2.4.0...2.5.0)

Updates `serde` from 1.0.209 to 1.0.210
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.209...v1.0.210)

Updates `tokio` from 1.39.3 to 1.40.0
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-1.39.3...tokio-1.40.0)

Updates `syn` from 2.0.76 to 2.0.77
- [Release notes](https://github.com/dtolnay/syn/releases)
- [Commits](https://github.com/dtolnay/syn/compare/2.0.76...2.0.77)

Updates `serde_json` from 1.0.127 to 1.0.128
- [Release notes](https://github.com/serde-rs/json/releases)
- [Commits](https://github.com/serde-rs/json/compare/1.0.127...1.0.128)

Updates `clap` from 4.5.16 to 4.5.17
- [Release notes](https://github.com/clap-rs/clap/releases)
- [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md)
- [Commits](https://github.com/clap-rs/clap/compare/clap_complete-v4.5.16...clap_complete-v4.5.17)

Updates `anyhow` from 1.0.86 to 1.0.89
- [Release notes](https://github.com/dtolnay/anyhow/releases)
- [Commits](https://github.com/dtolnay/anyhow/compare/1.0.86...1.0.89)

Updates `pulldown-cmark` from 0.12.0 to 0.12.1
- [Release notes](https://github.com/raphlinus/pulldown-cmark/releases)
- [Commits](https://github.com/raphlinus/pulldown-cmark/compare/v0.12.0...v0.12.1)

Updates `bytes` from 1.7.1 to 1.7.2
- [Release notes](https://github.com/tokio-rs/bytes/releases)
- [Changelog](https://github.com/tokio-rs/bytes/blob/master/CHANGELOG.md)
- [Commits](https://github.com/tokio-rs/bytes/compare/v1.7.1...v1.7.2)

Updates `hyper-util` from 0.1.7 to 0.1.8
- [Release notes](https://github.com/hyperium/hyper-util/releases)
- [Changelog](https://github.com/hyperium/hyper-util/blob/master/CHANGELOG.md)
- [Commits](https://github.com/hyperium/hyper-util/compare/v0.1.7...v0.1.8)

Updates `tower` from 0.5.0 to 0.5.1
- [Release notes](https://github.com/tower-rs/tower/releases)
- [Commits](https://github.com/tower-rs/tower/compare/tower-0.5.0...tower-0.5.1)

Updates `tower-http` from 0.5.2 to 0.6.0
- [Release notes](https://github.com/tower-rs/tower-http/releases)
- [Commits](https://github.com/tower-rs/tower-http/compare/tower-http-0.5.2...tower-http-0.6.0)

Updates `serde_derive` from 1.0.209 to 1.0.210
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.209...v1.0.210)

---
updated-dependencies:
- dependency-name: indexmap
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: cargo-deps
- dependency-name: serde
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-deps
- dependency-name: tokio
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: cargo-deps
- dependency-name: syn
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-deps
- dependency-name: serde_json
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-deps
- dependency-name: clap
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-deps
- dependency-name: anyhow
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-deps
- dependency-name: pulldown-cmark
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-deps
- dependency-name: bytes
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-deps
- dependency-name: hyper-util
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-deps
- dependency-name: tower
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-deps
- dependency-name: tower-http
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: cargo-deps
- dependency-name: serde_derive
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-deps
...

Signed-off-by: dependabot[bot] 
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
 Cargo.lock                           | 112 +++++++++++++--------------
 examples/simple_ssr/Cargo.toml       |   4 +-
 examples/ssr_router/Cargo.toml       |   6 +-
 examples/web_worker_prime/Cargo.toml |   2 +-
 packages/yew-agent/Cargo.toml        |   2 +-
 packages/yew/Cargo.toml              |   4 +-
 tools/benchmark-ssr/Cargo.toml       |   6 +-
 tools/website-test/Cargo.toml        |   2 +-
 8 files changed, 69 insertions(+), 69 deletions(-)

diff --git a/Cargo.lock b/Cargo.lock
index 7ae603e8258..0c19a766a0a 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -92,9 +92,9 @@ dependencies = [
 
 [[package]]
 name = "anyhow"
-version = "1.0.86"
+version = "1.0.89"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da"
+checksum = "86fdf8605db99b54d3cd748a44c6d04df638eb5dafb219b135d0149bd0db01f6"
 
 [[package]]
 name = "anymap2"
@@ -110,7 +110,7 @@ checksum = "6e0c28dcc82d7c8ead5cb13beb15405b57b8546e93215673ff8ca0349a028107"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.76",
+ "syn 2.0.77",
 ]
 
 [[package]]
@@ -339,9 +339,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
 
 [[package]]
 name = "bytes"
-version = "1.7.1"
+version = "1.7.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8318a53db07bb3f8dca91a600466bdb3f2eaadeedfdbcf02e1accbad9271ba50"
+checksum = "428d9aa8fbc0670b7b8d6030a7fadd0f86151cae55e4dbbece15f3780a3dfaf3"
 
 [[package]]
 name = "cc"
@@ -392,9 +392,9 @@ dependencies = [
 
 [[package]]
 name = "clap"
-version = "4.5.16"
+version = "4.5.17"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ed6719fffa43d0d87e5fd8caeab59be1554fb028cd30edc88fc4369b17971019"
+checksum = "3e5a21b8495e732f1b3c364c9949b201ca7bae518c502c80256c96ad79eaf6ac"
 dependencies = [
  "clap_builder",
  "clap_derive",
@@ -402,9 +402,9 @@ dependencies = [
 
 [[package]]
 name = "clap_builder"
-version = "4.5.15"
+version = "4.5.17"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "216aec2b177652e3846684cbfe25c9964d18ec45234f0f5da5157b207ed1aab6"
+checksum = "8cf2dd12af7a047ad9d6da2b6b249759a22a7abc0f474c1dae1777afa4b21a73"
 dependencies = [
  "anstream",
  "anstyle",
@@ -422,7 +422,7 @@ dependencies = [
  "heck 0.5.0",
  "proc-macro2",
  "quote",
- "syn 2.0.76",
+ "syn 2.0.77",
 ]
 
 [[package]]
@@ -587,7 +587,7 @@ dependencies = [
  "proc-macro2",
  "quote",
  "strsim",
- "syn 2.0.76",
+ "syn 2.0.77",
 ]
 
 [[package]]
@@ -598,7 +598,7 @@ checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806"
 dependencies = [
  "darling_core",
  "quote",
- "syn 2.0.76",
+ "syn 2.0.77",
 ]
 
 [[package]]
@@ -634,7 +634,7 @@ dependencies = [
  "darling",
  "proc-macro2",
  "quote",
- "syn 2.0.76",
+ "syn 2.0.77",
 ]
 
 [[package]]
@@ -644,7 +644,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "206868b8242f27cecce124c19fd88157fbd0dd334df2587f36417bafbc85097b"
 dependencies = [
  "derive_builder_core",
- "syn 2.0.76",
+ "syn 2.0.77",
 ]
 
 [[package]]
@@ -664,7 +664,7 @@ checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.76",
+ "syn 2.0.77",
 ]
 
 [[package]]
@@ -705,7 +705,7 @@ checksum = "27540baf49be0d484d8f0130d7d8da3011c32a44d4fc873368154f1510e574a2"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.76",
+ "syn 2.0.77",
 ]
 
 [[package]]
@@ -975,7 +975,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.76",
+ "syn 2.0.77",
 ]
 
 [[package]]
@@ -1438,7 +1438,7 @@ dependencies = [
  "proc-macro-crate",
  "proc-macro2",
  "quote",
- "syn 2.0.76",
+ "syn 2.0.77",
 ]
 
 [[package]]
@@ -1719,9 +1719,9 @@ dependencies = [
 
 [[package]]
 name = "hyper-util"
-version = "0.1.7"
+version = "0.1.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cde7055719c54e36e95e8719f95883f22072a48ede39db7fc17a4e1d5281e9b9"
+checksum = "da62f120a8a37763efb0cf8fdf264b884c7b8b9ac8660b900c8661030c00e6ba"
 dependencies = [
  "bytes",
  "futures-channel",
@@ -1803,14 +1803,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "9311685eb9a34808bbb0608ad2fcab9ae216266beca5848613e95553ac914e3b"
 dependencies = [
  "quote",
- "syn 2.0.76",
+ "syn 2.0.77",
 ]
 
 [[package]]
 name = "indexmap"
-version = "2.4.0"
+version = "2.5.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "93ead53efc7ea8ed3cfb0c79fc8023fbb782a5432b52830b6518941cebe6505c"
+checksum = "68b900aa2f7301e21c36462b170ee99994de34dff39a4a6a528e80e7376d07e5"
 dependencies = [
  "equivalent",
  "hashbrown",
@@ -2252,7 +2252,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.76",
+ "syn 2.0.77",
 ]
 
 [[package]]
@@ -2343,7 +2343,7 @@ checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.76",
+ "syn 2.0.77",
 ]
 
 [[package]]
@@ -2424,7 +2424,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "479cf940fbbb3426c32c5d5176f62ad57549a0bb84773423ba8be9d089f5faba"
 dependencies = [
  "proc-macro2",
- "syn 2.0.76",
+ "syn 2.0.77",
 ]
 
 [[package]]
@@ -2504,9 +2504,9 @@ dependencies = [
 
 [[package]]
 name = "pulldown-cmark"
-version = "0.12.0"
+version = "0.12.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4d31cbfcd94884c3a67ec210c83efb06cb43674043458b0ad59f6947f8462c23"
+checksum = "666f0f59e259aea2d72e6012290c09877a780935cc3c18b1ceded41f3890d59c"
 dependencies = [
  "bitflags",
  "memchr",
@@ -2819,9 +2819,9 @@ checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b"
 
 [[package]]
 name = "serde"
-version = "1.0.209"
+version = "1.0.210"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "99fce0ffe7310761ca6bf9faf5115afbc19688edd00171d81b1bb1b116c63e09"
+checksum = "c8e3592472072e6e22e0a54d5904d9febf8508f65fb8552499a1abc7d1078c3a"
 dependencies = [
  "serde_derive",
 ]
@@ -2850,20 +2850,20 @@ dependencies = [
 
 [[package]]
 name = "serde_derive"
-version = "1.0.209"
+version = "1.0.210"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a5831b979fd7b5439637af1752d535ff49f4860c0f341d1baeb6faf0f4242170"
+checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.76",
+ "syn 2.0.77",
 ]
 
 [[package]]
 name = "serde_json"
-version = "1.0.127"
+version = "1.0.128"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8043c06d9f82bd7271361ed64f415fe5e12a77fdb52e573e7f06a516dea329ad"
+checksum = "6ff5456707a1de34e7e37f2a6fd3d3f808c318259cbd01ab6377795054b483d8"
 dependencies = [
  "itoa",
  "memchr",
@@ -2994,7 +2994,7 @@ dependencies = [
  "jemallocator",
  "log",
  "tokio",
- "tower 0.5.0",
+ "tower 0.5.1",
  "tower-http",
  "wasm-bindgen-futures",
  "wasm-logger",
@@ -3032,7 +3032,7 @@ dependencies = [
  "proc-macro2",
  "quote",
  "rustversion",
- "syn 2.0.76",
+ "syn 2.0.77",
 ]
 
 [[package]]
@@ -3065,9 +3065,9 @@ dependencies = [
 
 [[package]]
 name = "syn"
-version = "2.0.76"
+version = "2.0.77"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "578e081a14e0cefc3279b0472138c513f37b41a08d5a3cca9b6e4e8ceb6cd525"
+checksum = "9f35bcdf61fd8e7be6caf75f429fdca8beb3ed76584befb503b1569faee373ed"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -3182,7 +3182,7 @@ checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.76",
+ "syn 2.0.77",
 ]
 
 [[package]]
@@ -3253,9 +3253,9 @@ dependencies = [
 
 [[package]]
 name = "tokio"
-version = "1.39.3"
+version = "1.40.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9babc99b9923bfa4804bd74722ff02c0381021eafa4db9949217e3be8e84fff5"
+checksum = "e2b070231665d27ad9ec9b8df639893f46727666c6767db40317fbe920a5d998"
 dependencies = [
  "backtrace",
  "bytes",
@@ -3277,7 +3277,7 @@ checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.76",
+ "syn 2.0.77",
 ]
 
 [[package]]
@@ -3400,9 +3400,9 @@ dependencies = [
 
 [[package]]
 name = "tower"
-version = "0.5.0"
+version = "0.5.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "36b837f86b25d7c0d7988f00a54e74739be6477f2aac6201b8f429a7569991b7"
+checksum = "2873938d487c3cfb9aed7546dc9f2711d867c9f90c46b889989a2cb84eba6b4f"
 dependencies = [
  "futures-util",
  "pin-project-lite",
@@ -3413,9 +3413,9 @@ dependencies = [
 
 [[package]]
 name = "tower-http"
-version = "0.5.2"
+version = "0.6.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1e9cd434a998747dd2c4276bc96ee2e0c7a2eadf3cae88e52be55a05fa9053f5"
+checksum = "41515cc9e193536d93fd0dbbea0c73819c08eca76e0b30909a325c3ec90985bb"
 dependencies = [
  "bitflags",
  "bytes",
@@ -3468,7 +3468,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.76",
+ "syn 2.0.77",
 ]
 
 [[package]]
@@ -3707,7 +3707,7 @@ dependencies = [
  "once_cell",
  "proc-macro2",
  "quote",
- "syn 2.0.76",
+ "syn 2.0.77",
  "wasm-bindgen-shared",
 ]
 
@@ -3741,7 +3741,7 @@ checksum = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.76",
+ "syn 2.0.77",
  "wasm-bindgen-backend",
  "wasm-bindgen-shared",
 ]
@@ -3775,7 +3775,7 @@ checksum = "4b8220be1fa9e4c889b30fd207d4906657e7e90b12e0e6b0c8b8d8709f5de021"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.76",
+ "syn 2.0.77",
 ]
 
 [[package]]
@@ -4111,7 +4111,7 @@ dependencies = [
  "proc-macro2",
  "quote",
  "rustversion",
- "syn 2.0.76",
+ "syn 2.0.77",
  "trybuild",
  "yew-agent",
 ]
@@ -4124,7 +4124,7 @@ checksum = "58865a8f2470a6ad839274e05c9627170d32930f39a2348f8c425880a6131792"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.76",
+ "syn 2.0.77",
 ]
 
 [[package]]
@@ -4137,7 +4137,7 @@ dependencies = [
  "proc-macro2",
  "quote",
  "rustversion",
- "syn 2.0.76",
+ "syn 2.0.77",
  "trybuild",
  "yew",
 ]
@@ -4167,7 +4167,7 @@ dependencies = [
  "proc-macro2",
  "quote",
  "rustversion",
- "syn 2.0.76",
+ "syn 2.0.77",
  "trybuild",
  "yew-router",
 ]
@@ -4214,7 +4214,7 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.76",
+ "syn 2.0.77",
 ]
 
 [[package]]
diff --git a/examples/simple_ssr/Cargo.toml b/examples/simple_ssr/Cargo.toml
index 1d2c9f379bd..0d0846f7ce2 100644
--- a/examples/simple_ssr/Cargo.toml
+++ b/examples/simple_ssr/Cargo.toml
@@ -15,7 +15,7 @@ required-features = ["ssr"]
 [dependencies]
 yew = { path = "../../packages/yew" }
 reqwest = { version = "0.12.7", features = ["json"] }
-serde = { version = "1.0.209", features = ["derive"] }
+serde = { version = "1.0.210", features = ["derive"] }
 uuid = { version = "1.10.0", features = ["serde"] }
 futures = "0.3"
 bytes = "1.7"
@@ -26,7 +26,7 @@ wasm-logger = "0.2"
 log = "0.4"
 
 [target.'cfg(not(target_arch = "wasm32"))'.dependencies]
-tokio = { version = "1.38.1", features = ["full"] }
+tokio = { version = "1.40.0", features = ["full"] }
 warp = "0.3"
 clap = { version = "4", features = ["derive"] }
 
diff --git a/examples/ssr_router/Cargo.toml b/examples/ssr_router/Cargo.toml
index db64e8f1ed2..9a507346f88 100644
--- a/examples/ssr_router/Cargo.toml
+++ b/examples/ssr_router/Cargo.toml
@@ -18,17 +18,17 @@ yew = { path = "../../packages/yew" }
 function_router = { path = "../function_router" }
 log = "0.4"
 futures = { version = "0.3", features = ["std"], default-features = false }
-hyper-util = "0.1.7"
+hyper-util = "0.1.8"
 
 [target.'cfg(target_arch = "wasm32")'.dependencies]
 wasm-bindgen-futures = "0.4"
 wasm-logger = "0.2"
 
 [target.'cfg(not(target_arch = "wasm32"))'.dependencies]
-tokio = { version = "1.38.1", features = ["full"] }
+tokio = { version = "1.40.0", features = ["full"] }
 axum = "0.7"
 tower = { version = "0.5", features = ["make"] }
-tower-http = { version = "0.5", features = ["fs"] }
+tower-http = { version = "0.6", features = ["fs"] }
 env_logger = "0.11"
 clap = { version = "4", features = ["derive"] }
 hyper = { version = "1.4", features = ["server", "http1"] }
diff --git a/examples/web_worker_prime/Cargo.toml b/examples/web_worker_prime/Cargo.toml
index ff23d80df61..7ade92872b6 100644
--- a/examples/web_worker_prime/Cargo.toml
+++ b/examples/web_worker_prime/Cargo.toml
@@ -8,4 +8,4 @@ yew-agent = { path = "../../packages/yew-agent" }
 yew = { path = "../../packages/yew", features = ["csr"] }
 futures = "0.3.30"
 primes = "0.4.0"
-serde = { version = "1.0.209", features = ["derive"] }
+serde = { version = "1.0.210", features = ["derive"] }
diff --git a/packages/yew-agent/Cargo.toml b/packages/yew-agent/Cargo.toml
index cb6c5270e54..629e068504c 100644
--- a/packages/yew-agent/Cargo.toml
+++ b/packages/yew-agent/Cargo.toml
@@ -20,4 +20,4 @@ futures = "0.3"
 yew-agent-macro = { version = "0.2", path = "../yew-agent-macro" }
 
 [dev-dependencies]
-serde = "1.0.209"
+serde = "1.0.210"
diff --git a/packages/yew/Cargo.toml b/packages/yew/Cargo.toml
index 6ba565a66eb..eff40aec451 100644
--- a/packages/yew/Cargo.toml
+++ b/packages/yew/Cargo.toml
@@ -40,7 +40,7 @@ wasm-bindgen-futures = "0.4"
 
 [target.'cfg(not(target_arch = "wasm32"))'.dependencies]
 # We still need tokio as we have docs linked to it.
-tokio = { version = "1.38", features = ["rt"] }
+tokio = { version = "1.40", features = ["rt"] }
 
 [dependencies.web-sys]
 version = "^0.3.70"
@@ -79,7 +79,7 @@ features = [
 ]
 
 [target.'cfg(not(target_arch = "wasm32"))'.dev-dependencies]
-tokio = { version = "1.38", features = ["full"] }
+tokio = { version = "1.40", features = ["full"] }
 
 [dev-dependencies]
 wasm-bindgen-test = "0.3"
diff --git a/tools/benchmark-ssr/Cargo.toml b/tools/benchmark-ssr/Cargo.toml
index 8ec5a6ac825..e422d82d09d 100644
--- a/tools/benchmark-ssr/Cargo.toml
+++ b/tools/benchmark-ssr/Cargo.toml
@@ -8,12 +8,12 @@ edition = "2021"
 [dependencies]
 yew = { path = "../../packages/yew", features = ["ssr"] }
 function_router = { path = "../../examples/function_router" }
-tokio = { version = "1.38", features = ["full"] }
+tokio = { version = "1.40", features = ["full"] }
 average = "0.15.1"
 tabled = "0.16.0"
 indicatif = "0.17.8"
-serde = { version = "1.0.209", features = ["derive"] }
-serde_json = "1.0.127"
+serde = { version = "1.0.210", features = ["derive"] }
+serde_json = "1.0.128"
 clap = { version = "4", features = ["derive"] }
 
 [target.'cfg(unix)'.dependencies]
diff --git a/tools/website-test/Cargo.toml b/tools/website-test/Cargo.toml
index dcc608bae68..d88893a2ced 100644
--- a/tools/website-test/Cargo.toml
+++ b/tools/website-test/Cargo.toml
@@ -19,7 +19,7 @@ weblog = "0.3.0"
 yew = { path = "../../packages/yew/", features = ["ssr", "csr"] }
 yew-autoprops = "0.4.1"
 yew-router = { path = "../../packages/yew-router/" }
-tokio = { version = "1.38.1", features = ["rt", "macros"] }
+tokio = { version = "1.40.0", features = ["rt", "macros"] }
 
 [dev-dependencies.web-sys]
 version = "0.3"

From 2e464ed6918a54124f161d57005ae15acabeede4 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 30 Sep 2024 01:56:21 +0800
Subject: [PATCH 34/44] Bump the cargo-deps group with 6 updates (#3738)

Bumps the cargo-deps group with 6 updates:

| Package | From | To |
| --- | --- | --- |
| [thiserror](https://github.com/dtolnay/thiserror) | `1.0.63` | `1.0.64` |
| [clap](https://github.com/clap-rs/clap) | `4.5.17` | `4.5.18` |
| [fake](https://github.com/cksac/fake-rs) | `2.9.2` | `2.10.0` |
| [hyper-util](https://github.com/hyperium/hyper-util) | `0.1.8` | `0.1.9` |
| [axum](https://github.com/tokio-rs/axum) | `0.7.5` | `0.7.6` |
| [tower-http](https://github.com/tower-rs/tower-http) | `0.6.0` | `0.6.1` |


Updates `thiserror` from 1.0.63 to 1.0.64
- [Release notes](https://github.com/dtolnay/thiserror/releases)
- [Commits](https://github.com/dtolnay/thiserror/compare/1.0.63...1.0.64)

Updates `clap` from 4.5.17 to 4.5.18
- [Release notes](https://github.com/clap-rs/clap/releases)
- [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md)
- [Commits](https://github.com/clap-rs/clap/compare/clap_complete-v4.5.17...clap_complete-v4.5.18)

Updates `fake` from 2.9.2 to 2.10.0
- [Commits](https://github.com/cksac/fake-rs/commits)

Updates `hyper-util` from 0.1.8 to 0.1.9
- [Release notes](https://github.com/hyperium/hyper-util/releases)
- [Changelog](https://github.com/hyperium/hyper-util/blob/master/CHANGELOG.md)
- [Commits](https://github.com/hyperium/hyper-util/compare/v0.1.8...v0.1.9)

Updates `axum` from 0.7.5 to 0.7.6
- [Release notes](https://github.com/tokio-rs/axum/releases)
- [Changelog](https://github.com/tokio-rs/axum/blob/main/CHANGELOG.md)
- [Commits](https://github.com/tokio-rs/axum/compare/axum-v0.7.5...axum-v0.7.6)

Updates `tower-http` from 0.6.0 to 0.6.1
- [Release notes](https://github.com/tower-rs/tower-http/releases)
- [Commits](https://github.com/tower-rs/tower-http/compare/tower-http-0.6.0...tower-http-0.6.1)

---
updated-dependencies:
- dependency-name: thiserror
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-deps
- dependency-name: clap
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-deps
- dependency-name: fake
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: cargo-deps
- dependency-name: hyper-util
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-deps
- dependency-name: axum
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-deps
- dependency-name: tower-http
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-deps
...

Signed-off-by: dependabot[bot] 
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
 Cargo.lock                     | 66 ++++++++++++++--------------------
 examples/keyed_list/Cargo.toml |  2 +-
 examples/ssr_router/Cargo.toml |  2 +-
 3 files changed, 28 insertions(+), 42 deletions(-)

diff --git a/Cargo.lock b/Cargo.lock
index 0c19a766a0a..094f9fe8c54 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -157,9 +157,9 @@ dependencies = [
 
 [[package]]
 name = "axum"
-version = "0.7.5"
+version = "0.7.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3a6c9af12842a67734c9a2e355436e5d03b22383ed60cf13cd0c18fbfe3dcbcf"
+checksum = "8f43644eed690f5374f1af436ecd6aea01cd201f6fbdf0178adaf6907afb2cec"
 dependencies = [
  "async-trait",
  "axum-core",
@@ -183,7 +183,7 @@ dependencies = [
  "serde_urlencoded",
  "sync_wrapper 1.0.1",
  "tokio",
- "tower 0.4.13",
+ "tower",
  "tower-layer",
  "tower-service",
  "tracing",
@@ -191,9 +191,9 @@ dependencies = [
 
 [[package]]
 name = "axum-core"
-version = "0.4.3"
+version = "0.4.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a15c63fd72d41492dc4f497196f5da1fb04fb7529e631d73630d1b491e47a2e3"
+checksum = "5e6b8ba012a258d63c9adfa28b9ddcf66149da6f986c5b5452e629d5ee64bf00"
 dependencies = [
  "async-trait",
  "bytes",
@@ -204,7 +204,7 @@ dependencies = [
  "mime",
  "pin-project-lite",
  "rustversion",
- "sync_wrapper 0.1.2",
+ "sync_wrapper 1.0.1",
  "tower-layer",
  "tower-service",
  "tracing",
@@ -392,9 +392,9 @@ dependencies = [
 
 [[package]]
 name = "clap"
-version = "4.5.17"
+version = "4.5.18"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3e5a21b8495e732f1b3c364c9949b201ca7bae518c502c80256c96ad79eaf6ac"
+checksum = "b0956a43b323ac1afaffc053ed5c4b7c1f1800bacd1683c353aabbb752515dd3"
 dependencies = [
  "clap_builder",
  "clap_derive",
@@ -402,9 +402,9 @@ dependencies = [
 
 [[package]]
 name = "clap_builder"
-version = "4.5.17"
+version = "4.5.18"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8cf2dd12af7a047ad9d6da2b6b249759a22a7abc0f474c1dae1777afa4b21a73"
+checksum = "4d72166dd41634086d5803a47eb71ae740e61d84709c36f3c34110173db3961b"
 dependencies = [
  "anstream",
  "anstyle",
@@ -415,9 +415,9 @@ dependencies = [
 
 [[package]]
 name = "clap_derive"
-version = "4.5.13"
+version = "4.5.18"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "501d359d5f3dcaf6ecdeee48833ae73ec6e42723a1e52419c79abf9507eec0a0"
+checksum = "4ac6a0c7b1a9e9a5186361f67dfa1b88213572f427fb9ab038efb2bd8c582dab"
 dependencies = [
  "heck 0.5.0",
  "proc-macro2",
@@ -791,9 +791,9 @@ dependencies = [
 
 [[package]]
 name = "fake"
-version = "2.9.2"
+version = "2.10.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1c25829bde82205da46e1823b2259db6273379f626fc211f126f65654a2669be"
+checksum = "2d391ba4af7f1d93f01fcf7b2f29e2bc9348e109dfdbf4dcbdc51dfa38dab0b6"
 dependencies = [
  "deunicode",
  "rand",
@@ -1719,9 +1719,9 @@ dependencies = [
 
 [[package]]
 name = "hyper-util"
-version = "0.1.8"
+version = "0.1.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "da62f120a8a37763efb0cf8fdf264b884c7b8b9ac8660b900c8661030c00e6ba"
+checksum = "41296eb09f183ac68eec06e03cdbea2e759633d4067b2f6552fc2e009bcad08b"
 dependencies = [
  "bytes",
  "futures-channel",
@@ -1732,7 +1732,6 @@ dependencies = [
  "pin-project-lite",
  "socket2",
  "tokio",
- "tower 0.4.13",
  "tower-service",
  "tracing",
 ]
@@ -2994,7 +2993,7 @@ dependencies = [
  "jemallocator",
  "log",
  "tokio",
- "tower 0.5.1",
+ "tower",
  "tower-http",
  "wasm-bindgen-futures",
  "wasm-logger",
@@ -3167,18 +3166,18 @@ dependencies = [
 
 [[package]]
 name = "thiserror"
-version = "1.0.63"
+version = "1.0.64"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724"
+checksum = "d50af8abc119fb8bb6dbabcfa89656f46f84aa0ac7688088608076ad2b459a84"
 dependencies = [
  "thiserror-impl",
 ]
 
 [[package]]
 name = "thiserror-impl"
-version = "1.0.63"
+version = "1.0.64"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261"
+checksum = "08904e7672f5eb876eaaf87e0ce17857500934f4981c4a0ab2b4aa98baac7fc3"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -3382,40 +3381,27 @@ dependencies = [
  "winnow 0.6.18",
 ]
 
-[[package]]
-name = "tower"
-version = "0.4.13"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c"
-dependencies = [
- "futures-core",
- "futures-util",
- "pin-project",
- "pin-project-lite",
- "tokio",
- "tower-layer",
- "tower-service",
- "tracing",
-]
-
 [[package]]
 name = "tower"
 version = "0.5.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "2873938d487c3cfb9aed7546dc9f2711d867c9f90c46b889989a2cb84eba6b4f"
 dependencies = [
+ "futures-core",
  "futures-util",
  "pin-project-lite",
+ "sync_wrapper 0.1.2",
  "tokio",
  "tower-layer",
  "tower-service",
+ "tracing",
 ]
 
 [[package]]
 name = "tower-http"
-version = "0.6.0"
+version = "0.6.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "41515cc9e193536d93fd0dbbea0c73819c08eca76e0b30909a325c3ec90985bb"
+checksum = "8437150ab6bbc8c5f0f519e3d5ed4aa883a83dd4cdd3d1b21f9482936046cb97"
 dependencies = [
  "bitflags",
  "bytes",
diff --git a/examples/keyed_list/Cargo.toml b/examples/keyed_list/Cargo.toml
index f207c4ea9c5..fd4a42256b9 100644
--- a/examples/keyed_list/Cargo.toml
+++ b/examples/keyed_list/Cargo.toml
@@ -6,7 +6,7 @@ edition = "2021"
 license = "MIT OR Apache-2.0"
 
 [dependencies]
-fake = "2.9.2"
+fake = "2.10.0"
 getrandom = { version = "0.2", features = ["js"] }
 instant = { version = "0.1", features = ["wasm-bindgen"] }
 log = "0.4"
diff --git a/examples/ssr_router/Cargo.toml b/examples/ssr_router/Cargo.toml
index 9a507346f88..59ec34e76b5 100644
--- a/examples/ssr_router/Cargo.toml
+++ b/examples/ssr_router/Cargo.toml
@@ -18,7 +18,7 @@ yew = { path = "../../packages/yew" }
 function_router = { path = "../function_router" }
 log = "0.4"
 futures = { version = "0.3", features = ["std"], default-features = false }
-hyper-util = "0.1.8"
+hyper-util = "0.1.9"
 
 [target.'cfg(target_arch = "wasm32")'.dependencies]
 wasm-bindgen-futures = "0.4"

From 03c0f7ee12e2fdb0b37c8c8ea3b7f2cef2195a80 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Wed, 2 Oct 2024 02:49:43 +0800
Subject: [PATCH 35/44] Bump the website-deps group in /website with 5 updates
 (#3740)

Bumps the website-deps group in /website with 5 updates:

| Package | From | To |
| --- | --- | --- |
| [sass](https://github.com/sass/dart-sass) | `1.77.8` | `1.79.4` |
| [@types/react](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react) | `18.3.5` | `18.3.10` |
| [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) | `8.3.0` | `8.8.0` |
| [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) | `8.3.0` | `8.8.0` |
| [typescript](https://github.com/microsoft/TypeScript) | `5.5.4` | `5.6.2` |


Updates `sass` from 1.77.8 to 1.79.4
- [Release notes](https://github.com/sass/dart-sass/releases)
- [Changelog](https://github.com/sass/dart-sass/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sass/dart-sass/compare/1.77.8...1.79.4)

Updates `@types/react` from 18.3.5 to 18.3.10
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react)

Updates `@typescript-eslint/eslint-plugin` from 8.3.0 to 8.8.0
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.8.0/packages/eslint-plugin)

Updates `@typescript-eslint/parser` from 8.3.0 to 8.8.0
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.8.0/packages/parser)

Updates `typescript` from 5.5.4 to 5.6.2
- [Release notes](https://github.com/microsoft/TypeScript/releases)
- [Changelog](https://github.com/microsoft/TypeScript/blob/main/azure-pipelines.release.yml)
- [Commits](https://github.com/microsoft/TypeScript/compare/v5.5.4...v5.6.2)

---
updated-dependencies:
- dependency-name: sass
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: website-deps
- dependency-name: "@types/react"
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: website-deps
- dependency-name: "@typescript-eslint/eslint-plugin"
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: website-deps
- dependency-name: "@typescript-eslint/parser"
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: website-deps
- dependency-name: typescript
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: website-deps
...

Signed-off-by: dependabot[bot] 
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
 website/package-lock.json | 140 ++++++++++++++++++++++----------------
 website/package.json      |  10 +--
 2 files changed, 88 insertions(+), 62 deletions(-)

diff --git a/website/package-lock.json b/website/package-lock.json
index 3a267ff874b..a125dbc65f0 100644
--- a/website/package-lock.json
+++ b/website/package-lock.json
@@ -18,20 +18,20 @@
                 "file-loader": "^6.2.0",
                 "react": "^18.3.1",
                 "react-dom": "^18.3.1",
-                "sass": "^1.77.8",
+                "sass": "^1.79.4",
                 "url-loader": "^4.1.1"
             },
             "devDependencies": {
                 "@docusaurus/module-type-aliases": "^3.0.0",
                 "@docusaurus/tsconfig": "3.5.2",
-                "@types/react": "^18.3.5",
+                "@types/react": "^18.3.10",
                 "@types/react-helmet": "^6.1.11",
                 "@types/react-router-dom": "^5.3.3",
-                "@typescript-eslint/eslint-plugin": "^8.3.0",
-                "@typescript-eslint/parser": "^8.3.0",
+                "@typescript-eslint/eslint-plugin": "^8.8.0",
+                "@typescript-eslint/parser": "^8.8.0",
                 "dir-compare": "^5.0.0",
                 "prettier": "^3.3.3",
-                "typescript": "^5.5.4"
+                "typescript": "^5.6.2"
             },
             "engines": {
                 "node": ">=18.0"
@@ -3698,9 +3698,9 @@
             "integrity": "sha512-+0autS93xyXizIYiyL02FCY8N+KkKPhILhcUSA276HxzreZ16kl+cmwvV2qAM/PuCCwPXzOXOWhiPcw20uSFcA=="
         },
         "node_modules/@types/react": {
-            "version": "18.3.5",
-            "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.5.tgz",
-            "integrity": "sha512-WeqMfGJLGuLCqHGYRGHxnKrXcTitc6L/nBUWfWPcTarG3t9PsquqUMuVeXZeca+mglY4Vo5GZjCi0A3Or2lnxA==",
+            "version": "18.3.10",
+            "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.10.tgz",
+            "integrity": "sha512-02sAAlBnP39JgXwkAq3PeU9DVaaGpZyF3MGcC0MKgQVkZor5IiiDAipVaxQHtDJAmO4GIy/rVBy/LzVj76Cyqg==",
             "dependencies": {
                 "@types/prop-types": "*",
                 "csstype": "^3.0.2"
@@ -3819,16 +3819,16 @@
             "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ=="
         },
         "node_modules/@typescript-eslint/eslint-plugin": {
-            "version": "8.3.0",
-            "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.3.0.tgz",
-            "integrity": "sha512-FLAIn63G5KH+adZosDYiutqkOkYEx0nvcwNNfJAf+c7Ae/H35qWwTYvPZUKFj5AS+WfHG/WJJfWnDnyNUlp8UA==",
+            "version": "8.8.0",
+            "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.8.0.tgz",
+            "integrity": "sha512-wORFWjU30B2WJ/aXBfOm1LX9v9nyt9D3jsSOxC3cCaTQGCW5k4jNpmjFv3U7p/7s4yvdjHzwtv2Sd2dOyhjS0A==",
             "dev": true,
             "dependencies": {
                 "@eslint-community/regexpp": "^4.10.0",
-                "@typescript-eslint/scope-manager": "8.3.0",
-                "@typescript-eslint/type-utils": "8.3.0",
-                "@typescript-eslint/utils": "8.3.0",
-                "@typescript-eslint/visitor-keys": "8.3.0",
+                "@typescript-eslint/scope-manager": "8.8.0",
+                "@typescript-eslint/type-utils": "8.8.0",
+                "@typescript-eslint/utils": "8.8.0",
+                "@typescript-eslint/visitor-keys": "8.8.0",
                 "graphemer": "^1.4.0",
                 "ignore": "^5.3.1",
                 "natural-compare": "^1.4.0",
@@ -3852,15 +3852,15 @@
             }
         },
         "node_modules/@typescript-eslint/parser": {
-            "version": "8.3.0",
-            "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.3.0.tgz",
-            "integrity": "sha512-h53RhVyLu6AtpUzVCYLPhZGL5jzTD9fZL+SYf/+hYOx2bDkyQXztXSc4tbvKYHzfMXExMLiL9CWqJmVz6+78IQ==",
+            "version": "8.8.0",
+            "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.8.0.tgz",
+            "integrity": "sha512-uEFUsgR+tl8GmzmLjRqz+VrDv4eoaMqMXW7ruXfgThaAShO9JTciKpEsB+TvnfFfbg5IpujgMXVV36gOJRLtZg==",
             "dev": true,
             "dependencies": {
-                "@typescript-eslint/scope-manager": "8.3.0",
-                "@typescript-eslint/types": "8.3.0",
-                "@typescript-eslint/typescript-estree": "8.3.0",
-                "@typescript-eslint/visitor-keys": "8.3.0",
+                "@typescript-eslint/scope-manager": "8.8.0",
+                "@typescript-eslint/types": "8.8.0",
+                "@typescript-eslint/typescript-estree": "8.8.0",
+                "@typescript-eslint/visitor-keys": "8.8.0",
                 "debug": "^4.3.4"
             },
             "engines": {
@@ -3880,13 +3880,13 @@
             }
         },
         "node_modules/@typescript-eslint/scope-manager": {
-            "version": "8.3.0",
-            "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.3.0.tgz",
-            "integrity": "sha512-mz2X8WcN2nVu5Hodku+IR8GgCOl4C0G/Z1ruaWN4dgec64kDBabuXyPAr+/RgJtumv8EEkqIzf3X2U5DUKB2eg==",
+            "version": "8.8.0",
+            "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.8.0.tgz",
+            "integrity": "sha512-EL8eaGC6gx3jDd8GwEFEV091210U97J0jeEHrAYvIYosmEGet4wJ+g0SYmLu+oRiAwbSA5AVrt6DxLHfdd+bUg==",
             "dev": true,
             "dependencies": {
-                "@typescript-eslint/types": "8.3.0",
-                "@typescript-eslint/visitor-keys": "8.3.0"
+                "@typescript-eslint/types": "8.8.0",
+                "@typescript-eslint/visitor-keys": "8.8.0"
             },
             "engines": {
                 "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -3897,13 +3897,13 @@
             }
         },
         "node_modules/@typescript-eslint/type-utils": {
-            "version": "8.3.0",
-            "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.3.0.tgz",
-            "integrity": "sha512-wrV6qh//nLbfXZQoj32EXKmwHf4b7L+xXLrP3FZ0GOUU72gSvLjeWUl5J5Ue5IwRxIV1TfF73j/eaBapxx99Lg==",
+            "version": "8.8.0",
+            "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.8.0.tgz",
+            "integrity": "sha512-IKwJSS7bCqyCeG4NVGxnOP6lLT9Okc3Zj8hLO96bpMkJab+10HIfJbMouLrlpyOr3yrQ1cA413YPFiGd1mW9/Q==",
             "dev": true,
             "dependencies": {
-                "@typescript-eslint/typescript-estree": "8.3.0",
-                "@typescript-eslint/utils": "8.3.0",
+                "@typescript-eslint/typescript-estree": "8.8.0",
+                "@typescript-eslint/utils": "8.8.0",
                 "debug": "^4.3.4",
                 "ts-api-utils": "^1.3.0"
             },
@@ -3921,9 +3921,9 @@
             }
         },
         "node_modules/@typescript-eslint/types": {
-            "version": "8.3.0",
-            "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.3.0.tgz",
-            "integrity": "sha512-y6sSEeK+facMaAyixM36dQ5NVXTnKWunfD1Ft4xraYqxP0lC0POJmIaL/mw72CUMqjY9qfyVfXafMeaUj0noWw==",
+            "version": "8.8.0",
+            "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.8.0.tgz",
+            "integrity": "sha512-QJwc50hRCgBd/k12sTykOJbESe1RrzmX6COk8Y525C9l7oweZ+1lw9JiU56im7Amm8swlz00DRIlxMYLizr2Vw==",
             "dev": true,
             "engines": {
                 "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -3934,13 +3934,13 @@
             }
         },
         "node_modules/@typescript-eslint/typescript-estree": {
-            "version": "8.3.0",
-            "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.3.0.tgz",
-            "integrity": "sha512-Mq7FTHl0R36EmWlCJWojIC1qn/ZWo2YiWYc1XVtasJ7FIgjo0MVv9rZWXEE7IK2CGrtwe1dVOxWwqXUdNgfRCA==",
+            "version": "8.8.0",
+            "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.8.0.tgz",
+            "integrity": "sha512-ZaMJwc/0ckLz5DaAZ+pNLmHv8AMVGtfWxZe/x2JVEkD5LnmhWiQMMcYT7IY7gkdJuzJ9P14fRy28lUrlDSWYdw==",
             "dev": true,
             "dependencies": {
-                "@typescript-eslint/types": "8.3.0",
-                "@typescript-eslint/visitor-keys": "8.3.0",
+                "@typescript-eslint/types": "8.8.0",
+                "@typescript-eslint/visitor-keys": "8.8.0",
                 "debug": "^4.3.4",
                 "fast-glob": "^3.3.2",
                 "is-glob": "^4.0.3",
@@ -3986,15 +3986,15 @@
             }
         },
         "node_modules/@typescript-eslint/utils": {
-            "version": "8.3.0",
-            "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.3.0.tgz",
-            "integrity": "sha512-F77WwqxIi/qGkIGOGXNBLV7nykwfjLsdauRB/DOFPdv6LTF3BHHkBpq81/b5iMPSF055oO2BiivDJV4ChvNtXA==",
+            "version": "8.8.0",
+            "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.8.0.tgz",
+            "integrity": "sha512-QE2MgfOTem00qrlPgyByaCHay9yb1+9BjnMFnSFkUKQfu7adBXDTnCAivURnuPPAG/qiB+kzKkZKmKfaMT0zVg==",
             "dev": true,
             "dependencies": {
                 "@eslint-community/eslint-utils": "^4.4.0",
-                "@typescript-eslint/scope-manager": "8.3.0",
-                "@typescript-eslint/types": "8.3.0",
-                "@typescript-eslint/typescript-estree": "8.3.0"
+                "@typescript-eslint/scope-manager": "8.8.0",
+                "@typescript-eslint/types": "8.8.0",
+                "@typescript-eslint/typescript-estree": "8.8.0"
             },
             "engines": {
                 "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -4008,12 +4008,12 @@
             }
         },
         "node_modules/@typescript-eslint/visitor-keys": {
-            "version": "8.3.0",
-            "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.3.0.tgz",
-            "integrity": "sha512-RmZwrTbQ9QveF15m/Cl28n0LXD6ea2CjkhH5rQ55ewz3H24w+AMCJHPVYaZ8/0HoG8Z3cLLFFycRXxeO2tz9FA==",
+            "version": "8.8.0",
+            "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.8.0.tgz",
+            "integrity": "sha512-8mq51Lx6Hpmd7HnA2fcHQo3YgfX1qbccxQOgZcb4tvasu//zXRaA1j5ZRFeCw/VRAdFi4mRM9DnZw0Nu0Q2d1g==",
             "dev": true,
             "dependencies": {
-                "@typescript-eslint/types": "8.3.0",
+                "@typescript-eslint/types": "8.8.0",
                 "eslint-visitor-keys": "^3.4.3"
             },
             "engines": {
@@ -13239,11 +13239,11 @@
             "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
         },
         "node_modules/sass": {
-            "version": "1.77.8",
-            "resolved": "https://registry.npmjs.org/sass/-/sass-1.77.8.tgz",
-            "integrity": "sha512-4UHg6prsrycW20fqLGPShtEvo/WyHRVRHwOP4DzkUrObWoWI05QBSfzU71TVB7PFaL104TwNaHpjlWXAZbQiNQ==",
+            "version": "1.79.4",
+            "resolved": "https://registry.npmjs.org/sass/-/sass-1.79.4.tgz",
+            "integrity": "sha512-K0QDSNPXgyqO4GZq2HO5Q70TLxTH6cIT59RdoCHMivrC8rqzaTw5ab9prjz9KUN1El4FLXrBXJhik61JR4HcGg==",
             "dependencies": {
-                "chokidar": ">=3.0.0 <4.0.0",
+                "chokidar": "^4.0.0",
                 "immutable": "^4.0.0",
                 "source-map-js": ">=0.6.2 <2.0.0"
             },
@@ -13307,6 +13307,32 @@
                 "url": "https://opencollective.com/webpack"
             }
         },
+        "node_modules/sass/node_modules/chokidar": {
+            "version": "4.0.1",
+            "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.1.tgz",
+            "integrity": "sha512-n8enUVCED/KVRQlab1hr3MVpcVMvxtZjmEa956u+4YijlmQED223XMSYj2tLuKvr4jcCTzNNMpQDUer72MMmzA==",
+            "dependencies": {
+                "readdirp": "^4.0.1"
+            },
+            "engines": {
+                "node": ">= 14.16.0"
+            },
+            "funding": {
+                "url": "https://paulmillr.com/funding/"
+            }
+        },
+        "node_modules/sass/node_modules/readdirp": {
+            "version": "4.0.1",
+            "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.0.1.tgz",
+            "integrity": "sha512-GkMg9uOTpIWWKbSsgwb5fA4EavTR+SG/PMPoAY8hkhHfEEY0/vqljY+XHqtDf2cr2IJtoNRDbrrEpZUiZCkYRw==",
+            "engines": {
+                "node": ">= 14.16.0"
+            },
+            "funding": {
+                "type": "individual",
+                "url": "https://paulmillr.com/funding/"
+            }
+        },
         "node_modules/sax": {
             "version": "1.4.1",
             "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz",
@@ -14334,9 +14360,9 @@
             }
         },
         "node_modules/typescript": {
-            "version": "5.5.4",
-            "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz",
-            "integrity": "sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==",
+            "version": "5.6.2",
+            "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.2.tgz",
+            "integrity": "sha512-NW8ByodCSNCwZeghjN3o+JX5OFH0Ojg6sadjEKY4huZ52TqbJTJnDo5+Tw98lSy63NZvi4n+ez5m2u5d4PkZyw==",
             "bin": {
                 "tsc": "bin/tsc",
                 "tsserver": "bin/tsserver"
diff --git a/website/package.json b/website/package.json
index 44c315767aa..58dd42c09fd 100644
--- a/website/package.json
+++ b/website/package.json
@@ -27,7 +27,7 @@
         "file-loader": "^6.2.0",
         "react": "^18.3.1",
         "react-dom": "^18.3.1",
-        "sass": "^1.77.8",
+        "sass": "^1.79.4",
         "url-loader": "^4.1.1"
     },
     "browserslist": {
@@ -48,13 +48,13 @@
     "devDependencies": {
         "@docusaurus/module-type-aliases": "^3.0.0",
         "@docusaurus/tsconfig": "3.5.2",
-        "@types/react": "^18.3.5",
+        "@types/react": "^18.3.10",
         "@types/react-helmet": "^6.1.11",
         "@types/react-router-dom": "^5.3.3",
-        "@typescript-eslint/eslint-plugin": "^8.3.0",
-        "@typescript-eslint/parser": "^8.3.0",
+        "@typescript-eslint/eslint-plugin": "^8.8.0",
+        "@typescript-eslint/parser": "^8.8.0",
         "dir-compare": "^5.0.0",
         "prettier": "^3.3.3",
-        "typescript": "^5.5.4"
+        "typescript": "^5.6.2"
     }
 }

From 2b49f4be04f4fd63ba75948e0c5b7a605021a149 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Fri, 4 Oct 2024 16:05:45 +0800
Subject: [PATCH 36/44] Bump the cargo-deps group with 7 updates (#3741)

---
 Cargo.lock                     | 207 ++++++++++++---------------------
 examples/simple_ssr/Cargo.toml |   2 +-
 2 files changed, 73 insertions(+), 136 deletions(-)

diff --git a/Cargo.lock b/Cargo.lock
index 094f9fe8c54..6063cb22d8d 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -110,7 +110,7 @@ checksum = "6e0c28dcc82d7c8ead5cb13beb15405b57b8546e93215673ff8ca0349a028107"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.77",
+ "syn 2.0.79",
 ]
 
 [[package]]
@@ -157,9 +157,9 @@ dependencies = [
 
 [[package]]
 name = "axum"
-version = "0.7.6"
+version = "0.7.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8f43644eed690f5374f1af436ecd6aea01cd201f6fbdf0178adaf6907afb2cec"
+checksum = "504e3947307ac8326a5437504c517c4b56716c9d98fac0028c2acc7ca47d70ae"
 dependencies = [
  "async-trait",
  "axum-core",
@@ -191,9 +191,9 @@ dependencies = [
 
 [[package]]
 name = "axum-core"
-version = "0.4.4"
+version = "0.4.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5e6b8ba012a258d63c9adfa28b9ddcf66149da6f986c5b5452e629d5ee64bf00"
+checksum = "09f2bd6146b97ae3359fa0cc6d6b376d9539582c7b4220f041a33ec24c226199"
 dependencies = [
  "async-trait",
  "bytes",
@@ -387,14 +387,14 @@ dependencies = [
  "js-sys",
  "num-traits",
  "wasm-bindgen",
- "windows-targets 0.52.6",
+ "windows-targets",
 ]
 
 [[package]]
 name = "clap"
-version = "4.5.18"
+version = "4.5.19"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b0956a43b323ac1afaffc053ed5c4b7c1f1800bacd1683c353aabbb752515dd3"
+checksum = "7be5744db7978a28d9df86a214130d106a89ce49644cbc4e3f0c22c3fba30615"
 dependencies = [
  "clap_builder",
  "clap_derive",
@@ -402,9 +402,9 @@ dependencies = [
 
 [[package]]
 name = "clap_builder"
-version = "4.5.18"
+version = "4.5.19"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4d72166dd41634086d5803a47eb71ae740e61d84709c36f3c34110173db3961b"
+checksum = "a5fbc17d3ef8278f55b282b2a2e75ae6f6c7d4bb70ed3d0382375104bfafdb4b"
 dependencies = [
  "anstream",
  "anstyle",
@@ -422,7 +422,7 @@ dependencies = [
  "heck 0.5.0",
  "proc-macro2",
  "quote",
- "syn 2.0.77",
+ "syn 2.0.79",
 ]
 
 [[package]]
@@ -587,7 +587,7 @@ dependencies = [
  "proc-macro2",
  "quote",
  "strsim",
- "syn 2.0.77",
+ "syn 2.0.79",
 ]
 
 [[package]]
@@ -598,7 +598,7 @@ checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806"
 dependencies = [
  "darling_core",
  "quote",
- "syn 2.0.77",
+ "syn 2.0.79",
 ]
 
 [[package]]
@@ -634,7 +634,7 @@ dependencies = [
  "darling",
  "proc-macro2",
  "quote",
- "syn 2.0.77",
+ "syn 2.0.79",
 ]
 
 [[package]]
@@ -644,7 +644,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "206868b8242f27cecce124c19fd88157fbd0dd334df2587f36417bafbc85097b"
 dependencies = [
  "derive_builder_core",
- "syn 2.0.77",
+ "syn 2.0.79",
 ]
 
 [[package]]
@@ -664,7 +664,7 @@ checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.77",
+ "syn 2.0.79",
 ]
 
 [[package]]
@@ -705,7 +705,7 @@ checksum = "27540baf49be0d484d8f0130d7d8da3011c32a44d4fc873368154f1510e574a2"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.77",
+ "syn 2.0.79",
 ]
 
 [[package]]
@@ -975,7 +975,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.77",
+ "syn 2.0.79",
 ]
 
 [[package]]
@@ -1438,7 +1438,7 @@ dependencies = [
  "proc-macro-crate",
  "proc-macro2",
  "quote",
- "syn 2.0.77",
+ "syn 2.0.79",
 ]
 
 [[package]]
@@ -1490,9 +1490,9 @@ dependencies = [
 
 [[package]]
 name = "hashbrown"
-version = "0.14.5"
+version = "0.15.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1"
+checksum = "1e087f84d4f86bf4b218b927129862374b72199ae7d8657835f1e89000eea4fb"
 
 [[package]]
 name = "headers"
@@ -1802,14 +1802,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "9311685eb9a34808bbb0608ad2fcab9ae216266beca5848613e95553ac914e3b"
 dependencies = [
  "quote",
- "syn 2.0.77",
+ "syn 2.0.79",
 ]
 
 [[package]]
 name = "indexmap"
-version = "2.5.0"
+version = "2.6.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "68b900aa2f7301e21c36462b170ee99994de34dff39a4a6a528e80e7376d07e5"
+checksum = "707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da"
 dependencies = [
  "equivalent",
  "hashbrown",
@@ -2224,9 +2224,12 @@ dependencies = [
 
 [[package]]
 name = "once_cell"
-version = "1.19.0"
+version = "1.20.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92"
+checksum = "82881c4be219ab5faaf2ad5e5e5ecdff8c66bd7402ca3160975c93b24961afd1"
+dependencies = [
+ "portable-atomic",
+]
 
 [[package]]
 name = "openssl"
@@ -2251,7 +2254,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.77",
+ "syn 2.0.79",
 ]
 
 [[package]]
@@ -2303,7 +2306,7 @@ dependencies = [
  "libc",
  "redox_syscall",
  "smallvec",
- "windows-targets 0.52.6",
+ "windows-targets",
 ]
 
 [[package]]
@@ -2342,7 +2345,7 @@ checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.77",
+ "syn 2.0.79",
 ]
 
 [[package]]
@@ -2423,7 +2426,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "479cf940fbbb3426c32c5d5176f62ad57549a0bb84773423ba8be9d089f5faba"
 dependencies = [
  "proc-macro2",
- "syn 2.0.77",
+ "syn 2.0.79",
 ]
 
 [[package]]
@@ -2562,9 +2565,9 @@ dependencies = [
 
 [[package]]
 name = "regex"
-version = "1.10.6"
+version = "1.11.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4219d74c6b67a3654a9fbebc4b419e22126d13d2f3c4a07ee0cb61ff79a79619"
+checksum = "38200e5ee88914975b69f657f0801b6f6dccafd44fd9326302a4aaeecfacb1d8"
 dependencies = [
  "aho-corasick",
  "memchr",
@@ -2574,9 +2577,9 @@ dependencies = [
 
 [[package]]
 name = "regex-automata"
-version = "0.4.7"
+version = "0.4.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df"
+checksum = "368758f23274712b504848e9d5a6f010445cc8b87a7cdb4d7cbee666c1288da3"
 dependencies = [
  "aho-corasick",
  "memchr",
@@ -2591,15 +2594,15 @@ checksum = "53a49587ad06b26609c52e423de037e7f57f20d53535d66e08c695f347df952a"
 
 [[package]]
 name = "regex-syntax"
-version = "0.8.4"
+version = "0.8.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b"
+checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c"
 
 [[package]]
 name = "reqwest"
-version = "0.12.7"
+version = "0.12.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f8f4955649ef5c38cc7f9e8aa41761d48fb9677197daea9984dc54f56aad5e63"
+checksum = "f713147fbe92361e52392c73b8c9e48c04c6625bce969ef54dc901e58e042a7b"
 dependencies = [
  "base64 0.22.1",
  "bytes",
@@ -2855,7 +2858,7 @@ checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.77",
+ "syn 2.0.79",
 ]
 
 [[package]]
@@ -3031,7 +3034,7 @@ dependencies = [
  "proc-macro2",
  "quote",
  "rustversion",
- "syn 2.0.77",
+ "syn 2.0.79",
 ]
 
 [[package]]
@@ -3064,9 +3067,9 @@ dependencies = [
 
 [[package]]
 name = "syn"
-version = "2.0.77"
+version = "2.0.79"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9f35bcdf61fd8e7be6caf75f429fdca8beb3ed76584befb503b1569faee373ed"
+checksum = "89132cd0bf050864e1d38dc3bbc07a0eb8e7530af26344d3d2bbbef83499f590"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -3156,12 +3159,12 @@ dependencies = [
 
 [[package]]
 name = "terminal_size"
-version = "0.3.0"
+version = "0.4.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "21bebf2b7c9e0a515f6e0f8c51dc0f8e4696391e6f1ff30379559f8365fb0df7"
+checksum = "4f599bd7ca042cfdf8f4512b277c02ba102247820f9d9d4a9f521f496751a6ef"
 dependencies = [
  "rustix",
- "windows-sys 0.48.0",
+ "windows-sys 0.59.0",
 ]
 
 [[package]]
@@ -3181,7 +3184,7 @@ checksum = "08904e7672f5eb876eaaf87e0ce17857500934f4981c4a0ab2b4aa98baac7fc3"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.77",
+ "syn 2.0.79",
 ]
 
 [[package]]
@@ -3276,7 +3279,7 @@ checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.77",
+ "syn 2.0.79",
 ]
 
 [[package]]
@@ -3454,7 +3457,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.77",
+ "syn 2.0.79",
 ]
 
 [[package]]
@@ -3693,7 +3696,7 @@ dependencies = [
  "once_cell",
  "proc-macro2",
  "quote",
- "syn 2.0.77",
+ "syn 2.0.79",
  "wasm-bindgen-shared",
 ]
 
@@ -3727,7 +3730,7 @@ checksum = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.77",
+ "syn 2.0.79",
  "wasm-bindgen-backend",
  "wasm-bindgen-shared",
 ]
@@ -3761,7 +3764,7 @@ checksum = "4b8220be1fa9e4c889b30fd207d4906657e7e90b12e0e6b0c8b8d8709f5de021"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.77",
+ "syn 2.0.79",
 ]
 
 [[package]]
@@ -3851,7 +3854,7 @@ version = "0.52.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9"
 dependencies = [
- "windows-targets 0.52.6",
+ "windows-targets",
 ]
 
 [[package]]
@@ -3862,7 +3865,7 @@ checksum = "e400001bb720a623c1c69032f8e3e4cf09984deec740f007dd2b03ec864804b0"
 dependencies = [
  "windows-result",
  "windows-strings",
- "windows-targets 0.52.6",
+ "windows-targets",
 ]
 
 [[package]]
@@ -3871,7 +3874,7 @@ version = "0.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e"
 dependencies = [
- "windows-targets 0.52.6",
+ "windows-targets",
 ]
 
 [[package]]
@@ -3881,16 +3884,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10"
 dependencies = [
  "windows-result",
- "windows-targets 0.52.6",
-]
-
-[[package]]
-name = "windows-sys"
-version = "0.48.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9"
-dependencies = [
- "windows-targets 0.48.5",
+ "windows-targets",
 ]
 
 [[package]]
@@ -3899,7 +3893,7 @@ version = "0.52.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
 dependencies = [
- "windows-targets 0.52.6",
+ "windows-targets",
 ]
 
 [[package]]
@@ -3908,22 +3902,7 @@ version = "0.59.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b"
 dependencies = [
- "windows-targets 0.52.6",
-]
-
-[[package]]
-name = "windows-targets"
-version = "0.48.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c"
-dependencies = [
- "windows_aarch64_gnullvm 0.48.5",
- "windows_aarch64_msvc 0.48.5",
- "windows_i686_gnu 0.48.5",
- "windows_i686_msvc 0.48.5",
- "windows_x86_64_gnu 0.48.5",
- "windows_x86_64_gnullvm 0.48.5",
- "windows_x86_64_msvc 0.48.5",
+ "windows-targets",
 ]
 
 [[package]]
@@ -3932,46 +3911,28 @@ version = "0.52.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"
 dependencies = [
- "windows_aarch64_gnullvm 0.52.6",
- "windows_aarch64_msvc 0.52.6",
- "windows_i686_gnu 0.52.6",
+ "windows_aarch64_gnullvm",
+ "windows_aarch64_msvc",
+ "windows_i686_gnu",
  "windows_i686_gnullvm",
- "windows_i686_msvc 0.52.6",
- "windows_x86_64_gnu 0.52.6",
- "windows_x86_64_gnullvm 0.52.6",
- "windows_x86_64_msvc 0.52.6",
+ "windows_i686_msvc",
+ "windows_x86_64_gnu",
+ "windows_x86_64_gnullvm",
+ "windows_x86_64_msvc",
 ]
 
-[[package]]
-name = "windows_aarch64_gnullvm"
-version = "0.48.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"
-
 [[package]]
 name = "windows_aarch64_gnullvm"
 version = "0.52.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
 
-[[package]]
-name = "windows_aarch64_msvc"
-version = "0.48.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
-
 [[package]]
 name = "windows_aarch64_msvc"
 version = "0.52.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
 
-[[package]]
-name = "windows_i686_gnu"
-version = "0.48.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"
-
 [[package]]
 name = "windows_i686_gnu"
 version = "0.52.6"
@@ -3984,48 +3945,24 @@ version = "0.52.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
 
-[[package]]
-name = "windows_i686_msvc"
-version = "0.48.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"
-
 [[package]]
 name = "windows_i686_msvc"
 version = "0.52.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
 
-[[package]]
-name = "windows_x86_64_gnu"
-version = "0.48.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"
-
 [[package]]
 name = "windows_x86_64_gnu"
 version = "0.52.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
 
-[[package]]
-name = "windows_x86_64_gnullvm"
-version = "0.48.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"
-
 [[package]]
 name = "windows_x86_64_gnullvm"
 version = "0.52.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
 
-[[package]]
-name = "windows_x86_64_msvc"
-version = "0.48.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
-
 [[package]]
 name = "windows_x86_64_msvc"
 version = "0.52.6"
@@ -4097,7 +4034,7 @@ dependencies = [
  "proc-macro2",
  "quote",
  "rustversion",
- "syn 2.0.77",
+ "syn 2.0.79",
  "trybuild",
  "yew-agent",
 ]
@@ -4110,7 +4047,7 @@ checksum = "58865a8f2470a6ad839274e05c9627170d32930f39a2348f8c425880a6131792"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.77",
+ "syn 2.0.79",
 ]
 
 [[package]]
@@ -4123,7 +4060,7 @@ dependencies = [
  "proc-macro2",
  "quote",
  "rustversion",
- "syn 2.0.77",
+ "syn 2.0.79",
  "trybuild",
  "yew",
 ]
@@ -4153,7 +4090,7 @@ dependencies = [
  "proc-macro2",
  "quote",
  "rustversion",
- "syn 2.0.77",
+ "syn 2.0.79",
  "trybuild",
  "yew-router",
 ]
@@ -4200,7 +4137,7 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.77",
+ "syn 2.0.79",
 ]
 
 [[package]]
diff --git a/examples/simple_ssr/Cargo.toml b/examples/simple_ssr/Cargo.toml
index 0d0846f7ce2..00cda4c08e4 100644
--- a/examples/simple_ssr/Cargo.toml
+++ b/examples/simple_ssr/Cargo.toml
@@ -14,7 +14,7 @@ required-features = ["ssr"]
 
 [dependencies]
 yew = { path = "../../packages/yew" }
-reqwest = { version = "0.12.7", features = ["json"] }
+reqwest = { version = "0.12.8", features = ["json"] }
 serde = { version = "1.0.210", features = ["derive"] }
 uuid = { version = "1.10.0", features = ["serde"] }
 futures = "0.3"

From b2cba911ac51e41b46d45c701a936d7bcfcc02b7 Mon Sep 17 00:00:00 2001
From: Raahim Fareed <56921723+raahimfareed@users.noreply.github.com>
Date: Fri, 11 Oct 2024 22:45:35 +0500
Subject: [PATCH 37/44] Fixed a type, edditing to editing (#3539)

---
 website/docs/getting-started/editor-setup.mdx | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/website/docs/getting-started/editor-setup.mdx b/website/docs/getting-started/editor-setup.mdx
index dc0fbf6f634..de6c52d01b2 100644
--- a/website/docs/getting-started/editor-setup.mdx
+++ b/website/docs/getting-started/editor-setup.mdx
@@ -130,7 +130,7 @@ Utilities like Rename, Go to Declaration, Find Usages will work inside the macro
 
 Rust-Yew extension is [available on VSC Marketplace](https://marketplace.visualstudio.com/items?itemName=TechTheAwesome.rust-yew), providing syntax highlight, renames, hover, and more.
 
-Emmet support should work out of the box, if not please fall back to edditing the `settings.json` file:
+Emmet support should work out of the box, if not please fall back to editing the `settings.json` file:
 
 ```json
 "emmet.includeLanguages": {

From 7be9d17ec444d80d21ea258360a06826f701e7f9 Mon Sep 17 00:00:00 2001
From: Oliver Bilbie <68697462+Oliver-Bilbie@users.noreply.github.com>
Date: Fri, 11 Oct 2024 17:46:03 +0000
Subject: [PATCH 38/44] Fix queries in ssr_router example (#3587)

---
 examples/ssr_router/src/bin/ssr_router_server.rs | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/examples/ssr_router/src/bin/ssr_router_server.rs b/examples/ssr_router/src/bin/ssr_router_server.rs
index 5a25266302a..95819169754 100644
--- a/examples/ssr_router/src/bin/ssr_router_server.rs
+++ b/examples/ssr_router/src/bin/ssr_router_server.rs
@@ -40,7 +40,7 @@ async fn render(
     Query(queries): Query>,
     State((index_html_before, index_html_after)): State<(String, String)>,
 ) -> impl IntoResponse {
-    let url = url.to_string();
+    let url = url.path().to_owned();
 
     let renderer = yew::ServerRenderer::::with_props(move || ServerAppProps {
         url: url.into(),

From 3c7e3e3e79e047922aad04ccf11d48ddac91cc36 Mon Sep 17 00:00:00 2001
From: Finn Bear 
Date: Sat, 12 Oct 2024 05:18:29 -0700
Subject: [PATCH 39/44] yew-router: Dynamic basename. (#3725)

* yew-router: Dynamic basename.

* Revisions.

* Test location.path and navigator.basename match expectations at each step.

* Better coverage of edge case.
---
 packages/yew-router/src/navigator.rs |   2 +-
 packages/yew-router/src/router.rs    |  39 ++++++-
 packages/yew-router/tests/link.rs    | 159 +++++++++++++++++++++++++--
 3 files changed, 183 insertions(+), 17 deletions(-)

diff --git a/packages/yew-router/src/navigator.rs b/packages/yew-router/src/navigator.rs
index 48345609f83..dec228821b8 100644
--- a/packages/yew-router/src/navigator.rs
+++ b/packages/yew-router/src/navigator.rs
@@ -159,7 +159,7 @@ impl Navigator {
     pub(crate) fn prefix_basename<'a>(&self, route_s: &'a str) -> Cow<'a, str> {
         match self.basename() {
             Some(base) => {
-                if route_s.is_empty() && route_s.is_empty() {
+                if base.is_empty() && route_s.is_empty() {
                     Cow::from("/")
                 } else {
                     Cow::from(format!("{base}{route_s}"))
diff --git a/packages/yew-router/src/router.rs b/packages/yew-router/src/router.rs
index b3becda9ea1..0c4b4dedf4c 100644
--- a/packages/yew-router/src/router.rs
+++ b/packages/yew-router/src/router.rs
@@ -1,6 +1,8 @@
 //! Router Component.
+use std::borrow::Cow;
 use std::rc::Rc;
 
+use gloo::history::query::Raw;
 use yew::prelude::*;
 use yew::virtual_dom::AttrValue;
 
@@ -72,16 +74,43 @@ fn base_router(props: &RouterProps) -> Html {
         basename,
     } = props.clone();
 
+    let basename = basename.map(|m| strip_slash_suffix(&m).to_owned());
+    let navigator = Navigator::new(history.clone(), basename.clone());
+
+    let old_basename = use_mut_ref(|| Option::::None);
+    let mut old_basename = old_basename.borrow_mut();
+    if basename != *old_basename {
+        // If `old_basename` is `Some`, path is probably prefixed with `old_basename`.
+        // If `old_basename` is `None`, path may or may not be prefixed with the new `basename`,
+        // depending on whether this is the first render.
+        let old_navigator = Navigator::new(
+            history.clone(),
+            old_basename.as_ref().or(basename.as_ref()).cloned(),
+        );
+        *old_basename = basename.clone();
+        let location = history.location();
+        let stripped = old_navigator.strip_basename(Cow::from(location.path()));
+        let prefixed = navigator.prefix_basename(&stripped);
+
+        if prefixed != location.path() {
+            history
+                .replace_with_query(prefixed, Raw(location.query_str()))
+                .unwrap_or_else(|never| match never {});
+        } else {
+            // Reaching here is possible if the page loads with the correct path, including the
+            // initial basename. In that case, the new basename would be stripped and then
+            // prefixed right back. While replacing the history would probably be harmless,
+            // we might as well avoid doing it.
+        }
+    }
+
+    let navi_ctx = NavigatorContext { navigator };
+
     let loc_ctx = use_reducer(|| LocationContext {
         location: history.location(),
         ctr: 0,
     });
 
-    let basename = basename.map(|m| strip_slash_suffix(&m).to_string());
-    let navi_ctx = NavigatorContext {
-        navigator: Navigator::new(history.clone(), basename),
-    };
-
     {
         let loc_ctx_dispatcher = loc_ctx.dispatcher();
 
diff --git a/packages/yew-router/tests/link.rs b/packages/yew-router/tests/link.rs
index 50510b79242..8e3f5bc5f41 100644
--- a/packages/yew-router/tests/link.rs
+++ b/packages/yew-router/tests/link.rs
@@ -1,5 +1,8 @@
+use std::sync::atomic::{AtomicU8, Ordering};
 use std::time::Duration;
 
+use gloo::utils::window;
+use js_sys::{JsString, Object, Reflect};
 use serde::{Deserialize, Serialize};
 use wasm_bindgen_test::{wasm_bindgen_test as test, wasm_bindgen_test_configure};
 use yew::functional::function_component;
@@ -47,8 +50,20 @@ enum Routes {
     Search,
 }
 
+#[derive(PartialEq, Properties)]
+struct NavigationMenuProps {
+    #[prop_or(None)]
+    assertion: Option,
+}
+
 #[function_component(NavigationMenu)]
-fn navigation_menu() -> Html {
+fn navigation_menu(props: &NavigationMenuProps) -> Html {
+    let navigator = use_navigator().unwrap();
+    let location = use_location().unwrap();
+    if let Some(assertion) = props.assertion {
+        assertion(&navigator, &location);
+    }
+
     html! {
         
  • @@ -89,12 +104,11 @@ fn root_for_browser_router() -> Html { } } -#[test] async fn link_in_browser_router() { let div = gloo::utils::document().create_element("div").unwrap(); let _ = div.set_attribute("id", "browser-router"); let _ = gloo::utils::body().append_child(&div); - yew::Renderer::::with_root(div).render(); + let handle = yew::Renderer::::with_root(div).render(); sleep(Duration::ZERO).await; @@ -113,26 +127,77 @@ async fn link_in_browser_router() { "/search?q=Rust&lang=en_US", link_href("#browser-router ul > li.search-q-lang > a") ); + + handle.destroy(); +} + +#[derive(PartialEq, Properties)] +struct BasenameProps { + basename: Option, + assertion: fn(&Navigator, &Location), } #[function_component(RootForBasename)] -fn root_for_basename() -> Html { +fn root_for_basename(props: &BasenameProps) -> Html { html! { - - + + } } -#[test] -async fn link_with_basename() { +async fn link_with_basename(correct_initial_path: bool) { + if correct_initial_path { + let cookie = Object::new(); + Reflect::set(&cookie, &JsString::from("foo"), &JsString::from("bar")).unwrap(); + window() + .history() + .unwrap() + .replace_state_with_url(&cookie, "", Some("/base/")) + .unwrap(); + } + + static RENDERS: AtomicU8 = AtomicU8::new(0); + RENDERS.store(0, Ordering::Relaxed); + let div = gloo::utils::document().create_element("div").unwrap(); let _ = div.set_attribute("id", "with-basename"); let _ = gloo::utils::body().append_child(&div); - yew::Renderer::::with_root(div).render(); + + let mut handle = yew::Renderer::::with_root_and_props( + div, + BasenameProps { + basename: Some("/base/".to_owned()), + assertion: |navigator, location| { + RENDERS.fetch_add(1, Ordering::Relaxed); + assert_eq!(navigator.basename(), Some("/base")); + assert_eq!(location.path(), "/base/"); + }, + }, + ) + .render(); sleep(Duration::ZERO).await; + if correct_initial_path { + // If the initial path was correct, the router shouldn't have mutated the history. + assert_eq!( + Reflect::get( + &window().history().unwrap().state().unwrap(), + &JsString::from("foo") + ) + .unwrap() + .as_string() + .as_deref(), + Some("bar") + ); + } + + assert_eq!( + "/base/", + gloo::utils::window().location().pathname().unwrap() + ); + assert_eq!("/base/posts", link_href("#with-basename ul > li.posts > a")); assert_eq!( "/base/posts?page=2", @@ -151,6 +216,68 @@ async fn link_with_basename() { "/base/search?q=Rust&lang=en_US", link_href("#with-basename ul > li.search-q-lang > a") ); + + // Some(a) -> Some(b) + handle.update(BasenameProps { + basename: Some("/bayes/".to_owned()), + assertion: |navigator, location| { + RENDERS.fetch_add(1, Ordering::Relaxed); + assert_eq!(navigator.basename(), Some("/bayes")); + assert_eq!(location.path(), "/bayes/"); + }, + }); + + sleep(Duration::ZERO).await; + + assert_eq!( + "/bayes/", + gloo::utils::window().location().pathname().unwrap() + ); + + assert_eq!( + "/bayes/posts", + link_href("#with-basename ul > li.posts > a") + ); + + // Some -> None + handle.update(BasenameProps { + basename: None, + assertion: |navigator, location| { + RENDERS.fetch_add(1, Ordering::Relaxed); + assert_eq!(navigator.basename(), None); + assert_eq!(location.path(), "/"); + }, + }); + + sleep(Duration::ZERO).await; + + assert_eq!("/", gloo::utils::window().location().pathname().unwrap()); + + assert_eq!("/posts", link_href("#with-basename ul > li.posts > a")); + + // None -> Some + handle.update(BasenameProps { + basename: Some("/bass/".to_string()), + assertion: |navigator, location| { + RENDERS.fetch_add(1, Ordering::Relaxed); + assert_eq!(navigator.basename(), Some("/bass")); + assert_eq!(location.path(), "/bass/"); + }, + }); + + sleep(Duration::ZERO).await; + + assert_eq!( + "/bass/", + gloo::utils::window().location().pathname().unwrap() + ); + + assert_eq!("/bass/posts", link_href("#with-basename ul > li.posts > a")); + + handle.destroy(); + + // 1 initial, 1 rerender after initial, 3 props changes + assert_eq!(RENDERS.load(Ordering::Relaxed), 5); } #[function_component(RootForHashRouter)] @@ -162,12 +289,11 @@ fn root_for_hash_router() -> Html { } } -#[test] async fn link_in_hash_router() { let div = gloo::utils::document().create_element("div").unwrap(); let _ = div.set_attribute("id", "hash-router"); let _ = gloo::utils::body().append_child(&div); - yew::Renderer::::with_root(div).render(); + let handle = yew::Renderer::::with_root(div).render(); sleep(Duration::ZERO).await; @@ -186,4 +312,15 @@ async fn link_in_hash_router() { "#/search?q=Rust&lang=en_US", link_href("#hash-router ul > li.search-q-lang > a") ); + + handle.destroy(); +} + +// These cannot be run in concurrently because they all read/write the URL. +#[test] +async fn sequential_tests() { + link_in_hash_router().await; + link_in_browser_router().await; + link_with_basename(false).await; + link_with_basename(true).await; } From 4f584577037a7645bcc03526d086b389dc0ff36c Mon Sep 17 00:00:00 2001 From: zhengwu Date: Sat, 12 Oct 2024 20:19:10 +0800 Subject: [PATCH 40/44] chore(website): code block typo (#3574) --- website/docs/more/debugging.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/more/debugging.mdx b/website/docs/more/debugging.mdx index b4b65d805f6..999ca0a710c 100644 --- a/website/docs/more/debugging.mdx +++ b/website/docs/more/debugging.mdx @@ -45,7 +45,7 @@ fn main() { `tracing-web` can be used with [`tracing-subscriber`](https://crates.io/crates/tracing-subscriber) to output messages to the browser console. -```rust, ignore +```rust ,ignore use tracing_subscriber::{ fmt::{ format::{FmtSpan, Pretty}, From 530e805e2a5683f39d3c481f89e1b042e9449434 Mon Sep 17 00:00:00 2001 From: Tushar GH <108387741+Tushar12222@users.noreply.github.com> Date: Sat, 12 Oct 2024 17:49:32 +0530 Subject: [PATCH 41/44] Update editor-setup.mdx (#3585) * Update editor-setup.mdx Fixed typo * Update editor-setup.mdx Fixed a typo --- .../version-0.21/getting-started/editor-setup.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/versioned_docs/version-0.21/getting-started/editor-setup.mdx b/website/versioned_docs/version-0.21/getting-started/editor-setup.mdx index 241d12e5f60..9a2d2ae149a 100644 --- a/website/versioned_docs/version-0.21/getting-started/editor-setup.mdx +++ b/website/versioned_docs/version-0.21/getting-started/editor-setup.mdx @@ -130,7 +130,7 @@ Utilities like Rename, Go to Declaration, Find Usages will work inside the macro Rust-Yew extension is [avaliable on VSC Marketplace](https://marketplace.visualstudio.com/items?itemName=TechTheAwesome.rust-yew), providing syntax highlight, renames, hover, and more. -Emmet support should work out of the box, if not please fall back to edditing the `settings.json` file: +Emmet support should work out of the box, if not please fall back to editing the `settings.json` file: ```json "emmet.includeLanguages": { From e99492e1de5d66e0bfc5f4d9d0154cfc932d41d6 Mon Sep 17 00:00:00 2001 From: Priyadarshan Giri <43517605+giripriyadarshan@users.noreply.github.com> Date: Sat, 12 Oct 2024 14:20:41 +0200 Subject: [PATCH 42/44] node refs example link updated (#3540) --- examples/node_refs/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/node_refs/README.md b/examples/node_refs/README.md index 204a9b86296..379a8a87eef 100644 --- a/examples/node_refs/README.md +++ b/examples/node_refs/README.md @@ -6,7 +6,7 @@ This example shows two input fields which are automatically focused when hovered ## Concepts -The example uses [Refs](https://yew.rs/docs/concepts/components/refs/) to +The example uses [Refs](https://yew.rs/docs/concepts/function-components/node-refs) to manipulate the underlying DOM element directly. ## Running From 197e2d51bca7f5fa6393ef75dc82ee00855f9c2c Mon Sep 17 00:00:00 2001 From: Adam Steinberg <43798340+AdamSteinberg1@users.noreply.github.com> Date: Sat, 12 Oct 2024 08:21:19 -0400 Subject: [PATCH 43/44] Make UseFutureHandle Clone (#3529) * Make UseFutureHandle Clone * Make UseFutureHandle Clone --- packages/yew/src/suspense/hooks.rs | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/packages/yew/src/suspense/hooks.rs b/packages/yew/src/suspense/hooks.rs index 3d975e346fd..488f1d487a1 100644 --- a/packages/yew/src/suspense/hooks.rs +++ b/packages/yew/src/suspense/hooks.rs @@ -15,6 +15,14 @@ pub struct UseFutureHandle { inner: UseStateHandle>, } +impl Clone for UseFutureHandle { + fn clone(&self) -> Self { + Self { + inner: self.inner.clone(), + } + } +} + impl Deref for UseFutureHandle { type Target = O; From bdd1f7e68d16ea9fdda45c2bd9462527031636a5 Mon Sep 17 00:00:00 2001 From: Elina Date: Sat, 12 Oct 2024 20:28:43 +0800 Subject: [PATCH 44/44] fmt --- examples/file_upload/src/main.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/file_upload/src/main.rs b/examples/file_upload/src/main.rs index 93b9de9a05b..49d66bb7906 100644 --- a/examples/file_upload/src/main.rs +++ b/examples/file_upload/src/main.rs @@ -65,7 +65,7 @@ impl Component for App { } fn view(&self, ctx: &Context) -> Html { - let noop_drag = Callback::from( |e: DragEvent| { + let noop_drag = Callback::from(|e: DragEvent| { e.prevent_default(); });