From 416a8b693a409073fa623870bacaa1dd93cd1045 Mon Sep 17 00:00:00 2001 From: Ethan Girouard Date: Fri, 1 Mar 2024 11:59:05 -0500 Subject: [PATCH 01/42] Add leptos_axum package --- Cargo.lock | 157 +++++++++++++++++++++++++++++++++++++++++++++++++++++ Cargo.toml | 2 + 2 files changed, 159 insertions(+) diff --git a/Cargo.lock b/Cargo.lock index 195bd07..899d4ae 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -416,6 +416,64 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +[[package]] +name = "axum" +version = "0.6.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b829e4e32b91e643de6eafe82b1d90675f5874230191a4ffbc1b336dec4d6bf" +dependencies = [ + "async-trait", + "axum-core", + "axum-macros", + "bitflags 1.3.2", + "bytes", + "futures-util", + "http", + "http-body", + "hyper", + "itoa", + "matchit", + "memchr", + "mime", + "percent-encoding", + "pin-project-lite", + "rustversion", + "serde", + "sync_wrapper", + "tower", + "tower-layer", + "tower-service", +] + +[[package]] +name = "axum-core" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "759fa577a247914fd3f7f76d62972792636412fbfd634cd452f6a385a74d2d2c" +dependencies = [ + "async-trait", + "bytes", + "futures-util", + "http", + "http-body", + "mime", + "rustversion", + "tower-layer", + "tower-service", +] + +[[package]] +name = "axum-macros" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdca6a10ecad987bda04e95606ef85a5417dcaac1a78455242d72e031e2b6b62" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "syn 2.0.48", +] + [[package]] name = "backtrace" version = "0.3.69" @@ -1212,6 +1270,18 @@ dependencies = [ "allocator-api2", ] +[[package]] +name = "heck" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" + +[[package]] +name = "hermit-abi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" + [[package]] name = "hkdf" version = "0.12.4" @@ -1524,6 +1594,29 @@ dependencies = [ "tracing", ] +[[package]] +name = "leptos_axum" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6283fd19b98f4f7535b80a32064747028fbf4f88ceac4e2a24e9a7d5ed6caf5a" +dependencies = [ + "axum", + "cfg-if", + "futures", + "http", + "hyper", + "leptos", + "leptos_integration_utils", + "leptos_meta", + "leptos_router", + "once_cell", + "parking_lot", + "serde_json", + "tokio", + "tokio-util", + "tracing", +] + [[package]] name = "leptos_config" version = "0.5.4" @@ -1746,6 +1839,7 @@ dependencies = [ "lazy_static", "leptos", "leptos_actix", + "leptos_axum", "leptos_icons", "leptos_meta", "leptos_router", @@ -1831,6 +1925,12 @@ dependencies = [ "quote", ] +[[package]] +name = "matchit" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94" + [[package]] name = "memchr" version = "2.7.1" @@ -1917,6 +2017,16 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" +[[package]] +name = "num_cpus" +version = "1.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" +dependencies = [ + "hermit-abi", + "libc", +] + [[package]] name = "object" version = "0.32.2" @@ -2450,6 +2560,12 @@ dependencies = [ "semver", ] +[[package]] +name = "rustversion" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4" + [[package]] name = "ryu" version = "1.0.16" @@ -2749,6 +2865,12 @@ dependencies = [ "syn 2.0.48", ] +[[package]] +name = "sync_wrapper" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" + [[package]] name = "system-configuration" version = "0.5.1" @@ -2852,13 +2974,26 @@ dependencies = [ "bytes", "libc", "mio", + "num_cpus", "parking_lot", "pin-project-lite", "signal-hook-registry", "socket2", + "tokio-macros", "windows-sys", ] +[[package]] +name = "tokio-macros" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.48", +] + [[package]] name = "tokio-retry" version = "0.3.0" @@ -2879,6 +3014,8 @@ dependencies = [ "bytes", "futures-core", "futures-sink", + "futures-util", + "hashbrown 0.14.3", "pin-project-lite", "tokio", "tracing", @@ -2927,6 +3064,26 @@ dependencies = [ "winnow", ] +[[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", + "tower-layer", + "tower-service", +] + +[[package]] +name = "tower-layer" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c20c8dbed6283a09604c3e69b4b7eeb54e298b8a600d4d5ecb5ad39de609f1d0" + [[package]] name = "tower-service" version = "0.3.2" diff --git a/Cargo.toml b/Cargo.toml index d22827c..4f27780 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -16,6 +16,7 @@ http = { version = "0.2", optional = true } leptos = { version = "0.5", features = ["nightly"] } leptos_meta = { version = "0.5", features = ["nightly"] } leptos_actix = { version = "0.5", optional = true } +leptos_axum = { version = "0.5", optional = true } leptos_router = { version = "0.5", features = ["nightly"] } wasm-bindgen = "=0.2.89" leptos_icons = { version = "0.1.0", default_features = false, features = [ @@ -48,6 +49,7 @@ ssr = [ "dep:actix-files", "dep:actix-web", "dep:leptos_actix", + "dep:leptos_axum", "leptos/ssr", "leptos_meta/ssr", "leptos_router/ssr", From 4f999e7338de4c35e66169eef522625805e55889 Mon Sep 17 00:00:00 2001 From: Ethan Girouard Date: Fri, 1 Mar 2024 12:02:12 -0500 Subject: [PATCH 02/42] Add tokio crate --- Cargo.lock | 1 + Cargo.toml | 2 ++ 2 files changed, 3 insertions(+) diff --git a/Cargo.lock b/Cargo.lock index 899d4ae..a88bc00 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1847,6 +1847,7 @@ dependencies = [ "pbkdf2", "serde", "time", + "tokio", "wasm-bindgen", ] diff --git a/Cargo.toml b/Cargo.toml index 4f27780..2ce0ab3 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -41,6 +41,7 @@ actix-identity = { version = "0.7.0", optional = true } actix-session = { version = "0.9.0", features = ["redis-rs-session"], optional = true } pbkdf2 = { version = "0.12.2", features = ["simple"], optional = true } futures = { version = "0.3.30", default-features = false, optional = true } +tokio = { version = "1", optional = true } [features] csr = ["leptos/csr", "leptos_meta/csr", "leptos_router/csr"] @@ -62,6 +63,7 @@ ssr = [ "actix-session", "pbkdf2", "futures", + "tokio", ] # Defines a size-optimized profile for the WASM bundle in release mode From 213e43e8359bf6f5cbf67e8c00766e915c96c889 Mon Sep 17 00:00:00 2001 From: Ethan Girouard Date: Fri, 1 Mar 2024 12:26:23 -0500 Subject: [PATCH 03/42] Add axum crate --- Cargo.lock | 21 +++++++++++++++++++-- Cargo.toml | 2 ++ 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index a88bc00..8d61b87 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -439,7 +439,11 @@ dependencies = [ "pin-project-lite", "rustversion", "serde", + "serde_json", + "serde_path_to_error", + "serde_urlencoded", "sync_wrapper", + "tokio", "tower", "tower-layer", "tower-service", @@ -1829,6 +1833,7 @@ dependencies = [ "actix-identity", "actix-session", "actix-web", + "axum", "cfg-if", "console_error_panic_hook", "diesel", @@ -2657,6 +2662,16 @@ dependencies = [ "serde", ] +[[package]] +name = "serde_path_to_error" +version = "0.1.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebd154a240de39fdebcf5775d2675c204d7c13cf39a4c697be6493c8e734337c" +dependencies = [ + "itoa", + "serde", +] + [[package]] name = "serde_qs" version = "0.12.0" @@ -2806,9 +2821,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.11.2" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4dccd0940a2dcdf68d092b8cbab7dc0ad8fa938bf95787e1b916b0e3d0e8e970" +checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" [[package]] name = "socket2" @@ -3075,8 +3090,10 @@ dependencies = [ "futures-util", "pin-project", "pin-project-lite", + "tokio", "tower-layer", "tower-service", + "tracing", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index 2ce0ab3..0ed336b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -42,6 +42,7 @@ actix-session = { version = "0.9.0", features = ["redis-rs-session"], optional = pbkdf2 = { version = "0.12.2", features = ["simple"], optional = true } futures = { version = "0.3.30", default-features = false, optional = true } tokio = { version = "1", optional = true } +axum = { version = "0.6.4", optional = true } [features] csr = ["leptos/csr", "leptos_meta/csr", "leptos_router/csr"] @@ -64,6 +65,7 @@ ssr = [ "pbkdf2", "futures", "tokio", + "axum", ] # Defines a size-optimized profile for the WASM bundle in release mode From f587a70155571f65b87c1454dd5af5da155f6e4f Mon Sep 17 00:00:00 2001 From: Ethan Girouard Date: Fri, 1 Mar 2024 14:23:52 -0500 Subject: [PATCH 04/42] Switch to axum server --- src/main.rs | 58 ++++++++++++++++------------------------------------- 1 file changed, 17 insertions(+), 41 deletions(-) diff --git a/src/main.rs b/src/main.rs index f6a448f..e474dd0 100644 --- a/src/main.rs +++ b/src/main.rs @@ -12,61 +12,37 @@ extern crate diesel; extern crate diesel_migrations; #[cfg(feature = "ssr")] -#[actix_web::main] -async fn main() -> std::io::Result<()> { - use actix_identity::IdentityMiddleware; - use actix_session::storage::RedisSessionStore; - use actix_session::SessionMiddleware; - use actix_web::cookie::Key; +#[tokio::main] +async fn main() { + use axum::Router; + use leptos::*; + use leptos_axum::{generate_route_list, LeptosRoutes}; + use libretunes::app::*; use dotenv::dotenv; dotenv().ok(); // Bring the database up to date libretunes::database::migrate(); - - let session_secret_key = if let Ok(key) = std::env::var("SESSION_SECRET_KEY") { - Key::from(key.as_bytes()) - } else { - Key::generate() - }; let redis_url = std::env::var("REDIS_URL").expect("REDIS_URL must be set"); - let redis_store = RedisSessionStore::new(redis_url).await.unwrap(); - - use actix_files::Files; - use actix_web::*; - use leptos::*; - use leptos_actix::{generate_route_list, LeptosRoutes}; - use libretunes::app::*; let conf = get_configuration(None).await.unwrap(); - let addr = conf.leptos_options.site_addr; + let leptos_options = conf.leptos_options; + let addr = leptos_options.site_addr; // Generate the list of routes in your Leptos App let routes = generate_route_list(App); + + let app = Router::new() + .leptos_routes(&leptos_options, routes, App) + .with_state(leptos_options); + println!("listening on http://{}", &addr); - HttpServer::new(move || { - let leptos_options = &conf.leptos_options; - let site_root = &leptos_options.site_root; - - App::new() - .route("/api/{tail:.*}", leptos_actix::handle_server_fns()) - // serve JS/WASM/CSS from `pkg` - .service(Files::new("/pkg", format!("{site_root}/pkg"))) - // serve other assets from the `assets` directory - .service(Files::new("/assets", site_root)) - // serve the favicon from /favicon.ico - .service(favicon) - .leptos_routes(leptos_options.to_owned(), routes.to_owned(), App) - .app_data(web::Data::new(leptos_options.to_owned())) - .wrap(IdentityMiddleware::default()) - .wrap(SessionMiddleware::new(redis_store.clone(), session_secret_key.clone())) - //.wrap(middleware::Compress::default()) - }) - .bind(&addr)? - .run() - .await + axum::Server::bind(&addr) + .serve(app.into_make_service()) + .await + .unwrap(); } #[cfg(feature = "ssr")] From 37d57eee144e7b5ab12688a95ec702f18e997eff Mon Sep 17 00:00:00 2001 From: Ethan Girouard Date: Fri, 1 Mar 2024 14:33:26 -0500 Subject: [PATCH 05/42] Add tower crate --- Cargo.lock | 1 + Cargo.toml | 2 ++ 2 files changed, 3 insertions(+) diff --git a/Cargo.lock b/Cargo.lock index 8d61b87..f203a21 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1853,6 +1853,7 @@ dependencies = [ "serde", "time", "tokio", + "tower", "wasm-bindgen", ] diff --git a/Cargo.toml b/Cargo.toml index 0ed336b..0fc35b4 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -43,6 +43,7 @@ pbkdf2 = { version = "0.12.2", features = ["simple"], optional = true } futures = { version = "0.3.30", default-features = false, optional = true } tokio = { version = "1", optional = true } axum = { version = "0.6.4", optional = true } +tower = { veresion = "0.4.13", optional = true } [features] csr = ["leptos/csr", "leptos_meta/csr", "leptos_router/csr"] @@ -66,6 +67,7 @@ ssr = [ "futures", "tokio", "axum", + "tower", ] # Defines a size-optimized profile for the WASM bundle in release mode From 939b14403f909fa2e9010efad39b69250cbdab05 Mon Sep 17 00:00:00 2001 From: Ethan Girouard Date: Fri, 1 Mar 2024 14:35:03 -0500 Subject: [PATCH 06/42] Add tower-http crate --- Cargo.lock | 32 ++++++++++++++++++++++++++++++++ Cargo.toml | 2 ++ 2 files changed, 34 insertions(+) diff --git a/Cargo.lock b/Cargo.lock index f203a21..16c80c9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1341,6 +1341,12 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "21dec9db110f5f872ed9699c3ecf50cf16f423502706ba5c72462e28d3157573" +[[package]] +name = "http-range-header" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "add0ab9360ddbd88cfeb3bd9574a1d85cfdfa14db10b3e21d3700dbc4328758f" + [[package]] name = "httparse" version = "1.8.0" @@ -1854,6 +1860,7 @@ dependencies = [ "time", "tokio", "tower", + "tower-http", "wasm-bindgen", ] @@ -3097,6 +3104,31 @@ dependencies = [ "tracing", ] +[[package]] +name = "tower-http" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61c5bb1d698276a2443e5ecfabc1008bf15a36c12e6a7176e7bf089ea9131140" +dependencies = [ + "bitflags 2.4.1", + "bytes", + "futures-core", + "futures-util", + "http", + "http-body", + "http-range-header", + "httpdate", + "mime", + "mime_guess", + "percent-encoding", + "pin-project-lite", + "tokio", + "tokio-util", + "tower-layer", + "tower-service", + "tracing", +] + [[package]] name = "tower-layer" version = "0.3.2" diff --git a/Cargo.toml b/Cargo.toml index 0fc35b4..2ae6cc0 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -44,6 +44,7 @@ futures = { version = "0.3.30", default-features = false, optional = true } tokio = { version = "1", optional = true } axum = { version = "0.6.4", optional = true } tower = { veresion = "0.4.13", optional = true } +tower-http = { version = "0.4", optional = true, features = ["fs"] } [features] csr = ["leptos/csr", "leptos_meta/csr", "leptos_router/csr"] @@ -68,6 +69,7 @@ ssr = [ "tokio", "axum", "tower", + "tower-http", ] # Defines a size-optimized profile for the WASM bundle in release mode From 57fd838e10a6cdd6d7ee3f54a88104a0d9e74711 Mon Sep 17 00:00:00 2001 From: Ethan Girouard Date: Fri, 1 Mar 2024 14:50:42 -0500 Subject: [PATCH 07/42] Add file and error handler --- src/fileserv.rs | 40 ++++++++++++++++++++++++++++++++++++++++ src/lib.rs | 1 + src/main.rs | 2 ++ 3 files changed, 43 insertions(+) create mode 100644 src/fileserv.rs diff --git a/src/fileserv.rs b/src/fileserv.rs new file mode 100644 index 0000000..acc1635 --- /dev/null +++ b/src/fileserv.rs @@ -0,0 +1,40 @@ +use cfg_if::cfg_if; + +cfg_if! { if #[cfg(feature = "ssr")] { + use axum::{ + body::{boxed, Body, BoxBody}, + extract::State, + response::IntoResponse, + http::{Request, Response, StatusCode, Uri}, + }; + use axum::response::Response as AxumResponse; + use tower::ServiceExt; + use tower_http::services::ServeDir; + use leptos::*; + use crate::app::App; + + pub async fn file_and_error_handler(uri: Uri, State(options): State, req: Request) -> AxumResponse { + let root = options.site_root.clone(); + let res = get_static_file(uri.clone(), &root).await.unwrap(); + + if res.status() == StatusCode::OK { + res.into_response() + } else { + let handler = leptos_axum::render_app_to_stream(options.to_owned(), move || view!{}); + handler(req).await.into_response() + } + } + + async fn get_static_file(uri: Uri, root: &str) -> Result, (StatusCode, String)> { + let req = Request::builder().uri(uri.clone()).body(Body::empty()).unwrap(); + // `ServeDir` implements `tower::Service` so we can call it with `tower::ServiceExt::oneshot` + // This path is relative to the cargo root + match ServeDir::new(root).oneshot(req).await { + Ok(res) => Ok(res.map(boxed)), + Err(err) => Err(( + StatusCode::INTERNAL_SERVER_ERROR, + format!("Something went wrong: {err}"), + )), + } + } +}} diff --git a/src/lib.rs b/src/lib.rs index 95ab806..28a9044 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -10,6 +10,7 @@ pub mod models; pub mod pages; pub mod users; pub mod search; +pub mod fileserv; use cfg_if::cfg_if; cfg_if! { diff --git a/src/main.rs b/src/main.rs index e474dd0..246bc78 100644 --- a/src/main.rs +++ b/src/main.rs @@ -18,6 +18,7 @@ async fn main() { use leptos::*; use leptos_axum::{generate_route_list, LeptosRoutes}; use libretunes::app::*; + use libretunes::fileserv::file_and_error_handler; use dotenv::dotenv; dotenv().ok(); @@ -35,6 +36,7 @@ async fn main() { let app = Router::new() .leptos_routes(&leptos_options, routes, App) + .fallback(file_and_error_handler) .with_state(leptos_options); println!("listening on http://{}", &addr); From 5aaf602e2c07539f52df594b4fa32e587391ba96 Mon Sep 17 00:00:00 2001 From: Ethan Girouard Date: Fri, 1 Mar 2024 14:59:25 -0500 Subject: [PATCH 08/42] Add thiserror crate --- Cargo.lock | 9 +++++---- Cargo.toml | 1 + 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 16c80c9..acda244 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1857,6 +1857,7 @@ dependencies = [ "openssl", "pbkdf2", "serde", + "thiserror", "time", "tokio", "tower", @@ -2924,18 +2925,18 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "thiserror" -version = "1.0.52" +version = "1.0.57" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83a48fd946b02c0a526b2e9481c8e2a17755e47039164a86c4070446e3a4614d" +checksum = "1e45bcbe8ed29775f228095caf2cd67af7a4ccf756ebff23a306bf3e8b47b24b" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.52" +version = "1.0.57" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7fbe9b594d6568a6a1443250a7e67d80b74e1e96f6d1715e1e21cc1888291d3" +checksum = "a953cb265bef375dae3de6663da4d3804eee9682ea80d8e2542529b73c531c81" dependencies = [ "proc-macro2", "quote", diff --git a/Cargo.toml b/Cargo.toml index 2ae6cc0..42dc126 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -45,6 +45,7 @@ tokio = { version = "1", optional = true } axum = { version = "0.6.4", optional = true } tower = { veresion = "0.4.13", optional = true } tower-http = { version = "0.4", optional = true, features = ["fs"] } +thiserror = "1.0.57" [features] csr = ["leptos/csr", "leptos_meta/csr", "leptos_router/csr"] From acf6d3fc0504957691c51b0565d62308b043a2e8 Mon Sep 17 00:00:00 2001 From: Ethan Girouard Date: Fri, 1 Mar 2024 15:02:32 -0500 Subject: [PATCH 09/42] Make http crate non-optional --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index 42dc126..fc76a8c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -12,7 +12,7 @@ actix-files = { version = "0.6", optional = true } actix-web = { version = "4", optional = true, features = ["macros"] } console_error_panic_hook = "0.1" cfg-if = "1" -http = { version = "0.2", optional = true } +http = "0.2" leptos = { version = "0.5", features = ["nightly"] } leptos_meta = { version = "0.5", features = ["nightly"] } leptos_actix = { version = "0.5", optional = true } From dcd08ff46e31a8b89be3f55193dc04357c9d912d Mon Sep 17 00:00:00 2001 From: Ethan Girouard Date: Fri, 1 Mar 2024 15:03:23 -0500 Subject: [PATCH 10/42] Remove favicon server --- src/main.rs | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/src/main.rs b/src/main.rs index 246bc78..29effe2 100644 --- a/src/main.rs +++ b/src/main.rs @@ -47,18 +47,6 @@ async fn main() { .unwrap(); } -#[cfg(feature = "ssr")] -#[actix_web::get("favicon.ico")] -async fn favicon( - leptos_options: actix_web::web::Data, -) -> actix_web::Result { - let leptos_options = leptos_options.into_inner(); - let site_root = &leptos_options.site_root; - Ok(actix_files::NamedFile::open(format!( - "{site_root}/favicon.ico" - ))?) -} - #[cfg(not(any(feature = "ssr", feature = "csr")))] pub fn main() { // no client-side main function From fe465e2246f16858d86fb2d333467e5d319ac109 Mon Sep 17 00:00:00 2001 From: Ethan Girouard Date: Fri, 1 Mar 2024 15:04:15 -0500 Subject: [PATCH 11/42] Properly handle router errors Fixes file serving, including favicon --- src/app.rs | 11 +++++-- src/error_template.rs | 73 +++++++++++++++++++++++++++++++++++++++++++ src/lib.rs | 1 + 3 files changed, 83 insertions(+), 2 deletions(-) create mode 100644 src/error_template.rs diff --git a/src/app.rs b/src/app.rs index 6df1766..dd0e0d2 100644 --- a/src/app.rs +++ b/src/app.rs @@ -6,6 +6,7 @@ use leptos_meta::*; use leptos_router::*; use crate::pages::login::*; use crate::pages::signup::*; +use crate::error_template::{AppError, ErrorTemplate}; #[component] pub fn App() -> impl IntoView { @@ -21,11 +22,17 @@ pub fn App() -> impl IntoView { // content for this welcome page - <Router> + <Router fallback=|| { + let mut outside_errors = Errors::default(); + outside_errors.insert_with_default_key(AppError::NotFound); + view! { + <ErrorTemplate outside_errors/> + } + .into_view() + }> <main> <Routes> <Route path="" view=HomePage/> - <Route path="/*any" view=NotFound/> <Route path="/login" view=Login /> <Route path="/signup" view=Signup /> </Routes> diff --git a/src/error_template.rs b/src/error_template.rs new file mode 100644 index 0000000..b30718c --- /dev/null +++ b/src/error_template.rs @@ -0,0 +1,73 @@ +use http::status::StatusCode; +use leptos::*; +use thiserror::Error; + +#[cfg(feature = "ssr")] +use leptos_axum::ResponseOptions; + +#[derive(Clone, Debug, Error)] +pub enum AppError { + #[error("Not Found")] + NotFound, +} + +impl AppError { + pub fn status_code(&self) -> StatusCode { + match self { + AppError::NotFound => StatusCode::NOT_FOUND, + } + } +} + +// A basic function to display errors served by the error boundaries. +// Feel free to do more complicated things here than just displaying the error. +#[component] +pub fn ErrorTemplate( + #[prop(optional)] outside_errors: Option<Errors>, + #[prop(optional)] errors: Option<RwSignal<Errors>>, +) -> impl IntoView { + let errors = match outside_errors { + Some(e) => create_rw_signal(e), + None => match errors { + Some(e) => e, + None => panic!("No Errors found and we expected errors!"), + }, + }; + // Get Errors from Signal + let errors = errors.get_untracked(); + + // Downcast lets us take a type that implements `std::error::Error` + let errors: Vec<AppError> = errors + .into_iter() + .filter_map(|(_k, v)| v.downcast_ref::<AppError>().cloned()) + .collect(); + + // Only the response code for the first error is actually sent from the server + // this may be customized by the specific application + #[cfg(feature = "ssr")] + { + let response = use_context::<ResponseOptions>(); + if let Some(response) = response { + response.set_status(errors[0].status_code()); + } + } + + view! { + <h1>{if errors.len() > 1 {"Errors"} else {"Error"}}</h1> + <For + // a function that returns the items we're iterating over; a signal is fine + each= move || {errors.clone().into_iter().enumerate()} + // a unique key for each item as a reference + key=|(index, _error)| *index + // renders each item to a view + children=move |error| { + let error_string = error.1.to_string(); + let error_code= error.1.status_code(); + view! { + <h2>{error_code.to_string()}</h2> + <p>"Error: " {error_string}</p> + } + } + /> + } +} diff --git a/src/lib.rs b/src/lib.rs index 28a9044..be30f52 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -11,6 +11,7 @@ pub mod pages; pub mod users; pub mod search; pub mod fileserv; +pub mod error_template; use cfg_if::cfg_if; cfg_if! { From e1e3fe52d44e08d5c7b2065877d37528cb6e2eb4 Mon Sep 17 00:00:00 2001 From: Ethan Girouard <mr.egirouard@gmail.com> Date: Fri, 1 Mar 2024 15:09:58 -0500 Subject: [PATCH 12/42] Handle server functions --- src/main.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main.rs b/src/main.rs index 29effe2..3c7054f 100644 --- a/src/main.rs +++ b/src/main.rs @@ -14,7 +14,7 @@ extern crate diesel_migrations; #[cfg(feature = "ssr")] #[tokio::main] async fn main() { - use axum::Router; + use axum::{routing::post, Router}; use leptos::*; use leptos_axum::{generate_route_list, LeptosRoutes}; use libretunes::app::*; @@ -35,6 +35,7 @@ async fn main() { let routes = generate_route_list(App); let app = Router::new() + .route("/api/*fn_name", post(leptos_axum::handle_server_fns)) .leptos_routes(&leptos_options, routes, App) .fallback(file_and_error_handler) .with_state(leptos_options); From d50afbf6e7ba3a289fb1267d83811f89ff71b040 Mon Sep 17 00:00:00 2001 From: Ethan Girouard <mr.egirouard@gmail.com> Date: Fri, 1 Mar 2024 15:15:48 -0500 Subject: [PATCH 13/42] Add tower-sessions crate --- Cargo.lock | 167 +++++++++++++++++++++++++++++++++++++++++++++-------- Cargo.toml | 1 + 2 files changed, 145 insertions(+), 23 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index acda244..9126602 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -53,7 +53,7 @@ dependencies = [ "actix-service", "actix-utils", "ahash 0.8.6", - "base64 0.21.5", + "base64 0.21.7", "bitflags 2.4.1", "brotli", "bytes", @@ -63,7 +63,7 @@ dependencies = [ "flate2", "futures-core", "h2", - "http", + "http 0.2.11", "httparse", "httpdate", "itoa", @@ -114,7 +114,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d22475596539443685426b6bdadb926ad0ecaefdfc5fb05e5e3441f15463c511" dependencies = [ "bytestring", - "http", + "http 0.2.11", "regex", "serde", "tracing", @@ -205,7 +205,7 @@ dependencies = [ "bytes", "bytestring", "cfg-if", - "cookie", + "cookie 0.16.2", "derive_more", "encoding_rs", "futures-core", @@ -423,13 +423,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3b829e4e32b91e643de6eafe82b1d90675f5874230191a4ffbc1b336dec4d6bf" dependencies = [ "async-trait", - "axum-core", + "axum-core 0.3.4", "axum-macros", "bitflags 1.3.2", "bytes", "futures-util", - "http", - "http-body", + "http 0.2.11", + "http-body 0.4.6", "hyper", "itoa", "matchit", @@ -458,14 +458,34 @@ dependencies = [ "async-trait", "bytes", "futures-util", - "http", - "http-body", + "http 0.2.11", + "http-body 0.4.6", "mime", "rustversion", "tower-layer", "tower-service", ] +[[package]] +name = "axum-core" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a15c63fd72d41492dc4f497196f5da1fb04fb7529e631d73630d1b491e47a2e3" +dependencies = [ + "async-trait", + "bytes", + "futures-util", + "http 1.0.0", + "http-body 1.0.0", + "http-body-util", + "mime", + "pin-project-lite", + "rustversion", + "sync_wrapper", + "tower-layer", + "tower-service", +] + [[package]] name = "axum-macros" version = "0.3.8" @@ -501,9 +521,9 @@ checksum = "0ea22880d78093b0cbe17c89f64a7d457941e65759157ec6cb31a31d652b05e5" [[package]] name = "base64" -version = "0.21.5" +version = "0.21.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35636a1494ede3b646cc98f74f8e62c773a38a659ebc777a2cf26b9b74171df9" +checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" [[package]] name = "base64ct" @@ -803,6 +823,17 @@ dependencies = [ "version_check", ] +[[package]] +name = "cookie" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3cd91cf61412820176e137621345ee43b3f4423e589e7ae4e50d601d93e35ef8" +dependencies = [ + "percent-encoding", + "time", + "version_check", +] + [[package]] name = "core-foundation" version = "0.9.4" @@ -1235,7 +1266,7 @@ dependencies = [ "futures-core", "futures-sink", "futures-util", - "http", + "http 0.2.11", "indexmap", "slab", "tokio", @@ -1324,6 +1355,17 @@ dependencies = [ "itoa", ] +[[package]] +name = "http" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b32afd38673a8016f7c9ae69e5af41a58f81b1d31689040f2f1959594ce194ea" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + [[package]] name = "http-body" version = "0.4.6" @@ -1331,7 +1373,30 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" dependencies = [ "bytes", - "http", + "http 0.2.11", + "pin-project-lite", +] + +[[package]] +name = "http-body" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1cac85db508abc24a2e48553ba12a996e87244a0395ce011e62b37158745d643" +dependencies = [ + "bytes", + "http 1.0.0", +] + +[[package]] +name = "http-body-util" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41cb79eb393015dadd30fc252023adb0b2400a0caee0fa2a077e6e21a551e840" +dependencies = [ + "bytes", + "futures-util", + "http 1.0.0", + "http-body 1.0.0", "pin-project-lite", ] @@ -1370,8 +1435,8 @@ dependencies = [ "futures-core", "futures-util", "h2", - "http", - "http-body", + "http 0.2.11", + "http-body 0.4.6", "httparse", "httpdate", "itoa", @@ -1613,7 +1678,7 @@ dependencies = [ "axum", "cfg-if", "futures", - "http", + "http 0.2.11", "hyper", "leptos", "leptos_integration_utils", @@ -1756,7 +1821,7 @@ version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "22207568e096ac153ba8da68635e3136c1ec614ea9012736fa861c05bfb2eeff" dependencies = [ - "base64 0.21.5", + "base64 0.21.7", "cfg-if", "futures", "indexmap", @@ -1846,7 +1911,7 @@ dependencies = [ "diesel_migrations", "dotenv", "futures", - "http", + "http 0.2.11", "lazy_static", "leptos", "leptos_actix", @@ -1862,6 +1927,7 @@ dependencies = [ "tokio", "tower", "tower-http", + "tower-sessions", "wasm-bindgen", ] @@ -1900,6 +1966,7 @@ checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45" dependencies = [ "autocfg", "scopeguard", + "serde", ] [[package]] @@ -2482,14 +2549,14 @@ version = "0.11.23" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "37b1ae8d9ac08420c66222fb9096fc5de435c3c48542bc5336c51892cffafb41" dependencies = [ - "base64 0.21.5", + "base64 0.21.7", "bytes", "encoding_rs", "futures-core", "futures-util", "h2", - "http", - "http-body", + "http 0.2.11", + "http-body 0.4.6", "hyper", "ipnet", "js-sys", @@ -3105,6 +3172,23 @@ dependencies = [ "tracing", ] +[[package]] +name = "tower-cookies" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fd0118512cf0b3768f7fcccf0bef1ae41d68f2b45edc1e77432b36c97c56c6d" +dependencies = [ + "async-trait", + "axum-core 0.4.3", + "cookie 0.18.0", + "futures-util", + "http 1.0.0", + "parking_lot", + "pin-project-lite", + "tower-layer", + "tower-service", +] + [[package]] name = "tower-http" version = "0.4.4" @@ -3115,8 +3199,8 @@ dependencies = [ "bytes", "futures-core", "futures-util", - "http", - "http-body", + "http 0.2.11", + "http-body 0.4.6", "http-range-header", "httpdate", "mime", @@ -3142,6 +3226,43 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" +[[package]] +name = "tower-sessions" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5dfd131ee564762468250d3dbb8a04f3bc933bcc9bd4f0958ce8acbfb578b73" +dependencies = [ + "async-trait", + "http 1.0.0", + "time", + "tokio", + "tower-cookies", + "tower-layer", + "tower-service", + "tower-sessions-core", + "tracing", +] + +[[package]] +name = "tower-sessions-core" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bed2607e4db384eed7a932a53c10f64202e73e9a970b6a7410bcbc018fd7c689" +dependencies = [ + "async-trait", + "base64 0.21.7", + "futures", + "http 1.0.0", + "parking_lot", + "rand", + "serde", + "serde_json", + "thiserror", + "time", + "tokio", + "tracing", +] + [[package]] name = "tracing" version = "0.1.40" diff --git a/Cargo.toml b/Cargo.toml index fc76a8c..115a22d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -46,6 +46,7 @@ axum = { version = "0.6.4", optional = true } tower = { veresion = "0.4.13", optional = true } tower-http = { version = "0.4", optional = true, features = ["fs"] } thiserror = "1.0.57" +tower-sessions = { version = "0.10.4", default-features = false } [features] csr = ["leptos/csr", "leptos_meta/csr", "leptos_router/csr"] From 901aa2ce013cfe0368e5f25262736691d5c9c776 Mon Sep 17 00:00:00 2001 From: Ethan Girouard <mr.egirouard@gmail.com> Date: Sat, 30 Mar 2024 22:08:24 -0400 Subject: [PATCH 14/42] Update to leptos_icons 0.3.0 --- Cargo.lock | 589 +++++++++++++++++++++++++++++++++++++++----- Cargo.toml | 13 +- src/pages/login.rs | 9 +- src/pages/signup.rs | 9 +- src/playbar.rs | 12 +- src/queue.rs | 3 +- 6 files changed, 549 insertions(+), 86 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 195bd07..d04e23e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -63,7 +63,7 @@ dependencies = [ "flate2", "futures-core", "h2", - "http", + "http 0.2.11", "httparse", "httpdate", "itoa", @@ -114,7 +114,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d22475596539443685426b6bdadb926ad0ecaefdfc5fb05e5e3441f15463c511" dependencies = [ "bytestring", - "http", + "http 0.2.11", "regex", "serde", "tracing", @@ -678,6 +678,19 @@ dependencies = [ "toml 0.5.11", ] +[[package]] +name = "config" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7328b20597b53c2454f0b1919720c25c7339051c02b72b7e05409e00b14132be" +dependencies = [ + "lazy_static", + "nom", + "pathdiff", + "serde", + "toml 0.8.12", +] + [[package]] name = "console_error_panic_hook" version = "0.1.7" @@ -830,6 +843,19 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "dashmap" +version = "5.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856" +dependencies = [ + "cfg-if", + "hashbrown 0.14.3", + "lock_api", + "once_cell", + "parking_lot_core", +] + [[package]] name = "deranged" version = "0.3.10" @@ -1138,7 +1164,28 @@ dependencies = [ "futures-channel", "futures-core", "futures-sink", - "gloo-utils", + "gloo-utils 0.1.7", + "js-sys", + "pin-project", + "serde", + "serde_json", + "thiserror", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "gloo-net" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43aaa242d1239a8822c15c645f02166398da4f8b5c4bae795c1f5b44e9eee173" +dependencies = [ + "futures-channel", + "futures-core", + "futures-sink", + "gloo-utils 0.2.0", + "http 0.2.11", "js-sys", "pin-project", "serde", @@ -1162,6 +1209,19 @@ dependencies = [ "web-sys", ] +[[package]] +name = "gloo-utils" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b5555354113b18c547c1d3a98fbf7fb32a9ff4f6fa112ce823a21641a0ba3aa" +dependencies = [ + "js-sys", + "serde", + "serde_json", + "wasm-bindgen", + "web-sys", +] + [[package]] name = "h2" version = "0.3.22" @@ -1173,7 +1233,7 @@ dependencies = [ "futures-core", "futures-sink", "futures-util", - "http", + "http 0.2.11", "indexmap", "slab", "tokio", @@ -1250,6 +1310,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.6" @@ -1257,7 +1328,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" dependencies = [ "bytes", - "http", + "http 0.2.11", "pin-project-lite", ] @@ -1290,7 +1361,7 @@ dependencies = [ "futures-core", "futures-util", "h2", - "http", + "http 0.2.11", "http-body", "httparse", "httpdate", @@ -1305,65 +1376,195 @@ dependencies = [ [[package]] name = "icondata" -version = "0.0.8" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f41f2deec9249d16ef6b1a8442fbe16013f67053797052aa0b7d2f5ebd0f0098" +checksum = "e38f18389f3cd0e664bd42f1dfe0aba4acda0a44036fb720eb07e8ba3a09640c" dependencies = [ "icondata_ai", + "icondata_bi", "icondata_bs", "icondata_cg", + "icondata_ch", "icondata_core", + "icondata_fa", + "icondata_fi", + "icondata_hi", + "icondata_im", "icondata_io", + "icondata_lu", + "icondata_oc", "icondata_ri", + "icondata_si", + "icondata_tb", + "icondata_ti", + "icondata_vs", + "icondata_wi", ] [[package]] name = "icondata_ai" -version = "0.0.8" +version = "0.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c8fe5fa2eed7715d5388e046d97f09d3baddd155b487454eb9cda3168c79d4b" +checksum = "9bf3a9c196a6a169f790639ecc8fdd4396660b1d53b905230bf0b364776a56fc" +dependencies = [ + "icondata_core", +] + +[[package]] +name = "icondata_bi" +version = "0.0.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6ce125f0d203e66444b02982af9b15631f2385573ad7992af79d4d4babc638d" dependencies = [ "icondata_core", ] [[package]] name = "icondata_bs" -version = "0.0.8" +version = "0.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a1eeaedae6788b08308e1b050eeddaffa62dd5f2368469ef980c8e0e75837e3" +checksum = "67940e592b0b8df8d7adc055c8542d135ce1d7d6ad01d8fb8de9405ebfc21c2e" dependencies = [ "icondata_core", ] [[package]] name = "icondata_cg" -version = "0.0.8" +version = "0.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b90cda35aa524761219a8dbd006513734e08a4cf92ee05820b01749e76435462" +checksum = "a0eba691ca17a43ffc8ebbcf200cd3ea54ad75837f210a6a6ace87a491be8314" +dependencies = [ + "icondata_core", +] + +[[package]] +name = "icondata_ch" +version = "0.0.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2870b3c4ebf013b7e27af71d4c55f10b97ea448831e9a156cb53fec0f262dc20" dependencies = [ "icondata_core", ] [[package]] name = "icondata_core" -version = "0.0.2" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1640a4c1d5ddd08ab1d9854ffa7a2fa3dc52339492676b6d3031e77ca579f434" +checksum = "6c97be924215abd5e630d84e95a47c710138a6559b4c55039f4f33aa897fa859" + +[[package]] +name = "icondata_fa" +version = "0.0.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c7fee576096efe5567a7216a6fb8154db8eae9ae108e5a4706805204208c2af" +dependencies = [ + "icondata_core", +] + +[[package]] +name = "icondata_fi" +version = "0.0.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1a4e81557c205a12ac051046595bb616f388537468987f7ee8960f897cdc538" +dependencies = [ + "icondata_core", +] + +[[package]] +name = "icondata_hi" +version = "0.0.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3435d50de04c61799613995e753e613dc4f2771aa08eb94a7318289a5ea9d784" +dependencies = [ + "icondata_core", +] + +[[package]] +name = "icondata_im" +version = "0.0.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce4bd1d64bb67bb080f605e3e600271894b67c4aaa18965179586ef5990a2297" +dependencies = [ + "icondata_core", +] [[package]] name = "icondata_io" -version = "0.0.8" +version = "0.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "134d9fb91cdd0e7ac971199e2c8c8eb917a975faeeee54b227a0068c4f70c886" +checksum = "35b9d681c936a6e087940beb4766159cddc080d7f1fd5ef0ef3ab9f50a11f3f6" +dependencies = [ + "icondata_core", +] + +[[package]] +name = "icondata_lu" +version = "0.0.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d552c45cc3ab1d1bf88cc0201004eb92418141e5454e9e0e46c4b4a4faf66248" +dependencies = [ + "icondata_core", +] + +[[package]] +name = "icondata_oc" +version = "0.0.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8be19499912a05d5db89ccb88dbe3c459ca4100bda3dbcbddff69f2dcf71d305" dependencies = [ "icondata_core", ] [[package]] name = "icondata_ri" -version = "0.0.8" +version = "0.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b1d3adc5b64b22d10ab23a7b1a005f4cb52f3d08909f578fbaa09af9f9c0b7b" +checksum = "114a85cc95d1bfaee8dc5bf8a07dd043fc9e75499dc2ff4ac5e066193c594930" +dependencies = [ + "icondata_core", +] + +[[package]] +name = "icondata_si" +version = "0.0.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc30cb2dbc2ac53f23dddbcb0ad73720970b24c0ed13935df8082b74fb627860" +dependencies = [ + "icondata_core", +] + +[[package]] +name = "icondata_tb" +version = "0.0.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f2b8d8e2047546285805795e6d3cb6e820a52bb008e15942e11353c7ba659f2" +dependencies = [ + "icondata_core", +] + +[[package]] +name = "icondata_ti" +version = "0.0.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f85074d4bf10960d0f2b01ce3d9cfa2b2434a170d0738336411bb61e83227e4" +dependencies = [ + "icondata_core", +] + +[[package]] +name = "icondata_vs" +version = "0.0.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a82bb4a8b1523200fc7c3b588bb80858db16708067093110ee8614db63b8913" +dependencies = [ + "icondata_core", +] + +[[package]] +name = "icondata_wi" +version = "0.0.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d2c65b534aa9d7ccb107d892200e8fef2d1849acad160af067e9e20ced3619b" dependencies = [ "icondata_core", ] @@ -1448,6 +1649,15 @@ dependencies = [ "either", ] +[[package]] +name = "itertools" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" +dependencies = [ + "either", +] + [[package]] name = "itoa" version = "1.0.10" @@ -1491,12 +1701,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9d02b78d6e38acf8199426058a0d8c4030835d84a4ee16147df25be7fed707e0" dependencies = [ "cfg-if", - "leptos_config", - "leptos_dom", - "leptos_macro", - "leptos_reactive", - "leptos_server", - "server_fn", + "leptos_config 0.5.4", + "leptos_dom 0.5.4", + "leptos_macro 0.5.4", + "leptos_reactive 0.5.4", + "leptos_server 0.5.4", + "server_fn 0.5.4", "tracing", "typed-builder", "typed-builder-macro", @@ -1504,6 +1714,25 @@ dependencies = [ "web-sys", ] +[[package]] +name = "leptos" +version = "0.6.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56d079555ff18158a1ed28d2a8ac529b4cb5904490384064346eb2d321addde6" +dependencies = [ + "cfg-if", + "leptos_config 0.6.9", + "leptos_dom 0.6.9", + "leptos_macro 0.6.9", + "leptos_reactive 0.6.9", + "leptos_server 0.6.9", + "server_fn 0.6.9", + "tracing", + "typed-builder", + "typed-builder-macro", + "web-sys", +] + [[package]] name = "leptos_actix" version = "0.5.4" @@ -1513,7 +1742,7 @@ dependencies = [ "actix-http", "actix-web", "futures", - "leptos", + "leptos 0.5.4", "leptos_integration_utils", "leptos_meta", "leptos_router", @@ -1530,7 +1759,20 @@ version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "afcaa5db5b22b794b624e14ffe2aefae215b2d21c60a230ae2d06fe21ae5da64" dependencies = [ - "config", + "config 0.13.4", + "regex", + "serde", + "thiserror", + "typed-builder", +] + +[[package]] +name = "leptos_config" +version = "0.6.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d80b4ed5f0447996b9a28879002f995d3770687630f568be41307f362f84cb7" +dependencies = [ + "config 0.14.0", "regex", "serde", "thiserror", @@ -1552,14 +1794,44 @@ dependencies = [ "indexmap", "itertools 0.10.5", "js-sys", - "leptos_reactive", + "leptos_reactive 0.5.4", "once_cell", "pad-adapter", "paste", "rustc-hash", "serde", "serde_json", - "server_fn", + "server_fn 0.5.4", + "smallvec", + "tracing", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "leptos_dom" +version = "0.6.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a4b4da3cb6a4dde22e68717482a4b926fb5dd182c12461b27efa37764b29d9a" +dependencies = [ + "async-recursion", + "cfg-if", + "drain_filter_polyfill", + "futures", + "getrandom", + "html-escape", + "indexmap", + "itertools 0.12.1", + "js-sys", + "leptos_reactive 0.6.9", + "once_cell", + "pad-adapter", + "paste", + "rustc-hash", + "serde", + "serde_json", + "server_fn 0.6.9", "smallvec", "tracing", "wasm-bindgen", @@ -1586,14 +1858,36 @@ dependencies = [ ] [[package]] -name = "leptos_icons" -version = "0.1.0" +name = "leptos_hot_reload" +version = "0.6.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b3fad7820b18b983d49ff4262df88de94dc8fd993278937979cc0dd188868e5" +checksum = "fb051c7b3bce8368ee30fb57e7b14cdcd573019ea6cd1858b9c697a3519ea099" dependencies = [ - "icondata", - "leptos", - "tracing", + "anyhow", + "camino", + "indexmap", + "parking_lot", + "proc-macro2", + "quote", + "rstml", + "serde", + "syn 2.0.48", + "walkdir", +] + +[[package]] +name = "leptos_icons" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "584bccafed73138f4d700f936e6a82268efec2df9a2f9d74e1ee80985653413e" +dependencies = [ + "bytes", + "encoding_rs", + "icondata_core", + "lazy_static", + "leptos 0.6.9", + "log", + "paste", ] [[package]] @@ -1603,9 +1897,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2dbbd7d721bcdd9aa7b20987063de41314c836a3ac67e263ca489857e337dec" dependencies = [ "futures", - "leptos", - "leptos_config", - "leptos_hot_reload", + "leptos 0.5.4", + "leptos_config 0.5.4", + "leptos_hot_reload 0.5.4", "leptos_meta", "tracing", ] @@ -1621,13 +1915,36 @@ dependencies = [ "convert_case 0.6.0", "html-escape", "itertools 0.11.0", - "leptos_hot_reload", + "leptos_hot_reload 0.5.4", "prettyplease", "proc-macro-error", "proc-macro2", "quote", "rstml", - "server_fn_macro", + "server_fn_macro 0.5.4", + "syn 2.0.48", + "tracing", + "uuid", +] + +[[package]] +name = "leptos_macro" +version = "0.6.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e82c33c8baa07a36c1f0d6149af821be885e6863779bcb24954bf865ad8402b4" +dependencies = [ + "attribute-derive", + "cfg-if", + "convert_case 0.6.0", + "html-escape", + "itertools 0.12.1", + "leptos_hot_reload 0.6.9", + "prettyplease", + "proc-macro-error", + "proc-macro2", + "quote", + "rstml", + "server_fn_macro 0.6.9", "syn 2.0.48", "tracing", "uuid", @@ -1641,7 +1958,7 @@ checksum = "983bbf829598d275b01e96bd9fca71e4739dd7b9fdf69cb8898b30ebfb124332" dependencies = [ "cfg-if", "indexmap", - "leptos", + "leptos 0.5.4", "tracing", "wasm-bindgen", "web-sys", @@ -1664,7 +1981,7 @@ dependencies = [ "rustc-hash", "self_cell", "serde", - "serde-wasm-bindgen", + "serde-wasm-bindgen 0.5.0", "serde_json", "slotmap", "thiserror", @@ -1675,6 +1992,29 @@ dependencies = [ "web-sys", ] +[[package]] +name = "leptos_reactive" +version = "0.6.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93bdcebc9822cc22a72cc9528dd794e1396152c75749ee09959f8272a8c99657" +dependencies = [ + "base64 0.21.5", + "cfg-if", + "futures", + "indexmap", + "paste", + "pin-project", + "rustc-hash", + "self_cell", + "serde", + "serde-wasm-bindgen 0.6.5", + "serde_json", + "slotmap", + "thiserror", + "tracing", + "wasm-bindgen-futures", +] + [[package]] name = "leptos_router" version = "0.5.4" @@ -1683,11 +2023,11 @@ checksum = "c1a2ff8b8e8ae8b17efd8be2a407f7f83ed57c5243f70f2d03e6635f9ff61848" dependencies = [ "cached", "cfg-if", - "gloo-net", + "gloo-net 0.2.6", "itertools 0.11.0", "js-sys", "lazy_static", - "leptos", + "leptos 0.5.4", "leptos_integration_utils", "leptos_meta", "linear-map", @@ -1714,10 +2054,26 @@ checksum = "272d018a5adf33d10ee57e6f0f83dccc305c68613cd207e8a653aeebd4cd5b4f" dependencies = [ "inventory", "lazy_static", - "leptos_macro", - "leptos_reactive", + "leptos_macro 0.5.4", + "leptos_reactive 0.5.4", "serde", - "server_fn", + "server_fn 0.5.4", + "thiserror", + "tracing", +] + +[[package]] +name = "leptos_server" +version = "0.6.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "654b6ff6a24e79977641b5214452373b1e12fdf4c8a563fadf656c139694b4b9" +dependencies = [ + "inventory", + "lazy_static", + "leptos_macro 0.6.9", + "leptos_reactive 0.6.9", + "serde", + "server_fn 0.6.9", "thiserror", "tracing", ] @@ -1742,9 +2098,10 @@ dependencies = [ "diesel_migrations", "dotenv", "futures", - "http", + "http 0.2.11", + "icondata", "lazy_static", - "leptos", + "leptos 0.5.4", "leptos_actix", "leptos_icons", "leptos_meta", @@ -2363,7 +2720,7 @@ dependencies = [ "futures-core", "futures-util", "h2", - "http", + "http 0.2.11", "http-body", "hyper", "ipnet", @@ -2498,6 +2855,15 @@ version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "836fa6a3e1e547f9a2c4040802ec865b5d85f4014efe00555d7090a3dcaa1090" +[[package]] +name = "send_wrapper" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73" +dependencies = [ + "futures-core", +] + [[package]] name = "serde" version = "1.0.195" @@ -2518,6 +2884,17 @@ 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.195" @@ -2589,7 +2966,7 @@ checksum = "cfed18dfcc8d9004579c40482c3419c07f60ffb9c5b250542edca99f508b0ce9" dependencies = [ "ciborium", "const_format", - "gloo-net", + "gloo-net 0.2.6", "inventory", "js-sys", "lazy_static", @@ -2600,12 +2977,41 @@ dependencies = [ "serde", "serde_json", "serde_qs", - "server_fn_macro_default", + "server_fn_macro_default 0.5.4", "syn 2.0.48", "thiserror", "xxhash-rust", ] +[[package]] +name = "server_fn" +version = "0.6.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2955da1dc5fcd970c182ebf1089af6c5f19051e1f286a21f7b96490a49b7a531" +dependencies = [ + "bytes", + "ciborium", + "const_format", + "dashmap", + "futures", + "gloo-net 0.5.0", + "http 1.1.0", + "js-sys", + "once_cell", + "send_wrapper", + "serde", + "serde_json", + "serde_qs", + "server_fn_macro_default 0.6.9", + "thiserror", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "wasm-streams", + "web-sys", + "xxhash-rust", +] + [[package]] name = "server_fn_macro" version = "0.5.4" @@ -2621,13 +3027,37 @@ dependencies = [ "xxhash-rust", ] +[[package]] +name = "server_fn_macro" +version = "0.6.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adfdd051ef905fdb3da20942b0c52d536158d7489a724e14cc2fd47323e7ca91" +dependencies = [ + "const_format", + "convert_case 0.6.0", + "proc-macro2", + "quote", + "syn 2.0.48", + "xxhash-rust", +] + [[package]] name = "server_fn_macro_default" version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7256ba61dfadb220598db418376e7bc2a34b96df36c4dc48f24ffe161810fc0b" dependencies = [ - "server_fn_macro", + "server_fn_macro 0.5.4", + "syn 2.0.48", +] + +[[package]] +name = "server_fn_macro_default" +version = "0.6.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "060af1def72353a779fcc184c53e1965d3055a38b9e827f2259b2bff2d9c371e" +dependencies = [ + "server_fn_macro 0.6.9", "syn 2.0.48", ] @@ -2902,7 +3332,19 @@ dependencies = [ "serde", "serde_spanned", "toml_datetime", - "toml_edit", + "toml_edit 0.19.15", +] + +[[package]] +name = "toml" +version = "0.8.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e9dd1545e8208b4a5af1aa9bbd0b4cf7e9ea08fabc5d0a5c67fcaafa17433aa3" +dependencies = [ + "serde", + "serde_spanned", + "toml_datetime", + "toml_edit 0.22.9", ] [[package]] @@ -2924,7 +3366,20 @@ dependencies = [ "serde", "serde_spanned", "toml_datetime", - "winnow", + "winnow 0.5.37", +] + +[[package]] +name = "toml_edit" +version = "0.22.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e40bb779c5187258fd7aad0eb68cb8706a0a81fa712fbea808ab43c4b8374c4" +dependencies = [ + "indexmap", + "serde", + "serde_spanned", + "toml_datetime", + "winnow 0.6.5", ] [[package]] @@ -3178,6 +3633,19 @@ version = "0.2.89" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7ab9b36309365056cd639da3134bf87fa8f3d86008abf99e612384a6eecd459f" +[[package]] +name = "wasm-streams" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b65dc4c90b63b118468cf747d8bf3566c1913ef60be765b5730ead9e0a3ba129" +dependencies = [ + "futures-util", + "js-sys", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + [[package]] name = "web-sys" version = "0.3.66" @@ -3294,6 +3762,15 @@ dependencies = [ "memchr", ] +[[package]] +name = "winnow" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dffa400e67ed5a4dd237983829e66475f0a4a26938c4b04c21baede6262215b8" +dependencies = [ + "memchr", +] + [[package]] name = "winreg" version = "0.50.0" diff --git a/Cargo.toml b/Cargo.toml index d1a12df..9a0d7c7 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -18,17 +18,8 @@ leptos_meta = { version = "0.5", features = ["nightly"] } leptos_actix = { version = "0.5", optional = true } leptos_router = { version = "0.5", features = ["nightly"] } wasm-bindgen = "=0.2.89" -leptos_icons = { version = "0.1.0", default_features = false, features = [ - "BsPlayFill", - "BsPauseFill", - "BsSkipStartFill", - "BsSkipEndFill", - "RiPlayListMediaFill", - "CgTrash", - "IoReturnUpBackSharp", - "AiEyeFilled", - "AiEyeInvisibleFilled" -] } +leptos_icons = { version = "0.3.0" } +icondata = { version = "0.3.0" } dotenv = { version = "0.15.0", optional = true } diesel = { version = "2.1.4", features = ["postgres", "r2d2", "time"], optional = true } lazy_static = { version = "1.4.0", optional = true } diff --git a/src/pages/login.rs b/src/pages/login.rs index 0d55a26..253399c 100644 --- a/src/pages/login.rs +++ b/src/pages/login.rs @@ -1,9 +1,8 @@ use crate::auth::login; use leptos::leptos_dom::*; use leptos::*; -use leptos_icons::AiIcon::*; -use leptos_icons::IoIcon::*; use leptos_icons::*; +use icondata; #[component] pub fn Login() -> impl IntoView { @@ -42,7 +41,7 @@ pub fn Login() -> impl IntoView { view! { <div class="auth-page-container"> <div class="login-container"> - <a class="return" href="/"><Icon icon=Icon::from(IoReturnUpBackSharp) /></a> + <a class="return" href="/"><Icon icon=icondata::IoReturnUpBackSharp /></a> <div class="header"> <h1>LibreTunes</h1> </div> @@ -70,11 +69,11 @@ pub fn Login() -> impl IntoView { <Show when=move || {show_password() == false} fallback=move || view!{ <button on:click=toggle_password class="login-password-visibility"> - <Icon icon=Icon::from(AiEyeInvisibleFilled) /> + <Icon icon=icondata::AiEyeInvisibleFilled /> </button> /> } > <button on:click=toggle_password class="login-password-visibility"> - <Icon icon=Icon::from(AiEyeFilled) /> + <Icon icon=icondata::AiEyeFilled /> </button> </Show> diff --git a/src/pages/signup.rs b/src/pages/signup.rs index 20f0912..d02d7c5 100644 --- a/src/pages/signup.rs +++ b/src/pages/signup.rs @@ -2,9 +2,8 @@ use crate::auth::signup; use crate::models::User; use leptos::leptos_dom::*; use leptos::*; -use leptos_icons::AiIcon::*; -use leptos_icons::IoIcon::*; use leptos_icons::*; +use icondata; #[component] pub fn Signup() -> impl IntoView { @@ -46,7 +45,7 @@ pub fn Signup() -> impl IntoView { view! { <div class="auth-page-container"> <div class="signup-container"> - <a class="return" href="/"><Icon icon=Icon::from(IoReturnUpBackSharp) /></a> + <a class="return" href="/"><Icon icon=icondata::IoReturnUpBackSharp /></a> <div class="header"> <h1>LibreTunes</h1> </div> @@ -83,10 +82,10 @@ pub fn Signup() -> impl IntoView { <i></i> <Show when=move || {show_password() == false} - fallback=move || view!{ <button on:click=toggle_password class="password-visibility"> <Icon icon=Icon::from(AiEyeInvisibleFilled) /></button> /> } + fallback=move || view!{ <button on:click=toggle_password class="password-visibility"> <Icon icon=icondata::AiEyeInvisibleFilled /></button> /> } > <button on:click=toggle_password class="password-visibility"> - <Icon icon=Icon::from(AiEyeFilled) /> + <Icon icon=icondata::AiEyeFilled /> </button> </Show> </div> diff --git a/src/playbar.rs b/src/playbar.rs index 11700aa..7bfc1b0 100644 --- a/src/playbar.rs +++ b/src/playbar.rs @@ -3,8 +3,6 @@ use leptos::ev::MouseEvent; use leptos::html::{Audio, Div}; use leptos::leptos_dom::*; use leptos::*; -use leptos_icons::BsIcon::*; -use leptos_icons::RiIcon::*; use leptos_icons::*; /// Width and height of the forward/backward skip buttons @@ -193,9 +191,9 @@ fn PlayControls(status: RwSignal<PlayStatus>) -> impl IntoView { let icon = Signal::derive(move || { status.with(|status| { if status.playing { - Icon::from(BsPauseFill) + icondata::BsPauseFill } else { - Icon::from(BsPlayFill) + icondata::BsPlayFill } }) }); @@ -204,7 +202,7 @@ fn PlayControls(status: RwSignal<PlayStatus>) -> impl IntoView { <div class="playcontrols" align="center"> <button on:click=skip_back on:mousedown=prevent_focus> - <Icon class="controlbtn" width=SKIP_BTN_SIZE height=SKIP_BTN_SIZE icon=Icon::from(BsSkipStartFill) /> + <Icon class="controlbtn" width=SKIP_BTN_SIZE height=SKIP_BTN_SIZE icon=icondata::BsSkipStartFill /> </button> <button on:click=toggle_play on:mousedown=prevent_focus> @@ -212,7 +210,7 @@ fn PlayControls(status: RwSignal<PlayStatus>) -> impl IntoView { </button> <button on:click=skip_forward on:mousedown=prevent_focus> - <Icon class="controlbtn" width=SKIP_BTN_SIZE height=SKIP_BTN_SIZE icon=Icon::from(BsSkipEndFill) /> + <Icon class="controlbtn" width=SKIP_BTN_SIZE height=SKIP_BTN_SIZE icon=icondata::BsSkipEndFill /> </button> </div> @@ -337,7 +335,7 @@ fn QueueToggle(status: RwSignal<PlayStatus>) -> impl IntoView { view! { <div class="queue-toggle"> <button on:click=update_queue on:mousedown=prevent_focus> - <Icon class="controlbtn" width=QUEUE_BTN_SIZE height=QUEUE_BTN_SIZE icon=Icon::from(RiPlayListMediaFill) /> + <Icon class="controlbtn" width=QUEUE_BTN_SIZE height=QUEUE_BTN_SIZE icon=icondata::RiPlayListMediaFill /> </button> </div> } diff --git a/src/queue.rs b/src/queue.rs index fc786b9..39f0ee0 100644 --- a/src/queue.rs +++ b/src/queue.rs @@ -4,7 +4,6 @@ use leptos::ev::MouseEvent; use leptos::leptos_dom::*; use leptos::*; use leptos_icons::*; -use leptos_icons::CgIcon::*; use leptos::ev::DragEvent; const RM_BTN_SIZE: &str = "2.5rem"; @@ -106,7 +105,7 @@ pub fn Queue(status: RwSignal<PlayStatus>) -> impl IntoView { <p>Playing</p> }> <button on:click=move |_| remove_song(index) on:mousedown=prevent_focus> - <Icon class="remove-song" width=RM_BTN_SIZE height=RM_BTN_SIZE icon=Icon::from(CgTrash) /> + <Icon class="remove-song" width=RM_BTN_SIZE height=RM_BTN_SIZE icon=icondata::CgTrash /> </button> </Show> </div> From 013fb6391df4e410156a26018ae3375bec1aaad6 Mon Sep 17 00:00:00 2001 From: Ethan Girouard <mr.egirouard@gmail.com> Date: Sat, 30 Mar 2024 23:14:06 -0400 Subject: [PATCH 15/42] Upgrade to leptos 0.6 --- Cargo.lock | 479 ++++++--------------------------------------------- Cargo.toml | 8 +- src/auth.rs | 43 +++-- src/users.rs | 17 +- 4 files changed, 87 insertions(+), 460 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index d04e23e..713aab8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -664,20 +664,6 @@ dependencies = [ "tokio-util", ] -[[package]] -name = "config" -version = "0.13.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23738e11972c7643e4ec947840fc463b6a571afcd3e735bdfce7d03c7a784aca" -dependencies = [ - "async-trait", - "lazy_static", - "nom", - "pathdiff", - "serde", - "toml 0.5.11", -] - [[package]] name = "config" version = "0.14.0" @@ -754,22 +740,6 @@ dependencies = [ "version_check", ] -[[package]] -name = "core-foundation" -version = "0.9.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" -dependencies = [ - "core-foundation-sys", - "libc", -] - -[[package]] -name = "core-foundation-sys" -version = "0.8.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" - [[package]] name = "cpufeatures" version = "0.2.11" @@ -1321,17 +1291,6 @@ dependencies = [ "itoa", ] -[[package]] -name = "http-body" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" -dependencies = [ - "bytes", - "http 0.2.11", - "pin-project-lite", -] - [[package]] name = "http-range" version = "0.1.5" @@ -1350,30 +1309,6 @@ version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" -[[package]] -name = "hyper" -version = "0.14.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf96e135eb83a2a8ddf766e426a841d8ddd7449d5f00d34ea02b41d2f19eef80" -dependencies = [ - "bytes", - "futures-channel", - "futures-core", - "futures-util", - "h2", - "http 0.2.11", - "http-body", - "httparse", - "httpdate", - "itoa", - "pin-project-lite", - "socket2", - "tokio", - "tower-service", - "tracing", - "want", -] - [[package]] name = "icondata" version = "0.3.0" @@ -1625,30 +1560,6 @@ version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c8573b2b1fb643a372c73b23f4da5f888677feef3305146d68a539250a9bccc7" -[[package]] -name = "ipnet" -version = "2.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" - -[[package]] -name = "itertools" -version = "0.10.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" -dependencies = [ - "either", -] - -[[package]] -name = "itertools" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57" -dependencies = [ - "either", -] - [[package]] name = "itertools" version = "0.12.1" @@ -1696,17 +1607,17 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "leptos" -version = "0.5.4" +version = "0.6.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d02b78d6e38acf8199426058a0d8c4030835d84a4ee16147df25be7fed707e0" +checksum = "56d079555ff18158a1ed28d2a8ac529b4cb5904490384064346eb2d321addde6" dependencies = [ "cfg-if", - "leptos_config 0.5.4", - "leptos_dom 0.5.4", - "leptos_macro 0.5.4", - "leptos_reactive 0.5.4", - "leptos_server 0.5.4", - "server_fn 0.5.4", + "leptos_config", + "leptos_dom", + "leptos_macro", + "leptos_reactive", + "leptos_server", + "server_fn", "tracing", "typed-builder", "typed-builder-macro", @@ -1715,100 +1626,40 @@ dependencies = [ ] [[package]] -name = "leptos" +name = "leptos_actix" version = "0.6.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56d079555ff18158a1ed28d2a8ac529b4cb5904490384064346eb2d321addde6" -dependencies = [ - "cfg-if", - "leptos_config 0.6.9", - "leptos_dom 0.6.9", - "leptos_macro 0.6.9", - "leptos_reactive 0.6.9", - "leptos_server 0.6.9", - "server_fn 0.6.9", - "tracing", - "typed-builder", - "typed-builder-macro", - "web-sys", -] - -[[package]] -name = "leptos_actix" -version = "0.5.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67b2b118a031de24b39be9ef2dcfa03e7e255e98d06a8aa2c53f220155424cf1" +checksum = "9edb4789a15864a26d695038f42dcdf1d1c32d3a1f537751ce177c97f4f5e3dd" dependencies = [ "actix-http", "actix-web", "futures", - "leptos 0.5.4", + "leptos", "leptos_integration_utils", + "leptos_macro", "leptos_meta", "leptos_router", "parking_lot", "regex", "serde_json", + "server_fn", "tokio", "tracing", ] -[[package]] -name = "leptos_config" -version = "0.5.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afcaa5db5b22b794b624e14ffe2aefae215b2d21c60a230ae2d06fe21ae5da64" -dependencies = [ - "config 0.13.4", - "regex", - "serde", - "thiserror", - "typed-builder", -] - [[package]] name = "leptos_config" version = "0.6.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2d80b4ed5f0447996b9a28879002f995d3770687630f568be41307f362f84cb7" dependencies = [ - "config 0.14.0", + "config", "regex", "serde", "thiserror", "typed-builder", ] -[[package]] -name = "leptos_dom" -version = "0.5.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af459b63567e8e9c921ecbe7863732dc8dcb7874eaad6826b7d3778a53ec0ea6" -dependencies = [ - "async-recursion", - "cfg-if", - "drain_filter_polyfill", - "futures", - "getrandom", - "html-escape", - "indexmap", - "itertools 0.10.5", - "js-sys", - "leptos_reactive 0.5.4", - "once_cell", - "pad-adapter", - "paste", - "rustc-hash", - "serde", - "serde_json", - "server_fn 0.5.4", - "smallvec", - "tracing", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", -] - [[package]] name = "leptos_dom" version = "0.6.9" @@ -1822,16 +1673,16 @@ dependencies = [ "getrandom", "html-escape", "indexmap", - "itertools 0.12.1", + "itertools", "js-sys", - "leptos_reactive 0.6.9", + "leptos_reactive", "once_cell", "pad-adapter", "paste", "rustc-hash", "serde", "serde_json", - "server_fn 0.6.9", + "server_fn", "smallvec", "tracing", "wasm-bindgen", @@ -1839,24 +1690,6 @@ dependencies = [ "web-sys", ] -[[package]] -name = "leptos_hot_reload" -version = "0.5.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ea60376eb80a24b3ab082612d62211e3ea0fc4dee132f7ff34d5fa5a5108cd2" -dependencies = [ - "anyhow", - "camino", - "indexmap", - "parking_lot", - "proc-macro2", - "quote", - "rstml", - "serde", - "syn 2.0.48", - "walkdir", -] - [[package]] name = "leptos_hot_reload" version = "0.6.9" @@ -1885,48 +1718,25 @@ dependencies = [ "encoding_rs", "icondata_core", "lazy_static", - "leptos 0.6.9", + "leptos", "log", "paste", ] [[package]] name = "leptos_integration_utils" -version = "0.5.4" +version = "0.6.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2dbbd7d721bcdd9aa7b20987063de41314c836a3ac67e263ca489857e337dec" +checksum = "ff00799857159434d31b6bd1898e21c63f69f39289621da5a554fcab1c3e7300" dependencies = [ "futures", - "leptos 0.5.4", - "leptos_config 0.5.4", - "leptos_hot_reload 0.5.4", + "leptos", + "leptos_config", + "leptos_hot_reload", "leptos_meta", "tracing", ] -[[package]] -name = "leptos_macro" -version = "0.5.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7e96f4c450f4b5e2ccb135c2b1328890f911ca4ee89da9ed6d582df929e6cb5" -dependencies = [ - "attribute-derive", - "cfg-if", - "convert_case 0.6.0", - "html-escape", - "itertools 0.11.0", - "leptos_hot_reload 0.5.4", - "prettyplease", - "proc-macro-error", - "proc-macro2", - "quote", - "rstml", - "server_fn_macro 0.5.4", - "syn 2.0.48", - "tracing", - "uuid", -] - [[package]] name = "leptos_macro" version = "0.6.9" @@ -1937,14 +1747,14 @@ dependencies = [ "cfg-if", "convert_case 0.6.0", "html-escape", - "itertools 0.12.1", - "leptos_hot_reload 0.6.9", + "itertools", + "leptos_hot_reload", "prettyplease", "proc-macro-error", "proc-macro2", "quote", "rstml", - "server_fn_macro 0.6.9", + "server_fn_macro", "syn 2.0.48", "tracing", "uuid", @@ -1952,46 +1762,18 @@ dependencies = [ [[package]] name = "leptos_meta" -version = "0.5.4" +version = "0.6.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "983bbf829598d275b01e96bd9fca71e4739dd7b9fdf69cb8898b30ebfb124332" +checksum = "12b9dac59a2f88f5235dbe17cfa81b738a6f47238a64e4f23b921f1a90a9bf11" dependencies = [ "cfg-if", "indexmap", - "leptos 0.5.4", + "leptos", "tracing", "wasm-bindgen", "web-sys", ] -[[package]] -name = "leptos_reactive" -version = "0.5.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22207568e096ac153ba8da68635e3136c1ec614ea9012736fa861c05bfb2eeff" -dependencies = [ - "base64 0.21.5", - "cfg-if", - "futures", - "indexmap", - "js-sys", - "paste", - "pin-project", - "rkyv", - "rustc-hash", - "self_cell", - "serde", - "serde-wasm-bindgen 0.5.0", - "serde_json", - "slotmap", - "thiserror", - "tokio", - "tracing", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", -] - [[package]] name = "leptos_reactive" version = "0.6.9" @@ -2002,32 +1784,37 @@ dependencies = [ "cfg-if", "futures", "indexmap", + "js-sys", "paste", "pin-project", + "rkyv", "rustc-hash", "self_cell", "serde", - "serde-wasm-bindgen 0.6.5", + "serde-wasm-bindgen", "serde_json", "slotmap", "thiserror", + "tokio", "tracing", + "wasm-bindgen", "wasm-bindgen-futures", + "web-sys", ] [[package]] name = "leptos_router" -version = "0.5.4" +version = "0.6.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1a2ff8b8e8ae8b17efd8be2a407f7f83ed57c5243f70f2d03e6635f9ff61848" +checksum = "9460a5dc184fa05d8eb635b687ad3220d02d2d23d6f49c3bf146aa71e427f423" dependencies = [ "cached", "cfg-if", "gloo-net 0.2.6", - "itertools 0.11.0", + "itertools", "js-sys", "lazy_static", - "leptos 0.5.4", + "leptos", "leptos_integration_utils", "leptos_meta", "linear-map", @@ -2035,6 +1822,7 @@ dependencies = [ "once_cell", "percent-encoding", "regex", + "send_wrapper", "serde", "serde_json", "serde_qs", @@ -2046,22 +1834,6 @@ dependencies = [ "web-sys", ] -[[package]] -name = "leptos_server" -version = "0.5.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "272d018a5adf33d10ee57e6f0f83dccc305c68613cd207e8a653aeebd4cd5b4f" -dependencies = [ - "inventory", - "lazy_static", - "leptos_macro 0.5.4", - "leptos_reactive 0.5.4", - "serde", - "server_fn 0.5.4", - "thiserror", - "tracing", -] - [[package]] name = "leptos_server" version = "0.6.9" @@ -2070,10 +1842,10 @@ checksum = "654b6ff6a24e79977641b5214452373b1e12fdf4c8a563fadf656c139694b4b9" dependencies = [ "inventory", "lazy_static", - "leptos_macro 0.6.9", - "leptos_reactive 0.6.9", + "leptos_macro", + "leptos_reactive", "serde", - "server_fn 0.6.9", + "server_fn", "thiserror", "tracing", ] @@ -2101,7 +1873,7 @@ dependencies = [ "http 0.2.11", "icondata", "lazy_static", - "leptos 0.5.4", + "leptos", "leptos_actix", "leptos_icons", "leptos_meta", @@ -2708,41 +2480,6 @@ dependencies = [ "bytecheck", ] -[[package]] -name = "reqwest" -version = "0.11.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37b1ae8d9ac08420c66222fb9096fc5de435c3c48542bc5336c51892cffafb41" -dependencies = [ - "base64 0.21.5", - "bytes", - "encoding_rs", - "futures-core", - "futures-util", - "h2", - "http 0.2.11", - "http-body", - "hyper", - "ipnet", - "js-sys", - "log", - "mime", - "once_cell", - "percent-encoding", - "pin-project-lite", - "serde", - "serde_json", - "serde_urlencoded", - "system-configuration", - "tokio", - "tower-service", - "url", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", - "winreg", -] - [[package]] name = "rkyv" version = "0.7.43" @@ -2873,17 +2610,6 @@ dependencies = [ "serde_derive", ] -[[package]] -name = "serde-wasm-bindgen" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3b143e2833c57ab9ad3ea280d21fd34e285a42837aeb0ee301f4f41890fa00e" -dependencies = [ - "js-sys", - "serde", - "wasm-bindgen", -] - [[package]] name = "serde-wasm-bindgen" version = "0.6.5" @@ -2958,37 +2684,13 @@ dependencies = [ "serde", ] -[[package]] -name = "server_fn" -version = "0.5.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfed18dfcc8d9004579c40482c3419c07f60ffb9c5b250542edca99f508b0ce9" -dependencies = [ - "ciborium", - "const_format", - "gloo-net 0.2.6", - "inventory", - "js-sys", - "lazy_static", - "once_cell", - "proc-macro2", - "quote", - "reqwest", - "serde", - "serde_json", - "serde_qs", - "server_fn_macro_default 0.5.4", - "syn 2.0.48", - "thiserror", - "xxhash-rust", -] - [[package]] name = "server_fn" version = "0.6.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2955da1dc5fcd970c182ebf1089af6c5f19051e1f286a21f7b96490a49b7a531" dependencies = [ + "actix-web", "bytes", "ciborium", "const_format", @@ -2996,13 +2698,14 @@ dependencies = [ "futures", "gloo-net 0.5.0", "http 1.1.0", + "inventory", "js-sys", "once_cell", "send_wrapper", "serde", "serde_json", "serde_qs", - "server_fn_macro_default 0.6.9", + "server_fn_macro_default", "thiserror", "url", "wasm-bindgen", @@ -3012,21 +2715,6 @@ dependencies = [ "xxhash-rust", ] -[[package]] -name = "server_fn_macro" -version = "0.5.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b70ae8e22546ba85500391b36c08e3fba64871be8a26557a3663a8e08acb56f" -dependencies = [ - "const_format", - "proc-macro-error", - "proc-macro2", - "quote", - "serde", - "syn 2.0.48", - "xxhash-rust", -] - [[package]] name = "server_fn_macro" version = "0.6.9" @@ -3041,23 +2729,13 @@ dependencies = [ "xxhash-rust", ] -[[package]] -name = "server_fn_macro_default" -version = "0.5.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7256ba61dfadb220598db418376e7bc2a34b96df36c4dc48f24ffe161810fc0b" -dependencies = [ - "server_fn_macro 0.5.4", - "syn 2.0.48", -] - [[package]] name = "server_fn_macro_default" version = "0.6.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "060af1def72353a779fcc184c53e1965d3055a38b9e827f2259b2bff2d9c371e" dependencies = [ - "server_fn_macro 0.6.9", + "server_fn_macro", "syn 2.0.48", ] @@ -3179,27 +2857,6 @@ dependencies = [ "syn 2.0.48", ] -[[package]] -name = "system-configuration" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" -dependencies = [ - "bitflags 1.3.2", - "core-foundation", - "system-configuration-sys", -] - -[[package]] -name = "system-configuration-sys" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" -dependencies = [ - "core-foundation-sys", - "libc", -] - [[package]] name = "tap" version = "1.0.1" @@ -3314,15 +2971,6 @@ dependencies = [ "tracing", ] -[[package]] -name = "toml" -version = "0.5.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" -dependencies = [ - "serde", -] - [[package]] name = "toml" version = "0.7.8" @@ -3382,12 +3030,6 @@ dependencies = [ "winnow 0.6.5", ] -[[package]] -name = "tower-service" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" - [[package]] name = "tracing" version = "0.1.40" @@ -3420,12 +3062,6 @@ dependencies = [ "once_cell", ] -[[package]] -name = "try-lock" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" - [[package]] name = "typed-builder" version = "0.18.0" @@ -3552,15 +3188,6 @@ dependencies = [ "winapi-util", ] -[[package]] -name = "want" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" -dependencies = [ - "try-lock", -] - [[package]] name = "wasi" version = "0.11.0+wasi-snapshot-preview1" @@ -3771,16 +3398,6 @@ dependencies = [ "memchr", ] -[[package]] -name = "winreg" -version = "0.50.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" -dependencies = [ - "cfg-if", - "windows-sys", -] - [[package]] name = "wyz" version = "0.5.1" diff --git a/Cargo.toml b/Cargo.toml index 9a0d7c7..74c9069 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -13,10 +13,10 @@ actix-web = { version = "4", optional = true, features = ["macros"] } console_error_panic_hook = "0.1" cfg-if = "1" http = { version = "0.2", optional = true } -leptos = { version = "0.5", features = ["nightly"] } -leptos_meta = { version = "0.5", features = ["nightly"] } -leptos_actix = { version = "0.5", optional = true } -leptos_router = { version = "0.5", features = ["nightly"] } +leptos = { version = "0.6", features = ["nightly"] } +leptos_meta = { version = "0.6", features = ["nightly"] } +leptos_actix = { version = "0.6", optional = true } +leptos_router = { version = "0.6", features = ["nightly"] } wasm-bindgen = "=0.2.89" leptos_icons = { version = "0.3.0" } icondata = { version = "0.3.0" } diff --git a/src/auth.rs b/src/auth.rs index 1995deb..6de6f3f 100644 --- a/src/auth.rs +++ b/src/auth.rs @@ -1,4 +1,5 @@ use leptos::*; +use leptos::server_fn::error::NoCustomError; use crate::models::User; /// Create a new user and log them in @@ -19,13 +20,17 @@ pub async fn signup(new_user: User) -> Result<(), ServerFnError> { }; create_user(&new_user).await - .map_err(|e| ServerFnError::ServerError(format!("Error creating user: {}", e)))?; + .map_err(|e| ServerFnError::<NoCustomError>::ServerError(format!("Error creating user: {}", e)))?; - extract(|request: HttpRequest| async move { - Identity::login(&request.extensions(), new_user.username.clone()) - }).await??; - - Ok(()) + match extract::<HttpRequest>().await { + Ok(request) => { + match Identity::login(&request.extensions(), new_user.username.clone()) { + Ok(_) => Ok(()), + Err(e) => Err(ServerFnError::<NoCustomError>::ServerError(format!("Error logging in user: {}", e))), + } + }, + Err(e) => Err(ServerFnError::<NoCustomError>::ServerError(format!("Error getting request: {}", e))), + } } /// Log a user in @@ -39,18 +44,22 @@ pub async fn login(username_or_email: String, password: String) -> Result<bool, use leptos_actix::extract; let possible_user = validate_user(username_or_email, password).await - .map_err(|e| ServerFnError::ServerError(format!("Error validating user: {}", e)))?; + .map_err(|e| ServerFnError::<NoCustomError>::ServerError(format!("Error validating user: {}", e)))?; let user = match possible_user { Some(user) => user, None => return Ok(false) }; - extract(|request: HttpRequest| async move { - Identity::login(&request.extensions(), user.username.clone()) - }).await??; - - Ok(true) + match extract::<HttpRequest>().await { + Ok(request) => { + match Identity::login(&request.extensions(), user.username.clone()) { + Ok(_) => Ok(true), + Err(e) => Err(ServerFnError::<NoCustomError>::ServerError(format!("Error logging in user: {}", e))), + } + } + Err(e) => Err(ServerFnError::<NoCustomError>::ServerError(format!("Error getting request: {}", e))), + } } /// Log a user out @@ -60,11 +69,11 @@ pub async fn logout() -> Result<(), ServerFnError> { use leptos_actix::extract; use actix_identity::Identity; - extract(|user: Option<Identity>| async move { - if let Some(user) = user { - user.logout(); - } - }).await?; + match extract::<Option<Identity>>().await { + Ok(Some(user)) => user.logout(), + Ok(None) => {}, + Err(e) => return Err(ServerFnError::<NoCustomError>::ServerError(format!("Error getting user: {}", e))), + }; Ok(()) } diff --git a/src/users.rs b/src/users.rs index 7d81b31..e1ab382 100644 --- a/src/users.rs +++ b/src/users.rs @@ -14,6 +14,7 @@ cfg_if::cfg_if! { } use leptos::*; +use leptos::server_fn::error::NoCustomError; use crate::models::User; /// Get a user from the database by username or email @@ -26,7 +27,7 @@ pub async fn find_user(username_or_email: String) -> Result<Option<User>, Server let db_con = &mut get_db_conn(); let user = users.filter(username.eq(username_or_email.clone())).or_filter(email.eq(username_or_email)) .first::<User>(db_con).optional() - .map_err(|e| ServerFnError::ServerError(format!("Error getting user from database: {}", e)))?; + .map_err(|e| ServerFnError::<NoCustomError>::ServerError(format!("Error getting user from database: {}", e)))?; Ok(user) } @@ -38,11 +39,11 @@ pub async fn create_user(new_user: &User) -> Result<(), ServerFnError> { use crate::schema::users::dsl::*; let new_password = new_user.password.clone() - .ok_or(ServerFnError::ServerError(format!("No password provided for user {}", new_user.username)))?; + .ok_or(ServerFnError::<NoCustomError>::ServerError(format!("No password provided for user {}", new_user.username)))?; let salt = SaltString::generate(&mut OsRng); let password_hash = Pbkdf2.hash_password(new_password.as_bytes(), &salt) - .map_err(|_| ServerFnError::ServerError("Error hashing password".to_string()))?.to_string(); + .map_err(|_| ServerFnError::<NoCustomError>::ServerError("Error hashing password".to_string()))?.to_string(); let new_user = User { password: Some(password_hash), @@ -52,7 +53,7 @@ pub async fn create_user(new_user: &User) -> Result<(), ServerFnError> { let db_con = &mut get_db_conn(); diesel::insert_into(users).values(&new_user).execute(db_con) - .map_err(|e| ServerFnError::ServerError(format!("Error creating user: {}", e)))?; + .map_err(|e| ServerFnError::<NoCustomError>::ServerError(format!("Error creating user: {}", e)))?; Ok(()) } @@ -62,7 +63,7 @@ pub async fn create_user(new_user: &User) -> Result<(), ServerFnError> { #[cfg(feature = "ssr")] pub async fn validate_user(username_or_email: String, password: String) -> Result<Option<User>, ServerFnError> { let db_user = find_user(username_or_email.clone()).await - .map_err(|e| ServerFnError::ServerError(format!("Error getting user from database: {}", e)))?; + .map_err(|e| ServerFnError::<NoCustomError>::ServerError(format!("Error getting user from database: {}", e)))?; // If the user is not found, return None let db_user = match db_user { @@ -71,10 +72,10 @@ pub async fn validate_user(username_or_email: String, password: String) -> Resul }; let db_password = db_user.password.clone() - .ok_or(ServerFnError::ServerError(format!("No password found for user {}", db_user.username)))?; + .ok_or(ServerFnError::<NoCustomError>::ServerError(format!("No password found for user {}", db_user.username)))?; let password_hash = PasswordHash::new(&db_password) - .map_err(|e| ServerFnError::ServerError(format!("Error hashing supplied password: {}", e)))?; + .map_err(|e| ServerFnError::<NoCustomError>::ServerError(format!("Error hashing supplied password: {}", e)))?; match Pbkdf2.verify_password(password.as_bytes(), &password_hash) { Ok(()) => {}, @@ -82,7 +83,7 @@ pub async fn validate_user(username_or_email: String, password: String) -> Resul return Ok(None); }, Err(e) => { - return Err(ServerFnError::ServerError(format!("Error verifying password: {}", e))); + return Err(ServerFnError::<NoCustomError>::ServerError(format!("Error verifying password: {}", e))); } } From bc94c6024018b5c556b6925b0f1621dfe2f0958f Mon Sep 17 00:00:00 2001 From: Ethan Girouard <mr.egirouard@gmail.com> Date: Sun, 31 Mar 2024 00:49:06 -0400 Subject: [PATCH 16/42] Fix unused NoCustomError import --- src/auth.rs | 5 ++++- src/users.rs | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/auth.rs b/src/auth.rs index 6de6f3f..63d107a 100644 --- a/src/auth.rs +++ b/src/auth.rs @@ -1,5 +1,5 @@ use leptos::*; -use leptos::server_fn::error::NoCustomError; + use crate::models::User; /// Create a new user and log them in @@ -12,6 +12,7 @@ pub async fn signup(new_user: User) -> Result<(), ServerFnError> { use leptos_actix::extract; use actix_web::{HttpMessage, HttpRequest}; use actix_identity::Identity; + use leptos::server_fn::error::NoCustomError; // Ensure the user has no id let new_user = User { @@ -42,6 +43,7 @@ pub async fn login(username_or_email: String, password: String) -> Result<bool, use actix_web::{HttpMessage, HttpRequest}; use actix_identity::Identity; use leptos_actix::extract; + use leptos::server_fn::error::NoCustomError; let possible_user = validate_user(username_or_email, password).await .map_err(|e| ServerFnError::<NoCustomError>::ServerError(format!("Error validating user: {}", e)))?; @@ -68,6 +70,7 @@ pub async fn login(username_or_email: String, password: String) -> Result<bool, pub async fn logout() -> Result<(), ServerFnError> { use leptos_actix::extract; use actix_identity::Identity; + use leptos::server_fn::error::NoCustomError; match extract::<Option<Identity>>().await { Ok(Some(user)) => user.logout(), diff --git a/src/users.rs b/src/users.rs index e1ab382..51fecdc 100644 --- a/src/users.rs +++ b/src/users.rs @@ -14,7 +14,6 @@ cfg_if::cfg_if! { } use leptos::*; -use leptos::server_fn::error::NoCustomError; use crate::models::User; /// Get a user from the database by username or email @@ -22,6 +21,7 @@ use crate::models::User; #[cfg(feature = "ssr")] pub async fn find_user(username_or_email: String) -> Result<Option<User>, ServerFnError> { use crate::schema::users::dsl::*; + use leptos::server_fn::error::NoCustomError; // Look for either a username or email that matches the input, and return an option with None if no user is found let db_con = &mut get_db_conn(); @@ -37,6 +37,7 @@ pub async fn find_user(username_or_email: String) -> Result<Option<User>, Server #[cfg(feature = "ssr")] pub async fn create_user(new_user: &User) -> Result<(), ServerFnError> { use crate::schema::users::dsl::*; + use leptos::server_fn::error::NoCustomError; let new_password = new_user.password.clone() .ok_or(ServerFnError::<NoCustomError>::ServerError(format!("No password provided for user {}", new_user.username)))?; @@ -62,6 +63,8 @@ pub async fn create_user(new_user: &User) -> Result<(), ServerFnError> { /// Returns a Result with the user if the credentials are valid, None if not valid, or an error if there was a problem #[cfg(feature = "ssr")] pub async fn validate_user(username_or_email: String, password: String) -> Result<Option<User>, ServerFnError> { + use leptos::server_fn::error::NoCustomError; + let db_user = find_user(username_or_email.clone()).await .map_err(|e| ServerFnError::<NoCustomError>::ServerError(format!("Error getting user from database: {}", e)))?; From 1454c85d3be39ba94d1633e0004ef8bf76fd9840 Mon Sep 17 00:00:00 2001 From: Ethan Girouard <mr.egirouard@gmail.com> Date: Sun, 31 Mar 2024 01:21:13 -0400 Subject: [PATCH 17/42] Update to leptos_axum 0.6 --- Cargo.lock | 613 +++++++++++------------------------------------------ Cargo.toml | 2 +- 2 files changed, 125 insertions(+), 490 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 28a9dfc..60853bd 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -424,13 +424,12 @@ checksum = "3b829e4e32b91e643de6eafe82b1d90675f5874230191a4ffbc1b336dec4d6bf" dependencies = [ "async-trait", "axum-core 0.3.4", - "axum-macros", "bitflags 1.3.2", "bytes", "futures-util", "http 0.2.11", "http-body 0.4.6", - "hyper", + "hyper 0.14.28", "itoa", "matchit", "memchr", @@ -442,13 +441,41 @@ dependencies = [ "serde_json", "serde_path_to_error", "serde_urlencoded", - "sync_wrapper", + "sync_wrapper 0.1.2", "tokio", "tower", "tower-layer", "tower-service", ] +[[package]] +name = "axum" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a6c9af12842a67734c9a2e355436e5d03b22383ed60cf13cd0c18fbfe3dcbcf" +dependencies = [ + "async-trait", + "axum-core 0.4.3", + "bytes", + "futures-util", + "http 1.0.0", + "http-body 1.0.0", + "http-body-util", + "itoa", + "matchit", + "memchr", + "mime", + "multer", + "percent-encoding", + "pin-project-lite", + "rustversion", + "serde", + "sync_wrapper 1.0.0", + "tower", + "tower-layer", + "tower-service", +] + [[package]] name = "axum-core" version = "0.3.4" @@ -481,23 +508,11 @@ dependencies = [ "mime", "pin-project-lite", "rustversion", - "sync_wrapper", + "sync_wrapper 0.1.2", "tower-layer", "tower-service", ] -[[package]] -name = "axum-macros" -version = "0.3.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cdca6a10ecad987bda04e95606ef85a5417dcaac1a78455242d72e031e2b6b62" -dependencies = [ - "heck", - "proc-macro2", - "quote", - "syn 2.0.48", -] - [[package]] name = "backtrace" version = "0.3.69" @@ -746,20 +761,6 @@ dependencies = [ "tokio-util", ] -[[package]] -name = "config" -version = "0.13.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23738e11972c7643e4ec947840fc463b6a571afcd3e735bdfce7d03c7a784aca" -dependencies = [ - "async-trait", - "lazy_static", - "nom", - "pathdiff", - "serde", - "toml 0.5.11", -] - [[package]] name = "config" version = "0.14.0" @@ -847,22 +848,6 @@ dependencies = [ "version_check", ] -[[package]] -name = "core-foundation" -version = "0.9.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" -dependencies = [ - "core-foundation-sys", - "libc", -] - -[[package]] -name = "core-foundation-sys" -version = "0.8.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" - [[package]] name = "cpufeatures" version = "0.2.11" @@ -1365,18 +1350,6 @@ dependencies = [ "allocator-api2", ] -[[package]] -name = "heck" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" - -[[package]] -name = "hermit-abi" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" - [[package]] name = "hkdf" version = "0.12.4" @@ -1494,7 +1467,6 @@ dependencies = [ "futures-channel", "futures-core", "futures-util", - "h2", "http 0.2.11", "http-body 0.4.6", "httparse", @@ -1508,6 +1480,18 @@ dependencies = [ "want", ] +[[package]] +name = "hyper" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "186548d73ac615b32a73aafe38fb4f56c0d340e110e5a200bcadbaf2e199263a" +dependencies = [ + "bytes", + "http 1.0.0", + "http-body 1.0.0", + "tokio", +] + [[package]] name = "icondata" version = "0.3.0" @@ -1759,30 +1743,6 @@ version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c8573b2b1fb643a372c73b23f4da5f888677feef3305146d68a539250a9bccc7" -[[package]] -name = "ipnet" -version = "2.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" - -[[package]] -name = "itertools" -version = "0.10.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" -dependencies = [ - "either", -] - -[[package]] -name = "itertools" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57" -dependencies = [ - "either", -] - [[package]] name = "itertools" version = "0.12.1" @@ -1828,25 +1788,6 @@ version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" -[[package]] -name = "leptos" -version = "0.5.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d02b78d6e38acf8199426058a0d8c4030835d84a4ee16147df25be7fed707e0" -dependencies = [ - "cfg-if", - "leptos_config 0.5.4", - "leptos_dom 0.5.4", - "leptos_macro 0.5.4", - "leptos_reactive 0.5.4", - "leptos_server 0.5.4", - "server_fn 0.5.4", - "tracing", - "typed-builder", - "typed-builder-macro", - "web-sys", -] - [[package]] name = "leptos" version = "0.6.9" @@ -1854,12 +1795,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "56d079555ff18158a1ed28d2a8ac529b4cb5904490384064346eb2d321addde6" dependencies = [ "cfg-if", - "leptos_config 0.6.9", - "leptos_dom 0.6.9", - "leptos_macro 0.6.9", - "leptos_reactive 0.6.9", - "leptos_server 0.6.9", - "server_fn 0.6.9", + "leptos_config", + "leptos_dom", + "leptos_macro", + "leptos_reactive", + "leptos_server", + "server_fn", "tracing", "typed-builder", "typed-builder-macro", @@ -1876,98 +1817,56 @@ dependencies = [ "actix-http", "actix-web", "futures", - "leptos 0.6.9", - "leptos_integration_utils 0.6.9", - "leptos_macro 0.6.9", - "leptos_meta 0.6.9", - "leptos_router 0.6.9", + "leptos", + "leptos_integration_utils", + "leptos_macro", + "leptos_meta", + "leptos_router", "parking_lot", "regex", "serde_json", - "server_fn 0.6.9", + "server_fn", "tokio", "tracing", ] [[package]] name = "leptos_axum" -version = "0.5.4" +version = "0.6.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6283fd19b98f4f7535b80a32064747028fbf4f88ceac4e2a24e9a7d5ed6caf5a" +checksum = "2276bb8b97638d67c7b704a1351ef88ff3b41a286fc46d48aa59da9f1916bd3c" dependencies = [ - "axum", + "axum 0.7.5", "cfg-if", "futures", - "http 0.2.11", - "hyper", - "leptos 0.5.4", - "leptos_integration_utils 0.5.4", - "leptos_meta 0.5.4", - "leptos_router 0.5.4", + "http-body-util", + "leptos", + "leptos_integration_utils", + "leptos_macro", + "leptos_meta", + "leptos_router", "once_cell", "parking_lot", "serde_json", + "server_fn", "tokio", "tokio-util", "tracing", ] -[[package]] -name = "leptos_config" -version = "0.5.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afcaa5db5b22b794b624e14ffe2aefae215b2d21c60a230ae2d06fe21ae5da64" -dependencies = [ - "config 0.13.4", - "regex", - "serde", - "thiserror", - "typed-builder", -] - [[package]] name = "leptos_config" version = "0.6.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2d80b4ed5f0447996b9a28879002f995d3770687630f568be41307f362f84cb7" dependencies = [ - "config 0.14.0", + "config", "regex", "serde", "thiserror", "typed-builder", ] -[[package]] -name = "leptos_dom" -version = "0.5.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af459b63567e8e9c921ecbe7863732dc8dcb7874eaad6826b7d3778a53ec0ea6" -dependencies = [ - "async-recursion", - "cfg-if", - "drain_filter_polyfill", - "futures", - "getrandom", - "html-escape", - "indexmap", - "itertools 0.10.5", - "js-sys", - "leptos_reactive 0.5.4", - "once_cell", - "pad-adapter", - "paste", - "rustc-hash", - "serde", - "serde_json", - "server_fn 0.5.4", - "smallvec", - "tracing", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", -] - [[package]] name = "leptos_dom" version = "0.6.9" @@ -1981,16 +1880,16 @@ dependencies = [ "getrandom", "html-escape", "indexmap", - "itertools 0.12.1", + "itertools", "js-sys", - "leptos_reactive 0.6.9", + "leptos_reactive", "once_cell", "pad-adapter", "paste", "rustc-hash", "serde", "serde_json", - "server_fn 0.6.9", + "server_fn", "smallvec", "tracing", "wasm-bindgen", @@ -1998,24 +1897,6 @@ dependencies = [ "web-sys", ] -[[package]] -name = "leptos_hot_reload" -version = "0.5.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ea60376eb80a24b3ab082612d62211e3ea0fc4dee132f7ff34d5fa5a5108cd2" -dependencies = [ - "anyhow", - "camino", - "indexmap", - "parking_lot", - "proc-macro2", - "quote", - "rstml", - "serde", - "syn 2.0.48", - "walkdir", -] - [[package]] name = "leptos_hot_reload" version = "0.6.9" @@ -2044,25 +1925,11 @@ dependencies = [ "encoding_rs", "icondata_core", "lazy_static", - "leptos 0.6.9", + "leptos", "log", "paste", ] -[[package]] -name = "leptos_integration_utils" -version = "0.5.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2dbbd7d721bcdd9aa7b20987063de41314c836a3ac67e263ca489857e337dec" -dependencies = [ - "futures", - "leptos 0.5.4", - "leptos_config 0.5.4", - "leptos_hot_reload 0.5.4", - "leptos_meta 0.5.4", - "tracing", -] - [[package]] name = "leptos_integration_utils" version = "0.6.9" @@ -2070,36 +1937,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ff00799857159434d31b6bd1898e21c63f69f39289621da5a554fcab1c3e7300" dependencies = [ "futures", - "leptos 0.6.9", - "leptos_config 0.6.9", - "leptos_hot_reload 0.6.9", - "leptos_meta 0.6.9", + "leptos", + "leptos_config", + "leptos_hot_reload", + "leptos_meta", "tracing", ] -[[package]] -name = "leptos_macro" -version = "0.5.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7e96f4c450f4b5e2ccb135c2b1328890f911ca4ee89da9ed6d582df929e6cb5" -dependencies = [ - "attribute-derive", - "cfg-if", - "convert_case 0.6.0", - "html-escape", - "itertools 0.11.0", - "leptos_hot_reload 0.5.4", - "prettyplease", - "proc-macro-error", - "proc-macro2", - "quote", - "rstml", - "server_fn_macro 0.5.4", - "syn 2.0.48", - "tracing", - "uuid", -] - [[package]] name = "leptos_macro" version = "0.6.9" @@ -2110,33 +1954,19 @@ dependencies = [ "cfg-if", "convert_case 0.6.0", "html-escape", - "itertools 0.12.1", - "leptos_hot_reload 0.6.9", + "itertools", + "leptos_hot_reload", "prettyplease", "proc-macro-error", "proc-macro2", "quote", "rstml", - "server_fn_macro 0.6.9", + "server_fn_macro", "syn 2.0.48", "tracing", "uuid", ] -[[package]] -name = "leptos_meta" -version = "0.5.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "983bbf829598d275b01e96bd9fca71e4739dd7b9fdf69cb8898b30ebfb124332" -dependencies = [ - "cfg-if", - "indexmap", - "leptos 0.5.4", - "tracing", - "wasm-bindgen", - "web-sys", -] - [[package]] name = "leptos_meta" version = "0.6.9" @@ -2145,36 +1975,12 @@ checksum = "12b9dac59a2f88f5235dbe17cfa81b738a6f47238a64e4f23b921f1a90a9bf11" dependencies = [ "cfg-if", "indexmap", - "leptos 0.6.9", + "leptos", "tracing", "wasm-bindgen", "web-sys", ] -[[package]] -name = "leptos_reactive" -version = "0.5.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22207568e096ac153ba8da68635e3136c1ec614ea9012736fa861c05bfb2eeff" -dependencies = [ - "base64 0.21.7", - "cfg-if", - "futures", - "indexmap", - "paste", - "pin-project", - "rustc-hash", - "self_cell", - "serde", - "serde-wasm-bindgen 0.5.0", - "serde_json", - "slotmap", - "thiserror", - "tokio", - "tracing", - "wasm-bindgen-futures", -] - [[package]] name = "leptos_reactive" version = "0.6.9" @@ -2192,7 +1998,7 @@ dependencies = [ "rustc-hash", "self_cell", "serde", - "serde-wasm-bindgen 0.6.5", + "serde-wasm-bindgen", "serde_json", "slotmap", "thiserror", @@ -2203,37 +2009,6 @@ dependencies = [ "web-sys", ] -[[package]] -name = "leptos_router" -version = "0.5.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1a2ff8b8e8ae8b17efd8be2a407f7f83ed57c5243f70f2d03e6635f9ff61848" -dependencies = [ - "cached", - "cfg-if", - "gloo-net 0.2.6", - "itertools 0.11.0", - "js-sys", - "lazy_static", - "leptos 0.5.4", - "leptos_integration_utils 0.5.4", - "leptos_meta 0.5.4", - "linear-map", - "lru", - "once_cell", - "percent-encoding", - "regex", - "serde", - "serde_json", - "serde_qs", - "thiserror", - "tracing", - "url", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", -] - [[package]] name = "leptos_router" version = "0.6.9" @@ -2243,12 +2018,12 @@ dependencies = [ "cached", "cfg-if", "gloo-net 0.2.6", - "itertools 0.12.1", + "itertools", "js-sys", "lazy_static", - "leptos 0.6.9", - "leptos_integration_utils 0.6.9", - "leptos_meta 0.6.9", + "leptos", + "leptos_integration_utils", + "leptos_meta", "linear-map", "lru", "once_cell", @@ -2266,22 +2041,6 @@ dependencies = [ "web-sys", ] -[[package]] -name = "leptos_server" -version = "0.5.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "272d018a5adf33d10ee57e6f0f83dccc305c68613cd207e8a653aeebd4cd5b4f" -dependencies = [ - "inventory", - "lazy_static", - "leptos_macro 0.5.4", - "leptos_reactive 0.5.4", - "serde", - "server_fn 0.5.4", - "thiserror", - "tracing", -] - [[package]] name = "leptos_server" version = "0.6.9" @@ -2290,10 +2049,10 @@ checksum = "654b6ff6a24e79977641b5214452373b1e12fdf4c8a563fadf656c139694b4b9" dependencies = [ "inventory", "lazy_static", - "leptos_macro 0.6.9", - "leptos_reactive 0.6.9", + "leptos_macro", + "leptos_reactive", "serde", - "server_fn 0.6.9", + "server_fn", "thiserror", "tracing", ] @@ -2312,7 +2071,7 @@ dependencies = [ "actix-identity", "actix-session", "actix-web", - "axum", + "axum 0.6.20", "cfg-if", "console_error_panic_hook", "diesel", @@ -2322,12 +2081,12 @@ dependencies = [ "http 0.2.11", "icondata", "lazy_static", - "leptos 0.6.9", + "leptos", "leptos_actix", "leptos_axum", "leptos_icons", - "leptos_meta 0.6.9", - "leptos_router 0.6.9", + "leptos_meta", + "leptos_router", "openssl", "pbkdf2", "serde", @@ -2492,6 +2251,24 @@ dependencies = [ "windows-sys", ] +[[package]] +name = "multer" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a15d522be0a9c3e46fd2632e272d178f56387bdb5c9fbb3a36c649062e9b5219" +dependencies = [ + "bytes", + "encoding_rs", + "futures-util", + "http 1.0.0", + "httparse", + "log", + "memchr", + "mime", + "spin", + "version_check", +] + [[package]] name = "nom" version = "7.1.3" @@ -2508,16 +2285,6 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" -[[package]] -name = "num_cpus" -version = "1.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" -dependencies = [ - "hermit-abi", - "libc", -] - [[package]] name = "object" version = "0.32.2" @@ -2952,41 +2719,6 @@ dependencies = [ "bytecheck", ] -[[package]] -name = "reqwest" -version = "0.11.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37b1ae8d9ac08420c66222fb9096fc5de435c3c48542bc5336c51892cffafb41" -dependencies = [ - "base64 0.21.7", - "bytes", - "encoding_rs", - "futures-core", - "futures-util", - "h2", - "http 0.2.11", - "http-body 0.4.6", - "hyper", - "ipnet", - "js-sys", - "log", - "mime", - "once_cell", - "percent-encoding", - "pin-project-lite", - "serde", - "serde_json", - "serde_urlencoded", - "system-configuration", - "tokio", - "tower-service", - "url", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", - "winreg", -] - [[package]] name = "rkyv" version = "0.7.43" @@ -3123,17 +2855,6 @@ dependencies = [ "serde_derive", ] -[[package]] -name = "serde-wasm-bindgen" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3b143e2833c57ab9ad3ea280d21fd34e285a42837aeb0ee301f4f41890fa00e" -dependencies = [ - "js-sys", - "serde", - "wasm-bindgen", -] - [[package]] name = "serde-wasm-bindgen" version = "0.6.5" @@ -3218,31 +2939,6 @@ dependencies = [ "serde", ] -[[package]] -name = "server_fn" -version = "0.5.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfed18dfcc8d9004579c40482c3419c07f60ffb9c5b250542edca99f508b0ce9" -dependencies = [ - "ciborium", - "const_format", - "gloo-net 0.2.6", - "inventory", - "js-sys", - "lazy_static", - "once_cell", - "proc-macro2", - "quote", - "reqwest", - "serde", - "serde_json", - "serde_qs", - "server_fn_macro_default 0.5.4", - "syn 2.0.48", - "thiserror", - "xxhash-rust", -] - [[package]] name = "server_fn" version = "0.6.9" @@ -3250,6 +2946,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2955da1dc5fcd970c182ebf1089af6c5f19051e1f286a21f7b96490a49b7a531" dependencies = [ "actix-web", + "axum 0.7.5", "bytes", "ciborium", "const_format", @@ -3257,6 +2954,8 @@ dependencies = [ "futures", "gloo-net 0.5.0", "http 1.0.0", + "http-body-util", + "hyper 1.2.0", "inventory", "js-sys", "once_cell", @@ -3264,8 +2963,10 @@ dependencies = [ "serde", "serde_json", "serde_qs", - "server_fn_macro_default 0.6.9", + "server_fn_macro_default", "thiserror", + "tower", + "tower-layer", "url", "wasm-bindgen", "wasm-bindgen-futures", @@ -3274,21 +2975,6 @@ dependencies = [ "xxhash-rust", ] -[[package]] -name = "server_fn_macro" -version = "0.5.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b70ae8e22546ba85500391b36c08e3fba64871be8a26557a3663a8e08acb56f" -dependencies = [ - "const_format", - "proc-macro-error", - "proc-macro2", - "quote", - "serde", - "syn 2.0.48", - "xxhash-rust", -] - [[package]] name = "server_fn_macro" version = "0.6.9" @@ -3303,23 +2989,13 @@ dependencies = [ "xxhash-rust", ] -[[package]] -name = "server_fn_macro_default" -version = "0.5.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7256ba61dfadb220598db418376e7bc2a34b96df36c4dc48f24ffe161810fc0b" -dependencies = [ - "server_fn_macro 0.5.4", - "syn 2.0.48", -] - [[package]] name = "server_fn_macro_default" version = "0.6.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "060af1def72353a779fcc184c53e1965d3055a38b9e827f2259b2bff2d9c371e" dependencies = [ - "server_fn_macro 0.6.9", + "server_fn_macro", "syn 2.0.48", ] @@ -3395,6 +3071,12 @@ dependencies = [ "windows-sys", ] +[[package]] +name = "spin" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" + [[package]] name = "strsim" version = "0.10.0" @@ -3448,25 +3130,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" [[package]] -name = "system-configuration" -version = "0.5.1" +name = "sync_wrapper" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" -dependencies = [ - "bitflags 1.3.2", - "core-foundation", - "system-configuration-sys", -] - -[[package]] -name = "system-configuration-sys" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" -dependencies = [ - "core-foundation-sys", - "libc", -] +checksum = "384595c11a4e2969895cad5a8c4029115f5ab956a9e5ef4de79d11a426e5f20c" [[package]] name = "tap" @@ -3550,26 +3217,13 @@ dependencies = [ "bytes", "libc", "mio", - "num_cpus", "parking_lot", "pin-project-lite", "signal-hook-registry", "socket2", - "tokio-macros", "windows-sys", ] -[[package]] -name = "tokio-macros" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.48", -] - [[package]] name = "tokio-retry" version = "0.3.0" @@ -3597,15 +3251,6 @@ dependencies = [ "tracing", ] -[[package]] -name = "toml" -version = "0.5.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" -dependencies = [ - "serde", -] - [[package]] name = "toml" version = "0.7.8" @@ -4155,16 +3800,6 @@ dependencies = [ "memchr", ] -[[package]] -name = "winreg" -version = "0.50.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" -dependencies = [ - "cfg-if", - "windows-sys", -] - [[package]] name = "wyz" version = "0.5.1" diff --git a/Cargo.toml b/Cargo.toml index ce1a54f..1bb8091 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -16,7 +16,7 @@ http = "0.2" leptos = { version = "0.6", features = ["nightly"] } leptos_meta = { version = "0.6", features = ["nightly"] } leptos_actix = { version = "0.6", optional = true } -leptos_axum = { version = "0.5", optional = true } +leptos_axum = { version = "0.6", optional = true } leptos_router = { version = "0.6", features = ["nightly"] } wasm-bindgen = "=0.2.89" leptos_icons = { version = "0.3.0" } From c9f453528433ca764d8a8a774d000c1137b32876 Mon Sep 17 00:00:00 2001 From: Ethan Girouard <mr.egirouard@gmail.com> Date: Sun, 31 Mar 2024 01:21:24 -0400 Subject: [PATCH 18/42] Update to axum 0.7.5 --- Cargo.lock | 142 ++++++++++++++++++----------------------------------- Cargo.toml | 2 +- 2 files changed, 50 insertions(+), 94 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 60853bd..8a667b7 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -416,38 +416,6 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" -[[package]] -name = "axum" -version = "0.6.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b829e4e32b91e643de6eafe82b1d90675f5874230191a4ffbc1b336dec4d6bf" -dependencies = [ - "async-trait", - "axum-core 0.3.4", - "bitflags 1.3.2", - "bytes", - "futures-util", - "http 0.2.11", - "http-body 0.4.6", - "hyper 0.14.28", - "itoa", - "matchit", - "memchr", - "mime", - "percent-encoding", - "pin-project-lite", - "rustversion", - "serde", - "serde_json", - "serde_path_to_error", - "serde_urlencoded", - "sync_wrapper 0.1.2", - "tokio", - "tower", - "tower-layer", - "tower-service", -] - [[package]] name = "axum" version = "0.7.5" @@ -455,12 +423,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3a6c9af12842a67734c9a2e355436e5d03b22383ed60cf13cd0c18fbfe3dcbcf" dependencies = [ "async-trait", - "axum-core 0.4.3", + "axum-core", "bytes", "futures-util", "http 1.0.0", "http-body 1.0.0", "http-body-util", + "hyper", + "hyper-util", "itoa", "matchit", "memchr", @@ -470,27 +440,15 @@ dependencies = [ "pin-project-lite", "rustversion", "serde", + "serde_json", + "serde_path_to_error", + "serde_urlencoded", "sync_wrapper 1.0.0", + "tokio", "tower", "tower-layer", "tower-service", -] - -[[package]] -name = "axum-core" -version = "0.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "759fa577a247914fd3f7f76d62972792636412fbfd634cd452f6a385a74d2d2c" -dependencies = [ - "async-trait", - "bytes", - "futures-util", - "http 0.2.11", - "http-body 0.4.6", - "mime", - "rustversion", - "tower-layer", - "tower-service", + "tracing", ] [[package]] @@ -511,6 +469,7 @@ dependencies = [ "sync_wrapper 0.1.2", "tower-layer", "tower-service", + "tracing", ] [[package]] @@ -1457,29 +1416,6 @@ version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" -[[package]] -name = "hyper" -version = "0.14.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf96e135eb83a2a8ddf766e426a841d8ddd7449d5f00d34ea02b41d2f19eef80" -dependencies = [ - "bytes", - "futures-channel", - "futures-core", - "futures-util", - "http 0.2.11", - "http-body 0.4.6", - "httparse", - "httpdate", - "itoa", - "pin-project-lite", - "socket2", - "tokio", - "tower-service", - "tracing", - "want", -] - [[package]] name = "hyper" version = "1.2.0" @@ -1487,8 +1423,31 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "186548d73ac615b32a73aafe38fb4f56c0d340e110e5a200bcadbaf2e199263a" dependencies = [ "bytes", + "futures-channel", + "futures-util", "http 1.0.0", "http-body 1.0.0", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "smallvec", + "tokio", +] + +[[package]] +name = "hyper-util" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca38ef113da30126bbff9cd1705f9273e15d45498615d138b0c20279ac7a76aa" +dependencies = [ + "bytes", + "futures-util", + "http 1.0.0", + "http-body 1.0.0", + "hyper", + "pin-project-lite", + "socket2", "tokio", ] @@ -1836,7 +1795,7 @@ version = "0.6.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2276bb8b97638d67c7b704a1351ef88ff3b41a286fc46d48aa59da9f1916bd3c" dependencies = [ - "axum 0.7.5", + "axum", "cfg-if", "futures", "http-body-util", @@ -2071,7 +2030,7 @@ dependencies = [ "actix-identity", "actix-session", "actix-web", - "axum 0.6.20", + "axum", "cfg-if", "console_error_panic_hook", "diesel", @@ -2946,7 +2905,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2955da1dc5fcd970c182ebf1089af6c5f19051e1f286a21f7b96490a49b7a531" dependencies = [ "actix-web", - "axum 0.7.5", + "axum", "bytes", "ciborium", "const_format", @@ -2955,7 +2914,7 @@ dependencies = [ "gloo-net 0.5.0", "http 1.0.0", "http-body-util", - "hyper 1.2.0", + "hyper", "inventory", "js-sys", "once_cell", @@ -3221,9 +3180,21 @@ dependencies = [ "pin-project-lite", "signal-hook-registry", "socket2", + "tokio-macros", "windows-sys", ] +[[package]] +name = "tokio-macros" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.48", +] + [[package]] name = "tokio-retry" version = "0.3.0" @@ -3333,7 +3304,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4fd0118512cf0b3768f7fcccf0bef1ae41d68f2b45edc1e77432b36c97c56c6d" dependencies = [ "async-trait", - "axum-core 0.4.3", + "axum-core", "cookie 0.18.0", "futures-util", "http 1.0.0", @@ -3449,12 +3420,6 @@ dependencies = [ "once_cell", ] -[[package]] -name = "try-lock" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" - [[package]] name = "typed-builder" version = "0.18.0" @@ -3581,15 +3546,6 @@ dependencies = [ "winapi-util", ] -[[package]] -name = "want" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" -dependencies = [ - "try-lock", -] - [[package]] name = "wasi" version = "0.11.0+wasi-snapshot-preview1" diff --git a/Cargo.toml b/Cargo.toml index 1bb8091..e48203f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -33,7 +33,7 @@ actix-session = { version = "0.9.0", features = ["redis-rs-session"], optional = pbkdf2 = { version = "0.12.2", features = ["simple"], optional = true } futures = { version = "0.3.30", default-features = false, optional = true } tokio = { version = "1", optional = true } -axum = { version = "0.6.4", optional = true } +axum = { version = "0.7.5", optional = true } tower = { veresion = "0.4.13", optional = true } tower-http = { version = "0.4", optional = true, features = ["fs"] } thiserror = "1.0.57" From c6e8902aa8e779685a17639f361f80fc3b51bfe5 Mon Sep 17 00:00:00 2001 From: Ethan Girouard <mr.egirouard@gmail.com> Date: Sun, 31 Mar 2024 02:24:27 -0400 Subject: [PATCH 19/42] Update ahash version Fixes "unknown feature stdsimd" --- Cargo.lock | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 8a667b7..bad34a9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -52,7 +52,7 @@ dependencies = [ "actix-rt", "actix-service", "actix-utils", - "ahash 0.8.6", + "ahash 0.8.11", "base64 0.21.7", "bitflags 2.4.1", "brotli", @@ -201,7 +201,7 @@ dependencies = [ "actix-service", "actix-utils", "actix-web-codegen", - "ahash 0.8.6", + "ahash 0.8.11", "bytes", "bytestring", "cfg-if", @@ -290,9 +290,9 @@ dependencies = [ [[package]] name = "ahash" -version = "0.7.7" +version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a824f2aa7e75a0c98c5a504fceb80649e9c35265d44525b5f94de4771a395cd" +checksum = "891477e0c6a8957309ee5c45a6368af3ae14bb510732d2684ffa19af310920f9" dependencies = [ "getrandom", "once_cell", @@ -301,9 +301,9 @@ dependencies = [ [[package]] name = "ahash" -version = "0.8.6" +version = "0.8.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91429305e9f0a25f6205c5b8e0d2db09e0708a7a6df0f42212bb56c32c8ac97a" +checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" dependencies = [ "cfg-if", "getrandom", @@ -1290,7 +1290,7 @@ version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" dependencies = [ - "ahash 0.7.7", + "ahash 0.7.8", ] [[package]] @@ -1305,7 +1305,7 @@ version = "0.14.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" dependencies = [ - "ahash 0.8.6", + "ahash 0.8.11", "allocator-api2", ] From 2e42cc743c4b879e87b8efc42e863237d830e50f Mon Sep 17 00:00:00 2001 From: Ethan Girouard <mr.egirouard@gmail.com> Date: Sun, 31 Mar 2024 11:56:38 -0400 Subject: [PATCH 20/42] Override gloo-net version In the git repository for gloo packages, gloo-net has been updated to use http 1.0, but this change is not published with the package yet. --- Cargo.lock | 26 +++++++++++++++----------- Cargo.toml | 7 +++++-- 2 files changed, 20 insertions(+), 13 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index bad34a9..fcadb64 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -499,6 +499,12 @@ version = "0.21.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" +[[package]] +name = "base64" +version = "0.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9475866fec1451be56a3c2400fd081ff546538961565ccb5b7142cbd22bc7a51" + [[package]] name = "base64ct" version = "1.6.0" @@ -1215,14 +1221,13 @@ dependencies = [ [[package]] name = "gloo-net" version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43aaa242d1239a8822c15c645f02166398da4f8b5c4bae795c1f5b44e9eee173" +source = "git+https://github.com/rustwasm/gloo.git?rev=a823fab7ecc4068e9a28bd669da5eaf3f0a56380#a823fab7ecc4068e9a28bd669da5eaf3f0a56380" dependencies = [ "futures-channel", "futures-core", "futures-sink", "gloo-utils 0.2.0", - "http 0.2.11", + "http 1.0.0", "js-sys", "pin-project", "serde", @@ -1249,8 +1254,7 @@ dependencies = [ [[package]] name = "gloo-utils" version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b5555354113b18c547c1d3a98fbf7fb32a9ff4f6fa112ce823a21641a0ba3aa" +source = "git+https://github.com/rustwasm/gloo.git?rev=a823fab7ecc4068e9a28bd669da5eaf3f0a56380#a823fab7ecc4068e9a28bd669da5eaf3f0a56380" dependencies = [ "js-sys", "serde", @@ -2037,7 +2041,7 @@ dependencies = [ "diesel_migrations", "dotenv", "futures", - "http 0.2.11", + "http 1.0.0", "icondata", "lazy_static", "leptos", @@ -3353,9 +3357,9 @@ checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" [[package]] name = "tower-sessions" -version = "0.10.4" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5dfd131ee564762468250d3dbb8a04f3bc933bcc9bd4f0958ce8acbfb578b73" +checksum = "32b7b53dbe4dc5cf64382fcbd1e8b8ca222949d757fcabec1bcc8de751bb611b" dependencies = [ "async-trait", "http 1.0.0", @@ -3370,12 +3374,12 @@ dependencies = [ [[package]] name = "tower-sessions-core" -version = "0.10.4" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bed2607e4db384eed7a932a53c10f64202e73e9a970b6a7410bcbc018fd7c689" +checksum = "cec154be845cc7482fa002282813881732bdf17c75a8e85ff1bddaf387b668c5" dependencies = [ "async-trait", - "base64 0.21.7", + "base64 0.22.0", "futures", "http 1.0.0", "parking_lot", diff --git a/Cargo.toml b/Cargo.toml index e48203f..7d91956 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -12,7 +12,7 @@ actix-files = { version = "0.6", optional = true } actix-web = { version = "4", optional = true, features = ["macros"] } console_error_panic_hook = "0.1" cfg-if = "1" -http = "0.2" +http = "1.0" leptos = { version = "0.6", features = ["nightly"] } leptos_meta = { version = "0.6", features = ["nightly"] } leptos_actix = { version = "0.6", optional = true } @@ -37,7 +37,10 @@ axum = { version = "0.7.5", optional = true } tower = { veresion = "0.4.13", optional = true } tower-http = { version = "0.4", optional = true, features = ["fs"] } thiserror = "1.0.57" -tower-sessions = { version = "0.10.4", default-features = false } +tower-sessions = { version = "0.12", default-features = false } + +[patch.crates-io] +gloo-net = { git = "https://github.com/rustwasm/gloo.git", rev = "a823fab7ecc4068e9a28bd669da5eaf3f0a56380" } [features] csr = ["leptos/csr", "leptos_meta/csr", "leptos_router/csr"] From d5e16c80ead82e541b9cf2e971c2554e5b6dec32 Mon Sep 17 00:00:00 2001 From: Ethan Girouard <mr.egirouard@gmail.com> Date: Sun, 31 Mar 2024 12:04:36 -0400 Subject: [PATCH 21/42] Remove actix packages Temporarily comment out login and authentication --- Cargo.lock | 673 +--------------------------------------------------- Cargo.toml | 10 - src/app.rs | 4 +- src/auth.rs | 24 +- 4 files changed, 15 insertions(+), 696 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index fcadb64..35cd893 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,242 +2,6 @@ # It is not intended for manual editing. version = 3 -[[package]] -name = "actix-codec" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "617a8268e3537fe1d8c9ead925fca49ef6400927ee7bc26750e90ecee14ce4b8" -dependencies = [ - "bitflags 1.3.2", - "bytes", - "futures-core", - "futures-sink", - "memchr", - "pin-project-lite", - "tokio", - "tokio-util", - "tracing", -] - -[[package]] -name = "actix-files" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d832782fac6ca7369a70c9ee9a20554623c5e51c76e190ad151780ebea1cf689" -dependencies = [ - "actix-http", - "actix-service", - "actix-utils", - "actix-web", - "askama_escape", - "bitflags 1.3.2", - "bytes", - "derive_more", - "futures-core", - "http-range", - "log", - "mime", - "mime_guess", - "percent-encoding", - "pin-project-lite", -] - -[[package]] -name = "actix-http" -version = "3.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "129d4c88e98860e1758c5de288d1632b07970a16d59bdf7b8d66053d582bb71f" -dependencies = [ - "actix-codec", - "actix-rt", - "actix-service", - "actix-utils", - "ahash 0.8.11", - "base64 0.21.7", - "bitflags 2.4.1", - "brotli", - "bytes", - "bytestring", - "derive_more", - "encoding_rs", - "flate2", - "futures-core", - "h2", - "http 0.2.11", - "httparse", - "httpdate", - "itoa", - "language-tags", - "local-channel", - "mime", - "percent-encoding", - "pin-project-lite", - "rand", - "sha1", - "smallvec", - "tokio", - "tokio-util", - "tracing", - "zstd", -] - -[[package]] -name = "actix-identity" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1478456bca71c7b04411da1afb0c506e16dec6863815207693b791247511027f" -dependencies = [ - "actix-service", - "actix-session", - "actix-utils", - "actix-web", - "derive_more", - "futures-core", - "serde", - "tracing", -] - -[[package]] -name = "actix-macros" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e01ed3140b2f8d422c68afa1ed2e85d996ea619c988ac834d255db32138655cb" -dependencies = [ - "quote", - "syn 2.0.48", -] - -[[package]] -name = "actix-router" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d22475596539443685426b6bdadb926ad0ecaefdfc5fb05e5e3441f15463c511" -dependencies = [ - "bytestring", - "http 0.2.11", - "regex", - "serde", - "tracing", -] - -[[package]] -name = "actix-rt" -version = "2.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28f32d40287d3f402ae0028a9d54bef51af15c8769492826a69d28f81893151d" -dependencies = [ - "futures-core", - "tokio", -] - -[[package]] -name = "actix-server" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3eb13e7eef0423ea6eab0e59f6c72e7cb46d33691ad56a726b3cd07ddec2c2d4" -dependencies = [ - "actix-rt", - "actix-service", - "actix-utils", - "futures-core", - "futures-util", - "mio", - "socket2", - "tokio", - "tracing", -] - -[[package]] -name = "actix-service" -version = "2.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b894941f818cfdc7ccc4b9e60fa7e53b5042a2e8567270f9147d5591893373a" -dependencies = [ - "futures-core", - "paste", - "pin-project-lite", -] - -[[package]] -name = "actix-session" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b671404ec72194d8af58c2bdaf51e3c477a0595056bd5010148405870dda8df2" -dependencies = [ - "actix-service", - "actix-utils", - "actix-web", - "anyhow", - "derive_more", - "rand", - "redis", - "serde", - "serde_json", - "tracing", -] - -[[package]] -name = "actix-utils" -version = "3.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88a1dcdff1466e3c2488e1cb5c36a71822750ad43839937f85d2f4d9f8b705d8" -dependencies = [ - "local-waker", - "pin-project-lite", -] - -[[package]] -name = "actix-web" -version = "4.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e43428f3bf11dee6d166b00ec2df4e3aa8cc1606aaa0b7433c146852e2f4e03b" -dependencies = [ - "actix-codec", - "actix-http", - "actix-macros", - "actix-router", - "actix-rt", - "actix-server", - "actix-service", - "actix-utils", - "actix-web-codegen", - "ahash 0.8.11", - "bytes", - "bytestring", - "cfg-if", - "cookie 0.16.2", - "derive_more", - "encoding_rs", - "futures-core", - "futures-util", - "itoa", - "language-tags", - "log", - "mime", - "once_cell", - "pin-project-lite", - "regex", - "serde", - "serde_json", - "serde_urlencoded", - "smallvec", - "socket2", - "time", - "url", -] - -[[package]] -name = "actix-web-codegen" -version = "4.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb1f50ebbb30eca122b188319a4398b3f7bb4a8cdf50ecfb73bfc6a3c3ce54f5" -dependencies = [ - "actix-router", - "proc-macro2", - "quote", - "syn 2.0.48", -] - [[package]] name = "addr2line" version = "0.21.0" @@ -253,41 +17,6 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" -[[package]] -name = "aead" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d122413f284cf2d62fb1b7db97e02edb8cda96d769b16e443a4f6195e35662b0" -dependencies = [ - "crypto-common", - "generic-array", -] - -[[package]] -name = "aes" -version = "0.8.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac1f845298e95f983ff1944b728ae08b8cebab80d684f0a832ed0fc74dfa27e2" -dependencies = [ - "cfg-if", - "cipher", - "cpufeatures", -] - -[[package]] -name = "aes-gcm" -version = "0.10.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "831010a0f742e1209b3bcea8fab6a8e149051ba6099432c8cb2cc117dec3ead1" -dependencies = [ - "aead", - "aes", - "cipher", - "ctr", - "ghash", - "subtle", -] - [[package]] name = "ahash" version = "0.7.8" @@ -306,7 +35,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" dependencies = [ "cfg-if", - "getrandom", "once_cell", "version_check", "zerocopy", @@ -321,21 +49,6 @@ dependencies = [ "memchr", ] -[[package]] -name = "alloc-no-stdlib" -version = "2.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3" - -[[package]] -name = "alloc-stdlib" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94fb8275041c72129eb51b7d0322c29b8387a0386127718b096429201a5d6ece" -dependencies = [ - "alloc-no-stdlib", -] - [[package]] name = "allocator-api2" version = "0.2.16" @@ -348,18 +61,6 @@ version = "1.0.77" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c9d19de80eff169429ac1e9f48fffb163916b448a44e8e046186232046d9e1f9" -[[package]] -name = "arc-swap" -version = "1.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bddcadddf5e9015d310179a59bb28c4d4b9920ad0f11e8e14dbadf654890c9a6" - -[[package]] -name = "askama_escape" -version = "0.10.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "619743e34b5ba4e9703bba34deac3427c72507c7159f5fd030aea8cac0cfe341" - [[package]] name = "async-recursion" version = "1.0.5" @@ -487,12 +188,6 @@ dependencies = [ "rustc-demangle", ] -[[package]] -name = "base64" -version = "0.20.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ea22880d78093b0cbe17c89f64a7d457941e65759157ec6cb31a31d652b05e5" - [[package]] name = "base64" version = "0.21.7" @@ -544,27 +239,6 @@ dependencies = [ "generic-array", ] -[[package]] -name = "brotli" -version = "3.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "516074a47ef4bce09577a3b379392300159ce5b1ba2e501ff1c819950066100f" -dependencies = [ - "alloc-no-stdlib", - "alloc-stdlib", - "brotli-decompressor", -] - -[[package]] -name = "brotli-decompressor" -version = "2.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e2e4afe60d7dd600fdd3de8d0f08c2b7ec039712e3b6137ff98b7004e82de4f" -dependencies = [ - "alloc-no-stdlib", - "alloc-stdlib", -] - [[package]] name = "bumpalo" version = "3.14.0" @@ -606,15 +280,6 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" -[[package]] -name = "bytestring" -version = "1.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74d80203ea6b29df88012294f62733de21cfeab47f17b41af3a38bc30a03ee72" -dependencies = [ - "bytes", -] - [[package]] name = "cached" version = "0.45.1" @@ -659,7 +324,6 @@ version = "1.0.83" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" dependencies = [ - "jobserver", "libc", ] @@ -696,36 +360,12 @@ dependencies = [ "half", ] -[[package]] -name = "cipher" -version = "0.4.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" -dependencies = [ - "crypto-common", - "inout", -] - [[package]] name = "collection_literals" version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "186dce98367766de751c42c4f03970fc60fc012296e706ccbb9d5df9b6c1e271" -[[package]] -name = "combine" -version = "4.6.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35ed6e9d84f0b51a7f52daf1c7d71dd136fd7a3f41a8462b8cdb8c78d920fad4" -dependencies = [ - "bytes", - "futures-core", - "memchr", - "pin-project-lite", - "tokio", - "tokio-util", -] - [[package]] name = "config" version = "0.14.0" @@ -769,12 +409,6 @@ dependencies = [ "unicode-xid", ] -[[package]] -name = "convert_case" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" - [[package]] name = "convert_case" version = "0.6.0" @@ -784,24 +418,6 @@ dependencies = [ "unicode-segmentation", ] -[[package]] -name = "cookie" -version = "0.16.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e859cd57d0710d9e06c381b550c06e76992472a8c6d527aecd2fc673dcc231fb" -dependencies = [ - "aes-gcm", - "base64 0.20.0", - "hkdf", - "hmac", - "percent-encoding", - "rand", - "sha2", - "subtle", - "time", - "version_check", -] - [[package]] name = "cookie" version = "0.18.0" @@ -822,15 +438,6 @@ dependencies = [ "libc", ] -[[package]] -name = "crc32fast" -version = "1.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" -dependencies = [ - "cfg-if", -] - [[package]] name = "crypto-common" version = "0.1.6" @@ -838,19 +445,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" dependencies = [ "generic-array", - "rand_core", "typenum", ] -[[package]] -name = "ctr" -version = "0.9.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0369ee1ad671834580515889b80f2ea915f23b8be8d0daa4bbaf2ac5c7590835" -dependencies = [ - "cipher", -] - [[package]] name = "darling" version = "0.14.4" @@ -920,19 +517,6 @@ dependencies = [ "syn 2.0.48", ] -[[package]] -name = "derive_more" -version = "0.99.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321" -dependencies = [ - "convert_case 0.4.0", - "proc-macro2", - "quote", - "rustc_version", - "syn 1.0.109", -] - [[package]] name = "diesel" version = "2.1.4" @@ -1024,16 +608,6 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" -[[package]] -name = "flate2" -version = "1.0.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e" -dependencies = [ - "crc32fast", - "miniz_oxide", -] - [[package]] name = "fnv" version = "1.0.7" @@ -1182,16 +756,6 @@ dependencies = [ "wasm-bindgen", ] -[[package]] -name = "ghash" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d930750de5717d2dd0b8c0d42c076c0e884c81a73e6cab859bbd2339c71e3e40" -dependencies = [ - "opaque-debug", - "polyval", -] - [[package]] name = "gimli" version = "0.28.1" @@ -1263,25 +827,6 @@ dependencies = [ "web-sys", ] -[[package]] -name = "h2" -version = "0.3.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d6250322ef6e60f93f9a2162799302cd6f68f79f6e5d85c8c16f14d1d958178" -dependencies = [ - "bytes", - "fnv", - "futures-core", - "futures-sink", - "futures-util", - "http 0.2.11", - "indexmap", - "slab", - "tokio", - "tokio-util", - "tracing", -] - [[package]] name = "half" version = "1.8.2" @@ -1313,15 +858,6 @@ dependencies = [ "allocator-api2", ] -[[package]] -name = "hkdf" -version = "0.12.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b5f8eb2ad728638ea2c7d47a21db23b7b58a72ed6a38256b8a1849f15fbbdf7" -dependencies = [ - "hmac", -] - [[package]] name = "hmac" version = "0.12.1" @@ -1396,12 +932,6 @@ dependencies = [ "pin-project-lite", ] -[[package]] -name = "http-range" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21dec9db110f5f872ed9699c3ecf50cf16f423502706ba5c72462e28d3157573" - [[package]] name = "http-range-header" version = "0.3.1" @@ -1676,15 +1206,6 @@ dependencies = [ "hashbrown 0.14.3", ] -[[package]] -name = "inout" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5" -dependencies = [ - "generic-array", -] - [[package]] name = "instant" version = "0.1.12" @@ -1721,15 +1242,6 @@ version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c" -[[package]] -name = "jobserver" -version = "0.1.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c37f63953c4c63420ed5fd3d6d398c719489b9f872b9fa683262f8edd363c7d" -dependencies = [ - "libc", -] - [[package]] name = "js-sys" version = "0.3.66" @@ -1739,12 +1251,6 @@ dependencies = [ "wasm-bindgen", ] -[[package]] -name = "language-tags" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4345964bb142484797b161f473a503a434de77149dd8c7427788c6e13379388" - [[package]] name = "lazy_static" version = "1.4.0" @@ -1771,28 +1277,6 @@ dependencies = [ "web-sys", ] -[[package]] -name = "leptos_actix" -version = "0.6.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9edb4789a15864a26d695038f42dcdf1d1c32d3a1f537751ce177c97f4f5e3dd" -dependencies = [ - "actix-http", - "actix-web", - "futures", - "leptos", - "leptos_integration_utils", - "leptos_macro", - "leptos_meta", - "leptos_router", - "parking_lot", - "regex", - "serde_json", - "server_fn", - "tokio", - "tracing", -] - [[package]] name = "leptos_axum" version = "0.6.9" @@ -1915,7 +1399,7 @@ checksum = "e82c33c8baa07a36c1f0d6149af821be885e6863779bcb24954bf865ad8402b4" dependencies = [ "attribute-derive", "cfg-if", - "convert_case 0.6.0", + "convert_case", "html-escape", "itertools", "leptos_hot_reload", @@ -2030,10 +1514,6 @@ checksum = "302d7ab3130588088d277783b1e2d2e10c9e9e4a16dd9050e6ec93fb3e7048f4" name = "libretunes" version = "0.1.0" dependencies = [ - "actix-files", - "actix-identity", - "actix-session", - "actix-web", "axum", "cfg-if", "console_error_panic_hook", @@ -2045,7 +1525,6 @@ dependencies = [ "icondata", "lazy_static", "leptos", - "leptos_actix", "leptos_axum", "leptos_icons", "leptos_meta", @@ -2072,23 +1551,6 @@ dependencies = [ "serde_test", ] -[[package]] -name = "local-channel" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6cbc85e69b8df4b8bb8b89ec634e7189099cea8927a276b7384ce5488e53ec8" -dependencies = [ - "futures-core", - "futures-sink", - "local-waker", -] - -[[package]] -name = "local-waker" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d873d7c67ce09b42110d801813efbc9364414e356be9935700d368351657487" - [[package]] name = "lock_api" version = "0.4.11" @@ -2209,7 +1671,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f3d0b296e374a4e6f3c7b0a1f5a51d748a0d34c85e7dc48fc3fa9a87657fe09" dependencies = [ "libc", - "log", "wasi", "windows-sys", ] @@ -2263,12 +1724,6 @@ version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" -[[package]] -name = "opaque-debug" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" - [[package]] name = "openssl" version = "0.10.63" @@ -2415,18 +1870,6 @@ version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "69d3587f8a9e599cc7ec2c00e331f71c4e69a5f9a4b8a6efd5b07466b9736f9a" -[[package]] -name = "polyval" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d52cff9d1d4dee5fe6d03729099f4a310a41179e0a10dbf542039873f2e826fb" -dependencies = [ - "cfg-if", - "cpufeatures", - "opaque-debug", - "universal-hash", -] - [[package]] name = "powerfmt" version = "0.2.0" @@ -2613,28 +2056,6 @@ dependencies = [ "getrandom", ] -[[package]] -name = "redis" -version = "0.24.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c580d9cbbe1d1b479e8d67cf9daf6a62c957e6846048408b80b43ac3f6af84cd" -dependencies = [ - "arc-swap", - "async-trait", - "bytes", - "combine", - "futures", - "futures-util", - "itoa", - "percent-encoding", - "pin-project-lite", - "ryu", - "tokio", - "tokio-retry", - "tokio-util", - "url", -] - [[package]] name = "redox_syscall" version = "0.4.1" @@ -2737,15 +2158,6 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" -[[package]] -name = "rustc_version" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" -dependencies = [ - "semver", -] - [[package]] name = "rustversion" version = "1.0.14" @@ -2794,12 +2206,6 @@ version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "58bf37232d3bb9a2c4e641ca2a11d83b5062066f88df7fed36c28772046d65ba" -[[package]] -name = "semver" -version = "1.0.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "836fa6a3e1e547f9a2c4040802ec865b5d85f4014efe00555d7090a3dcaa1090" - [[package]] name = "send_wrapper" version = "0.6.0" @@ -2908,7 +2314,6 @@ version = "0.6.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2955da1dc5fcd970c182ebf1089af6c5f19051e1f286a21f7b96490a49b7a531" dependencies = [ - "actix-web", "axum", "bytes", "ciborium", @@ -2945,7 +2350,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "adfdd051ef905fdb3da20942b0c52d536158d7489a724e14cc2fd47323e7ca91" dependencies = [ "const_format", - "convert_case 0.6.0", + "convert_case", "proc-macro2", "quote", "syn 2.0.48", @@ -2962,17 +2367,6 @@ dependencies = [ "syn 2.0.48", ] -[[package]] -name = "sha1" -version = "0.10.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest", -] - [[package]] name = "sha2" version = "0.10.8" @@ -2984,15 +2378,6 @@ dependencies = [ "digest", ] -[[package]] -name = "signal-hook-registry" -version = "1.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1" -dependencies = [ - "libc", -] - [[package]] name = "simdutf8" version = "0.1.4" @@ -3180,9 +2565,7 @@ dependencies = [ "bytes", "libc", "mio", - "parking_lot", "pin-project-lite", - "signal-hook-registry", "socket2", "tokio-macros", "windows-sys", @@ -3199,17 +2582,6 @@ dependencies = [ "syn 2.0.48", ] -[[package]] -name = "tokio-retry" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f57eb36ecbe0fc510036adff84824dd3c24bb781e21bfa67b69d556aa85214f" -dependencies = [ - "pin-project", - "rand", - "tokio", -] - [[package]] name = "tokio-util" version = "0.7.10" @@ -3223,7 +2595,6 @@ dependencies = [ "hashbrown 0.14.3", "pin-project-lite", "tokio", - "tracing", ] [[package]] @@ -3309,7 +2680,7 @@ checksum = "4fd0118512cf0b3768f7fcccf0bef1ae41d68f2b45edc1e77432b36c97c56c6d" dependencies = [ "async-trait", "axum-core", - "cookie 0.18.0", + "cookie", "futures-util", "http 1.0.0", "parking_lot", @@ -3492,16 +2863,6 @@ version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" -[[package]] -name = "universal-hash" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc1de2c688dc15305988b563c3854064043356019f97a4b46276fe734c4f07ea" -dependencies = [ - "crypto-common", - "subtle", -] - [[package]] name = "url" version = "2.5.0" @@ -3800,31 +3161,3 @@ dependencies = [ "quote", "syn 2.0.48", ] - -[[package]] -name = "zstd" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bffb3309596d527cfcba7dfc6ed6052f1d39dfbd7c867aa2e865e4a449c10110" -dependencies = [ - "zstd-safe", -] - -[[package]] -name = "zstd-safe" -version = "7.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43747c7422e2924c11144d5229878b98180ef8b06cca4ab5af37afc8a8d8ea3e" -dependencies = [ - "zstd-sys", -] - -[[package]] -name = "zstd-sys" -version = "2.0.9+zstd.1.5.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e16efa8a874a0481a574084d34cc26fdb3b99627480f785888deb6386506656" -dependencies = [ - "cc", - "pkg-config", -] diff --git a/Cargo.toml b/Cargo.toml index 7d91956..42040c6 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -8,14 +8,11 @@ build = "src/build.rs" crate-type = ["cdylib", "rlib"] [dependencies] -actix-files = { version = "0.6", optional = true } -actix-web = { version = "4", optional = true, features = ["macros"] } console_error_panic_hook = "0.1" cfg-if = "1" http = "1.0" leptos = { version = "0.6", features = ["nightly"] } leptos_meta = { version = "0.6", features = ["nightly"] } -leptos_actix = { version = "0.6", optional = true } leptos_axum = { version = "0.6", optional = true } leptos_router = { version = "0.6", features = ["nightly"] } wasm-bindgen = "=0.2.89" @@ -28,8 +25,6 @@ serde = { versions = "1.0.195", features = ["derive"] } openssl = { version = "0.10.63", optional = true } time = { version = "0.3.34", features = ["serde"] } diesel_migrations = { version = "2.1.0", optional = true } -actix-identity = { version = "0.7.0", optional = true } -actix-session = { version = "0.9.0", features = ["redis-rs-session"], optional = true } pbkdf2 = { version = "0.12.2", features = ["simple"], optional = true } futures = { version = "0.3.30", default-features = false, optional = true } tokio = { version = "1", optional = true } @@ -46,9 +41,6 @@ gloo-net = { git = "https://github.com/rustwasm/gloo.git", rev = "a823fab7ecc406 csr = ["leptos/csr", "leptos_meta/csr", "leptos_router/csr"] hydrate = ["leptos/hydrate", "leptos_meta/hydrate", "leptos_router/hydrate"] ssr = [ - "dep:actix-files", - "dep:actix-web", - "dep:leptos_actix", "dep:leptos_axum", "leptos/ssr", "leptos_meta/ssr", @@ -58,8 +50,6 @@ ssr = [ "lazy_static", "openssl", "diesel_migrations", - "actix-identity", - "actix-session", "pbkdf2", "futures", "tokio", diff --git a/src/app.rs b/src/app.rs index 762e28b..e9dbbfd 100644 --- a/src/app.rs +++ b/src/app.rs @@ -66,8 +66,8 @@ fn NotFound() -> impl IntoView { { // this can be done inline because it's synchronous // if it were async, we'd use a server function - let resp = expect_context::<leptos_actix::ResponseOptions>(); - resp.set_status(actix_web::http::StatusCode::NOT_FOUND); + let resp = expect_context::<leptos_axum::ResponseOptions>(); + resp.set_status(axum::http::StatusCode::NOT_FOUND); } view! { diff --git a/src/auth.rs b/src/auth.rs index 63d107a..a0e5942 100644 --- a/src/auth.rs +++ b/src/auth.rs @@ -9,9 +9,6 @@ use crate::models::User; pub async fn signup(new_user: User) -> Result<(), ServerFnError> { use crate::users::create_user; - use leptos_actix::extract; - use actix_web::{HttpMessage, HttpRequest}; - use actix_identity::Identity; use leptos::server_fn::error::NoCustomError; // Ensure the user has no id @@ -23,7 +20,7 @@ pub async fn signup(new_user: User) -> Result<(), ServerFnError> { create_user(&new_user).await .map_err(|e| ServerFnError::<NoCustomError>::ServerError(format!("Error creating user: {}", e)))?; - match extract::<HttpRequest>().await { + /*match extract::<HttpRequest>().await { Ok(request) => { match Identity::login(&request.extensions(), new_user.username.clone()) { Ok(_) => Ok(()), @@ -31,7 +28,9 @@ pub async fn signup(new_user: User) -> Result<(), ServerFnError> { } }, Err(e) => Err(ServerFnError::<NoCustomError>::ServerError(format!("Error getting request: {}", e))), - } + }*/ + + Ok(()) } /// Log a user in @@ -40,9 +39,6 @@ pub async fn signup(new_user: User) -> Result<(), ServerFnError> { #[server(endpoint = "login")] pub async fn login(username_or_email: String, password: String) -> Result<bool, ServerFnError> { use crate::users::validate_user; - use actix_web::{HttpMessage, HttpRequest}; - use actix_identity::Identity; - use leptos_actix::extract; use leptos::server_fn::error::NoCustomError; let possible_user = validate_user(username_or_email, password).await @@ -53,7 +49,7 @@ pub async fn login(username_or_email: String, password: String) -> Result<bool, None => return Ok(false) }; - match extract::<HttpRequest>().await { + /*match extract::<HttpRequest>().await { Ok(request) => { match Identity::login(&request.extensions(), user.username.clone()) { Ok(_) => Ok(true), @@ -61,22 +57,22 @@ pub async fn login(username_or_email: String, password: String) -> Result<bool, } } Err(e) => Err(ServerFnError::<NoCustomError>::ServerError(format!("Error getting request: {}", e))), - } + }*/ + + Ok(false) } /// Log a user out /// Returns a Result with the error message if the user could not be logged out #[server(endpoint = "logout")] pub async fn logout() -> Result<(), ServerFnError> { - use leptos_actix::extract; - use actix_identity::Identity; use leptos::server_fn::error::NoCustomError; - match extract::<Option<Identity>>().await { + /*match extract::<Option<Identity>>().await { Ok(Some(user)) => user.logout(), Ok(None) => {}, Err(e) => return Err(ServerFnError::<NoCustomError>::ServerError(format!("Error getting user: {}", e))), - }; + };*/ Ok(()) } From 66c66f3f4f6c71e6373712b85f0d51bf2c5f7da0 Mon Sep 17 00:00:00 2001 From: Ethan Girouard <mr.egirouard@gmail.com> Date: Sun, 31 Mar 2024 12:05:36 -0400 Subject: [PATCH 22/42] Upgrade to tower-http 0.5 --- Cargo.lock | 72 +++++++++++++++++++----------------------------------- Cargo.toml | 2 +- 2 files changed, 26 insertions(+), 48 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 35cd893..a71b896 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -127,8 +127,8 @@ dependencies = [ "axum-core", "bytes", "futures-util", - "http 1.0.0", - "http-body 1.0.0", + "http", + "http-body", "http-body-util", "hyper", "hyper-util", @@ -161,8 +161,8 @@ dependencies = [ "async-trait", "bytes", "futures-util", - "http 1.0.0", - "http-body 1.0.0", + "http", + "http-body", "http-body-util", "mime", "pin-project-lite", @@ -791,7 +791,7 @@ dependencies = [ "futures-core", "futures-sink", "gloo-utils 0.2.0", - "http 1.0.0", + "http", "js-sys", "pin-project", "serde", @@ -876,17 +876,6 @@ dependencies = [ "utf8-width", ] -[[package]] -name = "http" -version = "0.2.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8947b1a6fad4393052c7ba1f4cd97bed3e953a95c79c92ad9b051a04611d9fbb" -dependencies = [ - "bytes", - "fnv", - "itoa", -] - [[package]] name = "http" version = "1.0.0" @@ -898,17 +887,6 @@ dependencies = [ "itoa", ] -[[package]] -name = "http-body" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" -dependencies = [ - "bytes", - "http 0.2.11", - "pin-project-lite", -] - [[package]] name = "http-body" version = "1.0.0" @@ -916,7 +894,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1cac85db508abc24a2e48553ba12a996e87244a0395ce011e62b37158745d643" dependencies = [ "bytes", - "http 1.0.0", + "http", ] [[package]] @@ -927,16 +905,16 @@ checksum = "41cb79eb393015dadd30fc252023adb0b2400a0caee0fa2a077e6e21a551e840" dependencies = [ "bytes", "futures-util", - "http 1.0.0", - "http-body 1.0.0", + "http", + "http-body", "pin-project-lite", ] [[package]] name = "http-range-header" -version = "0.3.1" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "add0ab9360ddbd88cfeb3bd9574a1d85cfdfa14db10b3e21d3700dbc4328758f" +checksum = "3ce4ef31cda248bbdb6e6820603b82dfcd9e833db65a43e997a0ccec777d11fe" [[package]] name = "httparse" @@ -959,8 +937,8 @@ dependencies = [ "bytes", "futures-channel", "futures-util", - "http 1.0.0", - "http-body 1.0.0", + "http", + "http-body", "httparse", "httpdate", "itoa", @@ -977,8 +955,8 @@ checksum = "ca38ef113da30126bbff9cd1705f9273e15d45498615d138b0c20279ac7a76aa" dependencies = [ "bytes", "futures-util", - "http 1.0.0", - "http-body 1.0.0", + "http", + "http-body", "hyper", "pin-project-lite", "socket2", @@ -1521,7 +1499,7 @@ dependencies = [ "diesel_migrations", "dotenv", "futures", - "http 1.0.0", + "http", "icondata", "lazy_static", "leptos", @@ -1684,7 +1662,7 @@ dependencies = [ "bytes", "encoding_rs", "futures-util", - "http 1.0.0", + "http", "httparse", "log", "memchr", @@ -2321,7 +2299,7 @@ dependencies = [ "dashmap", "futures", "gloo-net 0.5.0", - "http 1.0.0", + "http", "http-body-util", "hyper", "inventory", @@ -2682,7 +2660,7 @@ dependencies = [ "axum-core", "cookie", "futures-util", - "http 1.0.0", + "http", "parking_lot", "pin-project-lite", "tower-layer", @@ -2691,16 +2669,16 @@ dependencies = [ [[package]] name = "tower-http" -version = "0.4.4" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61c5bb1d698276a2443e5ecfabc1008bf15a36c12e6a7176e7bf089ea9131140" +checksum = "1e9cd434a998747dd2c4276bc96ee2e0c7a2eadf3cae88e52be55a05fa9053f5" dependencies = [ "bitflags 2.4.1", "bytes", - "futures-core", "futures-util", - "http 0.2.11", - "http-body 0.4.6", + "http", + "http-body", + "http-body-util", "http-range-header", "httpdate", "mime", @@ -2733,7 +2711,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32b7b53dbe4dc5cf64382fcbd1e8b8ca222949d757fcabec1bcc8de751bb611b" dependencies = [ "async-trait", - "http 1.0.0", + "http", "time", "tokio", "tower-cookies", @@ -2752,7 +2730,7 @@ dependencies = [ "async-trait", "base64 0.22.0", "futures", - "http 1.0.0", + "http", "parking_lot", "rand", "serde", diff --git a/Cargo.toml b/Cargo.toml index 42040c6..d336617 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -30,7 +30,7 @@ futures = { version = "0.3.30", default-features = false, optional = true } tokio = { version = "1", optional = true } axum = { version = "0.7.5", optional = true } tower = { veresion = "0.4.13", optional = true } -tower-http = { version = "0.4", optional = true, features = ["fs"] } +tower-http = { version = "0.5", optional = true, features = ["fs"] } thiserror = "1.0.57" tower-sessions = { version = "0.12", default-features = false } From 174b23da1d12900d787f264b65910ad089c52e0d Mon Sep 17 00:00:00 2001 From: Ethan Girouard <mr.egirouard@gmail.com> Date: Sun, 31 Mar 2024 12:05:54 -0400 Subject: [PATCH 23/42] Fix compilation errors from updating axum --- src/fileserv.rs | 8 ++++---- src/main.rs | 6 ++---- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/src/fileserv.rs b/src/fileserv.rs index acc1635..e266d2c 100644 --- a/src/fileserv.rs +++ b/src/fileserv.rs @@ -2,7 +2,7 @@ use cfg_if::cfg_if; cfg_if! { if #[cfg(feature = "ssr")] { use axum::{ - body::{boxed, Body, BoxBody}, + body::Body, extract::State, response::IntoResponse, http::{Request, Response, StatusCode, Uri}, @@ -20,17 +20,17 @@ cfg_if! { if #[cfg(feature = "ssr")] { if res.status() == StatusCode::OK { res.into_response() } else { - let handler = leptos_axum::render_app_to_stream(options.to_owned(), move || view!{<App/>}); + let handler = leptos_axum::render_app_to_stream(options.to_owned(), App); handler(req).await.into_response() } } - async fn get_static_file(uri: Uri, root: &str) -> Result<Response<BoxBody>, (StatusCode, String)> { + async fn get_static_file(uri: Uri, root: &str) -> Result<Response<Body>, (StatusCode, String)> { let req = Request::builder().uri(uri.clone()).body(Body::empty()).unwrap(); // `ServeDir` implements `tower::Service` so we can call it with `tower::ServiceExt::oneshot` // This path is relative to the cargo root match ServeDir::new(root).oneshot(req).await { - Ok(res) => Ok(res.map(boxed)), + Ok(res) => Ok(res.into_response()), Err(err) => Err(( StatusCode::INTERNAL_SERVER_ERROR, format!("Something went wrong: {err}"), diff --git a/src/main.rs b/src/main.rs index 3c7054f..f7b99da 100644 --- a/src/main.rs +++ b/src/main.rs @@ -42,10 +42,8 @@ async fn main() { println!("listening on http://{}", &addr); - axum::Server::bind(&addr) - .serve(app.into_make_service()) - .await - .unwrap(); + let listener = tokio::net::TcpListener::bind(&addr).await.expect(&format!("Could not bind to {}", &addr)); + axum::serve(listener, app.into_make_service()).await.expect("Server failed"); } #[cfg(not(any(feature = "ssr", feature = "csr")))] From 1c9dc4bbe91596f66cd9c2f7e8de22ce5941d616 Mon Sep 17 00:00:00 2001 From: Ethan Girouard <mr.egirouard@gmail.com> Date: Sun, 31 Mar 2024 12:08:35 -0400 Subject: [PATCH 24/42] Add rt-multi-thread feature to tokio --- Cargo.lock | 17 +++++++++++++++++ Cargo.toml | 2 +- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/Cargo.lock b/Cargo.lock index a71b896..0985306 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -858,6 +858,12 @@ dependencies = [ "allocator-api2", ] +[[package]] +name = "hermit-abi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" + [[package]] name = "hmac" version = "0.12.1" @@ -1687,6 +1693,16 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" +[[package]] +name = "num_cpus" +version = "1.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" +dependencies = [ + "hermit-abi", + "libc", +] + [[package]] name = "object" version = "0.32.2" @@ -2543,6 +2559,7 @@ dependencies = [ "bytes", "libc", "mio", + "num_cpus", "pin-project-lite", "socket2", "tokio-macros", diff --git a/Cargo.toml b/Cargo.toml index d336617..4e81e04 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -27,7 +27,7 @@ time = { version = "0.3.34", features = ["serde"] } diesel_migrations = { version = "2.1.0", optional = true } pbkdf2 = { version = "0.12.2", features = ["simple"], optional = true } futures = { version = "0.3.30", default-features = false, optional = true } -tokio = { version = "1", optional = true } +tokio = { version = "1", optional = true, features = ["rt-multi-thread"] } axum = { version = "0.7.5", optional = true } tower = { veresion = "0.4.13", optional = true } tower-http = { version = "0.5", optional = true, features = ["fs"] } From db0d2c6cb90e09b6bd34755226310476ce2416d7 Mon Sep 17 00:00:00 2001 From: Ethan Girouard <mr.egirouard@gmail.com> Date: Sun, 31 Mar 2024 13:08:48 -0400 Subject: [PATCH 25/42] Serve files in assets/ --- src/fileserv.rs | 2 +- src/main.rs | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/fileserv.rs b/src/fileserv.rs index e266d2c..b9bebf8 100644 --- a/src/fileserv.rs +++ b/src/fileserv.rs @@ -25,7 +25,7 @@ cfg_if! { if #[cfg(feature = "ssr")] { } } - async fn get_static_file(uri: Uri, root: &str) -> Result<Response<Body>, (StatusCode, String)> { + pub async fn get_static_file(uri: Uri, root: &str) -> Result<Response<Body>, (StatusCode, String)> { let req = Request::builder().uri(uri.clone()).body(Body::empty()).unwrap(); // `ServeDir` implements `tower::Service` so we can call it with `tower::ServiceExt::oneshot` // This path is relative to the cargo root diff --git a/src/main.rs b/src/main.rs index f7b99da..641e4c3 100644 --- a/src/main.rs +++ b/src/main.rs @@ -14,11 +14,11 @@ extern crate diesel_migrations; #[cfg(feature = "ssr")] #[tokio::main] async fn main() { - use axum::{routing::post, Router}; + use axum::{routing::{post, get}, Router}; use leptos::*; use leptos_axum::{generate_route_list, LeptosRoutes}; use libretunes::app::*; - use libretunes::fileserv::file_and_error_handler; + use libretunes::fileserv::{file_and_error_handler, get_static_file}; use dotenv::dotenv; dotenv().ok(); @@ -37,6 +37,7 @@ async fn main() { let app = Router::new() .route("/api/*fn_name", post(leptos_axum::handle_server_fns)) .leptos_routes(&leptos_options, routes, App) + .route("/assets/*uri", get(|uri| get_static_file(uri, ""))) .fallback(file_and_error_handler) .with_state(leptos_options); From 37db254f5059244050c1707f13e2a1810330d57d Mon Sep 17 00:00:00 2001 From: Ethan Girouard <mr.egirouard@gmail.com> Date: Sun, 31 Mar 2024 14:39:29 -0400 Subject: [PATCH 26/42] Downgrade to tower-sessions 0.11 --- Cargo.lock | 12 ++++++------ Cargo.toml | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 0985306..f7a9fb6 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -74,9 +74,9 @@ dependencies = [ [[package]] name = "async-trait" -version = "0.1.75" +version = "0.1.79" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdf6721fb0140e4f897002dd086c06f6c27775df19cfe1fccb21181a48fd2c98" +checksum = "a507401cad91ec6a857ed5513a2073c82a9b9048762b885bb98655b306964681" dependencies = [ "proc-macro2", "quote", @@ -2723,9 +2723,9 @@ checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" [[package]] name = "tower-sessions" -version = "0.12.0" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32b7b53dbe4dc5cf64382fcbd1e8b8ca222949d757fcabec1bcc8de751bb611b" +checksum = "b27326208b21807803c5f5aa1020d30ca0432b78cfe251b51a67a05e0baea102" dependencies = [ "async-trait", "http", @@ -2740,9 +2740,9 @@ dependencies = [ [[package]] name = "tower-sessions-core" -version = "0.12.0" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cec154be845cc7482fa002282813881732bdf17c75a8e85ff1bddaf387b668c5" +checksum = "afd1c5040577134115d8cc758d7757da29e171f83102de3ed1b86e3a2405533f" dependencies = [ "async-trait", "base64 0.22.0", diff --git a/Cargo.toml b/Cargo.toml index 4e81e04..235e8f2 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -32,7 +32,7 @@ axum = { version = "0.7.5", optional = true } tower = { veresion = "0.4.13", optional = true } tower-http = { version = "0.5", optional = true, features = ["fs"] } thiserror = "1.0.57" -tower-sessions = { version = "0.12", default-features = false } +tower-sessions = { version = "0.11", default-features = false } [patch.crates-io] gloo-net = { git = "https://github.com/rustwasm/gloo.git", rev = "a823fab7ecc4068e9a28bd669da5eaf3f0a56380" } From 64a1c45dad3bbe1989d8f66676e6d51c20aafb7f Mon Sep 17 00:00:00 2001 From: Ethan Girouard <mr.egirouard@gmail.com> Date: Sun, 31 Mar 2024 14:40:21 -0400 Subject: [PATCH 27/42] Add tower-sessions-redis-store crate --- Cargo.lock | 150 +++++++++++++++++++++++++++++++++++++++++++++++++++++ Cargo.toml | 2 + 2 files changed, 152 insertions(+) diff --git a/Cargo.lock b/Cargo.lock index f7a9fb6..bb30ab5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -61,6 +61,12 @@ version = "1.0.77" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c9d19de80eff169429ac1e9f48fffb163916b448a44e8e046186232046d9e1f9" +[[package]] +name = "arc-swap" +version = "1.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69f7f8c3906b62b754cd5326047894316021dcfe5a194c8ea52bdd94934a3457" + [[package]] name = "async-recursion" version = "1.0.5" @@ -280,6 +286,16 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" +[[package]] +name = "bytes-utils" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7dafe3a8757b027e2be6e4e5601ed563c55989fcf1546e933c66c8eb3a058d35" +dependencies = [ + "bytes", + "either", +] + [[package]] name = "cached" version = "0.45.1" @@ -429,6 +445,15 @@ dependencies = [ "version_check", ] +[[package]] +name = "cookie-factory" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9885fa71e26b8ab7855e2ec7cae6e9b380edff76cd052e07c683a0319d51b3a2" +dependencies = [ + "futures", +] + [[package]] name = "cpufeatures" version = "0.2.11" @@ -438,6 +463,12 @@ dependencies = [ "libc", ] +[[package]] +name = "crc16" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "338089f42c427b86394a5ee60ff321da23a5c89c9d89514c829687b26359fcff" + [[package]] name = "crypto-common" version = "0.1.6" @@ -608,6 +639,15 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" +[[package]] +name = "float-cmp" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "98de4bbd547a563b716d8dfa9aad1cb19bfab00f4fa09a6a4ed21dbcf44ce9c4" +dependencies = [ + "num-traits", +] + [[package]] name = "fnv" version = "1.0.7" @@ -638,6 +678,32 @@ dependencies = [ "percent-encoding", ] +[[package]] +name = "fred" +version = "7.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b99c2b48934cd02a81032dd7428b7ae831a27794275bc94eba367418db8a9e55" +dependencies = [ + "arc-swap", + "async-trait", + "bytes", + "bytes-utils", + "float-cmp", + "futures", + "lazy_static", + "log", + "parking_lot", + "rand", + "redis-protocol", + "semver", + "socket2", + "tokio", + "tokio-stream", + "tokio-util", + "url", + "urlencoding", +] + [[package]] name = "funty" version = "2.0.0" @@ -1522,6 +1588,7 @@ dependencies = [ "tower", "tower-http", "tower-sessions", + "tower-sessions-redis-store", "wasm-bindgen", ] @@ -1693,6 +1760,15 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" +[[package]] +name = "num-traits" +version = "0.2.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da0df0e5185db44f69b44f26786fe401b6c293d1907744beaa7fa62b2e5a517a" +dependencies = [ + "autocfg", +] + [[package]] name = "num_cpus" version = "1.16.0" @@ -2050,6 +2126,20 @@ dependencies = [ "getrandom", ] +[[package]] +name = "redis-protocol" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c31deddf734dc0a39d3112e73490e88b61a05e83e074d211f348404cee4d2c6" +dependencies = [ + "bytes", + "bytes-utils", + "cookie-factory", + "crc16", + "log", + "nom", +] + [[package]] name = "redox_syscall" version = "0.4.1" @@ -2126,6 +2216,28 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "rmp" +version = "0.8.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f9860a6cc38ed1da53456442089b4dfa35e7cedaa326df63017af88385e6b20" +dependencies = [ + "byteorder", + "num-traits", + "paste", +] + +[[package]] +name = "rmp-serde" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bffea85eea980d8a74453e5d02a8d93028f3c34725de143085a844ebe953258a" +dependencies = [ + "byteorder", + "rmp", + "serde", +] + [[package]] name = "rstml" version = "0.11.2" @@ -2200,6 +2312,12 @@ version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "58bf37232d3bb9a2c4e641ca2a11d83b5062066f88df7fed36c28772046d65ba" +[[package]] +name = "semver" +version = "1.0.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92d43fe69e652f3df9bdc2b85b2854a0825b86e4fb76bc44d945137d053639ca" + [[package]] name = "send_wrapper" version = "0.6.0" @@ -2577,6 +2695,17 @@ dependencies = [ "syn 2.0.48", ] +[[package]] +name = "tokio-stream" +version = "0.1.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "267ac89e0bec6e691e5813911606935d77c476ff49024f98abcea3e7b15e37af" +dependencies = [ + "futures-core", + "pin-project-lite", + "tokio", +] + [[package]] name = "tokio-util" version = "0.7.10" @@ -2590,6 +2719,7 @@ dependencies = [ "hashbrown 0.14.3", "pin-project-lite", "tokio", + "tracing", ] [[package]] @@ -2758,6 +2888,20 @@ dependencies = [ "tracing", ] +[[package]] +name = "tower-sessions-redis-store" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88c746ddeb702e9a933a1a61d1061d981c8788e13168137f9900dcc664dfec2f" +dependencies = [ + "async-trait", + "fred", + "rmp-serde", + "thiserror", + "time", + "tower-sessions-core", +] + [[package]] name = "tracing" version = "0.1.40" @@ -2869,6 +3013,12 @@ dependencies = [ "percent-encoding", ] +[[package]] +name = "urlencoding" +version = "2.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da" + [[package]] name = "utf8-width" version = "0.1.7" diff --git a/Cargo.toml b/Cargo.toml index 235e8f2..4220b10 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -33,6 +33,7 @@ tower = { veresion = "0.4.13", optional = true } tower-http = { version = "0.5", optional = true, features = ["fs"] } thiserror = "1.0.57" tower-sessions = { version = "0.11", default-features = false } +tower-sessions-redis-store = { version = "0.11", optional = true } [patch.crates-io] gloo-net = { git = "https://github.com/rustwasm/gloo.git", rev = "a823fab7ecc4068e9a28bd669da5eaf3f0a56380" } @@ -56,6 +57,7 @@ ssr = [ "axum", "tower", "tower-http", + "tower-sessions-redis-store", ] # Defines a size-optimized profile for the WASM bundle in release mode From 8c6ea8948f183acdbb2809c8be7a5c8b41a72c35 Mon Sep 17 00:00:00 2001 From: Ethan Girouard <mr.egirouard@gmail.com> Date: Sun, 31 Mar 2024 14:43:51 -0400 Subject: [PATCH 28/42] Add Redis session store layer --- src/main.rs | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/main.rs b/src/main.rs index 641e4c3..e85a3aa 100644 --- a/src/main.rs +++ b/src/main.rs @@ -19,6 +19,8 @@ async fn main() { use leptos_axum::{generate_route_list, LeptosRoutes}; use libretunes::app::*; use libretunes::fileserv::{file_and_error_handler, get_static_file}; + use tower_sessions::SessionManagerLayer; + use tower_sessions_redis_store::{fred::prelude::*, RedisStore}; use dotenv::dotenv; dotenv().ok(); @@ -27,6 +29,13 @@ async fn main() { libretunes::database::migrate(); let redis_url = std::env::var("REDIS_URL").expect("REDIS_URL must be set"); + let redis_config = RedisConfig::from_url(&redis_url).expect(&format!("Unable to parse Redis URL: {}", redis_url)); + let redis_pool = RedisPool::new(redis_config, None, None, None, 1).expect("Unable to create Redis pool"); + redis_pool.connect(); + redis_pool.wait_for_connect().await.expect("Unable to connect to Redis"); + + let session_store = RedisStore::new(redis_pool); + let session_layer = SessionManagerLayer::new(session_store); let conf = get_configuration(None).await.unwrap(); let leptos_options = conf.leptos_options; @@ -38,6 +47,7 @@ async fn main() { .route("/api/*fn_name", post(leptos_axum::handle_server_fns)) .leptos_routes(&leptos_options, routes, App) .route("/assets/*uri", get(|uri| get_static_file(uri, ""))) + .layer(session_layer) .fallback(file_and_error_handler) .with_state(leptos_options); From 48965bc72d094a1a63ace325bfff6beb25898f21 Mon Sep 17 00:00:00 2001 From: Ethan Girouard <mr.egirouard@gmail.com> Date: Tue, 2 Apr 2024 01:20:46 -0400 Subject: [PATCH 29/42] Add async-trait crate --- Cargo.lock | 1 + Cargo.toml | 1 + 2 files changed, 2 insertions(+) diff --git a/Cargo.lock b/Cargo.lock index bb30ab5..2e405f6 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1564,6 +1564,7 @@ checksum = "302d7ab3130588088d277783b1e2d2e10c9e9e4a16dd9050e6ec93fb3e7048f4" name = "libretunes" version = "0.1.0" dependencies = [ + "async-trait", "axum", "cfg-if", "console_error_panic_hook", diff --git a/Cargo.toml b/Cargo.toml index 4220b10..57f873c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -34,6 +34,7 @@ tower-http = { version = "0.5", optional = true, features = ["fs"] } thiserror = "1.0.57" tower-sessions = { version = "0.11", default-features = false } tower-sessions-redis-store = { version = "0.11", optional = true } +async-trait = "0.1.79" [patch.crates-io] gloo-net = { git = "https://github.com/rustwasm/gloo.git", rev = "a823fab7ecc4068e9a28bd669da5eaf3f0a56380" } From 3a34e8dada87dc82acb86971e8ab71fd05599ca6 Mon Sep 17 00:00:00 2001 From: Ethan Girouard <mr.egirouard@gmail.com> Date: Tue, 2 Apr 2024 01:23:31 -0400 Subject: [PATCH 30/42] Add axum-login crate Latest version depends on tower-sessions 0.12.0, which breaks tower-sessions-redis-store --- Cargo.lock | 146 ++++++++++++++++++++++++++++++++++++++++++++++++----- Cargo.toml | 1 + 2 files changed, 135 insertions(+), 12 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 2e405f6..d66a6b0 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -179,6 +179,26 @@ dependencies = [ "tracing", ] +[[package]] +name = "axum-login" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf7d8260dd72d25b5d97f47a0ac6436fb7d07237ff6df10620ee21351de7df5a" +dependencies = [ + "async-trait", + "axum", + "form_urlencoded", + "ring", + "serde", + "thiserror", + "tower-cookies", + "tower-layer", + "tower-service", + "tower-sessions", + "tracing", + "urlencoding", +] + [[package]] name = "backtrace" version = "0.3.69" @@ -1566,6 +1586,7 @@ version = "0.1.0" dependencies = [ "async-trait", "axum", + "axum-login", "cfg-if", "console_error_panic_hook", "diesel", @@ -1724,7 +1745,7 @@ checksum = "8f3d0b296e374a4e6f3c7b0a1f5a51d748a0d34c85e7dc48fc3fa9a87657fe09" dependencies = [ "libc", "wasi", - "windows-sys", + "windows-sys 0.48.0", ] [[package]] @@ -1859,7 +1880,7 @@ dependencies = [ "libc", "redox_syscall", "smallvec", - "windows-targets", + "windows-targets 0.48.5", ] [[package]] @@ -2188,6 +2209,21 @@ dependencies = [ "bytecheck", ] +[[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 = "rkyv" version = "0.7.43" @@ -2529,7 +2565,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7b5fac59a5cb5dd637972e5fca70daf0523c9067fcdc4842f053dae04a18f8e9" dependencies = [ "libc", - "windows-sys", + "windows-sys 0.48.0", ] [[package]] @@ -2682,7 +2718,7 @@ dependencies = [ "pin-project-lite", "socket2", "tokio-macros", - "windows-sys", + "windows-sys 0.48.0", ] [[package]] @@ -2866,6 +2902,7 @@ dependencies = [ "tower-layer", "tower-service", "tower-sessions-core", + "tower-sessions-memory-store", "tracing", ] @@ -2876,6 +2913,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "afd1c5040577134115d8cc758d7757da29e171f83102de3ed1b86e3a2405533f" dependencies = [ "async-trait", + "axum-core", "base64 0.22.0", "futures", "http", @@ -2889,6 +2927,18 @@ dependencies = [ "tracing", ] +[[package]] +name = "tower-sessions-memory-store" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88ac75309918b8f6ba16d09865a2a64f81e01b05cf42d5e88e5d3c6cbf775486" +dependencies = [ + "async-trait", + "time", + "tokio", + "tower-sessions-core", +] + [[package]] name = "tower-sessions-redis-store" version = "0.11.0" @@ -3003,6 +3053,12 @@ version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" +[[package]] +name = "untrusted" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" + [[package]] name = "url" version = "2.5.0" @@ -3189,7 +3245,16 @@ version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" dependencies = [ - "windows-targets", + "windows-targets 0.48.5", +] + +[[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.4", ] [[package]] @@ -3198,13 +3263,28 @@ version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" dependencies = [ - "windows_aarch64_gnullvm", - "windows_aarch64_msvc", - "windows_i686_gnu", - "windows_i686_msvc", - "windows_x86_64_gnu", - "windows_x86_64_gnullvm", - "windows_x86_64_msvc", + "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]] +name = "windows-targets" +version = "0.52.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7dd37b7e5ab9018759f893a1952c9420d060016fc19a472b4bb20d1bdd694d1b" +dependencies = [ + "windows_aarch64_gnullvm 0.52.4", + "windows_aarch64_msvc 0.52.4", + "windows_i686_gnu 0.52.4", + "windows_i686_msvc 0.52.4", + "windows_x86_64_gnu 0.52.4", + "windows_x86_64_gnullvm 0.52.4", + "windows_x86_64_msvc 0.52.4", ] [[package]] @@ -3213,42 +3293,84 @@ version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bcf46cf4c365c6f2d1cc93ce535f2c8b244591df96ceee75d8e83deb70a9cac9" + [[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.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da9f259dd3bcf6990b55bffd094c4f7235817ba4ceebde8e6d11cd0c5633b675" + [[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.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b474d8268f99e0995f25b9f095bc7434632601028cf86590aea5c8a5cb7801d3" + [[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.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1515e9a29e5bed743cb4415a9ecf5dfca648ce85ee42e15873c3cd8610ff8e02" + [[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.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5eee091590e89cc02ad514ffe3ead9eb6b660aedca2183455434b93546371a03" + [[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.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77ca79f2451b49fa9e2af39f0747fe999fcda4f5e241b2898624dca97a1f2177" + [[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.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32b752e52a2da0ddfbdbcc6fceadfeede4c939ed16d13e648833a61dfb611ed8" + [[package]] name = "winnow" version = "0.5.37" diff --git a/Cargo.toml b/Cargo.toml index 57f873c..b87cf5f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -35,6 +35,7 @@ thiserror = "1.0.57" tower-sessions = { version = "0.11", default-features = false } tower-sessions-redis-store = { version = "0.11", optional = true } async-trait = "0.1.79" +axum-login = "0.14.0" [patch.crates-io] gloo-net = { git = "https://github.com/rustwasm/gloo.git", rev = "a823fab7ecc4068e9a28bd669da5eaf3f0a56380" } From 7023e27b5158b07198aeae91225f68d7646d775b Mon Sep 17 00:00:00 2001 From: Ethan Girouard <mr.egirouard@gmail.com> Date: Tue, 2 Apr 2024 01:33:24 -0400 Subject: [PATCH 31/42] Create UserCredentials struct --- src/users.rs | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/users.rs b/src/users.rs index 51fecdc..62cd25b 100644 --- a/src/users.rs +++ b/src/users.rs @@ -14,8 +14,15 @@ cfg_if::cfg_if! { } use leptos::*; +use serde::{Serialize, Deserialize}; use crate::models::User; +#[derive(Clone, Debug, Serialize, Deserialize)] +pub struct UserCredentials { + pub username_or_email: String, + pub password: String +} + /// Get a user from the database by username or email /// Returns a Result with the user if found, None if not found, or an error if there was a problem #[cfg(feature = "ssr")] From d6eb05514ed379065438e680468094074e67f3f4 Mon Sep 17 00:00:00 2001 From: Ethan Girouard <mr.egirouard@gmail.com> Date: Tue, 2 Apr 2024 01:51:15 -0400 Subject: [PATCH 32/42] Use UserCredentials in place of username/password parameters --- src/pages/login.rs | 8 +++++++- src/users.rs | 6 +++--- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/pages/login.rs b/src/pages/login.rs index 253399c..f24bcba 100644 --- a/src/pages/login.rs +++ b/src/pages/login.rs @@ -3,6 +3,7 @@ use leptos::leptos_dom::*; use leptos::*; use leptos_icons::*; use icondata; +use crate::users::UserCredentials; #[component] pub fn Login() -> impl IntoView { @@ -23,7 +24,12 @@ pub fn Login() -> impl IntoView { let password1 = password.get(); spawn_local(async move { - let login_result = login(username_or_email1, password1).await; + let user_credentials = UserCredentials { + username_or_email: username_or_email1, + password: password1 + }; + + let login_result = login(user_credentials).await; if let Err(err) = login_result { // Handle the error here, e.g., log it or display to the user log!("Error logging in: {:?}", err); diff --git a/src/users.rs b/src/users.rs index 62cd25b..e8084e2 100644 --- a/src/users.rs +++ b/src/users.rs @@ -69,10 +69,10 @@ pub async fn create_user(new_user: &User) -> Result<(), ServerFnError> { /// Validate a user's credentials /// Returns a Result with the user if the credentials are valid, None if not valid, or an error if there was a problem #[cfg(feature = "ssr")] -pub async fn validate_user(username_or_email: String, password: String) -> Result<Option<User>, ServerFnError> { +pub async fn validate_user(credentials: UserCredentials) -> Result<Option<User>, ServerFnError> { use leptos::server_fn::error::NoCustomError; - let db_user = find_user(username_or_email.clone()).await + let db_user = find_user(credentials.username_or_email.clone()).await .map_err(|e| ServerFnError::<NoCustomError>::ServerError(format!("Error getting user from database: {}", e)))?; // If the user is not found, return None @@ -87,7 +87,7 @@ pub async fn validate_user(username_or_email: String, password: String) -> Resul let password_hash = PasswordHash::new(&db_password) .map_err(|e| ServerFnError::<NoCustomError>::ServerError(format!("Error hashing supplied password: {}", e)))?; - match Pbkdf2.verify_password(password.as_bytes(), &password_hash) { + match Pbkdf2.verify_password(credentials.password.as_bytes(), &password_hash) { Ok(()) => {}, Err(Error::Password) => { return Ok(None); From 5d69705239283089bd27b4a344011eb681d9d0dd Mon Sep 17 00:00:00 2001 From: Ethan Girouard <mr.egirouard@gmail.com> Date: Tue, 2 Apr 2024 01:55:00 -0400 Subject: [PATCH 33/42] Add find_user_by_id function --- src/users.rs | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/users.rs b/src/users.rs index e8084e2..2d61c69 100644 --- a/src/users.rs +++ b/src/users.rs @@ -39,6 +39,21 @@ pub async fn find_user(username_or_email: String) -> Result<Option<User>, Server Ok(user) } +/// Get a user from the database by ID +/// Returns a Result with the user if found, None if not found, or an error if there was a problem +#[cfg(feature = "ssr")] +pub async fn find_user_by_id(user_id: i32) -> Result<Option<User>, ServerFnError> { + use crate::schema::users::dsl::*; + use leptos::server_fn::error::NoCustomError; + + let db_con = &mut get_db_conn(); + let user = users.filter(id.eq(user_id)) + .first::<User>(db_con).optional() + .map_err(|e| ServerFnError::<NoCustomError>::ServerError(format!("Error getting user from database: {}", e)))?; + + Ok(user) +} + /// Create a new user in the database /// Returns an empty Result if successful, or an error if there was a problem #[cfg(feature = "ssr")] From 8bbb37c1e10763edfff7df0b34ae2b2959a4ed72 Mon Sep 17 00:00:00 2001 From: Ethan Girouard <mr.egirouard@gmail.com> Date: Tue, 2 Apr 2024 01:55:53 -0400 Subject: [PATCH 34/42] Implement auth backend types for axum_login --- src/auth_backend.rs | 49 +++++++++++++++++++++++++++++++++++++++++++++ src/lib.rs | 1 + 2 files changed, 50 insertions(+) create mode 100644 src/auth_backend.rs diff --git a/src/auth_backend.rs b/src/auth_backend.rs new file mode 100644 index 0000000..24e3454 --- /dev/null +++ b/src/auth_backend.rs @@ -0,0 +1,49 @@ +use cfg_if::cfg_if; + +cfg_if! { + if #[cfg(feature = "ssr")] { + use async_trait::async_trait; + use axum_login::{AuthnBackend, UserId}; + use crate::users::UserCredentials; + use leptos::server_fn::error::ServerFnErrorErr; + } +} + +use axum_login::AuthUser; + +use crate::models::User; + +impl AuthUser for User { + type Id = i32; + + // TODO: Ideally, we shouldn't have to unwrap here + + fn id(&self) -> Self::Id { + self.id.unwrap() + } + + fn session_auth_hash(&self) -> &[u8] { + self.password.as_ref().unwrap().as_bytes() + } +} + +#[derive(Clone)] +pub struct AuthBackend; + +#[cfg(feature = "ssr")] +#[async_trait] +impl AuthnBackend for AuthBackend { + type User = User; + type Credentials = UserCredentials; + type Error = ServerFnErrorErr; + + async fn authenticate(&self, creds: Self::Credentials) -> Result<Option<Self::User>, Self::Error> { + crate::users::validate_user(creds).await + .map_err(|e| ServerFnErrorErr::ServerError(format!("Error validating user: {}", e))) + } + + async fn get_user(&self, user_id: &UserId<Self>) -> Result<Option<Self::User>, Self::Error> { + crate::users::find_user_by_id(*user_id).await + .map_err(|e| ServerFnErrorErr::ServerError(format!("Error getting user: {}", e))) + } +} diff --git a/src/lib.rs b/src/lib.rs index eba864d..581ae74 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -12,6 +12,7 @@ pub mod users; pub mod search; pub mod fileserv; pub mod error_template; +pub mod auth_backend; use cfg_if::cfg_if; cfg_if! { From e7d07690660662716b14118c9072be9135ca8c70 Mon Sep 17 00:00:00 2001 From: Ethan Girouard <mr.egirouard@gmail.com> Date: Tue, 2 Apr 2024 01:56:23 -0400 Subject: [PATCH 35/42] Switch to using axum_login in authentication server functions --- src/auth.rs | 84 ++++++++++++++++++++++++++++++----------------------- 1 file changed, 47 insertions(+), 37 deletions(-) diff --git a/src/auth.rs b/src/auth.rs index a0e5942..d290885 100644 --- a/src/auth.rs +++ b/src/auth.rs @@ -1,6 +1,18 @@ use leptos::*; +use cfg_if::cfg_if; + +cfg_if! { + if #[cfg(feature = "ssr")] { + use leptos::server_fn::error::NoCustomError; + use leptos_axum::extract; + use axum_login::AuthSession; + use crate::auth_backend::AuthBackend; + } +} + use crate::models::User; +use crate::users::UserCredentials; /// Create a new user and log them in /// Takes in a NewUser struct, with the password in plaintext @@ -9,8 +21,6 @@ use crate::models::User; pub async fn signup(new_user: User) -> Result<(), ServerFnError> { use crate::users::create_user; - use leptos::server_fn::error::NoCustomError; - // Ensure the user has no id let new_user = User { id: None, @@ -20,59 +30,59 @@ pub async fn signup(new_user: User) -> Result<(), ServerFnError> { create_user(&new_user).await .map_err(|e| ServerFnError::<NoCustomError>::ServerError(format!("Error creating user: {}", e)))?; - /*match extract::<HttpRequest>().await { - Ok(request) => { - match Identity::login(&request.extensions(), new_user.username.clone()) { - Ok(_) => Ok(()), - Err(e) => Err(ServerFnError::<NoCustomError>::ServerError(format!("Error logging in user: {}", e))), - } - }, - Err(e) => Err(ServerFnError::<NoCustomError>::ServerError(format!("Error getting request: {}", e))), - }*/ + let mut auth_session = extract::<AuthSession<AuthBackend>>().await + .map_err(|e| ServerFnError::<NoCustomError>::ServerError(format!("Error getting auth session: {}", e)))?; - Ok(()) + let credentials = UserCredentials { + username_or_email: new_user.username.clone(), + password: new_user.password.clone().unwrap() + }; + + match auth_session.authenticate(credentials).await { + Ok(Some(user)) => { + auth_session.login(&user).await + .map_err(|e| ServerFnError::<NoCustomError>::ServerError(format!("Error logging in user: {}", e))) + }, + Ok(None) => { + Err(ServerFnError::<NoCustomError>::ServerError("Error authenticating user: User not found".to_string())) + }, + Err(e) => { + Err(ServerFnError::<NoCustomError>::ServerError(format!("Error authenticating user: {}", e))) + } + } } /// Log a user in /// Takes in a username or email and a password in plaintext /// Returns a Result with a boolean indicating if the login was successful #[server(endpoint = "login")] -pub async fn login(username_or_email: String, password: String) -> Result<bool, ServerFnError> { +pub async fn login(credentials: UserCredentials) -> Result<bool, ServerFnError> { use crate::users::validate_user; - use leptos::server_fn::error::NoCustomError; - let possible_user = validate_user(username_or_email, password).await + let mut auth_session = extract::<AuthSession<AuthBackend>>().await + .map_err(|e| ServerFnError::<NoCustomError>::ServerError(format!("Error getting auth session: {}", e)))?; + + let user = validate_user(credentials).await .map_err(|e| ServerFnError::<NoCustomError>::ServerError(format!("Error validating user: {}", e)))?; - let user = match possible_user { - Some(user) => user, - None => return Ok(false) - }; - - /*match extract::<HttpRequest>().await { - Ok(request) => { - match Identity::login(&request.extensions(), user.username.clone()) { - Ok(_) => Ok(true), - Err(e) => Err(ServerFnError::<NoCustomError>::ServerError(format!("Error logging in user: {}", e))), - } - } - Err(e) => Err(ServerFnError::<NoCustomError>::ServerError(format!("Error getting request: {}", e))), - }*/ - - Ok(false) + if let Some(user) = user { + auth_session.login(&user).await + .map_err(|e| ServerFnError::<NoCustomError>::ServerError(format!("Error logging in user: {}", e)))?; + Ok(true) + } else { + Ok(false) + } } /// Log a user out /// Returns a Result with the error message if the user could not be logged out #[server(endpoint = "logout")] pub async fn logout() -> Result<(), ServerFnError> { - use leptos::server_fn::error::NoCustomError; + let mut auth_session = extract::<AuthSession<AuthBackend>>().await + .map_err(|e| ServerFnError::<NoCustomError>::ServerError(format!("Error getting auth session: {}", e)))?; - /*match extract::<Option<Identity>>().await { - Ok(Some(user)) => user.logout(), - Ok(None) => {}, - Err(e) => return Err(ServerFnError::<NoCustomError>::ServerError(format!("Error getting user: {}", e))), - };*/ + auth_session.logout().await + .map_err(|e| ServerFnError::<NoCustomError>::ServerError(format!("Error getting auth session: {}", e)))?; Ok(()) } From de4e8eb631fe84872574872a3877c0599eaed000 Mon Sep 17 00:00:00 2001 From: Ethan Girouard <mr.egirouard@gmail.com> Date: Tue, 2 Apr 2024 01:56:43 -0400 Subject: [PATCH 36/42] Add axum_login authentication layer to router --- src/main.rs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/main.rs b/src/main.rs index e85a3aa..9ce76c0 100644 --- a/src/main.rs +++ b/src/main.rs @@ -21,6 +21,8 @@ async fn main() { use libretunes::fileserv::{file_and_error_handler, get_static_file}; use tower_sessions::SessionManagerLayer; use tower_sessions_redis_store::{fred::prelude::*, RedisStore}; + use axum_login::AuthManagerLayerBuilder; + use libretunes::auth_backend::AuthBackend; use dotenv::dotenv; dotenv().ok(); @@ -37,6 +39,9 @@ async fn main() { let session_store = RedisStore::new(redis_pool); let session_layer = SessionManagerLayer::new(session_store); + let auth_backend = AuthBackend; + let auth_layer = AuthManagerLayerBuilder::new(auth_backend, session_layer).build(); + let conf = get_configuration(None).await.unwrap(); let leptos_options = conf.leptos_options; let addr = leptos_options.site_addr; @@ -47,7 +52,7 @@ async fn main() { .route("/api/*fn_name", post(leptos_axum::handle_server_fns)) .leptos_routes(&leptos_options, routes, App) .route("/assets/*uri", get(|uri| get_static_file(uri, ""))) - .layer(session_layer) + .layer(auth_layer) .fallback(file_and_error_handler) .with_state(leptos_options); From 825f1cd8dfee30ad70d67726d9758c0c3b693b12 Mon Sep 17 00:00:00 2001 From: Ethan Girouard <mr.egirouard@gmail.com> Date: Tue, 2 Apr 2024 15:32:43 -0400 Subject: [PATCH 37/42] Add check_auth and require_auth server functions --- src/auth.rs | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/src/auth.rs b/src/auth.rs index d290885..2eda7cf 100644 --- a/src/auth.rs +++ b/src/auth.rs @@ -87,3 +87,36 @@ pub async fn logout() -> Result<(), ServerFnError> { Ok(()) } +/// Check if a user is logged in +/// Returns a Result with a boolean indicating if the user is logged in +#[server(endpoint = "check_auth")] +pub async fn check_auth() -> Result<bool, ServerFnError> { + let auth_session = extract::<AuthSession<AuthBackend>>().await + .map_err(|e| ServerFnError::<NoCustomError>::ServerError(format!("Error getting auth session: {}", e)))?; + + Ok(auth_session.user.is_some()) +} + +/// Require that a user is logged in +/// Returns a Result with the error message if the user is not logged in +/// Intended to be used at the start of a protected route, to ensure the user is logged in: +/// ```rust +/// use leptos::*; +/// use libretunes::auth::require_auth; +/// #[server(endpoint = "protected_route")] +/// pub async fn protected_route() -> Result<(), ServerFnError> { +/// require_auth().await?; +/// // Continue with protected route +/// Ok(()) +/// } +/// ``` +#[cfg(feature = "ssr")] +pub async fn require_auth() -> Result<(), ServerFnError> { + check_auth().await.and_then(|logged_in| { + if logged_in { + Ok(()) + } else { + Err(ServerFnError::<NoCustomError>::ServerError(format!("Unauthorized"))) + } + }) +} From f99dc250f737fc684d61d4cb5fa6a588f91c00b1 Mon Sep 17 00:00:00 2001 From: Ethan Girouard <mr.egirouard@gmail.com> Date: Tue, 2 Apr 2024 15:33:56 -0400 Subject: [PATCH 38/42] Remove unnecessary server function route --- src/main.rs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main.rs b/src/main.rs index 9ce76c0..6f9b667 100644 --- a/src/main.rs +++ b/src/main.rs @@ -14,7 +14,7 @@ extern crate diesel_migrations; #[cfg(feature = "ssr")] #[tokio::main] async fn main() { - use axum::{routing::{post, get}, Router}; + use axum::{routing::get, Router}; use leptos::*; use leptos_axum::{generate_route_list, LeptosRoutes}; use libretunes::app::*; @@ -49,7 +49,6 @@ async fn main() { let routes = generate_route_list(App); let app = Router::new() - .route("/api/*fn_name", post(leptos_axum::handle_server_fns)) .leptos_routes(&leptos_options, routes, App) .route("/assets/*uri", get(|uri| get_static_file(uri, ""))) .layer(auth_layer) From b3621de21505770b08b9d5e168561a95560a7420 Mon Sep 17 00:00:00 2001 From: Ethan Girouard <mr.egirouard@gmail.com> Date: Tue, 2 Apr 2024 15:38:35 -0400 Subject: [PATCH 39/42] Remove duplicate icondata imports --- src/pages/login.rs | 1 - src/pages/signup.rs | 1 - 2 files changed, 2 deletions(-) diff --git a/src/pages/login.rs b/src/pages/login.rs index f24bcba..62aca49 100644 --- a/src/pages/login.rs +++ b/src/pages/login.rs @@ -2,7 +2,6 @@ use crate::auth::login; use leptos::leptos_dom::*; use leptos::*; use leptos_icons::*; -use icondata; use crate::users::UserCredentials; #[component] diff --git a/src/pages/signup.rs b/src/pages/signup.rs index d02d7c5..69f68c7 100644 --- a/src/pages/signup.rs +++ b/src/pages/signup.rs @@ -3,7 +3,6 @@ use crate::models::User; use leptos::leptos_dom::*; use leptos::*; use leptos_icons::*; -use icondata; #[component] pub fn Signup() -> impl IntoView { From 46502d39f6ea2ef095e62ee3f1ff208913ad7af2 Mon Sep 17 00:00:00 2001 From: Ethan Girouard <mr.egirouard@gmail.com> Date: Sat, 6 Apr 2024 00:03:20 -0400 Subject: [PATCH 40/42] Upgrade to wasm-bindgen 0.2.92 --- Cargo.lock | 20 ++++++++++---------- Cargo.toml | 2 +- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index d66a6b0..2932feb 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3121,9 +3121,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.89" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ed0d4f68a3015cc185aff4db9506a015f4b96f95303897bfa23f846db54064e" +checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" dependencies = [ "cfg-if", "wasm-bindgen-macro", @@ -3131,9 +3131,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.89" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b56f625e64f3a1084ded111c4d5f477df9f8c92df113852fa5a374dbda78826" +checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da" dependencies = [ "bumpalo", "log", @@ -3158,9 +3158,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.89" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0162dbf37223cd2afce98f3d0785506dcb8d266223983e4b5b525859e6e182b2" +checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -3168,9 +3168,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.89" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0eb82fcb7930ae6219a7ecfd55b217f5f0893484b7a13022ebb2b2bf20b5283" +checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" dependencies = [ "proc-macro2", "quote", @@ -3181,9 +3181,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.89" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ab9b36309365056cd639da3134bf87fa8f3d86008abf99e612384a6eecd459f" +checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" [[package]] name = "wasm-streams" diff --git a/Cargo.toml b/Cargo.toml index b87cf5f..1964645 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -15,7 +15,7 @@ leptos = { version = "0.6", features = ["nightly"] } leptos_meta = { version = "0.6", features = ["nightly"] } leptos_axum = { version = "0.6", optional = true } leptos_router = { version = "0.6", features = ["nightly"] } -wasm-bindgen = "=0.2.89" +wasm-bindgen = "=0.2.92" leptos_icons = { version = "0.3.0" } icondata = { version = "0.3.0" } dotenv = { version = "0.15.0", optional = true } From a659564c91722e6179b841a4e6e76d790a892862 Mon Sep 17 00:00:00 2001 From: Ethan Girouard <mr.egirouard@gmail.com> Date: Tue, 9 Apr 2024 17:18:13 -0400 Subject: [PATCH 41/42] Run cargo update --- Cargo.lock | 630 +++++++++++++++++++---------------------------------- 1 file changed, 224 insertions(+), 406 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 2932feb..90dc998 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -17,17 +17,6 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" -[[package]] -name = "ahash" -version = "0.7.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "891477e0c6a8957309ee5c45a6368af3ae14bb510732d2684ffa19af310920f9" -dependencies = [ - "getrandom", - "once_cell", - "version_check", -] - [[package]] name = "ahash" version = "0.8.11" @@ -42,9 +31,9 @@ dependencies = [ [[package]] name = "aho-corasick" -version = "1.1.2" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" dependencies = [ "memchr", ] @@ -57,9 +46,9 @@ checksum = "0942ffc6dcaadf03badf6e6a2d0228460359d5e34b57ccdc720b7382dfbd5ec5" [[package]] name = "anyhow" -version = "1.0.77" +version = "1.0.81" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9d19de80eff169429ac1e9f48fffb163916b448a44e8e046186232046d9e1f9" +checksum = "0952808a6c2afd1aa8947271f3a60f1a6763c7b912d210184c5149b5cf147247" [[package]] name = "arc-swap" @@ -69,13 +58,13 @@ checksum = "69f7f8c3906b62b754cd5326047894316021dcfe5a194c8ea52bdd94934a3457" [[package]] name = "async-recursion" -version = "1.0.5" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fd55a5ba1179988837d24ab4c7cc8ed6efdeff578ede0416b4225a5fca35bd0" +checksum = "30c5ef0ede93efbf733c1a727f3b6b5a1060bbedd5600183e66f6e4be4af0ec5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.58", ] [[package]] @@ -86,26 +75,28 @@ checksum = "a507401cad91ec6a857ed5513a2073c82a9b9048762b885bb98655b306964681" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.58", ] [[package]] name = "attribute-derive" -version = "0.8.1" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c94f43ede6f25dab1dea046bff84d85dea61bd49aba7a9011ad66c0d449077b" +checksum = "8b48808b337d6b74c15ff9becfc0e139fe2b4e2b224d670a0ecdb46b0b2d3d9b" dependencies = [ "attribute-derive-macro", + "derive-where", + "manyhow", "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.58", ] [[package]] name = "attribute-derive-macro" -version = "0.8.1" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b409e2b2d2dc206d2c0ad3575a93f001ae21a1593e2d0c69b69c308e63f3b422" +checksum = "5b19cbd63850ecff821c413e12846a67ec9f4ce7309c70959b94ecf9b2575ee2" dependencies = [ "collection_literals", "interpolator", @@ -114,14 +105,14 @@ dependencies = [ "proc-macro2", "quote", "quote-use", - "syn 2.0.48", + "syn 2.0.58", ] [[package]] name = "autocfg" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" [[package]] name = "axum" @@ -201,9 +192,9 @@ dependencies = [ [[package]] name = "backtrace" -version = "0.3.69" +version = "0.3.71" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837" +checksum = "26b05800d2e817c8b3b4b54abd461726265fa9789ae34330622f2db9ee696f9d" dependencies = [ "addr2line", "cc", @@ -214,12 +205,6 @@ dependencies = [ "rustc-demangle", ] -[[package]] -name = "base64" -version = "0.21.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" - [[package]] name = "base64" version = "0.22.0" @@ -240,21 +225,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.4.1" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07" - -[[package]] -name = "bitvec" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" -dependencies = [ - "funty", - "radium", - "tap", - "wyz", -] +checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1" [[package]] name = "block-buffer" @@ -267,32 +240,9 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.14.0" +version = "3.15.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec" - -[[package]] -name = "bytecheck" -version = "0.6.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b6372023ac861f6e6dc89c8344a8f398fb42aaba2b5dbc649ca0c0e9dbcb627" -dependencies = [ - "bytecheck_derive", - "ptr_meta", - "simdutf8", - "uuid", -] - -[[package]] -name = "bytecheck_derive" -version = "0.6.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7ec4c6f261935ad534c0c22dbef2201b45918860eb1c574b972bd213a76af61" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] +checksum = "7ff69b9dd49fd426c69a0db9fc04dd934cdb6645ff000864d98f7e2af8830eaa" [[package]] name = "byteorder" @@ -302,9 +252,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.5.0" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" +checksum = "514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9" [[package]] name = "bytes-utils" @@ -344,9 +294,9 @@ dependencies = [ [[package]] name = "cached_proc_macro_types" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a4f925191b4367301851c6d99b09890311d74b0d43f274c0b34c86d308a3663" +checksum = "ade8366b8bd5ba243f0a58f036cc0ca8a2f069cff1a2351ef1cac6b083e16fc0" [[package]] name = "camino" @@ -356,12 +306,9 @@ checksum = "c59e92b5a388f549b863a7bea62612c09f24c8393560709a54558a9abdfb3b9c" [[package]] name = "cc" -version = "1.0.83" +version = "1.0.90" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" -dependencies = [ - "libc", -] +checksum = "8cd6604a82acf3039f1144f54b8eb34e91ffba622051189e71b781822d5ee1f5" [[package]] name = "cfg-if" @@ -371,9 +318,9 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "ciborium" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "effd91f6c78e5a4ace8a5d3c0b6bfaec9e2baaef55f3efc00e45fb2e477ee926" +checksum = "42e69ffd6f0917f5c029256a24d0161db17cea3997d185db0d35926308770f0e" dependencies = [ "ciborium-io", "ciborium-ll", @@ -382,15 +329,15 @@ dependencies = [ [[package]] name = "ciborium-io" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cdf919175532b369853f5d5e20b26b43112613fd6fe7aee757e35f7a44642656" +checksum = "05afea1e0a06c9be33d539b876f1ce3692f4afea2cb41f740e7743225ed1c757" [[package]] name = "ciborium-ll" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "defaa24ecc093c77630e6c15e17c51f5e187bf35ee514f4e2d67baaa96dae22b" +checksum = "57663b653d948a338bfb3eeba9bb2fd5fcfaecb9e199e87e1eda4d9e8b240fd9" dependencies = [ "ciborium-io", "half", @@ -408,6 +355,7 @@ version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7328b20597b53c2454f0b1919720c25c7339051c02b72b7e05409e00b14132be" dependencies = [ + "convert_case", "lazy_static", "nom", "pathdiff", @@ -456,9 +404,9 @@ dependencies = [ [[package]] name = "cookie" -version = "0.18.0" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3cd91cf61412820176e137621345ee43b3f4423e589e7ae4e50d601d93e35ef8" +checksum = "4ddef33a339a91ea89fb53151bd0a4689cfce27055c291dfa69945475d22c747" dependencies = [ "percent-encoding", "time", @@ -476,9 +424,9 @@ dependencies = [ [[package]] name = "cpufeatures" -version = "0.2.11" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce420fe07aecd3e67c5f910618fe65e94158f6dcc0adf44e00d69ce2bdfe0fd0" +checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" dependencies = [ "libc", ] @@ -489,6 +437,12 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "338089f42c427b86394a5ee60ff321da23a5c89c9d89514c829687b26359fcff" +[[package]] +name = "crunchy" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" + [[package]] name = "crypto-common" version = "0.1.6" @@ -549,9 +503,9 @@ dependencies = [ [[package]] name = "deranged" -version = "0.3.10" +version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8eb30d70a07a3b04884d2677f06bec33509dc67ca60d92949e5535352d3191dc" +checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" dependencies = [ "powerfmt", "serde", @@ -565,16 +519,16 @@ checksum = "62d671cc41a825ebabc75757b62d3d168c577f9149b2d49ece1dad1f72119d25" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.58", ] [[package]] name = "diesel" -version = "2.1.4" +version = "2.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62c6fcf842f17f8c78ecf7c81d75c5ce84436b41ee07e03f490fbb5f5a8731d8" +checksum = "03fc05c17098f21b89bc7d98fe1dd3cce2c11c2ad8e145f2a44fe08ed28eb559" dependencies = [ - "bitflags 2.4.1", + "bitflags 2.5.0", "byteorder", "diesel_derives", "itoa", @@ -585,14 +539,14 @@ dependencies = [ [[package]] name = "diesel_derives" -version = "2.1.2" +version = "2.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef8337737574f55a468005a83499da720f20c65586241ffea339db9ecdfd2b44" +checksum = "5d02eecb814ae714ffe61ddc2db2dd03e6c49a42e269b5001355500d431cce0c" dependencies = [ "diesel_table_macro_syntax", "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.58", ] [[package]] @@ -612,7 +566,7 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fc5557efc453706fed5e4fa85006fe9817c224c3f480a34c7e5959fd700921c5" dependencies = [ - "syn 2.0.48", + "syn 2.0.58", ] [[package]] @@ -640,9 +594,9 @@ checksum = "669a445ee724c5c69b1b06fe0b63e70a1c84bc9bb7d9696cd4f4e3ec45050408" [[package]] name = "either" -version = "1.9.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" +checksum = "11157ac094ffbdde99aa67b23417ebdd801842852b500e395a45a9c0aac03e4a" [[package]] name = "encoding_rs" @@ -724,12 +678,6 @@ dependencies = [ "urlencoding", ] -[[package]] -name = "funty" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" - [[package]] name = "futures" version = "0.3.30" @@ -786,7 +734,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.58", ] [[package]] @@ -831,9 +779,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.11" +version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe9006bed769170c11f845cf00c7c1e9092aeb3f268e007c3e760ac68008070f" +checksum = "a06fddc2749e0528d2813f95e050e87e52c8cbbae56223b9babf73b3e53b0cc6" dependencies = [ "cfg-if", "js-sys", @@ -848,26 +796,6 @@ version = "0.28.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" -[[package]] -name = "gloo-net" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9902a044653b26b99f7e3693a42f171312d9be8b26b5697bd1e43ad1f8a35e10" -dependencies = [ - "futures-channel", - "futures-core", - "futures-sink", - "gloo-utils 0.1.7", - "js-sys", - "pin-project", - "serde", - "serde_json", - "thiserror", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", -] - [[package]] name = "gloo-net" version = "0.5.0" @@ -876,7 +804,7 @@ dependencies = [ "futures-channel", "futures-core", "futures-sink", - "gloo-utils 0.2.0", + "gloo-utils", "http", "js-sys", "pin-project", @@ -888,19 +816,6 @@ dependencies = [ "web-sys", ] -[[package]] -name = "gloo-utils" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "037fcb07216cb3a30f7292bd0176b050b7b9a052ba830ef7d5d65f6dc64ba58e" -dependencies = [ - "js-sys", - "serde", - "serde_json", - "wasm-bindgen", - "web-sys", -] - [[package]] name = "gloo-utils" version = "0.2.0" @@ -915,17 +830,12 @@ dependencies = [ [[package]] name = "half" -version = "1.8.2" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eabb4a44450da02c90444cf74558da904edde8fb4e9035a9a6a4e15445af0bd7" - -[[package]] -name = "hashbrown" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" +checksum = "b5eceaaeec696539ddaf7b333340f1af35a5aa87ae3e4f3ead0532f72affab2e" dependencies = [ - "ahash 0.7.8", + "cfg-if", + "crunchy", ] [[package]] @@ -940,7 +850,7 @@ version = "0.14.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" dependencies = [ - "ahash 0.8.11", + "ahash", "allocator-api2", ] @@ -970,9 +880,9 @@ dependencies = [ [[package]] name = "http" -version = "1.0.0" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b32afd38673a8016f7c9ae69e5af41a58f81b1d31689040f2f1959594ce194ea" +checksum = "21b9ddb458710bc376481b842f5da65cdf31522de232c1ca8146abce2a358258" dependencies = [ "bytes", "fnv", @@ -991,12 +901,12 @@ dependencies = [ [[package]] name = "http-body-util" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41cb79eb393015dadd30fc252023adb0b2400a0caee0fa2a077e6e21a551e840" +checksum = "0475f8b2ac86659c21b64320d5d653f9efe42acd2a4e560073ec61a155a34f1d" dependencies = [ "bytes", - "futures-util", + "futures-core", "http", "http-body", "pin-project-lite", @@ -1268,9 +1178,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.1.0" +version = "2.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d530e1a18b1cb4c484e6e34556a0d948706958449fca0cab753d649f2bce3d1f" +checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" dependencies = [ "equivalent", "hashbrown 0.14.3", @@ -1293,9 +1203,9 @@ checksum = "71dd52191aae121e8611f1e8dc3e324dd0dd1dee1e6dd91d10ee07a3cfb4d9d8" [[package]] name = "inventory" -version = "0.3.14" +version = "0.3.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8573b2b1fb643a372c73b23f4da5f888677feef3305146d68a539250a9bccc7" +checksum = "f958d3d68f4167080a18141e10381e7634563984a537f2a49a30fd8e53ac5767" [[package]] name = "itertools" @@ -1308,15 +1218,15 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.10" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c" +checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" [[package]] name = "js-sys" -version = "0.3.66" +version = "0.3.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cee9c64da59eae3b50095c18d3e74f8b73c0b86d2792824ff01bbce68ba229ca" +checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d" dependencies = [ "wasm-bindgen", ] @@ -1329,9 +1239,9 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "leptos" -version = "0.6.9" +version = "0.6.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56d079555ff18158a1ed28d2a8ac529b4cb5904490384064346eb2d321addde6" +checksum = "2cd996d00a55895327b2eb5d2d7d440ab756b4a9fe43ec78411c74199306808c" dependencies = [ "cfg-if", "leptos_config", @@ -1349,9 +1259,9 @@ dependencies = [ [[package]] name = "leptos_axum" -version = "0.6.9" +version = "0.6.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2276bb8b97638d67c7b704a1351ef88ff3b41a286fc46d48aa59da9f1916bd3c" +checksum = "0572d6549c7b4d59d6c6c8240c0faa25c1d20af144db7b2e372ffc537fd0aaa3" dependencies = [ "axum", "cfg-if", @@ -1373,9 +1283,9 @@ dependencies = [ [[package]] name = "leptos_config" -version = "0.6.9" +version = "0.6.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d80b4ed5f0447996b9a28879002f995d3770687630f568be41307f362f84cb7" +checksum = "cc190458a62433fb1d31f65f1afe7f1044650c667cdf9166956b48907ac821bd" dependencies = [ "config", "regex", @@ -1386,9 +1296,9 @@ dependencies = [ [[package]] name = "leptos_dom" -version = "0.6.9" +version = "0.6.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a4b4da3cb6a4dde22e68717482a4b926fb5dd182c12461b27efa37764b29d9a" +checksum = "9ffd84c459d7c517fb8c9bfff704e819f3e6a2f5baf574d8636cb23840323d0a" dependencies = [ "async-recursion", "cfg-if", @@ -1416,9 +1326,9 @@ dependencies = [ [[package]] name = "leptos_hot_reload" -version = "0.6.9" +version = "0.6.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb051c7b3bce8368ee30fb57e7b14cdcd573019ea6cd1858b9c697a3519ea099" +checksum = "da2f157fc6d4a356e3dd2734c6a65cba9e5eadb7c7cfd979c0adb752d293dba1" dependencies = [ "anyhow", "camino", @@ -1428,7 +1338,7 @@ dependencies = [ "quote", "rstml", "serde", - "syn 2.0.48", + "syn 2.0.58", "walkdir", ] @@ -1449,9 +1359,9 @@ dependencies = [ [[package]] name = "leptos_integration_utils" -version = "0.6.9" +version = "0.6.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff00799857159434d31b6bd1898e21c63f69f39289621da5a554fcab1c3e7300" +checksum = "046984e2ca5e2136eb1021ced1f1dc1725b4045f4a370d28f2594b23604477ac" dependencies = [ "futures", "leptos", @@ -1463,9 +1373,9 @@ dependencies = [ [[package]] name = "leptos_macro" -version = "0.6.9" +version = "0.6.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e82c33c8baa07a36c1f0d6149af821be885e6863779bcb24954bf865ad8402b4" +checksum = "69a20596eb0afe56296d3187c8f46680bb8ea1df58b6566e2588c9c53c549581" dependencies = [ "attribute-derive", "cfg-if", @@ -1479,16 +1389,16 @@ dependencies = [ "quote", "rstml", "server_fn_macro", - "syn 2.0.48", + "syn 2.0.58", "tracing", "uuid", ] [[package]] name = "leptos_meta" -version = "0.6.9" +version = "0.6.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12b9dac59a2f88f5235dbe17cfa81b738a6f47238a64e4f23b921f1a90a9bf11" +checksum = "5a85d2f3e3c4eb7ffb8a97abe6c79eefcb0a2c6ae5bacd7645b5a5df1ba0a212" dependencies = [ "cfg-if", "indexmap", @@ -1500,18 +1410,17 @@ dependencies = [ [[package]] name = "leptos_reactive" -version = "0.6.9" +version = "0.6.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93bdcebc9822cc22a72cc9528dd794e1396152c75749ee09959f8272a8c99657" +checksum = "6b9152b4b9af932896ae69d08b8ab7108513b9cdddf8e2922d5c234dab7ac9af" dependencies = [ - "base64 0.21.7", + "base64", "cfg-if", "futures", "indexmap", "js-sys", "paste", "pin-project", - "rkyv", "rustc-hash", "self_cell", "serde", @@ -1528,13 +1437,13 @@ dependencies = [ [[package]] name = "leptos_router" -version = "0.6.9" +version = "0.6.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9460a5dc184fa05d8eb635b687ad3220d02d2d23d6f49c3bf146aa71e427f423" +checksum = "2e42ebcdc1663ab03f249b91c367daa00f164d84c5f30eaec492bd45dffd3148" dependencies = [ "cached", "cfg-if", - "gloo-net 0.2.6", + "gloo-net", "itertools", "js-sys", "lazy_static", @@ -1560,9 +1469,9 @@ dependencies = [ [[package]] name = "leptos_server" -version = "0.6.9" +version = "0.6.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "654b6ff6a24e79977641b5214452373b1e12fdf4c8a563fadf656c139694b4b9" +checksum = "bed1e82ded6bfbfd61ad2f77066a789b94dc889513a47223e3c6a3e8ca2b109f" dependencies = [ "inventory", "lazy_static", @@ -1576,9 +1485,9 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.151" +version = "0.2.153" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "302d7ab3130588088d277783b1e2d2e10c9e9e4a16dd9050e6ec93fb3e7048f4" +checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" [[package]] name = "libretunes" @@ -1637,9 +1546,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.20" +version = "0.4.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" +checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" [[package]] name = "lru" @@ -1652,21 +1561,21 @@ dependencies = [ [[package]] name = "manyhow" -version = "0.8.1" +version = "0.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "516b76546495d933baa165075b95c0a15e8f7ef75e53f56b19b7144d80fd52bd" +checksum = "f91ea592d76c0b6471965708ccff7e6a5d277f676b90ab31f4d3f3fc77fade64" dependencies = [ "manyhow-macros", "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.58", ] [[package]] name = "manyhow-macros" -version = "0.8.1" +version = "0.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ba072c0eadade3160232e70893311f1f8903974488096e2eb8e48caba2f0cf1" +checksum = "c64621e2c08f2576e4194ea8be11daf24ac01249a4f53cd8befcbb7077120ead" dependencies = [ "proc-macro-utils", "proc-macro2", @@ -1681,9 +1590,9 @@ checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94" [[package]] name = "memchr" -version = "2.7.1" +version = "2.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149" +checksum = "6c8640c5d730cb13ebd907d8d04b52f55ac9a2eec55b440c8892f40d56c76c1d" [[package]] name = "migrations_internals" @@ -1730,18 +1639,18 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "miniz_oxide" -version = "0.7.1" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" +checksum = "9d811f3e15f28568be3407c8e7fdb6514c1cda3cb30683f15b6a1a1dc4ea14a7" dependencies = [ "adler", ] [[package]] name = "mio" -version = "0.8.10" +version = "0.8.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f3d0b296e374a4e6f3c7b0a1f5a51d748a0d34c85e7dc48fc3fa9a87657fe09" +checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" dependencies = [ "libc", "wasi", @@ -1818,11 +1727,11 @@ checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" [[package]] name = "openssl" -version = "0.10.63" +version = "0.10.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15c9d69dd87a29568d4d017cfe8ec518706046a05184e5aea92d0af890b803c8" +checksum = "95a0481286a310808298130d22dd1fef0fa571e05a8f44ec801801e84b216b1f" dependencies = [ - "bitflags 2.4.1", + "bitflags 2.5.0", "cfg-if", "foreign-types", "libc", @@ -1839,14 +1748,14 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.58", ] [[package]] name = "openssl-sys" -version = "0.9.99" +version = "0.9.102" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22e1bf214306098e4832460f797824c05d25aacdf896f64a985fb0fd992454ae" +checksum = "c597637d56fbc83893a35eb0dd04b2b8e7a50c91e64e9493e398b5df4fb45fa2" dependencies = [ "cc", "libc", @@ -1926,29 +1835,29 @@ checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "pin-project" -version = "1.1.3" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fda4ed1c6c173e3fc7a83629421152e01d7b1f9b7f65fb301e490e8cfc656422" +checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.3" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405" +checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.58", ] [[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" @@ -1958,9 +1867,9 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] name = "pkg-config" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69d3587f8a9e599cc7ec2c00e331f71c4e69a5f9a4b8a6efd5b07466b9736f9a" +checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" [[package]] name = "powerfmt" @@ -1985,12 +1894,12 @@ dependencies = [ [[package]] name = "prettyplease" -version = "0.2.15" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae005bd773ab59b4725093fd7df83fd7892f7d8eafb48dbd7de6e024e4215f9d" +checksum = "8d3928fb5db768cb86f891ff014f0144589297e3c6a1aba6ed7cecfdace270c7" dependencies = [ "proc-macro2", - "syn 2.0.48", + "syn 2.0.58", ] [[package]] @@ -2029,9 +1938,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.76" +version = "1.0.79" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95fc56cda0b5c3325f5fbbd7ff9fda9e02bb00bb3dac51252d2f1bfa1cb8cc8c" +checksum = "e835ff2298f5721608eb1a980ecaee1aef2c132bf95ecc026a11b7bf3c01c02e" dependencies = [ "unicode-ident", ] @@ -2044,31 +1953,11 @@ checksum = "af066a9c399a26e020ada66a034357a868728e72cd426f3adcd35f80d88d88c8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.58", "version_check", "yansi", ] -[[package]] -name = "ptr_meta" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0738ccf7ea06b608c10564b31debd4f5bc5e197fc8bfe088f68ae5ce81e7a4f1" -dependencies = [ - "ptr_meta_derive", -] - -[[package]] -name = "ptr_meta_derive" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16b845dbfca988fa33db069c0e230574d15a3088f147a87b64c7589eb662c9ac" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - [[package]] name = "quote" version = "1.0.35" @@ -2080,25 +1969,25 @@ dependencies = [ [[package]] name = "quote-use" -version = "0.7.2" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7b5abe3fe82fdeeb93f44d66a7b444dedf2e4827defb0a8e69c437b2de2ef94" +checksum = "b393938dcaab992375d7b3df7887fa98cc91c2f3590598251e7c609e2b788139" dependencies = [ "quote", "quote-use-macros", - "syn 2.0.48", ] [[package]] name = "quote-use-macros" -version = "0.7.2" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97ea44c7e20f16017a76a245bb42188517e13d16dcb1aa18044bc406cdc3f4af" +checksum = "71d8772387900c205780e2c240cfe4dd01355ab4f96a503d99bdf34ad73180ef" dependencies = [ "derive-where", + "proc-macro-utils", "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.58", ] [[package]] @@ -2112,12 +2001,6 @@ dependencies = [ "scheduled-thread-pool", ] -[[package]] -name = "radium" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" - [[package]] name = "rand" version = "0.8.5" @@ -2173,9 +2056,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.10.2" +version = "1.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343" +checksum = "c117dbdfde9c8308975b6a18d71f3f385c89461f7b3fb054288ecf2a2058ba4c" dependencies = [ "aho-corasick", "memchr", @@ -2185,9 +2068,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.3" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f" +checksum = "86b83b8b9847f9bf95ef68afb0b8e6cdb80f498442f5179a29fad448fcc1eaea" dependencies = [ "aho-corasick", "memchr", @@ -2196,18 +2079,9 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.8.2" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" - -[[package]] -name = "rend" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2571463863a6bd50c32f94402933f03457a3fbaf697a707c5be741e459f08fd" -dependencies = [ - "bytecheck", -] +checksum = "adad44e29e4c806119491a7f06f03de4d1af22c3a680dd47f1e6e179439d1f56" [[package]] name = "ring" @@ -2224,35 +2098,6 @@ dependencies = [ "windows-sys 0.52.0", ] -[[package]] -name = "rkyv" -version = "0.7.43" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "527a97cdfef66f65998b5f3b637c26f5a5ec09cc52a3f9932313ac645f4190f5" -dependencies = [ - "bitvec", - "bytecheck", - "bytes", - "hashbrown 0.12.3", - "ptr_meta", - "rend", - "rkyv_derive", - "seahash", - "tinyvec", - "uuid", -] - -[[package]] -name = "rkyv_derive" -version = "0.7.43" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5c462a1328c8e67e4d6dbad1eb0355dd43e8ab432c6e227a43657f16ade5033" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - [[package]] name = "rmp" version = "0.8.12" @@ -2284,7 +2129,7 @@ dependencies = [ "proc-macro2", "proc-macro2-diagnostics", "quote", - "syn 2.0.48", + "syn 2.0.58", "syn_derive", "thiserror", ] @@ -2309,9 +2154,9 @@ checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4" [[package]] name = "ryu" -version = "1.0.16" +version = "1.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f98d2aa92eebf49b69786be48e4477826b256916e84a57ff2a4f21923b48eb4c" +checksum = "e86697c916019a8588c99b5fac3cead74ec0b4b819707a682fd4d23fa0ce1ba1" [[package]] name = "same-file" @@ -2337,12 +2182,6 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" -[[package]] -name = "seahash" -version = "4.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c107b6f4780854c8b126e228ea8869f4d7b71260f962fefb57b996b8959ba6b" - [[package]] name = "self_cell" version = "1.0.3" @@ -2366,9 +2205,9 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.195" +version = "1.0.197" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63261df402c67811e9ac6def069e4786148c4563f4b50fd4bf30aa370d626b02" +checksum = "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2" dependencies = [ "serde_derive", ] @@ -2386,20 +2225,20 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.195" +version = "1.0.197" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46fe8f8603d81ba86327b23a2e9cdf49e1255fb94a4c5f297f6ee0547178ea2c" +checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.58", ] [[package]] name = "serde_json" -version = "1.0.108" +version = "1.0.115" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d1c7e3eac408d115102c4c24ad393e0821bb3a5df4d506a80f85f7a742a526b" +checksum = "12dc5c46daa8e9fdf4f5e71b6cf9a53f2487da0e86e55808e2d35539666497dd" dependencies = [ "itoa", "ryu", @@ -2408,9 +2247,9 @@ dependencies = [ [[package]] name = "serde_path_to_error" -version = "0.1.15" +version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebd154a240de39fdebcf5775d2675c204d7c13cf39a4c697be6493c8e734337c" +checksum = "af99884400da37c88f5e9146b7f1fd0fbcae8f6eec4e9da38b67d05486f814a6" dependencies = [ "itoa", "serde", @@ -2459,9 +2298,9 @@ dependencies = [ [[package]] name = "server_fn" -version = "0.6.9" +version = "0.6.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2955da1dc5fcd970c182ebf1089af6c5f19051e1f286a21f7b96490a49b7a531" +checksum = "15a46a2ffdecb81430ecfb995989218a18b6e94c1ead50cb806b5927c986a8ce" dependencies = [ "axum", "bytes", @@ -2469,7 +2308,7 @@ dependencies = [ "const_format", "dashmap", "futures", - "gloo-net 0.5.0", + "gloo-net", "http", "http-body-util", "hyper", @@ -2494,26 +2333,26 @@ dependencies = [ [[package]] name = "server_fn_macro" -version = "0.6.9" +version = "0.6.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adfdd051ef905fdb3da20942b0c52d536158d7489a724e14cc2fd47323e7ca91" +checksum = "324a248dedb786315ba738f3618dbd65ba0c1b22ebea76f15a3e96a04643a73f" dependencies = [ "const_format", "convert_case", "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.58", "xxhash-rust", ] [[package]] name = "server_fn_macro_default" -version = "0.6.9" +version = "0.6.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "060af1def72353a779fcc184c53e1965d3055a38b9e827f2259b2bff2d9c371e" +checksum = "af19028131998f73134a9adcdefb6d9de2eeaed5b01ef74f6d902a1659d2a32f" dependencies = [ "server_fn_macro", - "syn 2.0.48", + "syn 2.0.58", ] [[package]] @@ -2527,12 +2366,6 @@ dependencies = [ "digest", ] -[[package]] -name = "simdutf8" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f27f6278552951f1f2b8cf9da965d10969b2efdea95a6ec47987ab46edfe263a" - [[package]] name = "slab" version = "0.4.9" @@ -2554,18 +2387,18 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "socket2" -version = "0.5.5" +version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b5fac59a5cb5dd637972e5fca70daf0523c9067fcdc4842f053dae04a18f8e9" +checksum = "05ffd9c0a93b7543e062e759284fcf5f5e3b098501104bfbdde4d404db792871" dependencies = [ "libc", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] @@ -2599,9 +2432,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.48" +version = "2.0.58" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f3531638e407dfc0814761abb7c00a5b54992b849452a0646b7f65c9f770f3f" +checksum = "44cfb93f38070beee36b3fef7d4f5a16f27751d94b187b666a5cc5e9b0d30687" dependencies = [ "proc-macro2", "quote", @@ -2617,7 +2450,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.58", ] [[package]] @@ -2632,30 +2465,24 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "384595c11a4e2969895cad5a8c4029115f5ab956a9e5ef4de79d11a426e5f20c" -[[package]] -name = "tap" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" - [[package]] name = "thiserror" -version = "1.0.57" +version = "1.0.58" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e45bcbe8ed29775f228095caf2cd67af7a4ccf756ebff23a306bf3e8b47b24b" +checksum = "03468839009160513471e86a034bb2c5c0e4baae3b43f79ffc55c4a5427b3297" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.57" +version = "1.0.58" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a953cb265bef375dae3de6663da4d3804eee9682ea80d8e2542529b73c531c81" +checksum = "c61f3ba182994efc43764a46c018c347bc492c79f024e705f46567b418f6d4f7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.58", ] [[package]] @@ -2706,9 +2533,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.35.1" +version = "1.37.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c89b4efa943be685f629b149f53829423f8f5531ea21249408e8e2f8671ec104" +checksum = "1adbebffeca75fcfd058afa480fb6c0b81e165a0323f9c9d39c9697e37c46787" dependencies = [ "backtrace", "bytes", @@ -2729,7 +2556,7 @@ checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.58", ] [[package]] @@ -2802,7 +2629,7 @@ dependencies = [ "serde", "serde_spanned", "toml_datetime", - "winnow 0.5.37", + "winnow 0.5.40", ] [[package]] @@ -2857,7 +2684,7 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e9cd434a998747dd2c4276bc96ee2e0c7a2eadf3cae88e52be55a05fa9053f5" dependencies = [ - "bitflags 2.4.1", + "bitflags 2.5.0", "bytes", "futures-util", "http", @@ -2914,7 +2741,7 @@ checksum = "afd1c5040577134115d8cc758d7757da29e171f83102de3ed1b86e3a2405533f" dependencies = [ "async-trait", "axum-core", - "base64 0.22.0", + "base64", "futures", "http", "parking_lot", @@ -2973,7 +2800,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.58", ] [[package]] @@ -2987,22 +2814,22 @@ dependencies = [ [[package]] name = "typed-builder" -version = "0.18.0" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e47c0496149861b7c95198088cbf36645016b1a0734cf350c50e2a38e070f38a" +checksum = "444d8748011b93cb168770e8092458cb0f8854f931ff82fdf6ddfbd72a9c933e" dependencies = [ "typed-builder-macro", ] [[package]] name = "typed-builder-macro" -version = "0.18.0" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "982ee4197351b5c9782847ef5ec1fdcaf50503fb19d68f9771adae314e72b492" +checksum = "563b3b88238ec95680aef36bdece66896eaa7ce3c0f1b4f39d38fb2435261352" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.58", ] [[package]] @@ -3022,9 +2849,9 @@ dependencies = [ [[package]] name = "unicode-bidi" -version = "0.3.14" +version = "0.3.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f2528f27a9eb2b21e69c95319b30bd0efd85d09c379741b0f78ea1d86be2416" +checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" [[package]] name = "unicode-ident" @@ -3034,18 +2861,18 @@ 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-segmentation" -version = "1.10.1" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36" +checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202" [[package]] name = "unicode-xid" @@ -3084,9 +2911,9 @@ checksum = "86bd8d4e895da8537e5315b8254664e6b769c4ff3db18321b297a1e7004392e3" [[package]] name = "uuid" -version = "1.6.1" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e395fcf16a7a3d8127ec99782007af141946b4795001f876d54fb0d55978560" +checksum = "a183cf7feeba97b4dd1c0d46788634f6221d87fa961b305bed08c851829efcc0" dependencies = [ "getrandom", ] @@ -3105,9 +2932,9 @@ checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" [[package]] name = "walkdir" -version = "2.4.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d71d857dc86794ca4c280d616f7da00d2dbfd8cd788846559a6813e6aa4b54ee" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" dependencies = [ "same-file", "winapi-util", @@ -3140,15 +2967,15 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.58", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.39" +version = "0.4.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac36a15a220124ac510204aec1c3e5db8a22ab06fd6706d881dc6149f8ed9a12" +checksum = "76bc14366121efc8dbb487ab05bcc9d346b3b5ec0eaa76e46594cabbe51762c0" dependencies = [ "cfg-if", "js-sys", @@ -3174,7 +3001,7 @@ checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.58", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -3200,9 +3027,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.66" +version = "0.3.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50c24a44ec86bb68fbecd1b3efed7e85ea5621b39b35ef2766b66cd984f8010f" +checksum = "77afa9a11836342370f4817622a2f0f418b134426d91a82dfb48f532d2ec13ef" dependencies = [ "js-sys", "wasm-bindgen", @@ -3373,9 +3200,9 @@ checksum = "32b752e52a2da0ddfbdbcc6fceadfeede4c939ed16d13e648833a61dfb611ed8" [[package]] name = "winnow" -version = "0.5.37" +version = "0.5.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7cad8365489051ae9f054164e459304af2e7e9bb407c958076c8bf4aef52da5" +checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" dependencies = [ "memchr", ] @@ -3389,26 +3216,17 @@ dependencies = [ "memchr", ] -[[package]] -name = "wyz" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" -dependencies = [ - "tap", -] - [[package]] name = "xxhash-rust" -version = "0.8.8" +version = "0.8.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53be06678ed9e83edb1745eb72efc0bbcd7b5c3c35711a860906aed827a13d61" +checksum = "927da81e25be1e1a2901d59b81b37dd2efd1fc9c9345a55007f09bf5a2d3ee03" [[package]] name = "yansi" -version = "1.0.0-rc.1" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1367295b8f788d371ce2dbc842c7b709c73ee1364d30351dd300ec2203b12377" +checksum = "cfe53a6657fd280eaa890a3bc59152892ffa3e30101319d168b781ed6529b049" [[package]] name = "zerocopy" @@ -3427,5 +3245,5 @@ checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.58", ] From 90d645a151d81fd48660c4aab8606e6e8cab9c1b Mon Sep 17 00:00:00 2001 From: Ethan Girouard <mr.egirouard@gmail.com> Date: Thu, 11 Apr 2024 17:54:17 -0400 Subject: [PATCH 42/42] Make axum-login crate optional --- Cargo.toml | 3 ++- src/auth_backend.rs | 16 ++++------------ src/lib.rs | 4 ++-- 3 files changed, 8 insertions(+), 15 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 1964645..4677ca9 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -35,7 +35,7 @@ thiserror = "1.0.57" tower-sessions = { version = "0.11", default-features = false } tower-sessions-redis-store = { version = "0.11", optional = true } async-trait = "0.1.79" -axum-login = "0.14.0" +axum-login = { version = "0.14.0", optional = true } [patch.crates-io] gloo-net = { git = "https://github.com/rustwasm/gloo.git", rev = "a823fab7ecc4068e9a28bd669da5eaf3f0a56380" } @@ -60,6 +60,7 @@ ssr = [ "tower", "tower-http", "tower-sessions-redis-store", + "axum-login", ] # Defines a size-optimized profile for the WASM bundle in release mode diff --git a/src/auth_backend.rs b/src/auth_backend.rs index 24e3454..79e5d9c 100644 --- a/src/auth_backend.rs +++ b/src/auth_backend.rs @@ -1,15 +1,7 @@ -use cfg_if::cfg_if; - -cfg_if! { - if #[cfg(feature = "ssr")] { - use async_trait::async_trait; - use axum_login::{AuthnBackend, UserId}; - use crate::users::UserCredentials; - use leptos::server_fn::error::ServerFnErrorErr; - } -} - -use axum_login::AuthUser; +use async_trait::async_trait; +use axum_login::{AuthnBackend, AuthUser, UserId}; +use crate::users::UserCredentials; +use leptos::server_fn::error::ServerFnErrorErr; use crate::models::User; diff --git a/src/lib.rs b/src/lib.rs index 581ae74..74b1c08 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -12,11 +12,11 @@ pub mod users; pub mod search; pub mod fileserv; pub mod error_template; -pub mod auth_backend; use cfg_if::cfg_if; cfg_if! { - if #[cfg(feature = "ssr")] { + if #[cfg(feature = "ssr")] { + pub mod auth_backend; pub mod schema; } }