diff --git a/.dockerignore b/.dockerignore
new file mode 100755
index 0000000..06dbac4
--- /dev/null
+++ b/.dockerignore
@@ -0,0 +1,3 @@
+.env
+target
+.git
diff --git a/Cargo.lock b/Cargo.lock
index 106fe4b..de0f381 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -1,6 +1,6 @@
# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
-version = 3
+version = 4
[[package]]
name = "addr2line"
@@ -17,18 +17,6 @@ version = "2.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627"
-[[package]]
-name = "ahash"
-version = "0.8.11"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011"
-dependencies = [
- "cfg-if",
- "once_cell",
- "version_check",
- "zerocopy",
-]
-
[[package]]
name = "aho-corasick"
version = "1.1.3"
@@ -38,12 +26,6 @@ dependencies = [
"memchr",
]
-[[package]]
-name = "allocator-api2"
-version = "0.2.21"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923"
-
[[package]]
name = "android-tzdata"
version = "0.1.1"
@@ -59,6 +41,18 @@ dependencies = [
"libc",
]
+[[package]]
+name = "any_spawner"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "41058deaa38c9d9dd933d6d238d825227cffa668e2839b52879f6619c63eee3b"
+dependencies = [
+ "futures",
+ "thiserror 2.0.12",
+ "tokio",
+ "wasm-bindgen-futures",
+]
+
[[package]]
name = "anyhow"
version = "1.0.95"
@@ -66,14 +60,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "34ac096ce696dc2fcabef30516bb13c0a68a11d30131d3df6f04711467681b04"
[[package]]
-name = "async-recursion"
-version = "1.1.1"
+name = "async-lock"
+version = "3.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11"
+checksum = "ff6e472cdea888a4bd64f342f09b3f50e1886d32afe8df3d663c01140b811b18"
dependencies = [
- "proc-macro2",
- "quote",
- "syn 2.0.96",
+ "event-listener",
+ "event-listener-strategy",
+ "pin-project-lite",
]
[[package]]
@@ -84,7 +78,7 @@ checksum = "3f934833b4b7233644e5848f235df3f57ed8c80f1528a26c3dfa13d2147fa056"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.96",
+ "syn",
]
[[package]]
@@ -95,32 +89,32 @@ checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0"
[[package]]
name = "attribute-derive"
-version = "0.9.2"
+version = "0.10.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1f1ee502851995027b06f99f5ffbeffa1406b38d0b318a1ebfa469332c6cbafd"
+checksum = "0053e96dd3bec5b4879c23a138d6ef26f2cb936c9cdc96274ac2b9ed44b5bb54"
dependencies = [
"attribute-derive-macro",
"derive-where",
"manyhow",
"proc-macro2",
"quote",
- "syn 2.0.96",
+ "syn",
]
[[package]]
name = "attribute-derive-macro"
-version = "0.9.2"
+version = "0.10.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3601467f634cfe36c4780ca9c75dea9a5b34529c1f2810676a337e7e0997f954"
+checksum = "463b53ad0fd5b460af4b1915fe045ff4d946d025fb6c4dc3337752eaa980f71b"
dependencies = [
"collection_literals",
"interpolator",
"manyhow",
- "proc-macro-utils 0.8.0",
+ "proc-macro-utils",
"proc-macro2",
"quote",
"quote-use",
- "syn 2.0.96",
+ "syn",
]
[[package]]
@@ -139,10 +133,10 @@ dependencies = [
"axum-core",
"bytes",
"futures-util",
- "http 1.2.0",
- "http-body 1.0.1",
+ "http",
+ "http-body",
"http-body-util",
- "hyper 1.5.2",
+ "hyper",
"hyper-util",
"itoa",
"matchit",
@@ -156,9 +150,9 @@ dependencies = [
"serde_json",
"serde_path_to_error",
"serde_urlencoded",
- "sync_wrapper 1.0.2",
+ "sync_wrapper",
"tokio",
- "tower 0.5.2",
+ "tower",
"tower-layer",
"tower-service",
"tracing",
@@ -173,13 +167,13 @@ dependencies = [
"async-trait",
"bytes",
"futures-util",
- "http 1.2.0",
- "http-body 1.0.1",
+ "http",
+ "http-body",
"http-body-util",
"mime",
"pin-project-lite",
"rustversion",
- "sync_wrapper 1.0.2",
+ "sync_wrapper",
"tower-layer",
"tower-service",
"tracing",
@@ -200,30 +194,27 @@ dependencies = [
"windows-targets 0.52.6",
]
-[[package]]
-name = "base64"
-version = "0.21.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567"
-
[[package]]
name = "base64"
version = "0.22.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6"
-[[package]]
-name = "bitflags"
-version = "1.3.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
-
[[package]]
name = "bitflags"
version = "2.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8f68f53c83ab957f72c32642f3868eec03eb974d1fb82e453128456482613d36"
+[[package]]
+name = "block-buffer"
+version = "0.10.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71"
+dependencies = [
+ "generic-array",
+]
+
[[package]]
name = "bumpalo"
version = "3.16.0"
@@ -236,48 +227,6 @@ version = "1.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "325918d6fe32f23b19878fe4b34794ae41fc19ddbe53b10571a4874d44ffd39b"
-[[package]]
-name = "cached"
-version = "0.45.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "90eb5776f28a149524d1d8623035760b4454ec881e8cf3838fa8d7e1b11254b3"
-dependencies = [
- "cached_proc_macro",
- "cached_proc_macro_types",
- "hashbrown 0.13.2",
- "instant",
- "once_cell",
- "thiserror",
-]
-
-[[package]]
-name = "cached_proc_macro"
-version = "0.18.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c878c71c2821aa2058722038a59a67583a4240524687c6028571c9b395ded61f"
-dependencies = [
- "darling 0.14.4",
- "proc-macro2",
- "quote",
- "syn 1.0.109",
-]
-
-[[package]]
-name = "cached_proc_macro_types"
-version = "0.1.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ade8366b8bd5ba243f0a58f036cc0ca8a2f069cff1a2351ef1cac6b083e16fc0"
-
-[[package]]
-name = "calendrical_calculations"
-version = "0.1.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f27ca2b6e2f7d75f43e001ded6f25e79b80bded5abbe764cbdf78c25a3051f4b"
-dependencies = [
- "core_maths",
- "displaydoc",
-]
-
[[package]]
name = "camino"
version = "1.1.9"
@@ -309,45 +258,19 @@ dependencies = [
"iana-time-zone",
"js-sys",
"num-traits",
- "serde",
"wasm-bindgen",
"windows-targets 0.52.6",
]
-[[package]]
-name = "ciborium"
-version = "0.2.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "42e69ffd6f0917f5c029256a24d0161db17cea3997d185db0d35926308770f0e"
-dependencies = [
- "ciborium-io",
- "ciborium-ll",
- "serde",
-]
-
-[[package]]
-name = "ciborium-io"
-version = "0.2.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "05afea1e0a06c9be33d539b876f1ce3692f4afea2cb41f740e7743225ed1c757"
-
-[[package]]
-name = "ciborium-ll"
-version = "0.2.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "57663b653d948a338bfb3eeba9bb2fd5fcfaecb9e199e87e1eda4d9e8b240fd9"
-dependencies = [
- "ciborium-io",
- "half",
-]
-
[[package]]
name = "codee"
-version = "0.2.0"
+version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5d3ad3122b0001c7f140cf4d605ef9a9e2c24d96ab0b4fb4347b76de2425f445"
+checksum = "0f18d705321923b1a9358e3fc3c57c3b50171196827fc7f5f10b053242aca627"
dependencies = [
- "thiserror",
+ "serde",
+ "serde_json",
+ "thiserror 2.0.12",
]
[[package]]
@@ -357,16 +280,25 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "186dce98367766de751c42c4f03970fc60fc012296e706ccbb9d5df9b6c1e271"
[[package]]
-name = "config"
-version = "0.14.1"
+name = "concurrent-queue"
+version = "2.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "68578f196d2a33ff61b27fae256c3164f65e36382648e30666dde05b8cc9dfdf"
+checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973"
dependencies = [
- "convert_case",
- "nom",
+ "crossbeam-utils",
+]
+
+[[package]]
+name = "config"
+version = "0.15.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "595aae20e65c3be792d05818e8c63025294ac3cb7e200f11459063a352a6ef80"
+dependencies = [
+ "convert_case 0.6.0",
"pathdiff",
"serde",
"toml",
+ "winnow 0.7.7",
]
[[package]]
@@ -400,17 +332,10 @@ dependencies = [
]
[[package]]
-name = "contentful"
-version = "0.8.0"
+name = "const_str_slice_concat"
+version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "018e4ff43b3f2b29233a927971adb0be725ea44f3d81cec4542eedbe11b8aa96"
-dependencies = [
- "chrono",
- "log",
- "reqwest 0.11.27",
- "serde",
- "serde_json",
-]
+checksum = "f67855af358fcb20fac58f9d714c94e2b228fe5694c1c9b4ead4a366343eda1b"
[[package]]
name = "convert_case"
@@ -421,6 +346,15 @@ dependencies = [
"unicode-segmentation",
]
+[[package]]
+name = "convert_case"
+version = "0.7.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bb402b8d4c85569410425650ce3eddc7d698ed96d39a73f941b08fb63082f1e7"
+dependencies = [
+ "unicode-segmentation",
+]
+
[[package]]
name = "cookie"
version = "0.18.1"
@@ -449,28 +383,28 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b"
[[package]]
-name = "core_maths"
-version = "0.1.0"
+name = "cpufeatures"
+version = "0.2.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e3b02505ccb8c50b0aa21ace0fc08c3e53adebd4e58caa18a36152803c7709a3"
+checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280"
dependencies = [
- "libm",
+ "libc",
]
[[package]]
-name = "crunchy"
-version = "0.2.3"
+name = "crossbeam-utils"
+version = "0.8.21"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "43da5946c66ffcc7745f48db692ffbb10a83bfe0afd96235c5c2a4fb23994929"
+checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28"
[[package]]
-name = "darling"
-version = "0.14.4"
+name = "crypto-common"
+version = "0.1.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7b750cb3417fd1b327431a470f388520309479ab0bf5e323505daf0290cd3850"
+checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3"
dependencies = [
- "darling_core 0.14.4",
- "darling_macro 0.14.4",
+ "generic-array",
+ "typenum",
]
[[package]]
@@ -479,22 +413,8 @@ version = "0.20.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6f63b86c8a8826a49b8c21f08a2d07338eec8d900540f8630dc76284be802989"
dependencies = [
- "darling_core 0.20.10",
- "darling_macro 0.20.10",
-]
-
-[[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 0.10.0",
- "syn 1.0.109",
+ "darling_core",
+ "darling_macro",
]
[[package]]
@@ -507,19 +427,8 @@ dependencies = [
"ident_case",
"proc-macro2",
"quote",
- "strsim 0.11.1",
- "syn 2.0.96",
-]
-
-[[package]]
-name = "darling_macro"
-version = "0.14.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a4aab4dbc9f7611d8b55048a3a16d2d010c2c8334e46304b40ac1cc14bf3b48e"
-dependencies = [
- "darling_core 0.14.4",
- "quote",
- "syn 1.0.109",
+ "strsim",
+ "syn",
]
[[package]]
@@ -528,18 +437,19 @@ version = "0.20.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806"
dependencies = [
- "darling_core 0.20.10",
+ "darling_core",
"quote",
- "syn 2.0.96",
+ "syn",
]
[[package]]
name = "dashmap"
-version = "5.5.3"
+version = "6.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856"
+checksum = "5041cc499144891f3790297212f32a74fb938e5136a14943f338ef9e0ae276cf"
dependencies = [
"cfg-if",
+ "crossbeam-utils",
"hashbrown 0.14.5",
"lock_api",
"once_cell",
@@ -552,10 +462,10 @@ version = "0.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e0df63c21a4383f94bd5388564829423f35c316aed85dc4f8427aded372c7c0d"
dependencies = [
- "darling 0.20.10",
+ "darling",
"proc-macro2",
"quote",
- "syn 2.0.96",
+ "syn",
]
[[package]]
@@ -575,7 +485,17 @@ checksum = "62d671cc41a825ebabc75757b62d3d168c577f9149b2d49ece1dad1f72119d25"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.96",
+ "syn",
+]
+
+[[package]]
+name = "digest"
+version = "0.10.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292"
+dependencies = [
+ "block-buffer",
+ "crypto-common",
]
[[package]]
@@ -586,7 +506,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.96",
+ "syn",
]
[[package]]
@@ -601,12 +521,28 @@ version = "0.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "669a445ee724c5c69b1b06fe0b63e70a1c84bc9bb7d9696cd4f4e3ec45050408"
+[[package]]
+name = "dyn-clone"
+version = "1.0.19"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1c7a8fb8a9fbf66c1f703fe16184d10ca0ee9d23be5b4436400408ba54a95005"
+
[[package]]
name = "either"
version = "1.13.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0"
+[[package]]
+name = "either_of"
+version = "0.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "216d23e0ec69759a17f05e1c553f3a6870e5ec73420fbb07807a6f34d5d1d5a4"
+dependencies = [
+ "paste",
+ "pin-project-lite",
+]
+
[[package]]
name = "encoding_rs"
version = "0.8.35"
@@ -624,14 +560,35 @@ checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5"
[[package]]
name = "errno"
-version = "0.3.10"
+version = "0.3.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "33d852cb9b869c2a9b3df2f71a3074817f01e1844f839a144f5fcef059a4eb5d"
+checksum = "976dd42dc7e85965fe702eb8164f21f450704bdde31faefd6471dba214cb594e"
dependencies = [
"libc",
"windows-sys 0.59.0",
]
+[[package]]
+name = "event-listener"
+version = "5.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3492acde4c3fc54c845eaab3eed8bd00c7a7d881f78bfc801e43a93dec1331ae"
+dependencies = [
+ "concurrent-queue",
+ "parking",
+ "pin-project-lite",
+]
+
+[[package]]
+name = "event-listener-strategy"
+version = "0.5.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8be9f3dfaaffdae2972880079a491a1a8bb7cbed0b8dd7a347f668b4150a3b93"
+dependencies = [
+ "event-listener",
+ "pin-project-lite",
+]
+
[[package]]
name = "fastrand"
version = "2.3.0"
@@ -720,6 +677,7 @@ dependencies = [
"futures-core",
"futures-task",
"futures-util",
+ "num_cpus",
]
[[package]]
@@ -736,7 +694,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.96",
+ "syn",
]
[[package]]
@@ -769,6 +727,16 @@ dependencies = [
"slab",
]
+[[package]]
+name = "generic-array"
+version = "0.14.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a"
+dependencies = [
+ "typenum",
+ "version_check",
+]
+
[[package]]
name = "getrandom"
version = "0.2.15"
@@ -776,10 +744,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7"
dependencies = [
"cfg-if",
- "js-sys",
"libc",
- "wasi",
- "wasm-bindgen",
+ "wasi 0.11.0+wasi-snapshot-preview1",
+]
+
+[[package]]
+name = "getrandom"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "73fea8450eea4bac3940448fb7ae50d91f034f941199fcd9d909a5a07aa455f0"
+dependencies = [
+ "cfg-if",
+ "libc",
+ "r-efi",
+ "wasi 0.14.2+wasi-0.2.4",
]
[[package]]
@@ -798,12 +776,12 @@ dependencies = [
"futures-core",
"futures-sink",
"gloo-utils",
- "http 1.2.0",
+ "http",
"js-sys",
"pin-project",
"serde",
"serde_json",
- "thiserror",
+ "thiserror 1.0.69",
"wasm-bindgen",
"wasm-bindgen-futures",
"web-sys",
@@ -823,36 +801,23 @@ dependencies = [
]
[[package]]
-name = "h2"
-version = "0.3.26"
+name = "guardian"
+version = "1.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8"
-dependencies = [
- "bytes",
- "fnv",
- "futures-core",
- "futures-sink",
- "futures-util",
- "http 0.2.12",
- "indexmap",
- "slab",
- "tokio",
- "tokio-util",
- "tracing",
-]
+checksum = "17e2ac29387b1aa07a1e448f7bb4f35b500787971e965b02842b900afa5c8f6f"
[[package]]
name = "h2"
-version = "0.4.7"
+version = "0.4.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ccae279728d634d083c00f6099cb58f01cc99c145b84b8be2f6c74618d79922e"
+checksum = "75249d144030531f8dee69fe9cea04d3edf809a017ae445e2abdff6629e86633"
dependencies = [
"atomic-waker",
"bytes",
"fnv",
"futures-core",
"futures-sink",
- "http 1.2.0",
+ "http",
"indexmap",
"slab",
"tokio",
@@ -860,31 +825,11 @@ dependencies = [
"tracing",
]
-[[package]]
-name = "half"
-version = "2.4.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6dd08c532ae367adf81c312a4580bc67f1d0fe8bc9c460520283f4c0ff277888"
-dependencies = [
- "cfg-if",
- "crunchy",
-]
-
-[[package]]
-name = "hashbrown"
-version = "0.13.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e"
-
[[package]]
name = "hashbrown"
version = "0.14.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1"
-dependencies = [
- "ahash",
- "allocator-api2",
-]
[[package]]
name = "hashbrown"
@@ -892,6 +837,12 @@ version = "0.15.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289"
+[[package]]
+name = "hermit-abi"
+version = "0.3.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024"
+
[[package]]
name = "html-escape"
version = "0.2.13"
@@ -901,17 +852,6 @@ dependencies = [
"utf8-width",
]
-[[package]]
-name = "http"
-version = "0.2.12"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1"
-dependencies = [
- "bytes",
- "fnv",
- "itoa",
-]
-
[[package]]
name = "http"
version = "1.2.0"
@@ -923,17 +863,6 @@ dependencies = [
"itoa",
]
-[[package]]
-name = "http-body"
-version = "0.4.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2"
-dependencies = [
- "bytes",
- "http 0.2.12",
- "pin-project-lite",
-]
-
[[package]]
name = "http-body"
version = "1.0.1"
@@ -941,7 +870,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184"
dependencies = [
"bytes",
- "http 1.2.0",
+ "http",
]
[[package]]
@@ -952,8 +881,8 @@ checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f"
dependencies = [
"bytes",
"futures-util",
- "http 1.2.0",
- "http-body 1.0.1",
+ "http",
+ "http-body",
"pin-project-lite",
]
@@ -976,27 +905,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9"
[[package]]
-name = "hyper"
-version = "0.14.32"
+name = "hydration_context"
+version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "41dfc780fdec9373c01bae43289ea34c972e40ee3c9f6b3c8801a35f35586ce7"
+checksum = "ef13071fe13b55c85fe2b70246d2e3b49d2c6a764fd3e0edaf262cc385ff1854"
dependencies = [
- "bytes",
- "futures-channel",
- "futures-core",
- "futures-util",
- "h2 0.3.26",
- "http 0.2.12",
- "http-body 0.4.6",
- "httparse",
- "httpdate",
- "itoa",
+ "futures",
+ "js-sys",
+ "once_cell",
+ "or_poisoned",
"pin-project-lite",
- "socket2",
- "tokio",
- "tower-service",
- "tracing",
- "want",
+ "serde",
+ "throw_error",
+ "wasm-bindgen",
]
[[package]]
@@ -1008,9 +929,9 @@ dependencies = [
"bytes",
"futures-channel",
"futures-util",
- "h2 0.4.7",
- "http 1.2.0",
- "http-body 1.0.1",
+ "h2",
+ "http",
+ "http-body",
"httparse",
"httpdate",
"itoa",
@@ -1027,8 +948,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2d191583f3da1305256f22463b9bb0471acad48a4e534a5218b9963e9c1f59b2"
dependencies = [
"futures-util",
- "http 1.2.0",
- "hyper 1.5.2",
+ "http",
+ "hyper",
"hyper-util",
"rustls",
"rustls-pki-types",
@@ -1037,19 +958,6 @@ dependencies = [
"tower-service",
]
-[[package]]
-name = "hyper-tls"
-version = "0.5.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905"
-dependencies = [
- "bytes",
- "hyper 0.14.32",
- "native-tls",
- "tokio",
- "tokio-native-tls",
-]
-
[[package]]
name = "hyper-tls"
version = "0.6.0"
@@ -1058,7 +966,7 @@ checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0"
dependencies = [
"bytes",
"http-body-util",
- "hyper 1.5.2",
+ "hyper",
"hyper-util",
"native-tls",
"tokio",
@@ -1075,9 +983,9 @@ dependencies = [
"bytes",
"futures-channel",
"futures-util",
- "http 1.2.0",
- "http-body 1.0.1",
- "hyper 1.5.2",
+ "http",
+ "http-body",
+ "hyper",
"pin-project-lite",
"socket2",
"tokio",
@@ -1108,100 +1016,6 @@ dependencies = [
"cc",
]
-[[package]]
-name = "icu"
-version = "1.5.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dff5e3018d703f168b00dcefa540a65f1bbc50754ae32f3f5f0e43fe5ee51502"
-dependencies = [
- "icu_calendar",
- "icu_casemap",
- "icu_collator",
- "icu_collections",
- "icu_datetime",
- "icu_decimal",
- "icu_experimental",
- "icu_list",
- "icu_locid",
- "icu_locid_transform",
- "icu_normalizer",
- "icu_plurals",
- "icu_properties",
- "icu_provider",
- "icu_segmenter",
- "icu_timezone",
-]
-
-[[package]]
-name = "icu_calendar"
-version = "1.5.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7265b2137f9a36f7634a308d91f984574bbdba8cfd95ceffe1c345552275a8ff"
-dependencies = [
- "calendrical_calculations",
- "displaydoc",
- "icu_calendar_data",
- "icu_locid",
- "icu_locid_transform",
- "icu_provider",
- "tinystr",
- "writeable",
- "zerovec",
-]
-
-[[package]]
-name = "icu_calendar_data"
-version = "1.5.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8e009b7f0151ee6fb28c40b1283594397e0b7183820793e9ace3dcd13db126d0"
-
-[[package]]
-name = "icu_casemap"
-version = "1.5.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9ff0c8ae9f8d31b12e27fc385ff9ab1f3cd9b17417c665c49e4ec958c37da75f"
-dependencies = [
- "displaydoc",
- "icu_casemap_data",
- "icu_collections",
- "icu_locid",
- "icu_properties",
- "icu_provider",
- "writeable",
- "zerovec",
-]
-
-[[package]]
-name = "icu_casemap_data"
-version = "1.5.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4d57966d5ab748f74513be4046867f9a20e801e2775d41f91d04a0f560b61f08"
-
-[[package]]
-name = "icu_collator"
-version = "1.5.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d370371887d31d56f361c3eaa15743e54f13bc677059c9191c77e099ed6966b2"
-dependencies = [
- "displaydoc",
- "icu_collator_data",
- "icu_collections",
- "icu_locid_transform",
- "icu_normalizer",
- "icu_properties",
- "icu_provider",
- "smallvec",
- "utf16_iter",
- "utf8_iter",
- "zerovec",
-]
-
-[[package]]
-name = "icu_collator_data"
-version = "1.5.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8ee3f88741364b7d6269cce6827a3e6a8a2cf408a78f766c9224ab479d5e4ae5"
-
[[package]]
name = "icu_collections"
version = "1.5.0"
@@ -1214,111 +1028,6 @@ dependencies = [
"zerovec",
]
-[[package]]
-name = "icu_datetime"
-version = "1.5.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d115efb85e08df3fd77e77f52e7e087545a783fffba8be80bfa2102f306b1780"
-dependencies = [
- "displaydoc",
- "either",
- "fixed_decimal",
- "icu_calendar",
- "icu_datetime_data",
- "icu_decimal",
- "icu_locid",
- "icu_locid_transform",
- "icu_plurals",
- "icu_provider",
- "icu_timezone",
- "smallvec",
- "tinystr",
- "writeable",
- "zerovec",
-]
-
-[[package]]
-name = "icu_datetime_data"
-version = "1.5.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2ba7e7f7a01269b9afb0a39eff4f8676f693b55f509b3120e43a0350a9f88bea"
-
-[[package]]
-name = "icu_decimal"
-version = "1.5.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fb8fd98f86ec0448d85e1edf8884e4e318bb2e121bd733ec929a05c0a5e8b0eb"
-dependencies = [
- "displaydoc",
- "fixed_decimal",
- "icu_decimal_data",
- "icu_locid_transform",
- "icu_provider",
- "writeable",
-]
-
-[[package]]
-name = "icu_decimal_data"
-version = "1.5.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8d424c994071c6f5644f999925fc868c85fec82295326e75ad5017bc94b41523"
-
-[[package]]
-name = "icu_experimental"
-version = "0.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "844ad7b682a165c758065d694bc4d74ac67f176da1c499a04d85d492c0f193b7"
-dependencies = [
- "displaydoc",
- "fixed_decimal",
- "icu_collections",
- "icu_decimal",
- "icu_experimental_data",
- "icu_locid",
- "icu_locid_transform",
- "icu_normalizer",
- "icu_pattern",
- "icu_plurals",
- "icu_properties",
- "icu_provider",
- "litemap",
- "num-bigint",
- "num-rational",
- "num-traits",
- "smallvec",
- "tinystr",
- "writeable",
- "zerofrom",
- "zerotrie",
- "zerovec",
-]
-
-[[package]]
-name = "icu_experimental_data"
-version = "0.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9c178b9a34083fca5bd70d61f647575335e9c197d0f30c38e8ccd187babc69d0"
-
-[[package]]
-name = "icu_list"
-version = "1.5.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bbfeda1d7775b6548edd4e8b7562304a559a91ed56ab56e18961a053f367c365"
-dependencies = [
- "displaydoc",
- "icu_list_data",
- "icu_locid_transform",
- "icu_provider",
- "regex-automata 0.2.0",
- "writeable",
-]
-
-[[package]]
-name = "icu_list_data"
-version = "1.5.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e1825170d2c6679cb20dbd96a589d034e49f698aed9a2ef4fafc9a0101ed298f"
-
[[package]]
name = "icu_locid"
version = "1.5.0"
@@ -1376,19 +1085,6 @@ version = "1.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f8cafbf7aa791e9b22bec55a167906f9e1215fd475cd22adfcf660e03e989516"
-[[package]]
-name = "icu_pattern"
-version = "0.2.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cb7f36aafd098d6717de34e668a8120822275c1fba22b936e757b7de8a2fd7e4"
-dependencies = [
- "displaydoc",
- "either",
- "writeable",
- "yoke",
- "zerofrom",
-]
-
[[package]]
name = "icu_plurals"
version = "1.5.0"
@@ -1455,52 +1151,9 @@ checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.96",
+ "syn",
]
-[[package]]
-name = "icu_segmenter"
-version = "1.5.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a717725612346ffc2d7b42c94b820db6908048f39434504cb130e8b46256b0de"
-dependencies = [
- "core_maths",
- "displaydoc",
- "icu_collections",
- "icu_locid",
- "icu_provider",
- "icu_segmenter_data",
- "utf8_iter",
- "zerovec",
-]
-
-[[package]]
-name = "icu_segmenter_data"
-version = "1.5.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f739ee737260d955e330bc83fdeaaf1631f7fb7ed218761d3c04bb13bb7d79df"
-
-[[package]]
-name = "icu_timezone"
-version = "1.5.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "aa91ba6a585939a020c787235daa8aee856d9bceebd6355e283c0c310bc6de96"
-dependencies = [
- "displaydoc",
- "icu_calendar",
- "icu_provider",
- "icu_timezone_data",
- "tinystr",
- "zerotrie",
- "zerovec",
-]
-
-[[package]]
-name = "icu_timezone_data"
-version = "1.5.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c588878c508a3e2ace333b3c50296053e6483c6a7541251b546cc59dcd6ced8e"
-
[[package]]
name = "ident_case"
version = "1.0.1"
@@ -1538,15 +1191,6 @@ dependencies = [
"hashbrown 0.15.2",
]
-[[package]]
-name = "instant"
-version = "0.1.13"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222"
-dependencies = [
- "cfg-if",
-]
-
[[package]]
name = "interpolator"
version = "0.5.0"
@@ -1570,9 +1214,9 @@ checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130"
[[package]]
name = "itertools"
-version = "0.12.1"
+version = "0.14.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569"
+checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285"
dependencies = [
"either",
]
@@ -1585,13 +1229,25 @@ checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674"
[[package]]
name = "js-sys"
-version = "0.3.72"
+version = "0.3.77"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6a88f1bda2bd75b0452a14784937d796722fdebfe50df998aeb3f0b7603019a9"
+checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f"
dependencies = [
+ "once_cell",
"wasm-bindgen",
]
+[[package]]
+name = "json5"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "96b0db21af676c1ce64250b5f40f3ce2cf27e4e47cb91ed91eb6fe9350b430c1"
+dependencies = [
+ "pest",
+ "pest_derive",
+ "serde",
+]
+
[[package]]
name = "lazy_static"
version = "1.5.0"
@@ -1600,42 +1256,60 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe"
[[package]]
name = "leptos"
-version = "0.6.15"
+version = "0.7.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0cbb3237c274dadf00dcc27db96c52601b40375117178fb24a991cda073624f0"
+checksum = "26b8731cb00f3f0894058155410b95c8955b17273181d2bc72600ab84edd24f1"
dependencies = [
+ "any_spawner",
+ "base64",
"cfg-if",
+ "either_of",
+ "futures",
+ "hydration_context",
"leptos_config",
"leptos_dom",
+ "leptos_hot_reload",
"leptos_macro",
- "leptos_reactive",
"leptos_server",
+ "oco_ref",
+ "or_poisoned",
+ "paste",
+ "rand",
+ "reactive_graph",
+ "rustc-hash",
+ "send_wrapper",
+ "serde",
+ "serde_qs",
"server_fn",
- "tracing",
- "typed-builder 0.18.2",
- "typed-builder-macro 0.18.2",
+ "slotmap",
+ "tachys",
+ "thiserror 2.0.12",
+ "throw_error",
+ "typed-builder",
+ "typed-builder-macro",
"wasm-bindgen",
"web-sys",
]
[[package]]
name = "leptos-use"
-version = "0.13.13"
+version = "0.15.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "789bf9f4337e6ebd8f1b407e3f762fdc538d48dc145f9d1dce2338014b38f4dd"
+checksum = "e612389629007497d1e90deecf5bddd790e59e32358546fa7beaf88a68d2067b"
dependencies = [
"cfg-if",
"chrono",
"codee",
"cookie",
"default-struct-builder",
- "http 1.2.0",
+ "http",
"js-sys",
"lazy_static",
"leptos",
"leptos_axum",
"paste",
- "thiserror",
+ "send_wrapper",
+ "thiserror 2.0.12",
"wasm-bindgen",
"wasm-bindgen-futures",
"web-sys",
@@ -1643,14 +1317,15 @@ dependencies = [
[[package]]
name = "leptos_axum"
-version = "0.6.15"
+version = "0.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "910681b920c48a43508b2bd0261bdb67c4ef9456a0b3613f956a0d30e832e9de"
+checksum = "7b0d388392939f629c45b8c7bcc83997cb6c6026813b57f50953651ad5be63d8"
dependencies = [
+ "any_spawner",
"axum",
- "cfg-if",
+ "dashmap",
"futures",
- "http-body-util",
+ "hydration_context",
"leptos",
"leptos_integration_utils",
"leptos_macro",
@@ -1658,61 +1333,45 @@ dependencies = [
"leptos_router",
"once_cell",
"parking_lot",
- "serde_json",
"server_fn",
"tokio",
- "tokio-util",
- "tracing",
+ "tower",
+ "tower-http",
]
[[package]]
name = "leptos_config"
-version = "0.6.15"
+version = "0.7.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "62ed778611380ddea47568ac6ad6ec5158d39b5bd59e6c4dcd24efc15dc3dc0d"
+checksum = "5bae3e0ead5a7a814c8340eef7cb8b6cba364125bd8174b15dc9fe1b3cab7e03"
dependencies = [
"config",
"regex",
"serde",
- "thiserror",
- "typed-builder 0.18.2",
+ "thiserror 2.0.12",
+ "typed-builder",
]
[[package]]
name = "leptos_dom"
-version = "0.6.15"
+version = "0.7.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8401c46c86c1f4c16dcb7881ed319fcdca9cda9b9e78a6088955cb423afcf119"
+checksum = "f89d4eb263bd5a9e7c49f780f17063f15aca56fd638c90b9dfd5f4739152e87d"
dependencies = [
- "async-recursion",
- "cfg-if",
- "drain_filter_polyfill",
- "futures",
- "getrandom",
- "html-escape",
- "indexmap",
- "itertools",
"js-sys",
- "leptos_reactive",
- "once_cell",
- "pad-adapter",
- "paste",
- "rustc-hash",
- "serde",
- "serde_json",
- "server_fn",
- "smallvec",
- "tracing",
+ "or_poisoned",
+ "reactive_graph",
+ "send_wrapper",
+ "tachys",
"wasm-bindgen",
- "wasm-bindgen-futures",
"web-sys",
]
[[package]]
name = "leptos_hot_reload"
-version = "0.6.15"
+version = "0.7.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6cb53d4794240b684a2f4be224b84bee9e62d2abc498cf2bcd643cd565e01d96"
+checksum = "e80219388501d99b246f43b6e7d08a28f327cdd34ba630a35654d917f3e1788e"
dependencies = [
"anyhow",
"camino",
@@ -1722,70 +1381,106 @@ dependencies = [
"quote",
"rstml",
"serde",
- "syn 2.0.96",
+ "syn",
"walkdir",
]
[[package]]
name = "leptos_i18n"
-version = "0.4.2"
+version = "0.5.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "eae340ebc4f67110eda8ad934f5173f54c274481857f66730d1e9a4cfaa3ec4f"
+checksum = "d368a184611a7f6bd1d23568887da4cea80e457b7932ff7c8c00b39032f4dd66"
dependencies = [
"codee",
- "fixed_decimal",
- "icu",
+ "default-struct-builder",
+ "icu_locid",
+ "js-sys",
"leptos",
"leptos-use",
"leptos_i18n_macro",
"leptos_meta",
- "leptos_router",
"serde",
- "typed-builder 0.19.1",
+ "serde-wasm-bindgen",
+ "typed-builder",
"wasm-bindgen",
"writeable",
]
[[package]]
name = "leptos_i18n_macro"
-version = "0.4.2"
+version = "0.5.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "720af3b1921be2339f5413a70b5db79b6b9cb90b695bc9ad3f971520bb363c69"
+checksum = "5f56a479ebc4416dae57732d3524a0a67f6e84af8f51501f5e2df7c26392d601"
dependencies = [
"fixed_decimal",
- "icu",
+ "icu_locid",
+ "icu_locid_transform",
+ "leptos_i18n_parser",
"proc-macro2",
"quote",
"serde",
"serde_json",
"serde_yaml",
- "syn 2.0.96",
+ "syn",
+ "tinystr",
"toml",
]
[[package]]
-name = "leptos_integration_utils"
-version = "0.6.15"
+name = "leptos_i18n_parser"
+version = "0.5.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5a96976631c2225ec116a7bf9c0ed5bf6999a19fed33f5e3cbcf37af44c384dc"
+checksum = "c7c389bd7767d52dc3e3676d8a71584ee490e801ac0eb7e02c04beeb611a7c4f"
+dependencies = [
+ "fixed_decimal",
+ "icu_locid",
+ "icu_plurals",
+ "json5",
+ "proc-macro2",
+ "quote",
+ "serde",
+ "serde_json",
+ "serde_yaml",
+ "syn",
+ "tinystr",
+ "toml",
+]
+
+[[package]]
+name = "leptos_i18n_router"
+version = "0.5.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f851a96efb14c5beb3ea060d18b8a304dc908385c2b49902e577be6a1f9cc1ee"
+dependencies = [
+ "leptos",
+ "leptos_i18n",
+ "leptos_router",
+]
+
+[[package]]
+name = "leptos_integration_utils"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d293a2f64a558d4ca10ef01125d055134f3582f27c407102c4259bb54ca8b55b"
dependencies = [
"futures",
+ "hydration_context",
"leptos",
"leptos_config",
- "leptos_hot_reload",
"leptos_meta",
- "tracing",
+ "leptos_router",
+ "reactive_graph",
]
[[package]]
name = "leptos_macro"
-version = "0.6.15"
+version = "0.7.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4b13bc3db70715cd8218c4535a5af3ae3c0e5fea6f018531fc339377b36bc0e0"
+checksum = "e621f8f5342b9bdc93bb263b839cee7405027a74560425a2dabea9de7952b1fd"
dependencies = [
"attribute-derive",
"cfg-if",
- "convert_case",
+ "convert_case 0.7.1",
"html-escape",
"itertools",
"leptos_hot_reload",
@@ -1795,99 +1490,81 @@ dependencies = [
"quote",
"rstml",
"server_fn_macro",
- "syn 2.0.96",
- "tracing",
+ "syn",
"uuid",
]
[[package]]
name = "leptos_meta"
-version = "0.6.15"
+version = "0.7.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "25acc2f63cf91932013e400a95bf6e35e5d3dbb44a7b7e25a8e3057d12005b3b"
+checksum = "448a6387e9e2cccbb756f474a54e36a39557127a3b8e46744b6ef6372b50f575"
dependencies = [
- "cfg-if",
- "indexmap",
- "leptos",
- "tracing",
- "wasm-bindgen",
- "web-sys",
-]
-
-[[package]]
-name = "leptos_reactive"
-version = "0.6.15"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e4161acbf80f59219d8d14182371f57302bc7ff81ee41aba8ba1ff7295727f23"
-dependencies = [
- "base64 0.22.1",
- "cfg-if",
"futures",
"indexmap",
- "js-sys",
- "oco_ref",
- "paste",
- "pin-project",
- "rustc-hash",
- "self_cell",
- "serde",
- "serde-wasm-bindgen",
- "serde_json",
- "slotmap",
- "thiserror",
- "tokio",
- "tracing",
+ "leptos",
+ "once_cell",
+ "or_poisoned",
+ "send_wrapper",
"wasm-bindgen",
- "wasm-bindgen-futures",
"web-sys",
]
[[package]]
name = "leptos_router"
-version = "0.6.15"
+version = "0.7.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8d71dea7d42c0d29c40842750232d3425ed1cf10e313a1f898076d20871dad32"
+checksum = "4168ead6a9715daba953aa842795cb2ad81b6e011a15745bd3d1baf86f76de95"
dependencies = [
- "cached",
- "cfg-if",
+ "any_spawner",
+ "either_of",
+ "futures",
"gloo-net",
- "itertools",
"js-sys",
- "lazy_static",
"leptos",
- "leptos_integration_utils",
- "leptos_meta",
- "linear-map",
- "lru",
+ "leptos_router_macro",
"once_cell",
+ "or_poisoned",
"percent-encoding",
- "regex",
+ "reactive_graph",
"send_wrapper",
- "serde",
- "serde_json",
- "serde_qs 0.13.0",
- "thiserror",
- "tracing",
+ "tachys",
+ "thiserror 2.0.12",
"url",
"wasm-bindgen",
- "wasm-bindgen-futures",
"web-sys",
]
[[package]]
-name = "leptos_server"
-version = "0.6.15"
+name = "leptos_router_macro"
+version = "0.7.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4a97eb90a13f71500b831c7119ddd3bdd0d7ae0a6b0487cade4fddeed3b8c03f"
+checksum = "e31197af38d209ffc5d9f89715381c415a1570176f8d23455fbe00d148e79640"
dependencies = [
- "inventory",
- "lazy_static",
- "leptos_macro",
- "leptos_reactive",
+ "proc-macro-error2",
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "leptos_server"
+version = "0.7.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "66985242812ec95e224fb48effe651ba02728beca92c461a9464c811a71aab11"
+dependencies = [
+ "any_spawner",
+ "base64",
+ "codee",
+ "futures",
+ "hydration_context",
+ "or_poisoned",
+ "reactive_graph",
+ "send_wrapper",
"serde",
+ "serde_json",
"server_fn",
- "thiserror",
- "tracing",
+ "tachys",
]
[[package]]
@@ -1896,27 +1573,17 @@ version = "0.2.169"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b5aba8db14291edd000dfcc4d620c7ebfb122c613afb886ca8803fa4e128a20a"
-[[package]]
-name = "libm"
-version = "0.2.11"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8355be11b20d696c8f18f6cc018c4e372165b1fa8126cef092399c9951984ffa"
-
[[package]]
name = "linear-map"
version = "1.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bfae20f6b19ad527b550c223fddc3077a547fc70cda94b9b566575423fd303ee"
-dependencies = [
- "serde",
- "serde_test",
-]
[[package]]
name = "linux-raw-sys"
-version = "0.4.15"
+version = "0.9.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab"
+checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12"
[[package]]
name = "litemap"
@@ -1940,38 +1607,38 @@ version = "0.4.25"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "04cbf5b083de1c7e0222a7a51dbfdba1cbe1c6ab0b15e29fff3f6c077fd9cd9f"
-[[package]]
-name = "lru"
-version = "0.11.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a4a83fb7698b3643a0e34f9ae6f2e8f0178c0fd42f8b59d493aa271ff3a5bf21"
-dependencies = [
- "hashbrown 0.14.5",
-]
-
[[package]]
name = "manyhow"
-version = "0.10.4"
+version = "0.11.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f91ea592d76c0b6471965708ccff7e6a5d277f676b90ab31f4d3f3fc77fade64"
+checksum = "b33efb3ca6d3b07393750d4030418d594ab1139cee518f0dc88db70fec873587"
dependencies = [
"manyhow-macros",
"proc-macro2",
"quote",
- "syn 2.0.96",
+ "syn",
]
[[package]]
name = "manyhow-macros"
-version = "0.10.4"
+version = "0.11.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c64621e2c08f2576e4194ea8be11daf24ac01249a4f53cd8befcbb7077120ead"
+checksum = "46fce34d199b78b6e6073abf984c9cf5fd3e9330145a93ee0738a7443e371495"
dependencies = [
- "proc-macro-utils 0.8.0",
+ "proc-macro-utils",
"proc-macro2",
"quote",
]
+[[package]]
+name = "markdown"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a5cab8f2cadc416a82d2e783a1946388b31654d391d1c7d92cc1f03e295b1deb"
+dependencies = [
+ "unicode-id",
+]
+
[[package]]
name = "matchit"
version = "0.7.3"
@@ -2000,12 +1667,6 @@ dependencies = [
"unicase",
]
-[[package]]
-name = "minimal-lexical"
-version = "0.2.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
-
[[package]]
name = "miniz_oxide"
version = "0.8.3"
@@ -2022,7 +1683,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2886843bf800fba2e3377cff24abf6379b4c4d5c6681eaf9ea5b0d15090450bd"
dependencies = [
"libc",
- "wasi",
+ "wasi 0.11.0+wasi-snapshot-preview1",
"windows-sys 0.52.0",
]
@@ -2035,7 +1696,7 @@ dependencies = [
"bytes",
"encoding_rs",
"futures-util",
- "http 1.2.0",
+ "http",
"httparse",
"memchr",
"mime",
@@ -2045,9 +1706,9 @@ dependencies = [
[[package]]
name = "native-tls"
-version = "0.2.13"
+version = "0.2.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0dab59f8e050d5df8e4dd87d9206fb6f65a483e20ac9fda365ade4fab353196c"
+checksum = "87de3442987e9dbec73158d5c715e7ad9072fda936bb03d19d7fa10e00520f0e"
dependencies = [
"libc",
"log",
@@ -2061,24 +1722,10 @@ dependencies = [
]
[[package]]
-name = "nom"
-version = "7.1.3"
+name = "next_tuple"
+version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a"
-dependencies = [
- "memchr",
- "minimal-lexical",
-]
-
-[[package]]
-name = "num-bigint"
-version = "0.4.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9"
-dependencies = [
- "num-integer",
- "num-traits",
-]
+checksum = "60993920e071b0c9b66f14e2b32740a4e27ffc82854dcd72035887f336a09a28"
[[package]]
name = "num-conv"
@@ -2086,26 +1733,6 @@ version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9"
-[[package]]
-name = "num-integer"
-version = "0.1.46"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f"
-dependencies = [
- "num-traits",
-]
-
-[[package]]
-name = "num-rational"
-version = "0.4.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824"
-dependencies = [
- "num-bigint",
- "num-integer",
- "num-traits",
-]
-
[[package]]
name = "num-traits"
version = "0.2.19"
@@ -2115,6 +1742,16 @@ dependencies = [
"autocfg",
]
+[[package]]
+name = "num_cpus"
+version = "1.16.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43"
+dependencies = [
+ "hermit-abi",
+ "libc",
+]
+
[[package]]
name = "object"
version = "0.36.7"
@@ -2126,12 +1763,12 @@ dependencies = [
[[package]]
name = "oco_ref"
-version = "0.1.1"
+version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c51ebcefb2f0b9a5e0bea115532c8ae4215d1b01eff176d0f4ba4192895c2708"
+checksum = "64b94982fe39a861561cf67ff17a7849f2cedadbbad960a797634032b7abb998"
dependencies = [
"serde",
- "thiserror",
+ "thiserror 1.0.69",
]
[[package]]
@@ -2142,11 +1779,11 @@ checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775"
[[package]]
name = "openssl"
-version = "0.10.69"
+version = "0.10.72"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f5e534d133a060a3c19daec1eb3e98ec6f4685978834f2dbadfe2ec215bab64e"
+checksum = "fedfea7d58a1f73118430a55da6a286e7b044961736ce96a16a17068ea25e5da"
dependencies = [
- "bitflags 2.8.0",
+ "bitflags",
"cfg-if",
"foreign-types",
"libc",
@@ -2163,7 +1800,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.96",
+ "syn",
]
[[package]]
@@ -2174,9 +1811,9 @@ checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e"
[[package]]
name = "openssl-sys"
-version = "0.9.104"
+version = "0.9.108"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "45abf306cbf99debc8195b66b7346498d7b10c210de50418b5ccd7ceba08c741"
+checksum = "e145e1651e858e820e4860f7b9c5e169bc1d8ce1c86043be79fa7b7634821847"
dependencies = [
"cc",
"libc",
@@ -2185,10 +1822,16 @@ dependencies = [
]
[[package]]
-name = "pad-adapter"
-version = "0.1.1"
+name = "or_poisoned"
+version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "56d80efc4b6721e8be2a10a5df21a30fa0b470f1539e53d8b4e6e75faf938b63"
+checksum = "8c04f5d74368e4d0dfe06c45c8627c81bd7c317d52762d118fb9b3076f6420fd"
+
+[[package]]
+name = "parking"
+version = "2.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba"
[[package]]
name = "parking_lot"
@@ -2231,6 +1874,51 @@ version = "2.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e"
+[[package]]
+name = "pest"
+version = "2.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "198db74531d58c70a361c42201efde7e2591e976d518caf7662a47dc5720e7b6"
+dependencies = [
+ "memchr",
+ "thiserror 2.0.12",
+ "ucd-trie",
+]
+
+[[package]]
+name = "pest_derive"
+version = "2.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d725d9cfd79e87dccc9341a2ef39d1b6f6353d68c4b33c177febbe1a402c97c5"
+dependencies = [
+ "pest",
+ "pest_generator",
+]
+
+[[package]]
+name = "pest_generator"
+version = "2.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "db7d01726be8ab66ab32f9df467ae8b1148906685bbe75c82d1e65d7f5b3f841"
+dependencies = [
+ "pest",
+ "pest_meta",
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "pest_meta"
+version = "2.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7f9f832470494906d1fca5329f8ab5791cc60beb230c74815dff541cbd2b5ca0"
+dependencies = [
+ "once_cell",
+ "pest",
+ "sha2",
+]
+
[[package]]
name = "pin-project"
version = "1.1.8"
@@ -2248,7 +1936,7 @@ checksum = "d56a66c0c55993aa927429d0f8a0abfd74f084e4d9c192cffed01e418d83eefb"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.96",
+ "syn",
]
[[package]]
@@ -2265,9 +1953,9 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
[[package]]
name = "pkg-config"
-version = "0.3.31"
+version = "0.3.32"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2"
+checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c"
[[package]]
name = "powerfmt"
@@ -2275,6 +1963,15 @@ version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391"
+[[package]]
+name = "ppv-lite86"
+version = "0.2.21"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9"
+dependencies = [
+ "zerocopy",
+]
+
[[package]]
name = "prettyplease"
version = "0.2.29"
@@ -2282,30 +1979,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6924ced06e1f7dfe3fa48d57b9f74f55d8915f5036121bef647ef4b204895fac"
dependencies = [
"proc-macro2",
- "syn 2.0.96",
-]
-
-[[package]]
-name = "proc-macro-error"
-version = "1.0.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c"
-dependencies = [
- "proc-macro-error-attr",
- "proc-macro2",
- "quote",
- "version_check",
-]
-
-[[package]]
-name = "proc-macro-error-attr"
-version = "1.0.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869"
-dependencies = [
- "proc-macro2",
- "quote",
- "version_check",
+ "syn",
]
[[package]]
@@ -2327,17 +2001,7 @@ dependencies = [
"proc-macro-error-attr2",
"proc-macro2",
"quote",
-]
-
-[[package]]
-name = "proc-macro-utils"
-version = "0.8.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3f59e109e2f795a5070e69578c4dc101068139f74616778025ae1011d4cd41a8"
-dependencies = [
- "proc-macro2",
- "quote",
- "smallvec",
+ "syn",
]
[[package]]
@@ -2368,7 +2032,7 @@ checksum = "af066a9c399a26e020ada66a034357a868728e72cd426f3adcd35f80d88d88c8"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.96",
+ "syn",
"version_check",
"yansi",
]
@@ -2398,10 +2062,95 @@ version = "0.8.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "82ebfb7faafadc06a7ab141a6f67bcfb24cb8beb158c6fe933f2f035afa99f35"
dependencies = [
- "proc-macro-utils 0.10.0",
+ "proc-macro-utils",
"proc-macro2",
"quote",
- "syn 2.0.96",
+ "syn",
+]
+
+[[package]]
+name = "r-efi"
+version = "5.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "74765f6d916ee2faa39bc8e68e4f3ed8949b48cccdac59983d287a7cb71ce9c5"
+
+[[package]]
+name = "rand"
+version = "0.8.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
+dependencies = [
+ "libc",
+ "rand_chacha",
+ "rand_core",
+]
+
+[[package]]
+name = "rand_chacha"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
+dependencies = [
+ "ppv-lite86",
+ "rand_core",
+]
+
+[[package]]
+name = "rand_core"
+version = "0.6.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
+dependencies = [
+ "getrandom 0.2.15",
+]
+
+[[package]]
+name = "reactive_graph"
+version = "0.1.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "76a0ccddbc11a648bd09761801dac9e3f246ef7641130987d6120fced22515e6"
+dependencies = [
+ "any_spawner",
+ "async-lock",
+ "futures",
+ "guardian",
+ "hydration_context",
+ "or_poisoned",
+ "pin-project-lite",
+ "rustc-hash",
+ "send_wrapper",
+ "serde",
+ "slotmap",
+ "thiserror 2.0.12",
+ "web-sys",
+]
+
+[[package]]
+name = "reactive_stores"
+version = "0.1.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "aadc7c19e3a360bf19cd595d2dc8b58ce67b9240b95a103fbc1317a8ff194237"
+dependencies = [
+ "guardian",
+ "itertools",
+ "or_poisoned",
+ "paste",
+ "reactive_graph",
+ "reactive_stores_macro",
+ "rustc-hash",
+]
+
+[[package]]
+name = "reactive_stores_macro"
+version = "0.1.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "221095cb028dc51fbc2833743ea8b1a585da1a2af19b440b3528027495bf1f2d"
+dependencies = [
+ "convert_case 0.7.1",
+ "proc-macro-error2",
+ "proc-macro2",
+ "quote",
+ "syn",
]
[[package]]
@@ -2410,7 +2159,7 @@ version = "0.5.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "03a862b389f93e68874fbf580b9de08dd02facb9a788ebadaf4a3fd33cf58834"
dependencies = [
- "bitflags 2.8.0",
+ "bitflags",
]
[[package]]
@@ -2421,19 +2170,10 @@ checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191"
dependencies = [
"aho-corasick",
"memchr",
- "regex-automata 0.4.9",
+ "regex-automata",
"regex-syntax",
]
-[[package]]
-name = "regex-automata"
-version = "0.2.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e9368763f5a9b804326f3af749e16f9abf378d227bcdee7634b13d8f17793782"
-dependencies = [
- "memchr",
-]
-
[[package]]
name = "regex-automata"
version = "0.4.9"
@@ -2453,62 +2193,22 @@ checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c"
[[package]]
name = "reqwest"
-version = "0.11.27"
+version = "0.12.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dd67538700a17451e7cba03ac727fb961abb7607553461627b97de0b89cf4a62"
+checksum = "d19c46a6fdd48bc4dab94b6103fccc55d34c67cc0ad04653aad4ea2a07cd7bbb"
dependencies = [
- "base64 0.21.7",
+ "base64",
"bytes",
"encoding_rs",
"futures-core",
"futures-util",
- "h2 0.3.26",
- "http 0.2.12",
- "http-body 0.4.6",
- "hyper 0.14.32",
- "hyper-tls 0.5.0",
- "ipnet",
- "js-sys",
- "log",
- "mime",
- "native-tls",
- "once_cell",
- "percent-encoding",
- "pin-project-lite",
- "rustls-pemfile 1.0.4",
- "serde",
- "serde_json",
- "serde_urlencoded",
- "sync_wrapper 0.1.2",
- "system-configuration 0.5.1",
- "tokio",
- "tokio-native-tls",
- "tower-service",
- "url",
- "wasm-bindgen",
- "wasm-bindgen-futures",
- "web-sys",
- "winreg",
-]
-
-[[package]]
-name = "reqwest"
-version = "0.12.12"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "43e734407157c3c2034e0258f5e4473ddb361b1e85f95a66690d67264d7cd1da"
-dependencies = [
- "base64 0.22.1",
- "bytes",
- "encoding_rs",
- "futures-core",
- "futures-util",
- "h2 0.4.7",
- "http 1.2.0",
- "http-body 1.0.1",
+ "h2",
+ "http",
+ "http-body",
"http-body-util",
- "hyper 1.5.2",
+ "hyper",
"hyper-rustls",
- "hyper-tls 0.6.0",
+ "hyper-tls",
"hyper-util",
"ipnet",
"js-sys",
@@ -2518,15 +2218,15 @@ dependencies = [
"once_cell",
"percent-encoding",
"pin-project-lite",
- "rustls-pemfile 2.2.0",
+ "rustls-pemfile",
"serde",
"serde_json",
"serde_urlencoded",
- "sync_wrapper 1.0.2",
- "system-configuration 0.6.1",
+ "sync_wrapper",
+ "system-configuration",
"tokio",
"tokio-native-tls",
- "tower 0.5.2",
+ "tower",
"tower-service",
"url",
"wasm-bindgen",
@@ -2537,31 +2237,31 @@ dependencies = [
[[package]]
name = "ring"
-version = "0.17.8"
+version = "0.17.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d"
+checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7"
dependencies = [
"cc",
"cfg-if",
- "getrandom",
+ "getrandom 0.2.15",
"libc",
- "spin",
"untrusted",
"windows-sys 0.52.0",
]
[[package]]
name = "rstml"
-version = "0.11.2"
+version = "0.12.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fe542870b8f59dd45ad11d382e5339c9a1047cde059be136a7016095bbdefa77"
+checksum = "61cf4616de7499fc5164570d40ca4e1b24d231c6833a88bff0fe00725080fd56"
dependencies = [
+ "derive-where",
"proc-macro2",
"proc-macro2-diagnostics",
"quote",
- "syn 2.0.96",
+ "syn",
"syn_derive",
- "thiserror",
+ "thiserror 2.0.12",
]
[[package]]
@@ -2572,17 +2272,17 @@ checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f"
[[package]]
name = "rustc-hash"
-version = "1.1.0"
+version = "2.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2"
+checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d"
[[package]]
name = "rustix"
-version = "0.38.44"
+version = "1.0.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154"
+checksum = "c71e83d6afe7ff64890ec6b71d6a69bb8a610ab78ce364b3352876bb4c801266"
dependencies = [
- "bitflags 2.8.0",
+ "bitflags",
"errno",
"libc",
"linux-raw-sys",
@@ -2591,9 +2291,9 @@ dependencies = [
[[package]]
name = "rustls"
-version = "0.23.21"
+version = "0.23.26"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8f287924602bf649d949c63dc8ac8b235fa5387d394020705b80c4eb597ce5b8"
+checksum = "df51b5869f3a441595eac5e8ff14d486ff285f7b8c0df8770e49c3b56351f0f0"
dependencies = [
"once_cell",
"rustls-pki-types",
@@ -2602,15 +2302,6 @@ dependencies = [
"zeroize",
]
-[[package]]
-name = "rustls-pemfile"
-version = "1.0.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c"
-dependencies = [
- "base64 0.21.7",
-]
-
[[package]]
name = "rustls-pemfile"
version = "2.2.0"
@@ -2622,15 +2313,15 @@ dependencies = [
[[package]]
name = "rustls-pki-types"
-version = "1.10.1"
+version = "1.11.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d2bf47e6ff922db3825eb750c4e2ff784c6ff8fb9e13046ef6a1d1c5401b0b37"
+checksum = "917ce264624a4b4db1c364dcc35bfca9ded014d0a958cd47ad3e960e988ea51c"
[[package]]
name = "rustls-webpki"
-version = "0.102.8"
+version = "0.103.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "64ca1bc8749bd4cf37b5ce386cc146580777b4e8572c7b97baf22c83f444bee9"
+checksum = "fef8b8769aaccf73098557a87cd1816b4f9c7c16811c9c77142aa695c16f2c03"
dependencies = [
"ring",
"rustls-pki-types",
@@ -2679,7 +2370,7 @@ version = "2.11.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02"
dependencies = [
- "bitflags 2.8.0",
+ "bitflags",
"core-foundation",
"core-foundation-sys",
"libc",
@@ -2696,12 +2387,6 @@ dependencies = [
"libc",
]
-[[package]]
-name = "self_cell"
-version = "1.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c2fdfc24bc566f839a2da4c4295b82db7d25a24253867d5c64355abb5799bdbe"
-
[[package]]
name = "send_wrapper"
version = "0.6.0"
@@ -2739,7 +2424,7 @@ checksum = "5a9bf7cf98d04a2b28aead066b7496853d4779c9cc183c440dbac457641e19a0"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.96",
+ "syn",
]
[[package]]
@@ -2764,17 +2449,6 @@ dependencies = [
"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_qs"
version = "0.13.0"
@@ -2783,7 +2457,7 @@ checksum = "cd34f36fe4c5ba9654417139a9b3a20d2e1de6012ee678ad14d240c22c78d8d6"
dependencies = [
"percent-encoding",
"serde",
- "thiserror",
+ "thiserror 1.0.69",
]
[[package]]
@@ -2795,15 +2469,6 @@ dependencies = [
"serde",
]
-[[package]]
-name = "serde_test"
-version = "1.0.177"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7f901ee573cab6b3060453d2d5f0bae4e6d628c23c0a962ff9b5f1d7c8d4f1ed"
-dependencies = [
- "serde",
-]
-
[[package]]
name = "serde_urlencoded"
version = "0.7.1"
@@ -2831,30 +2496,31 @@ dependencies = [
[[package]]
name = "server_fn"
-version = "0.6.15"
+version = "0.7.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4fae7a3038a32e5a34ba32c6c45eb4852f8affaf8b794ebfcd4b1099e2d62ebe"
+checksum = "8d05a9e3fd8d7404985418db38c6617cc793a1a27f398d4fbc9dfe8e41b804e6"
dependencies = [
"axum",
"bytes",
- "ciborium",
"const_format",
"dashmap",
"futures",
"gloo-net",
- "http 1.2.0",
+ "http",
"http-body-util",
- "hyper 1.5.2",
+ "hyper",
"inventory",
"js-sys",
"once_cell",
+ "pin-project-lite",
"send_wrapper",
"serde",
"serde_json",
- "serde_qs 0.12.0",
+ "serde_qs",
"server_fn_macro_default",
- "thiserror",
- "tower 0.4.13",
+ "thiserror 2.0.12",
+ "throw_error",
+ "tower",
"tower-layer",
"url",
"wasm-bindgen",
@@ -2866,26 +2532,37 @@ dependencies = [
[[package]]
name = "server_fn_macro"
-version = "0.6.15"
+version = "0.7.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "faaaf648c6967aef78177c0610478abb5a3455811f401f3c62d10ae9bd3901a1"
+checksum = "504b35e883267b3206317b46d02952ed7b8bf0e11b2e209e2eb453b609a5e052"
dependencies = [
"const_format",
- "convert_case",
+ "convert_case 0.6.0",
"proc-macro2",
"quote",
- "syn 2.0.96",
+ "syn",
"xxhash-rust",
]
[[package]]
name = "server_fn_macro_default"
-version = "0.6.15"
+version = "0.7.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7f2aa8119b558a17992e0ac1fd07f080099564f24532858811ce04f742542440"
+checksum = "eb8b274f568c94226a8045668554aace8142a59b8bca5414ac5a79627c825568"
dependencies = [
"server_fn_macro",
- "syn 2.0.96",
+ "syn",
+]
+
+[[package]]
+name = "sha2"
+version = "0.10.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283"
+dependencies = [
+ "cfg-if",
+ "cpufeatures",
+ "digest",
]
[[package]]
@@ -2909,7 +2586,6 @@ version = "1.0.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dbff4acf519f630b3a3ddcfaea6c06b42174d9a44bc70c620e9ed1649d58b82a"
dependencies = [
- "serde",
"version_check",
]
@@ -2941,12 +2617,6 @@ version = "1.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3"
-[[package]]
-name = "strsim"
-version = "0.10.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623"
-
[[package]]
name = "strsim"
version = "0.11.1"
@@ -2959,17 +2629,6 @@ version = "2.6.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292"
-[[package]]
-name = "syn"
-version = "1.0.109"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
-dependencies = [
- "proc-macro2",
- "quote",
- "unicode-ident",
-]
-
[[package]]
name = "syn"
version = "2.0.96"
@@ -2983,22 +2642,16 @@ dependencies = [
[[package]]
name = "syn_derive"
-version = "0.1.8"
+version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1329189c02ff984e9736652b1631330da25eaa6bc639089ed4915d25446cbe7b"
+checksum = "cdb066a04799e45f5d582e8fc6ec8e6d6896040d00898eb4e6a835196815b219"
dependencies = [
- "proc-macro-error",
+ "proc-macro-error2",
"proc-macro2",
"quote",
- "syn 2.0.96",
+ "syn",
]
-[[package]]
-name = "sync_wrapper"
-version = "0.1.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160"
-
[[package]]
name = "sync_wrapper"
version = "1.0.2"
@@ -3016,18 +2669,7 @@ checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.96",
-]
-
-[[package]]
-name = "system-configuration"
-version = "0.5.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7"
-dependencies = [
- "bitflags 1.3.2",
- "core-foundation",
- "system-configuration-sys 0.5.0",
+ "syn",
]
[[package]]
@@ -3036,19 +2678,9 @@ version = "0.6.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b"
dependencies = [
- "bitflags 2.8.0",
+ "bitflags",
"core-foundation",
- "system-configuration-sys 0.6.0",
-]
-
-[[package]]
-name = "system-configuration-sys"
-version = "0.5.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9"
-dependencies = [
- "core-foundation-sys",
- "libc",
+ "system-configuration-sys",
]
[[package]]
@@ -3061,41 +2693,69 @@ dependencies = [
"libc",
]
+[[package]]
+name = "tachys"
+version = "0.1.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8d42b7c1545705f77d871228eb52cbb1376b35dc0a237be9fb11e2d9e4e20818"
+dependencies = [
+ "any_spawner",
+ "async-trait",
+ "const_str_slice_concat",
+ "drain_filter_polyfill",
+ "dyn-clone",
+ "either_of",
+ "futures",
+ "html-escape",
+ "indexmap",
+ "itertools",
+ "js-sys",
+ "linear-map",
+ "next_tuple",
+ "oco_ref",
+ "once_cell",
+ "or_poisoned",
+ "parking_lot",
+ "paste",
+ "reactive_graph",
+ "reactive_stores",
+ "rustc-hash",
+ "send_wrapper",
+ "slotmap",
+ "throw_error",
+ "wasm-bindgen",
+ "web-sys",
+]
+
[[package]]
name = "tanguy-gerome-fi"
version = "0.1.0"
dependencies = [
"axum",
"console_error_panic_hook",
- "contentful",
"dotenvy",
- "http 1.2.0",
"leptos",
"leptos_axum",
"leptos_i18n",
+ "leptos_i18n_router",
"leptos_meta",
"leptos_router",
- "reqwest 0.12.12",
+ "markdown",
+ "reqwest",
"serde",
"serde_json",
- "serde_path_to_error",
- "thiserror",
"tokio",
- "tower 0.4.13",
- "tower-http",
- "tracing",
"wasm-bindgen",
]
[[package]]
name = "tempfile"
-version = "3.15.0"
+version = "3.19.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9a8a559c81686f576e8cd0290cd2a24a2a9ad80c98b3478856500fcbd7acd704"
+checksum = "7437ac7763b9b123ccf33c338a5cc1bac6f69b45a136c19bdd8a65e3916435bf"
dependencies = [
- "cfg-if",
"fastrand",
- "getrandom",
+ "getrandom 0.3.2",
"once_cell",
"rustix",
"windows-sys 0.59.0",
@@ -3107,7 +2767,16 @@ version = "1.0.69"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52"
dependencies = [
- "thiserror-impl",
+ "thiserror-impl 1.0.69",
+]
+
+[[package]]
+name = "thiserror"
+version = "2.0.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "567b8a2dae586314f7be2a752ec7474332959c6460e02bde30d702a66d488708"
+dependencies = [
+ "thiserror-impl 2.0.12",
]
[[package]]
@@ -3118,7 +2787,27 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.96",
+ "syn",
+]
+
+[[package]]
+name = "thiserror-impl"
+version = "2.0.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "throw_error"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e4ef8bf264c6ae02a065a4a16553283f0656bd6266fc1fcb09fd2e6b5e91427b"
+dependencies = [
+ "pin-project-lite",
]
[[package]]
@@ -3164,9 +2853,9 @@ dependencies = [
[[package]]
name = "tokio"
-version = "1.43.0"
+version = "1.45.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3d61fa4ffa3de412bfea335c6ecff681de2b609ba3c77ef3e00e521813a9ed9e"
+checksum = "75ef51a33ef1da925cea3e4eb122833cb377c61439ca401b770f54902b806779"
dependencies = [
"backtrace",
"bytes",
@@ -3186,7 +2875,7 @@ checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.96",
+ "syn",
]
[[package]]
@@ -3201,9 +2890,9 @@ dependencies = [
[[package]]
name = "tokio-rustls"
-version = "0.26.1"
+version = "0.26.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5f6d0975eaace0cf0fcadee4e4aaa5da15b5c079146f2cffb67c113be122bf37"
+checksum = "8e727b36a1a0e8b74c376ac2211e40c2c8af09fb4013c60d910495810f008e9b"
dependencies = [
"rustls",
"tokio",
@@ -3218,8 +2907,6 @@ dependencies = [
"bytes",
"futures-core",
"futures-sink",
- "futures-util",
- "hashbrown 0.14.5",
"pin-project-lite",
"tokio",
]
@@ -3255,22 +2942,7 @@ dependencies = [
"serde",
"serde_spanned",
"toml_datetime",
- "winnow",
-]
-
-[[package]]
-name = "tower"
-version = "0.4.13"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c"
-dependencies = [
- "futures-core",
- "futures-util",
- "pin-project",
- "pin-project-lite",
- "tower-layer",
- "tower-service",
- "tracing",
+ "winnow 0.6.24",
]
[[package]]
@@ -3282,7 +2954,7 @@ dependencies = [
"futures-core",
"futures-util",
"pin-project-lite",
- "sync_wrapper 1.0.2",
+ "sync_wrapper",
"tokio",
"tower-layer",
"tower-service",
@@ -3291,15 +2963,15 @@ dependencies = [
[[package]]
name = "tower-http"
-version = "0.5.2"
+version = "0.6.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1e9cd434a998747dd2c4276bc96ee2e0c7a2eadf3cae88e52be55a05fa9053f5"
+checksum = "403fa3b783d4b626a8ad51d766ab03cb6d2dbfc46b1c5d4448395e6628dc9697"
dependencies = [
- "bitflags 2.8.0",
+ "bitflags",
"bytes",
"futures-util",
- "http 1.2.0",
- "http-body 1.0.1",
+ "http",
+ "http-body",
"http-body-util",
"http-range-header",
"httpdate",
@@ -3334,21 +3006,9 @@ checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0"
dependencies = [
"log",
"pin-project-lite",
- "tracing-attributes",
"tracing-core",
]
-[[package]]
-name = "tracing-attributes"
-version = "0.1.28"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn 2.0.96",
-]
-
[[package]]
name = "tracing-core"
version = "0.1.33"
@@ -3366,43 +3026,35 @@ checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b"
[[package]]
name = "typed-builder"
-version = "0.18.2"
+version = "0.20.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "77739c880e00693faef3d65ea3aad725f196da38b22fdc7ea6ded6e1ce4d3add"
+checksum = "cd9d30e3a08026c78f246b173243cf07b3696d274debd26680773b6773c2afc7"
dependencies = [
- "typed-builder-macro 0.18.2",
-]
-
-[[package]]
-name = "typed-builder"
-version = "0.19.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a06fbd5b8de54c5f7c91f6fe4cebb949be2125d7758e630bb58b1d831dbce600"
-dependencies = [
- "typed-builder-macro 0.19.1",
+ "typed-builder-macro",
]
[[package]]
name = "typed-builder-macro"
-version = "0.18.2"
+version = "0.20.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1f718dfaf347dcb5b983bfc87608144b0bad87970aebcbea5ce44d2a30c08e63"
+checksum = "3c36781cc0e46a83726d9879608e4cf6c2505237e263a8eb8c24502989cfdb28"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.96",
+ "syn",
]
[[package]]
-name = "typed-builder-macro"
-version = "0.19.1"
+name = "typenum"
+version = "1.18.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f9534daa9fd3ed0bd911d462a37f172228077e7abf18c18a5f67199d959205f8"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn 2.0.96",
-]
+checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f"
+
+[[package]]
+name = "ucd-trie"
+version = "0.1.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971"
[[package]]
name = "unicase"
@@ -3410,6 +3062,12 @@ version = "2.8.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "75b844d17643ee918803943289730bec8aac480150456169e647ed0b576ba539"
+[[package]]
+name = "unicode-id"
+version = "0.3.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "10103c57044730945224467c09f71a4db0071c123a0648cc3e818913bde6b561"
+
[[package]]
name = "unicode-ident"
version = "1.0.15"
@@ -3475,7 +3133,7 @@ version = "1.12.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b3758f5e68192bb96cc8f9b7e2c2cfdabb435499a28499a42f8f984092adad4b"
dependencies = [
- "getrandom",
+ "getrandom 0.2.15",
]
[[package]]
@@ -3515,6 +3173,15 @@ version = "0.11.0+wasi-snapshot-preview1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
+[[package]]
+name = "wasi"
+version = "0.14.2+wasi-0.2.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3"
+dependencies = [
+ "wit-bindgen-rt",
+]
+
[[package]]
name = "wasm-bindgen"
version = "0.2.100"
@@ -3537,18 +3204,19 @@ dependencies = [
"log",
"proc-macro2",
"quote",
- "syn 2.0.96",
+ "syn",
"wasm-bindgen-shared",
]
[[package]]
name = "wasm-bindgen-futures"
-version = "0.4.45"
+version = "0.4.50"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cc7ec4f8827a71586374db3e87abdb5a2bb3a15afed140221307c3ec06b1f63b"
+checksum = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61"
dependencies = [
"cfg-if",
"js-sys",
+ "once_cell",
"wasm-bindgen",
"web-sys",
]
@@ -3571,7 +3239,7 @@ checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.96",
+ "syn",
"wasm-bindgen-backend",
"wasm-bindgen-shared",
]
@@ -3600,9 +3268,9 @@ dependencies = [
[[package]]
name = "web-sys"
-version = "0.3.72"
+version = "0.3.77"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f6488b90108c040df0fe62fa815cbdee25124641df01814dd7282749234c6112"
+checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2"
dependencies = [
"js-sys",
"wasm-bindgen",
@@ -3627,42 +3295,38 @@ dependencies = [
]
[[package]]
-name = "windows-registry"
-version = "0.2.0"
+name = "windows-link"
+version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e400001bb720a623c1c69032f8e3e4cf09984deec740f007dd2b03ec864804b0"
+checksum = "76840935b766e1b0a05c0066835fb9ec80071d4c09a16f6bd5f7e655e3c14c38"
+
+[[package]]
+name = "windows-registry"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4286ad90ddb45071efd1a66dfa43eb02dd0dfbae1545ad6cc3c51cf34d7e8ba3"
dependencies = [
"windows-result",
"windows-strings",
- "windows-targets 0.52.6",
+ "windows-targets 0.53.0",
]
[[package]]
name = "windows-result"
-version = "0.2.0"
+version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e"
+checksum = "c64fd11a4fd95df68efcfee5f44a294fe71b8bc6a91993e2791938abcc712252"
dependencies = [
- "windows-targets 0.52.6",
+ "windows-link",
]
[[package]]
name = "windows-strings"
-version = "0.1.0"
+version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10"
+checksum = "87fa48cc5d406560701792be122a10132491cff9d0aeb23583cc2dcafc847319"
dependencies = [
- "windows-result",
- "windows-targets 0.52.6",
-]
-
-[[package]]
-name = "windows-sys"
-version = "0.48.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9"
-dependencies = [
- "windows-targets 0.48.5",
+ "windows-link",
]
[[package]]
@@ -3683,21 +3347,6 @@ dependencies = [
"windows-targets 0.52.6",
]
-[[package]]
-name = "windows-targets"
-version = "0.48.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c"
-dependencies = [
- "windows_aarch64_gnullvm 0.48.5",
- "windows_aarch64_msvc 0.48.5",
- "windows_i686_gnu 0.48.5",
- "windows_i686_msvc 0.48.5",
- "windows_x86_64_gnu 0.48.5",
- "windows_x86_64_gnullvm 0.48.5",
- "windows_x86_64_msvc 0.48.5",
-]
-
[[package]]
name = "windows-targets"
version = "0.52.6"
@@ -3707,7 +3356,7 @@ dependencies = [
"windows_aarch64_gnullvm 0.52.6",
"windows_aarch64_msvc 0.52.6",
"windows_i686_gnu 0.52.6",
- "windows_i686_gnullvm",
+ "windows_i686_gnullvm 0.52.6",
"windows_i686_msvc 0.52.6",
"windows_x86_64_gnu 0.52.6",
"windows_x86_64_gnullvm 0.52.6",
@@ -3715,10 +3364,20 @@ dependencies = [
]
[[package]]
-name = "windows_aarch64_gnullvm"
-version = "0.48.5"
+name = "windows-targets"
+version = "0.53.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"
+checksum = "b1e4c7e8ceaaf9cb7d7507c974735728ab453b67ef8f18febdd7c11fe59dca8b"
+dependencies = [
+ "windows_aarch64_gnullvm 0.53.0",
+ "windows_aarch64_msvc 0.53.0",
+ "windows_i686_gnu 0.53.0",
+ "windows_i686_gnullvm 0.53.0",
+ "windows_i686_msvc 0.53.0",
+ "windows_x86_64_gnu 0.53.0",
+ "windows_x86_64_gnullvm 0.53.0",
+ "windows_x86_64_msvc 0.53.0",
+]
[[package]]
name = "windows_aarch64_gnullvm"
@@ -3727,10 +3386,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
[[package]]
-name = "windows_aarch64_msvc"
-version = "0.48.5"
+name = "windows_aarch64_gnullvm"
+version = "0.53.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
+checksum = "86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764"
[[package]]
name = "windows_aarch64_msvc"
@@ -3739,10 +3398,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
[[package]]
-name = "windows_i686_gnu"
-version = "0.48.5"
+name = "windows_aarch64_msvc"
+version = "0.53.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"
+checksum = "c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c"
[[package]]
name = "windows_i686_gnu"
@@ -3750,6 +3409,12 @@ version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"
+[[package]]
+name = "windows_i686_gnu"
+version = "0.53.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c1dc67659d35f387f5f6c479dc4e28f1d4bb90ddd1a5d3da2e5d97b42d6272c3"
+
[[package]]
name = "windows_i686_gnullvm"
version = "0.52.6"
@@ -3757,10 +3422,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
[[package]]
-name = "windows_i686_msvc"
-version = "0.48.5"
+name = "windows_i686_gnullvm"
+version = "0.53.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"
+checksum = "9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11"
[[package]]
name = "windows_i686_msvc"
@@ -3769,10 +3434,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
[[package]]
-name = "windows_x86_64_gnu"
-version = "0.48.5"
+name = "windows_i686_msvc"
+version = "0.53.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"
+checksum = "581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d"
[[package]]
name = "windows_x86_64_gnu"
@@ -3781,10 +3446,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
[[package]]
-name = "windows_x86_64_gnullvm"
-version = "0.48.5"
+name = "windows_x86_64_gnu"
+version = "0.53.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"
+checksum = "2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba"
[[package]]
name = "windows_x86_64_gnullvm"
@@ -3793,10 +3458,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
[[package]]
-name = "windows_x86_64_msvc"
-version = "0.48.5"
+name = "windows_x86_64_gnullvm"
+version = "0.53.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
+checksum = "0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57"
[[package]]
name = "windows_x86_64_msvc"
@@ -3804,6 +3469,12 @@ version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
+[[package]]
+name = "windows_x86_64_msvc"
+version = "0.53.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486"
+
[[package]]
name = "winnow"
version = "0.6.24"
@@ -3814,13 +3485,21 @@ dependencies = [
]
[[package]]
-name = "winreg"
-version = "0.50.0"
+name = "winnow"
+version = "0.7.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1"
+checksum = "6cb8234a863ea0e8cd7284fcdd4f145233eb00fee02bbdd9861aec44e6477bc5"
dependencies = [
- "cfg-if",
- "windows-sys 0.48.0",
+ "memchr",
+]
+
+[[package]]
+name = "wit-bindgen-rt"
+version = "0.39.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1"
+dependencies = [
+ "bitflags",
]
[[package]]
@@ -3834,9 +3513,6 @@ name = "writeable"
version = "0.5.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51"
-dependencies = [
- "either",
-]
[[package]]
name = "xxhash-rust"
@@ -3870,28 +3546,28 @@ checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.96",
+ "syn",
"synstructure",
]
[[package]]
name = "zerocopy"
-version = "0.7.35"
+version = "0.8.25"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0"
+checksum = "a1702d9583232ddb9174e01bb7c15a2ab8fb1bc6f227aa1233858c351a3ba0cb"
dependencies = [
"zerocopy-derive",
]
[[package]]
name = "zerocopy-derive"
-version = "0.7.35"
+version = "0.8.25"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e"
+checksum = "28a6e20d751156648aa063f3800b706ee209a32c0b4d9f24be3d980b01be55ef"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.96",
+ "syn",
]
[[package]]
@@ -3911,7 +3587,7 @@ checksum = "595eed982f7d355beb85837f651fa22e90b3c044842dc7f2c2842c086f295808"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.96",
+ "syn",
"synstructure",
]
@@ -3921,17 +3597,6 @@ version = "1.8.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde"
-[[package]]
-name = "zerotrie"
-version = "0.1.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fb594dd55d87335c5f60177cee24f19457a5ec10a065e0a3014722ad252d0a1f"
-dependencies = [
- "displaydoc",
- "yoke",
- "zerofrom",
-]
-
[[package]]
name = "zerovec"
version = "0.10.4"
@@ -3951,5 +3616,5 @@ checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.96",
+ "syn",
]
diff --git a/Cargo.toml b/Cargo.toml
index 2a23467..9d9629f 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -7,47 +7,67 @@ edition = "2021"
crate-type = ["cdylib", "rlib"]
[dependencies]
-axum = { version = "0.7", optional = true }
-console_error_panic_hook = "0.1"
-leptos = { version = "0.6", features = ["nightly"] }
-leptos_axum = { version = "0.6", optional = true }
-leptos_meta = { version = "0.6", features = ["nightly"] }
-leptos_router = { version = "0.6", features = ["nightly"] }
+leptos = { version = "0.7.0", features = ["nightly"] }
+leptos_router = { version = "0.7.0", features = ["nightly"] }
+axum = { version = "0.7.0", optional = true }
+console_error_panic_hook = { version = "0.1", optional = true}
+leptos_axum = { version = "0.7.0", optional = true }
+leptos_meta = { version = "0.7.0" }
tokio = { version = "1", features = ["rt-multi-thread"], optional = true }
-tower = { version = "0.4", features = ["util"], optional = true }
-tower-http = { version = "0.5", features = ["fs"], optional = true }
-wasm-bindgen = "=0.2.100"
-thiserror = "1"
-tracing = { version = "0.1", optional = true }
-http = "1"
-leptos_i18n = { version = "0.4.1", default-features = false, features = ["yaml_files"] }
-serde = "1.0.213"
+wasm-bindgen = { version = "=0.2.100", optional = true }
+# tower = { version = "0.4", features = ["util"], optional = true }
+# tower-http = { version = "0.5", features = ["fs"], optional = true }
+# thiserror = "1"
+# tracing = { version = "0.1", optional = true }
+# http = "1"
+leptos_i18n = { version = "0.5.11", default-features = false, features = ["yaml_files", "track_locale_files"] }
+leptos_i18n_router = { version = "0.5.11" }
dotenvy = "0.15.7"
+serde = "1.0.213"
serde_json = "1.0.132"
-serde_path_to_error = "0.1.16"
+# serde_path_to_error = "0.1.16"
reqwest = { version = "0.12.9", features = ["json"]}
-contentful = "0.8.0"
+markdown = "1.0.0"
+# contentful = "0.8.0"
[features]
hydrate = [
"leptos/hydrate",
- "leptos_meta/hydrate",
- "leptos_router/hydrate",
+ "dep:console_error_panic_hook",
+ "dep:wasm-bindgen",
"leptos_i18n/hydrate",
]
ssr = [
"dep:axum",
"dep:tokio",
- "dep:tower",
- "dep:tower-http",
"dep:leptos_axum",
"leptos/ssr",
"leptos_meta/ssr",
"leptos_router/ssr",
- "dep:tracing",
+ "leptos_i18n/ssr",
"leptos_i18n/axum",
]
+# [features]
+# hydrate = [
+# "leptos/hydrate",
+# "leptos_meta/hydrate",
+# "leptos_router/hydrate",
+# "leptos_i18n/hydrate",
+# ]
+# ssr = [
+# "dep:axum",
+# "dep:tokio",
+# "dep:tower",
+# "dep:tower-http",
+# "dep:leptos_axum",
+# "leptos/ssr",
+# "leptos_meta/ssr",
+# "leptos_router/ssr",
+# "dep:tracing",
+# "leptos_i18n/axum",
+# ]
+
[package.metadata.leptos-i18n]
default = "en"
# locales = ["en", "fr", "fi", "sv", "eo", "uk", "et", "jbo"]
diff --git a/Dockerfile b/Dockerfile
new file mode 100755
index 0000000..af6abc4
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1,86 @@
+# Get started with a build env with Rust nightly
+FROM rustlang/rust:nightly-alpine as builder
+
+RUN apk update && \
+ apk add --no-cache bash curl npm libc-dev binaryen openssl openssl-dev ca-certificates
+
+RUN npm install -g sass
+
+RUN curl --proto '=https' --tlsv1.3 -LsSf https://github.com/leptos-rs/cargo-leptos/releases/latest/download/cargo-leptos-installer.sh | sh
+
+# Add the WASM target
+RUN rustup target add wasm32-unknown-unknown
+
+WORKDIR /work
+COPY . .
+
+
+ENV RUSTUP_PERMIT_COPY_RENAME=true
+RUN RUSTFLAGS="-Ctarget-feature=-crt-static" cargo leptos build --release -vv
+
+FROM rustlang/rust:nightly-alpine as runner
+
+WORKDIR /app
+
+COPY --from=builder /work/target/release/tanguy-gerome-fi /app/
+COPY --from=builder /work/target/site /app/site
+COPY --from=builder /work/Cargo.toml /app/
+
+# # Get started with a build env with Rust nightly
+# FROM rustlang/rust:nightly-bullseye AS builder
+
+# # If you’re using stable, use this instead
+# # FROM rust:1.74-bullseye as builder
+
+# # Install cargo-binstall, which makes it easier to install other
+# # cargo extensions like cargo-leptos
+# RUN wget https://github.com/cargo-bins/cargo-binstall/releases/latest/download/cargo-binstall-x86_64-unknown-linux-musl.tgz
+# RUN tar -xvf cargo-binstall-x86_64-unknown-linux-musl.tgz
+# RUN cp cargo-binstall /usr/local/cargo/bin
+
+# # Install required tools
+# RUN apt-get update -y \
+# && apt-get install -y --no-install-recommends clang
+
+# # Install cargo-leptos
+# RUN cargo binstall cargo-leptos -y
+
+# # Add the WASM target
+# RUN rustup target add wasm32-unknown-unknown
+
+# # Make an /app dir, which everything will eventually live in
+# RUN mkdir -p /app
+# WORKDIR /app
+# COPY . .
+
+# # Build the app
+# RUN cargo leptos build --release -vv
+
+# FROM debian:bullseye-slim AS runtime
+# WORKDIR /app
+# RUN apt-get update -y \
+# && apt-get install -y --no-install-recommends openssl libssl-dev ca-certificates \
+# && apt-get autoremove -y \
+# && apt-get clean -y \
+# && rm -rf /var/lib/apt/lists/*
+
+# # -- NB: update binary name from "leptos_start" to match your app name in Cargo.toml --
+# # Copy the server binary to the /app directory
+# COPY --from=builder /app/target/release/tanguy-gerome-fi /app/
+
+# # /target/site contains our JS/WASM/CSS, etc.
+# COPY --from=builder /app/target/site /app/site
+
+# # Copy Cargo.toml if it’s needed at runtime
+# COPY --from=builder /app/Cargo.toml /app/
+
+# Set any required env variables and
+ENV RUST_LOG="info"
+ENV LEPTOS_SITE_ADDR="0.0.0.0:8080"
+ENV LEPTOS_SITE_ROOT="site"
+EXPOSE 8080
+
+# -- NB: update binary name from "leptos_start" to match your app name in Cargo.toml --
+# Run the server
+CMD ["/app/tanguy-gerome-fi"]
+
diff --git a/locales/en.yaml b/locales/en.yaml
index 0a576b9..d49f87d 100644
--- a/locales/en.yaml
+++ b/locales/en.yaml
@@ -2,6 +2,8 @@ home: Home
available_in: "Available in:"
partial_translations: (partial translations)
+resume: Resume
+
blog: Blog
welcome_blog: Welcome to my blog!
diff --git a/locales/fi.yaml b/locales/fi.yaml
index bf5bdbe..9424e93 100644
--- a/locales/fi.yaml
+++ b/locales/fi.yaml
@@ -2,6 +2,8 @@ home: Koti
available_in: "Saatavilla kielillä:"
partial_translations: (keskeneräisiä käännöksiä)
+resume: Ansioluettelo
+
blog: Blogi
welcome_blog: Tervetuloa blogiini!
diff --git a/locales/fr.yaml b/locales/fr.yaml
index 322b871..7bff598 100644
--- a/locales/fr.yaml
+++ b/locales/fr.yaml
@@ -2,6 +2,8 @@ home: Accueil
available_in: "Disponible en:"
partial_translations: (traductions partielles)
+resume: CV
+
blog: Blog
welcome_blog: Bienvenue sur mon blog!
diff --git a/src/components/mod.rs b/locales/uk.yaml
old mode 100644
new mode 100755
similarity index 100%
rename from src/components/mod.rs
rename to locales/uk.yaml
diff --git a/src/app.rs b/src/app.rs
index 14f98bf..44c554a 100644
--- a/src/app.rs
+++ b/src/app.rs
@@ -1,13 +1,33 @@
-use leptos::*;
-use leptos_meta::*;
-use leptos_router::*;
+use leptos::prelude::*;
+use leptos_meta::{provide_meta_context, MetaTags, Stylesheet, Title};
+use leptos_router::{
+ components::{Outlet, ParentRoute, Route, Router, Routes, A}, path
+};
+use leptos_i18n_router::I18nRoute;
+use serde::{Deserialize, Serialize};
use crate::i18n::*;
-use crate::error_template::{AppError, ErrorTemplate};
-// use crate::services::contentful::get_rich_text_page;
-// use crate::services::rich_text;
-use crate::routes::gallery;
+pub fn shell(options: LeptosOptions) -> impl IntoView {
+ view! {
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ }
+}
#[component]
pub fn App() -> impl IntoView {
@@ -16,8 +36,6 @@ pub fn App() -> impl IntoView {
view! {
-
-
// id=leptos means cargo-leptos will hot-reload this stylesheet
@@ -25,25 +43,18 @@ pub fn App() -> impl IntoView {
-
- }
- .into_view()
- }>
+ // content for this welcome page
+
-
- }>
-
- //
- //
-
-
-
-
-
+
+ view=Outlet>
+
+
+
+
+
+
+ >
@@ -81,17 +92,19 @@ pub fn Header() -> impl IntoView {
tanguy .gerome .fi
-
+
@@ -110,7 +123,7 @@ pub fn Footer() -> impl IntoView {
{t!(i18n, tanguy_gerome)}
@@ -118,44 +131,89 @@ pub fn Footer() -> impl IntoView {
}
}
+#[derive(Deserialize, Serialize, Clone, Debug, Default)]
+pub struct HomePageTranslations {
+ content: String
+}
+
+#[derive(Deserialize, Serialize, Clone, Debug)]
+pub struct HomePageSingleton {
+ translations: Option
+}
+
+#[server(GetHomepage, "/api", "GetJson")]
+pub async fn get_homepage(locale: String) -> Result {
+ crate::services::directus::get_client()
+ .get_item::(&locale, "homepage", "homepage").await
+ .map_err(|e| ServerFnError::ServerError(e.to_string()))
+}
+
#[component]
pub fn HomePage() -> impl IntoView {
+ let i18n = use_i18n();
+
+ let homepage = Resource::new(move || i18n.get_locale(), move |locale| get_homepage(locale.to_string()));
view! {
- Welcome!
-
- I am Tanguy Gérôme , a 26 year old software developer, amateur photographer, and over all nerd living in Helsinki, Finland, originally from Cornimont, France.
-
-
- On here you can find my personal photography portfolio, and (coming) a blog where I scribble about whatever comes to mind in relation to my hobbies and interests, including:
-
-
- Linux
- video games
- knitting
- hiking
- scouting
- language learning
- photography (digital and film)
-
-
-
- I am also using this website as a way to practice in my language learning journey, so expect unfinished and low quality translations for anything other than English and French :D
-
- This website is still under construction, more content to come (hopefully) soon.
-
- //
- // {match page {
- // Ok(page) => {
- // view! {
- //
- // {rich_text::document_handler(&page.english.rich_text_content)}
- //
- // }
- // },
- // Err(error) => view! { "Error: "{error.to_string()}
}
- // }}
- //
+ "Loading..." }
+ >
+ {move || homepage.get()
+ .and_then(|homepage| homepage.ok())
+ .and_then(|homepage| {
+ let html = markdown::to_html(&homepage.translations.unwrap_or_default().content);
+ view! {
+
+ }.into()
+ })
+ }
+
+
+ }
+}
+
+#[derive(Deserialize, Serialize, Clone, Debug, Default)]
+pub struct ResumeTranslations {
+ content: String
+}
+
+#[derive(Deserialize, Serialize, Clone, Debug)]
+pub struct ResumeSingleton {
+ translations: Option
+}
+
+#[server(GetResume, "/api", "GetJson")]
+pub async fn get_resume(locale: String) -> Result {
+ crate::services::directus::get_client()
+ .get_item::(&locale, "resume", "resume").await
+ .map_err(|e| ServerFnError::ServerError(e.to_string()))
+}
+
+#[component]
+pub fn Resume() -> impl IntoView {
+ let i18n = use_i18n();
+
+ let resume = Resource::new(move || i18n.get_locale(), move |locale| get_resume(locale.to_string()));
+ view! {
+
+
+ "Loading..." }
+ >
+ {move || resume.get()
+ .and_then(|resume| resume.ok())
+ .and_then(|resume| {
+ let html = markdown::to_html(&resume.translations.unwrap_or_default().content);
+ view! {
+
+ }.into()
+ })
+ }
+
}
}
diff --git a/src/blog.rs b/src/blog.rs
deleted file mode 100644
index 4199373..0000000
--- a/src/blog.rs
+++ /dev/null
@@ -1,103 +0,0 @@
-use leptos::*;
-use leptos_router::*;
-use serde::{Deserialize, Serialize};
-
-use crate::i18n::*;
-// use crate::services::contentful::get_markdown_page;
-// use crate::services::rich_text;
-
-#[derive(Clone, Debug, Serialize, Deserialize)]
-pub struct BlogPostMetadata {
- title: String,
- page_slug: String,
-}
-
-#[derive(Params, PartialEq)]
-struct BlogPostParams {
- slug: String
-}
-
-// #[server(GetBlogPostList, "/api", "GetJson")]
-// pub async fn get_blog_post_list() -> Result
, ServerFnError> {
-// use crate::services::contentful;
-// let contentful_client = contentful::get_contentful_client();
-// let pages = contentful_client.get_entries_by_type::("richTextPageLanguagesWrapper", None).await;
-// match pages {
-// Ok(found_pages) => {
-// Ok(found_pages.into_iter().map(|page| BlogPostMetadata { title: page.english.title, page_slug: page.english.page_slug }).collect())
-// },
-// Err(e) => Err(ServerFnError::ServerError(e.to_string())),
-// }
-// }
-
-#[component]
-pub fn BlogList() -> impl IntoView {
- let i18n = use_i18n();
- // let blog_pages_local = create_local_resource(|| (), |_| async move { get_blog_post_list().await });
- // let blog_pages = create_resource(|| (), |_| async move { get_blog_post_list().await });
-
- view! {
-
- {t!(i18n, welcome_blog)}
- //
- // "Loaded " {pages.as_ref().unwrap().len()} " pages"
- //
- // "Loading..." }>
- // {move || blog_pages_local.get()
- // .map(|pages| view! { "Loaded " {pages.unwrap().len()} " pages"
})
- // }
- //
-
-
- // "Loading..." }>
- // {match blog_pages.get().unwrap_or(Ok(Vec::new())) {
- // Ok(pages) => {
- // view! {
- //
- // {pages.into_iter()
- // .map(|page| {
- // let blog_post_url = format!("/blog/{}", page.page_slug);
- // view! { {page.title} }
- // })
- // .collect::>()}
- //
- // }
- // },
- // Err(error) => view! { "Error: "{error.to_string()} }
- // }}
- // {move || blog_pages.get()
- // .map(|pages| view! { "Found " {pages.unwrap().len()} " pages"
})
- // }
- //
-
- }
-}
-
-#[component]
-pub fn BlogPost() -> impl IntoView {
- // let params = use_params::();
- // let slug= move || {
- // params.with(|params| params.as_ref()
- // .map(|params| params.slug.clone())
- // .unwrap())
- // };
- // let blog_page = create_resource(|| (), move |_| async move { get_rich_text_page(slug()).await });
-
- view! {
-
- // "Loading..." }>
- // {match blog_page.get().unwrap_or(Err(ServerFnError::ServerError("Loading...".to_string()))) {
- // Ok(page) => {
- // view! {
- //
- //
{page.english.title}
- // {rich_text::document_handler(&page.english.rich_text_content)}
- //
- // }
- // },
- // Err(error) => view! { "Error: "{error.to_string()}
}
- // }}
- //
-
- }
-}
diff --git a/src/error_template.rs b/src/error_template.rs
deleted file mode 100644
index 1e0508d..0000000
--- a/src/error_template.rs
+++ /dev/null
@@ -1,72 +0,0 @@
-use http::status::StatusCode;
-use leptos::*;
-use thiserror::Error;
-
-#[derive(Clone, Debug, Error)]
-pub enum AppError {
- #[error("Not Found")]
- NotFound,
-}
-
-impl AppError {
- pub fn status_code(&self) -> StatusCode {
- match self {
- AppError::NotFound => StatusCode::NOT_FOUND,
- }
- }
-}
-
-// A basic function to display errors served by the error boundaries.
-// Feel free to do more complicated things here than just displaying the error.
-#[component]
-pub fn ErrorTemplate(
- #[prop(optional)] outside_errors: Option,
- #[prop(optional)] errors: Option>,
-) -> impl IntoView {
- let errors = match outside_errors {
- Some(e) => create_rw_signal(e),
- None => match errors {
- Some(e) => e,
- None => panic!("No Errors found and we expected errors!"),
- },
- };
- // Get Errors from Signal
- let errors = errors.get_untracked();
-
- // Downcast lets us take a type that implements `std::error::Error`
- let errors: Vec = errors
- .into_iter()
- .filter_map(|(_k, v)| v.downcast_ref::().cloned())
- .collect();
- println!("Errors: {errors:#?}");
-
- // Only the response code for the first error is actually sent from the server
- // this may be customized by the specific application
- #[cfg(feature = "ssr")]
- {
- use leptos_axum::ResponseOptions;
- let response = use_context::();
- if let Some(response) = response {
- response.set_status(errors[0].status_code());
- }
- }
-
- view! {
- {if errors.len() > 1 {"Errors"} else {"Error"}}
- {error_code.to_string()}
- "Error: " {error_string}
- }
- }
- />
- }
-}
diff --git a/src/fileserv.rs b/src/fileserv.rs
deleted file mode 100644
index a499201..0000000
--- a/src/fileserv.rs
+++ /dev/null
@@ -1,60 +0,0 @@
-use crate::app::App;
-use axum::response::Response as AxumResponse;
-use axum::{
- body::Body,
- extract::State,
- http::{Request, Response, StatusCode},
- response::IntoResponse,
-};
-use leptos::*;
-use tower::ServiceExt;
-use tower_http::services::ServeDir;
-
-pub async fn file_and_error_handler(
- State(options): State,
- req: Request,
-) -> AxumResponse {
- let root = options.site_root.clone();
- let (parts, body) = req.into_parts();
-
- let mut static_parts = parts.clone();
- static_parts.headers.clear();
- if let Some(encodings) = parts.headers.get("accept-encoding") {
- static_parts
- .headers
- .insert("accept-encoding", encodings.clone());
- }
-
- let res = get_static_file(Request::from_parts(static_parts, Body::empty()), &root)
- .await
- .unwrap();
-
- if res.status() == StatusCode::OK {
- res.into_response()
- } else {
- let handler = leptos_axum::render_app_to_stream(options.to_owned(), App);
- handler(Request::from_parts(parts, body))
- .await
- .into_response()
- }
-}
-
-async fn get_static_file(
- request: Request,
- root: &str,
-) -> Result, (StatusCode, String)> {
- // `ServeDir` implements `tower::Service` so we can call it with `tower::ServiceExt::oneshot`
- // This path is relative to the cargo root
- match ServeDir::new(root)
- .precompressed_gzip()
- .precompressed_br()
- .oneshot(request)
- .await
- {
- Ok(res) => Ok(res.into_response()),
- Err(err) => Err((
- StatusCode::INTERNAL_SERVER_ERROR,
- format!("Error serving files: {err}"),
- )),
- }
-}
diff --git a/src/gallery.rs b/src/gallery.rs
new file mode 100644
index 0000000..ad77de7
--- /dev/null
+++ b/src/gallery.rs
@@ -0,0 +1,134 @@
+use leptos::{
+ Params,
+ prelude::*
+};
+use serde::{Deserialize, Serialize};
+use leptos_router::{
+ components::Outlet, hooks::use_params, params::Params
+};
+
+use crate::{i18n::*, services::directus::Asset};
+
+#[derive(Clone, Debug, Serialize, Deserialize, Default)]
+pub struct ImageTranslations {
+ subtitle: Option,
+ description: String
+}
+
+#[derive(Clone, Debug, Serialize, Deserialize)]
+#[serde(rename_all = "camelCase")]
+pub struct Image {
+ slug: String,
+ title: String,
+ translations: Option,
+ watermarked: Asset,
+ original: Asset,
+}
+
+#[derive(Clone, Debug, Serialize, Deserialize)]
+pub struct Gallery {
+ images: Vec
+}
+
+#[server(GetGallery, "/api", "GetJson")]
+pub async fn get_gallery(locale: String) -> Result {
+ let all_images = crate::services::directus::get_client().get_all_items_in_collection::(&locale, "image").await.unwrap_or(vec![]);
+ crate::services::directus::get_client().get_item_json("gallery", "gallery").await
+ .map_err(|e| ServerFnError::ServerError(e.to_string()))
+ .and_then(|gallery_json| {
+ let images_vec_json = gallery_json["data"]["images"].as_array().unwrap();
+ let images = images_vec_json.into_iter().map(|image_json| {
+ all_images.iter().find(|image| image.slug == image_json["item"])
+ .map(|found_image| found_image.clone())
+ });
+ let collected_images: Option> = images.collect();
+ match collected_images {
+ Some(images) => Ok(Gallery{ images }),
+ _ => Err(ServerFnError::ServerError("aaa".to_string()))
+ }
+ })
+}
+
+#[component]
+pub fn Gallery() -> impl IntoView {
+ let i18n = use_i18n();
+
+ let gallery = Resource::new(move || i18n.get_locale(), move |locale| get_gallery(locale.to_string()));
+
+ view! {
+
+ {t!(i18n, gallery)}
+
+ "Loading..." }>
+ {move || gallery.get()
+ .and_then(|gallery| gallery.ok())
+ .and_then(|gallery| {
+ view! {
+
+ {
+ gallery.images.into_iter().map(|image| {
+ view! {
+
+
+ {image.title}
+
+ }
+ }).collect::
>()
+ }
+
+ }.into()
+ })
+ }
+
+
+ }
+}
+
+#[derive(Params, PartialEq)]
+struct GalleryEntryParams {
+ slug: Option,
+}
+
+#[component]
+pub fn GalleryEntry() -> impl IntoView {
+ let i18n = use_i18n();
+ let params = use_params::();
+ let slug = move || {
+ params .read()
+ .as_ref()
+ .ok()
+ .and_then(|params| params.slug.clone())
+ .unwrap_or_default()
+ };
+
+ let gallery = Resource::new(move || i18n.get_locale(), move |locale| get_gallery(locale.to_string()));
+
+ view! {
+
+ "Loading..." }>
+ {move || gallery.get()
+ .and_then(|gallery| gallery.ok())
+ .and_then(|gallery| gallery.images.iter()
+ .find(|image| image.slug == slug())
+ .map(|image| image.clone()))
+ .and_then(|image| {
+ let translations = image.translations.unwrap_or_default();
+ let subtitle = translations.subtitle.unwrap_or_default();
+ view! {
+
+
+
{image.title}
+ {if subtitle.len() > 0 {
+ Some(view!{
{subtitle} })
+ } else {
+ None
+ }}
+
{translations.description}
+
+ }.into()
+ })
+ }
+
+
+ }
+}
diff --git a/src/lib.rs b/src/lib.rs
index 0ac15cb..6758df1 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -1,19 +1,15 @@
leptos_i18n::load_locales!();
-pub mod app;
-pub mod blog;
-pub mod error_template;
-pub mod components;
-pub mod routes;
+pub mod app;
+
pub mod services;
-#[cfg(feature = "ssr")]
-pub mod fileserv;
+pub mod gallery;
#[cfg(feature = "hydrate")]
#[wasm_bindgen::prelude::wasm_bindgen]
pub fn hydrate() {
use crate::app::*;
console_error_panic_hook::set_once();
- leptos::mount_to_body(App);
+ leptos::mount::hydrate_body(App);
}
diff --git a/src/main.rs b/src/main.rs
index 1d4050d..04aa135 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -1,3 +1,4 @@
+
#[cfg(feature = "ssr")]
#[tokio::main]
async fn main() {
@@ -5,29 +6,29 @@ async fn main() {
let _ = dotenvy::dotenv();
}
use axum::Router;
- use leptos::*;
+ use leptos::logging::log;
+ use leptos::prelude::*;
use leptos_axum::{generate_route_list, LeptosRoutes};
use tanguy_gerome_fi::app::*;
- use tanguy_gerome_fi::fileserv::file_and_error_handler;
- // Setting get_configuration(None) means we'll be using cargo-leptos's env values
- // For deployment these variables are:
- //
- // Alternately a file can be specified such as Some("Cargo.toml")
- // The file would need to be included with the executable when moved to deployment
- let conf = get_configuration(None).await.unwrap();
+ let conf = get_configuration(None).unwrap();
+ let addr = conf.leptos_options.site_addr;
let leptos_options = conf.leptos_options;
- let addr = leptos_options.site_addr;
+ // Generate the list of routes in your Leptos App
let routes = generate_route_list(App);
- // build our application with a route
let app = Router::new()
- .leptos_routes(&leptos_options, routes, App)
- .fallback(file_and_error_handler)
+ .leptos_routes(&leptos_options, routes, {
+ let leptos_options = leptos_options.clone();
+ move || shell(leptos_options.clone())
+ })
+ .fallback(leptos_axum::file_and_error_handler(shell))
.with_state(leptos_options);
+ // run our app with hyper
+ // `axum::Server` is a re-export of `hyper::Server`
+ log!("listening on http://{}", &addr);
let listener = tokio::net::TcpListener::bind(&addr).await.unwrap();
- logging::log!("listening on http://{}", &addr);
axum::serve(listener, app.into_make_service())
.await
.unwrap();
@@ -36,6 +37,6 @@ async fn main() {
#[cfg(not(feature = "ssr"))]
pub fn main() {
// no client-side main function
- // unless we want this to work with e.g., Trunk for a purely client-side app
+ // unless we want this to work with e.g., Trunk for pure client-side testing
// see lib.rs for hydration function instead
}
diff --git a/src/routes/gallery.rs b/src/routes/gallery.rs
deleted file mode 100644
index 20d6a2d..0000000
--- a/src/routes/gallery.rs
+++ /dev/null
@@ -1,142 +0,0 @@
-use leptos::*;
-use leptos_router::*;
-use serde::{Deserialize, Serialize};
-
-// use crate::i18n::*;
-
-#[derive(Clone, Debug, Serialize, Deserialize)]
-#[serde(rename_all = "camelCase")]
-pub struct WatermarkedImage {
- title: String,
- slug: String,
- #[serde(default)]
- description: String,
- image_without_watermark: contentful::models::Asset,
- image_with_watermark: contentful::models::Asset
-}
-
-#[derive(Clone, Debug, Serialize, Deserialize)]
-pub struct Gallery {
- title: String,
- slug: String,
- #[serde(default)]
- description: String,
- images: Vec
-}
-
-#[server(GetGallery, "/api", "GetJson")]
-pub async fn get_gallery() -> Result {
- use crate::services::contentful;
- let contentful_client = contentful::get_contentful_client();
- let slug = "photography-portfolio";
- let query_string = format!("?content_type=imageGallery&include=10&fields.slug={}", slug);
- let galleries = contentful_client.get_entries_by_query_string::(&query_string).await;
- match galleries {
- Ok(found_galleries) => {
- if found_galleries.len() != 1 {
- return Err(ServerFnError::ServerError("Found none or more than one".to_string()));
- }
- Ok(found_galleries[0].clone())
- },
- Err(e) => Err(ServerFnError::ServerError(e.to_string())),
- }
-}
-
-#[derive(Params, PartialEq)]
-struct GalleryEntryParams {
- slug: String
-}
-
-#[component]
-pub fn GalleryEntry() -> impl IntoView {
- let params = use_params::();
- let slug= move || {
- params.with(|params| params.as_ref()
- .map(|params| params.slug.clone())
- .unwrap_or_default())
- };
- let gallery = create_resource(|| (), |_| async move { get_gallery().await });
-
- view! {
- "Loading..." }>
- {move || {
- gallery.get().map(|gallery_loaded|
- match gallery_loaded {
- Ok(gallery) => {
- let image = move || gallery.images.into_iter()
- .find(move |image| image.slug == slug());
- match image() {
- None => view! {
},
- Some(image) => {
- let display_url = format!("https:{}?w=2400&h=2400&q=80&fm=avif", &image.image_with_watermark.file.url);
- let jpg_display_url = format!("https:{}?w=2400&h=2400&q=80&fm=jpg", &image.image_with_watermark.file.url);
- view! {
-
-
-
-
-
-
{image.title.clone()}
-
{image.description}
-
- }
- }
- }
- },
- Err(error) => view! { "Error: "{error.to_string()}
}
- }
- )
-
- }}
-
- }
-
-}
-
-#[component]
-pub fn Gallery() -> impl IntoView {
- let gallery = create_resource(|| (), |_| async move { get_gallery().await });
-
- view! {
-
-
- "Loading..." }>
- {move || {
- gallery.get().map(|gallery_loaded|
- match gallery_loaded {
- Ok(gallery) => {
- view! {
-
-
{gallery.title}
-
{gallery.description}
-
- {gallery.images.into_iter()
- .map(|image| {
- let thumbnail_url = format!("https:{}?w=800&h=800&q=80&fm=avif", &image.image_without_watermark.file.url);
- let jpg_thumbnail_url = format!("https:{}?w=800&h=800&q=80&fm=jpg", &image.image_without_watermark.file.url);
- let link_url = format!("/gallery/{}", &image.slug);
- view! {
-
-
-
-
-
-
-
-
- }
- }).collect::>()
- }
-
-
- }
- },
- Err(error) => view! { "Error: "{error.to_string()}
}
- }
- )
-
- }}
-
-
- }
-}
diff --git a/src/routes/mod.rs b/src/routes/mod.rs
deleted file mode 100644
index 31dedbe..0000000
--- a/src/routes/mod.rs
+++ /dev/null
@@ -1,2 +0,0 @@
-
-pub mod gallery;
diff --git a/src/services/contentful.rs b/src/services/contentful.rs
deleted file mode 100644
index 185e098..0000000
--- a/src/services/contentful.rs
+++ /dev/null
@@ -1,51 +0,0 @@
-use std::env;
-use leptos::*;
-use serde::{Deserialize, Serialize};
-
-#[derive(Clone, Debug, Serialize, Deserialize)]
-#[serde(rename_all = "camelCase")]
-pub struct MarkdownPage {
- pub title: String,
- pub slug: String,
- pub content: String,
-}
-
-#[derive(Clone, Debug, Serialize, Deserialize)]
-#[serde(rename_all = "camelCase")]
-pub struct MarkdownPageLanguagesWrapper {
- pub internal_title: String,
- pub slug: String,
- pub english: MarkdownPage,
-}
-
-#[server(GetRichTextPage, "/api", "GetJson")]
-pub async fn get_markdown_page(slug: String) -> Result {
- let contentful_client = get_contentful_client();
- let builder = contentful::QueryBuilder::new()
- .content_type_is("markdownPageLanguagesWrapper")
- .include(10)
- .field_equals("fields.slug", &slug);
- // let query_string = format!("?content_type=markdownPageLanguagesWrapper&include=10&fields.slug={}", slug);
- // let pages = contentful_client.get_entries_by_query_string::(&query_string).await;
- let pages = contentful_client.get_entries::(Some(builder)).await;
- match pages {
- Ok(found_pages) => {
- if found_pages.len() != 1 {
- return Err(ServerFnError::ServerError("Found none or more than one".to_string()));
- }
- let english_content = found_pages[0].english.content.clone();
- dbg!(english_content);
- Ok(found_pages[0].clone())
- },
- Err(e) => Err(ServerFnError::ServerError(e.to_string())),
- }
-}
-
-pub fn get_contentful_client() -> contentful::ContentfulClient {
- let access_token = env::var("CONTENTFUL_ACCESS_TOKEN").unwrap();
- const SPACE_ID: &str = "e3magj9g6dp1";
- // let base_url = "https://cdn.contentful.com/spaces";
- // const ENVIRONMENT_ID: &str = "master";
- // return Client::new(&access_token, SPACE_ID, base_url, ENVIRONMENT_ID);
- return contentful::ContentfulClient::new(&access_token, SPACE_ID);
-}
diff --git a/src/services/directus.rs b/src/services/directus.rs
new file mode 100644
index 0000000..30ba30d
--- /dev/null
+++ b/src/services/directus.rs
@@ -0,0 +1,84 @@
+use std::collections::HashMap;
+use std::env;
+use leptos::prelude::*;
+use serde::{Deserialize, Serialize};
+
+pub struct DirectusClient {
+ access_token: String,
+ base_url: String,
+ reqwest_client: reqwest::Client
+}
+
+#[derive(Clone, Debug, Serialize, Deserialize)]
+pub struct Asset {
+ pub id: String
+}
+
+impl DirectusClient {
+ pub fn new(access_token: &str, base_url: &str) -> DirectusClient {
+ let reqwest_client = reqwest::Client::new();
+ DirectusClient {
+ access_token: access_token.to_string(),
+ base_url: base_url.to_string(),
+ reqwest_client
+ }
+ }
+
+ pub async fn list_items_in_collection(&self, collection: &str, primary_key: &str) -> Result> {
+ let response = self.reqwest_client.get(format!("{}/items/{}?fields={}", self.base_url, collection, primary_key))
+ .header("Authorization", format!("Bearer {}", self.access_token))
+ .send().await?;
+ let items_json = response.json::>>().await?;
+ let ids = items_json.iter().map(|item| item[&primary_key.to_string()].clone()).collect();
+ Ok(ids)
+ }
+
+ pub async fn get_item_json(&self, collection: &str, id: &str) -> Result {
+ let response = self.reqwest_client.get(format!("{}/items/{}/{}?fields=*,*.*,translations.*", self.base_url, collection, id))
+ .header("Authorization", format!("Bearer {}", self.access_token))
+ .send().await?;
+ let json = &response.json::().await?;
+ Ok(json.clone())
+ }
+
+ pub async fn get_item Deserialize<'a>>(&self, locale: &str, collection: &str, id: &str) -> Result {
+ let response = self.reqwest_client.get(format!("{}/items/{}/{}?fields=*,*.*,translations.*", self.base_url, collection, id))
+ .header("Authorization", format!("Bearer {}", self.access_token))
+ .send().await?;
+ let json = &response.json::().await?;
+ let translations_json = json["data"]["translations"].clone();
+ let found_translation = match translations_json.as_array() {
+ Some(translations) => translations.iter().find(|translation| translation["languages_code"] == locale),
+ _ => None
+ };
+ let mut new_json = json["data"].clone();
+ new_json["translations"] = found_translation.unwrap_or(&serde_json::Value::Null).clone();
+ let item = serde_json::from_value::(new_json)?;
+ Ok(item)
+ }
+
+ pub async fn get_all_items_in_collection Deserialize<'a>>(&self, locale: &str, collection: &str) -> Result> {
+ let response = self.reqwest_client.get(format!("{}/items/{}?fields=*,*.*,translations.*", self.base_url, collection))
+ .header("Authorization", format!("Bearer {}", self.access_token))
+ .send().await?;
+ let json = &response.json::().await?;
+ let items_json = json["data"].as_array().unwrap_or(&vec!()).clone();
+ let items = items_json.iter().map(|item_json| {
+ let translations_json = item_json["translations"].clone();
+ let found_translation = match translations_json.as_array() {
+ Some(translations) => translations.iter().find(|translation| translation["languages_code"] == locale),
+ _ => None
+ };
+ let mut new_json = item_json.clone();
+ new_json["translations"] = found_translation.unwrap_or(&serde_json::Value::Null).clone();
+ let item = serde_json::from_value::(new_json);
+ item.unwrap()
+ }).collect();
+ Ok(items)
+ }
+}
+
+pub fn get_client() -> DirectusClient {
+ let access_token = env::var("DIRECTUS_ACCESS_TOKEN").unwrap();
+ DirectusClient::new(&access_token, "https://directus.gerome.fi")
+}
diff --git a/src/services/mod.rs b/src/services/mod.rs
index 1fd78e4..a1f0401 100644
--- a/src/services/mod.rs
+++ b/src/services/mod.rs
@@ -1,2 +1,2 @@
-pub mod contentful;
-pub mod rich_text;
+
+pub mod directus;
diff --git a/src/services/rich_text.rs b/src/services/rich_text.rs
deleted file mode 100644
index 49f4673..0000000
--- a/src/services/rich_text.rs
+++ /dev/null
@@ -1,193 +0,0 @@
-use leptos::*;
-use serde::{Deserialize, Serialize};
-use serde_json::Value;
-
-#[derive(Clone, Debug, Serialize, Deserialize)]
-#[serde(rename_all = "camelCase", untagged)]
-pub enum RichTextNode {
- Block {
- node_type: String,
- // data: Option,
- content: Vec,
- },
- Text {
- node_type: String,
- // data: Option,
- value: String,
- // marks: Vec,
- },
-}
-
-#[derive(Clone, Debug, Serialize, Deserialize)]
-#[serde(rename_all = "camelCase")]
-pub struct TextBlock {
- node_type: String,
- // data: Option,
- value: String,
- // marks: Vec,
-}
-
-
-#[derive(Clone, Debug, Serialize, Deserialize)]
-pub struct Mark {
- #[serde(rename = "type")]
- pub mark_type: String
-}
-
-#[derive(Debug, Clone)]
-struct NodeHandler {
- node_type: &'static str,
- function: fn (node: &Value) -> HtmlElement,
-}
-
-const NODE_HANDLERS: [NodeHandler; 12] = [
- NodeHandler { node_type: "document", function: document_handler },
- NodeHandler { node_type: "paragraph", function: paragraph_handler },
- NodeHandler { node_type: "text", function: text_handler },
- NodeHandler { node_type: "heading-1", function: heading_1_handler },
- NodeHandler { node_type: "heading-2", function: heading_2_handler },
- NodeHandler { node_type: "heading-3", function: heading_3_handler },
- NodeHandler { node_type: "heading-4", function: heading_4_handler },
- NodeHandler { node_type: "heading-5", function: heading_5_handler },
- NodeHandler { node_type: "heading-6", function: heading_6_handler },
- NodeHandler { node_type: "hr", function: hr_handler },
- NodeHandler { node_type: "blockquote", function: quote_handler },
- NodeHandler { node_type: "embedded-asset-block", function: asset_handler },
-];
-
-pub fn document_handler(node: &Value) -> HtmlElement {
- let children: Vec = serde_json::from_value(node["content"].clone()).unwrap();
- view! {
-
- {render_children(&children)}
-
- }.into()
-}
-
-fn paragraph_handler(node: &Value) -> HtmlElement {
- let children: Vec = serde_json::from_value(node["content"].clone()).unwrap();
- view! {
-
- {render_children(&children)}
-
- }.into()
-}
-
-fn text_handler(node: &Value) -> HtmlElement {
- let block: TextBlock = serde_json::from_value(node.clone()).unwrap();
- let text = block.value.replace("\n", " ");
- view! { {} }.into()
-}
-
-fn heading_1_handler(node: &Value) -> HtmlElement {
- let children: Vec = serde_json::from_value(node["content"].clone()).unwrap();
- view! { {render_children(&children)} }.into()
-}
-
-fn heading_2_handler(node: &Value) -> HtmlElement {
- let children: Vec = serde_json::from_value(node["content"].clone()).unwrap();
- view! { {render_children(&children)} }.into()
-}
-
-fn heading_3_handler(node: &Value) -> HtmlElement {
- let children: Vec = serde_json::from_value(node["content"].clone()).unwrap();
- view! { {render_children(&children)} }.into()
-}
-
-fn heading_4_handler(node: &Value) -> HtmlElement {
- let children: Vec = serde_json::from_value(node["content"].clone()).unwrap();
- view! { {render_children(&children)} }.into()
-}
-
-fn heading_5_handler(node: &Value) -> HtmlElement {
- let children: Vec = serde_json::from_value(node["content"].clone()).unwrap();
- view! { {render_children(&children)} }.into()
-}
-
-fn heading_6_handler(node: &Value) -> HtmlElement {
- let children: Vec = serde_json::from_value(node["content"].clone()).unwrap();
- view! { {render_children(&children)} }.into()
-}
-
-fn hr_handler(_node: &Value) -> HtmlElement {
- view! { }.into()
-}
-
-fn quote_handler(node: &Value) -> HtmlElement {
- let children: Vec = serde_json::from_value(node["content"].clone()).unwrap();
- view! { {render_children(&children)} }.into()
-}
-
-
-fn asset_handler(_node: &Value) -> HtmlElement {
- // let data = node["data"];
- // let img_url = format!(
- // "https://images.ctfassets.net/e3magj9g6dp1/14q5L7K0BCol1gx0aCSCck/d1f69bfa404efed6a2dcc71401bbc16d/P5310039-1-2.jpg?w=1600&q=50&fm=avif"
- // );
- view! { }.into()
-}
-
-fn empty_handler() -> HtmlElement {
- view! {
}.into()
-}
-
-fn node_dispatcher(node: &Value) -> HtmlElement {
- for handler in NODE_HANDLERS.iter() {
- let node_type = node["nodeType"].clone();
- if handler.node_type == node_type {
- return (handler.function)(node)
- }
- }
-
- empty_handler()
-}
-
-fn render_children(children: &Vec) -> Vec> {
- children.iter().map(|child| node_dispatcher(child)).collect()
-}
-
-// pub fn render_rich_text(rich_text: Value) -> HtmlElement {
-// node_dispatcher(&rich_text)
-// }
-
-// fn _document_handler(node: &RichTextNode) -> HtmlElement {
-// let empty_vec: Vec = Vec::new();
-// let children = match node {
-// RichTextNode::Block{node_type: _, content} => content,
-// // RichTextNode::Block{node_type: _, data: _, content} => content,
-// _ => &empty_vec,
-// };
-// view! {
-//
-// {_render_children(children)}
-//
-// }.into()
-// }
-
-// fn _text_handler(node: &RichTextNode) -> HtmlElement {
-// match node {
-// RichTextNode::Text{node_type: _, value} => view! { {value} }.into(),
-// // RichTextNode::Text{node_type: _, data: _, value, marks} => view! { {value} }.into(),
-// _ => view! { Error }.into(),
-// }
-// }
-
-// fn _node_dispatcher(node: &RichTextNode) -> HtmlElement {
-// for handler in NODE_HANDLERS.iter() {
-// let node_type = match node.clone() {
-// // RichTextNode::Block{node_type, data: _, content: _} => node_type,
-// // RichTextNode::Text{node_type, data: _, value: _, marks: _} => node_type,
-// RichTextNode::Block{node_type, content: _} => node_type,
-// RichTextNode::Text{node_type, value: _} => node_type,
-// };
-// if handler.node_type == node_type {
-// // return (handler.function)(node)
-// }
-// }
-
-// empty_handler()
-// }
-
-// fn _render_children(children: &Vec) -> Vec> {
-// children.iter().map(|child| _node_dispatcher(child)).collect()
-// }
diff --git a/style/main.scss b/style/main.scss
index d346fdc..2d51a3b 100644
--- a/style/main.scss
+++ b/style/main.scss
@@ -53,10 +53,10 @@ body {
font-weight: 300;
line-height: 1.3;
}
- h1 { font-size: 42px; }
- h2 { font-size: 32px; }
- h3 { font-size: 22px; }
- h4 { font-size: 18px; }
+ h1 { font-size: 42px; margin: 32px 0 16px 0; }
+ h2 { font-size: 32px; margin: 64px 0 16px 0; }
+ h3 { font-size: 22px; margin: 32px 0 16px 0; }
+ h4 { font-size: 18px; margin: 32px 0 16px 0; }
header {
width: 100%;
@@ -87,7 +87,7 @@ body {
.text {
@include top-level-padding;
flex-basis: auto;
- flex-shrink: 1;
+ flex-shrink: 0;
flex-grow: 1;
display: flex;
@@ -119,7 +119,11 @@ body {
}
picture {
- display: contents;
+ max-width: 800px;
+ width: 100%;
+ max-height: 300px;
+ height: 100%;
+ // display: contents;
.image {
max-width: 800px;
@@ -155,6 +159,16 @@ body {
margin-bottom: 32px;
}
+ .markdown {
+ b, strong {
+ font-weight: 500;
+ }
+
+ img {
+ max-width: 100%;
+ }
+ }
+
footer {
background: $mainGrey;
color: white;
@@ -204,67 +218,67 @@ body {
}
}
-.gallery-wrapper {
- max-width: 1232px + 32px!important;
+.resume-image {
+ float: right;
+ max-width: 300px;
+ width: 100%;
+ margin: 16px;
- .open-entry {
- display: flex;
- flex-direction: column;
- align-items: flex-start;
- margin-top: 32px;
-
- picture {
- display: contents;
-
- img {
- object-fit: contain;
- width: 100%;
- max-height: 90vh;
- max-width: 1232px;
- align-self: center;
- }
- }
-
- h3 {
- margin-bottom: 8px;
- }
-
- p {
- margin-bottom: 64px;
- }
- }
-
- .gallery {
- h3 {
- width: fit-content;
- }
-
- ul {
- width: fit-content;
- display: flex;
- flex-direction: row;
- flex-wrap: wrap;
- justify-content: center;
- padding: 0;
- list-style: none;
- gap: 16px;
-
- li {
-
- picture {
- display: contents;
- img {
- height: 400px;
- width: 400px;
- object-fit: contain;
-
- @media all and (max-width: 1000px) {
- height: 300px;
- width: 300px;
- }
- }
- }
- }
- }
+ @media all and (max-width: 550px) {
+ float: unset;
+ display: block;
+ margin: auto;
+ margin-top: 16px;
+ margin-bottom: 16px;
+ }
+}
+
+.gallery-entries {
+ width: fit-content;
+ display: flex;
+ flex-direction: row;
+ flex-wrap: wrap;
+ justify-content: center;
+ padding: 0;
+ gap: 16px;
+}
+
+.gallery-thumbnail {
+ img {
+ height: 400px;
+ width: 400px;
+ object-fit: contain;
+
+ @media all and (max-width: 1000px) {
+ height: 300px;
+ width: 300px;
+ }
+ }
+
+ p {
+ text-align: center;
+ }
+}
+
+.gallery-open-entry {
+ display: flex;
+ flex-direction: column;
+ align-items: flex-start;
+ margin-top: 32px;
+
+ img {
+ object-fit: contain;
+ width: 100%;
+ max-height: 90vh;
+ max-width: 1232px;
+ align-self: center;
+ }
+
+ h3 {
+ margin-bottom: 8px;
+ }
+
+ p {
+ margin-bottom: 64px;
}
}