diff --git a/.cargo/docker-config.toml b/.cargo/docker-config.toml index e055fb1..c37deef 100644 --- a/.cargo/docker-config.toml +++ b/.cargo/docker-config.toml @@ -3,14 +3,5 @@ rustflags = ["--cfg", "uuid_unstable"] rustdocflags = ["--cfg", "uuid_unstable"] [target.x86_64-unknown-linux-gnu] -rustflags = [ - "--cfg", - "uuid_unstable", - "-C", - "link-arg=-fuse-ld=/usr/bin/mold", - "-C", - "target-feature=+crt-static", - "-C", - "target-cpu=x86-64-v3", -] +rustflags = ["--cfg", "uuid_unstable", "-C", "link-arg=-fuse-ld=/usr/bin/mold", "-C", "target-feature=+crt-static", "-C", "target-cpu=x86-64-v3"] linker = "clang" diff --git a/.gitignore b/.gitignore index 0e5f54b..5c57848 100644 --- a/.gitignore +++ b/.gitignore @@ -7,6 +7,7 @@ pkg **/*.rs.bk # node e2e test tools and outputs +.sass-cache node_modules/ test-results/ end2end/playwright-report/ diff --git a/Cargo.lock b/Cargo.lock index fea8902..8c6d3f1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -8,6 +8,21 @@ version = "0.11.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3" +[[package]] +name = "addr2line" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4fa78e18c64fce05e902adecd7a5eed15a5e0a3439f7b0e169f0252214865e3" +dependencies = [ + "gimli", +] + +[[package]] +name = "adler" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" + [[package]] name = "ahash" version = "0.7.6" @@ -32,9 +47,9 @@ dependencies = [ [[package]] name = "aho-corasick" -version = "0.7.20" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc936419f96fa211c1b9166887b38e5e40b19958e5b895be7c1f93adec7071ac" +checksum = "43f6cb1bf222025340178f382c426f13757b2960e89779dfcb319c32542a5a41" dependencies = [ "memchr", ] @@ -45,6 +60,18 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "250f629c0161ad8107cf89319e990051fae62832fd343083bea452d93e2205fd" +[[package]] +name = "allocator-api2" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0942ffc6dcaadf03badf6e6a2d0228460359d5e34b57ccdc720b7382dfbd5ec5" + +[[package]] +name = "android-tzdata" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" + [[package]] name = "android_system_properties" version = "0.1.5" @@ -56,27 +83,29 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.70" +version = "1.0.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7de8ce5e0f9f8d88245311066a578d72b7af3e7088f32783804676302df237e4" +checksum = "3b13c32d80ecc7ab747b80c3784bce54ee8a7a0cc4fbda9bf4cda2cf6fe90854" [[package]] name = "app" version = "0.1.0" dependencies = [ - "base64 0.21.0", + "base64 0.21.2", "broadcaster", "cfg-if 1.0.0", "convert_case 0.6.0", "entity", - "futures 0.3.28", + "futures", "getrandom", "http", "js-sys", "lazy_static", "leptos", + "leptos-use", "leptos_axum", "leptos_dom", + "leptos_icons", "leptos_meta", "leptos_router", "rand", @@ -90,9 +119,9 @@ dependencies = [ [[package]] name = "arrayvec" -version = "0.7.2" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6" +checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "async-attributes" @@ -106,9 +135,9 @@ dependencies = [ [[package]] name = "async-channel" -version = "1.8.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf46fee83e5ccffc220104713af3292ff9bc7c64c7de289f66dae8e38d826833" +checksum = "81953c529336010edd6d8e358f886d9581267795c61b19475b71314bffa46d35" dependencies = [ "concurrent-queue", "event-listener", @@ -117,9 +146,9 @@ dependencies = [ [[package]] name = "async-executor" -version = "1.5.0" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17adb73da160dfb475c183343c8cccd80721ea5a605d3eb57125f0a7b7a92d0b" +checksum = "6fa3dc5f2a8564f07759c008b9109dc0d39de92a88d5588b8a5036d286383afb" dependencies = [ "async-lock", "async-task", @@ -147,22 +176,22 @@ dependencies = [ [[package]] name = "async-io" -version = "1.12.0" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c374dda1ed3e7d8f0d9ba58715f924862c63eae6849c92d3a18e7fbde9e2794" +checksum = "0fc5b45d93ef0529756f812ca52e44c221b35341892d3dcc34132ac02f3dd2af" dependencies = [ "async-lock", "autocfg", + "cfg-if 1.0.0", "concurrent-queue", "futures-lite", - "libc", "log", "parking", "polling", + "rustix", "slab", "socket2", "waker-fn", - "windows-sys 0.42.0", ] [[package]] @@ -182,7 +211,7 @@ checksum = "0e97ce7de6cf12de5d7226c73f5ba9811622f4db3a5b91b55c53e987e5f91cba" dependencies = [ "proc-macro2", "quote", - "syn 2.0.12", + "syn 2.0.26", ] [[package]] @@ -214,9 +243,9 @@ dependencies = [ [[package]] name = "async-stream" -version = "0.3.4" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad445822218ce64be7a341abfb0b1ea43b5c23aa83902542a4542e78309d8e5e" +checksum = "cd56dd203fef61ac097dd65721a419ddccb106b2d2b70ba60a6b529f03961a51" dependencies = [ "async-stream-impl", "futures-core", @@ -225,30 +254,30 @@ dependencies = [ [[package]] name = "async-stream-impl" -version = "0.3.4" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4655ae1a7b0cdf149156f780c5bf3f1352bc53cbd9e0a361a7ef7b22947e965" +checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.26", ] [[package]] name = "async-task" -version = "4.3.0" +version = "4.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a40729d2133846d9ed0ea60a8b9541bccddab49cd30f0715a1da672fe9a2524" +checksum = "ecc7ab41815b3c653ccd2978ec3255c81349336702dfdf62ee6f7069b12a3aae" [[package]] name = "async-trait" -version = "0.1.67" +version = "0.1.71" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86ea188f25f0255d8f92797797c97ebf5631fa88178beb1a46fdf5622c9a00e4" +checksum = "a564d521dd56509c4c47480d00b80ee55f7e385ae48db5744c67ad50c92d2ebf" dependencies = [ "proc-macro2", "quote", - "syn 2.0.12", + "syn 2.0.26", ] [[package]] @@ -262,36 +291,33 @@ dependencies = [ [[package]] name = "atomic" -version = "0.5.1" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b88d82667eca772c4aa12f0f1348b3ae643424c8876448f3f7bd5787032e234c" -dependencies = [ - "autocfg", -] +checksum = "c59bdb34bc650a32731b31bd8f0829cc15d24a708ee31559e0bb34f2bc320cba" [[package]] name = "atomic-waker" -version = "1.1.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "debc29dde2e69f9e47506b525f639ed42300fc014a3e007832592448fa8e4599" +checksum = "1181e1e0d1fce796a03db1ae795d67167da795f9cf4a39c37589e85ef57f26d3" [[package]] name = "attribute-derive" -version = "0.5.0" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e60298dd99585df8fc75d757581178699612e21c42e7d8144f925f46a0fddf5" +checksum = "c124f12ade4e670107b132722d0ad1a5c9790bcbc1b265336369ea05626b4498" dependencies = [ "attribute-derive-macro", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.26", ] [[package]] name = "attribute-derive-macro" -version = "0.5.0" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e19a193c5dc845887a55938582b5371ca98f395f6f8523670bf7f869f4004aae" +checksum = "8b217a07446e0fb086f83401a98297e2d81492122f5874db5391bd270a185f88" dependencies = [ "collection_literals", "interpolator", @@ -300,7 +326,7 @@ dependencies = [ "proc-macro2", "quote", "quote-use", - "syn 1.0.109", + "syn 2.0.26", ] [[package]] @@ -311,15 +337,15 @@ checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" [[package]] name = "axum" -version = "0.6.12" +version = "0.6.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "349f8ccfd9221ee7d1f3d4b33e1f8319b3a81ed8f61f2ea40b37b859794b4491" +checksum = "f8175979259124331c1d7bf6586ee7e0da434155e4b2d48ec2c8386281d8df39" dependencies = [ "async-trait", "axum-core", "axum-macros", - "bitflags", - "bytes 1.4.0", + "bitflags 1.3.2", + "bytes", "futures-util", "http", "http-body", @@ -344,12 +370,12 @@ dependencies = [ [[package]] name = "axum-core" -version = "0.3.3" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2f958c80c248b34b9a877a643811be8dbca03ca5ba827f2b63baf3a81e5fc4e" +checksum = "759fa577a247914fd3f7f76d62972792636412fbfd634cd452f6a385a74d2d2c" dependencies = [ "async-trait", - "bytes 1.4.0", + "bytes", "futures-util", "http", "http-body", @@ -368,7 +394,22 @@ dependencies = [ "heck 0.4.1", "proc-macro2", "quote", - "syn 2.0.12", + "syn 2.0.26", +] + +[[package]] +name = "backtrace" +version = "0.3.68" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4319208da049c43661739c5fade2ba182f09d1dc2299b32298d3a31692b17e12" +dependencies = [ + "addr2line", + "cc", + "cfg-if 1.0.0", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", ] [[package]] @@ -392,15 +433,15 @@ checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" [[package]] name = "base64" -version = "0.21.0" +version = "0.21.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4a4ddaa51a5bc52a6948f74c06d20aaaddb71924eab79b8c97a8c556e942d6a" +checksum = "604178f6c5c21f02dc555784810edfb88d34ac2c73b2eae109655649ee73ce3d" [[package]] name = "bigdecimal" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6aaf33151a6429fe9211d1b276eafdf70cdff28b071e76c0b0e1503221ea3744" +checksum = "a6773ddc0eafc0e509fb60e48dff7f450f8e674a0686ae8605e8d9901bd5eefa" dependencies = [ "num-bigint", "num-integer", @@ -413,6 +454,24 @@ version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" +[[package]] +name = "bitflags" +version = "2.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "630be753d4e58660abd17930c71b647fe46c27ea6b63cc59e1e3851406972e42" + +[[package]] +name = "bitvec" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" +dependencies = [ + "funty", + "radium", + "tap", + "wyz", +] + [[package]] name = "block-buffer" version = "0.10.4" @@ -424,9 +483,9 @@ dependencies = [ [[package]] name = "blocking" -version = "1.3.0" +version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c67b173a56acffd6d2326fb7ab938ba0b00a71480e14902b2591c87bc5741e8" +checksum = "77231a1c8f801696fc0123ec6150ce92cffb8e164a02afb9c8ddee0e9b65ad65" dependencies = [ "async-channel", "async-lock", @@ -434,13 +493,14 @@ dependencies = [ "atomic-waker", "fastrand", "futures-lite", + "log", ] [[package]] name = "borsh" -version = "0.10.2" +version = "0.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40f9ca3698b2e4cb7c15571db0abc5551dca417a21ae8140460b50309bb2cc62" +checksum = "4114279215a005bc675e386011e594e1d9b800918cea18fcadadcce864a2046b" dependencies = [ "borsh-derive", "hashbrown 0.13.2", @@ -448,9 +508,9 @@ dependencies = [ [[package]] name = "borsh-derive" -version = "0.10.2" +version = "0.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "598b3eacc6db9c3ee57b22707ad8f6a8d2f6d442bfe24ffeb8cbb70ca59e6a35" +checksum = "0754613691538d51f329cce9af41d7b7ca150bc973056f1156611489475f54f7" dependencies = [ "borsh-derive-internal", "borsh-schema-derive-internal", @@ -461,9 +521,9 @@ dependencies = [ [[package]] name = "borsh-derive-internal" -version = "0.10.2" +version = "0.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "186b734fa1c9f6743e90c95d7233c9faab6360d1a96d4ffa19d9cfd1e9350f8a" +checksum = "afb438156919598d2c7bad7e1c0adf3d26ed3840dbc010db1a882a65583ca2fb" dependencies = [ "proc-macro2", "quote", @@ -472,9 +532,9 @@ dependencies = [ [[package]] name = "borsh-schema-derive-internal" -version = "0.10.2" +version = "0.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99b7ff1008316626f485991b960ade129253d4034014616b94f309a15366cc49" +checksum = "634205cc43f74a1b9046ef87c4540ebda95696ec0f315024860cad7c5b0f5ccd" dependencies = [ "proc-macro2", "quote", @@ -497,15 +557,15 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.12.0" +version = "3.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d261e256854913907f67ed06efbc3338dfe6179796deefc1ff763fc1aee5535" +checksum = "a3e2c3daef883ecc1b5d58c15adae93470a91d425f3532ba1695849656af3fc1" [[package]] name = "bytecheck" -version = "0.6.10" +version = "0.6.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13fe11640a23eb24562225322cd3e452b93a3d4091d62fab69c70542fcd17d1f" +checksum = "8b6372023ac861f6e6dc89c8344a8f398fb42aaba2b5dbc649ca0c0e9dbcb627" dependencies = [ "bytecheck_derive", "ptr_meta", @@ -514,9 +574,9 @@ dependencies = [ [[package]] name = "bytecheck_derive" -version = "0.6.10" +version = "0.6.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e31225543cb46f81a7e224762764f4a6a0f097b1db0b175f69e8065efaa42de5" +checksum = "a7ec4c6f261935ad534c0c22dbef2201b45918860eb1c574b972bd213a76af61" dependencies = [ "proc-macro2", "quote", @@ -531,25 +591,51 @@ checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" [[package]] name = "bytes" -version = "0.4.12" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be" + +[[package]] +name = "cached" +version = "0.44.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "206fdffcfa2df7cbe15601ef46c813fce0965eb3286db6b56c583b814b51c81c" +checksum = "b195e4fbc4b6862bbd065b991a34750399c119797efff72492f28a5864de8700" dependencies = [ - "byteorder", - "iovec", + "async-trait", + "cached_proc_macro", + "cached_proc_macro_types", + "futures", + "hashbrown 0.13.2", + "instant", + "once_cell", + "thiserror", + "tokio", ] [[package]] -name = "bytes" -version = "1.4.0" +name = "cached_proc_macro" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be" +checksum = "b48814962d2fd604c50d2b9433c2a41a0ab567779ee2c02f7fba6eca1221f082" +dependencies = [ + "cached_proc_macro_types", + "darling 0.14.4", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "cached_proc_macro_types" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a4f925191b4367301851c6d99b09890311d74b0d43f274c0b34c86d308a3663" [[package]] name = "camino" -version = "1.1.4" +version = "1.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c530edf18f37068ac2d977409ed5cd50d53d73bc653c7647b48eb78976ac9ae2" +checksum = "c59e92b5a388f549b863a7bea62612c09f24c8393560709a54558a9abdfb3b9c" [[package]] name = "cc" @@ -571,13 +657,13 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "chrono" -version = "0.4.24" +version = "0.4.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e3c5919066adf22df73762e50cffcde3a758f2a848b113b586d1f86728b673b" +checksum = "ec837a71355b28f6556dbd569b37b3f363091c0bd4b2e735674521b4c5fd9bc5" dependencies = [ + "android-tzdata", "iana-time-zone", "js-sys", - "num-integer", "num-traits", "serde", "time 0.1.45", @@ -587,9 +673,9 @@ dependencies = [ [[package]] name = "ciborium" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0c137568cc60b904a7724001b35ce2630fd00d5d84805fbb608ab89509d788f" +checksum = "effd91f6c78e5a4ace8a5d3c0b6bfaec9e2baaef55f3efc00e45fb2e477ee926" dependencies = [ "ciborium-io", "ciborium-ll", @@ -598,15 +684,15 @@ dependencies = [ [[package]] name = "ciborium-io" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "346de753af073cc87b52b2083a506b38ac176a44cfb05497b622e27be899b369" +checksum = "cdf919175532b369853f5d5e20b26b43112613fd6fe7aee757e35f7a44642656" [[package]] name = "ciborium-ll" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "213030a2b5a4e0c0892b6652260cf6ccac84827b83a85a534e178e3906c4cf1b" +checksum = "defaa24ecc093c77630e6c15e17c51f5e187bf35ee514f4e2d67baaa96dae22b" dependencies = [ "ciborium-io", "half", @@ -614,23 +700,23 @@ dependencies = [ [[package]] name = "clap" -version = "3.2.23" +version = "3.2.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71655c45cb9845d3270c9d6df84ebe72b4dad3c2ba3f7023ad47c144e4e473a5" +checksum = "4ea181bf566f71cb9a5d17a59e1871af638180a18fb0035c92ae62b705207123" dependencies = [ - "bitflags", + "bitflags 1.3.2", "clap_derive", "clap_lex", - "indexmap", + "indexmap 1.9.3", "once_cell", "textwrap", ] [[package]] name = "clap_derive" -version = "3.2.18" +version = "3.2.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea0c8bce528c4be4da13ea6fead8965e95b6073585a2f05204bd8f4119f82a65" +checksum = "ae6371b8bdc8b7d3959e9cf7b22d4435ef3e79e138688421ec654acf8c81b008" dependencies = [ "heck 0.4.1", "proc-macro-error", @@ -654,17 +740,7 @@ version = "0.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f" dependencies = [ - "bitflags", -] - -[[package]] -name = "codespan-reporting" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6e" -dependencies = [ - "termcolor", - "unicode-width", + "bitflags 1.3.2", ] [[package]] @@ -681,9 +757,9 @@ checksum = "f3f6d59c71e7dc3af60f0af9db32364d96a16e9310f3f5db2b55ed642162dd35" [[package]] name = "concurrent-queue" -version = "2.1.0" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c278839b831783b70278b14df4d45e1beb1aad306c07bb796637de9a0e323e8e" +checksum = "62ec6771ecfa0762d24683ee5a32ad78487a3d3afdc0fb8cae19d2c5deb50b7c" dependencies = [ "crossbeam-utils", ] @@ -703,7 +779,7 @@ dependencies = [ "rust-ini", "serde", "serde_json", - "toml", + "toml 0.5.11", "yaml-rust", ] @@ -729,18 +805,18 @@ dependencies = [ [[package]] name = "const_format" -version = "0.2.30" +version = "0.2.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7309d9b4d3d2c0641e018d449232f2e28f1b22933c137f157d3dbc14228b8c0e" +checksum = "c990efc7a285731f9a4378d81aff2f0e85a2c8781a05ef0f8baa8dac54d0ff48" dependencies = [ "const_format_proc_macros", ] [[package]] name = "const_format_proc_macros" -version = "0.2.29" +version = "0.2.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d897f47bf7270cf70d370f8f98c1abb6d2d4cf60a6845d30e05bfb90c6568650" +checksum = "e026b6ce194a874cb9cf32cd5772d1ef9767cc8fcb5765948d74f37a9d8b2bf6" dependencies = [ "proc-macro2", "quote", @@ -762,27 +838,17 @@ dependencies = [ "unicode-segmentation", ] -[[package]] -name = "core-foundation" -version = "0.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146" -dependencies = [ - "core-foundation-sys", - "libc", -] - [[package]] name = "core-foundation-sys" -version = "0.8.3" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5827cebf4670468b8772dd191856768aedcb1b0278a04f989f7766351917b9dc" +checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" [[package]] name = "cpufeatures" -version = "0.2.5" +version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28d997bd5e24a5928dd43e46dc529867e207907fe0b239c3477d924f7f2ca320" +checksum = "a17b76ff3a4162b0b27f354a0c87015ddad39d35f9c0c36607a3bdd175dde1f1" dependencies = [ "libc", ] @@ -799,9 +865,9 @@ dependencies = [ [[package]] name = "crossbeam-utils" -version = "0.8.15" +version = "0.8.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c063cd8cc95f5c377ed0d4b49a4b21f632396ff690e8470c29b3359b346984b" +checksum = "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294" dependencies = [ "cfg-if 1.0.0", ] @@ -817,68 +883,96 @@ dependencies = [ ] [[package]] -name = "ctor" -version = "0.1.26" +name = "darling" +version = "0.14.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d2301688392eb071b0bf1a37be05c469d3cc4dbbd95df672fe28ab021e6a096" +checksum = "7b750cb3417fd1b327431a470f388520309479ab0bf5e323505daf0290cd3850" dependencies = [ + "darling_core 0.14.4", + "darling_macro 0.14.4", +] + +[[package]] +name = "darling" +version = "0.20.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0209d94da627ab5605dcccf08bb18afa5009cfbef48d8a8b7d7bdbc79be25c5e" +dependencies = [ + "darling_core 0.20.3", + "darling_macro 0.20.3", +] + +[[package]] +name = "darling_core" +version = "0.14.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "109c1ca6e6b7f82cc233a97004ea8ed7ca123a9af07a8230878fcfda9b158bf0" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", "quote", + "strsim", "syn 1.0.109", ] [[package]] -name = "cxx" -version = "1.0.93" +name = "darling_core" +version = "0.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9c00419335c41018365ddf7e4d5f1c12ee3659ddcf3e01974650ba1de73d038" +checksum = "177e3443818124b357d8e76f53be906d60937f0d3a90773a664fa63fa253e621" dependencies = [ - "cc", - "cxxbridge-flags", - "cxxbridge-macro", - "link-cplusplus", + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn 2.0.26", ] [[package]] -name = "cxx-build" -version = "1.0.93" +name = "darling_macro" +version = "0.14.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb8307ad413a98fff033c8545ecf133e3257747b3bae935e7602aab8aa92d4ca" +checksum = "a4aab4dbc9f7611d8b55048a3a16d2d010c2c8334e46304b40ac1cc14bf3b48e" dependencies = [ - "cc", - "codespan-reporting", - "once_cell", - "proc-macro2", + "darling_core 0.14.4", "quote", - "scratch", - "syn 2.0.12", + "syn 1.0.109", ] [[package]] -name = "cxxbridge-flags" -version = "1.0.93" +name = "darling_macro" +version = "0.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edc52e2eb08915cb12596d29d55f0b5384f00d697a646dbd269b6ecb0fbd9d31" +checksum = "836a9bbc7ad63342d6d6e7b815ccab164bc77a2d95d84bc3117a8c0d5c98e2d5" +dependencies = [ + "darling_core 0.20.3", + "quote", + "syn 2.0.26", +] [[package]] -name = "cxxbridge-macro" -version = "1.0.93" +name = "default-struct-builder" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "631569015d0d8d54e6c241733f944042623ab6df7bc3be7466874b05fcdb1c5f" +checksum = "4d935de49bbc61cf2487127ec53de614d7aabe0e5932cb6b1880f386976e9b4a" dependencies = [ + "darling 0.20.3", "proc-macro2", "quote", - "syn 2.0.12", + "syn 2.0.26", ] [[package]] name = "derive-where" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b3d434edc6a4e8326087d0954b71fa7d7cc6752802b51127e0ca69b7c90b3f5" +checksum = "5bc1955a640c4464859ae700fbe48e666da6fdce99ce5fe1acd08dd295889d10" dependencies = [ "proc-macro2", "quote", - "syn 2.0.12", + "syn 2.0.26", ] [[package]] @@ -896,9 +990,9 @@ dependencies = [ [[package]] name = "digest" -version = "0.10.6" +version = "0.10.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8168378f4e5023e7218c89c891c0fd8ecdb5e5e4f18cb78f38cf245dd021e76f" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" dependencies = [ "block-buffer", "crypto-common", @@ -912,9 +1006,9 @@ checksum = "0688c2a7f92e427f44895cd63841bff7b29f8d7a1648b9e7e07a4a365b2e1257" [[package]] name = "dotenvy" -version = "0.15.6" +version = "0.15.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03d8c417d7a8cb362e0c37e5d815f5eb7c37f79ff93707329d5a194e42e54ca0" +checksum = "1aaf95b3e5c8f23aa320147307562d361db0ae0d51242340f558153b4eb2439b" [[package]] name = "drain_filter_polyfill" @@ -924,9 +1018,9 @@ checksum = "669a445ee724c5c69b1b06fe0b63e70a1c84bc9bb7d9696cd4f4e3ec45050408" [[package]] name = "educe" -version = "0.4.20" +version = "0.4.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb0188e3c3ba8df5753894d54461f0e39bc91741dc5b22e1c46999ec2c71f4e4" +checksum = "079044df30bb07de7d846d41a184c4b00e66ebdac93ee459253474f3a47e50ae" dependencies = [ "enum-ordinalize", "proc-macro2", @@ -967,27 +1061,32 @@ dependencies = [ [[package]] name = "enum-ordinalize" -version = "3.1.12" +version = "3.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a62bb1df8b45ecb7ffa78dca1c17a438fb193eb083db0b1b494d2a61bcb5096a" +checksum = "e4f76552f53cefc9a7f64987c3701b99d982f7690606fd67de1d09712fbf52f1" dependencies = [ "num-bigint", "num-traits", "proc-macro2", "quote", - "rustc_version", - "syn 1.0.109", + "syn 2.0.26", ] +[[package]] +name = "equivalent" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" + [[package]] name = "errno" -version = "0.2.8" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f639046355ee4f37944e44f60642c6f3a7efa3cf6b78c78a0d989a8ce6c396a1" +checksum = "4bcfec3a70f97c962c307b2d2c56e358cf1d00b558d74262b5f929ee8cc7e73a" dependencies = [ "errno-dragonfly", "libc", - "winapi", + "windows-sys", ] [[package]] @@ -1017,16 +1116,16 @@ dependencies = [ [[package]] name = "figment" -version = "0.10.8" +version = "0.10.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e56602b469b2201400dec66a66aec5a9b8761ee97cd1b8c96ab2483fcc16cc9" +checksum = "4547e226f4c9ab860571e070a9034192b3175580ecea38da34fcdb53a018c9a5" dependencies = [ "atomic", "pear", "serde", "serde_json", "serde_yaml", - "toml", + "toml 0.7.6", "uncased", "version_check", ] @@ -1049,46 +1148,20 @@ version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" -[[package]] -name = "foreign-types" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" -dependencies = [ - "foreign-types-shared", -] - -[[package]] -name = "foreign-types-shared" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" - [[package]] name = "form_urlencoded" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9c384f161156f5260c24a097c56119f9be8c798586aecc13afbcbe7b7e26bf8" +checksum = "a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652" dependencies = [ "percent-encoding", ] [[package]] -name = "fs" -version = "0.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e94befb4c82414e638647f3f6fe8f908c39a7f2f40d556d318adb803ef263154" -dependencies = [ - "bytes 0.4.12", - "futures 0.1.31", - "futures-cpupool", -] - -[[package]] -name = "futures" -version = "0.1.31" +name = "funty" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a471a38ef8ed83cd6e40aa59c1ffe17db6855c18e3604d9c4ed8c08ebc28678" +checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" [[package]] name = "futures" @@ -1121,16 +1194,6 @@ version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4bca583b7e26f571124fe5b7561d49cb2868d79116cfa0eefce955557c6fee8c" -[[package]] -name = "futures-cpupool" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab90cde24b3319636588d0c35fe03b1333857621051837ed769faefb4c2162e4" -dependencies = [ - "futures 0.1.31", - "num_cpus", -] - [[package]] name = "futures-executor" version = "0.3.28" @@ -1149,7 +1212,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a604f7a68fbf8103337523b1fadc8ade7361ee3f112f7c680ad179651616aed5" dependencies = [ "futures-core", - "lock_api 0.4.9", + "lock_api 0.4.10", "parking_lot 0.11.2", ] @@ -1161,9 +1224,9 @@ checksum = "4fff74096e71ed47f8e023204cfd0aa1289cd54ae5430a9523be060cdb849964" [[package]] name = "futures-lite" -version = "1.12.0" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7694489acd39452c77daa48516b894c153f192c3578d5a839b62c58099fcbf48" +checksum = "49a9d51ce47660b1e808d3c990b4709f2f415d928835a17dfd16991515c46bce" dependencies = [ "fastrand", "futures-core", @@ -1182,7 +1245,7 @@ checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72" dependencies = [ "proc-macro2", "quote", - "syn 2.0.12", + "syn 2.0.26", ] [[package]] @@ -1217,9 +1280,9 @@ dependencies = [ [[package]] name = "generic-array" -version = "0.14.6" +version = "0.14.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bff49e947297f3312447abdca79f45f4738097cc82b06e72054d2223f601f1b9" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" dependencies = [ "typenum", "version_check", @@ -1227,9 +1290,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.9" +version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c85e1d9ab2eadba7e5040d4e09cbd6d072b76a557ad64e797c2cb9d4da21d7e4" +checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427" dependencies = [ "cfg-if 1.0.0", "js-sys", @@ -1238,6 +1301,12 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "gimli" +version = "0.27.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c80984affa11d98d1b88b66ac8853f143217b399d3c74116778ff8fdb4ed2e" + [[package]] name = "gloo-net" version = "0.2.6" @@ -1272,9 +1341,9 @@ dependencies = [ [[package]] name = "gloo-utils" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8e8fc851e9c7b9852508bc6e3f690f452f474417e8545ec9857b7f7377036b5" +checksum = "037fcb07216cb3a30f7292bd0176b050b7b9a052ba830ef7d5d65f6dc64ba58e" dependencies = [ "js-sys", "serde", @@ -1285,17 +1354,17 @@ dependencies = [ [[package]] name = "h2" -version = "0.3.16" +version = "0.3.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5be7b54589b581f624f566bf5d8eb2bab1db736c51528720b6bd36b96b55924d" +checksum = "97ec8491ebaf99c8eaa73058b045fe58073cd6be7f596ac993ced0b0a0c01049" dependencies = [ - "bytes 1.4.0", + "bytes", "fnv", "futures-core", "futures-sink", "futures-util", "http", - "indexmap", + "indexmap 1.9.3", "slab", "tokio", "tokio-util", @@ -1326,13 +1395,23 @@ dependencies = [ "ahash 0.8.3", ] +[[package]] +name = "hashbrown" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c6201b9ff9fd90a5a3bac2e56a830d0caa509576f0e503818ee82c181b3437a" +dependencies = [ + "ahash 0.8.3", + "allocator-api2", +] + [[package]] name = "hashlink" -version = "0.8.1" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69fe1fcf8b4278d860ad0548329f892a3631fb63f82574df68275f34cdbe0ffa" +checksum = "312f66718a2d7789ffef4f4b7b213138ed9f1eb3aa1d0d82fc99f88fb3ffd26f" dependencies = [ - "hashbrown 0.12.3", + "hashbrown 0.14.0", ] [[package]] @@ -1355,18 +1434,9 @@ dependencies = [ [[package]] name = "hermit-abi" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7" -dependencies = [ - "libc", -] - -[[package]] -name = "hermit-abi" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fed44880c466736ef9a5c5b5facefb5ed0785676d0c02d612db14e54f0d84286" +checksum = "443144c8cdadd93ebf52ddb4056d257f5b52c04d3c804e657d19eb73fc33668b" [[package]] name = "hex" @@ -1389,7 +1459,7 @@ version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bd6effc99afb63425aff9b05836f029929e345a6148a14b7ecd5ab67af944482" dependencies = [ - "bytes 1.4.0", + "bytes", "fnv", "itoa", ] @@ -1400,7 +1470,7 @@ version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1" dependencies = [ - "bytes 1.4.0", + "bytes", "http", "pin-project-lite", ] @@ -1425,11 +1495,11 @@ checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421" [[package]] name = "hyper" -version = "0.14.25" +version = "0.14.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc5e554ff619822309ffd57d8734d77cd5ce6238bc956f037ea06c58238c9899" +checksum = "ffb1cfd654a8219eaef89881fdb3bb3b1cdc5fa75ded05d6933b2b382e395468" dependencies = [ - "bytes 1.4.0", + "bytes", "futures-channel", "futures-core", "futures-util", @@ -1447,48 +1517,82 @@ dependencies = [ "want", ] -[[package]] -name = "hyper-tls" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" -dependencies = [ - "bytes 1.4.0", - "hyper", - "native-tls", - "tokio", - "tokio-native-tls", -] - [[package]] name = "iana-time-zone" -version = "0.1.53" +version = "0.1.57" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64c122667b287044802d6ce17ee2ddf13207ed924c712de9a66a5814d5b64765" +checksum = "2fad5b825842d2b38bd206f3e81d6957625fd7f0a361e345c30e01a0ae2dd613" dependencies = [ "android_system_properties", "core-foundation-sys", "iana-time-zone-haiku", "js-sys", "wasm-bindgen", - "winapi", + "windows", ] [[package]] name = "iana-time-zone-haiku" -version = "0.1.1" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + +[[package]] +name = "icondata" +version = "0.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ffb16cf8cbf74c05967c0c12b492a10ad23d3511abdc77bc43c142004e3d435" +dependencies = [ + "icondata_core", + "icondata_io", + "icondata_macros", + "icondata_oc", +] + +[[package]] +name = "icondata_core" +version = "0.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1640a4c1d5ddd08ab1d9854ffa7a2fa3dc52339492676b6d3031e77ca579f434" + +[[package]] +name = "icondata_io" +version = "0.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0703ae284fc167426161c2e3f1da3ea71d94b21bedbcc9494e92b28e334e3dca" +checksum = "1f82ea2cc4dc981729000c35e6ee141de3caef699b56e892a500f0c2689d76c7" dependencies = [ - "cxx", - "cxx-build", + "icondata_core", ] +[[package]] +name = "icondata_macros" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "764e3608a0f21fa9f43f9d9237c524a9e10316d97d89b413a9c45e5dddb9b162" + +[[package]] +name = "icondata_oc" +version = "0.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b406fa5eefaa6ec3fc0c97c6a59d0b019116d5f036215ed1a43d39ddce92854" +dependencies = [ + "icondata_core", +] + +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + [[package]] name = "idna" -version = "0.3.0" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e14ddfc70884202db2244c223200c204c2bda1bc6e0998d11b5e024d657209e6" +checksum = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c" dependencies = [ "unicode-bidi", "unicode-normalization", @@ -1496,14 +1600,24 @@ dependencies = [ [[package]] name = "indexmap" -version = "1.9.2" +version = "1.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1885e79c1fc4b10f0e172c475f458b7f7b93061064d98c3293e98c5ba0c8b399" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" dependencies = [ "autocfg", "hashbrown 0.12.3", ] +[[package]] +name = "indexmap" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5477fe2230a79769d8dc68e0eabf5437907c0457a5614a9e8dddb67f65eb65d" +dependencies = [ + "equivalent", + "hashbrown 0.14.0", +] + [[package]] name = "inlinable_string" version = "0.1.15" @@ -1521,35 +1635,32 @@ dependencies = [ [[package]] name = "interpolator" -version = "0.4.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1482d8bbb520daf94c82af87f38cd27cdb3073c6fee7c5805fd2fa9d3a36d494" +checksum = "71dd52191aae121e8611f1e8dc3e324dd0dd1dee1e6dd91d10ee07a3cfb4d9d8" [[package]] -name = "io-lifetimes" -version = "1.0.9" +name = "inventory" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09270fd4fa1111bc614ed2246c7ef56239a3063d5be0d1ec3b589c505d400aeb" -dependencies = [ - "hermit-abi 0.3.1", - "libc", - "windows-sys 0.45.0", -] +checksum = "25b1d6b4b9fb75fc419bdef998b689df5080a32931cb3395b86202046b56a9ea" [[package]] -name = "iovec" -version = "0.1.4" +name = "io-lifetimes" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2b3ea6ff95e175473f8ffe6a7eb7c00d054240321b84c57051175fe3c1e075e" +checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2" dependencies = [ + "hermit-abi", "libc", + "windows-sys", ] [[package]] name = "ipnet" -version = "2.7.1" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30e22bd8629359895450b59ea7a776c850561b96a3b1d31321c1949d9e6c9146" +checksum = "28b29a3cd74f0f4598934efe3aeba42bae0eb4680554128851ebbecb02af14e6" [[package]] name = "itertools" @@ -1562,15 +1673,15 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.6" +version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6" +checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" [[package]] name = "js-sys" -version = "0.3.61" +version = "0.3.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "445dde2150c55e483f3d8416706b97ec8e8237c307e5b7b4b8dd15e6af2a0730" +checksum = "c5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935a" dependencies = [ "wasm-bindgen", ] @@ -1603,9 +1714,9 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "leptos" -version = "0.2.5" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a186fecd73b710a0405f81e84044c2a301198d0cf0e752a0d99df12c55eea1b" +checksum = "138e81779863e63854fb45982bbb357de84deb5bd0aeb4a295f891b4bb096422" dependencies = [ "cfg-if 1.0.0", "leptos_config", @@ -1618,32 +1729,53 @@ dependencies = [ "typed-builder", ] +[[package]] +name = "leptos-use" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8409590a2f14a16adeb2898ed26e4acea51dd05aff03db1dfb5adb39b7711135" +dependencies = [ + "cfg-if 1.0.0", + "default-struct-builder", + "js-sys", + "lazy_static", + "leptos", + "paste", + "serde", + "serde_json", + "wasm-bindgen", + "web-sys", +] + [[package]] name = "leptos_axum" -version = "0.2.5" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89b8157a5d2cfa3f958d82a0a1fe242feb13923c6c9cac7e9ef7107f248c7968" +checksum = "577a13d941b8e6f8bf8ed134b11c5e1f2d7f58bfca4ce4b22db3e7b09deac84f" dependencies = [ "axum", - "futures 0.3.28", + "futures", "http", "hyper", "leptos", "leptos_integration_utils", "leptos_meta", "leptos_router", + "once_cell", "parking_lot 0.12.1", + "serde_json", "tokio", + "tokio-util", + "tracing", ] [[package]] name = "leptos_config" -version = "0.2.5" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e83666404adc371296d54dcc5f36ea2a11dd865f6409596e8ecbadc287dae75b" +checksum = "dedd46acf2b56044276a90d67969a0ceea56c80231636467211099eb081328b8" dependencies = [ "config", - "fs", "regex", "serde", "thiserror", @@ -1652,17 +1784,17 @@ dependencies = [ [[package]] name = "leptos_dom" -version = "0.2.5" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e41f33273f55552aa52a776b0f14a72a466c40b23d47d6fe251b05cc6bfe9c3" +checksum = "30e5e60af9ed1763368fcf49d0d7a0ef34ec36e365534c4eab5d4cf3e8e6adb8" dependencies = [ "async-recursion", "cfg-if 1.0.0", "drain_filter_polyfill", "educe", - "futures 0.3.28", + "futures", "html-escape", - "indexmap", + "indexmap 1.9.3", "itertools", "js-sys", "leptos_reactive", @@ -1671,6 +1803,7 @@ dependencies = [ "paste", "rustc-hash", "serde_json", + "server_fn", "smallvec", "tracing", "wasm-bindgen", @@ -1680,40 +1813,52 @@ dependencies = [ [[package]] name = "leptos_hot_reload" -version = "0.2.5" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d85b0935d1439780ddabc4809dd2ae93a1825e9d05b95c9812942b3fc858ff9e" +checksum = "24375596c72ae14f8adb606ed8b2ee504aa6ebee44babda9ed1c2e94649fe4f4" dependencies = [ "anyhow", "camino", - "indexmap", + "indexmap 2.0.0", "parking_lot 0.12.1", "proc-macro2", "quote", + "rstml", "serde", - "syn 1.0.109", - "syn-rsx", + "syn 2.0.26", "walkdir", ] +[[package]] +name = "leptos_icons" +version = "0.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c4cbfd152ac2449509618939d69b4ee5ea4e1b8697ca57c447021a9d84632e2" +dependencies = [ + "icondata", + "leptos", + "tracing", +] + [[package]] name = "leptos_integration_utils" -version = "0.2.5" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c70d0be0904954bf4e3a38a348845825800f8844c3990fd47463a95e3977e1e4" +checksum = "4096cfebc02af458d85747b564b48b7d42216a5db60ce19df22f26a9231acc75" dependencies = [ - "futures 0.3.28", + "futures", "leptos", "leptos_config", "leptos_hot_reload", "leptos_meta", + "tracing", ] [[package]] name = "leptos_macro" -version = "0.2.5" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10d6349980934cc3b58b24d28e5c9a1e18108dd0aadef149d0615e1833d4dcd0" +checksum = "107cff74abffce014426baff18d14a151d86a894c88ab7a50f000ed86c59a6cd" dependencies = [ "attribute-derive", "cfg-if 1.0.0", @@ -1725,19 +1870,21 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", + "rstml", "server_fn_macro", - "syn 1.0.109", - "syn-rsx", + "syn 2.0.26", + "tracing", "uuid", ] [[package]] name = "leptos_meta" -version = "0.2.5" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "950533f057299e75f48471211dc9b46e0d00c640fd14bda92c34e2705add7b8d" +checksum = "7ba9e44975fa7aecf630d6b604a6e51b32da6def36a2b502dcfa386152b3eff2" dependencies = [ "cfg-if 1.0.0", + "indexmap 1.9.3", "leptos", "tracing", "wasm-bindgen", @@ -1746,16 +1893,17 @@ dependencies = [ [[package]] name = "leptos_reactive" -version = "0.2.5" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22e702730c3ac1f8a619bf2b139e650b792c96c66f2285a88a1c92c1a53ed262" +checksum = "8c02851b21bcadee7a2f1182aa3dbbfc4065a71e0fe5a036196bcc95ab3c4d2d" dependencies = [ - "base64 0.21.0", + "base64 0.21.2", "cfg-if 1.0.0", - "futures 0.3.28", - "indexmap", + "futures", + "indexmap 2.0.0", "js-sys", "rustc-hash", + "self_cell", "serde", "serde-wasm-bindgen", "serde_json", @@ -1770,10 +1918,11 @@ dependencies = [ [[package]] name = "leptos_router" -version = "0.2.5" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "214fca795824160eac59a0168607f3ff14ab09390a62938ee26e7ef077f27536" +checksum = "61b5d6f6dcc342137e9f93d46096676e9061aa22ea97708284b17ccb9317a52b" dependencies = [ + "cached", "cfg-if 1.0.0", "common_macros", "gloo-net", @@ -1782,10 +1931,12 @@ dependencies = [ "leptos", "linear-map", "log", + "lru", "percent-encoding", "regex", "serde", - "serde_urlencoded", + "serde_json", + "serde_qs", "thiserror", "tracing", "url", @@ -1796,22 +1947,24 @@ dependencies = [ [[package]] name = "leptos_server" -version = "0.2.5" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ba9c15e2e49ac38980446d199cd1a672cba9363c71aa9d565605cb77e1ca3e5" +checksum = "49bb8d9764ae441d31cd9a79cd4cabeb685ef02d821c8139d397452bf1eecdd2" dependencies = [ + "inventory", "lazy_static", "leptos_reactive", "serde", "server_fn", "thiserror", + "tracing", ] [[package]] name = "libc" -version = "0.2.140" +version = "0.2.147" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99227334921fae1a979cf0bfdfcc6b3e5ce376ef57e16fb6fb3ea2ed6095f80c" +checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3" [[package]] name = "libsqlite3-sys" @@ -1829,14 +1982,9 @@ name = "linear-map" version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bfae20f6b19ad527b550c223fddc3077a547fc70cda94b9b566575423fd303ee" - -[[package]] -name = "link-cplusplus" -version = "1.0.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ecd207c9c713c34f95a097a5b029ac2ce6010530c7b49d7fea24d977dede04f5" dependencies = [ - "cc", + "serde", + "serde_test", ] [[package]] @@ -1847,9 +1995,9 @@ checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" [[package]] name = "linux-raw-sys" -version = "0.1.4" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f051f77a7c8e6957c0696eac88f26b0117e54f52d3fc682ab19397a8812846a4" +checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519" [[package]] name = "lock_api" @@ -1862,9 +2010,9 @@ dependencies = [ [[package]] name = "lock_api" -version = "0.4.9" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "435011366fe56583b16cf956f9df0095b405b82d76425bc8981c0e22e60ec4df" +checksum = "c1cc9717a20b1bb222f333e6a92fd32f7d8a18ddc5a3191a11af45dcbf4dcd16" dependencies = [ "autocfg", "scopeguard", @@ -1872,21 +2020,29 @@ dependencies = [ [[package]] name = "log" -version = "0.4.17" +version = "0.4.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" +checksum = "b06a4cde4c0f271a446782e3eff8de789548ce57dbc8eca9292c27f4a42004b4" dependencies = [ - "cfg-if 1.0.0", "value-bag", ] +[[package]] +name = "lru" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "718e8fae447df0c7e1ba7f5189829e63fd536945c8988d61444c19039f16b670" +dependencies = [ + "hashbrown 0.13.2", +] + [[package]] name = "matchers" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" dependencies = [ - "regex-automata", + "regex-automata 0.1.10", ] [[package]] @@ -1933,33 +2089,23 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] -name = "mio" -version = "0.8.6" +name = "miniz_oxide" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b9d9a46eff5b4ff64b45a9e316a6d1e0bc719ef429cbec4dc630684212bfdf9" +checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" dependencies = [ - "libc", - "log", - "wasi 0.11.0+wasi-snapshot-preview1", - "windows-sys 0.45.0", + "adler", ] [[package]] -name = "native-tls" -version = "0.2.11" +name = "mio" +version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07226173c32f2926027b63cce4bcd8076c3552846cbe7925f3aaffeac0a3b92e" +checksum = "927a765cd3fc26206e66b296465fa9d3e5ab003e651c1b3c060e7956d96b19d2" dependencies = [ - "lazy_static", "libc", - "log", - "openssl", - "openssl-probe", - "openssl-sys", - "schannel", - "security-framework", - "security-framework-sys", - "tempfile", + "wasi 0.11.0+wasi-snapshot-preview1", + "windows-sys", ] [[package]] @@ -2013,65 +2159,29 @@ dependencies = [ ] [[package]] -name = "num_cpus" -version = "1.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b" -dependencies = [ - "hermit-abi 0.2.6", - "libc", -] - -[[package]] -name = "once_cell" -version = "1.17.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3" - -[[package]] -name = "openssl" -version = "0.10.47" +name = "num_cpus" +version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8b277f87dacc05a6b709965d1cbafac4649d6ce9f3ce9ceb88508b5666dfec9" +checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" dependencies = [ - "bitflags", - "cfg-if 1.0.0", - "foreign-types", + "hermit-abi", "libc", - "once_cell", - "openssl-macros", - "openssl-sys", ] [[package]] -name = "openssl-macros" -version = "0.1.0" +name = "object" +version = "0.31.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b501e44f11665960c7e7fcf062c7d96a14ade4aa98116c004b2e37b5be7d736c" +checksum = "8bda667d9f2b5051b8833f59f3bf748b28ef54f850f4fcb389a252aa383866d1" dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", + "memchr", ] [[package]] -name = "openssl-probe" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" - -[[package]] -name = "openssl-sys" -version = "0.9.82" +name = "once_cell" +version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a95792af3c4e0153c3914df2261bedd30a98476f94dc892b67dfe1d89d433a04" -dependencies = [ - "autocfg", - "cc", - "libc", - "pkg-config", - "vcpkg", -] +checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" [[package]] name = "ordered-multimap" @@ -2085,9 +2195,9 @@ dependencies = [ [[package]] name = "os_str_bytes" -version = "6.5.0" +version = "6.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ceedf44fb00f2d1984b0bc98102627ce622e083e49a5bacdb3e514fa4238e267" +checksum = "4d5d9eb14b174ee9aa2ef96dc2b94637a2d4b6e7cb873c7e171f0c20c6cf3eac" [[package]] name = "ouroboros" @@ -2126,9 +2236,9 @@ checksum = "56d80efc4b6721e8be2a10a5df21a30fa0b470f1539e53d8b4e6e75faf938b63" [[package]] name = "parking" -version = "2.0.0" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "427c3892f9e783d91cc128285287e70a59e206ca452770ece88a76f7a3eddd72" +checksum = "14f2252c834a40ed9bb5422029649578e63aa341ac401f74e719dd1afda8394e" [[package]] name = "parking_lot" @@ -2147,7 +2257,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99" dependencies = [ "instant", - "lock_api 0.4.9", + "lock_api 0.4.10", "parking_lot_core 0.8.6", ] @@ -2157,8 +2267,8 @@ version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" dependencies = [ - "lock_api 0.4.9", - "parking_lot_core 0.9.7", + "lock_api 0.4.10", + "parking_lot_core 0.9.8", ] [[package]] @@ -2191,22 +2301,22 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.7" +version = "0.9.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9069cbb9f99e3a5083476ccb29ceb1de18b9118cafa53e90c9551235de2b9521" +checksum = "93f00c865fe7cabf650081affecd3871070f26767e7b2070a3ffae14c654b447" dependencies = [ "cfg-if 1.0.0", "libc", - "redox_syscall 0.2.16", + "redox_syscall 0.3.5", "smallvec", - "windows-sys 0.45.0", + "windows-targets", ] [[package]] name = "paste" -version = "1.0.12" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f746c4065a8fa3fe23974dd82f15431cc8d40779821001404d10d2e79ca7d79" +checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c" [[package]] name = "pathdiff" @@ -2216,9 +2326,9 @@ checksum = "8835116a5c179084a830efb3adc117ab007512b535bc1a21c991d3b32a6b44dd" [[package]] name = "pear" -version = "0.2.3" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15e44241c5e4c868e3eaa78b7c1848cadd6344ed4f54d029832d32b415a58702" +checksum = "61a386cd715229d399604b50d1361683fe687066f42d56f54be995bc6868f71c" dependencies = [ "inlinable_string", "pear_codegen", @@ -2227,27 +2337,27 @@ dependencies = [ [[package]] name = "pear_codegen" -version = "0.2.3" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82a5ca643c2303ecb740d506539deba189e16f2754040a42901cd8105d0282d0" +checksum = "da9f0f13dac8069c139e8300a6510e3f4143ecf5259c60b116a9b271b4ca0d54" dependencies = [ "proc-macro2", "proc-macro2-diagnostics", "quote", - "syn 1.0.109", + "syn 2.0.26", ] [[package]] name = "percent-encoding" -version = "2.2.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e" +checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94" [[package]] name = "pest" -version = "2.5.6" +version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8cbd939b234e95d72bc393d51788aec68aeeb5d51e748ca08ff3aad58cb722f7" +checksum = "f73935e4d55e2abf7f130186537b19e7a4abc886a0252380b59248af473a3fc9" dependencies = [ "thiserror", "ucd-trie", @@ -2255,9 +2365,9 @@ dependencies = [ [[package]] name = "pest_derive" -version = "2.5.6" +version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a81186863f3d0a27340815be8f2078dd8050b14cd71913db9fbda795e5f707d7" +checksum = "aef623c9bbfa0eedf5a0efba11a5ee83209c326653ca31ff019bec3a95bfff2b" dependencies = [ "pest", "pest_generator", @@ -2265,22 +2375,22 @@ dependencies = [ [[package]] name = "pest_generator" -version = "2.5.6" +version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75a1ef20bf3193c15ac345acb32e26b3dc3223aff4d77ae4fc5359567683796b" +checksum = "b3e8cba4ec22bada7fc55ffe51e2deb6a0e0db2d0b7ab0b103acc80d2510c190" dependencies = [ "pest", "pest_meta", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.26", ] [[package]] name = "pest_meta" -version = "2.5.6" +version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e3b284b1f13a20dc5ebc90aff59a51b8d7137c221131b52a7260c08cbc1cc80" +checksum = "a01f71cb40bd8bb94232df14b946909e14660e33fc05db3e50ae2a82d7ea0ca0" dependencies = [ "once_cell", "pest", @@ -2289,29 +2399,29 @@ dependencies = [ [[package]] name = "pin-project" -version = "1.0.12" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad29a609b6bcd67fee905812e544992d216af9d755757c05ed2d0e15a74c6ecc" +checksum = "030ad2bc4db10a8944cb0d837f158bdfec4d4a4873ab701a95046770d11f8842" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.0.12" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "069bdb1e05adc7a8990dce9cc75370895fbe4e3d58b9b73bf1aee56359344a55" +checksum = "ec2e072ecce94ec471b13398d5402c188e76ac03cf74dd1a975161b23a3f6d9c" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.26", ] [[package]] name = "pin-project-lite" -version = "0.2.9" +version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116" +checksum = "4c40d25201921e5ff0c862a505c6557ea88568a4e3ace775ab55e93f2f4f9d57" [[package]] name = "pin-utils" @@ -2321,24 +2431,24 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] name = "pkg-config" -version = "0.3.26" +version = "0.3.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ac9a59f73473f1b8d852421e59e64809f025994837ef743615c6d0c5b305160" +checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964" [[package]] name = "polling" -version = "2.6.0" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e1f879b2998099c2d69ab9605d145d5b661195627eccc680002c4918a7fb6fa" +checksum = "4b2d323e8ca7996b3e23126511a523f7e62924d93ecd5ae73b333815b0eb3dce" dependencies = [ "autocfg", - "bitflags", + "bitflags 1.3.2", "cfg-if 1.0.0", "concurrent-queue", "libc", "log", "pin-project-lite", - "windows-sys 0.45.0", + "windows-sys", ] [[package]] @@ -2349,12 +2459,12 @@ checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" [[package]] name = "prettyplease" -version = "0.1.25" +version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c8646e95016a7a6c4adea95bafa8a16baab64b583356217f2c85db4a39d9a86" +checksum = "92139198957b410250d43fad93e630d956499a625c527eda65175c8680f83387" dependencies = [ "proc-macro2", - "syn 1.0.109", + "syn 2.0.26", ] [[package]] @@ -2363,7 +2473,7 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785" dependencies = [ - "toml", + "toml 0.5.11", ] [[package]] @@ -2392,32 +2502,33 @@ dependencies = [ [[package]] name = "proc-macro-utils" -version = "0.5.1" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82d8be3a44b1f16d839703969bfffd7c866faf24591d2d614aa005280fd9108a" +checksum = "3f59e109e2f795a5070e69578c4dc101068139f74616778025ae1011d4cd41a8" dependencies = [ "proc-macro2", + "quote", "smallvec", ] [[package]] name = "proc-macro2" -version = "1.0.52" +version = "1.0.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d0e1ae9e836cc3beddd63db0df682593d7e2d3d891ae8c9083d2113e1744224" +checksum = "18fb31db3f9bddb2ea821cde30a9f70117e3f119938b5ee630b7403aa6e2ead9" dependencies = [ "unicode-ident", ] [[package]] name = "proc-macro2-diagnostics" -version = "0.9.1" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bf29726d67464d49fa6224a1d07936a8c08bb3fba727c7493f6cf1616fdaada" +checksum = "af066a9c399a26e020ada66a034357a868728e72cd426f3adcd35f80d88d88c8" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.26", "version_check", "yansi", ] @@ -2444,26 +2555,31 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.26" +version = "1.0.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4424af4bf778aae2051a77b60283332f386554255d722233d09fbfc7e30da2fc" +checksum = "5fe8a65d69dd0808184ebb5f836ab526bb259db23c657efa38711b1072ee47f0" dependencies = [ "proc-macro2", ] [[package]] name = "quote-use" -version = "0.6.0" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23cb0082bf14d4943f5052d4caad1f80374eb7d883433458819a7846e2b465d5" +checksum = "58e9a38ef862d7fec635661503289062bc5b3035e61859a8de3d3f81823accd2" dependencies = [ "derive-where", - "proc-macro-error", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.26", ] +[[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" @@ -2506,18 +2622,28 @@ version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" dependencies = [ - "bitflags", + "bitflags 1.3.2", +] + +[[package]] +name = "redox_syscall" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" +dependencies = [ + "bitflags 1.3.2", ] [[package]] name = "regex" -version = "1.7.1" +version = "1.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48aaa5748ba571fb95cd2c85c09f629215d3a6ece942baa100950af03a34f733" +checksum = "b2eae68fc220f7cf2532e4494aded17545fce192d59cd996e0fe7887f4ceb575" dependencies = [ "aho-corasick", "memchr", - "regex-syntax", + "regex-automata 0.3.3", + "regex-syntax 0.7.4", ] [[package]] @@ -2526,14 +2652,31 @@ version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" dependencies = [ - "regex-syntax", + "regex-syntax 0.6.29", +] + +[[package]] +name = "regex-automata" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39354c10dd07468c2e73926b23bb9c2caca74c5501e38a35da70406f1d923310" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax 0.7.4", ] [[package]] name = "regex-syntax" -version = "0.6.28" +version = "0.6.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" + +[[package]] +name = "regex-syntax" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "456c603be3e8d448b072f410900c09faf164fbce2d480456f50eea6e25f9c848" +checksum = "e5ea92a5b6195c6ef2a0295ea818b312502c6fc94dde986c5553242e18fd4ce2" [[package]] name = "rend" @@ -2546,12 +2689,12 @@ dependencies = [ [[package]] name = "reqwest" -version = "0.11.15" +version = "0.11.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ba30cc2c0cd02af1222ed216ba659cdb2f879dfe3181852fe7c50b1d0005949" +checksum = "cde824a14b7c14f85caff81225f411faacc04a2013f41670f41443742b1c1c55" dependencies = [ - "base64 0.21.0", - "bytes 1.4.0", + "base64 0.21.2", + "bytes", "encoding_rs", "futures-core", "futures-util", @@ -2559,12 +2702,10 @@ dependencies = [ "http", "http-body", "hyper", - "hyper-tls", "ipnet", "js-sys", "log", "mime", - "native-tls", "once_cell", "percent-encoding", "pin-project-lite", @@ -2572,7 +2713,6 @@ dependencies = [ "serde_json", "serde_urlencoded", "tokio", - "tokio-native-tls", "tower-service", "url", "wasm-bindgen", @@ -2598,23 +2738,26 @@ dependencies = [ [[package]] name = "rkyv" -version = "0.7.40" +version = "0.7.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c30f1d45d9aa61cbc8cd1eb87705470892289bb2d01943e7803b873a57404dc3" +checksum = "0200c8230b013893c0b2d6213d6ec64ed2b9be2e0e016682b7224ff82cff5c58" dependencies = [ + "bitvec", "bytecheck", "hashbrown 0.12.3", "ptr_meta", "rend", "rkyv_derive", "seahash", + "tinyvec", + "uuid", ] [[package]] name = "rkyv_derive" -version = "0.7.40" +version = "0.7.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff26ed6c7c4dfc2aa9480b86a60e3c7233543a270a680e10758a507c5a4ce476" +checksum = "b2e06b915b5c230a17d7a736d1e2e63ee753c256a8614ef3f5147b13a4f5541d" dependencies = [ "proc-macro2", "quote", @@ -2628,10 +2771,24 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "88073939a61e5b7680558e6be56b419e208420c2adb92be54921fa6b72283f1a" dependencies = [ "base64 0.13.1", - "bitflags", + "bitflags 1.3.2", "serde", ] +[[package]] +name = "rstml" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7afcc74cab5d3118523b1f75900e1fcbeae7cac6c6cb800430621bf58add0bd" +dependencies = [ + "proc-macro2", + "proc-macro2-diagnostics", + "quote", + "syn 2.0.26", + "syn_derive", + "thiserror", +] + [[package]] name = "rust-ini" version = "0.18.0" @@ -2644,15 +2801,15 @@ dependencies = [ [[package]] name = "rust_decimal" -version = "1.29.0" +version = "1.30.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b1b21b8760b0ef8ae5b43d40913ff711a2053cb7ff892a34facff7a6365375a" +checksum = "d0446843641c69436765a35a5a77088e28c2e6a12da93e84aa3ab1cd4aa5a042" dependencies = [ "arrayvec", "borsh", "bytecheck", "byteorder", - "bytes 1.4.0", + "bytes", "num-traits", "rand", "rkyv", @@ -2660,6 +2817,12 @@ dependencies = [ "serde_json", ] +[[package]] +name = "rustc-demangle" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" + [[package]] name = "rustc-hash" version = "1.1.0" @@ -2677,16 +2840,16 @@ dependencies = [ [[package]] name = "rustix" -version = "0.36.11" +version = "0.37.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db4165c9963ab29e422d6c26fbc1d37f15bace6b2810221f9d925023480fcf0e" +checksum = "4d69718bf81c6127a49dc64e44a742e8bb9213c0ff8869a22c308f84c1d4ab06" dependencies = [ - "bitflags", + "bitflags 1.3.2", "errno", "io-lifetimes", "libc", "linux-raw-sys", - "windows-sys 0.45.0", + "windows-sys", ] [[package]] @@ -2703,24 +2866,24 @@ dependencies = [ [[package]] name = "rustls-pemfile" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d194b56d58803a43635bdc398cd17e383d6f71f9182b9a192c127ca42494a59b" +checksum = "2d3987094b1d07b653b7dfdc3f70ce9a1da9c51ac18c1b06b662e4f9a0e9f4b2" dependencies = [ - "base64 0.21.0", + "base64 0.21.2", ] [[package]] name = "rustversion" -version = "1.0.12" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f3208ce4d8448b3f3e7d168a73f5e0c43a61e32930de3bceeccedb388b6bf06" +checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4" [[package]] name = "ryu" -version = "1.0.13" +version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f91339c0467de62360649f8d3e185ca8de4224ff281f66000de5eb2a77a79041" +checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" [[package]] name = "same-file" @@ -2731,27 +2894,12 @@ dependencies = [ "winapi-util", ] -[[package]] -name = "schannel" -version = "0.1.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "713cfb06c7059f3588fb8044c0fad1d09e3c01d225e25b9220dbfdcf16dbb1b3" -dependencies = [ - "windows-sys 0.42.0", -] - [[package]] name = "scopeguard" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" -[[package]] -name = "scratch" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1792db035ce95be60c3f8853017b3999209281c24e2ba5bc8e59bf97a0c590c1" - [[package]] name = "sct" version = "0.7.0" @@ -2764,15 +2912,15 @@ dependencies = [ [[package]] name = "sea-orm" -version = "0.11.2" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5d875e2fcd965320e50066028ac0b4877ff07edbb734a6ddfeff48a87dbab38" +checksum = "fade86e8d41fd1a4721f84cb834f4ca2783f973cc30e6212b7fafc134f169214" dependencies = [ "async-stream", "async-trait", "bigdecimal", "chrono", - "futures 0.3.28", + "futures", "log", "ouroboros", "rust_decimal", @@ -2784,7 +2932,7 @@ dependencies = [ "serde_json", "sqlx", "thiserror", - "time 0.3.20", + "time 0.3.23", "tracing", "url", "uuid", @@ -2792,9 +2940,9 @@ dependencies = [ [[package]] name = "sea-orm-cli" -version = "0.11.2" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ead9f7dac975f10447f17d08edbb2046daa087b5e0b50bbf8211f303459078c" +checksum = "efbf34a2caf70c2e3be9bb1e674e9540f6dfd7c8f40f6f05daf3b9740e476005" dependencies = [ "chrono", "clap", @@ -2808,9 +2956,9 @@ dependencies = [ [[package]] name = "sea-orm-macros" -version = "0.11.2" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9b593e9c0cdbb18cafd4da7b92e67a9c2d9892934f3a2d8bbac73d5ba4a98a1" +checksum = "28936f26d62234ff0be16f80115dbdeb3237fe9c25cf18fbcd1e3b3592360f20" dependencies = [ "bae", "heck 0.3.3", @@ -2821,14 +2969,14 @@ dependencies = [ [[package]] name = "sea-orm-migration" -version = "0.11.2" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edba7a6123c1035b0530deb713820688f0234431ab6c1893b14dce493ade76af" +checksum = "278d3adfd0832b6ffc17d3cfbc574d3695a5c1b38814e0bc8ac238d33f3d87cf" dependencies = [ "async-trait", "clap", "dotenvy", - "futures 0.3.28", + "futures", "sea-orm", "sea-orm-cli", "sea-schema", @@ -2838,24 +2986,24 @@ dependencies = [ [[package]] name = "sea-query" -version = "0.28.3" +version = "0.28.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2fbe015dbdaa7d8829d71c1e14fb6289e928ac256b93dfda543c85cd89d6f03" +checksum = "bbab99b8cd878ab7786157b7eb8df96333a6807cc6e45e8888c85b51534b401a" dependencies = [ "bigdecimal", "chrono", "rust_decimal", "sea-query-derive", "serde_json", - "time 0.3.20", + "time 0.3.23", "uuid", ] [[package]] name = "sea-query-binder" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03548c63aec07afd4fd190923e0160d2f2fc92def27470b54154cf232da6203b" +checksum = "4cea85029985b40dfbf18318d85fe985c04db7c1b4e5e8e0a0a0cdff5f1e30f9" dependencies = [ "bigdecimal", "chrono", @@ -2863,7 +3011,7 @@ dependencies = [ "sea-query", "serde_json", "sqlx", - "time 0.3.20", + "time 0.3.23", "uuid", ] @@ -2886,7 +3034,7 @@ version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eeb2940bb5a10bc6cd05b450ce6cd3993e27fddd7eface2becb97fc5af3a040e" dependencies = [ - "futures 0.3.28", + "futures", "sea-query", "sea-schema-derive", ] @@ -2932,39 +3080,22 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1c107b6f4780854c8b126e228ea8869f4d7b71260f962fefb57b996b8959ba6b" [[package]] -name = "security-framework" -version = "2.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a332be01508d814fed64bf28f798a146d73792121129962fdf335bb3c49a4254" -dependencies = [ - "bitflags", - "core-foundation", - "core-foundation-sys", - "libc", - "security-framework-sys", -] - -[[package]] -name = "security-framework-sys" -version = "2.8.0" +name = "self_cell" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31c9bb296072e961fcbd8853511dd39c2d8be2deb1e17c6860b1d30732b323b4" -dependencies = [ - "core-foundation-sys", - "libc", -] +checksum = "4c309e515543e67811222dbc9e3dd7e1056279b782e1dacffe4242b718734fb6" [[package]] name = "semver" -version = "1.0.17" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bebd363326d05ec3e2f532ab7660680f3b02130d780c299bca73469d521bc0ed" +checksum = "b0293b4b29daaf487284529cc2f5675b8e57c61f70167ba415a463651fd6a918" [[package]] name = "serde" -version = "1.0.160" +version = "1.0.171" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb2f3770c8bce3bcda7e149193a069a0f4365bda1fa5cd88e03bca26afc1216c" +checksum = "30e27d1e4fd7659406c492fd6cfaf2066ba8773de45ca75e855590f856dc34a9" dependencies = [ "serde_derive", ] @@ -2982,20 +3113,20 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.160" +version = "1.0.171" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "291a097c63d8497e00160b166a967a4a79c64f3facdd01cbd7502231688d77df" +checksum = "389894603bd18c46fa56231694f8d827779c0951a667087194cf9de94ed24682" dependencies = [ "proc-macro2", "quote", - "syn 2.0.12", + "syn 2.0.26", ] [[package]] name = "serde_json" -version = "1.0.96" +version = "1.0.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "057d394a50403bcac12672b2b18fb387ab6d289d957dab67dd201875391e52f1" +checksum = "0f1e14e89be7aa4c4b78bdbdc9eb5bf8517829a600ae8eaa39a6e1d960b5185c" dependencies = [ "itoa", "ryu", @@ -3004,9 +3135,39 @@ dependencies = [ [[package]] name = "serde_path_to_error" -version = "0.1.10" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4beec8bce849d58d06238cb50db2e1c417cfeafa4c63f692b15c82b7c80f8335" +dependencies = [ + "itoa", + "serde", +] + +[[package]] +name = "serde_qs" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0431a35568651e363364210c91983c1da5eb29404d9f0928b67d4ebcfa7d330c" +dependencies = [ + "percent-encoding", + "serde", + "thiserror", +] + +[[package]] +name = "serde_spanned" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96426c9936fd7a0124915f9185ea1d20aa9445cc9821142f0a73bc9207a2e186" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_test" +version = "1.0.171" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db0969fff533976baadd92e08b1d102c5a3d8a8049eadfd69d4d1e3c5b2ed189" +checksum = "b6480a2f4e1449ec9757ea143362ad5cea79bc7f1cb7711c06e1c5d03b6b5a3a" dependencies = [ "serde", ] @@ -3025,11 +3186,11 @@ dependencies = [ [[package]] name = "serde_yaml" -version = "0.9.19" +version = "0.9.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f82e6c8c047aa50a7328632d067bcae6ef38772a79e28daf32f735e0e4f3dd10" +checksum = "da6075b41c7e3b079e5f246eb6094a44850d3a4c25a67c581c80796c80134012" dependencies = [ - "indexmap", + "indexmap 2.0.0", "itoa", "ryu", "serde", @@ -3059,57 +3220,59 @@ dependencies = [ [[package]] name = "server_fn" -version = "0.2.5" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f7e74a67ed331d9f30befd2a0c187bdc705a7063a287f337ae0420522c4425b" +checksum = "66e7548322b4d4f1ff602883a5f47b3291d69523ef25a6521c334e2f723825f0" dependencies = [ "ciborium", "const_format", "gloo-net", + "inventory", "js-sys", + "lazy_static", "once_cell", "proc-macro2", "quote", "reqwest", "serde", "serde_json", - "serde_urlencoded", + "serde_qs", "server_fn_macro_default", - "syn 1.0.109", + "syn 2.0.26", "thiserror", "xxhash-rust", ] [[package]] name = "server_fn_macro" -version = "0.2.5" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eca31494981546bccc81a6b1972d07929a77fed59c8824a1a70d10fe8ee00c12" +checksum = "534134dd0b3c4f12f4fa967aa9961323d8d3195f35450f56c7bfda991a4bd7ba" dependencies = [ "const_format", "proc-macro-error", "proc-macro2", "quote", "serde", - "syn 1.0.109", + "syn 2.0.26", "xxhash-rust", ] [[package]] name = "server_fn_macro_default" -version = "0.2.5" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aab30d5671e7758ea36e88f0860fbdd7d03f8ae1840c984b6d5b14cbe77c655d" +checksum = "76fa0b34a9f1271b98c5b1e8eae8b498f63c1beeca7d7596ad527896f946d011" dependencies = [ "server_fn_macro", - "syn 1.0.109", + "syn 2.0.26", ] [[package]] name = "sha2" -version = "0.10.6" +version = "0.10.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82e6b795fe2e3b1e845bafcb27aa35405c4d47cdfc92af5fc8d3002f76cebdc0" +checksum = "479fb9d862239e610720565ca91403019f2f00410f1864c5aa7479b950a76ed8" dependencies = [ "cfg-if 1.0.0", "cpufeatures", @@ -3161,9 +3324,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.10.0" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0" +checksum = "62bb4feee49fdd9f707ef802e22365a35de4b7b299de4763d44bfea899442ff9" [[package]] name = "socket2" @@ -3187,7 +3350,7 @@ version = "0.9.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" dependencies = [ - "lock_api 0.4.9", + "lock_api 0.4.10", ] [[package]] @@ -3203,9 +3366,9 @@ dependencies = [ [[package]] name = "sqlx" -version = "0.6.2" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9249290c05928352f71c077cc44a464d880c63f26f7534728cca008e135c0428" +checksum = "f8de3b03a925878ed54a954f621e64bf55a3c1bd29652d0d1a17830405350188" dependencies = [ "sqlx-core", "sqlx-macros", @@ -3213,16 +3376,16 @@ dependencies = [ [[package]] name = "sqlx-core" -version = "0.6.2" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcbc16ddba161afc99e14d1713a453747a2b07fc097d2009f4c300ec99286105" +checksum = "fa8241483a83a3f33aa5fff7e7d9def398ff9990b2752b6c6112b83c6d246029" dependencies = [ "ahash 0.7.6", "atoi", "bigdecimal", - "bitflags", + "bitflags 1.3.2", "byteorder", - "bytes 1.4.0", + "bytes", "chrono", "crossbeam-queue", "dotenvy", @@ -3236,7 +3399,7 @@ dependencies = [ "futures-util", "hashlink", "hex", - "indexmap", + "indexmap 1.9.3", "itoa", "libc", "libsqlite3-sys", @@ -3256,7 +3419,7 @@ dependencies = [ "sqlx-rt", "stringprep", "thiserror", - "time 0.3.20", + "time 0.3.23", "tokio-stream", "url", "uuid", @@ -3265,9 +3428,9 @@ dependencies = [ [[package]] name = "sqlx-macros" -version = "0.6.2" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b850fa514dc11f2ee85be9d055c512aa866746adfacd1cb42d867d68e6a5b0d9" +checksum = "9966e64ae989e7e575b19d7265cb79d7fc3cbbdf179835cb0d716f294c2049c9" dependencies = [ "dotenvy", "either", @@ -3284,9 +3447,9 @@ dependencies = [ [[package]] name = "sqlx-rt" -version = "0.6.2" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24c5b2d25fa654cc5f841750b8e1cdedbe21189bf9a9382ee90bfa9dd3562396" +checksum = "804d3f245f894e61b1e6263c84b23ca675d96753b5abfd5cc8597d86806e8024" dependencies = [ "once_cell", "tokio", @@ -3295,14 +3458,20 @@ dependencies = [ [[package]] name = "stringprep" -version = "0.1.2" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ee348cb74b87454fff4b551cbf727025810a004f88aeacae7f85b87f4e9a1c1" +checksum = "db3737bde7edce97102e0e2b15365bf7a20bfdb5f60f4f9e8d7004258a51a8da" dependencies = [ "unicode-bidi", "unicode-normalization", ] +[[package]] +name = "strsim" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" + [[package]] name = "syn" version = "1.0.109" @@ -3316,9 +3485,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.12" +version = "2.0.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79d9531f94112cfc3e4c8f5f02cb2b58f72c97b7efd85f70203cc6d8efda5927" +checksum = "45c3457aacde3c65315de5031ec191ce46604304d2446e803d71ade03308d970" dependencies = [ "proc-macro2", "quote", @@ -3326,15 +3495,15 @@ dependencies = [ ] [[package]] -name = "syn-rsx" -version = "0.9.0" +name = "syn_derive" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b7b0f81c7d3e9bbe4b3005599a3e0b0bbb27bd3514f2b0567b478cc548c3736" +checksum = "8128874d02f9a114ade6d9ad252078cb32d3cb240e26477ac73d7e9c495c605e" dependencies = [ + "proc-macro-error", "proc-macro2", "quote", - "syn 1.0.109", - "thiserror", + "syn 2.0.26", ] [[package]] @@ -3344,26 +3513,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" [[package]] -name = "tempfile" -version = "3.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af18f7ae1acd354b992402e9ec5864359d693cd8a79dcbef59f76891701c1e95" -dependencies = [ - "cfg-if 1.0.0", - "fastrand", - "redox_syscall 0.2.16", - "rustix", - "windows-sys 0.42.0", -] - -[[package]] -name = "termcolor" -version = "1.2.0" +name = "tap" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be55cf8942feac5c765c2c993422806843c9a9a45d4d5c407ad6dd2ea95eb9b6" -dependencies = [ - "winapi-util", -] +checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "textwrap" @@ -3373,22 +3526,22 @@ checksum = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d" [[package]] name = "thiserror" -version = "1.0.40" +version = "1.0.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "978c9a314bd8dc99be594bc3c175faaa9794be04a5a5e153caba6915336cebac" +checksum = "a35fc5b8971143ca348fa6df4f024d4d55264f3468c71ad1c2f365b0a4d58c42" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.40" +version = "1.0.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f" +checksum = "463fe12d7993d3b327787537ce8dd4dfa058de32fc2b195ef3cde03dc4771e8f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.12", + "syn 2.0.26", ] [[package]] @@ -3414,9 +3567,9 @@ dependencies = [ [[package]] name = "time" -version = "0.3.20" +version = "0.3.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd0cbfecb4d19b5ea75bb31ad904eb5b9fa13f21079c3b92017ebdf4999a5890" +checksum = "59e399c068f43a5d116fedaf73b203fa4f9c519f17e2b34f63221d3792f81446" dependencies = [ "itoa", "serde", @@ -3426,15 +3579,15 @@ dependencies = [ [[package]] name = "time-core" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e153e1f1acaef8acc537e68b44906d2db6436e2b35ac2c6b42640fff91f00fd" +checksum = "7300fbefb4dadc1af235a9cef3737cea692a9d97e1b9cbcd4ebdae6f8868e6fb" [[package]] name = "time-macros" -version = "0.2.8" +version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd80a657e71da814b8e5d60d3374fc6d35045062245d80224748ae522dd76f36" +checksum = "96ba15a897f3c86766b757e5ac7221554c6750054d74d5b28844fce5fb36a6c4" dependencies = [ "time-core", ] @@ -3456,12 +3609,13 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.27.0" +version = "1.29.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0de47a4eecbe11f498978a9b29d792f0d2692d1dd003650c24c76510e3bc001" +checksum = "532826ff75199d5833b9d2c5fe410f29235e25704ee5f0ef599fb51c21f4a4da" dependencies = [ "autocfg", - "bytes 1.4.0", + "backtrace", + "bytes", "libc", "mio", "num_cpus", @@ -3470,28 +3624,18 @@ dependencies = [ "signal-hook-registry", "socket2", "tokio-macros", - "windows-sys 0.45.0", + "windows-sys", ] [[package]] name = "tokio-macros" -version = "2.0.0" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61a573bdc87985e9d6ddeed1b3d864e8a302c847e40d647746df2f1de209d1ce" +checksum = "630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.12", -] - -[[package]] -name = "tokio-native-tls" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" -dependencies = [ - "native-tls", - "tokio", + "syn 2.0.26", ] [[package]] @@ -3507,9 +3651,9 @@ dependencies = [ [[package]] name = "tokio-stream" -version = "0.1.12" +version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fb52b74f05dbf495a8fba459fdc331812b96aa086d9eb78101fa0d4569c3313" +checksum = "397c988d37662c7dda6d2208364a706264bf3d6138b11d436cbac0ad38832842" dependencies = [ "futures-core", "pin-project-lite", @@ -3518,13 +3662,15 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.7" +version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5427d89453009325de0d8f342c9490009f76e999cb7672d77e46267448f7e6b2" +checksum = "806fe8c2c87eccc8b3267cbae29ed3ab2d0bd37fca70ab622e46aaa9375ddb7d" dependencies = [ - "bytes 1.4.0", + "bytes", "futures-core", "futures-sink", + "futures-util", + "hashbrown 0.12.3", "pin-project-lite", "tokio", "tracing", @@ -3539,6 +3685,40 @@ dependencies = [ "serde", ] +[[package]] +name = "toml" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c17e963a819c331dcacd7ab957d80bc2b9a9c1e71c804826d2f283dd65306542" +dependencies = [ + "serde", + "serde_spanned", + "toml_datetime", + "toml_edit", +] + +[[package]] +name = "toml_datetime" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_edit" +version = "0.19.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8123f27e969974a3dfba720fdb560be359f57b44302d280ba72e76a74480e8a" +dependencies = [ + "indexmap 2.0.0", + "serde", + "serde_spanned", + "toml_datetime", + "winnow", +] + [[package]] name = "tower" version = "0.4.13" @@ -3557,12 +3737,12 @@ dependencies = [ [[package]] name = "tower-http" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d1d42a9b3f3ec46ba828e8d376aec14592ea199f70a06a548587ecd1c4ab658" +checksum = "a8bd22a874a2d0b70452d5597b12c537331d49060824a95f49f108994f94aa4c" dependencies = [ - "bitflags", - "bytes 1.4.0", + "bitflags 2.3.3", + "bytes", "futures-core", "futures-util", "http", @@ -3608,20 +3788,20 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.23" +version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4017f8f45139870ca7e672686113917c71c7a6e02d4924eda67186083c03081a" +checksum = "5f4f31f56159e98206da9efd823404b79b6ef3143b4a7ab76e67b1751b25a4ab" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.26", ] [[package]] name = "tracing-core" -version = "0.1.30" +version = "0.1.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24eb03ba0eab1fd845050058ce5e616558e8f8d8fca633e6b163fe25c797213a" +checksum = "0955b8137a1df6f1a2e9a37d8a6656291ff0297c1a97c24e0d8425fe2312f79a" dependencies = [ "once_cell", "valuable", @@ -3650,9 +3830,9 @@ dependencies = [ [[package]] name = "tracing-subscriber" -version = "0.3.16" +version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6176eae26dd70d0c919749377897b54a9276bd7061339665dd68777926b5a70" +checksum = "30a651bc37f915e81f087d86e62a18eec5f79550c7faff886f7090b4ea757c77" dependencies = [ "matchers", "nu-ansi-term", @@ -3663,7 +3843,7 @@ dependencies = [ "sharded-slab", "smallvec", "thread_local", - "time 0.3.20", + "time 0.3.23", "tracing", "tracing-core", "tracing-log", @@ -3706,15 +3886,15 @@ checksum = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba" [[package]] name = "ucd-trie" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e79c4d996edb816c91e4308506774452e55e95c3c9de07b6729e17e15a5ef81" +checksum = "ed646292ffc8188ef8ea4d1e0e0150fb15a5c2e12ad9b8fc191ae7a8a7f3c4b9" [[package]] name = "uncased" -version = "0.9.7" +version = "0.9.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09b01702b0fd0b3fadcf98e098780badda8742d4f4a7676615cad90e8ac73622" +checksum = "9b9bc53168a4be7402ab86c3aad243a84dd7381d09be0eddc81280c1da95ca68" dependencies = [ "version_check", ] @@ -3736,9 +3916,9 @@ checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" [[package]] name = "unicode-ident" -version = "1.0.8" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4" +checksum = "301abaae475aa91687eb82514b328ab47a211a533026cb25fc3e519b86adfc3c" [[package]] name = "unicode-normalization" @@ -3755,12 +3935,6 @@ version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36" -[[package]] -name = "unicode-width" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b" - [[package]] name = "unicode-xid" version = "0.2.4" @@ -3775,9 +3949,9 @@ checksum = "39ec24b3121d976906ece63c9daad25b85969647682eee313cb5779fdd69e14e" [[package]] name = "unsafe-libyaml" -version = "0.2.7" +version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad2024452afd3874bf539695e04af6732ba06517424dbf958fdb16a01f3bef6c" +checksum = "f28467d3e1d3c6586d8f25fa243f544f5800fec42d97032474e17222c2b75cfa" [[package]] name = "untrusted" @@ -3787,9 +3961,9 @@ checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" [[package]] name = "url" -version = "2.3.1" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d68c799ae75762b8c3fe375feb6600ef5602c883c5d21eb51c09f22b83c4643" +checksum = "50bff7831e19200a85b17131d085c25d7811bc4e186efdaf54bbd132994a88cb" dependencies = [ "form_urlencoded", "idna", @@ -3804,9 +3978,9 @@ checksum = "5190c9442dcdaf0ddd50f37420417d219ae5261bbf5db120d0f9bab996c9cba1" [[package]] name = "uuid" -version = "1.3.1" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b55a3fef2a1e3b3a00ce878640918820d3c51081576ac657d23af9fc7928fdb" +checksum = "d023da39d1fde5a8a3fe1f3e01ca9632ada0a63e9797de55a879d6e2236277be" dependencies = [ "atomic", "getrandom", @@ -3821,13 +3995,9 @@ checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" [[package]] name = "value-bag" -version = "1.0.0-alpha.9" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2209b78d1249f7e6f3293657c9779fe31ced465df091bbd433a1cf88e916ec55" -dependencies = [ - "ctor", - "version_check", -] +checksum = "d92ccd67fb88503048c01b59152a04effd0782d035a83a6d256ce6085f08f4a3" [[package]] name = "vcpkg" @@ -3859,11 +4029,10 @@ dependencies = [ [[package]] name = "want" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ce8a968cb1cd110d136ff8b819a556d6fb6d919363c61534f6860c7eb172ba0" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" dependencies = [ - "log", "try-lock", ] @@ -3881,9 +4050,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.84" +version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31f8dcbc21f30d9b8f2ea926ecb58f6b91192c17e9d33594b3df58b2007ca53b" +checksum = "7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342" dependencies = [ "cfg-if 1.0.0", "wasm-bindgen-macro", @@ -3891,24 +4060,24 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.84" +version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95ce90fd5bcc06af55a641a86428ee4229e44e07033963a2290a8e241607ccb9" +checksum = "5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.26", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.34" +version = "0.4.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f219e0d211ba40266969f6dbdd90636da12f75bee4fc9d6c23d1260dadb51454" +checksum = "c02dbc21516f9f1f04f187958890d7e6026df8d16540b7ad9492bc34a67cea03" dependencies = [ "cfg-if 1.0.0", "js-sys", @@ -3918,9 +4087,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.84" +version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c21f77c0bedc37fd5dc21f897894a5ca01e7bb159884559461862ae90c0b4c5" +checksum = "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -3928,22 +4097,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.84" +version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2aff81306fcac3c7515ad4e177f521b5c9a15f2b08f4e32d823066102f35a5f6" +checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.26", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.84" +version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0046fef7e28c3804e5e38bfa31ea2a0f73905319b677e57ebe37e49358989b5d" +checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1" [[package]] name = "wasm-lib" @@ -3960,9 +4129,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.61" +version = "0.3.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e33b99f4b23ba3eec1a53ac264e35a755f00e966e0065077d6027c0f575b0b97" +checksum = "9b85cbef8c220a6abc02aefd892dfc0fc23afb1c6a426316ec33253a3877249b" dependencies = [ "js-sys", "wasm-bindgen", @@ -4019,34 +4188,28 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] -name = "windows-sys" -version = "0.42.0" +name = "windows" +version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7" +checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f" 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-targets", ] [[package]] name = "windows-sys" -version = "0.45.0" +version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" dependencies = [ "windows-targets", ] [[package]] name = "windows-targets" -version = "0.42.2" +version = "0.48.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" +checksum = "05d4b17490f70499f20b9e791dcf6a299785ce8af4d709018206dc5b4953e95f" dependencies = [ "windows_aarch64_gnullvm", "windows_aarch64_msvc", @@ -4059,45 +4222,54 @@ dependencies = [ [[package]] name = "windows_aarch64_gnullvm" -version = "0.42.2" +version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" +checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc" [[package]] name = "windows_aarch64_msvc" -version = "0.42.2" +version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" +checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3" [[package]] name = "windows_i686_gnu" -version = "0.42.2" +version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" +checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241" [[package]] name = "windows_i686_msvc" -version = "0.42.2" +version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" +checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00" [[package]] name = "windows_x86_64_gnu" -version = "0.42.2" +version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" +checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1" [[package]] name = "windows_x86_64_gnullvm" -version = "0.42.2" +version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" +checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953" [[package]] name = "windows_x86_64_msvc" -version = "0.42.2" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" + +[[package]] +name = "winnow" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" +checksum = "81fac9742fd1ad1bd9643b991319f72dd031016d44b77039a26977eb667141e7" +dependencies = [ + "memchr", +] [[package]] name = "winreg" @@ -4108,6 +4280,15 @@ dependencies = [ "winapi", ] +[[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.6" @@ -4125,6 +4306,6 @@ dependencies = [ [[package]] name = "yansi" -version = "0.5.1" +version = "1.0.0-rc" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09041cd90cf85f7f8b2df60c646f853b7f535ce68f85244eb6731cf89fa498ec" +checksum = "9ee746ad3851dd3bc40e4a028ab3b00b99278d929e48957bcb2d111874a7e43e" diff --git a/Cargo.toml b/Cargo.toml index 83bb684..23d57da 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -15,13 +15,24 @@ opt-level = 3 [workspace] members = ["app", "entity", "migration", "server", "wasm-lib"] +resolver = "2" [workspace.dependencies] -leptos = { version = "=0.2.5", default-features = false, features = ["serde"] } -leptos_dom = { version = "=0.2.5", default-features = false } -leptos_meta = { version = "=0.2.5", default-features = false } -leptos_router = { version = "=0.2.5", default-features = false } -leptos_axum = { version = "=0.2.5" } +leptos = { version = "=0.4.2", default-features = false, features = ["serde", "nightly"] } +leptos_dom = { version = "=0.4.2", default-features = false, features = ["nightly"] } +leptos_hot_reload = { version = "=0.4.2", default-features = false, features = ["nightly"] } +leptos_macro = { version = "=0.4.2", default-features = false, features = ["nightly"] } +leptos_meta = { version = "=0.4.2", default-features = false, features = ["nightly"] } +leptos_reactive = { version = "=0.4.2", default-features = false, features = ["nightly"] } +leptos_router = { version = "=0.4.2", default-features = false } +leptos_server = { version = "=0.4.2", default-features = false, features = ["nightly"] } +server_fn = { version = "=0.4.2", default-features = false, features = ["nightly"] } +server_fn_macro = { version = "=0.4.2", default-features = false, features = ["nightly"] } +server_fn_macro_default = { version = "=0.4.2", default-features = false, features = ["nightly"] } +leptos_axum = { version = "=0.4.2" } +leptos_config = { version = "=0.4.2", default-features = false, features = ["nightly"] } +leptos_integration_utils = { version = "=0.4.2", default-features = false, features = ["nightly"] } +wasm-bindgen = "=0.2.87" [[workspace.metadata.leptos]] name = "todo-vault" diff --git a/Dockerfile b/Dockerfile index a68bb27..311787f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -31,15 +31,16 @@ RUN git clone https://github.com/rui314/mold.git -b v1.11.0 --depth 1 && \ # install leptos build helper cli -RUN cargo install --git https://github.com/akesson/cargo-leptos cargo-leptos --force +RUN cargo install cargo-leptos@0.1.11 --force + +# Build +WORKDIR /build ADD ./package.json ./package.json ADD ./package-lock.json ./package-lock.json RUN npm install -# Build -WORKDIR /build # install rust toolchain COPY rust-toolchain.toml . diff --git a/app/Cargo.toml b/app/Cargo.toml index 5c435c6..215688f 100644 --- a/app/Cargo.toml +++ b/app/Cargo.toml @@ -11,53 +11,29 @@ leptos_dom.workspace = true leptos_meta.workspace = true leptos_router.workspace = true leptos_axum = { workspace = true, optional = true } +leptos_icons = { version = "0.0.15", features = [ "IoSave", "OcFileAddedSm", "OcPencilLg", "OcTrashLg", "macros" ] } +leptos-use = { version = "0.5.0", features = ["storage"]} +wasm-bindgen = { workspace = true } entity = { path = "../entity", default-features = false } broadcaster = { version = "=1.0.0", optional = true } cfg-if = "=1.0.0" http = "=0.2.9" -thiserror = "=1.0.40" -serde = { version = "=1.0.160", features = [ - "derive", - "serde_derive", - "alloc", - "rc", -] } +thiserror = "=1.0.43" +serde = { version = "=1.0.171", features = ["derive", "serde_derive", "alloc", "rc"] } lazy_static = "=1.4.0" -getrandom = { version = "=0.2.9", features = ["js", "std"] } +getrandom = { version = "=0.2.10", features = ["js", "std"] } tracing = { version = "=0.1.37", features = ["async-await", "log"] } -base64 = "=0.21.0" +base64 = "=0.21.2" convert_case = "=0.6.0" rand = "=0.8.5" -wasm-bindgen = "=0.2.84" -web-sys = { version = "=0.3.61", features = [ - "console", - "Document", - "DomRect", - "Element", - "Event", - "EventTarget", - "Storage", - "Window", -] } -js-sys = "=0.3.61" -serde_json = { version = "=1.0.96", features = ["alloc"] } +web-sys = { version = "=0.3.64", features = ["console", "Document", "DomRect", "Element", "Event", "EventTarget", "Storage", "Window"] } +js-sys = "=0.3.64" +serde_json = { version = "=1.0.100", features = ["alloc"] } futures = "=0.3.28" [features] default = ["ssr"] -hydrate = [ - "leptos/hydrate", - "leptos_meta/hydrate", - "leptos_router/hydrate", - "entity/client-side", -] -ssr = [ - "entity/server-side", - "leptos/ssr", - "leptos_meta/ssr", - "leptos_router/ssr", - "dep:leptos_axum", - "dep:broadcaster", -] +hydrate = ["leptos/hydrate", "leptos_meta/hydrate", "leptos_router/hydrate", "entity/client-side"] +ssr = ["entity/server-side", "leptos/ssr", "leptos_meta/ssr", "leptos_router/ssr", "leptos-use/ssr", "dep:leptos_axum", "dep:broadcaster"] diff --git a/app/src/components/button.rs b/app/src/components/button.rs deleted file mode 100644 index d9ae77a..0000000 --- a/app/src/components/button.rs +++ /dev/null @@ -1,23 +0,0 @@ -use leptos::*; -use leptos_dom::*; -use leptos_router::*; - -// buttons styled with tailwind css -#[component] -pub fn Button( - cx: Scope, - children: Children, - #[prop(optional, into)] b_type: String, - #[prop(optional, into)] class: String, -) -> impl IntoView { - view! { cx, - - } -} diff --git a/app/src/components/dropdown_button.rs b/app/src/components/dropdown_button.rs deleted file mode 100644 index af8eb36..0000000 --- a/app/src/components/dropdown_button.rs +++ /dev/null @@ -1,153 +0,0 @@ -use leptos::*; -use leptos_dom::*; -use leptos_router::*; - -#[component] -fn DropdownButton(cx: Scope) -> impl IntoView { - let (dropdown_open, set_dropdown_open) = create_signal(cx, false); - let toggle_modal = move || { - set_dropdown_open(!dropdown_open()); - }; - - view! { cx, -
- - -
- } -} diff --git a/app/src/components/form_drawer.rs b/app/src/components/form_drawer.rs deleted file mode 100644 index 3495eb0..0000000 --- a/app/src/components/form_drawer.rs +++ /dev/null @@ -1,251 +0,0 @@ -use std::{ - collections::hash_map::DefaultHasher, - hash::{Hash, Hasher}, - thread, - time, -}; - -use base64::Engine; -use convert_case::{Case, Casing}; -use entity::{chrono, uuid}; -use leptos::{ev::MouseEvent, *}; -use leptos_dom::*; -use leptos_router::*; -use rand::Rng; - -use super::*; - -/// ### FormFieldInputType -/// -/// Enumeration representing types of form field inputs. -/// -/// * `Text` -/// * `TextArea` -/// * `Date` -/// * `Hidden` -/// -#[derive(Clone, Copy, Hash)] -pub enum FormFieldInputType { - Text, - TextArea, - Date, - Hidden, - Password, -} - -/// ### FormField -/// -/// Structure representing an individual form field. -/// -/// * `id: String` - Unique identifier for the form field. -/// * `label: Option` - Optional label for the form field. If not provided, no -/// label is shown. -/// * `input_type: FormFieldInputType` - Type of input for the form field, defined -/// using `FormFieldInputType` enum. -/// * `placeholder: String` - Placeholder text for the form field. -/// * `value: String` - The pre-populated value for the form field. -/// * `required: bool` - Determines if the form field is required to submit the form -/// or not. -#[derive(Clone, Hash)] -pub struct FormField { - pub id: String, - pub label: Option, - pub input_type: FormFieldInputType, - pub placeholder: String, - pub value: String, - pub required: bool, -} - -impl IntoView for FormField { - fn into_view(self, cx: Scope) -> View { - let label = match self.label { - Some(label) => view! { cx, - - }.into_view(cx), - None => view! { cx, <> }.into_view(cx) - }; - - match self.input_type { - FormFieldInputType::Text => { - view! { cx, -
- {label} - -
- }.into_view(cx) - } - FormFieldInputType::TextArea => { - view! { cx, -
- {label} - -
- }.into_view(cx) - } - FormFieldInputType::Date => { - view! { cx, -
- {label} - -
- }.into_view(cx) - } - FormFieldInputType::Hidden => { - view! { cx, - - }.into_view(cx) - } - FormFieldInputType::Password => { - view! { cx, -
- {label} - -
- }.into_view(cx) - } - } - } -} - -/// # FormDrawerButton Component -/// -/// `FormDrawerButton` is a Leptos component for creating a collapsible form drawer -/// that appears when clicking a button. The form drawer is customizable with the -/// provided fields, a form action, icon, and title. -/// -#[component] -pub fn FormDrawerButton( - cx: Scope, - icon: Svg, - title: String, - action: MultiAction>, - fields: Vec, - #[prop(optional, into)] class: String, -) -> impl IntoView -where - S: Clone + ServerFn + leptos::Serializable, - O: Clone + Serializable + 'static, -{ - let (drawer_open, set_drawer_open) = create_signal(cx, false); - let sr_title = format!("Open {} drawer", title); - - let drawer = move || { - let title = title.clone(); - let fields = fields.clone(); - match drawer_open() { - true => { - view! { cx, -
-
-
{icon}
- {title.clone()} -
- -
- - {fields} - - -
-
- }.into_view(cx) - } - false => { - view! { cx,
}.into_view(cx) - } - } - }; - - view! { cx, -
-
- - {drawer} -
- } -} diff --git a/app/src/components/main_page.rs b/app/src/components/main_page.rs deleted file mode 100644 index 7c06454..0000000 --- a/app/src/components/main_page.rs +++ /dev/null @@ -1,172 +0,0 @@ -use std::{ - path::Path, - sync::{Arc, OnceLock}, -}; - -use leptos::*; -use leptos_dom::*; -use leptos_router::*; - -use super::*; -use crate::{components::*, functions::*}; - -#[derive(Clone, Debug)] -struct NavItem { - path: String, - name: String, - active: bool, -} - -impl NavItem { - fn new(path: String, name: String, active: bool) -> Self { - Self { - path, - name, - active, - } - } - - fn href(&self) -> String { - if !self.path.starts_with('/') { - let mut href = self.path.clone(); - href.insert(0, '/'); - href - } else { - self.path.clone() - } - } -} - -impl IntoView for NavItem { - fn into_view(self, cx: Scope) -> View { - if self.active { - view! { cx, - - {self.name} - - }.into_view(cx) - } else { - view! { cx, - - {self.name} - - }.into_view(cx) - }.into_view(cx) - } -} - -#[component] -fn Navbar(cx: Scope) -> impl IntoView { - let route_cx = use_route(cx); - - let items = move || { - vec![ - NavItem { - path: "".to_string(), - name: "Home".to_string(), - active: route_cx.path() == "", - }, - NavItem { - path: "/todo".to_string(), - name: "My To-Dos".to_string(), - active: route_cx.path().starts_with("/todo"), - }, - ] - }; - let (menu_open, set_menu_open) = create_signal(cx, false); - let toggle_menu = move || set_menu_open.update(|curr| *curr = !*curr); - - view! { cx, - - } -} - -#[component] -fn Footer(cx: Scope) -> impl IntoView { - view! { cx, - - } -} - -#[component] -fn MainCard(cx: Scope, children: Children) -> impl IntoView { - view! { cx, -
-
- {children(cx)} -
-
- } -} - -#[component] -pub fn MainPage(cx: Scope, children: Children) -> impl IntoView { - view! { cx, -
-
- - {children(cx)} -
-
-
- } -} diff --git a/app/src/components/mod.rs b/app/src/components/mod.rs index 0e3cfbe..0e21251 100644 --- a/app/src/components/mod.rs +++ b/app/src/components/mod.rs @@ -1,13 +1,12 @@ -mod button; -mod dropdown_button; -mod form_drawer; -mod main_page; -mod svg; -mod table; +use leptos::*; +use leptos_dom::*; +use leptos_router::*; -pub use button::*; -pub use dropdown_button::*; -pub use form_drawer::*; -pub use main_page::*; -pub use svg::*; -pub use table::*; +#[component] +pub fn Typography( + cx: Scope, + children: Children, + #[prop(optional, into)] class: String, +) -> impl IntoView { + view! { cx,

{children(cx)}

} +} diff --git a/app/src/components/svg.rs b/app/src/components/svg.rs deleted file mode 100644 index cc66b27..0000000 --- a/app/src/components/svg.rs +++ /dev/null @@ -1,40 +0,0 @@ -use leptos::*; - -// asd -// asd -// asd -#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)] -pub enum Svg { - AlertCircle, - CheckmarkChecked, - CheckmarkUnchecked, - Edit2, - FileEdit, - FilePlus, - Logo, - Hamburger, - Save, - Search, - Trash2, -} - -impl IntoView for Svg { - fn into_view(self, cx: Scope) -> View { - view! { cx, -
include_str!("../../../style/inlined/alert-circle.svg"), - Svg::CheckmarkChecked => include_str!("../../../style/inlined/check-circle.svg"), - Svg::CheckmarkUnchecked => include_str!("../../../style/inlined/circle.svg"), - Svg::Edit2 => include_str!("../../../style/inlined/edit-2.svg"), - Svg::FilePlus => include_str!("../../../style/inlined/file-plus.svg"), - Svg::FileEdit => include_str!("../../../style/inlined/file-edit.svg"), - Svg::Logo => include_str!("../../../style/inlined/logo.svg"), - Svg::Hamburger => include_str!("../../../style/inlined/hamburger.svg"), - Svg::Save => include_str!("../../../style/inlined/save.svg"), - Svg::Trash2 => include_str!("../../../style/inlined/trash-2.svg"), - Svg::Search => include_str!("../../../style/inlined/search.svg"), - }>
- } - .into_view(cx) - } -} diff --git a/app/src/components/table.rs b/app/src/components/table.rs deleted file mode 100644 index c5ee952..0000000 --- a/app/src/components/table.rs +++ /dev/null @@ -1,72 +0,0 @@ -use leptos::*; -use leptos_dom::*; -use leptos_router::*; - -#[component] -pub fn TableCell( - cx: Scope, - children: Children, - #[prop(optional, into)] class: String, - #[prop(optional, into, default = 1)] colspan: i32, -) -> impl IntoView { - view! { cx, - - {children(cx)} - - } -} - -#[component] -pub fn TableRow( - cx: Scope, - children: Children, - #[prop(optional, into)] class: String, -) -> impl IntoView { - view! { cx, - {children(cx)} - } -} - -#[derive(Clone, Debug)] -pub struct ColumnHeader { - pub id: String, - pub label: String, - pub width: Option, - pub center: bool, -} - -impl IntoView for ColumnHeader { - fn into_view(self, cx: Scope) -> View { - match self.width { - Some(width) => view! { cx, - - {self.label} - - }, - None => view! { cx, - - {self.label} - - }, - }.into_view(cx) - } -} - -#[component] -pub fn Table( - cx: Scope, - children: Children, - // column_headers: Vec, - column_headers: Vec, -) -> impl IntoView { - view! { cx, - - - {column_headers} - - {children(cx)} -
- } -} diff --git a/app/src/functions.rs b/app/src/functions.rs index edbc7c8..bd79b84 100644 --- a/app/src/functions.rs +++ b/app/src/functions.rs @@ -1,3 +1,4 @@ +use std::convert::Infallible; #[cfg(feature = "ssr")] use std::sync::{ atomic::{AtomicI32, Ordering}, @@ -26,22 +27,6 @@ use leptos::*; use serde::{Deserialize, Serialize}; use thiserror::Error; -#[cfg(feature = "ssr")] -pub fn register_server_functions() -> Result<(), ServerFnError> { - GetServerCount::register()?; - AdjustServerCount::register()?; - ClearServerCount::register()?; - AddList::register()?; - FindList::register()?; - DeleteList::register()?; - AddTodo::register()?; - ListTodos::register()?; - DeleteTodo::register()?; - EditTodo::register()?; - ToggleTodo::register()?; - Ok(()) -} - #[cfg(feature = "ssr")] static COUNT: AtomicI32 = AtomicI32::new(0); @@ -86,13 +71,7 @@ pub async fn add_list( ) -> Result { let db = db(cx)?; - let list = lists::ActiveModel::new(title) - .insert(db.conn()) - .await - .map_err(|e| { - let str = format!("{e}"); - ServerFnError::ServerError(str) - })?; + let list = lists::ActiveModel::new(title).insert(db.conn()).await?; Ok(list) } @@ -106,14 +85,12 @@ pub async fn find_list( let list = lists::Entity::find_by_id(list_id) .one(db.conn()) - .await - .map_err(|e| ServerFnError::ServerError(format!("{e}")))?; - - if list.is_none() { - return Err(ServerFnError::ServerError("No list found".to_string())); - } + .await? + .ok_or_else(|| { + ServerFnError::ServerError("No list found".to_string()) + })?; - Ok(list.unwrap()) + Ok(list) } #[server(DeleteList, "/api")] @@ -123,22 +100,37 @@ pub async fn delete_list( ) -> Result<(), ServerFnError> { let db = db(cx)?; - let list = lists::Entity::find_by_id(list_id) - .one(db.conn()) - .await - .map_err(|e| ServerFnError::ServerError(format!("{e}")))?; + let list = lists::Entity::find_by_id(list_id).one(db.conn()).await?; if list.is_none() { return Err(ServerFnError::ServerError("No list found".to_string())); } - list.unwrap().delete(db.conn()).await.map_err(|_| { - ServerFnError::ServerError("No list deleted".to_string()) - })?; + list.unwrap().delete(db.conn()).await?; Ok(()) } +#[server(EditList, "/api")] +pub async fn edit_list( + cx: Scope, + list_id: uuid::Uuid, + title: String, +) -> Result<(), ServerFnError> { + let db = db(cx)?; + + let mut list: lists::ActiveModel = lists::Entity::find_by_id(list_id) + .one(db.conn()) + .await? + .ok_or_else(|| ServerFnError::ServerError("No list found".to_string()))? + .into(); + + list.title = entity::sea_orm::Set(title); + + list.update(db.conn()).await?; + Ok(()) +} + #[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)] pub enum Order { Asc, @@ -156,14 +148,11 @@ pub async fn list_todos( cx: Scope, list_id: uuid::Uuid, search: Option, - order_by: Option, + _order_by: Option, ) -> Result, ServerFnError> { let db = db(cx)?; - let list = lists::Entity::find_by_id(list_id) - .one(db.conn()) - .await - .map_err(|e| ServerFnError::ServerError(format!("{e}")))?; + let list = lists::Entity::find_by_id(list_id).one(db.conn()).await?; if list.is_none() { return Err(ServerFnError::ServerError("No list found".to_string())); @@ -184,11 +173,7 @@ pub async fn list_todos( let todos = todos .order_by_asc(todos::Column::CreatedAt) .all(db.conn()) - .await - .map_err(|err| { - tracing::error!("Failed to list todos: {}", err); - ServerFnError::ServerError("No todos found".to_string()) - })?; + .await?; Ok(todos) } @@ -199,6 +184,7 @@ pub async fn add_todo( list_id: uuid::Uuid, title: String, description: Option, + assignee: Option, due_date: Option, ) -> Result<(), ServerFnError> { let db = db(cx)?; @@ -206,19 +192,14 @@ pub async fn add_todo( let due_date = due_date .and_then(|str| if str.is_empty() { None } else { Some(str) }) .map(|string| { - let naive_date = NaiveDate::parse_from_str(&string, "%Y-%m-%d") - .map_err(|op| ServerFnError::ServerError(format!("{}", op)))?; - Ok(naive_date) + NaiveDate::parse_from_str(&string, "%Y-%m-%d") + .map_err(|op| ServerFnError::ServerError(format!("{}", op))) }) .transpose()?; - todos::ActiveModel::new(list_id, title, description, due_date) + todos::ActiveModel::new(list_id, title, description, assignee, due_date) .insert(db.conn()) - .await - .map_err(|e| { - let str = format!("{e}"); - ServerFnError::ServerError(str) - })?; + .await?; Ok(()) } @@ -233,12 +214,12 @@ pub async fn delete_todo( let todo = todos::Entity::find_by_id(id) .one(db.conn()) .await - .map_err(|_| ServerFnError::ServerError("No todo found".to_string()))? - .expect("should be unreachable #160"); + .map_err(|_| ServerFnError::ServerError("No todo found".to_string()))?; + + if let Some(todo) = todo { + todo.delete(db.conn()).await?; + } - todo.delete(db.conn()).await.map_err(|_| { - ServerFnError::ServerError("No todo deleted".to_string()) - })?; Ok(()) } @@ -255,26 +236,22 @@ pub async fn edit_todo( let due_date = due_date .and_then(|str| if str.is_empty() { None } else { Some(str) }) .map(|string| { - let naive_date = NaiveDate::parse_from_str(&string, "%Y-%m-%d") - .map_err(|op| ServerFnError::ServerError(format!("{}", op)))?; - Ok(naive_date) + NaiveDate::parse_from_str(&string, "%Y-%m-%d") + .map_err(|op| ServerFnError::ServerError(format!("{}", op))) }) .transpose()?; let mut updated: todos::ActiveModel = todos::Entity::find_by_id(id) .one(db.conn()) - .await - .map_err(|_| ServerFnError::ServerError("No todo found".to_string()))? - .expect("should be unreachable #183") + .await? + .ok_or_else(|| ServerFnError::ServerError("No todo found".to_string()))? .into(); updated.title = entity::sea_orm::Set(title); updated.description = entity::sea_orm::Set(description); updated.due_date = entity::sea_orm::Set(due_date); - updated.update(db.conn()).await.map_err(|_| { - ServerFnError::ServerError("No to-do updated".to_string()) - })?; + updated.update(db.conn()).await?; Ok(()) } @@ -287,16 +264,32 @@ pub async fn toggle_todo( let db = db(cx)?; let mut updated: todos::ActiveModel = todos::Entity::find_by_id(id) .one(db.conn()) - .await - .map_err(|_| ServerFnError::ServerError("No to-do found".to_string()))? - .unwrap() + .await? + .ok_or_else(|| { + ServerFnError::ServerError("No to-do found".to_string()) + })? .into(); updated.done = entity::sea_orm::Set(!updated.done.unwrap()); - updated.update(db.conn()).await.map_err(|_| { - ServerFnError::ServerError("No to-do updated".to_string()) - })?; + updated.update(db.conn()).await?; Ok(()) } + +#[server(FindTodo, "/api")] +pub async fn find_todo( + cx: Scope, + id: uuid::Uuid, +) -> Result { + let db = db(cx)?; + + let todo = todos::Entity::find_by_id(id) + .one(db.conn()) + .await? + .ok_or_else(|| { + ServerFnError::ServerError("No to-do found".to_string()) + })?; + + Ok(todo) +} diff --git a/app/src/lib.rs b/app/src/lib.rs index 30038b8..aacc44c 100644 --- a/app/src/lib.rs +++ b/app/src/lib.rs @@ -8,8 +8,6 @@ mod functions; mod pages; mod utils; -#[cfg(feature = "ssr")] -pub use functions::register_server_functions; use leptos::*; use leptos_meta::*; use leptos_router::*; @@ -32,25 +30,7 @@ pub fn App(cx: Scope) -> impl IntoView { } - } - /> - } - } - /> - } - } - /> - } + view! { cx, } } /> diff --git a/app/src/pages/about.rs b/app/src/pages/about.rs deleted file mode 100644 index 2d78469..0000000 --- a/app/src/pages/about.rs +++ /dev/null @@ -1,41 +0,0 @@ -use leptos::*; - -use crate::components::*; - -#[component] -pub fn AboutPage(cx: Scope) -> impl IntoView { - view! { cx, - -
-

"TodoVault: Your Privacy-Focused To-Do List Solution"

-

- "TodoVault is a free and open-source web application designed to manage your to-do lists and facilitate collaboration with others. Our goal is to offer an easy-to-use, self-hosted alternative to popular to-do list applications like Google Keep and Microsoft To-Do, while prioritizing privacy and security." -

-

- "Though our current feature set is limited, we are working diligently to develop a comprehensive to-do list solution that meets the needs of individuals and teams alike." -

-

"Key Features of Our Current Minimum Viable Product (MVP) Include:"

-
    -
  • "Support for multiple to-do lists"
  • -
  • "Create, read, update, and delete (CRUD) capabilities for tasks"
  • -
  • " To-do list sharing via link"
  • -
  • "Basic search functionality"
  • -
  • "Compatibility with common desktop and mobile viewport sizes"
  • -
-

"Exciting Additions on Our Development Roadmap:"

-
    -
  • "Optional passwords with server-side validation"
  • -
  • "Support for multiple languages"
  • -
  • "Real-time updates for seamless collaboration"
  • -
  • "Optional passwords with client-side end-to-end (E2E) encryption"
  • -
-

"We Are Committed to Avoiding the Following \"Anti-Features\":"

-
    -
  • "User tracking"
  • -
  • "Email sign-up requirements"
  • -
  • "Bundle size exceeding 2MB (gzipped)"
  • -
-
-
- } -} diff --git a/app/src/pages/index.rs b/app/src/pages/index.rs index d5701e3..ec00d72 100644 --- a/app/src/pages/index.rs +++ b/app/src/pages/index.rs @@ -1,13 +1,283 @@ +use entity::{lists, todos::Entity as Todo, uuid}; use leptos::*; +use leptos_icons::*; use leptos_router::*; -use crate::components::*; +use crate::{components::*, functions::*}; + +const STORAGE_KEY: &str = "my_todo_lists"; + +fn retrieve_from_local_storage() -> Vec { + let storage = window().local_storage(); + + if let Ok(Some(storage)) = storage { + let list_ids_opt = storage + .get_item(STORAGE_KEY) + .ok() + .flatten() + .and_then(|lists| { + let lists: Vec = + serde_json::from_str(&lists).ok()?; + Some(lists) + }); + if let Some(list_ids) = list_ids_opt { + list_ids + } else { + vec![] + } + } else { + vec![] + } +} + +pub fn add_to_local_storage(list_id: uuid::Uuid) { + let storage = window().local_storage(); + + if let Ok(Some(storage)) = storage { + let mut list_ids = retrieve_from_local_storage(); + if list_ids.contains(&list_id) { + return; + } + list_ids.push(list_id); + let list_ids = serde_json::to_string(&list_ids).unwrap(); + storage.set_item(STORAGE_KEY, &list_ids).unwrap(); + } +} + +pub fn remove_from_local_storage(list_id: uuid::Uuid) { + let storage = window().local_storage(); + + if let Ok(Some(storage)) = storage { + let mut list_ids = retrieve_from_local_storage(); + if !list_ids.contains(&list_id) { + return; + } + list_ids.retain(|id| id != &list_id); + let list_ids = serde_json::to_string(&list_ids).unwrap(); + storage.set_item(STORAGE_KEY, &list_ids).unwrap(); + } +} + +#[component] +fn Card( + cx: Scope, + children: Children, + #[prop(optional, into)] class: String, +) -> impl IntoView { + view! { cx, +
+
{children(cx)}
+
+ } +} + +#[component] +fn Spinner( + cx: Scope, + hidden: F, + #[prop(optional, into)] class: String, +) -> impl IntoView +where + F: Fn() -> bool + 'static, +{ + view! { cx, + + } +} + +#[component] +fn ListCard( + cx: Scope, + id: uuid::Uuid, + my_lists: Resource<(), Vec>, // size = 16 (0x10), align = 0x8 +) -> impl IntoView { + let delete_list_action = + create_multi_action(cx, move |delete_list_p: &DeleteList| { + let delete_list_p = delete_list_p.clone(); + async move { + tracing::info!("delete list: {:?}", delete_list_p.list_id); + // remove from resource + delete_list(cx, delete_list_p.list_id).await?; + my_lists.update(|lists| { + if let Some(lists) = lists { + lists.retain(|list| list.id != delete_list_p.list_id); + } + }); + remove_from_local_storage(delete_list_p.list_id); + Ok::<(), ServerFnError>(()) + } + }) + .using_server_fn::(); + let delete_list_pending = move || { + let submissions = delete_list_action.submissions().get(); + + let pending = submissions.iter().any(|s| s.pending().get()); + tracing::info!("delete_list_pending: {}", pending); + pending + }; + + let edit_list_action = + create_multi_action(cx.clone(), move |edit_list_p: &EditList| { + let cx = cx.clone(); + let edit_list_p = edit_list_p.clone(); + async move { + edit_list(cx, edit_list_p.list_id, edit_list_p.title.clone()) + .await?; + my_lists.update(move |lists| { + if let Some(lists) = lists { + lists.iter_mut().for_each(|list| { + if list.id == edit_list_p.list_id { + list.title = edit_list_p.title.clone(); + } + }); + } + }); + Ok::<(), ServerFnError>(()) + } + }); + let todo = move || { + let id = id.clone(); + let my_lists = my_lists + .read(cx.clone()) + .expect("my_lists") + .iter() + .filter(|list| list.id == id) + .next() + .expect("no list found") + .to_owned(); + + my_lists + }; + let (edit_mode, set_edit_mode) = create_signal(cx.clone(), false); + // show pencil button outside edit mode which starts edit mode + // show save button inside edit mode which saves the title (by submitting the form) + let edit_button = move || { + if edit_mode() { + view! {cx, + + }.into_view(cx) + } else { + view! {cx, + + }.into_view(cx) + } + }; + + view! { cx, + +
+ + +
+

{todo().title}

+ +
+
+ {move || edit_button()} +
+
+
+ + + + +
+
+ + // {format!("todo: {id}")} +
+ + } +} + +struct MyLists { + lists: Vec, +} #[component] pub fn IndexPage(cx: Scope) -> impl IntoView { + let my_lists = create_local_resource( + cx, + move || (), + move |_| async move { + let list_ids = retrieve_from_local_storage(); + let lists = list_ids + .into_iter() + .map(|list_id| find_list(cx, list_id)) + .collect::>(); + + // TODO: handle errors better (for deleted lists this is fine, + // but for other errors we should probably show an error message) + futures::future::join_all(lists) + .await + .into_iter() + .filter_map(Result::ok) + .collect() + }, + ); + + let add_list_action = + create_multi_action(cx, move |add_list_p: &AddList| { + let add_list_p = add_list_p.clone(); + async move { + let list = add_list(cx, add_list_p.title).await?; + add_to_local_storage(list.id); + my_lists.update(|lists: &mut Option>| { + if let Some(lists) = lists { + lists.push(list); + } + }); + tracing::info!("new_lists: {:?}", my_lists); + Ok::<(), ServerFnError>(()) + } + }) + .using_server_fn::(); + + let add_list_pending = move || { + let submissions = add_list_action.submissions().get(); + + let pending = submissions.iter().any(|s| s.pending().get()); + + tracing::info!("add_list_pending: {}", pending); + pending + }; + view! { cx, - - - +
+ } + } + /> + + + + +
} } diff --git a/app/src/pages/mod.rs b/app/src/pages/mod.rs index ad5a99c..575962f 100644 --- a/app/src/pages/mod.rs +++ b/app/src/pages/mod.rs @@ -1,9 +1,3 @@ -mod about; mod index; -mod my_todo_lists; -mod todo_list; -pub use about::*; pub use index::*; -pub use my_todo_lists::*; -pub use todo_list::*; diff --git a/app/src/pages/my_todo_lists.rs b/app/src/pages/my_todo_lists.rs deleted file mode 100644 index e368fc3..0000000 --- a/app/src/pages/my_todo_lists.rs +++ /dev/null @@ -1,206 +0,0 @@ -use entity::uuid; -use leptos::*; -use leptos_dom::*; -use leptos_router::*; - -use crate::{components::*, functions::*, utils}; - -const STORAGE_KEY: &str = "my_todo_lists"; - -fn retrieve_from_local_storage() -> Vec { - let storage = window().local_storage(); - - if let Ok(Some(storage)) = storage { - let list_ids_opt = storage - .get_item(STORAGE_KEY) - .ok() - .flatten() - .and_then(|lists| { - let lists: Vec = - serde_json::from_str(&lists).ok()?; - Some(lists) - }); - if let Some(list_ids) = list_ids_opt { - list_ids - } else { - vec![] - } - } else { - vec![] - } -} - -pub fn add_to_local_storage(list_id: uuid::Uuid) { - let storage = window().local_storage(); - - if let Ok(Some(storage)) = storage { - let mut list_ids = retrieve_from_local_storage(); - if list_ids.contains(&list_id) { - return; - } - list_ids.push(list_id); - let list_ids = serde_json::to_string(&list_ids).unwrap(); - storage.set_item(STORAGE_KEY, &list_ids).unwrap(); - } -} - -pub fn remove_from_local_storage(list_id: uuid::Uuid) { - let storage = window().local_storage(); - - if let Ok(Some(storage)) = storage { - let mut list_ids = retrieve_from_local_storage(); - if !list_ids.contains(&list_id) { - return; - } - list_ids.retain(|id| id != &list_id); - let list_ids = serde_json::to_string(&list_ids).unwrap(); - storage.set_item(STORAGE_KEY, &list_ids).unwrap(); - } -} - -#[component] -pub fn MyTodoListsPage(cx: Scope) -> impl IntoView { - tracing::info!("MyTodoListsPage"); - - let delete_list_action = - create_multi_action(cx.clone(), move |delete_list_p: &DeleteList| { - let cx = cx.clone(); - let delete_list_p = delete_list_p.clone(); - async move { - remove_from_local_storage(delete_list_p.list_id); - delete_list(cx, delete_list_p.list_id).await?; - Ok(()) - } - }) - .using_server_fn::(); - - let add_list_action = - create_multi_action(cx, move |add_list_p: &AddList| { - let cx = cx.clone(); - let add_list_p = add_list_p.clone(); - async move { - let list = add_list(cx, add_list_p.title).await?; - add_to_local_storage(list.id); - Ok(()) - } - }) - .using_server_fn::(); - - let add_list_fields = vec![FormField { - id: "title".to_string(), - label: Some("Title".to_string()), - input_type: FormFieldInputType::Text, - placeholder: "My To-Do List".to_string(), - value: "".to_string(), - required: true, - }]; - - let my_lists = create_local_resource( - cx, - move || { - ( - add_list_action.version().get(), - delete_list_action.version().get(), - ) - }, - move |_| { - let cx = cx.clone(); - async move { - let list_ids = retrieve_from_local_storage(); - let lists = list_ids - .into_iter() - .map(|list_id| find_list(cx.clone(), list_id)) - .collect::>(); - let lists = futures::future::join_all(lists).await; - let lists: Vec = - lists.into_iter().filter_map(Result::ok).collect(); - lists - } - }, - ); - - let column_headers = vec![ - ColumnHeader { - id: "title".to_string(), - label: "Title".to_string(), - width: None, - center: false, - }, - ColumnHeader { - id: "actions".to_string(), - label: "".to_string(), - width: Some(24), - center: false, - }, - ]; - - let no_lists_row = move || { - let lists = my_lists.read(cx); - if lists.is_none() || lists.unwrap_or(vec![]).is_empty() { - view! { cx, - - -
-
-
{Svg::AlertCircle}
- - "No lists found. " - "Click the button on the top left of this panel to add a list." - -
-
-
-
- } - .into_view(cx) - } else { - view! { cx, <> }.into_view(cx) - } - }; - - view! { cx, - -

- "My To-Do Lists" -

-
-
- -
- - } - }>{no_lists_row()} - - - {list.title} - - - - - - - - - } - } - /> -
-
-
- } -} diff --git a/app/src/pages/todo_list.rs b/app/src/pages/todo_list.rs deleted file mode 100644 index da5e431..0000000 --- a/app/src/pages/todo_list.rs +++ /dev/null @@ -1,354 +0,0 @@ -use std::{cell::RefCell, rc::Rc, sync::Arc}; - -use entity::{ - chrono, - todos::{self, Model}, - uuid, -}; -use js_sys::Function; -use leptos::{ev::MouseEvent, *}; -use leptos_dom::*; -use leptos_router::*; -use wasm_bindgen::{prelude::*, JsCast}; -use web_sys::{Document, DomRect, Element, Event, EventTarget, Window}; - -use super::add_to_local_storage; -use crate::{components::*, functions::*, utils::*}; - -#[component] -fn TodoRow( - cx: Scope, - todo: todos::Model, - delete_todo: Action>, - toggle_todo: Action>, - edit_todo: MultiAction>, -) -> impl IntoView { - let edit_todo_fields = vec![ - FormField { - id: "id".to_string(), - label: None, - input_type: FormFieldInputType::Hidden, - placeholder: "".to_string(), - value: todo.id.to_string(), - required: true, - }, - FormField { - id: "title".to_string(), - label: Some("Title".to_string()), - input_type: FormFieldInputType::Text, - placeholder: "Do things".to_string(), - value: todo.title.clone(), - required: true, - }, - FormField { - id: "description".to_string(), - label: Some("Description".to_string()), - input_type: FormFieldInputType::TextArea, - placeholder: "".to_string(), - value: todo.description.clone().unwrap_or("".to_string()), - required: false, - }, - FormField { - id: "due_date".to_string(), - label: Some("Due Date".to_string()), - input_type: FormFieldInputType::Date, - placeholder: "".to_string(), - value: todo - .due_date - .map(|dd| dd.format("%Y-%m-%d").to_string()) - .unwrap_or_else(|| "".to_string()), - required: false, - }, - ]; - - view! { cx, - - -
- -
-
- - {todo.title.clone()} - - - {todo.description.clone()} - - - - "Due Date: " - {todo - .due_date - .map(|dd| dd.format("%d.%m.%Y").to_string()) - .unwrap_or_else(|| "".to_string())} - - - - - - - - - -
- } -} - -#[component] -fn AddTodoDrawer( - cx: Scope, - list_id: uuid::Uuid, - add_todo: MultiAction>, -) -> impl IntoView { - let add_todo_fields = vec![ - FormField { - id: "list_id".to_string(), - label: None, - input_type: FormFieldInputType::Hidden, - placeholder: "".to_string(), - value: list_id.to_string(), - required: true, - }, - FormField { - id: "title".to_string(), - label: Some("Title".to_string()), - input_type: FormFieldInputType::Text, - placeholder: "Do things".to_string(), - value: "".to_string(), - required: true, - }, - FormField { - id: "description".to_string(), - label: Some("Description".to_string()), - input_type: FormFieldInputType::TextArea, - placeholder: "".to_string(), - value: "".to_string(), - required: false, - }, - FormField { - id: "due_date".to_string(), - label: Some("Due Date".to_string()), - input_type: FormFieldInputType::Date, - placeholder: "".to_string(), - value: "".to_string(), - required: false, - }, - ]; - - view! { cx, - - } -} - -#[component] -fn TodoList(cx: Scope, list_id: uuid::Uuid) -> impl IntoView { - let add_todo = create_server_multi_action::(cx); - let edit_todo = create_server_multi_action::(cx); - let delete_todo = create_server_action::(cx); - let toggle_todo = create_server_action::(cx); - let list_resource = create_resource( - cx, - move || (list_id,), - move |_| async move { find_list(cx, list_id).await }, - ); - - let (search, set_search) = create_signal(cx, "".to_string()); - let list_todos_resource = create_resource( - cx, - move || { - ( - add_todo.version().get(), - edit_todo.version().get(), - delete_todo.version().get(), - toggle_todo.version().get(), - search(), - list_id, - ) - }, - move |_| async move { - list_todos(cx, list_id, Some(search()), None) - .await - .unwrap_or_default() - }, - ); - - let column_headers = vec![ - ColumnHeader { - id: "checkbox".to_string(), - label: "".to_string(), - width: Some(4), - center: false, - }, - ColumnHeader { - id: "title".to_string(), - label: "Title".to_string(), - width: None, - center: false, - }, - ColumnHeader { - id: "description".to_string(), - label: "Description".to_string(), - width: None, - center: false, - }, - ColumnHeader { - id: "due_date".to_string(), - label: "Due Date".to_string(), - width: Some(16), - center: false, - }, - ColumnHeader { - id: "action".to_string(), - label: "Action".to_string(), - width: Some(48), - center: true, - }, - ]; - - let no_todos_row = move || { - if list_todos_resource.read(cx).unwrap_or_default().is_empty() { - if search().is_empty() { - view! { cx, - - -
-
-
{Svg::AlertCircle}
- - "No to-dos found. Click the button on the top left to add a new to-do." - -
-
-
-
- }.into_view(cx) - } else { - view! { cx, - - -
-
-
{Svg::AlertCircle}
- - "No to-dos found for the search term: " - {search()} - -
-
-
-
- } - .into_view(cx) - } - } else { - view! { cx, <> }.into_view(cx) - } - }; - - view! { cx, - <> - "Loading..." } - }> -

- {list_resource - .read(cx) - .map(|list| list.expect("no list").title.clone()) - .unwrap_or_else(|| "".to_string())} -

-
-
-
- -
- -
-
{Svg::Search}
-
- -
-
- "Loading..." } - }> - - {no_todos_row()} - - } - } - /> -
-
-
- - } -} - -#[component] -pub fn TodoListPage(cx: Scope) -> impl IntoView { - let params = use_params_map(cx); - let list_id = move || { - params.with(|params| { - let str = - params.get("list_id").cloned().unwrap_or_default().clone(); - - uuid::Uuid::parse_str(&str).unwrap_or_default() - }) - }; - - create_effect(cx, move |_| { - let list_id = list_id(); - add_to_local_storage(list_id); - }); - - view! { cx, - - - - } -} diff --git a/app/src/utils.rs b/app/src/utils.rs index ba69939..226073b 100644 --- a/app/src/utils.rs +++ b/app/src/utils.rs @@ -69,8 +69,6 @@ where let last_timeout_id = std::cell::RefCell::new(None); let callback = Rc::new(callback); - tracing::trace!("Setting up scroll listener"); - let on_scroll = Closure::wrap(Box::new(move |_: Event| { let now = js_sys::Date::now(); let mut last_event = last_event_time.borrow_mut(); @@ -82,7 +80,6 @@ where } } - tracing::trace!("Scroll event"); callback(); // Cancel the previously scheduled catch_last_closure @@ -92,7 +89,6 @@ where let catch_last_callback = callback.clone(); let catch_last_closure = Closure::once(move || { - tracing::trace!("Scroll event catch last"); catch_last_callback(); }); diff --git a/entity/Cargo.toml b/entity/Cargo.toml index 696c467..54334dd 100644 --- a/entity/Cargo.toml +++ b/entity/Cargo.toml @@ -14,33 +14,18 @@ migration = { path = "../migration", optional = true } async-std = { version = "=1.12.0", features = ["attributes", "tokio1"] } derive_more = "=0.99.17" -figment = { version = "=0.10.8", features = [ - "toml", - "json", - "env", - "yaml", -], optional = true } -serde = { version = "=1.0.160", features = [ - "derive", - "serde_derive", - "alloc", - "rc", -] } -thiserror = "=1.0.40" +figment = { version = "=0.10.10", features = ["toml", "json", "env", "yaml"], optional = true } +serde = { version = "=1.0.171", features = ["derive", "serde_derive", "alloc", "rc"] } +thiserror = "=1.0.43" tracing = { version = "=0.1.37" } -uuid = { version = "=1.3.1", features = ["v4", "v7"] } -chrono = { version = "=0.4.24", features = ["serde", "alloc"] } +uuid = { version = "=1.4.0", features = ["v4", "v7"] } +chrono = { version = "=0.4.26", features = ["serde", "alloc"] } [dependencies.sea-orm] -version = "=0.11.2" +version = "=0.11.3" features = ["with-time", "with-json", "with-uuid"] [features] default = ["server-side"] -server-side = [ - "dep:migration", - "dep:figment", - "sea-orm/runtime-tokio-rustls", - "sea-orm/sqlx-sqlite", -] +server-side = ["dep:migration", "dep:figment", "sea-orm/runtime-tokio-rustls", "sea-orm/sqlx-sqlite"] client-side = [] diff --git a/entity/src/lists.rs b/entity/src/lists.rs index 897da17..bf6d700 100644 --- a/entity/src/lists.rs +++ b/entity/src/lists.rs @@ -23,6 +23,15 @@ impl Related for Entity { } } +impl Default for Model { + fn default() -> Self { + Self { + id: uuid::Uuid::new_v4(), + title: "default".to_string(), + } + } +} + impl ActiveModelBehavior for ActiveModel {} impl ActiveModel { diff --git a/entity/src/prelude.rs b/entity/src/prelude.rs index 16ba042..7157fa6 100644 --- a/entity/src/prelude.rs +++ b/entity/src/prelude.rs @@ -1,3 +1,3 @@ //! `SeaORM` Entity. Generated by sea-orm-codegen 0.11.0 -pub use crate::todos::Entity as Todo; +pub use crate::{lists::Entity as List, todos::Entity as Todo}; diff --git a/entity/src/todos.rs b/entity/src/todos.rs index 838e883..986ce4b 100644 --- a/entity/src/todos.rs +++ b/entity/src/todos.rs @@ -19,6 +19,7 @@ pub struct Model { pub list_id: Uuid, pub title: String, pub description: Option, + pub assignee: Option, pub done: bool, pub due_date: Option, pub created_at: DateTimeUtc, @@ -58,6 +59,7 @@ impl Default for Model { list_id: uuid::Uuid::new_v4(), title: "default".to_string(), description: None, + assignee: None, done: false, due_date: None, created_at: chrono::Utc::now(), @@ -73,12 +75,14 @@ impl ActiveModel { list_id: uuid::Uuid, title: String, description: Option, + assignee: Option, due_date: Option, ) -> Self { Self { id: Set(uuid::Uuid::now_v7()), list_id: Set(list_id), title: Set(title), + assignee: Set(assignee), description: Set(description), due_date: Set(due_date), done: Set(false), diff --git a/migration/Cargo.toml b/migration/Cargo.toml index 3a7115c..5396f20 100644 --- a/migration/Cargo.toml +++ b/migration/Cargo.toml @@ -12,15 +12,9 @@ path = "src/lib.rs" async-std = { version = "=1.12.0", features = ["attributes", "tokio1"] } [dependencies.sea-orm-migration] -version = "=0.11.2" +version = "=0.11.3" features = ["runtime-tokio-rustls", "sqlx-sqlite"] [dependencies.sea-orm] -features = [ - "runtime-tokio-rustls", - "sqlx-sqlite", - "with-json", - "with-uuid", - "with-chrono", -] -version = "=0.11.2" +features = ["runtime-tokio-rustls", "sqlx-sqlite", "with-json", "with-uuid", "with-chrono"] +version = "=0.11.3" diff --git a/migration/src/lib.rs b/migration/src/lib.rs index 965b95c..76c3e1b 100644 --- a/migration/src/lib.rs +++ b/migration/src/lib.rs @@ -2,12 +2,16 @@ pub use sea_orm_migration::prelude::*; mod m20220101_000001_create_todos_table; +mod m20230415_105634_add_assignee_column; pub struct Migrator; #[async_trait::async_trait] impl MigratorTrait for Migrator { fn migrations() -> Vec> { - vec![Box::new(m20220101_000001_create_todos_table::Migration)] + vec![ + Box::new(m20220101_000001_create_todos_table::Migration), + Box::new(m20230415_105634_add_assignee_column::Migration), + ] } } diff --git a/migration/src/m20230415_105634_add_assignee_column.rs b/migration/src/m20230415_105634_add_assignee_column.rs new file mode 100644 index 0000000..99c3c10 --- /dev/null +++ b/migration/src/m20230415_105634_add_assignee_column.rs @@ -0,0 +1,36 @@ +use sea_orm_migration::prelude::*; + +#[derive(DeriveMigrationName)] +pub struct Migration; + +#[async_trait::async_trait] +impl MigrationTrait for Migration { + async fn up(&self, manager: &SchemaManager) -> Result<(), DbErr> { + manager + .alter_table( + Table::alter() + .table(Todos::Table) + .add_column(ColumnDef::new(Todos::Assignee).string()) + .to_owned(), + ) + .await + } + + async fn down(&self, manager: &SchemaManager) -> Result<(), DbErr> { + manager + .alter_table( + Table::alter() + .table(Todos::Table) + .drop_column(Todos::Assignee) + .to_owned(), + ) + .await + } +} + +/// Learn more at https://docs.rs/sea-query#iden +#[derive(Iden)] +enum Todos { + Table, + Assignee, +} diff --git a/package-lock.json b/package-lock.json index 3f5d373..5e74a57 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,6 +11,7 @@ "devDependencies": { "@tailwindcss/forms": "0.5.3", "@tailwindcss/typography": "0.5.9", + "daisyui": "3.1.9", "flowbite": "1.6.5", "flowbite-typography": "1.0.3", "rustywind": "0.15.3", @@ -214,6 +215,12 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "node_modules/colord": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", + "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==", + "dev": true + }, "node_modules/commander": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", @@ -229,6 +236,16 @@ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "dev": true }, + "node_modules/css-selector-tokenizer": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.8.0.tgz", + "integrity": "sha512-Jd6Ig3/pe62/qe5SBPTN8h8LeUg/pT4lLgtavPf7updwwHpvFzxvOQBHYj2LZDMjUnBzgvIUSjRcf6oT5HzHFg==", + "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "fastparse": "^1.1.2" + } + }, "node_modules/cssesc": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", @@ -241,6 +258,28 @@ "node": ">=4" } }, + "node_modules/daisyui": { + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/daisyui/-/daisyui-3.1.9.tgz", + "integrity": "sha512-GkQR3iLnTfxNsQz7EZXS5bPY65iJM7jdiHtQZWDpRVmBrMlq8Nmrc+t8XmjGdOmJljAPFjtMSD9E9zAnhXF7qg==", + "dev": true, + "dependencies": { + "colord": "^2.9", + "css-selector-tokenizer": "^0.8", + "postcss-js": "^4", + "tailwindcss": "^3" + }, + "engines": { + "node": ">=16.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/daisyui" + }, + "peerDependencies": { + "postcss": "^8" + } + }, "node_modules/debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", @@ -298,6 +337,12 @@ "node": ">= 6" } }, + "node_modules/fastparse": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz", + "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==", + "dev": true + }, "node_modules/fastq": { "version": "1.15.0", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", diff --git a/package.json b/package.json index 62b44e4..ad8d5b0 100644 --- a/package.json +++ b/package.json @@ -15,6 +15,7 @@ "@tailwindcss/typography": "0.5.9", "flowbite": "1.6.5", "flowbite-typography": "1.0.3", + "daisyui": "3.1.9", "rustywind": "0.15.3", "tailwindcss": "3.3.1" } diff --git a/rust-toolchain.toml b/rust-toolchain.toml index f57fce6..acdf534 100644 --- a/rust-toolchain.toml +++ b/rust-toolchain.toml @@ -1,5 +1,5 @@ [toolchain] -channel = "nightly-2023-04-07" -components = ["cargo", "rustfmt", "rustc-dev", "miri", "rust-src"] +channel = "nightly-2023-07-16" +components = ["cargo", "miri", "rustfmt", "rustc-dev", "rust-analyzer", "rust-src"] profile = "default" targets = ["x86_64-unknown-linux-gnu", "wasm32-unknown-unknown"] diff --git a/server/Cargo.toml b/server/Cargo.toml index b1fe6be..58abec5 100644 --- a/server/Cargo.toml +++ b/server/Cargo.toml @@ -11,33 +11,12 @@ leptos_axum = { workspace = true } leptos_meta = { workspace = true, features = ["ssr"] } leptos_router = { workspace = true, features = ["ssr"] } -axum = "=0.6.12" -tokio = "=1.27.0" +axum = "=0.6.18" +tokio = "=1.29.1" tower = "=0.4.13" -tower-http = { version = "=0.4.0", features = [ - "cors", - "fs", - "sensitive-headers", - "tokio", - "trace", - "tracing", - "uuid", -] } -thiserror = "=1.0.40" +tower-http = { version = "=0.4.1", features = ["cors", "fs", "sensitive-headers", "tokio", "trace", "tracing", "uuid"] } +thiserror = "=1.0.43" tracing = { version = "=0.1.37", features = ["async-await", "log"] } http = "=0.2.9" -serde = { version = "=1.0.160", features = [ - "derive", - "serde_derive", - "unstable", - "alloc", - "rc", -] } -tracing-subscriber = { version = "=0.3.16", features = [ - "once_cell", - "serde", - "serde_json", - "time", - "tracing", - "json", -] } +serde = { version = "=1.0.171", features = ["derive", "serde_derive", "unstable", "alloc", "rc"] } +tracing-subscriber = { version = "=0.3.17", features = ["once_cell", "serde", "serde_json", "time", "tracing", "json"] } diff --git a/server/src/fileserv.rs b/server/src/fileserv.rs index 501de1d..1b94c71 100644 --- a/server/src/fileserv.rs +++ b/server/src/fileserv.rs @@ -1,9 +1,6 @@ -use std::sync::Arc; - -use app::error_template::{AppError, ErrorTemplate, ErrorTemplateProps}; use axum::{ body::{boxed, Body, BoxBody}, - extract::Extension, + extract::State, http::{Request, Response, StatusCode, Uri}, response::{IntoResponse, Response as AxumResponse}, }; @@ -11,23 +8,22 @@ use leptos::*; use tower::ServiceExt; use tower_http::services::ServeDir; +use super::App; + pub async fn file_and_error_handler( uri: Uri, - Extension(options): Extension>, + State(options): State, req: Request, ) -> AxumResponse { - let options = &*options; 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 mut errors = Errors::default(); - errors.insert_with_default_key(AppError::NotFound); let handler = leptos_axum::render_app_to_stream( - options.clone(), - move |cx| view! { cx, }, + options.to_owned(), + move |cx| view! { cx, }, ); handler(req).await.into_response() } diff --git a/server/src/main.rs b/server/src/main.rs index cc7933a..0917fc0 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -5,9 +5,10 @@ use std::sync::Arc; use app::*; use axum::{ body::Body, - extract::{Extension, Path}, + extract::{Path, RawQuery, State}, response::{IntoResponse, Response}, routing::{get, post}, + Extension, Router, }; use entity::db::{Db, DbConfig}; @@ -29,12 +30,14 @@ async fn server_fn_handler( Extension(db): Extension>, path: Path, headers: HeaderMap, + raw_query: RawQuery, request: Request, ) -> impl IntoResponse { tracing::info!("serverfn: {:?}", path); handle_server_fns_with_context( path, headers, + raw_query, move |cx| { provide_context(cx, db.clone()); }, @@ -45,11 +48,11 @@ async fn server_fn_handler( async fn leptos_routes_handler( Extension(db): Extension>, - Extension(options): Extension>, + State(options): State, request: Request, ) -> Response { let handler = leptos_axum::render_app_to_stream_with_context( - (*options).clone(), + (options).clone(), move |cx| { provide_context(cx, db.clone()); }, @@ -62,8 +65,6 @@ async fn leptos_routes_handler( async fn main() { tracing_subscriber::fmt().with_max_level(Level::INFO).init(); - register_server_functions().expect("Failed to register server functions"); - // Setting get_configuration(None) means we'll be using cargo-leptos's env values let conf = get_configuration(None).await.unwrap(); let leptos_options = conf.leptos_options; @@ -78,7 +79,7 @@ async fn main() { .route("/api/*fn_name", post(server_fn_handler)) .leptos_routes_with_handler(routes, get(leptos_routes_handler)) .fallback(file_and_error_handler) - .layer(Extension(Arc::new(leptos_options))) + .with_state(leptos_options) .layer(Extension(Arc::new(db))) .layer(SetSensitiveRequestHeadersLayer::new(vec![ header::AUTHORIZATION, diff --git a/tailwind.config.js b/tailwind.config.js index 4d79802..c00ba67 100644 --- a/tailwind.config.js +++ b/tailwind.config.js @@ -7,6 +7,7 @@ module.exports = { "./node_modules/flowbite/**/*.js", ], safelist: [ + "hidden", "shadow-lg", "backdrop-blur-sm", "rounded-l-lg", @@ -57,5 +58,9 @@ module.exports = { require("@tailwindcss/forms"), require("flowbite/plugin"), require("flowbite-typography"), + require("daisyui"), ], + daisyui: { + logs: false, + }, }; diff --git a/wasm-lib/Cargo.toml b/wasm-lib/Cargo.toml index f49010a..3569335 100644 --- a/wasm-lib/Cargo.toml +++ b/wasm-lib/Cargo.toml @@ -9,7 +9,7 @@ crate-type = ["cdylib", "rlib"] [dependencies] app = { path = "../app", default-features = false, features = ["hydrate"] } leptos = { workspace = true, features = ["serde", "hydrate"] } -wasm-bindgen = "=0.2.84" +wasm-bindgen = { workspace = true } console_log = "=1.0.0" console_error_panic_hook = "=0.1.7" tracing = "=0.1.37"