diff --git a/Cargo.lock b/Cargo.lock index aa1f594..2e8286a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -184,19 +184,6 @@ dependencies = [ "pin-project-lite", ] -[[package]] -name = "async-compression" -version = "0.4.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd066d0b4ef8ecb03a55319dc13aa6910616d0f44008a045bb1835af830abff5" -dependencies = [ - "flate2", - "futures-core", - "memchr", - "pin-project-lite", - "tokio", -] - [[package]] name = "async-executor" version = "1.13.0" @@ -218,7 +205,7 @@ checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" dependencies = [ "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] @@ -235,7 +222,7 @@ checksum = "6e0c28dcc82d7c8ead5cb13beb15405b57b8546e93215673ff8ca0349a028107" dependencies = [ "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] @@ -339,7 +326,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] @@ -415,7 +402,7 @@ dependencies = [ "regex", "rustc-hash", "shlex", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] @@ -521,7 +508,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.72", "syn_derive", ] @@ -616,9 +603,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.1.5" +version = "1.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "324c74f2155653c90b04f25b2a47a8a631360cb908f92a772695f430c7e31052" +checksum = "2aba8f4e9906c7ce3c73463f62a7f0c65183ada1a2d47e397cc8810827f9694f" dependencies = [ "jobserver", "libc", @@ -870,15 +857,6 @@ dependencies = [ "libc", ] -[[package]] -name = "crc32fast" -version = "1.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" -dependencies = [ - "cfg-if", -] - [[package]] name = "critical-section" version = "1.1.2" @@ -968,7 +946,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] @@ -979,7 +957,7 @@ checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" dependencies = [ "darling_core", "quote", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] @@ -1042,9 +1020,9 @@ dependencies = [ [[package]] name = "dioxus" -version = "0.5.1" +version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e50735a28b303b0d67e1b5637fb57e4711bf2776266290cbc987c0adfdabb55" +checksum = "b8e7fe217b50d43b27528b0f24c89b411f742a3e7564d1cfbf85253f967954db" dependencies = [ "dioxus-config-macro", "dioxus-core", @@ -1063,9 +1041,9 @@ dependencies = [ [[package]] name = "dioxus-cli-config" -version = "0.5.0" +version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5d4661064bad2f0b12929faf6c9cea4d94e60217ba6b11ff4146b505a57124b" +checksum = "c7dffc452ed91af6ef772b0d9a5899573f6785314e97c533733ec55413c01df3" dependencies = [ "once_cell", "serde", @@ -1075,9 +1053,9 @@ dependencies = [ [[package]] name = "dioxus-config-macro" -version = "0.5.0" +version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebe244197b320dec9e9f38742985fe98c058136ada770df73e9429878ed92863" +checksum = "cb1a1aa34cc04c1f7fcbb7a10791ba773cc02d834fe3ec1fe05647699f3b101f" dependencies = [ "proc-macro2", "quote", @@ -1085,9 +1063,9 @@ dependencies = [ [[package]] name = "dioxus-core" -version = "0.5.1" +version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "088daa3f45aaa729e9eef32dc0a9393dd709ee906b092089e5839cad1cad7c85" +checksum = "3730d2459ab66951cedf10b09eb84141a6eda7f403c28057cbe010495be156b7" dependencies = [ "futures-channel", "futures-util", @@ -1096,15 +1074,16 @@ dependencies = [ "rustc-hash", "serde", "slab", + "slotmap", "tracing", "tracing-subscriber", ] [[package]] name = "dioxus-core-macro" -version = "0.5.1" +version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e29a07448245451334eec2883a394e207f28caedf0a57fd1a903e9ccea0b9531" +checksum = "0d9c0dfe0e6a46626fa716c4aa1d2ccb273441337909cfeacad5bb6fcfb947d2" dependencies = [ "constcat", "convert_case", @@ -1112,7 +1091,7 @@ dependencies = [ "prettyplease", "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] @@ -1123,12 +1102,11 @@ checksum = "2ea539174bb236e0e7dc9c12b19b88eae3cb574dedbd0252a2d43ea7e6de13e2" [[package]] name = "dioxus-fullstack" -version = "0.5.2" +version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db7fb1a22ff7af8756bc9506eebfbecf374b1c8c57f087c85c752ba8bd767fce" +checksum = "b80f0ac18166302341164e681322e0385131c08a11c3cc1c51ee8df799ab0d3d" dependencies = [ "anymap", - "async-compression", "async-trait", "axum", "base64 0.21.7", @@ -1162,9 +1140,9 @@ dependencies = [ [[package]] name = "dioxus-hooks" -version = "0.5.1" +version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a8c7019308a6d8381fce84a51006f207407af265aebc5425871399c98d788e4" +checksum = "fa8f9c661eea82295219d25555d5c0b597e74186b029038ceb5e3700ccbd4380" dependencies = [ "dioxus-core", "dioxus-debug-cell", @@ -1179,9 +1157,9 @@ dependencies = [ [[package]] name = "dioxus-hot-reload" -version = "0.5.0" +version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d5a28a2af6655473c6521fb5a428538807b985e8e5f1a8c30e2ab71bd54e637" +checksum = "77d01246cb1b93437fb0bbd0dd11cfc66342d86b4311819e76654f2017ce1473" dependencies = [ "dioxus-core", "dioxus-html", @@ -1193,9 +1171,9 @@ dependencies = [ [[package]] name = "dioxus-html" -version = "0.5.1" +version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8d612d9732f32adc1852e13e1387a9d5baa710b0b004641b5123def53065c8d" +checksum = "f01a0826f179adad6ea8d6586746e8edde0c602cc86f4eb8e5df7a3b204c4018" dependencies = [ "async-trait", "dioxus-core", @@ -1216,21 +1194,21 @@ dependencies = [ [[package]] name = "dioxus-html-internal-macro" -version = "0.5.0" +version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1799f34affdb158f6ebec23b46b11f9e65de0bbadbbb781dc68c3eddfe6fd32b" +checksum = "0b96f35a608d0ab8f4ca6f66ce1828354e4ebd41580b12454f490221a11da93c" dependencies = [ "convert_case", "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] name = "dioxus-interpreter-js" -version = "0.5.1" +version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc68a22e33562317b40ccc7b2d140017e510745c5d7e062e911c6a4f9042e4b1" +checksum = "351fad098c657d14f3ac2900362d2b86e83c22c4c620a404839e1ab628f3395b" dependencies = [ "dioxus-core", "dioxus-html", @@ -1239,14 +1217,15 @@ dependencies = [ "sledgehammer_bindgen", "sledgehammer_utils", "wasm-bindgen", + "wasm-bindgen-futures", "web-sys", ] [[package]] name = "dioxus-lib" -version = "0.5.1" +version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9af36a9f985ad68783acf62dc276b0a8f0aa928f1c3b42f78e2ae222b19d445c" +checksum = "8bd39b2c41dd1915dcb91d914ea72d8b646f1f8995aaeff82816b862ec586ecd" dependencies = [ "dioxus-core", "dioxus-core-macro", @@ -1258,9 +1237,9 @@ dependencies = [ [[package]] name = "dioxus-liveview" -version = "0.5.1" +version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dc132aacc3eb3d11db8f20afa5f3cfc74147374cc41285488083476a0ed1f17" +checksum = "3ada18a8fe0764f492fd4fb169b818877799e887dbb6ffb19289801d924faf18" dependencies = [ "axum", "dioxus-cli-config", @@ -1296,9 +1275,9 @@ dependencies = [ [[package]] name = "dioxus-router" -version = "0.5.0" +version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c4cbbc1aff811aa3715c94a7ca0375be0be34356aba7f3897328d844323519b" +checksum = "c235c5dbeb528c0c2b0424763da812e7500df69b82eddac54db6f4975e065c5f" dependencies = [ "dioxus-cli-config", "dioxus-fullstack", @@ -1318,36 +1297,36 @@ dependencies = [ [[package]] name = "dioxus-router-macro" -version = "0.5.1" +version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67fcb6e4a203dc816bca720c638562d5a782695dc71d6598de088ce50ba2a0f8" +checksum = "2e7cd1c5137ba361f2150cdea6b3bc9ddda7b1af84b22c9ee6b5499bf43e1381" dependencies = [ "proc-macro2", "quote", "slab", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] name = "dioxus-rsx" -version = "0.5.1" +version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "faa83056104f63fdc6f7f9fc1137208c7b7648bf88d6c86db1e095f15297a0f3" +checksum = "15c400bc8a779107d8f3a67b14375db07dbd2bc31163bf085a8e9097f36f7179" dependencies = [ "dioxus-core", "internment", "krates", "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.72", "tracing", ] [[package]] name = "dioxus-signals" -version = "0.5.1" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fd04e2b3739d5c12255005cbf3185446e750fc2b3eeee9fa4e83c989132415c" +checksum = "7e3e224cd3d3713f159f0199fc088c292a0f4adb94996b48120157f6a8f8342d" dependencies = [ "dioxus-core", "futures-channel", @@ -1361,9 +1340,9 @@ dependencies = [ [[package]] name = "dioxus-ssr" -version = "0.5.1" +version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30ba8e16b3c7e154a61d814a39505c910403b9df29a113e2920cd23334a4e71c" +checksum = "753b1eb29372bb3afcdbc0ac603893802a8b7b70fa94b86a1641408e2b87173b" dependencies = [ "askama_escape", "async-trait", @@ -1382,9 +1361,9 @@ dependencies = [ [[package]] name = "dioxus-web" -version = "0.5.1" +version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75cfbe115b193a05c649a80a54a90a6bdd88779694a617daf27d287d6fb944f" +checksum = "e0855ac81fcc9252a0863930a7a7cbb2504fc1b6efe893489c8d0e23aaeb2cb9" dependencies = [ "async-trait", "console_error_panic_hook", @@ -1407,15 +1386,15 @@ dependencies = [ [[package]] name = "dioxus_server_macro" -version = "0.5.1" +version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b723da95503f739f9fc5fb23b6ad1e456f1438a496a0427210fa94e4e0d5fe9" +checksum = "b5ef2cad17001c1155f019cb69adbacd620644566d78a77d0778807bb106a337" dependencies = [ "convert_case", "proc-macro2", "quote", "server_fn_macro", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] @@ -1496,23 +1475,23 @@ checksum = "c34f04666d835ff5d62e058c3995147c06f42fe86ff053337632bca83e42702d" [[package]] name = "enumset" -version = "1.1.3" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "226c0da7462c13fb57e5cc9e0dc8f0635e7d27f276a3a7fd30054647f669007d" +checksum = "d07a4b049558765cef5f0c1a273c3fc57084d768b44d2f98127aef4cceb17293" dependencies = [ "enumset_derive", ] [[package]] name = "enumset_derive" -version = "0.8.1" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e08b6c6ab82d70f08844964ba10c7babb716de2ecaeab9be5717918a5177d3af" +checksum = "59c3b24c345d8c314966bdc1832f6c2635bfcce8e7cf363bd115987bba2ee242" dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] @@ -1602,16 +1581,6 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" -[[package]] -name = "flate2" -version = "1.0.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f54427cfd1c7829e2a139fcefea601bf088ebca651d2bf53ebc600eac295dae" -dependencies = [ - "crc32fast", - "miniz_oxide", -] - [[package]] name = "float_next_after" version = "1.0.0" @@ -1782,7 +1751,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] @@ -1826,9 +1795,9 @@ dependencies = [ [[package]] name = "generational-box" -version = "0.5.1" +version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f132919c96b85c02a067ceae965fd50ace57111e2f55c7384b95ac191f4d966b" +checksum = "557cf2cbacd0504c6bf8c29f52f8071e0de1d9783346713dc6121d7fa1e5d0e0" dependencies = [ "parking_lot", ] @@ -2559,9 +2528,9 @@ checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" [[package]] name = "jobserver" -version = "0.1.31" +version = "0.1.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2b099aaa34a9751c5bf0878add70444e1ed2dd73f347be99003d4577277de6e" +checksum = "48d1dbcbbeb6a7fec7e059840aa538bd62aaccf972c7346c4d9d2059312853d0" dependencies = [ "libc", ] @@ -2662,9 +2631,9 @@ checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c" [[package]] name = "libloading" -version = "0.8.4" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e310b3a6b5907f99202fcdb4960ff45b93735d7c7d96b760fcff8db2dc0e103d" +checksum = "4979f22fdb869068da03c9f7528f8297c6fd2606bc3a4affe42e6a823fdb8da4" dependencies = [ "cfg-if", "windows-targets 0.52.6", @@ -2764,9 +2733,9 @@ dependencies = [ [[package]] name = "lz4-sys" -version = "1.9.5" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9764018d143cc854c9f17f0b907de70f14393b1f502da6375dce70f00514eb3" +checksum = "109de74d5d2353660401699a4174a4ff23fcc649caf553df71933c7fb45ad868" dependencies = [ "cc", "libc", @@ -2808,7 +2777,7 @@ dependencies = [ "manganis-common", "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.72", "tracing-subscriber", ] @@ -2870,7 +2839,7 @@ checksum = "49e7bc1560b95a3c4a25d03de42fe76ca718ab92d1a22a55b9b4cf67b3ae635c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] @@ -2906,13 +2875,14 @@ dependencies = [ [[package]] name = "mio" -version = "0.8.11" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" +checksum = "4569e456d394deccd22ce1c1913e6ea0e54519f577285001215d33557431afe4" dependencies = [ + "hermit-abi", "libc", "wasi", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] @@ -3124,9 +3094,9 @@ dependencies = [ [[package]] name = "object" -version = "0.36.1" +version = "0.36.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "081b846d1d56ddfc18fdf1a922e4f6e07a11768ea1b92dec44e42b72712ccfce" +checksum = "3f203fa8daa7bb185f760ae12bd8e097f63d17041dcdcaf675ac54cdf863170e" dependencies = [ "memchr", ] @@ -3160,9 +3130,9 @@ checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" [[package]] name = "openssl" -version = "0.10.64" +version = "0.10.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95a0481286a310808298130d22dd1fef0fa571e05a8f44ec801801e84b216b1f" +checksum = "9529f4786b70a3e8c61e11179af17ab6188ad8d0ded78c5529441ed39d4bd9c1" dependencies = [ "bitflags 2.6.0", "cfg-if", @@ -3181,7 +3151,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] @@ -3192,9 +3162,9 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "openssl-sys" -version = "0.9.102" +version = "0.9.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c597637d56fbc83893a35eb0dd04b2b8e7a50c91e64e9493e398b5df4fb45fa2" +checksum = "7f9e8deee91df40a943c71b917e5874b951d32a802526c85721ce3b776c929d6" dependencies = [ "cc", "libc", @@ -3364,7 +3334,7 @@ checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" dependencies = [ "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] @@ -3442,7 +3412,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5f12335488a2f3b0a83b14edad48dca9879ce89b2edd10e80237e4e852dd645e" dependencies = [ "proc-macro2", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] @@ -3659,7 +3629,7 @@ checksum = "bcc303e793d3734489387d205e9b186fac9c6cfacedd98cbb2e8a5943595f3e6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] @@ -3775,7 +3745,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] @@ -4169,7 +4139,7 @@ checksum = "e0cd7e117be63d3c3678776753929474f3b04a43a080c744d6b0ae2a8c28e222" dependencies = [ "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] @@ -4213,7 +4183,7 @@ checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] @@ -4264,14 +4234,14 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] name = "server_fn" -version = "0.6.12" +version = "0.6.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b06e6e5467a2cd93ce1accfdfd8b859404f0b3b2041131ffd774fabf666b8219" +checksum = "e9aaae169927ef701a4734d680adcb08f13269c9f0af822bf175d681fe56d65c" dependencies = [ "axum", "bytes", @@ -4303,26 +4273,26 @@ dependencies = [ [[package]] name = "server_fn_macro" -version = "0.6.12" +version = "0.6.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09c216bb1c1ac890151397643c663c875a1836adf0b269be4e389cb1b48c173c" +checksum = "583085903fd5d091884eb52d99550e32777015af21f0f5dbec49bedcc320ce82" dependencies = [ "const_format", "convert_case", "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.72", "xxhash-rust", ] [[package]] name = "server_fn_macro_default" -version = "0.6.12" +version = "0.6.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00783df297ec85ea605779f2fef9cbec98981dffe2e01e1a9845c102ee1f1ae6" +checksum = "b628649700e28cf8bc33e0df5de5c9d591a1828ba005a25b425477055f1e0e74" dependencies = [ "server_fn_macro", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] @@ -4431,7 +4401,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "edc90d3e8623d29a664cd8dba5078b600dd203444f00b9739f744e4c6e7aeaf2" dependencies = [ "quote", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] @@ -4445,6 +4415,16 @@ dependencies = [ "rustc-hash", ] +[[package]] +name = "slotmap" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbff4acf519f630b3a3ddcfaea6c06b42174d9a44bc70c620e9ed1649d58b82a" +dependencies = [ + "serde", + "version_check", +] + [[package]] name = "smallvec" version = "1.13.2" @@ -4842,9 +4822,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.71" +version = "2.0.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b146dcf730474b4bcd16c311627b31ede9ab149045db4d6088b3becaea046462" +checksum = "dc4b9b9bf2add8093d3f2c0204471e951b2285580335de42f9d2534f3ae7a8af" dependencies = [ "proc-macro2", "quote", @@ -4860,7 +4840,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] @@ -4927,22 +4907,22 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.62" +version = "1.0.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2675633b1499176c2dff06b0856a27976a8f9d436737b4cf4f312d4d91d8bbb" +checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.62" +version = "1.0.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d20468752b09f49e909e55a5d338caa8bedf615594e9d80bc4c565d30faf798c" +checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" dependencies = [ "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] @@ -5018,32 +4998,31 @@ checksum = "c7c4ceeeca15c8384bbc3e011dbd8fccb7f068a440b752b7d9b32ceb0ca0e2e8" [[package]] name = "tokio" -version = "1.38.1" +version = "1.39.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb2caba9f80616f438e09748d5acda951967e1ea58508ef53d9c6402485a46df" +checksum = "d040ac2b29ab03b09d4129c2f5bbd012a3ac2f79d38ff506a4bf8dd34b0eac8a" dependencies = [ "backtrace", "bytes", "libc", "mio", - "num_cpus", "parking_lot", "pin-project-lite", "signal-hook-registry", "socket2", "tokio-macros", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] name = "tokio-macros" -version = "2.3.0" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f5ae998a069d4b5aba8ee9dad856af7d520c3699e6159b185c2acd48155d39a" +checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" dependencies = [ "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] @@ -5238,7 +5217,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] @@ -5552,7 +5531,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.72", "wasm-bindgen-shared", ] @@ -5586,7 +5565,7 @@ checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.72", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -5914,7 +5893,7 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index bf71f12..3b7c453 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -19,9 +19,9 @@ surrealdb = { version = "1.5.4", features = ["kv-speedb"], optional = true } csv = { version = "1.3.0", optional = true } # Debug -tracing = "0.1.40" -dioxus-logger = "0.5.0" -manganis = "0.2.2" +tracing = "0.1" +dioxus-logger = "0.5" +manganis = "0.2" [features] default = [] diff --git a/Dioxus.toml b/Dioxus.toml index 29109da..a6b4804 100644 --- a/Dioxus.toml +++ b/Dioxus.toml @@ -11,7 +11,7 @@ default_platform = "web" out_dir = "dist" # resource (assets) file folder -asset_dir = "assets" +asset_dir = "public" [web.app] diff --git a/assets/tailwind.css b/assets/tailwind.css index 4e2f923..4ec72d7 100644 --- a/assets/tailwind.css +++ b/assets/tailwind.css @@ -2003,6 +2003,10 @@ html { margin-bottom: 1.25rem; } +.mt-10 { + margin-top: 2.5rem; +} + .mt-5 { margin-top: 1.25rem; } @@ -2045,6 +2049,10 @@ html { min-height: 4rem; } +.w-80 { + width: 20rem; +} + .w-96 { width: 24rem; } diff --git a/devenv.lock b/devenv.lock index cb37a56..8e5443a 100644 --- a/devenv.lock +++ b/devenv.lock @@ -3,11 +3,11 @@ "devenv": { "locked": { "dir": "src/modules", - "lastModified": 1719759336, + "lastModified": 1721817837, "owner": "cachix", "repo": "devenv", - "rev": "bb32aa986f2f695385e54428d0eaf7d05b31466e", - "treeHash": "802683f2a55dd8c03f2817fbd9a392876e263c2a", + "rev": "44bfc26843694ab17ebae1d4922065e48d93f501", + "treeHash": "62b4ad814fcc952c5660916c9cdadc34927b3330", "type": "github" }, "original": { @@ -25,11 +25,11 @@ "rust-analyzer-src": "rust-analyzer-src" }, "locked": { - "lastModified": 1721111394, + "lastModified": 1721802589, "owner": "nix-community", "repo": "fenix", - "rev": "e63599e3186cfb3284933bc815d33a509addd00e", - "treeHash": "bacc5edad576bf49c31ef3ff3d3dbd9d37e51f1f", + "rev": "31cd6d83e0e3900f10053daf33bd878792946282", + "treeHash": "28edc9486170ad5cce0e02ebef2abc04c2c473a1", "type": "github" }, "original": { @@ -93,16 +93,16 @@ }, "nixpkgs-stable": { "locked": { - "lastModified": 1719663039, + "lastModified": 1721686456, "owner": "NixOS", "repo": "nixpkgs", - "rev": "4a1e673523344f6ccc84b37f4413ad74ea19a119", - "treeHash": "f83a332235f40ebf2426f8a4cc3e2e10c156502b", + "rev": "575f3027caa1e291d24f1e9fb0e3a19c2f26d96b", + "treeHash": "ae2b90d07867bf9f121208c0073a311669762314", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixos-23.11", + "ref": "nixos-24.05", "repo": "nixpkgs", "type": "github" } @@ -117,11 +117,11 @@ "nixpkgs-stable": "nixpkgs-stable" }, "locked": { - "lastModified": 1719259945, + "lastModified": 1721042469, "owner": "cachix", "repo": "pre-commit-hooks.nix", - "rev": "0ff4381bbb8f7a52ca4a851660fc7a437a4c6e07", - "treeHash": "1a76ff89a9d4017b48abbb1bad8837b35d604ffc", + "rev": "f451c19376071a90d8c58ab1a953c6e9840527fd", + "treeHash": "91f40b7a3b9f6886bd77482cba5b5cd890415a2e", "type": "github" }, "original": { @@ -141,11 +141,11 @@ "rust-analyzer-src": { "flake": false, "locked": { - "lastModified": 1721048109, + "lastModified": 1721756321, "owner": "rust-lang", "repo": "rust-analyzer", - "rev": "0c95aaa08e5f870d269f0ca13010eda9a4dc3402", - "treeHash": "3d6283b1061f6a295a15a322a482376f52a05d86", + "rev": "eb5da56d839ae0a9e9f50774fa3eb78eb0964550", + "treeHash": "106582478fc798063981bdc201b4929ad00f0fab", "type": "github" }, "original": { diff --git a/devenv.nix b/devenv.nix index 6520e17..04b2f0f 100644 --- a/devenv.nix +++ b/devenv.nix @@ -3,11 +3,11 @@ { # https://devenv.sh/basics/ env.GREET = "devenv"; - env.LIBCLANG_PATH = "${pkgs.llvmPackages.libclang.lib}/lib"; - env.BINDGEN_EXTRA_CLANG_ARGS = "-I ${pkgs.llvmPackages.libclang.lib}/lib/clang/17/include"; + env.LIBCLANG_PATH = "${pkgs.libclang.lib}/lib"; + env.BINDGEN_EXTRA_CLANG_ARGS = "-I ${pkgs.libclang.lib}/lib/clang/17/include"; # https://devenv.sh/packages/ - packages = [ pkgs.openssl pkgs.git pkgs.dioxus-cli pkgs.tailwindcss pkgs.watchexec pkgs.llvmPackages.libclang pkgs.clang ]; + packages = [ pkgs.openssl pkgs.git pkgs.dioxus-cli pkgs.tailwindcss pkgs.watchexec pkgs.libclang pkgs.clang ]; # https://devenv.sh/scripts/ scripts.hello.exec = "echo hello from $GREET"; diff --git a/public/gifs/nick.gif b/public/gifs/nick.gif new file mode 100644 index 0000000..4905418 Binary files /dev/null and b/public/gifs/nick.gif differ diff --git a/public/gifs/nick.webp b/public/gifs/nick.webp new file mode 100644 index 0000000..ceab422 Binary files /dev/null and b/public/gifs/nick.webp differ diff --git a/src/components/admin/members.rs b/src/components/admin/members.rs index 8680c72..10d1891 100644 --- a/src/components/admin/members.rs +++ b/src/components/admin/members.rs @@ -1,5 +1,6 @@ use crate::util::model::member::{Member, MembersMigration}; use dioxus::prelude::{dioxus_elements::FileEngine, *}; +use manganis::ImageAsset; use std::sync::Arc; #[derive(Debug)] @@ -18,7 +19,7 @@ enum Steps { #[component] pub fn Migration() -> Element { let step = use_signal(|| Steps::Upload); - let members_migration = use_signal(|| MembersMigration::new()); + let members_migration = use_signal(|| (0, MembersMigration::new())); rsx! { div { @@ -28,22 +29,26 @@ pub fn Migration() -> Element { li { class: "step step-primary", "Uploaden" }, li { class: "step", - class: if *step.read() == Steps::Verify { "step-primary" }, + class: if let Steps::Verify | Steps::Done = *step.read() { { "step-primary" } }, "Controleren" }, - li { class: "step", "Klaar" }, + li { + class: "step", + class: if let Steps::Done = *step.read() { { "step-primary" } }, + "Klaar" + }, }, match *step.read() { Steps::Upload => rsx! { Upload { step: step, members_migration: members_migration } }, - Steps::Verify => rsx! { Verify { members_migration: members_migration} }, - Steps::Done => rsx! { Verify { members_migration: members_migration } }, + Steps::Verify => rsx! { Verify { step: step, members_migration: members_migration } }, + Steps::Done => rsx! { Done {} }, } } } } #[component] -fn Upload(step: Signal, members_migration: Signal) -> Element { +fn Upload(step: Signal, members_migration: Signal<(u16, MembersMigration)>) -> Element { let mut file_uploaded = use_signal(|| None); let mut loading = use_signal(|| false); @@ -108,9 +113,19 @@ fn Upload(step: Signal, members_migration: Signal) -> E } #[component] -fn Verify(members_migration: Signal) -> Element { +fn Verify(step: Signal, members_migration: Signal<(u16, MembersMigration)>) -> Element { let mut loading = use_signal(|| false); + let submit_accept = move |_| async move { + loading.set(true); + + if let Ok(_response) = migration_response(true, members_migration.read().0).await { + step.set(Steps::Done); + loading.set(false); + }; + loading.set(false); + }; + rsx! { div { class: "flex flex-col items-center justify-center w-full mx-auto px-2", @@ -120,21 +135,22 @@ fn Verify(members_migration: Signal) -> Element { div { class: "card bg-base-200 p-5", h2 { class: "card-title mb-1", "Toevoegen" } - MembersTable { members: members_migration.read().inserted.clone() } + MembersTable { members: members_migration.read().1.inserted.clone() } } div { class: "card bg-base-200 p-5", h2 { class: "card-title mb-1", "Verwijderen" } - MembersTable { members: members_migration.read().removed.clone() } + MembersTable { members: members_migration.read().1.removed.clone() } } div { class: "card bg-base-200 p-5", h2 { class: "card-title mb-1", "Updaten" } - MembersTable { members: members_migration.read().updated.clone() } + MembersTable { members: members_migration.read().1.updated.clone() } } } button { class: "btn btn-primary btn-wide mt-5", + onclick: submit_accept, disabled: loading(), if loading() { span { class: "loading loading-spinner" } @@ -145,6 +161,26 @@ fn Verify(members_migration: Signal) -> Element { } } +#[component] +fn Done() -> Element { + rsx! { + div { + class: "flex flex-col items-center justify-center w-full mx-auto px-2", + h2 { class: "text-xl mb-5", "Ledenlijst is geüpdate" }, + div { + class: "w-80 mt-10", + img { + src: "/gifs/nick.webp", + } + } + button { + class: "btn btn-primary btn-wide mt-5", + "Terug naar Start" + } + } + } +} + #[component] fn MembersTable(members: Vec) -> Element { rsx! { @@ -173,7 +209,7 @@ fn MembersTable(members: Vec) -> Element { } #[server] -async fn upload_members_list(input: String) -> Result { +async fn upload_members_list(input: String) -> Result<(u16, MembersMigration), ServerFnError> { match Member::migrate_proposal(input).await { Ok(r) => Ok(r), Err(err) => Err(ServerFnError::new(err.to_string())), @@ -181,7 +217,15 @@ async fn upload_members_list(input: String) -> Result Result<(), ServerFnError> { - tracing::info!("boe"); +async fn migration_response(correct: bool, id: u16) -> Result<(), ServerFnError> { + if correct { + match Member::migrate(id).await { + Err(err) => Err(ServerFnError::new(err.to_string())), + Ok(_) => Ok(()), + }?; + } else { + tracing::info!("Migrations denied"); + } + Ok(()) } diff --git a/src/util/model/member.rs b/src/util/model/member.rs index 759aeb9..2e0596f 100644 --- a/src/util/model/member.rs +++ b/src/util/model/member.rs @@ -10,10 +10,10 @@ mod migration; pub struct Member { pub id: String, pub name: Name, - pub hours: BTreeSet, - pub groups: BTreeSet, - pub diploma: Option, - pub registration_token: Option, + // pub hours: BTreeSet, + // pub groups: BTreeSet, + // pub diploma: Option, + // pub registration_token: Option, } #[derive(Debug, Deserialize, Serialize, PartialEq, Eq, Clone)] @@ -32,7 +32,7 @@ pub struct MembersMigration { #[cfg(feature = "server")] impl Member { pub async fn fetch_all() -> Result, surrealdb::Error> { - let mut res = DB.query("SELECT type::string(id) as id, name, hours, groups, diploma, registration_token FROM member").await?; + let mut res = DB.query("SELECT meta::id(id) as id, name.first, name.full, hours, groups, diploma, registration_token FROM member").await?; let members: Vec = res.take(0)?; diff --git a/src/util/model/member/migration.rs b/src/util/model/member/migration.rs index 800246b..e88c099 100644 --- a/src/util/model/member/migration.rs +++ b/src/util/model/member/migration.rs @@ -1,13 +1,16 @@ +use crate::util::surrealdb::DB; + use super::{Member, MembersMigration}; use once_cell::sync::Lazy; use std::collections::{BTreeSet, HashMap}; +use tokio::sync::Mutex; // Create a store for saving information when migrating to a new members list -static MEMBERS_STORE: Lazy = Lazy::new(|| MembersStore::new()); +static MEMBERS_STORE: Lazy> = Lazy::new(|| Mutex::new(MembersStore::new())); struct MembersStore { - store: HashMap>, + store: HashMap, count: u16, } @@ -19,17 +22,17 @@ impl MembersStore { } } - fn insert(&mut self, input: Vec) -> u16 { + fn insert(&mut self, input: MembersMigration) -> u16 { let count = self.count + 1; self.store.insert(count, input); count } - fn get(&self, key: &u16) -> Option<&Vec> { + fn get(&self, key: &u16) -> Option<&MembersMigration> { self.store.get(key) } - fn remove(&mut self, key: &u16) -> Option> { + fn remove(&mut self, key: &u16) -> Option { self.store.remove(key) } } @@ -61,10 +64,10 @@ impl Row { first: self.first_name.clone(), full: self.generate_full_name(), }, - hours: self.generate_hours(), - groups: BTreeSet::new(), - diploma: self.diploma.clone(), - registration_token: None, + // hours: self.generate_hours(), + // groups: BTreeSet::new(), + // diploma: self.diploma.clone(), + // registration_token: None, } } @@ -161,10 +164,10 @@ fn combine_members_lists( updated_members.push(Member { id: current_member.id, name: new_member_clone.name, - hours: new_member_clone.hours, - groups: current_member.groups, - diploma: new_member_clone.diploma, - registration_token: current_member.diploma, + // hours: new_member_clone.hours, + // groups: current_member.groups, + // diploma: new_member_clone.diploma, + // registration_token: current_member.diploma, }) } else { // Remove member @@ -190,14 +193,60 @@ fn combine_members_lists( impl Member { pub async fn migrate_proposal( csv: String, - ) -> Result> { + ) -> Result<(u16, MembersMigration), Box> { let rows = csv_to_rows(csv)?; let new_members = rows_to_members(rows); let current_members = Member::fetch_all().await?; - Ok(combine_members_lists(new_members, current_members)) + let members_migration = combine_members_lists(new_members, current_members); + + let count = MEMBERS_STORE.lock().await.insert(members_migration.clone()); + + Ok((count, members_migration)) + } + + pub async fn migrate(id: u16) -> Result<(), Box> { + let members_store = MEMBERS_STORE.lock().await; + + let members_migration = match members_store.get(&id) { + Some(mm) => mm, + None => return Err("Could not get members from store".into()), + }; + + let mut query = String::from("BEGIN TRANSACTION;"); + + for member in members_migration.updated.clone() { + // TODO add hours and diploma support + query = query + + format!( + "UPDATE member:{} SET name.first = \"{}\", name.full = \"{}\";", + member.id, member.name.first, member.name.full + ) + .as_str(); + } + + for member in members_migration.inserted.clone() { + // TODO add hours and diploma support + query = query + + format!( + "CREATE member:{} SET name.first = \"{}\", name.full = \"{}\";", + member.id, member.name.first, member.name.full + ) + .as_str(); + } + + for member in members_migration.removed.clone() { + // TODO add hours and diploma support + query = query + format!("DELETE member:{};", member.id).as_str(); + } + + query = query + "COMMIT TRANSACTION;"; + + DB.query(query).await?; + + Ok(()) } } @@ -218,14 +267,14 @@ mod tests { first: "First".to_string(), full: "First Last".to_string(), }, - hours: BTreeSet::from([ - "Wedstrijd".to_string(), - "Z5".to_string(), - "Zaterdag".to_string(), - ]), - groups: BTreeSet::new(), - diploma: Some("LS1".to_string()), - registration_token: None, + // hours: BTreeSet::from([ + // "Wedstrijd".to_string(), + // "Z5".to_string(), + // "Zaterdag".to_string(), + // ]), + // groups: BTreeSet::new(), + // diploma: Some("LS1".to_string()), + // registration_token: None, }, Member { id: "D000002".to_string(), @@ -233,10 +282,10 @@ mod tests { first: "First2".to_string(), full: "First2 Last2".to_string(), }, - hours: BTreeSet::from(["Z5".to_string(), "Zaterdag".to_string()]), - groups: BTreeSet::new(), - diploma: Some("ZR4".to_string()), - registration_token: None, + // hours: BTreeSet::from(["Z5".to_string(), "Zaterdag".to_string()]), + // groups: BTreeSet::new(), + // diploma: Some("ZR4".to_string()), + // registration_token: None, }, ];