diff --git a/Cargo.lock b/Cargo.lock index a12b29b..8862e1d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -23,19 +23,13 @@ dependencies = [ [[package]] name = "addr2line" -version = "0.21.0" +version = "0.24.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" +checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" dependencies = [ "gimli", ] -[[package]] -name = "adler" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" - [[package]] name = "adler2" version = "2.0.0" @@ -92,9 +86,9 @@ dependencies = [ [[package]] name = "allocator-api2" -version = "0.2.18" +version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f" +checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" [[package]] name = "ammonia" @@ -137,16 +131,38 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "41058deaa38c9d9dd933d6d238d825227cffa668e2839b52879f6619c63eee3b" dependencies = [ "futures", - "thiserror 2.0.3", + "thiserror 2.0.9", "tokio", "wasm-bindgen-futures", ] [[package]] name = "anyhow" -version = "1.0.86" +version = "1.0.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da" +checksum = "34ac096ce696dc2fcabef30516bb13c0a68a11d30131d3df6f04711467681b04" + +[[package]] +name = "app" +version = "0.1.0" +dependencies = [ + "axum", + "chrono", + "http", + "icondata", + "leptos", + "leptos_axum", + "leptos_icons", + "leptos_meta", + "leptos_router", + "lettre", + "markdown", + "serde", + "surrealdb", + "thiserror 1.0.69", + "tracing", + "web-sys", +] [[package]] name = "approx" @@ -168,9 +184,9 @@ dependencies = [ [[package]] name = "arbitrary" -version = "1.3.2" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d5a26814d8dcb93b0e5a0ff3c6d80a8843bafb21b39e8e18a6f05471870e110" +checksum = "dde20b3d026af13f561bdd0f15edf01fc734f0dafcedbaf42bba506a9517f223" [[package]] name = "argon2" @@ -192,9 +208,9 @@ checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" [[package]] name = "arrayvec" -version = "0.7.4" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" +checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" [[package]] name = "ascii-canvas" @@ -207,20 +223,21 @@ dependencies = [ [[package]] name = "async-channel" -version = "1.9.0" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81953c529336010edd6d8e358f886d9581267795c61b19475b71314bffa46d35" +checksum = "89b47800b0be77592da0afd425cc03468052844aff33b84e33cc696f64e77b6a" dependencies = [ "concurrent-queue", - "event-listener 2.5.3", + "event-listener-strategy", "futures-core", + "pin-project-lite", ] [[package]] name = "async-compression" -version = "0.4.12" +version = "0.4.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fec134f64e2bc57411226dfc4e52dec859ddfc7e711fc5e07b612584f000e4aa" +checksum = "df895a515f70646414f4b45c0b79082783b80552b373a68283012928df56f522" dependencies = [ "brotli", "flate2", @@ -234,9 +251,9 @@ dependencies = [ [[package]] name = "async-executor" -version = "1.13.0" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7ebdfa2ebdab6b1760375fa7d6f382b9f486eac35fc994625a00e89280bdbb7" +checksum = "30ca9a001c1e8ba5149f91a74362376cc6bc5b919d92d988668657bd570bdcec" dependencies = [ "async-task", "concurrent-queue", @@ -247,9 +264,9 @@ dependencies = [ [[package]] name = "async-graphql" -version = "7.0.9" +version = "7.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d37c3e9ba322eb00e9e5e997d58f08e8b6de037325b9367ac59bca8e3cd46af" +checksum = "59fd6bd734afb8b6e4d0f84a3e77305ce0a7ccc60d70f6001cb5e1c3f38d8ff1" dependencies = [ "async-graphql-derive", "async-graphql-parser", @@ -262,25 +279,24 @@ dependencies = [ "futures-timer", "futures-util", "http", - "indexmap 2.6.0", + "indexmap 2.7.0", "mime", "multer", "num-traits", - "once_cell", "pin-project-lite", "regex", "serde", "serde_json", "serde_urlencoded", "static_assertions_next", - "thiserror 1.0.63", + "thiserror 1.0.69", ] [[package]] name = "async-graphql-derive" -version = "7.0.9" +version = "7.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1141703c11c6ad4fa9b3b0e1e476dea01dbd18a44db00f949b804afaab2f344" +checksum = "ac38b4dd452d529d6c0248b51df23603f0a875770352e26ae8c346ce6c149b3e" dependencies = [ "Inflector", "async-graphql-parser", @@ -289,15 +305,15 @@ dependencies = [ "proc-macro2", "quote", "strum", - "syn 2.0.89", - "thiserror 1.0.63", + "syn 2.0.95", + "thiserror 1.0.69", ] [[package]] name = "async-graphql-parser" -version = "7.0.9" +version = "7.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f66edcce4c38c18f7eb181fdf561c3d3aa2d644ce7358fc7a928c00a4ffef17" +checksum = "42d271ddda2f55b13970928abbcbc3423cfc18187c60e8769b48f21a93b7adaa" dependencies = [ "async-graphql-value", "pest", @@ -307,12 +323,12 @@ dependencies = [ [[package]] name = "async-graphql-value" -version = "7.0.9" +version = "7.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b0206011cad065420c27988f17dd7fe201a0e056b20c262209b7bffcd6fa176" +checksum = "aefe909173a037eaf3281b046dc22580b59a38b765d7b8d5116f2ffef098048d" dependencies = [ "bytes", - "indexmap 2.6.0", + "indexmap 2.7.0", "serde", "serde_json", ] @@ -323,16 +339,16 @@ version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ff6e472cdea888a4bd64f342f09b3f50e1886d32afe8df3d663c01140b811b18" dependencies = [ - "event-listener 5.3.1", + "event-listener", "event-listener-strategy", "pin-project-lite", ] [[package]] name = "async-stream" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd56dd203fef61ac097dd65721a419ddccb106b2d2b70ba60a6b529f03961a51" +checksum = "0b5a71a6f37880a80d1d7f19efd781e4b5de42c88f0722cc13bcb6cc2cfe8476" dependencies = [ "async-stream-impl", "futures-core", @@ -341,13 +357,13 @@ dependencies = [ [[package]] name = "async-stream-impl" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" +checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.95", ] [[package]] @@ -358,13 +374,13 @@ checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" [[package]] name = "async-trait" -version = "0.1.81" +version = "0.1.85" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e0c28dcc82d7c8ead5cb13beb15405b57b8546e93215673ff8ca0349a028107" +checksum = "3f934833b4b7233644e5848f235df3f57ed8c80f1528a26c3dfa13d2147fa056" dependencies = [ "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.95", ] [[package]] @@ -380,15 +396,15 @@ dependencies = [ [[package]] name = "atom_syndication" -version = "0.12.4" +version = "0.12.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a3a5ed3201df5658d1aa45060c5a57dc9dba8a8ada20d696d67cb0c479ee043" +checksum = "ec03a6e158ee0f38bfba811976ae909bc2505a4a2f4049c7e8df47df3497b119" dependencies = [ "chrono", - "derive_builder 0.20.1", + "derive_builder 0.20.2", "diligent-date-parser", "never", - "quick-xml 0.36.1", + "quick-xml 0.37.2", ] [[package]] @@ -402,7 +418,7 @@ dependencies = [ "manyhow", "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.95", ] [[package]] @@ -414,18 +430,18 @@ dependencies = [ "collection_literals", "interpolator", "manyhow", - "proc-macro-utils 0.10.0", + "proc-macro-utils", "proc-macro2", "quote", "quote-use", - "syn 2.0.89", + "syn 2.0.95", ] [[package]] name = "autocfg" -version = "1.3.0" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" +checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" [[package]] name = "axum" @@ -455,9 +471,9 @@ dependencies = [ "serde_json", "serde_path_to_error", "serde_urlencoded", - "sync_wrapper 1.0.1", + "sync_wrapper", "tokio", - "tower 0.5.1", + "tower", "tower-layer", "tower-service", "tracing", @@ -478,7 +494,7 @@ dependencies = [ "mime", "pin-project-lite", "rustversion", - "sync_wrapper 1.0.1", + "sync_wrapper", "tower-layer", "tower-service", "tracing", @@ -492,22 +508,22 @@ checksum = "57d123550fa8d071b7255cb0cc04dc302baa6c8c4a79f55701552684d8399bce" dependencies = [ "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.95", ] [[package]] name = "backtrace" -version = "0.3.71" +version = "0.3.74" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26b05800d2e817c8b3b4b54abd461726265fa9789ae34330622f2db9ee696f9d" +checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" dependencies = [ "addr2line", - "cc", "cfg-if", "libc", - "miniz_oxide 0.7.4", + "miniz_oxide", "object", "rustc-demangle", + "windows-targets", ] [[package]] @@ -600,9 +616,9 @@ dependencies = [ [[package]] name = "blake3" -version = "1.5.4" +version = "1.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d82033247fd8e890df8f740e407ad4d038debb9eb1f40533fffb32e7d17dc6f7" +checksum = "b8ee0c1824c4dea5b5f81736aff91bae041d2c07ee1192bec91054e10e3e601e" dependencies = [ "arrayref", "arrayvec", @@ -620,39 +636,6 @@ dependencies = [ "generic-array", ] -[[package]] -name = "blog" -version = "0.1.0" -dependencies = [ - "axum", - "chrono", - "console_error_panic_hook", - "dotenvy", - "http", - "icondata", - "katex", - "leptos", - "leptos_axum", - "leptos_icons", - "leptos_meta", - "leptos_router", - "lettre", - "pulldown-cmark", - "regex", - "rss", - "serde", - "surrealdb", - "syntect", - "thiserror 1.0.63", - "tokio", - "tower 0.5.1", - "tower-http", - "tracing", - "tracing-subscriber", - "wasm-bindgen", - "web-sys", -] - [[package]] name = "blowfish" version = "0.9.1" @@ -665,9 +648,9 @@ dependencies = [ [[package]] name = "borsh" -version = "1.5.1" +version = "1.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6362ed55def622cddc70a4746a68554d7b687713770de539e59a739b249f8ed" +checksum = "2506947f73ad44e344215ccd6403ac2ae18cd8e046e581a441bf8d199f257f03" dependencies = [ "borsh-derive", "cfg_aliases", @@ -675,23 +658,22 @@ dependencies = [ [[package]] name = "borsh-derive" -version = "1.5.1" +version = "1.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3ef8005764f53cd4dca619f5bf64cafd4664dada50ece25e4d81de54c80cc0b" +checksum = "c2593a3b8b938bd68373196c9832f516be11fa487ef4ae745eb282e6a56a7244" dependencies = [ "once_cell", "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.89", - "syn_derive", + "syn 2.0.95", ] [[package]] name = "brotli" -version = "6.0.0" +version = "7.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74f7971dbd9326d58187408ab83117d8ac1bb9c17b085fdacd1cf2f598719b6b" +checksum = "cc97b8f16f944bba54f0433f07e30be199b6dc2bd25937444bbad560bcea29bd" dependencies = [ "alloc-no-stdlib", "alloc-stdlib", @@ -738,9 +720,9 @@ dependencies = [ [[package]] name = "bytemuck" -version = "1.16.3" +version = "1.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "102087e286b4677862ea56cf8fc58bb2cdfa8725c40ffb80fe3a008eb7f2fc83" +checksum = "ef657dfab802224e671f5818e9a4935f9b1957ed18e58292690cc39e7a4092a3" [[package]] name = "byteorder" @@ -759,9 +741,9 @@ dependencies = [ [[package]] name = "camino" -version = "1.1.7" +version = "1.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0ec6b951b160caa93cc0c7b209e5a3bff7aae9062213451ac99493cd844c239" +checksum = "8b96ec4966b5813e2c0507c1f86115c8c5abaadc3980879c3424042a02fd1ad3" [[package]] name = "castaway" @@ -774,9 +756,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.1.21" +version = "1.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07b1695e2c7e8fc85310cde85aeaab7e3097f593c91d209d3f9df76c928100f0" +checksum = "a012a0df96dd6d06ba9a1b29d6402d1a5d77c6befd2566afdc26e10603dc93d7" dependencies = [ "jobserver", "libc", @@ -797,7 +779,7 @@ dependencies = [ "serde", "serde_json", "smol_str", - "thiserror 1.0.63", + "thiserror 1.0.69", ] [[package]] @@ -820,7 +802,7 @@ dependencies = [ "serde_with", "smol_str", "stacker", - "thiserror 1.0.63", + "thiserror 1.0.69", ] [[package]] @@ -836,7 +818,7 @@ dependencies = [ "serde_with", "smol_str", "stacker", - "thiserror 1.0.63", + "thiserror 1.0.69", "unicode-security", ] @@ -860,9 +842,9 @@ checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" [[package]] name = "chrono" -version = "0.4.38" +version = "0.4.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" +checksum = "7e36cc9d416881d2e24f9a963be5fb1cd90966419ac844274161d10488b3e825" dependencies = [ "android-tzdata", "iana-time-zone", @@ -928,7 +910,7 @@ checksum = "5d3ad3122b0001c7f140cf4d605ef9a9e2c24d96ab0b4fb4347b76de2425f445" dependencies = [ "serde", "serde_json", - "thiserror 1.0.63", + "thiserror 1.0.69", ] [[package]] @@ -969,20 +951,30 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "console_log" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be8aed40e4edbf4d3b4431ab260b63fdc40f5780a4766824329ea0f1eefe3c0f" +dependencies = [ + "log", + "web-sys", +] + [[package]] name = "const_format" -version = "0.2.33" +version = "0.2.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50c655d81ff1114fb0dcdea9225ea9f0cc712a6f8d189378e82bdf62a473a64b" +checksum = "126f97965c8ad46d6d9163268ff28432e8f6a1196a55578867832e3049df63dd" dependencies = [ "const_format_proc_macros", ] [[package]] name = "const_format_proc_macros" -version = "0.2.33" +version = "0.2.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eff1a44b93f47b1bac19a27932f5c591e43d1ba357ee4f61526c8a25603f0eb1" +checksum = "1d57c2eccfb16dbac1f4e61e206105db5820c9d26c3c472bc17c774259ef7744" dependencies = [ "proc-macro2", "quote", @@ -1012,15 +1004,15 @@ dependencies = [ [[package]] name = "core-foundation-sys" -version = "0.8.6" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" [[package]] name = "cpufeatures" -version = "0.2.12" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" +checksum = "16b80225097f2e5ae4e7179dd2266824648f3e2f49d9134d584b76389d31c4c3" dependencies = [ "libc", ] @@ -1034,11 +1026,30 @@ dependencies = [ "cfg-if", ] +[[package]] +name = "crossbeam-deque" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" +dependencies = [ + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" +dependencies = [ + "crossbeam-utils", +] + [[package]] name = "crossbeam-utils" -version = "0.8.20" +version = "0.8.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" +checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" [[package]] name = "crunchy" @@ -1101,7 +1112,7 @@ dependencies = [ "proc-macro2", "quote", "strsim 0.11.1", - "syn 2.0.89", + "syn 2.0.95", ] [[package]] @@ -1123,7 +1134,7 @@ checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" dependencies = [ "darling_core 0.20.10", "quote", - "syn 2.0.89", + "syn 2.0.95", ] [[package]] @@ -1177,7 +1188,7 @@ checksum = "62d671cc41a825ebabc75757b62d3d168c577f9149b2d49ece1dad1f72119d25" dependencies = [ "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.95", ] [[package]] @@ -1191,11 +1202,11 @@ dependencies = [ [[package]] name = "derive_builder" -version = "0.20.1" +version = "0.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd33f37ee6a119146a1781d3356a7c26028f83d779b2e04ecd45fdc75c76877b" +checksum = "507dfb09ea8b7fa618fcf76e953f4f5e192547945816d5358edffe39f6f94947" dependencies = [ - "derive_builder_macro 0.20.1", + "derive_builder_macro 0.20.2", ] [[package]] @@ -1212,14 +1223,14 @@ dependencies = [ [[package]] name = "derive_builder_core" -version = "0.20.1" +version = "0.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7431fa049613920234f22c47fdc33e6cf3ee83067091ea4277a3f8c4587aae38" +checksum = "2d5bcf7b024d6835cfb3d473887cd966994907effbe9227e8c8219824d06c4e8" dependencies = [ "darling 0.20.10", "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.95", ] [[package]] @@ -1234,12 +1245,12 @@ dependencies = [ [[package]] name = "derive_builder_macro" -version = "0.20.1" +version = "0.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4abae7035bf79b9877b779505d8cf3749285b80c43941eda66604841889451dc" +checksum = "ab63b0e2bf4d5928aff72e83a7dace85d7bba5fe12dcc3c5a572d78caffd3f3c" dependencies = [ - "derive_builder_core 0.20.1", - "syn 2.0.89", + "derive_builder_core 0.20.2", + "syn 2.0.95", ] [[package]] @@ -1261,9 +1272,9 @@ dependencies = [ [[package]] name = "diligent-date-parser" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6cf7fe294274a222363f84bcb63cdea762979a0443b4cf1f4f8fd17c86b1182" +checksum = "c8ede7d79366f419921e2e2f67889c12125726692a313bffb474bd5f37a581e9" dependencies = [ "chrono", ] @@ -1297,7 +1308,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.95", ] [[package]] @@ -1364,9 +1375,9 @@ checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" [[package]] name = "either_of" -version = "0.1.0" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6e22feb4d5cacf9f2c64902a1c35ef0f2d766e42db316a98b93992bbce669cb" +checksum = "e2dc0006c5cf511f802ddcffc0a6df9dcc1912f5f0e448f6641b3b035f14f43d" dependencies = [ "pin-project-lite", ] @@ -1398,9 +1409,9 @@ dependencies = [ [[package]] name = "encoding_rs" -version = "0.8.34" +version = "0.8.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59" +checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" dependencies = [ "cfg-if", ] @@ -1417,12 +1428,6 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" -[[package]] -name = "event-listener" -version = "2.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" - [[package]] name = "event-listener" version = "5.3.1" @@ -1436,19 +1441,19 @@ dependencies = [ [[package]] name = "event-listener-strategy" -version = "0.5.2" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f214dc438f977e6d4e3500aaa277f5ad94ca83fbbd9b1a15713ce2344ccc5a1" +checksum = "3c3e4e0dd3673c1139bf041f3008816d9cf2946bbfac2945c09e523b8d7b05b2" dependencies = [ - "event-listener 5.3.1", + "event-listener", "pin-project-lite", ] [[package]] name = "fastrand" -version = "2.1.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a" +checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" [[package]] name = "fixedbitset" @@ -1458,12 +1463,12 @@ checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" [[package]] name = "flate2" -version = "1.0.33" +version = "1.0.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "324a1be68054ef05ad64b861cc9eaf1d623d2d8cb25b4bf2cb9cdd902b4bf253" +checksum = "c936bfdafb507ebbf50b8074c54fa31c5be9a1e7e5f467dd659697041407d07c" dependencies = [ "crc32fast", - "miniz_oxide 0.8.0", + "miniz_oxide", ] [[package]] @@ -1487,6 +1492,18 @@ dependencies = [ "percent-encoding", ] +[[package]] +name = "frontend" +version = "0.1.0" +dependencies = [ + "app", + "console_error_panic_hook", + "console_log", + "leptos", + "log", + "wasm-bindgen", +] + [[package]] name = "fst" version = "0.4.7" @@ -1560,9 +1577,9 @@ checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" [[package]] name = "futures-lite" -version = "2.3.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52527eb5074e35e9339c6b4e8d12600c7128b68fb25dcb9fa9dec18f7c25f3a5" +checksum = "cef40d21ae2c515b51041df9ed313ed21e572df340ea58a922a0aefe7e8891a1" dependencies = [ "fastrand", "futures-core", @@ -1579,7 +1596,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.95", ] [[package]] @@ -1657,9 +1674,9 @@ dependencies = [ [[package]] name = "geo-types" -version = "0.7.13" +version = "0.7.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ff16065e5720f376fbced200a5ae0f47ace85fd70b7e54269790281353b6d61" +checksum = "b6f47c611187777bbca61ea7aba780213f5f3441fd36294ab333e96cfa791b65" dependencies = [ "approx 0.5.1", "arbitrary", @@ -1701,9 +1718,9 @@ dependencies = [ [[package]] name = "gimli" -version = "0.28.1" +version = "0.31.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" +checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" [[package]] name = "gloo-net" @@ -1720,7 +1737,7 @@ dependencies = [ "pin-project", "serde", "serde_json", - "thiserror 1.0.63", + "thiserror 1.0.69", "wasm-bindgen", "wasm-bindgen-futures", "web-sys", @@ -1852,14 +1869,14 @@ dependencies = [ "markup5ever", "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.95", ] [[package]] name = "http" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21b9ddb458710bc376481b842f5da65cdf31522de232c1ca8146abce2a358258" +checksum = "f16ca2af56261c99fba8bac40a10251ce8188205a4c448fbb745a2e4daa76fea" dependencies = [ "bytes", "fnv", @@ -1891,15 +1908,15 @@ dependencies = [ [[package]] name = "http-range-header" -version = "0.4.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08a397c49fec283e3d6211adbe480be95aae5f304cfb923e9970e08956d5168a" +checksum = "9171a2ea8a68358193d15dd5d70c1c10a2afc3e7e4c5bc92bc9f025cebd7359c" [[package]] name = "httparse" -version = "1.9.4" +version = "1.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fcc0b4a115bf80b728eb8ea024ad5bd707b615bfed49e0665b6e0f86fd082d9" +checksum = "7d71d3574edd2771538b901e6549113b4006ece66150fb69c0fb6d9a2adae946" [[package]] name = "httpdate" @@ -1915,9 +1932,9 @@ checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" [[package]] name = "hydration_context" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef13071fe13b55c85fe2b70246d2e3b49d2c6a764fd3e0edaf262cc385ff1854" +checksum = "d35485b3dcbf7e044b8f28c73f04f13e7b509c2466fd10cb2a8a447e38f8a93a" dependencies = [ "futures", "js-sys", @@ -1931,9 +1948,9 @@ dependencies = [ [[package]] name = "hyper" -version = "1.5.1" +version = "1.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97818827ef4f364230e16705d4706e2897df2bb60617d6ca15d598025a3c481f" +checksum = "256fb8d4bd6413123cc9d91832d78325c48ff41677595be797d90f42969beae0" dependencies = [ "bytes", "futures-channel", @@ -1951,9 +1968,9 @@ dependencies = [ [[package]] name = "hyper-rustls" -version = "0.27.2" +version = "0.27.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ee4be2c948921a1a5320b629c4193916ed787a7f7f293fd3f7f5a6c9de74155" +checksum = "2d191583f3da1305256f22463b9bb0471acad48a4e534a5218b9963e9c1f59b2" dependencies = [ "futures-util", "http", @@ -1969,9 +1986,9 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.6" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ab92f4f49ee4fb4f997c784b7a2e0fa70050211e0b6a287f898c3c9785ca956" +checksum = "df2dcfbe0677734ab2f3ffa7fa7bfd4706bfdc1ef393f2ee30184aed67e631b4" dependencies = [ "bytes", "futures-channel", @@ -1982,16 +1999,15 @@ dependencies = [ "pin-project-lite", "socket2", "tokio", - "tower 0.4.13", "tower-service", "tracing", ] [[package]] name = "iana-time-zone" -version = "0.1.60" +version = "0.1.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141" +checksum = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220" dependencies = [ "android_system_properties", "core-foundation-sys", @@ -2330,7 +2346,7 @@ checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.95", ] [[package]] @@ -2339,16 +2355,6 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" -[[package]] -name = "idna" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" -dependencies = [ - "unicode-bidi", - "unicode-normalization", -] - [[package]] name = "idna" version = "1.0.3" @@ -2383,9 +2389,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.6.0" +version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da" +checksum = "62f822373a4fe84d4bb149bf54e584a7f4abec90e072ed49cda0edea5b95471f" dependencies = [ "equivalent", "hashbrown 0.15.2", @@ -2409,15 +2415,18 @@ checksum = "71dd52191aae121e8611f1e8dc3e324dd0dd1dee1e6dd91d10ee07a3cfb4d9d8" [[package]] name = "inventory" -version = "0.3.15" +version = "0.3.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f958d3d68f4167080a18141e10381e7634563984a537f2a49a30fd8e53ac5767" +checksum = "e5d80fade88dd420ce0d9ab6f7c58ef2272dde38db874657950f827d4982c817" +dependencies = [ + "rustversion", +] [[package]] name = "ipnet" -version = "2.9.0" +version = "2.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" +checksum = "ddc24109865250148c2e0f3d25d4f0f479571723792d3802153c60922a4fb708" [[package]] name = "itertools" @@ -2448,9 +2457,9 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.11" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" +checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674" [[package]] name = "jobserver" @@ -2463,9 +2472,9 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.74" +version = "0.3.76" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a865e038f7f6ed956f788f0d7d60c541fff74c7bd74272c5d4cf15c63743e705" +checksum = "6717b6b5b077764fb5966237269cb3c64edddde4b14ce42647430a78ced9e7b7" dependencies = [ "once_cell", "wasm-bindgen", @@ -2496,7 +2505,7 @@ dependencies = [ "derive_builder 0.12.0", "ducc", "itertools 0.10.5", - "thiserror 1.0.63", + "thiserror 1.0.69", ] [[package]] @@ -2566,7 +2575,7 @@ dependencies = [ "server_fn", "slotmap", "tachys", - "thiserror 2.0.3", + "thiserror 2.0.9", "throw_error", "typed-builder", "typed-builder-macro", @@ -2594,7 +2603,7 @@ dependencies = [ "parking_lot", "server_fn", "tokio", - "tower 0.5.1", + "tower", "tower-http", ] @@ -2607,7 +2616,7 @@ dependencies = [ "config", "regex", "serde", - "thiserror 2.0.3", + "thiserror 2.0.9", "typed-builder", ] @@ -2634,13 +2643,13 @@ checksum = "92413c6d93a22d8c4e75b2e7da3867af173e8d9ca49ce170b631e7c2766eef48" dependencies = [ "anyhow", "camino", - "indexmap 2.6.0", + "indexmap 2.7.0", "parking_lot", "proc-macro2", "quote", "rstml", "serde", - "syn 2.0.89", + "syn 2.0.95", "walkdir", ] @@ -2687,7 +2696,7 @@ dependencies = [ "quote", "rstml", "server_fn_macro", - "syn 2.0.89", + "syn 2.0.95", "uuid", ] @@ -2698,7 +2707,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a54d4b942a474e38b606ff0bfe8712f093300bd053adb9dd7a028a14ca3fbfac" dependencies = [ "futures", - "indexmap 2.6.0", + "indexmap 2.7.0", "leptos", "once_cell", "or_poisoned", @@ -2726,7 +2735,7 @@ dependencies = [ "reactive_graph", "send_wrapper", "tachys", - "thiserror 2.0.3", + "thiserror 2.0.9", "url", "wasm-bindgen", "web-sys", @@ -2778,7 +2787,7 @@ dependencies = [ "futures-io", "futures-util", "httpdate", - "idna 1.0.3", + "idna", "mime", "nom", "percent-encoding", @@ -2804,15 +2813,15 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.155" +version = "0.2.169" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c" +checksum = "b5aba8db14291edd000dfcc4d620c7ebfb122c613afb886ca8803fa4e128a20a" [[package]] name = "libm" -version = "0.2.8" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" +checksum = "8355be11b20d696c8f18f6cc018c4e372165b1fa8126cef092399c9951984ffa" [[package]] name = "libredox" @@ -2839,7 +2848,7 @@ dependencies = [ "ndarray", "num-traits", "rand", - "thiserror 1.0.63", + "thiserror 1.0.69", ] [[package]] @@ -2885,7 +2894,7 @@ dependencies = [ "manyhow-macros", "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.95", ] [[package]] @@ -2894,7 +2903,7 @@ version = "0.11.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "46fce34d199b78b6e6073abf984c9cf5fd3e9330145a93ee0738a7443e371495" dependencies = [ - "proc-macro-utils 0.10.0", + "proc-macro-utils", "proc-macro2", "quote", ] @@ -2905,6 +2914,17 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3e2e65a1a2e43cfcb47a895c4c8b10d1f4a61097f9f254f183aee60cad9c651d" +[[package]] +name = "markdown" +version = "0.1.0" +dependencies = [ + "katex", + "leptos", + "pulldown-cmark", + "regex", + "syntect", +] + [[package]] name = "markup5ever" version = "0.12.1" @@ -2959,7 +2979,7 @@ checksum = "59bb584eaeeab6bd0226ccf3509a69d7936d148cf3d036ad350abe35e8c6856e" dependencies = [ "miette-derive", "once_cell", - "thiserror 1.0.63", + "thiserror 1.0.69", "unicode-width", ] @@ -2971,7 +2991,7 @@ checksum = "49e7bc1560b95a3c4a25d03de42fe76ca718ab92d1a22a55b9b4cf67b3ae635c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.95", ] [[package]] @@ -2998,29 +3018,19 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "miniz_oxide" -version = "0.7.4" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8a240ddb74feaf34a79a7add65a741f3167852fba007066dcac1ca548d89c08" -dependencies = [ - "adler", -] - -[[package]] -name = "miniz_oxide" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1" +checksum = "4ffbe83022cedc1d264172192511ae958937694cd57ce297164951b8b3568394" dependencies = [ "adler2", ] [[package]] name = "mio" -version = "1.0.1" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4569e456d394deccd22ce1c1913e6ea0e54519f577285001215d33557431afe4" +checksum = "2886843bf800fba2e3377cff24abf6379b4c4d5c6681eaf9ea5b0d15090450bd" dependencies = [ - "hermit-abi", "libc", "wasi", "windows-sys 0.52.0", @@ -3193,9 +3203,9 @@ dependencies = [ [[package]] name = "object" -version = "0.32.2" +version = "0.36.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" +checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" dependencies = [ "memchr", ] @@ -3228,7 +3238,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "64b94982fe39a861561cf67ff17a7849f2cedadbbad960a797634032b7abb998" dependencies = [ "serde", - "thiserror 1.0.63", + "thiserror 1.0.69", ] [[package]] @@ -3273,9 +3283,9 @@ checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" [[package]] name = "parking" -version = "2.2.0" +version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb813b8af86854136c6922af0598d719255ecb2179515e6e7730d468f05c9cae" +checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" [[package]] name = "parking_lot" @@ -3325,9 +3335,9 @@ checksum = "17359afc20d7ab31fdb42bb844c8b3bb1dabd7dcf7e68428492da7f16966fcef" [[package]] name = "pathdiff" -version = "0.2.1" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8835116a5c179084a830efb3adc117ab007512b535bc1a21c991d3b32a6b44dd" +checksum = "df94ce210e5bc13cb6651479fa48d14f601d9858cfe0467f43ae157023b938d3" [[package]] name = "pbkdf2" @@ -3359,12 +3369,12 @@ checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "pest" -version = "2.7.13" +version = "2.7.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdbef9d1d47087a895abd220ed25eb4ad973a5e26f6a4367b038c25e28dfc2d9" +checksum = "8b7cafe60d6cf8e62e1b9b2ea516a089c008945bb5a275416789e7db0bc199dc" dependencies = [ "memchr", - "thiserror 1.0.63", + "thiserror 2.0.9", "ucd-trie", ] @@ -3375,7 +3385,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" dependencies = [ "fixedbitset", - "indexmap 2.6.0", + "indexmap 2.7.0", ] [[package]] @@ -3390,22 +3400,22 @@ dependencies = [ [[package]] name = "phf" -version = "0.11.2" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ade2d8b8f33c7333b51bcf0428d37e217e9f32192ae4772156f65063b8ce03dc" +checksum = "1fd6780a80ae0c52cc120a26a1a42c1ae51b247a253e4e06113d23d2c2edd078" dependencies = [ "phf_macros", - "phf_shared 0.11.2", + "phf_shared 0.11.3", ] [[package]] name = "phf_codegen" -version = "0.11.2" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8d39688d359e6b34654d328e262234662d16cc0f60ec8dcbe5e718709342a5a" +checksum = "aef8048c789fa5e851558d709946d6d79a8ff88c0440c587967f8e94bfb1216a" dependencies = [ - "phf_generator 0.11.2", - "phf_shared 0.11.2", + "phf_generator 0.11.3", + "phf_shared 0.11.3", ] [[package]] @@ -3420,25 +3430,25 @@ dependencies = [ [[package]] name = "phf_generator" -version = "0.11.2" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48e4cc64c2ad9ebe670cb8fd69dd50ae301650392e81c05f9bfcb2d5bdbc24b0" +checksum = "3c80231409c20246a13fddb31776fb942c38553c51e871f8cbd687a4cfb5843d" dependencies = [ - "phf_shared 0.11.2", + "phf_shared 0.11.3", "rand", ] [[package]] name = "phf_macros" -version = "0.11.2" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3444646e286606587e49f3bcf1679b8cef1dc2c5ecc29ddacaffc305180d464b" +checksum = "f84ac04429c13a7ff43785d75ad27569f2951ce0ffd30a3321230db2fc727216" dependencies = [ - "phf_generator 0.11.2", - "phf_shared 0.11.2", + "phf_generator 0.11.3", + "phf_shared 0.11.3", "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.95", "unicase", ] @@ -3448,16 +3458,16 @@ version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b6796ad771acdc0123d2a88dc428b5e38ef24456743ddb1744ed628f9815c096" dependencies = [ - "siphasher", + "siphasher 0.3.11", ] [[package]] name = "phf_shared" -version = "0.11.2" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90fcb95eef784c2ac79119d1dd819e162b5da872ce6f3c3abe1e8ca1c082f72b" +checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5" dependencies = [ - "siphasher", + "siphasher 1.0.1", "unicase", ] @@ -3469,29 +3479,29 @@ checksum = "5be167a7af36ee22fe3115051bc51f6e6c7054c9348e28deb4f49bd6f705a315" [[package]] name = "pin-project" -version = "1.1.5" +version = "1.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3" +checksum = "1e2ec53ad785f4d35dac0adea7f7dc6f1bb277ad84a680c7afefeae05d1f5916" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.5" +version = "1.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" +checksum = "d56a66c0c55993aa927429d0f8a0abfd74f084e4d9c192cffed01e418d83eefb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.95", ] [[package]] name = "pin-project-lite" -version = "0.2.15" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "915a1e146535de9163f3987b8944ed8cf49a18bb0056bcebcdcece385cece4ff" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" [[package]] name = "pin-utils" @@ -3501,9 +3511,9 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] name = "pkg-config" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" +checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" [[package]] name = "plist" @@ -3512,7 +3522,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42cf17e9a1800f5f396bc67d193dc9411b59012a5876445ef450d449881e1016" dependencies = [ "base64 0.22.1", - "indexmap 2.6.0", + "indexmap 2.7.0", "quick-xml 0.32.0", "serde", "time", @@ -3541,21 +3551,21 @@ checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" [[package]] name = "prettyplease" -version = "0.2.25" +version = "0.2.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64d1ec885c64d0457d564db4ec299b2dae3f9c02808b8ad9c3a089c591b18033" +checksum = "483f8c21f64f3ea09fe0f30f5d48c3e8eefe5dac9129f0075f76593b4c1da705" dependencies = [ "proc-macro2", - "syn 2.0.89", + "syn 2.0.95", ] [[package]] name = "proc-macro-crate" -version = "3.1.0" +version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d37c51ca738a55da99dc0c4a34860fd675453b8b36209178c2249bb13651284" +checksum = "8ecf48c7ca261d60b74ab1a7b20da18bede46776b2e55535cb958eb595c5fa7b" dependencies = [ - "toml_edit 0.21.1", + "toml_edit", ] [[package]] @@ -3600,18 +3610,7 @@ dependencies = [ "proc-macro-error-attr2", "proc-macro2", "quote", - "syn 2.0.89", -] - -[[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 2.0.95", ] [[package]] @@ -3642,7 +3641,7 @@ checksum = "af066a9c399a26e020ada66a034357a868728e72cd426f3adcd35f80d88d88c8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.95", "version_check", "yansi", ] @@ -3655,9 +3654,9 @@ checksum = "33cb294fe86a74cbcf50d4445b37da762029549ebeea341421c7c70370f86cac" [[package]] name = "psm" -version = "0.1.21" +version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5787f7cda34e3033a72192c018bc5883100330f362ef279a8cbccfce8bb4e874" +checksum = "200b9ff220857e53e184257720a14553b2f4aa02577d2ed9842d45d4b9654810" dependencies = [ "cc", ] @@ -3684,9 +3683,9 @@ dependencies = [ [[package]] name = "pulldown-cmark" -version = "0.12.0" +version = "0.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d31cbfcd94884c3a67ec210c83efb06cb43674043458b0ad59f6947f8462c23" +checksum = "f86ba2052aebccc42cbbb3ed234b8b13ce76f75c3551a303cb2bcffcff12bb14" dependencies = [ "bitflags 2.6.0", "getopts", @@ -3712,9 +3711,9 @@ dependencies = [ [[package]] name = "quick-xml" -version = "0.36.1" +version = "0.37.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96a05e2e8efddfa51a84ca47cec303fac86c8541b686d37cac5efc0e094417bc" +checksum = "165859e9e55f79d67b96c5d96f4e88b6f2695a1972849c15a6a3f5c59fc2c003" dependencies = [ "encoding_rs", "memchr", @@ -3734,9 +3733,9 @@ dependencies = [ [[package]] name = "quinn" -version = "0.11.3" +version = "0.11.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b22d8e7369034b9a7132bc2008cac12f2013c8132b45e0554e6e20e2617f2156" +checksum = "62e96808277ec6f97351a2380e6c25114bc9e67037775464979f3037c92d05ef" dependencies = [ "bytes", "pin-project-lite", @@ -3745,55 +3744,59 @@ dependencies = [ "rustc-hash", "rustls", "socket2", - "thiserror 1.0.63", + "thiserror 2.0.9", "tokio", "tracing", ] [[package]] name = "quinn-proto" -version = "0.11.6" +version = "0.11.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba92fb39ec7ad06ca2582c0ca834dfeadcaf06ddfc8e635c80aa7e1c05315fdd" +checksum = "a2fe5ef3495d7d2e377ff17b1a8ce2ee2ec2a18cde8b6ad6619d65d0701c135d" dependencies = [ "bytes", + "getrandom", "rand", "ring", "rustc-hash", "rustls", + "rustls-pki-types", "slab", - "thiserror 1.0.63", + "thiserror 2.0.9", "tinyvec", "tracing", + "web-time", ] [[package]] name = "quinn-udp" -version = "0.5.4" +version = "0.5.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bffec3605b73c6f1754535084a85229fa8a30f86014e6c81aeec4abb68b0285" +checksum = "1c40286217b4ba3a71d644d752e6a0b71f13f1b6a2c5311acfcbe0c2418ed904" dependencies = [ + "cfg_aliases", "libc", "once_cell", "socket2", "tracing", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] name = "quote" -version = "1.0.37" +version = "1.0.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" +checksum = "0e4dccaaaf89514f546c693ddc140f729f958c247918a13380cccc6078391acc" dependencies = [ "proc-macro2", ] [[package]] name = "quote-use" -version = "0.8.3" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48e96ac59974192a2fa6ee55a41211cf1385c5b2a8636a4c3068b3b3dd599ece" +checksum = "9619db1197b497a36178cfc736dc96b271fe918875fbf1344c436a7e93d0321e" dependencies = [ "quote", "quote-use-macros", @@ -3801,15 +3804,14 @@ dependencies = [ [[package]] name = "quote-use-macros" -version = "0.8.3" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4c57308e9dde4d7be9af804f6deeaa9951e1de1d5ffce6142eb964750109f7e" +checksum = "82ebfb7faafadc06a7ab141a6f67bcfb24cb8beb158c6fe933f2f035afa99f35" dependencies = [ - "derive-where", - "proc-macro-utils 0.8.0", + "proc-macro-utils", "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.95", ] [[package]] @@ -3871,11 +3873,31 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3" +[[package]] +name = "rayon" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" +dependencies = [ + "either", + "rayon-core", +] + +[[package]] +name = "rayon-core" +version = "1.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" +dependencies = [ + "crossbeam-deque", + "crossbeam-utils", +] + [[package]] name = "reactive_graph" -version = "0.1.0" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c27f54685c1416af1f323a0c40e71cbdae281a1ebc623591790d367222d0ac65" +checksum = "4bee22d7574c73fbfd47d828ee14dc67ca65606ade81de2f8d1691741072a93b" dependencies = [ "any_spawner", "async-lock", @@ -3888,15 +3910,15 @@ dependencies = [ "send_wrapper", "serde", "slotmap", - "thiserror 2.0.3", + "thiserror 2.0.9", "web-sys", ] [[package]] name = "reactive_stores" -version = "0.1.0" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "efe3f866edc7647e19a68a229a2e5cc9730549836d722eeaa073116f2b07966e" +checksum = "80bb1913eeb71f74028213455ee971550c2b3cb91b6acd5efa8a0f8dc59f5039" dependencies = [ "guardian", "itertools 0.13.0", @@ -3917,33 +3939,33 @@ dependencies = [ "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.95", ] [[package]] name = "reblessive" -version = "0.4.0" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "568fde39e6aec674be99c9dd38b4c79040faf31038bd5a41ab1908db00c2319b" +checksum = "ffead9d0a0b45f3e0bc063a244b1779fd53a09d2c2f7282c186a016b1f10a778" [[package]] name = "redox_syscall" -version = "0.5.3" +version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a908a6e00f1fdd0dfd9c0eb08ce85126f6d8bbda50017e74bc4a4b7d4a926a4" +checksum = "03a862b389f93e68874fbf580b9de08dd02facb9a788ebadaf4a3fd33cf58834" dependencies = [ "bitflags 2.6.0", ] [[package]] name = "redox_users" -version = "0.4.5" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd283d9651eeda4b2a83a43c1c91b266c40fd76ecd39a50a8c630ae69dc72891" +checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" dependencies = [ "getrandom", "libredox", - "thiserror 1.0.63", + "thiserror 1.0.69", ] [[package]] @@ -3963,7 +3985,7 @@ checksum = "bcc303e793d3734489387d205e9b186fac9c6cfacedd98cbb2e8a5943595f3e6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.95", ] [[package]] @@ -4006,9 +4028,9 @@ dependencies = [ [[package]] name = "reqwest" -version = "0.12.9" +version = "0.12.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a77c62af46e79de0a562e1a9849205ffcb7fc1238876e9bd743357570e04046f" +checksum = "43e734407157c3c2034e0258f5e4473ddb361b1e85f95a66690d67264d7cd1da" dependencies = [ "base64 0.22.1", "bytes", @@ -4035,10 +4057,11 @@ dependencies = [ "serde", "serde_json", "serde_urlencoded", - "sync_wrapper 1.0.1", + "sync_wrapper", "tokio", "tokio-rustls", "tokio-util", + "tower", "tower-service", "url", "wasm-bindgen", @@ -4072,7 +4095,7 @@ checksum = "5f0ec466e5d8dca9965eb6871879677bef5590cf7525ad96cae14376efb75073" dependencies = [ "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.95", ] [[package]] @@ -4092,9 +4115,9 @@ dependencies = [ [[package]] name = "rkyv" -version = "0.7.44" +version = "0.7.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cba464629b3394fc4dbc6f940ff8f5b4ff5c7aef40f29166fd4ad12acbc99c0" +checksum = "9008cd6385b9e161d8229e1f6549dd23c3d022f132a2ea37ac3a10ac4935779b" dependencies = [ "bitvec", "bytecheck", @@ -4110,9 +4133,9 @@ dependencies = [ [[package]] name = "rkyv_derive" -version = "0.7.44" +version = "0.7.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7dddfff8de25e6f62b9d64e6e432bf1c6736c57d20323e15ee10435fbda7c65" +checksum = "503d1d27590a2b0a3a4ca4c94755aa2875657196ecbf401a42eff41d7de532c0" dependencies = [ "proc-macro2", "quote", @@ -4142,9 +4165,9 @@ dependencies = [ [[package]] name = "roaring" -version = "0.10.6" +version = "0.10.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f4b84ba6e838ceb47b41de5194a60244fac43d9fe03b71dbe8c5a201081d6d1" +checksum = "41589aba99537475bf697f2118357cad1c31590c5a1b9f6d9fc4ad6d07503661" dependencies = [ "bytemuck", "byteorder", @@ -4159,21 +4182,21 @@ checksum = "cbf4a6aa5f6d6888f39e980649f3ad6b666acdce1d78e95b8a2cb076e687ae30" [[package]] name = "rss" -version = "2.0.9" +version = "2.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "27e92048f840d98c6d6dd870af9101610ea9ff413f11f1bcebf4f4c31d96d957" +checksum = "531af70fce504d369cf42ac0a9645f5a62a8ea9265de71cfa25087e9f6080c7c" dependencies = [ "atom_syndication", - "derive_builder 0.20.1", + "derive_builder 0.20.2", "never", - "quick-xml 0.36.1", + "quick-xml 0.37.2", ] [[package]] name = "rstar" -version = "0.12.0" +version = "0.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "133315eb94c7b1e8d0cb097e5a710d850263372fd028fff18969de708afc7008" +checksum = "421400d13ccfd26dfa5858199c30a5d76f9c54e0dba7575273025b43c5175dbb" dependencies = [ "heapless", "num-traits", @@ -4190,9 +4213,9 @@ dependencies = [ "proc-macro2", "proc-macro2-diagnostics", "quote", - "syn 2.0.89", + "syn 2.0.95", "syn_derive", - "thiserror 1.0.63", + "thiserror 1.0.69", ] [[package]] @@ -4229,9 +4252,9 @@ checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" [[package]] name = "rustc-hash" -version = "2.0.0" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "583034fd73374156e66797ed8e5b0d5690409c9226b22d87cb7f19821c05d152" +checksum = "c7fb8039b3032c191086b10f11f319a6e99e1e82889c5cc6046f515c9db1d497" [[package]] name = "rustc_lexer" @@ -4244,18 +4267,18 @@ dependencies = [ [[package]] name = "rustc_version" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" dependencies = [ "semver", ] [[package]] name = "rustls" -version = "0.23.12" +version = "0.23.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c58f8c84392efc0a126acce10fa59ff7b3d2ac06ab451a33f2741989b806b044" +checksum = "5065c3f250cbd332cd894be57c40fa52387247659b14a2d6041d121547903b1b" dependencies = [ "log", "once_cell", @@ -4268,28 +4291,27 @@ dependencies = [ [[package]] name = "rustls-pemfile" -version = "2.1.3" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "196fe16b00e106300d3e45ecfcb764fa292a535d7326a29a5875c579c7417425" +checksum = "dce314e5fee3f39953d46bb63bb8a46d40c2f8fb7cc5a3b6cab2bde9721d6e50" dependencies = [ - "base64 0.22.1", "rustls-pki-types", ] [[package]] name = "rustls-pki-types" -version = "1.8.0" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc0a2ce646f8655401bb81e7927b812614bd5d91dbc968696be50603510fcaf0" +checksum = "d2bf47e6ff922db3825eb750c4e2ff784c6ff8fb9e13046ef6a1d1c5401b0b37" dependencies = [ "web-time", ] [[package]] name = "rustls-webpki" -version = "0.102.7" +version = "0.102.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84678086bd54edf2b415183ed7a94d0efb049f1b646a33e22a36f3794be6ae56" +checksum = "64ca1bc8749bd4cf37b5ce386cc146580777b4e8572c7b97baf22c83f444bee9" dependencies = [ "ring", "rustls-pki-types", @@ -4298,9 +4320,9 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.17" +version = "1.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6" +checksum = "f7c45b9784283f1b2e7fb61b42047c2fd678ef0960d4f6f1eba131594cc369d4" [[package]] name = "ryu" @@ -4352,9 +4374,9 @@ checksum = "1c107b6f4780854c8b126e228ea8869f4d7b71260f962fefb57b996b8959ba6b" [[package]] name = "semver" -version = "1.0.23" +version = "1.0.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" +checksum = "3cb6eb87a131f756572d7fb904f6e7b68633f09cca868c5df1c4b8d1a694bbba" dependencies = [ "serde", ] @@ -4370,9 +4392,9 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.210" +version = "1.0.217" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8e3592472072e6e22e0a54d5904d9febf8508f65fb8552499a1abc7d1078c3a" +checksum = "02fc4265df13d6fa1d00ecff087228cc0a2b5f3c0e87e258d8b94a156e984c70" dependencies = [ "serde_derive", ] @@ -4388,22 +4410,22 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.210" +version = "1.0.217" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f" +checksum = "5a9bf7cf98d04a2b28aead066b7496853d4779c9cc183c440dbac457641e19a0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.95", ] [[package]] name = "serde_json" -version = "1.0.128" +version = "1.0.134" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ff5456707a1de34e7e37f2a6fd3d3f808c318259cbd01ab6377795054b483d8" +checksum = "d00f4175c42ee48b15416f6193a959ba3a0d67fc699a0db9ad12df9f83991c7d" dependencies = [ - "indexmap 2.6.0", + "indexmap 2.7.0", "itoa", "memchr", "ryu", @@ -4428,14 +4450,14 @@ checksum = "cd34f36fe4c5ba9654417139a9b3a20d2e1de6012ee678ad14d240c22c78d8d6" dependencies = [ "percent-encoding", "serde", - "thiserror 1.0.63", + "thiserror 1.0.69", ] [[package]] name = "serde_spanned" -version = "0.6.7" +version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb5b1b31579f3811bf615c144393417496f152e12ac8b7663bf664f4a815306d" +checksum = "87607cb1398ed59d48732e575a4c28a7a8ebf2454b964fe3f224f2afc07909e1" dependencies = [ "serde", ] @@ -4454,15 +4476,15 @@ dependencies = [ [[package]] name = "serde_with" -version = "3.9.0" +version = "3.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69cecfa94848272156ea67b2b1a53f20fc7bc638c4a46d2f8abde08f05f4b857" +checksum = "d6b6f7f2fcb69f747921f79f3926bd1e203fce4fef62c268dd3abfb6d86029aa" dependencies = [ "base64 0.22.1", "chrono", "hex", "indexmap 1.9.3", - "indexmap 2.6.0", + "indexmap 2.7.0", "serde", "serde_derive", "serde_json", @@ -4472,14 +4494,35 @@ dependencies = [ [[package]] name = "serde_with_macros" -version = "3.9.0" +version = "3.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8fee4991ef4f274617a51ad4af30519438dacb2f56ac773b08a1922ff743350" +checksum = "8d00caa5193a3c8362ac2b73be6b9e768aa5a4b2f721d8f4b339600c3cb51f8e" dependencies = [ "darling 0.20.10", "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.95", +] + +[[package]] +name = "server" +version = "0.1.0" +dependencies = [ + "app", + "axum", + "chrono", + "dotenvy", + "leptos", + "leptos_axum", + "markdown", + "rss", + "serde", + "surrealdb", + "tokio", + "tower", + "tower-http", + "tracing", + "tracing-subscriber", ] [[package]] @@ -4507,9 +4550,9 @@ dependencies = [ "serde_json", "serde_qs", "server_fn_macro_default", - "thiserror 2.0.3", + "thiserror 2.0.9", "throw_error", - "tower 0.5.1", + "tower", "tower-layer", "url", "wasm-bindgen", @@ -4529,7 +4572,7 @@ dependencies = [ "convert_case", "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.95", "xxhash-rust", ] @@ -4540,7 +4583,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "87663ec10f17fbe8f6c53adc2d038df3304bfd17aaaab22f777810a9e6e05fff" dependencies = [ "server_fn_macro", - "syn 2.0.89", + "syn 2.0.95", ] [[package]] @@ -4582,9 +4625,9 @@ checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" [[package]] name = "simdutf8" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f27f6278552951f1f2b8cf9da965d10969b2efdea95a6ec47987ab46edfe263a" +checksum = "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e" [[package]] name = "simple_asn1" @@ -4594,7 +4637,7 @@ checksum = "adc4e5204eb1910f40f9cfa375f6f05b68c3abac4b6fd879c8ff5e7ae8a0a085" dependencies = [ "num-bigint", "num-traits", - "thiserror 1.0.63", + "thiserror 1.0.69", "time", ] @@ -4604,6 +4647,12 @@ version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" +[[package]] +name = "siphasher" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d" + [[package]] name = "slab" version = "0.4.9" @@ -4667,9 +4716,9 @@ checksum = "1b6b67fb9a61334225b5b790716f609cd58395f895b3fe8b328786812a40bc3b" [[package]] name = "socket2" -version = "0.5.7" +version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" +checksum = "c970269d99b64e60ec3bd6ad27270092a5394c4e309314b18ae3fe575695fbe8" dependencies = [ "libc", "windows-sys 0.52.0", @@ -4677,9 +4726,9 @@ dependencies = [ [[package]] name = "spade" -version = "2.11.0" +version = "2.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "766195f983f4098dc3bf37fb66bd609f6e6258c4b8db684d05252b2c694cdbcd" +checksum = "93f5ef1f863aca7d1d7dda7ccfc36a0a4279bd6d3c375176e5e0712e25cb4889" dependencies = [ "hashbrown 0.14.5", "num-traits", @@ -4701,15 +4750,15 @@ checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" [[package]] name = "stacker" -version = "0.1.15" +version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c886bd4480155fd3ef527d45e9ac8dd7118a898a46530b7b94c3e21866259fce" +checksum = "799c883d55abdb5e98af1a7b3f23b9b6de8ecada0ecac058672d7635eb48ca7b" dependencies = [ "cc", "cfg-if", "libc", "psm", - "winapi", + "windows-sys 0.59.0", ] [[package]] @@ -4727,7 +4776,7 @@ dependencies = [ "byteorder", "memchr", "serde", - "thiserror 1.0.63", + "thiserror 1.0.69", ] [[package]] @@ -4787,7 +4836,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.89", + "syn 2.0.95", ] [[package]] @@ -4798,9 +4847,9 @@ checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" [[package]] name = "surrealdb" -version = "2.0.1" +version = "2.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54a327b352feacd0e724399dcb6a673acd6fb2a88e0dc9c3fed7758d97dceef1" +checksum = "d6c4b1b800a132d76a9899f813aa382c8866feb40a4637fdb14da5e5f3a9fbc7" dependencies = [ "arrayvec", "async-channel", @@ -4809,7 +4858,7 @@ dependencies = [ "dmp", "futures", "geo", - "indexmap 2.6.0", + "indexmap 2.7.0", "path-clean", "pharos", "reblessive", @@ -4824,7 +4873,7 @@ dependencies = [ "serde-content", "serde_json", "surrealdb-core", - "thiserror 1.0.63", + "thiserror 1.0.69", "tokio", "tokio-tungstenite", "tokio-util", @@ -4839,9 +4888,9 @@ dependencies = [ [[package]] name = "surrealdb-core" -version = "2.0.1" +version = "2.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80433611bdf00df5ff59d52a708b60ac23598db3e3f9460cde625ea925c8f776" +checksum = "582a63df1d8c2c8fb90cf923c25350946604b0bea9f6a9815fe02d074b136dea" dependencies = [ "addr", "ahash 0.8.11", @@ -4887,6 +4936,7 @@ dependencies = [ "quick_cache", "radix_trie", "rand", + "rayon", "reblessive", "regex", "revision", @@ -4904,9 +4954,10 @@ dependencies = [ "sha2", "snap", "storekey", + "strsim 0.11.1", "subtle", "surrealdb-derive", - "thiserror 1.0.63", + "thiserror 1.0.69", "tokio", "tracing", "trice", @@ -4914,6 +4965,7 @@ dependencies = [ "unicase", "url", "uuid", + "vart", "wasm-bindgen-futures", "wasmtimer", "ws_stream_wasm", @@ -4942,9 +4994,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.89" +version = "2.0.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44d46482f1c1c87acd84dea20c1bf5ebff4c757009ed6bf19cfd36fb10e92c4e" +checksum = "46f71c0377baf4ef1cc3e3402ded576dccc315800fbc62dfc7fe04b009773b4a" dependencies = [ "proc-macro2", "quote", @@ -4960,20 +5012,14 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.95", ] [[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.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7065abeca94b6a8a577f9bd45aa0867a2238b74e8eb67cf10d492bc39351394" +checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" dependencies = [ "futures-core", ] @@ -4986,7 +5032,7 @@ checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" dependencies = [ "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.95", ] [[package]] @@ -5006,16 +5052,16 @@ dependencies = [ "serde", "serde_derive", "serde_json", - "thiserror 1.0.63", + "thiserror 1.0.69", "walkdir", "yaml-rust", ] [[package]] name = "tachys" -version = "0.1.0" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8be68dfd4abf192e11a1bdd484239daa84ffa6fcd27c25cf4f011b2b0fb27ddb" +checksum = "761f12c13d74f1b723e3c53ff70fe291d15fe51cc4b6586aafea974f0b647043" dependencies = [ "any_spawner", "const_str_slice_concat", @@ -5023,7 +5069,7 @@ dependencies = [ "either_of", "futures", "html-escape", - "indexmap 2.6.0", + "indexmap 2.7.0", "itertools 0.13.0", "js-sys", "linear-map", @@ -5073,42 +5119,42 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.63" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" dependencies = [ - "thiserror-impl 1.0.63", + "thiserror-impl 1.0.69", ] [[package]] name = "thiserror" -version = "2.0.3" +version = "2.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c006c85c7651b3cf2ada4584faa36773bd07bac24acfb39f3c431b36d7e667aa" +checksum = "f072643fd0190df67a8bab670c20ef5d8737177d6ac6b2e9a236cb096206b2cc" dependencies = [ - "thiserror-impl 2.0.3", + "thiserror-impl 2.0.9", ] [[package]] name = "thiserror-impl" -version = "1.0.63" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.95", ] [[package]] name = "thiserror-impl" -version = "2.0.3" +version = "2.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f077553d607adc1caf65430528a576c757a71ed73944b66ebb58ef2bbd243568" +checksum = "7b50fa271071aae2e6ee85f842e2e28ba8cd2c5fb67f11fcb1fd70b276f9e7d4" dependencies = [ "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.95", ] [[package]] @@ -5132,9 +5178,9 @@ dependencies = [ [[package]] name = "time" -version = "0.3.36" +version = "0.3.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885" +checksum = "35e7868883861bd0e56d9ac6efcaaca0d6d5d82a2a7ec8209ff492c07cf37b21" dependencies = [ "deranged", "itoa", @@ -5153,9 +5199,9 @@ checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" [[package]] name = "time-macros" -version = "0.2.18" +version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf" +checksum = "2834e6017e3e5e4b9834939793b282bc03b37a3336245fa820e35e233e2a85de" dependencies = [ "num-conv", "time-core", @@ -5182,9 +5228,9 @@ dependencies = [ [[package]] name = "tinyvec" -version = "1.8.0" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938" +checksum = "022db8904dfa342efe721985167e9fcd16c29b226db4397ed752a761cfce81e8" dependencies = [ "tinyvec_macros", ] @@ -5197,9 +5243,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.41.1" +version = "1.42.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22cfb5bee7a6a52939ca9224d6ac897bb669134078daa8735560897f69de4d33" +checksum = "5cec9b21b0450273377fc97bd4c33a8acffc8c996c987a7c5b319a0083707551" dependencies = [ "backtrace", "bytes", @@ -5219,17 +5265,16 @@ checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" dependencies = [ "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.95", ] [[package]] name = "tokio-rustls" -version = "0.26.0" +version = "0.26.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c7bc40d0e5a97695bb96e27995cd3a08538541b0a846f65bba7a359f36700d4" +checksum = "5f6d0975eaace0cf0fcadee4e4aaa5da15b5c079146f2cffb67c113be122bf37" dependencies = [ "rustls", - "rustls-pki-types", "tokio", ] @@ -5251,9 +5296,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.11" +version = "0.7.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cf6b47b3771c49ac75ad09a6162f53ad4b8088b76ac60e8ec1455b31a189fe1" +checksum = "d7fcaa8d55a2bdd6b83ace262b016eca0d79ee02818c5c1bcdf0305114081078" dependencies = [ "bytes", "futures-core", @@ -5272,7 +5317,7 @@ dependencies = [ "serde", "serde_spanned", "toml_datetime", - "toml_edit 0.22.20", + "toml_edit", ] [[package]] @@ -5286,53 +5331,27 @@ dependencies = [ [[package]] name = "toml_edit" -version = "0.21.1" +version = "0.22.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1" +checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5" dependencies = [ - "indexmap 2.6.0", - "toml_datetime", - "winnow 0.5.40", -] - -[[package]] -name = "toml_edit" -version = "0.22.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "583c44c02ad26b0c3f3066fe629275e50627026c51ac2e595cca4c230ce1ce1d" -dependencies = [ - "indexmap 2.6.0", + "indexmap 2.7.0", "serde", "serde_spanned", "toml_datetime", - "winnow 0.6.18", + "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", - "tokio", - "tower-layer", - "tower-service", -] - -[[package]] -name = "tower" -version = "0.5.1" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2873938d487c3cfb9aed7546dc9f2711d867c9f90c46b889989a2cb84eba6b4f" +checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9" dependencies = [ "futures-core", "futures-util", "pin-project-lite", - "sync_wrapper 0.1.2", + "sync_wrapper", "tokio", "tower-layer", "tower-service", @@ -5380,9 +5399,9 @@ checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" [[package]] name = "tracing" -version = "0.1.40" +version = "0.1.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" dependencies = [ "log", "pin-project-lite", @@ -5392,20 +5411,20 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.27" +version = "0.1.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" +checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.95", ] [[package]] name = "tracing-core" -version = "0.1.32" +version = "0.1.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" +checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" dependencies = [ "once_cell", "valuable", @@ -5424,9 +5443,9 @@ dependencies = [ [[package]] name = "tracing-subscriber" -version = "0.3.18" +version = "0.3.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" +checksum = "e8189decb5ac0fa7bc8b96b7cb9b2701d60d48805aca84a238004d665fcc4008" dependencies = [ "nu-ansi-term", "sharded-slab", @@ -5469,7 +5488,7 @@ dependencies = [ "rustls", "rustls-pki-types", "sha1", - "thiserror 1.0.63", + "thiserror 1.0.69", "url", "utf-8", ] @@ -5491,7 +5510,7 @@ checksum = "560b82d656506509d43abe30e0ba64c56b1953ab3d4fe7ba5902747a7a3cedd5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.95", ] [[package]] @@ -5502,9 +5521,9 @@ checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" [[package]] name = "ucd-trie" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed646292ffc8188ef8ea4d1e0e0150fb15a5c2e12ad9b8fc191ae7a8a7f3c4b9" +checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971" [[package]] name = "ulid" @@ -5520,45 +5539,36 @@ dependencies = [ [[package]] name = "unicase" -version = "2.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7d2d4dafb69621809a81864c9c1b864479e1235c0dd4e199924b9742439ed89" -dependencies = [ - "version_check", -] - -[[package]] -name = "unicode-bidi" -version = "0.3.15" +version = "2.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" +checksum = "75b844d17643ee918803943289730bec8aac480150456169e647ed0b576ba539" [[package]] name = "unicode-ident" -version = "1.0.12" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" +checksum = "adb9e6ca4f869e1180728b7950e35922a7fc6397f7b641499e8f3ef06e50dc83" [[package]] name = "unicode-normalization" -version = "0.1.23" +version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5" +checksum = "5033c97c4262335cded6d6fc3e5c18ab755e1a3dc96376350f3d8e9f009ad956" dependencies = [ "tinyvec", ] [[package]] name = "unicode-script" -version = "0.5.6" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad8d71f5726e5f285a935e9fe8edfd53f0491eb6e9a5774097fdabee7cd8c9cd" +checksum = "9fb421b350c9aff471779e262955939f565ec18b86c15364e6bdf0d662ca7c1f" [[package]] name = "unicode-security" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee9e13753df674873f3c4693b240ae5c03245ddc157dfccf7c26db9329af3a11" +checksum = "2e4ddba1535dd35ed8b61c52166b7155d7f4e4b8847cec6f48e71dc66d8b5e50" dependencies = [ "unicode-normalization", "unicode-script", @@ -5566,21 +5576,21 @@ dependencies = [ [[package]] name = "unicode-segmentation" -version = "1.11.0" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202" +checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" [[package]] name = "unicode-width" -version = "0.1.13" +version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0336d538f7abc86d282a4189614dfaa90810dfc2c6f6427eaf88e16311dd225d" +checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" [[package]] name = "unicode-xid" -version = "0.2.4" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" +checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" [[package]] name = "untrusted" @@ -5590,12 +5600,12 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "url" -version = "2.5.2" +version = "2.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" +checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" dependencies = [ "form_urlencoded", - "idna 0.5.0", + "idna", "percent-encoding", ] @@ -5646,6 +5656,12 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" +[[package]] +name = "vart" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c92195d375eb94995afddeedfd7f246796eb60b85f727c538e42222c4c9b2d3" + [[package]] name = "version_check" version = "0.9.5" @@ -5679,9 +5695,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.97" +version = "0.2.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d15e63b4482863c109d70a7b8706c1e364eb6ea449b201a76c5b89cedcec2d5c" +checksum = "a474f6281d1d70c17ae7aa6a613c87fce69a127e2624002df63dcb39d6cf6396" dependencies = [ "cfg-if", "once_cell", @@ -5690,24 +5706,23 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.97" +version = "0.2.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d36ef12e3aaca16ddd3f67922bc63e48e953f126de60bd33ccc0101ef9998cd" +checksum = "5f89bb38646b4f81674e8f5c3fb81b562be1fd936d84320f3264486418519c79" dependencies = [ "bumpalo", "log", - "once_cell", "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.95", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.47" +version = "0.4.49" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9dfaf8f50e5f293737ee323940c7d8b08a66a95a419223d9f41610ca08b0833d" +checksum = "38176d9b44ea84e9184eff0bc34cc167ed044f816accfe5922e54d84cf48eca2" dependencies = [ "cfg-if", "js-sys", @@ -5718,9 +5733,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.97" +version = "0.2.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "705440e08b42d3e4b36de7d66c944be628d579796b8090bfa3471478a2260051" +checksum = "2cc6181fd9a7492eef6fef1f33961e3695e4579b9872a6f7c83aee556666d4fe" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -5728,22 +5743,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.97" +version = "0.2.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98c9ae5a76e46f4deecd0f0255cc223cfa18dc9b261213b8aa0c7b36f61b3f1d" +checksum = "30d7a95b763d3c45903ed6c81f156801839e5ee968bb07e534c44df0fcd330c2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.95", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.97" +version = "0.2.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ee99da9c5ba11bd675621338ef6fa52296b76b83305e9b6e5c77d4c286d6d49" +checksum = "943aab3fdaaa029a6e0271b35ea10b72b943135afe9bffca82384098ad0e06a6" [[package]] name = "wasm-streams" @@ -5760,9 +5775,9 @@ dependencies = [ [[package]] name = "wasmtimer" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f656cd8858a5164932d8a90f936700860976ec21eb00e0fe2aa8cab13f6b4cf" +checksum = "c7ed9d8b15c7fb594d72bfb4b5a276f3d2029333cd93a932f376f5937f6f80ee" dependencies = [ "futures", "js-sys", @@ -5773,9 +5788,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.74" +version = "0.3.76" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a98bc3c33f0fe7e59ad7cd041b89034fa82a7c2d4365ca538dda6cdaf513863c" +checksum = "04dd7223427d52553d3702c004d3b2fe07c148165faa56313cb00211e31c12bc" dependencies = [ "js-sys", "wasm-bindgen", @@ -5793,9 +5808,9 @@ dependencies = [ [[package]] name = "webpki-roots" -version = "0.26.5" +version = "0.26.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bd24728e5af82c6c4ec1b66ac4844bdf8156257fccda846ec58b42cd0cdbe6a" +checksum = "5d642ff16b7e79272ae451b7322067cdc17cadf68c23264be9d94a32319efe7e" dependencies = [ "rustls-pki-types", ] @@ -5954,18 +5969,9 @@ checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "winnow" -version = "0.5.40" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" -dependencies = [ - "memchr", -] - -[[package]] -name = "winnow" -version = "0.6.18" +version = "0.6.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68a9bda4691f099d435ad181000724da8e5899daa10713c2d432552b9ccd3a6f" +checksum = "39281189af81c07ec09db316b302a3e67bf9bd7cbf6c820b50e35fee9c2fa980" dependencies = [ "memchr", ] @@ -5995,7 +6001,7 @@ dependencies = [ "pharos", "rustc_version", "send_wrapper", - "thiserror 1.0.63", + "thiserror 1.0.69", "wasm-bindgen", "wasm-bindgen-futures", "web-sys", @@ -6012,9 +6018,9 @@ dependencies = [ [[package]] name = "xxhash-rust" -version = "0.8.12" +version = "0.8.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a5cbf750400958819fb6178eaa83bee5cd9c29a26a40cc241df8c70fdd46984" +checksum = "fdd20c5420375476fbd4394763288da7eb0cc0b8c11deed431a91562af7335d3" [[package]] name = "yaml-rust" @@ -6051,7 +6057,7 @@ checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" dependencies = [ "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.95", "synstructure", ] @@ -6073,7 +6079,7 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.95", ] [[package]] @@ -6093,7 +6099,7 @@ checksum = "595eed982f7d355beb85837f651fa22e90b3c044842dc7f2c2842c086f295808" dependencies = [ "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.95", "synstructure", ] @@ -6122,7 +6128,7 @@ checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.95", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index 3445008..a82f58c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,20 +1,16 @@ -[package] -name = "blog" -version = "0.1.0" -edition = "2021" - -[lib] -crate-type = ["cdylib", "rlib"] +[workspace] +resolver = "2" +members = ["app", "frontend", "markdown", "server"] -[dependencies] -axum = { version = "0.7", optional = true, features = ["macros"] } +[workspace.dependencies] +axum = { version = "0.7", features = ["macros"] } console_error_panic_hook = "0.1" leptos = { version = "0.7.3", features = ["rustls", "nightly"] } -leptos_axum = { version = "0.7.3", optional = true } +leptos_axum = { version = "0.7.3" } leptos_meta = { version = "0.7.3" } leptos_router = { version = "0.7.3", features = ["nightly"] } -tokio = { version = "1", features = ["rt-multi-thread"], optional = true } -tower = { version = "0.5.1", optional = true } +tokio = { version = "1", features = ["rt-multi-thread"] } +tower = { version = "0.5.1" } tower-http = { version = "0.6.2", features = [ "fs", "trace", @@ -23,25 +19,22 @@ tower-http = { version = "0.6.2", features = [ "compression-deflate", "compression-zstd", "compression-gzip", -], optional = true } +] } wasm-bindgen = "0.2.96" thiserror = "1" -tracing = { version = "0.1", optional = true } +tracing = { version = "0.1" } http = "1" surrealdb = { version = "2.0.1", features = ["protocol-http"] } chrono = "0.4.38" serde = { version = "1.0.204", features = ["derive"] } dotenvy = "0.15.7" -syntect = { version = "5.2.0", optional = true } -regex = { version = "1.10.6", optional = true } -pulldown-cmark = { version = "0.12.0", optional = true } -rss = { version = "2.0.9", optional = true } -tracing-subscriber = { version = "0.3.18", optional = true } -katex = { version = "0.4.6", optional = true, default-features = false, features = [ - "duktape", -] } +regex = { version = "1.10.6" } +pulldown-cmark = { version = "0.12.0" } +rss = { version = "2.0.9" } +tracing-subscriber = { version = "0.3.18" } +katex = { version = "0.4.6", default-features = false, features = ["duktape"] } web-sys = "0.3.72" -lettre = { version = "0.11.9", default-features = false, optional = true, features = [ +lettre = { version = "0.11.9", default-features = false, features = [ "builder", "smtp-transport", "rustls-tls", @@ -50,27 +43,9 @@ lettre = { version = "0.11.9", default-features = false, optional = true, featur ] } leptos_icons = "0.4.0" icondata = "0.5.0" - -[features] -hydrate = ["leptos/hydrate"] -ssr = [ - "dep:axum", - "dep:tokio", - "dep:tower", - "dep:tower-http", - "dep:leptos_axum", - "leptos/ssr", - "leptos_meta/ssr", - "leptos_router/ssr", - "dep:tracing", - "dep:syntect", - "dep:regex", - "dep:pulldown-cmark", - "dep:rss", - "dep:tracing-subscriber", - "dep:katex", - "dep:lettre", -] +syntect = "5.2.0" +console_log = "1" +log = "0.4.20" # Defines a size-optimized profile for the WASM bundle in release mode [profile.wasm-release] @@ -80,7 +55,16 @@ lto = true codegen-units = 1 panic = "abort" -[package.metadata.leptos] +[[workspace.metadata.leptos]] +# this name is used for the wasm, js and css file names +name = "blog" + +# the package in the workspace that contains the server binary (binary crate) +bin-package = "server" + +# the package in the workspace that contains the frontend wasm binary (library crate) +lib-package = "frontend" + # The name used by wasm-bindgen/cargo-leptos for the JS/WASM bundle. Defaults to the crate name output-name = "blog" @@ -123,7 +107,7 @@ env = "DEV" # The features to use when compiling the bin target # # Optional. Can be over-ridden with the command line parameter --bin-features -bin-features = ["ssr"] +bin-features = [] # If the --no-default-features flag should be used when compiling the bin target # @@ -133,7 +117,7 @@ bin-default-features = false # The features to use when compiling the lib target # # Optional. Can be over-ridden with the command line parameter --lib-features -lib-features = ["hydrate"] +lib-features = [] # If the --no-default-features flag should be used when compiling the lib target # diff --git a/app/Cargo.toml b/app/Cargo.toml new file mode 100644 index 0000000..8a798c6 --- /dev/null +++ b/app/Cargo.toml @@ -0,0 +1,27 @@ +[package] +name = "app" +version = "0.1.0" +edition = "2021" + +[dependencies] +markdown = { path = "../markdown", default-features = false, features = ["ssr"], optional = true} +axum = {workspace = true, optional = true} +chrono.workspace = true +leptos.workspace = true +leptos_meta.workspace = true +leptos_router.workspace = true +leptos_axum = { workspace = true, optional = true } +leptos_icons.workspace = true +icondata.workspace = true +http.workspace = true +lettre = {workspace = true, optional = true} +serde.workspace = true +surrealdb.workspace = true +thiserror.workspace = true +web-sys.workspace = true +tracing ={ workspace = true, optional = true } + +[features] +hydrate = ["leptos/hydrate"] +ssr = ["leptos/ssr", "leptos_meta/ssr", "leptos_router/ssr", "dep:leptos_axum", "dep:axum", "dep:lettre", "dep:tracing", "dep:markdown"] + diff --git a/src/ssr/api.rs b/app/src/api.rs similarity index 90% rename from src/ssr/api.rs rename to app/src/api.rs index a5bfcbd..62afe9b 100644 --- a/src/ssr/api.rs +++ b/app/src/api.rs @@ -3,11 +3,11 @@ use std::collections::BTreeMap; use leptos::prelude::{server, ServerFnError}; use serde::{Deserialize, Serialize}; -use crate::ssr::types::{Post, Reference}; +use crate::types::{Post, Reference}; #[server(endpoint = "/posts")] pub async fn select_posts(#[server(default)] tags: Vec) -> Result, ServerFnError> { - use crate::ssr::app_state::AppState; + use crate::types::AppState; use chrono::{DateTime, Utc}; use leptos::prelude::expect_context; @@ -34,7 +34,7 @@ pub async fn select_posts(#[server(default)] tags: Vec) -> Result) -> Result Result, ServerFnError> { - use crate::ssr::app_state::AppState; + use crate::types::AppState; use leptos::prelude::expect_context; let AppState { db, .. } = expect_context::(); @@ -70,14 +70,15 @@ pub async fn select_tags() -> Result, ServerFnError> { #[server(endpoint = "/post")] pub async fn select_post(slug: String) -> Result { - use super::server_utils::process_markdown; - use crate::ssr::app_state::AppState; + use crate::types::AppState; use chrono::{DateTime, Utc}; use leptos::prelude::expect_context; + use markdown::process_markdown; let AppState { db, .. } = expect_context::(); let query = format!(r#"SELECT *, author.* from post WHERE slug = "{slug}""#); + println!("{:?}", query); let query = db.query(&query).await; if let Err(e) = query { @@ -90,15 +91,15 @@ pub async fn select_post(slug: String) -> Result { let date_time = DateTime::parse_from_rfc3339(&post.created_at)?.with_timezone(&Utc); let naive_date = date_time.date_naive(); let formatted_date = naive_date.format("%b %-d").to_string(); - post.created_at = formatted_date.into(); - post.body = process_markdown(post.body.to_string()).await?.into(); + post.created_at = formatted_date; + post.body = process_markdown(post.body.to_string()).await?; Ok(post) } #[server(endpoint = "/increment_views")] pub async fn increment_views(id: String) -> Result<(), ServerFnError> { - use crate::ssr::app_state::AppState; + use crate::types::AppState; use leptos::prelude::expect_context; let AppState { db, .. } = expect_context::(); @@ -144,25 +145,25 @@ pub async fn hire_us(data: HireUsRequest) -> Result<(), ServerFnError> { match mailer.send(email).await { Ok(_) => { tracing::info!("Email sent successfully"); - return Ok(()); + Ok(()) } Err(e) => { tracing::error!("Failed to send email: {:?}", e); - return Err(ServerFnError::from(e)); + Err(ServerFnError::from(e)) } } } #[server(endpoint = "/references")] pub async fn select_references() -> Result, ServerFnError> { - use crate::ssr::app_state::AppState; + use crate::types::AppState; use leptos::prelude::expect_context; let AppState { db, .. } = expect_context::(); let query = "SELECT * from reference WHERE is_published = true ORDER BY created_at DESC;"; let query = db.query(query).await; - + println!("{:?}", query); if let Err(e) = query { return Err(ServerFnError::from(e)); } diff --git a/src/components.rs b/app/src/components.rs similarity index 100% rename from src/components.rs rename to app/src/components.rs diff --git a/src/components/error_template.rs b/app/src/components/error_template.rs similarity index 97% rename from src/components/error_template.rs rename to app/src/components/error_template.rs index 36ee47e..1c3622d 100644 --- a/src/components/error_template.rs +++ b/app/src/components/error_template.rs @@ -63,7 +63,7 @@ pub fn component(outside_errors: Option, errors: Option div().child(( h1().class("text-xl tracking-widest text-gray-400 uppercase").child( - format!("{}| {}", error_code.to_string(), error_string), + format!("{}| {}", error_code, error_string), ), a() .href("/") diff --git a/src/components/header.rs b/app/src/components/header.rs similarity index 98% rename from src/components/header.rs rename to app/src/components/header.rs index 22abf3f..4859ea1 100644 --- a/src/components/header.rs +++ b/app/src/components/header.rs @@ -1,4 +1,4 @@ -use crate::components::icons; +use crate::icons; use leptos::{ ev, html::{a, div, header}, diff --git a/src/components/icons.rs b/app/src/components/icons.rs similarity index 100% rename from src/components/icons.rs rename to app/src/components/icons.rs diff --git a/src/components/loader.rs b/app/src/components/loader.rs similarity index 100% rename from src/components/loader.rs rename to app/src/components/loader.rs diff --git a/src/pages/hireus.rs b/app/src/hireus.rs similarity index 99% rename from src/pages/hireus.rs rename to app/src/hireus.rs index 977329c..d34152a 100644 --- a/src/pages/hireus.rs +++ b/app/src/hireus.rs @@ -5,7 +5,7 @@ use leptos::{ svg::{path, svg}, }; -use crate::ssr::api::{hire_us, HireUsRequest}; +use crate::api::{hire_us, HireUsRequest}; pub fn component() -> impl IntoView { let state = RwSignal::new(HireUsRequest::default()); diff --git a/src/pages/home.rs b/app/src/home.rs similarity index 99% rename from src/pages/home.rs rename to app/src/home.rs index 3f370e3..7ba499f 100644 --- a/src/pages/home.rs +++ b/app/src/home.rs @@ -5,8 +5,10 @@ use leptos_icons::{Icon, IconProps}; use leptos_meta::{Title, TitleProps}; use leptos_router::components::{AProps, A}; -use crate::components::loader; -use crate::ssr::api::{select_posts, select_tags}; +use crate::{ + api::{select_posts, select_tags}, + components::loader, +}; pub fn component() -> impl IntoView { let selected_tags = RwSignal::new(Vec::::new()); diff --git a/src/app.rs b/app/src/lib.rs similarity index 98% rename from src/app.rs rename to app/src/lib.rs index d98f499..f145077 100644 --- a/src/app.rs +++ b/app/src/lib.rs @@ -1,7 +1,4 @@ -use crate::{ - components::{error_template, header, icons}, - pages::{hireus, home, post, references}, -}; +use crate::components::{error_template, header, icons}; use chrono::{Datelike, Utc}; use leptos::{ html::{a, body, div, footer, head, html, main, meta, p}, @@ -13,6 +10,14 @@ use leptos_router::{ ParamSegment, SsrMode, StaticSegment, }; +pub mod api; +mod components; +mod hireus; +mod home; +mod post; +mod references; +pub mod types; + pub fn shell(options: LeptosOptions) -> impl IntoView { let html_ = html().lang("en").child(( head().child(( diff --git a/src/pages/post.rs b/app/src/post.rs similarity index 97% rename from src/pages/post.rs rename to app/src/post.rs index 4a6c895..2723a17 100644 --- a/src/pages/post.rs +++ b/app/src/post.rs @@ -3,9 +3,11 @@ use leptos::{ev, prelude::*}; use leptos_meta::*; use leptos_router::hooks::use_params_map; -use crate::components::loader; -use crate::ssr::api::{increment_views, select_post}; -use crate::ssr::types::Post; +use crate::{ + api::{increment_views, select_post}, + components::loader, + types::Post, +}; pub fn component() -> impl IntoView { let params = use_params_map(); diff --git a/src/pages/references.rs b/app/src/references.rs similarity index 98% rename from src/pages/references.rs rename to app/src/references.rs index 0a2e2c4..e24280f 100644 --- a/src/pages/references.rs +++ b/app/src/references.rs @@ -1,4 +1,4 @@ -use crate::ssr::api::select_references; +use crate::api::select_references; use leptos::{ html::{div, h1, h3, p, section, span}, prelude::*, @@ -39,7 +39,7 @@ pub fn component() -> impl IntoView { r.tech_stack .clone() .into_iter() - .zip(r.teck_stack_percentage.clone().into_iter()) + .zip(r.teck_stack_percentage.clone()) .collect::>() }) .key(|tech| tech.0.to_string()) diff --git a/src/ssr/types.rs b/app/src/types.rs similarity index 85% rename from src/ssr/types.rs rename to app/src/types.rs index 8896123..35fe313 100644 --- a/src/ssr/types.rs +++ b/app/src/types.rs @@ -1,6 +1,20 @@ use serde::{Deserialize, Serialize}; use surrealdb::sql::Thing; +#[cfg(feature = "ssr")] +use axum::extract::FromRef; +#[cfg(feature = "ssr")] +use leptos::config::LeptosOptions; +#[cfg(feature = "ssr")] +use surrealdb::{engine::remote::http::Client, Surreal}; + +#[cfg(feature = "ssr")] +#[derive(FromRef, Debug, Clone)] +pub struct AppState { + pub db: Surreal, + pub leptos_options: LeptosOptions, +} + #[derive(Debug, Clone, Serialize, Deserialize, PartialEq)] pub struct Author { pub id: Thing, diff --git a/frontend/Cargo.toml b/frontend/Cargo.toml new file mode 100644 index 0000000..704fb24 --- /dev/null +++ b/frontend/Cargo.toml @@ -0,0 +1,18 @@ +[package] +name = "frontend" +version = "0.1.0" +edition = "2021" + +[lib] +crate-type = ["cdylib", "rlib"] + +[dependencies] +app = { path = "../app", default-features = false, features = [ + "hydrate", +] } +leptos = { workspace = true, features = ["hydrate"] } + +console_error_panic_hook.workspace = true +console_log.workspace = true +log.workspace = true +wasm-bindgen.workspace = true diff --git a/frontend/src/lib.rs b/frontend/src/lib.rs new file mode 100644 index 0000000..95dc415 --- /dev/null +++ b/frontend/src/lib.rs @@ -0,0 +1,9 @@ +#[wasm_bindgen::prelude::wasm_bindgen] +pub fn hydrate() { + use app::*; + // initializes logging using the `log` crate + _ = console_log::init_with_level(log::Level::Debug); + console_error_panic_hook::set_once(); + + leptos::mount::hydrate_body(component); +} diff --git a/markdown/Cargo.toml b/markdown/Cargo.toml new file mode 100644 index 0000000..fddf515 --- /dev/null +++ b/markdown/Cargo.toml @@ -0,0 +1,14 @@ +[package] +name = "markdown" +version = "0.1.0" +edition = "2024" + +[dependencies] +leptos = { workspace = true, features = ["ssr"]} +pulldown-cmark.workspace = true +syntect.workspace = true +katex.workspace = true +regex.workspace = true + +[features] +ssr = ["leptos/ssr"] \ No newline at end of file diff --git a/src/ssr/server_utils.rs b/markdown/src/lib.rs similarity index 56% rename from src/ssr/server_utils.rs rename to markdown/src/lib.rs index 9a1d372..30fe8b6 100644 --- a/src/ssr/server_utils.rs +++ b/markdown/src/lib.rs @@ -1,115 +1,10 @@ -use super::types::Post; -use crate::ssr::app_state::AppState; -use axum::extract::State; -use axum::response::Response; -use chrono::{DateTime, Utc}; use leptos::prelude::ServerFnError; use pulldown_cmark::{CodeBlockKind, CowStr, Event, Options, Parser, Tag, TagEnd, TextMergeStream}; use regex::Regex; -use rss::{ChannelBuilder, Item}; -use serde::{Deserialize, Serialize}; -use std::env; -use std::sync::Arc; -use surrealdb::engine::remote::http::{Client, Http, Https}; -use surrealdb::opt::auth::Root; -use surrealdb::Surreal; use syntect::easy::HighlightLines; use syntect::highlighting::ThemeSet; use syntect::html::{styled_line_to_highlighted_html, IncludeBackground}; use syntect::parsing::SyntaxSet; -use tokio::sync::Mutex; - -pub async fn connect() -> Surreal { - let protocol = env::var("SURREAL_PROTOCOL").unwrap_or("http".to_string()); - let host = env::var("SURREAL_HOST").unwrap_or("127.0.0.1:8000".to_string()); - let username = env::var("SURREAL_ROOT_USER").unwrap_or("root".to_string()); - let password = env::var("SURREAL_ROOT_PASS").unwrap_or("root".to_string()); - let ns = env::var("SURREAL_NS").unwrap_or("rustblog".to_string()); - let db_name = env::var("SURREAL_DB").unwrap_or("rustblog".to_string()); - - let db = if protocol == "http" { - Surreal::new::(host).await.unwrap() - } else { - Surreal::new::(host).await.unwrap() - }; - - db.signin(Root { - username: &username, - password: &password, - }) - .await - .unwrap(); - db.use_ns(ns).use_db(db_name).await.unwrap(); - - db -} - -pub async fn rss_handler(State(state): State) -> Response { - let AppState { db, .. } = state; - let rss = generate_rss(db).await.unwrap(); - Response::builder() - .header("Content-Type", "application/xml") - .body(rss) - .unwrap() -} - -pub async fn generate_rss(db: Surreal) -> leptos::error::Result { - let query = db - .query("SELECT *, author.* from post WHERE is_published = true ORDER BY created_at DESC;") - .await; - let mut posts = query?.take::>(0)?; - posts.iter_mut().for_each(|post| { - let date_time = DateTime::parse_from_rfc3339(&post.created_at) - .unwrap() - .with_timezone(&Utc); - let naive_date = date_time.date_naive(); - let formatted_date = naive_date.format("%b %-d").to_string(); - post.created_at = formatted_date.into(); - }); - let posts = Arc::new(Mutex::new(posts)); - let mut handles = vec![]; - - for _ in 0..posts.lock().await.len() { - let posts_clone = Arc::clone(&posts); - let handle = tokio::spawn(async move { - let mut posts = posts_clone.lock().await; - if let Some(post) = posts.iter_mut().next() { - post.body = process_markdown(post.body.to_string()).await.unwrap().into(); - } - }); - - handles.push(handle); - } - - for handle in handles { - handle.await?; - } - - let channel = ChannelBuilder::default() - .title("Rust-DD") - .link("https://rust-dd.com") - .description("Rust-DD Blog – Tech Insights & Consulting") - .items( - posts - .lock() - .await - .clone() - .into_iter() - .map(|post| { - let mut item = Item::default(); - item.set_author(post.author.name.to_string()); - item.set_title(post.title.to_string()); - item.set_description(post.body.to_string()); - item.set_link(format!("https://rust-dd.com/post/{}", post.slug.unwrap())); - item.set_pub_date(post.created_at.to_string()); - item - }) - .collect::>(), - ) - .build(); - - Ok(channel.to_string()) -} pub async fn process_markdown(markdown: String) -> Result { pub struct MathEventProcessor { @@ -285,50 +180,3 @@ pub async fn process_markdown(markdown: String) -> Result Ok(html_output) } - -pub async fn sitemap_handler(State(state): State) -> Response { - #[derive(Serialize, Deserialize)] - struct Post { - slug: Option, - created_at: String, - } - - let AppState { db, .. } = state; - let query = db - .query("SELECT slug, created_at FROM post WHERE is_published = true ORDER BY created_at DESC;") - .await; - let posts = query.unwrap().take::>(0).unwrap(); - let mut sitemap = String::new(); - sitemap.push_str("\n"); - sitemap.push_str("\n"); - - let static_urls = vec![ - ("https://rust-dd.com/", "daily", "0.9"), - ("https://rust-dd.com/hireus", "weekly", "1.0"), - ("https://rust-dd.com/references", "weekly", "0.6"), - ("https://rust-dd.com/rss.xml", "daily", "0.5"), - ("https://rust-dd.com/sitemap.xml", "monthly", "0.5"), - ]; - - for (url, freq, priority) in static_urls { - sitemap.push_str("\n"); - sitemap.push_str(&format!("{}\n", url)); - sitemap.push_str(&format!("{}\n", freq)); - sitemap.push_str(&format!("{}\n", priority)); - sitemap.push_str("\n"); - } - - for post in posts { - sitemap.push_str("\n"); - sitemap.push_str(&format!("https://rust-dd.com/post/{}\n", post.slug.unwrap())); - sitemap.push_str("monthly\n"); - sitemap.push_str("1.0\n"); - sitemap.push_str(&format!("{}\n", post.created_at)); - sitemap.push_str("\n"); - } - sitemap.push_str(""); - Response::builder() - .header("Content-Type", "application/xml") - .body(sitemap) - .unwrap() -} diff --git a/server/Cargo.toml b/server/Cargo.toml new file mode 100644 index 0000000..6478a7a --- /dev/null +++ b/server/Cargo.toml @@ -0,0 +1,22 @@ +[package] +name = "server" +version = "0.1.0" +edition = "2021" + +[dependencies] +app = { path = "../app", default-features = false, features = ["ssr"] } +markdown = { path = "../markdown", default-features = false, features = ["ssr"] } +leptos = { workspace = true, features = ["ssr"]} +leptos_axum.workspace = true + +dotenvy.workspace = true +axum.workspace = true +chrono.workspace = true +rss.workspace = true +surrealdb.workspace = true +serde.workspace = true +tokio.workspace = true +tower.workspace = true +tower-http.workspace = true +tracing.workspace = true +tracing-subscriber.workspace = true diff --git a/src/main.rs b/server/src/main.rs similarity index 72% rename from src/main.rs rename to server/src/main.rs index ad1d11d..c7ecaba 100644 --- a/src/main.rs +++ b/server/src/main.rs @@ -1,20 +1,21 @@ -#[cfg(feature = "ssr")] +mod redirect; +mod utils; + +use app::{component, shell, types::AppState}; +use axum::{routing::get, Router}; +use dotenvy::dotenv; +use leptos::logging; +use leptos::prelude::*; +use leptos_axum::{generate_route_list, LeptosRoutes}; +use redirect::redirect_www; +use tower_http::compression::predicate::{NotForContentType, SizeAbove}; +use tower_http::compression::{CompressionLayer, Predicate}; +use tower_http::trace::TraceLayer; +use tower_http::CompressionLevel; +use utils::{connect, rss_handler, sitemap_handler}; + #[tokio::main] async fn main() { - use axum::{routing::get, Router}; - use blog::app::{self, shell}; - use blog::ssr::app_state::AppState; - use blog::ssr::redirect::redirect_www; - use blog::ssr::server_utils::{connect, rss_handler, sitemap_handler}; - use dotenvy::dotenv; - use leptos::logging; - use leptos::prelude::*; - use leptos_axum::{generate_route_list, LeptosRoutes}; - use tower_http::compression::predicate::{NotForContentType, SizeAbove}; - use tower_http::compression::{CompressionLayer, Predicate}; - use tower_http::trace::TraceLayer; - use tower_http::CompressionLevel; - let tracing_level = if cfg!(debug_assertions) { tracing::Level::INFO } else { @@ -35,7 +36,7 @@ async fn main() { let conf = get_configuration(None).unwrap(); let leptos_options = conf.leptos_options; let addr = leptos_options.site_addr; - let routes = generate_route_list(app::component); + let routes = generate_route_list(component); let db = connect().await; let app_state = AppState { @@ -83,10 +84,3 @@ async fn main() { logging::log!("listening on http://{}", &addr); axum::serve(listener, app.into_make_service()).await.unwrap(); } - -#[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 - // see lib.rs for hydration function instead -} diff --git a/src/ssr/redirect.rs b/server/src/redirect.rs similarity index 100% rename from src/ssr/redirect.rs rename to server/src/redirect.rs diff --git a/server/src/utils.rs b/server/src/utils.rs new file mode 100644 index 0000000..d46353c --- /dev/null +++ b/server/src/utils.rs @@ -0,0 +1,152 @@ +use app::types::{AppState, Post}; +use axum::extract::State; +use axum::response::Response; +use chrono::{DateTime, Utc}; +use leptos::prelude::ServerFnError; +use markdown::process_markdown; +use rss::{ChannelBuilder, Item}; +use serde::{Deserialize, Serialize}; +use std::env; +use std::sync::Arc; +use surrealdb::engine::remote::http::{Client, Http, Https}; +use surrealdb::opt::auth::Root; +use surrealdb::Surreal; +use tokio::sync::Mutex; + +pub async fn connect() -> Surreal { + let protocol = env::var("SURREAL_PROTOCOL").unwrap_or("http".to_string()); + let host = env::var("SURREAL_HOST").unwrap_or("127.0.0.1:8000".to_string()); + let username = env::var("SURREAL_ROOT_USER").unwrap_or("root".to_string()); + let password = env::var("SURREAL_ROOT_PASS").unwrap_or("root".to_string()); + let ns = env::var("SURREAL_NS").unwrap_or("rustblog".to_string()); + let db_name = env::var("SURREAL_DB").unwrap_or("rustblog".to_string()); + let db = if protocol == "http" { + Surreal::new::(host).await.unwrap() + } else { + Surreal::new::(host).await.unwrap() + }; + + db.signin(Root { + username: &username, + password: &password, + }) + .await + .unwrap(); + db.use_ns(ns).use_db(db_name).await.unwrap(); + tracing::info!("Connected to SurrealDB"); + db +} + +pub async fn rss_handler(State(state): State) -> Response { + let AppState { db, .. } = state; + let rss = generate_rss(db).await.unwrap(); + Response::builder() + .header("Content-Type", "application/xml") + .body(rss) + .unwrap() +} + +pub async fn generate_rss(db: Surreal) -> leptos::error::Result { + let query = db + .query("SELECT *, author.* from post WHERE is_published = true ORDER BY created_at DESC;") + .await; + let mut posts = query?.take::>(0)?; + posts.iter_mut().for_each(|post| { + let date_time = DateTime::parse_from_rfc3339(&post.created_at) + .unwrap() + .with_timezone(&Utc); + let naive_date = date_time.date_naive(); + let formatted_date = naive_date.format("%b %-d").to_string(); + post.created_at = formatted_date; + }); + let posts = Arc::new(Mutex::new(posts)); + let mut handles = vec![]; + + for _ in 0..posts.lock().await.len() { + let posts_clone = Arc::clone(&posts); + let handle = tokio::spawn(async move { + let mut posts = posts_clone.lock().await; + if let Some(post) = posts.iter_mut().next() { + post.body = process_markdown(post.body.to_string()).await.unwrap(); + } + }); + + handles.push(handle); + } + + for handle in handles { + handle.await?; + } + + let channel = ChannelBuilder::default() + .title("Rust-DD") + .link("https://rust-dd.com") + .description("Rust-DD Blog – Tech Insights & Consulting") + .items( + posts + .lock() + .await + .clone() + .into_iter() + .map(|post| { + let mut item = Item::default(); + item.set_author(post.author.name.to_string()); + item.set_title(post.title.to_string()); + item.set_description(post.body.to_string()); + item.set_link(format!("https://rust-dd.com/post/{}", post.slug.unwrap())); + item.set_pub_date(post.created_at.to_string()); + item + }) + .collect::>(), + ) + .build(); + + Ok(channel.to_string()) +} + +pub async fn sitemap_handler(State(state): State) -> Response { + #[derive(Serialize, Deserialize)] + struct Post { + slug: Option, + created_at: String, + } + + let AppState { db, .. } = state; + let query = db + .query("SELECT slug, created_at FROM post WHERE is_published = true ORDER BY created_at DESC;") + .await; + let posts = query.unwrap().take::>(0).unwrap(); + let mut sitemap = String::new(); + sitemap.push_str("\n"); + sitemap.push_str("\n"); + + let static_urls = vec![ + ("https://rust-dd.com/", "daily", "0.9"), + ("https://rust-dd.com/hireus", "weekly", "1.0"), + ("https://rust-dd.com/references", "weekly", "0.6"), + ("https://rust-dd.com/rss.xml", "daily", "0.5"), + ("https://rust-dd.com/sitemap.xml", "monthly", "0.5"), + ]; + + for (url, freq, priority) in static_urls { + sitemap.push_str("\n"); + sitemap.push_str(&format!("{}\n", url)); + sitemap.push_str(&format!("{}\n", freq)); + sitemap.push_str(&format!("{}\n", priority)); + sitemap.push_str("\n"); + } + + for post in posts { + sitemap.push_str("\n"); + sitemap.push_str(&format!("https://rust-dd.com/post/{}\n", post.slug.unwrap())); + sitemap.push_str("monthly\n"); + sitemap.push_str("1.0\n"); + sitemap.push_str(&format!("{}\n", post.created_at)); + sitemap.push_str("\n"); + } + sitemap.push_str(""); + Response::builder() + .header("Content-Type", "application/xml") + .body(sitemap) + .unwrap() +} diff --git a/src/lib.rs b/src/lib.rs deleted file mode 100644 index b066f99..0000000 --- a/src/lib.rs +++ /dev/null @@ -1,12 +0,0 @@ -pub mod app; -pub mod components; -pub mod pages; -pub mod ssr; - -#[cfg(feature = "hydrate")] -#[wasm_bindgen::prelude::wasm_bindgen] -pub fn hydrate() { - use crate::app; - console_error_panic_hook::set_once(); - leptos::mount::hydrate_body(app::component); -} diff --git a/src/pages.rs b/src/pages.rs deleted file mode 100644 index e8b3c98..0000000 --- a/src/pages.rs +++ /dev/null @@ -1,4 +0,0 @@ -pub mod hireus; -pub mod home; -pub mod post; -pub mod references; diff --git a/src/ssr.rs b/src/ssr.rs deleted file mode 100644 index 92d6fc9..0000000 --- a/src/ssr.rs +++ /dev/null @@ -1,19 +0,0 @@ -pub mod api; -#[cfg(feature = "ssr")] -pub mod redirect; -#[cfg(feature = "ssr")] -pub mod server_utils; -pub mod types; - -#[cfg(feature = "ssr")] -pub mod app_state { - use axum::extract::FromRef; - use leptos::prelude::*; - use surrealdb::{engine::remote::http::Client, Surreal}; - - #[derive(FromRef, Debug, Clone)] - pub struct AppState { - pub db: Surreal, - pub leptos_options: LeptosOptions, - } -}