From a88e887f33f57bc3616eacdf083abab079376150 Mon Sep 17 00:00:00 2001 From: Emilis Date: Sat, 5 Apr 2025 14:14:57 +0100 Subject: [PATCH] blogsite initial commit --- .gitignore | 4 + Cargo.lock | 2532 ++++++++++++++++++++++++ Cargo.toml | 3 + blog-macros/Cargo.toml | 12 + blog-macros/src/lib.rs | 238 +++ blog-server/Cargo.toml | 17 + blog-server/pkg/blog.service | 19 + blog-server/src/game.rs | 49 + blog-server/src/main.rs | 282 +++ blog/Cargo.lock | 1572 +++++++++++++++ blog/Cargo.toml | 29 + blog/img/badges/bsky.png | Bin 0 -> 2393 bytes blog/img/badges/bunny-animated.webp | Bin 0 -> 858 bytes blog/img/badges/bunny.png | Bin 0 -> 1204 bytes blog/img/badges/consent-o-matic.png | Bin 0 -> 2281 bytes blog/img/badges/flash.webp | Bin 0 -> 1402 bytes blog/img/badges/pronouns-animated.webp | Bin 0 -> 37534 bytes blog/img/badges/pronouns.png | Bin 0 -> 726 bytes blog/img/badges/protect-animated.webp | Bin 0 -> 902 bytes blog/img/badges/protect.png | Bin 0 -> 759 bytes blog/img/badges/puff.webp | Bin 0 -> 86548 bytes blog/img/badges/riir-animated.webp | Bin 0 -> 1388 bytes blog/img/badges/riir.png | Bin 0 -> 1487 bytes blog/img/badges/ublock.png | Bin 0 -> 1388 bytes blog/img/badges/wiki.png | Bin 0 -> 2908 bytes blog/img/puffidle.webp | Bin 0 -> 90868 bytes blog/index.html | 17 + blog/index.scss | 264 +++ blog/src/app.rs | 66 + blog/src/components/badge.rs | 137 ++ blog/src/components/footer.rs | 17 + blog/src/components/latest.rs | 26 + blog/src/components/pagination.rs | 242 +++ blog/src/components/post_links.rs | 27 + blog/src/components/progress_delay.rs | 109 + blog/src/components/scratchpad.rs | 191 ++ blog/src/main.rs | 42 + blog/src/nav.rs | 62 + blog/src/pages/home.rs | 25 + blog/src/pages/not_found.rs | 19 + blog/src/pages/post.rs | 30 + blog/src/pages/post_index.rs | 36 + blog/src/post_list.rs | 41 + blog/src/post_list/post1.rs | 16 + blog/src/post_list/post2.rs | 15 + blog/src/post_list/post3.rs | 15 + blog/src/post_list/post4.rs | 15 + scratchpad/Cargo.toml | 8 + scratchpad/src/game.rs | 85 + scratchpad/src/lib.rs | 145 ++ 50 files changed, 6407 insertions(+) create mode 100644 .gitignore create mode 100644 Cargo.lock create mode 100644 Cargo.toml create mode 100644 blog-macros/Cargo.toml create mode 100644 blog-macros/src/lib.rs create mode 100644 blog-server/Cargo.toml create mode 100644 blog-server/pkg/blog.service create mode 100644 blog-server/src/game.rs create mode 100644 blog-server/src/main.rs create mode 100644 blog/Cargo.lock create mode 100644 blog/Cargo.toml create mode 100644 blog/img/badges/bsky.png create mode 100644 blog/img/badges/bunny-animated.webp create mode 100644 blog/img/badges/bunny.png create mode 100644 blog/img/badges/consent-o-matic.png create mode 100644 blog/img/badges/flash.webp create mode 100644 blog/img/badges/pronouns-animated.webp create mode 100644 blog/img/badges/pronouns.png create mode 100644 blog/img/badges/protect-animated.webp create mode 100644 blog/img/badges/protect.png create mode 100644 blog/img/badges/puff.webp create mode 100644 blog/img/badges/riir-animated.webp create mode 100644 blog/img/badges/riir.png create mode 100644 blog/img/badges/ublock.png create mode 100644 blog/img/badges/wiki.png create mode 100644 blog/img/puffidle.webp create mode 100644 blog/index.html create mode 100644 blog/index.scss create mode 100644 blog/src/app.rs create mode 100644 blog/src/components/badge.rs create mode 100644 blog/src/components/footer.rs create mode 100644 blog/src/components/latest.rs create mode 100644 blog/src/components/pagination.rs create mode 100644 blog/src/components/post_links.rs create mode 100644 blog/src/components/progress_delay.rs create mode 100644 blog/src/components/scratchpad.rs create mode 100644 blog/src/main.rs create mode 100644 blog/src/nav.rs create mode 100644 blog/src/pages/home.rs create mode 100644 blog/src/pages/not_found.rs create mode 100644 blog/src/pages/post.rs create mode 100644 blog/src/pages/post_index.rs create mode 100644 blog/src/post_list.rs create mode 100644 blog/src/post_list/post1.rs create mode 100644 blog/src/post_list/post2.rs create mode 100644 blog/src/post_list/post3.rs create mode 100644 blog/src/post_list/post4.rs create mode 100644 scratchpad/Cargo.toml create mode 100644 scratchpad/src/game.rs create mode 100644 scratchpad/src/lib.rs diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..d60129b --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +/blog/dist/ +/target/ +.vscode +build-and-send.fish diff --git a/Cargo.lock b/Cargo.lock new file mode 100644 index 0000000..22137d7 --- /dev/null +++ b/Cargo.lock @@ -0,0 +1,2532 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "addr2line" +version = "0.24.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" +dependencies = [ + "gimli", +] + +[[package]] +name = "adler2" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" + +[[package]] +name = "aho-corasick" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +dependencies = [ + "memchr", +] + +[[package]] +name = "android-tzdata" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" + +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + +[[package]] +name = "anyhow" +version = "1.0.97" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcfed56ad506cb2c684a14971b8861fdc3baaaae314b9e5f9bb532cbe3ba7a4f" + +[[package]] +name = "anymap2" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d301b3b94cb4b2f23d7917810addbbaff90738e0ca2be692bd027e70d7e0330c" + +[[package]] +name = "autocfg" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" + +[[package]] +name = "axum" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de45108900e1f9b9242f7f2e254aa3e2c029c921c258fe9e6b4217eeebd54288" +dependencies = [ + "axum-core", + "base64", + "bytes", + "form_urlencoded", + "futures-util", + "http 1.3.1", + "http-body", + "http-body-util", + "hyper", + "hyper-util", + "itoa", + "matchit", + "memchr", + "mime", + "percent-encoding", + "pin-project-lite", + "rustversion", + "serde", + "serde_json", + "serde_path_to_error", + "serde_urlencoded", + "sha1", + "sync_wrapper", + "tokio", + "tokio-tungstenite", + "tower", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "axum-core" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68464cd0412f486726fb3373129ef5d2993f90c34bc2bc1c1e9943b2f4fc7ca6" +dependencies = [ + "bytes", + "futures-core", + "http 1.3.1", + "http-body", + "http-body-util", + "mime", + "pin-project-lite", + "rustversion", + "sync_wrapper", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "backtrace" +version = "0.3.74" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" +dependencies = [ + "addr2line", + "cfg-if", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", + "windows-targets", +] + +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + +[[package]] +name = "bincode" +version = "1.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" +dependencies = [ + "serde", +] + +[[package]] +name = "bitflags" +version = "2.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c8214115b7bf84099f1309324e63141d4c5d7cc26862f97a0a857dbefe165bd" + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "blog" +version = "0.1.0" +dependencies = [ + "blog-macros", + "chrono", + "futures", + "gloo 0.11.0", + "instant", + "log", + "once_cell", + "rand 0.8.5", + "scratchpad", + "serde", + "wasm-bindgen-futures", + "wasm-logger", + "web-sys", + "yew", + "yew-router", +] + +[[package]] +name = "blog-macros" +version = "0.1.0" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", +] + +[[package]] +name = "blog-server" +version = "0.1.0" +dependencies = [ + "anyhow", + "axum", + "blog-macros", + "futures", + "log", + "mime-sniffer", + "pretty_env_logger", + "scratchpad", + "tokio", +] + +[[package]] +name = "boolinator" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfa8873f51c92e232f9bac4065cddef41b714152812bfc5f7672ba16d6ef8cd9" + +[[package]] +name = "bumpalo" +version = "3.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1628fb46dfa0b37568d12e5edd512553eccf6a22a78e8bde00bb4aed84d5bdbf" + +[[package]] +name = "bytes" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" + +[[package]] +name = "cc" +version = "1.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fcb57c740ae1daf453ae85f16e37396f672b039e00d9d866e07ddb24e328e3a" +dependencies = [ + "shlex", +] + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "chrono" +version = "0.4.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a7964611d71df112cb1730f2ee67324fcf4d0fc6606acbbe9bfe06df124637c" +dependencies = [ + "android-tzdata", + "iana-time-zone", + "js-sys", + "num-traits", + "wasm-bindgen", + "windows-link", +] + +[[package]] +name = "console_error_panic_hook" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a06aeb73f470f66dcdbf7223caeebb85984942f22f1adb2a088cf9668146bbbc" +dependencies = [ + "cfg-if", + "wasm-bindgen", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" + +[[package]] +name = "cpufeatures" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" +dependencies = [ + "libc", +] + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "data-encoding" +version = "2.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "575f75dfd25738df5b91b8e43e14d44bda14637a58fae779fd2b064f8bf3e010" + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "crypto-common", +] + +[[package]] +name = "displaydoc" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", +] + +[[package]] +name = "env_logger" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cd405aab171cb85d6735e5c8d9db038c17d3ca007a4d2c25f337935c3d90580" +dependencies = [ + "humantime", + "is-terminal", + "log", + "regex", + "termcolor", +] + +[[package]] +name = "equivalent" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "form_urlencoded" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "futures" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" + +[[package]] +name = "futures-executor" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-io" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" + +[[package]] +name = "futures-macro" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", +] + +[[package]] +name = "futures-sink" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" + +[[package]] +name = "futures-task" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" + +[[package]] +name = "futures-util" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "getrandom" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "wasi 0.11.0+wasi-snapshot-preview1", + "wasm-bindgen", +] + +[[package]] +name = "getrandom" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73fea8450eea4bac3940448fb7ae50d91f034f941199fcd9d909a5a07aa455f0" +dependencies = [ + "cfg-if", + "libc", + "r-efi", + "wasi 0.14.2+wasi-0.2.4", +] + +[[package]] +name = "gimli" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" + +[[package]] +name = "gloo" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28999cda5ef6916ffd33fb4a7b87e1de633c47c0dc6d97905fee1cdaa142b94d" +dependencies = [ + "gloo-console 0.2.3", + "gloo-dialogs 0.1.1", + "gloo-events 0.1.2", + "gloo-file 0.2.3", + "gloo-history 0.1.5", + "gloo-net 0.3.1", + "gloo-render 0.1.1", + "gloo-storage 0.2.2", + "gloo-timers 0.2.6", + "gloo-utils 0.1.7", + "gloo-worker 0.2.1", +] + +[[package]] +name = "gloo" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd35526c28cc55c1db77aed6296de58677dbab863b118483a27845631d870249" +dependencies = [ + "gloo-console 0.3.0", + "gloo-dialogs 0.2.0", + "gloo-events 0.2.0", + "gloo-file 0.3.0", + "gloo-history 0.2.2", + "gloo-net 0.4.0", + "gloo-render 0.2.0", + "gloo-storage 0.3.0", + "gloo-timers 0.3.0", + "gloo-utils 0.2.0", + "gloo-worker 0.4.0", +] + +[[package]] +name = "gloo" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d15282ece24eaf4bd338d73ef580c6714c8615155c4190c781290ee3fa0fd372" +dependencies = [ + "gloo-console 0.3.0", + "gloo-dialogs 0.2.0", + "gloo-events 0.2.0", + "gloo-file 0.3.0", + "gloo-history 0.2.2", + "gloo-net 0.5.0", + "gloo-render 0.2.0", + "gloo-storage 0.3.0", + "gloo-timers 0.3.0", + "gloo-utils 0.2.0", + "gloo-worker 0.5.0", +] + +[[package]] +name = "gloo-console" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82b7ce3c05debe147233596904981848862b068862e9ec3e34be446077190d3f" +dependencies = [ + "gloo-utils 0.1.7", + "js-sys", + "serde", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "gloo-console" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a17868f56b4a24f677b17c8cb69958385102fa879418052d60b50bc1727e261" +dependencies = [ + "gloo-utils 0.2.0", + "js-sys", + "serde", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "gloo-dialogs" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67062364ac72d27f08445a46cab428188e2e224ec9e37efdba48ae8c289002e6" +dependencies = [ + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "gloo-dialogs" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf4748e10122b01435750ff530095b1217cf6546173459448b83913ebe7815df" +dependencies = [ + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "gloo-events" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68b107f8abed8105e4182de63845afcc7b69c098b7852a813ea7462a320992fc" +dependencies = [ + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "gloo-events" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27c26fb45f7c385ba980f5fa87ac677e363949e065a083722697ef1b2cc91e41" +dependencies = [ + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "gloo-file" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8d5564e570a38b43d78bdc063374a0c3098c4f0d64005b12f9bbe87e869b6d7" +dependencies = [ + "gloo-events 0.1.2", + "js-sys", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "gloo-file" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97563d71863fb2824b2e974e754a81d19c4a7ec47b09ced8a0e6656b6d54bd1f" +dependencies = [ + "futures-channel", + "gloo-events 0.2.0", + "js-sys", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "gloo-history" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85725d90bf0ed47063b3930ef28e863658a7905989e9929a8708aab74a1d5e7f" +dependencies = [ + "gloo-events 0.1.2", + "gloo-utils 0.1.7", + "serde", + "serde-wasm-bindgen 0.5.0", + "serde_urlencoded", + "thiserror 1.0.69", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "gloo-history" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "903f432be5ba34427eac5e16048ef65604a82061fe93789f2212afc73d8617d6" +dependencies = [ + "getrandom 0.2.15", + "gloo-events 0.2.0", + "gloo-utils 0.2.0", + "serde", + "serde-wasm-bindgen 0.6.5", + "serde_urlencoded", + "thiserror 1.0.69", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "gloo-net" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a66b4e3c7d9ed8d315fd6b97c8b1f74a7c6ecbbc2320e65ae7ed38b7068cc620" +dependencies = [ + "futures-channel", + "futures-core", + "futures-sink", + "gloo-utils 0.1.7", + "http 0.2.12", + "js-sys", + "pin-project", + "serde", + "serde_json", + "thiserror 1.0.69", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "gloo-net" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ac9e8288ae2c632fa9f8657ac70bfe38a1530f345282d7ba66a1f70b72b7dc4" +dependencies = [ + "futures-channel", + "futures-core", + "futures-sink", + "gloo-utils 0.2.0", + "http 0.2.12", + "js-sys", + "pin-project", + "serde", + "serde_json", + "thiserror 1.0.69", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "gloo-net" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43aaa242d1239a8822c15c645f02166398da4f8b5c4bae795c1f5b44e9eee173" +dependencies = [ + "futures-channel", + "futures-core", + "futures-sink", + "gloo-utils 0.2.0", + "http 0.2.12", + "js-sys", + "pin-project", + "serde", + "serde_json", + "thiserror 1.0.69", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "gloo-render" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fd9306aef67cfd4449823aadcd14e3958e0800aa2183955a309112a84ec7764" +dependencies = [ + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "gloo-render" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56008b6744713a8e8d98ac3dcb7d06543d5662358c9c805b4ce2167ad4649833" +dependencies = [ + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "gloo-storage" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d6ab60bf5dbfd6f0ed1f7843da31b41010515c745735c970e821945ca91e480" +dependencies = [ + "gloo-utils 0.1.7", + "js-sys", + "serde", + "serde_json", + "thiserror 1.0.69", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "gloo-storage" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbc8031e8c92758af912f9bc08fbbadd3c6f3cfcbf6b64cdf3d6a81f0139277a" +dependencies = [ + "gloo-utils 0.2.0", + "js-sys", + "serde", + "serde_json", + "thiserror 1.0.69", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "gloo-timers" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b995a66bb87bebce9a0f4a95aed01daca4872c050bfcb21653361c03bc35e5c" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "gloo-timers" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbb143cf96099802033e0d4f4963b19fd2e0b728bcf076cd9cf7f6634f092994" +dependencies = [ + "futures-channel", + "futures-core", + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "gloo-utils" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "037fcb07216cb3a30f7292bd0176b050b7b9a052ba830ef7d5d65f6dc64ba58e" +dependencies = [ + "js-sys", + "serde", + "serde_json", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "gloo-utils" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b5555354113b18c547c1d3a98fbf7fb32a9ff4f6fa112ce823a21641a0ba3aa" +dependencies = [ + "js-sys", + "serde", + "serde_json", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "gloo-worker" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13471584da78061a28306d1359dd0178d8d6fc1c7c80e5e35d27260346e0516a" +dependencies = [ + "anymap2", + "bincode", + "gloo-console 0.2.3", + "gloo-utils 0.1.7", + "js-sys", + "serde", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "gloo-worker" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76495d3dd87de51da268fa3a593da118ab43eb7f8809e17eb38d3319b424e400" +dependencies = [ + "bincode", + "futures", + "gloo-utils 0.2.0", + "gloo-worker-macros", + "js-sys", + "pinned", + "serde", + "thiserror 1.0.69", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "gloo-worker" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "085f262d7604911c8150162529cefab3782e91adb20202e8658f7275d2aefe5d" +dependencies = [ + "bincode", + "futures", + "gloo-utils 0.2.0", + "gloo-worker-macros", + "js-sys", + "pinned", + "serde", + "thiserror 1.0.69", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "gloo-worker-macros" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "956caa58d4857bc9941749d55e4bd3000032d8212762586fa5705632967140e7" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 2.0.100", +] + +[[package]] +name = "hashbrown" +version = "0.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" + +[[package]] +name = "hermit-abi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" + +[[package]] +name = "hermit-abi" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbd780fe5cc30f81464441920d82ac8740e2e46b29a6fad543ddd075229ce37e" + +[[package]] +name = "http" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4a85d31aea989eead29a3aaf9e1115a180df8282431156e533de47660892565" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http-body" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" +dependencies = [ + "bytes", + "http 1.3.1", +] + +[[package]] +name = "http-body-util" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" +dependencies = [ + "bytes", + "futures-core", + "http 1.3.1", + "http-body", + "pin-project-lite", +] + +[[package]] +name = "httparse" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" + +[[package]] +name = "httpdate" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" + +[[package]] +name = "humantime" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b112acc8b3adf4b107a8ec20977da0273a8c386765a3ec0229bd500a1443f9f" + +[[package]] +name = "hyper" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc2b571658e38e0c01b1fdca3bbbe93c00d3d71693ff2770043f8c29bc7d6f80" +dependencies = [ + "bytes", + "futures-channel", + "futures-util", + "http 1.3.1", + "http-body", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "smallvec", + "tokio", +] + +[[package]] +name = "hyper-util" +version = "0.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "497bbc33a26fdd4af9ed9c70d63f61cf56a938375fbb32df34db9b1cd6d643f2" +dependencies = [ + "bytes", + "futures-util", + "http 1.3.1", + "http-body", + "hyper", + "pin-project-lite", + "tokio", + "tower-service", +] + +[[package]] +name = "iana-time-zone" +version = "0.1.63" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0c919e5debc312ad217002b8048a17b7d83f80703865bbfcfebb0458b0b27d8" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "log", + "wasm-bindgen", + "windows-core", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + +[[package]] +name = "icu_collections" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locid" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_locid_transform" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01d11ac35de8e40fdeda00d9e1e9d92525f3f9d887cdd7aa81d727596788b54e" +dependencies = [ + "displaydoc", + "icu_locid", + "icu_locid_transform_data", + "icu_provider", + "tinystr", + "zerovec", +] + +[[package]] +name = "icu_locid_transform_data" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7515e6d781098bf9f7205ab3fc7e9709d34554ae0b21ddbcb5febfa4bc7df11d" + +[[package]] +name = "icu_normalizer" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "utf16_iter", + "utf8_iter", + "write16", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5e8338228bdc8ab83303f16b797e177953730f601a96c25d10cb3ab0daa0cb7" + +[[package]] +name = "icu_properties" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93d6020766cfc6302c15dbbc9c8778c37e62c14427cb7f6e601d849e092aeef5" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_locid_transform", + "icu_properties_data", + "icu_provider", + "tinystr", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85fb8799753b75aee8d2a21d7c14d9f38921b54b3dbda10f5a3c7a7b82dba5e2" + +[[package]] +name = "icu_provider" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9" +dependencies = [ + "displaydoc", + "icu_locid", + "icu_provider_macros", + "stable_deref_trait", + "tinystr", + "writeable", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_provider_macros" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", +] + +[[package]] +name = "idna" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" +dependencies = [ + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "daca1df1c957320b2cf139ac61e7bd64fed304c5040df000a745aa1de3b4ef71" +dependencies = [ + "icu_normalizer", + "icu_properties", +] + +[[package]] +name = "implicit-clone" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8a9aa791c7b5a71b636b7a68207fdebf171ddfc593d9c8506ec4cbc527b6a84" +dependencies = [ + "implicit-clone-derive", + "indexmap", +] + +[[package]] +name = "implicit-clone-derive" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "699c1b6d335e63d0ba5c1e1c7f647371ce989c3bcbe1f7ed2b85fa56e3bd1a21" +dependencies = [ + "quote", + "syn 2.0.100", +] + +[[package]] +name = "indexmap" +version = "2.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3954d50fe15b02142bf25d3b8bdadb634ec3948f103d04ffe3031bc8fe9d7058" +dependencies = [ + "equivalent", + "hashbrown", +] + +[[package]] +name = "instant" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" +dependencies = [ + "cfg-if", + "js-sys", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "is-terminal" +version = "0.4.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e04d7f318608d35d4b61ddd75cbdaee86b023ebe2bd5a66ee0915f0bf93095a9" +dependencies = [ + "hermit-abi 0.5.0", + "libc", + "windows-sys 0.59.0", +] + +[[package]] +name = "itoa" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" + +[[package]] +name = "js-sys" +version = "0.3.77" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" +dependencies = [ + "once_cell", + "wasm-bindgen", +] + +[[package]] +name = "libc" +version = "0.2.171" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c19937216e9d3aa9956d9bb8dfc0b0c8beb6058fc4f7a4dc4d850edf86a237d6" + +[[package]] +name = "litemap" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23fb14cb19457329c82206317a5663005a4d404783dc74f4252769b0d5f42856" + +[[package]] +name = "lock_api" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" + +[[package]] +name = "matchit" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47e1ffaa40ddd1f3ed91f717a33c8c0ee23fff369e3aa8772b9605cc1d22f4c3" + +[[package]] +name = "memchr" +version = "2.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" + +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[package]] +name = "mime-sniffer" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b8b2a64cd735f1d5f17ff6701ced3cc3c54851f9448caf454cd9c923d812408" +dependencies = [ + "mime", + "url", +] + +[[package]] +name = "miniz_oxide" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff70ce3e48ae43fa075863cef62e8b43b71a4f2382229920e0df362592919430" +dependencies = [ + "adler2", +] + +[[package]] +name = "mio" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2886843bf800fba2e3377cff24abf6379b4c4d5c6681eaf9ea5b0d15090450bd" +dependencies = [ + "libc", + "wasi 0.11.0+wasi-snapshot-preview1", + "windows-sys 0.52.0", +] + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", +] + +[[package]] +name = "num_cpus" +version = "1.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" +dependencies = [ + "hermit-abi 0.3.9", + "libc", +] + +[[package]] +name = "object" +version = "0.36.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" +dependencies = [ + "memchr", +] + +[[package]] +name = "once_cell" +version = "1.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" + +[[package]] +name = "parking_lot" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-targets", +] + +[[package]] +name = "percent-encoding" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" + +[[package]] +name = "pin-project" +version = "1.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677f1add503faace112b9f1373e43e9e054bfdd22ff1a63c1bc485eaec6a6a8a" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "pinned" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a829027bd95e54cfe13e3e258a1ae7b645960553fb82b75ff852c29688ee595b" +dependencies = [ + "futures", + "rustversion", + "thiserror 1.0.69", +] + +[[package]] +name = "ppv-lite86" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" +dependencies = [ + "zerocopy", +] + +[[package]] +name = "pretty_env_logger" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "865724d4dbe39d9f3dd3b52b88d859d66bcb2d6a0acfd5ea68a65fb66d4bdc1c" +dependencies = [ + "env_logger", + "log", +] + +[[package]] +name = "prettyplease" +version = "0.2.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5316f57387668042f561aae71480de936257848f9c43ce528e311d89a07cadeb" +dependencies = [ + "proc-macro2", + "syn 2.0.100", +] + +[[package]] +name = "proc-macro-crate" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" +dependencies = [ + "once_cell", + "toml_edit", +] + +[[package]] +name = "proc-macro-error" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +dependencies = [ + "proc-macro-error-attr", + "proc-macro2", + "quote", + "syn 1.0.109", + "version_check", +] + +[[package]] +name = "proc-macro-error-attr" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +dependencies = [ + "proc-macro2", + "quote", + "version_check", +] + +[[package]] +name = "proc-macro2" +version = "1.0.94" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a31971752e70b8b2686d7e46ec17fb38dad4051d94024c88df49b667caea9c84" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "prokio" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03b55e106e5791fa5a13abd13c85d6127312e8e09098059ca2bc9b03ca4cf488" +dependencies = [ + "futures", + "gloo 0.8.1", + "num_cpus", + "once_cell", + "pin-project", + "pinned", + "tokio", + "tokio-stream", + "wasm-bindgen-futures", +] + +[[package]] +name = "quote" +version = "1.0.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "r-efi" +version = "5.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74765f6d916ee2faa39bc8e68e4f3ed8949b48cccdac59983d287a7cb71ce9c5" + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha 0.3.1", + "rand_core 0.6.4", +] + +[[package]] +name = "rand" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3779b94aeb87e8bd4e834cee3650289ee9e0d5677f976ecdb6d219e5f4f6cd94" +dependencies = [ + "rand_chacha 0.9.0", + "rand_core 0.9.3", + "zerocopy", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_chacha" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" +dependencies = [ + "ppv-lite86", + "rand_core 0.9.3", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom 0.2.15", +] + +[[package]] +name = "rand_core" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" +dependencies = [ + "getrandom 0.3.2", +] + +[[package]] +name = "redox_syscall" +version = "0.5.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b8c0c260b63a8219631167be35e6a988e9554dbd323f8bd08439c8ed1302bd1" +dependencies = [ + "bitflags", +] + +[[package]] +name = "regex" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" + +[[package]] +name = "route-recognizer" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "afab94fb28594581f62d981211a9a4d53cc8130bbcbbb89a0440d9b8e81a7746" + +[[package]] +name = "rustc-demangle" +version = "0.1.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" + +[[package]] +name = "rustversion" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eded382c5f5f786b989652c49544c4877d9f015cc22e145a5ea8ea66c2921cd2" + +[[package]] +name = "ryu" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "scratchpad" +version = "0.1.0" +dependencies = [ + "log", + "thiserror 2.0.12", +] + +[[package]] +name = "serde" +version = "1.0.219" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde-wasm-bindgen" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3b143e2833c57ab9ad3ea280d21fd34e285a42837aeb0ee301f4f41890fa00e" +dependencies = [ + "js-sys", + "serde", + "wasm-bindgen", +] + +[[package]] +name = "serde-wasm-bindgen" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8302e169f0eddcc139c70f139d19d6467353af16f9fce27e8c30158036a1e16b" +dependencies = [ + "js-sys", + "serde", + "wasm-bindgen", +] + +[[package]] +name = "serde_derive" +version = "1.0.219" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", +] + +[[package]] +name = "serde_json" +version = "1.0.140" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373" +dependencies = [ + "itoa", + "memchr", + "ryu", + "serde", +] + +[[package]] +name = "serde_path_to_error" +version = "0.1.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59fab13f937fa393d08645bf3a84bdfe86e296747b506ada67bb15f10f218b2a" +dependencies = [ + "itoa", + "serde", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "sha1" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "signal-hook-registry" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" +dependencies = [ + "libc", +] + +[[package]] +name = "slab" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" +dependencies = [ + "autocfg", +] + +[[package]] +name = "smallvec" +version = "1.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fcf8323ef1faaee30a44a340193b1ac6814fd9b7b4e88e9d4519a3e4abe1cfd" + +[[package]] +name = "socket2" +version = "0.5.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f5fd57c80058a56cf5c777ab8a126398ece8e442983605d280a44ce79d0edef" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "stable_deref_trait" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b09a44accad81e1ba1cd74a32461ba89dee89095ba17b32f5d03683b1b1fc2a0" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "sync_wrapper" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" + +[[package]] +name = "synstructure" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", +] + +[[package]] +name = "termcolor" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "thiserror" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" +dependencies = [ + "thiserror-impl 1.0.69", +] + +[[package]] +name = "thiserror" +version = "2.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "567b8a2dae586314f7be2a752ec7474332959c6460e02bde30d702a66d488708" +dependencies = [ + "thiserror-impl 2.0.12", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", +] + +[[package]] +name = "thiserror-impl" +version = "2.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", +] + +[[package]] +name = "tinystr" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f" +dependencies = [ + "displaydoc", + "zerovec", +] + +[[package]] +name = "tokio" +version = "1.44.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f382da615b842244d4b8738c82ed1275e6c5dd90c459a30941cd07080b06c91a" +dependencies = [ + "backtrace", + "bytes", + "libc", + "mio", + "parking_lot", + "pin-project-lite", + "signal-hook-registry", + "socket2", + "tokio-macros", + "windows-sys 0.52.0", +] + +[[package]] +name = "tokio-macros" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", +] + +[[package]] +name = "tokio-stream" +version = "0.1.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eca58d7bba4a75707817a2c44174253f9236b2d5fbd055602e9d5c07c139a047" +dependencies = [ + "futures-core", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "tokio-tungstenite" +version = "0.26.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a9daff607c6d2bf6c16fd681ccb7eecc83e4e2cdc1ca067ffaadfca5de7f084" +dependencies = [ + "futures-util", + "log", + "tokio", + "tungstenite", +] + +[[package]] +name = "toml_datetime" +version = "0.6.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" + +[[package]] +name = "toml_edit" +version = "0.19.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" +dependencies = [ + "indexmap", + "toml_datetime", + "winnow", +] + +[[package]] +name = "tower" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9" +dependencies = [ + "futures-core", + "futures-util", + "pin-project-lite", + "sync_wrapper", + "tokio", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "tower-layer" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" + +[[package]] +name = "tower-service" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" + +[[package]] +name = "tracing" +version = "0.1.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" +dependencies = [ + "log", + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", +] + +[[package]] +name = "tracing-core" +version = "0.1.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" +dependencies = [ + "once_cell", +] + +[[package]] +name = "tungstenite" +version = "0.26.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4793cb5e56680ecbb1d843515b23b6de9a75eb04b66643e256a396d43be33c13" +dependencies = [ + "bytes", + "data-encoding", + "http 1.3.1", + "httparse", + "log", + "rand 0.9.0", + "sha1", + "thiserror 2.0.12", + "utf-8", +] + +[[package]] +name = "typenum" +version = "1.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" + +[[package]] +name = "unicode-ident" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" + +[[package]] +name = "url" +version = "2.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", +] + +[[package]] +name = "urlencoding" +version = "2.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da" + +[[package]] +name = "utf-8" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" + +[[package]] +name = "utf16_iter" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246" + +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "wasi" +version = "0.14.2+wasi-0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3" +dependencies = [ + "wit-bindgen-rt", +] + +[[package]] +name = "wasm-bindgen" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" +dependencies = [ + "cfg-if", + "once_cell", + "rustversion", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" +dependencies = [ + "bumpalo", + "log", + "proc-macro2", + "quote", + "syn 2.0.100", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.50" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61" +dependencies = [ + "cfg-if", + "js-sys", + "once_cell", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "wasm-logger" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "074649a66bb306c8f2068c9016395fa65d8e08d2affcbf95acf3c24c3ab19718" +dependencies = [ + "log", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "web-sys" +version = "0.3.77" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "winapi-util" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" +dependencies = [ + "windows-sys 0.59.0", +] + +[[package]] +name = "windows-core" +version = "0.61.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4763c1de310c86d75a878046489e2e5ba02c649d185f21c67d4cf8a56d098980" +dependencies = [ + "windows-implement", + "windows-interface", + "windows-link", + "windows-result", + "windows-strings", +] + +[[package]] +name = "windows-implement" +version = "0.60.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a47fddd13af08290e67f4acabf4b459f647552718f683a7b415d290ac744a836" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", +] + +[[package]] +name = "windows-interface" +version = "0.59.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd9211b69f8dcdfa817bfd14bf1c97c9188afa36f4750130fcdf3f400eca9fa8" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", +] + +[[package]] +name = "windows-link" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76840935b766e1b0a05c0066835fb9ec80071d4c09a16f6bd5f7e655e3c14c38" + +[[package]] +name = "windows-result" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c64fd11a4fd95df68efcfee5f44a294fe71b8bc6a91993e2791938abcc712252" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-strings" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a2ba9642430ee452d5a7aa78d72907ebe8cfda358e8cb7918a2050581322f97" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_gnullvm", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +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 = "wit-bindgen-rt" +version = "0.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" +dependencies = [ + "bitflags", +] + +[[package]] +name = "write16" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936" + +[[package]] +name = "writeable" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" + +[[package]] +name = "yew" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f1a03f255c70c7aa3e9c62e15292f142ede0564123543c1cc0c7a4f31660cac" +dependencies = [ + "console_error_panic_hook", + "futures", + "gloo 0.10.0", + "implicit-clone", + "indexmap", + "js-sys", + "prokio", + "rustversion", + "serde", + "slab", + "thiserror 1.0.69", + "tokio", + "tracing", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "yew-macro", +] + +[[package]] +name = "yew-macro" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02fd8ca5166d69e59f796500a2ce432ff751edecbbb308ca59fd3fe4d0343de2" +dependencies = [ + "boolinator", + "once_cell", + "prettyplease", + "proc-macro-error", + "proc-macro2", + "quote", + "syn 2.0.100", +] + +[[package]] +name = "yew-router" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ca1d5052c96e6762b4d6209a8aded597758d442e6c479995faf0c7b5538e0c6" +dependencies = [ + "gloo 0.10.0", + "js-sys", + "route-recognizer", + "serde", + "serde_urlencoded", + "tracing", + "urlencoding", + "wasm-bindgen", + "web-sys", + "yew", + "yew-router-macro", +] + +[[package]] +name = "yew-router-macro" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42bfd190a07ca8cfde7cd4c52b3ac463803dc07323db8c34daa697e86365978c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", +] + +[[package]] +name = "yoke" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "120e6aef9aa629e3d4f52dc8cc43a015c7724194c97dfaf45180d2daf2b77f40" +dependencies = [ + "serde", + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", + "synstructure", +] + +[[package]] +name = "zerocopy" +version = "0.8.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2586fea28e186957ef732a5f8b3be2da217d65c5969d4b1e17f973ebbe876879" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.8.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a996a8f63c5c4448cd959ac1bab0aaa3306ccfd060472f85943ee0750f0169be" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", +] + +[[package]] +name = "zerofrom" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", + "synstructure", +] + +[[package]] +name = "zerovec" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa2b893d79df23bfb12d5461018d408ea19dfafe76c2c7ef6d4eba614f8ff079" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", +] diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000..22d1dce --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,3 @@ +[workspace] +resolver = "3" +members = ["blog", "blog-macros", "scratchpad", "blog-server"] diff --git a/blog-macros/Cargo.toml b/blog-macros/Cargo.toml new file mode 100644 index 0000000..165a0f3 --- /dev/null +++ b/blog-macros/Cargo.toml @@ -0,0 +1,12 @@ +[package] +name = "blog-macros" +version = "0.1.0" +edition = "2024" + +[lib] +proc-macro = true + +[dependencies] +proc-macro2 = "1" +quote = "1" +syn = { version = "2", features = ["full", "extra-traits"] } diff --git a/blog-macros/src/lib.rs b/blog-macros/src/lib.rs new file mode 100644 index 0000000..6ef8e2f --- /dev/null +++ b/blog-macros/src/lib.rs @@ -0,0 +1,238 @@ +use core::error::Error; +use std::{ + fs::File, + io::{self, Read}, + path::{Path, PathBuf}, +}; + +use proc_macro2::Span; +use quote::{ToTokens, quote}; +use syn::{parse::Parse, parse_macro_input}; + +struct IncludePath { + dir_path: PathBuf, + modules: Vec, +} + +fn display_err(span: Span, err: impl Error) -> syn::Error { + syn::Error::new(span, err.to_string().as_str()) +} + +fn read_modules(span: Span, path: &Path) -> syn::Result> { + let read_dir = std::fs::read_dir(path).map_err(|err| display_err(span, err))?; + + Ok(read_dir + .map(|file| file.map_err(|err| display_err(span, err))) + .collect::, _>>()? + .into_iter() + .filter(|file| file.file_type().map(|ft| ft.is_file()).unwrap_or_default()) + .filter_map(|file| { + file.file_name() + .to_string_lossy() + .strip_suffix(".rs") + .map(|f| f.to_string()) + }) + .map(|module_name| syn::Ident::new(&module_name, span)) + .collect::>()) +} + +impl Parse for IncludePath { + fn parse(input: syn::parse::ParseStream) -> syn::Result { + let directory = input.parse::()?; + + let dir_path = std::env::current_dir() + .unwrap() + .join(directory.value()) + .to_path_buf(); + + let modules = read_modules(directory.span(), &dir_path)?; + + Ok(Self { modules, dir_path }) + } +} +impl IncludePath { + fn posts_tokens(&self) -> proc_macro2::TokenStream { + let mod_decl = self.modules.iter().map(|module| { + let path = self.dir_path.join(format!("{module}.rs")); + let path = path.to_str().unwrap(); + quote! { + mod #module { + include!(#path); + }} + }); + let posts = self.modules.iter().map(|module| { + quote! { + #module::POST + } + }); + + quote! { + #(#mod_decl)* + + pub const POSTS: &[Post] = &[#(#posts),*]; + } + } + fn normal_tokens(&self) -> proc_macro2::TokenStream { + let mod_decl = self.modules.iter().map(|module| { + quote! {mod #module;} + }); + let pub_use = self.modules.iter().map(|module| { + quote! { + #module::* + } + }); + + quote! { + #(#mod_decl)* + pub use {#(#pub_use),*}; + } + } +} +enum IncludeOutput { + Normal(IncludePath), + Posts(IncludePath), +} + +impl ToTokens for IncludeOutput { + fn to_tokens(&self, tokens: &mut proc_macro2::TokenStream) { + tokens.extend(match self { + IncludeOutput::Normal(include_path) => include_path.normal_tokens(), + IncludeOutput::Posts(include_path) => include_path.posts_tokens(), + }); + } +} + +#[proc_macro] +pub fn posts(input: proc_macro::TokenStream) -> proc_macro::TokenStream { + let pubuse = IncludeOutput::Posts(parse_macro_input!(input as IncludePath)); + quote! {#pubuse}.into() +} + +#[proc_macro] +pub fn include_path(input: proc_macro::TokenStream) -> proc_macro::TokenStream { + let incl_path = IncludeOutput::Normal(parse_macro_input!(input as IncludePath)); + quote! {#incl_path}.into() +} + +struct FileWithPath { + // bytes: Vec, + include: proc_macro2::TokenStream, + rel_path: String, +} +impl FileWithPath { + fn from_path(path: impl AsRef, origin_path: impl AsRef) -> Result { + let abs_path = path + .as_ref() + .canonicalize() + .ok() + .and_then(|p| p.to_str().map(|t| t.to_string())) + .ok_or(io::Error::new(io::ErrorKind::InvalidData, "invalid path"))?; + let include = quote! { + include_bytes!(#abs_path) + }; + let origin_abs = origin_path.as_ref().canonicalize().and_then(|p| { + p.to_str() + .ok_or(io::Error::new(io::ErrorKind::InvalidData, "invalid path")) + .map(|t| t.to_string()) + })?; + let rel_path = abs_path.replace(&origin_abs, ""); + + Ok(Self { include, rel_path }) + } +} + +fn find_matching_files_recursive( + p: P, + include_in_rerun: F, + directory_filter: D, + out: &mut Vec, + origin_path: &PathBuf, +) -> Result<(), io::Error> +where + P: AsRef, + F: Fn(&str) -> bool + Copy, + D: Fn(&str) -> bool + Copy, +{ + for item in std::fs::read_dir(p.as_ref())? { + let item = item?; + if item.file_type()?.is_dir() { + if directory_filter(item.file_name().to_str().ok_or(io::Error::new( + io::ErrorKind::InvalidData, + "file has no name", + ))?) { + find_matching_files_recursive( + item.path(), + include_in_rerun, + directory_filter, + out, + origin_path, + )?; + } + continue; + } + if let Some(file_name) = item.file_name().to_str() { + if include_in_rerun(file_name) { + out.push(FileWithPath::from_path(item.path(), origin_path)?); + } + } + } + + Ok(()) +} + +struct IncludeDist { + name: syn::Ident, + files: Vec, +} + +impl IncludeDist { + fn read_dist_path( + name: syn::Ident, + path_span: Span, + path: &Path, + origin_path: &PathBuf, + ) -> syn::Result { + let mut files = Vec::new(); + find_matching_files_recursive(path, |_| true, |_| true, &mut files, origin_path) + .map_err(|err| syn::Error::new(path_span, err.to_string()))?; + Ok(Self { name, files }) + } +} + +impl Parse for IncludeDist { + fn parse(input: syn::parse::ParseStream) -> syn::Result { + let name = input.parse::()?; + input.parse::()?; + let directory = input.parse::()?; + + let dir_path = std::env::current_dir() + .unwrap() + .join(directory.value()) + .to_path_buf(); + + Self::read_dist_path(name, directory.span(), &dir_path, &dir_path) + } +} + +impl ToTokens for IncludeDist { + fn to_tokens(&self, tokens: &mut proc_macro2::TokenStream) { + // std::collections::HashMap + let array_contents = self.files.iter().map(|file| { + let FileWithPath { include, rel_path } = file; + + quote! { + (#rel_path, #include) + } + }); + let name = &self.name; + tokens.extend(quote! { + pub const #name: &[(&'static str, &'static [u8])] = &[#(#array_contents),*]; + }); + } +} + +#[proc_macro] +pub fn include_dist(input: proc_macro::TokenStream) -> proc_macro::TokenStream { + let incl_dist = parse_macro_input!(input as IncludeDist); + quote! {#incl_dist}.into() +} diff --git a/blog-server/Cargo.toml b/blog-server/Cargo.toml new file mode 100644 index 0000000..1b577ce --- /dev/null +++ b/blog-server/Cargo.toml @@ -0,0 +1,17 @@ +[package] +name = "blog-server" +version = "0.1.0" +edition = "2024" + +[dependencies] +axum = { version = "0.8", features = ["ws"] } +tokio = { version = "1.44", features = ["full"] } +log = { version = "0.4" } +pretty_env_logger = { version = "0.5" } +futures = "0.3.31" +anyhow = { version = "1" } +scratchpad = { path = "../scratchpad" } +# tower-http = { version = "0.6", features = ["fs"] } +# tower-service = "0.3.3" +blog-macros = { path = "../blog-macros" } +mime-sniffer = { version = "0.1" } diff --git a/blog-server/pkg/blog.service b/blog-server/pkg/blog.service new file mode 100644 index 0000000..e2b0076 --- /dev/null +++ b/blog-server/pkg/blog.service @@ -0,0 +1,19 @@ +[Unit] +Description=blog +After=network.target + +[Service] +Type=simple + +User=blog +Group=blog + +WorkingDirectory=/home/blog +Environment=RUST_LOG=info +Environment=PORT=3024 +ExecStart=/home/blog/blog-server + +Restart=always + +[Install] +WantedBy=multi-user.target diff --git a/blog-server/src/game.rs b/blog-server/src/game.rs new file mode 100644 index 0000000..d06a7d8 --- /dev/null +++ b/blog-server/src/game.rs @@ -0,0 +1,49 @@ +use std::sync::Arc; + +use scratchpad::game::{GameError, GameState, TileType}; +use tokio::sync::broadcast::Sender; + +pub struct GameStateSender { + game_state: GameState, + sender: Option>>, +} + +impl GameStateSender { + pub const fn new() -> Self { + Self { + game_state: GameState::blank(), + sender: None, + } + } + + pub fn set_sender(&mut self, sender: Sender>) { + self.sender.replace(sender); + } + + pub fn get_board_values(&self) -> scratchpad::game::BoardValues { + self.game_state.get_board_values() + } + + pub fn replace_game_state(&mut self, bytes: &[u8]) -> Result<(), GameError> { + self.game_state.replace_game_state(bytes) + } + + pub async fn set_tile(&mut self, row: u32, col: u32, value: TileType) -> Result<(), GameError> { + self.game_state.set_tile(row, col, value)?; + let sender = match self.sender.as_ref() { + Some(s) => s, + None => return Ok(()), + }; + let new_state = self + .game_state + .get_board_values() + .iter() + .flat_map(|tiles| tiles.iter()) + .copied() + .collect::>(); + if let Err(err) = sender.send(new_state) { + log::error!("sending from set_tile: {err}"); + } + Ok(()) + } +} diff --git a/blog-server/src/main.rs b/blog-server/src/main.rs new file mode 100644 index 0000000..503094a --- /dev/null +++ b/blog-server/src/main.rs @@ -0,0 +1,282 @@ +mod game; + +use axum::{ + Router, + body::Bytes, + extract::{ + ConnectInfo, State, + ws::{Message, WebSocket, WebSocketUpgrade}, + }, + http::{Request, header}, + response::IntoResponse, + routing::{any, get}, +}; +use core::{net::SocketAddr, str::FromStr}; +use futures::{FutureExt, TryFutureExt}; +use game::GameStateSender; +use scratchpad::{ServerMessage, game::TileType}; +use std::{env, io::ErrorKind, sync::Arc}; +use tokio::{ + io::{AsyncReadExt, AsyncWriteExt}, + sync::{ + Mutex, + broadcast::{Receiver, error::RecvError}, + }, +}; + +static GAME_STATE: Mutex = Mutex::const_new(GameStateSender::new()); + +struct AppState { + recv: Receiver>, +} +impl Clone for AppState { + fn clone(&self) -> Self { + Self { + recv: self.recv.resubscribe(), + } + } +} + +const DEFAULT_PORT: u16 = 8080; +const DEFAULT_HOST: &str = "127.0.0.1"; +const GAME_STATE_SAVE_FILE_NAME: &str = "/tmp/scratchpad.state"; + +async fn game_saver(mut recv: Receiver>) { + loop { + let board = match recv.recv().await { + Ok(board) => board, + Err(RecvError::Closed) => { + panic!("save channel closed") + } + Err(err) => { + log::error!("game_saver: {err}"); + continue; + } + }; + + let mut save_file = match tokio::fs::File::create(GAME_STATE_SAVE_FILE_NAME).await { + Ok(file) => file, + Err(err) => { + log::error!("opening save file: {err}"); + continue; + } + }; + let board_bytes = board.iter().map(|t| *t as u8).collect::>(); + if let Err(err) = save_file.write_all(&board_bytes).await { + core::mem::drop(save_file); + log::error!("writing save file: {err}"); + continue; + } + if let Err(err) = save_file.flush().await { + core::mem::drop(save_file); + log::error!("flushing save file: {err}"); + continue; + } + core::mem::drop(save_file); + } +} + +async fn restore_game_save_or_give_up() { + let mut game_save = Vec::new(); + let save_ref = game_save.as_mut(); + + let save_slice = match tokio::fs::File::open(GAME_STATE_SAVE_FILE_NAME) + .and_then(|mut f| async move { f.read_to_end(save_ref).await }) + .await + { + Ok(read) => &game_save[..read], + Err(err) => { + log::error!("loading game save: {err}; using blank game state"); + return; + } + }; + + if let Err(err) = GAME_STATE.lock().await.replace_game_state(save_slice) { + log::error!("restoring game save: {err}; using blank game state") + } +} + +#[tokio::main] +async fn main() { + pretty_env_logger::init(); + + let (sender, recv) = tokio::sync::broadcast::channel::>(512); + restore_game_save_or_give_up().await; + GAME_STATE.lock().await.set_sender(sender); + let recv_saver = recv.resubscribe(); + let saver_handle = tokio::spawn(async move { game_saver(recv_saver).await }); + + let host = env::var("HOST").unwrap_or(DEFAULT_HOST.to_string()); + let port = env::var("PORT") + .map_err(|err| anyhow::anyhow!("{err}")) + .map(|port_str| { + port_str + .parse::() + .unwrap_or_else(|err| panic!("parse PORT={port_str} failed: {err}")) + }) + .unwrap_or(DEFAULT_PORT); + let listen_addr = + SocketAddr::from_str(format!("{host}:{port}").as_str()).expect("invalid host/port"); + + let state = AppState { recv }; + + let app = Router::new() + .route("/scratchpad", any(ws_handler)) + .with_state(state) + .fallback(get(handle_http_static)); + let listener = tokio::net::TcpListener::bind(listen_addr).await.unwrap(); + log::info!("listening on {}", listener.local_addr().unwrap()); + axum::serve( + listener, + app.into_make_service_with_connect_info::(), + ) + .await + .unwrap(); + saver_handle.await.unwrap(); +} + +async fn handle_http_static(req: Request) -> impl IntoResponse { + use mime_sniffer::MimeTypeSniffer; + const INDEX_FILE: &[u8] = include_bytes!("../../blog/dist/index.html"); + let path = req.uri().path(); + log::info!("path: {path}"); + + blog_macros::include_dist!(DIST_FILES, "blog/dist"); + + let file = if let Some(file) = DIST_FILES.iter().find_map(|(file_path, file)| { + if *file_path == path { + Some(*file) + } else { + None + } + }) { + file + } else { + return ( + [(header::CONTENT_TYPE, "text/html".to_string())], + INDEX_FILE, + ); + }; + + let mime = if path.ends_with(".js") { + "text/javascript".to_string() + } else if path.ends_with(".css") { + "text/css".to_string() + } else if path.ends_with(".wasm") { + "application/wasm".to_string() + } else { + file.sniff_mime_type() + .unwrap_or("application/octet-stream") + .to_string() + }; + + ([(header::CONTENT_TYPE, mime)], file) +} + +async fn ws_handler( + ws: WebSocketUpgrade, + ConnectInfo(addr): ConnectInfo, + State(state): State, +) -> impl IntoResponse { + log::info!("{addr} connected."); + // finalize the upgrade process by returning upgrade callback. + // we can customize the callback by sending additional info such as address. + ws.on_upgrade(move |socket| handle_socket(socket, addr, state.clone().recv)) +} + +async fn on_recv( + socket: &mut WebSocket, + msg: Option>, +) -> Result<(), anyhow::Error> { + let msg = match msg { + Some(Ok(msg)) => msg, + Some(Err(err)) => return Err(err.into()), + + None => { + log::info!("no message"); + return Ok(()); + } + }; + let bytes = match msg { + Message::Binary(bytes) => bytes, + Message::Text(_) => return Err(anyhow::anyhow!("text")), + Message::Ping(_) => return Err(anyhow::anyhow!("ping")), + Message::Pong(_) => return Err(anyhow::anyhow!("pong")), + Message::Close(close_frame) => { + return Err(anyhow::anyhow!("sent close frame: {close_frame:?}")); + } + }; + if bytes.is_empty() { + return Err(anyhow::anyhow!("got an empty bytes message")); + } + let bytes = bytes.iter().as_slice(); + let msg_type = scratchpad::ClientMessageType::try_from(bytes[0])?; + log::info!("got message type: {msg_type:?}"); + let message = msg_type.try_parse_message(&bytes[1..])?; + match message { + scratchpad::ClientMessage::GetBoard => { + let response: Vec = + ServerMessage::StateUpdate(GAME_STATE.lock().await.get_board_values()).into(); + socket + .send(Message::Binary(Bytes::from_owner(response))) + .await?; + } + scratchpad::ClientMessage::SendMove(send_move) => { + let new_board_state_message: Vec = ServerMessage::StateUpdate({ + let mut state = GAME_STATE.lock().await; + state + .set_tile(send_move.row, send_move.col, send_move.value) + .await?; + state.get_board_values() + }) + .into(); + socket + .send(Message::Binary(Bytes::from_owner(new_board_state_message))) + .await?; + } + } + + Ok(()) +} + +async fn on_state_update( + socket: &mut WebSocket, + state: Result, RecvError>, +) -> Result<(), anyhow::Error> { + let state = match state { + Ok(state) => state, + Err(err) => { + log::error!("recv error: {err}"); + return Ok(()); + } + }; + let mut out_bytes = Vec::new(); + out_bytes.push(scratchpad::ServerMessageType::StateUpdate as u8); + out_bytes.extend(state.iter().map(|t| *t as u8)); + socket + .send(Message::Binary(Bytes::from_owner(out_bytes))) + .await?; + Ok(()) +} + +async fn handle_socket( + mut socket: WebSocket, + who: SocketAddr, + mut recv: Receiver>, +) { + loop { + if let Err(err) = tokio::select! { + msg = socket.recv() => { + log::info!("socket.recv"); + on_recv(&mut socket, msg).await + }, + r = recv.recv() => { + log::info!("state update"); + on_state_update(&mut socket, r).await + } + } { + log::error!("[{who}] {err}"); + return; + } + } +} diff --git a/blog/Cargo.lock b/blog/Cargo.lock new file mode 100644 index 0000000..97dfc3b --- /dev/null +++ b/blog/Cargo.lock @@ -0,0 +1,1572 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "addr2line" +version = "0.24.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" +dependencies = [ + "gimli", +] + +[[package]] +name = "adler2" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" + +[[package]] +name = "android-tzdata" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" + +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + +[[package]] +name = "anymap2" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d301b3b94cb4b2f23d7917810addbbaff90738e0ca2be692bd027e70d7e0330c" + +[[package]] +name = "autocfg" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" + +[[package]] +name = "backtrace" +version = "0.3.74" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" +dependencies = [ + "addr2line", + "cfg-if", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", + "windows-targets", +] + +[[package]] +name = "bincode" +version = "1.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" +dependencies = [ + "serde", +] + +[[package]] +name = "blog-rs" +version = "0.1.0" +dependencies = [ + "chrono", + "gloo 0.11.0", + "instant", + "lipsum", + "log", + "once_cell", + "rand", + "serde", + "wasm-logger", + "web-sys", + "yew", + "yew-router", +] + +[[package]] +name = "boolinator" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfa8873f51c92e232f9bac4065cddef41b714152812bfc5f7672ba16d6ef8cd9" + +[[package]] +name = "bumpalo" +version = "3.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1628fb46dfa0b37568d12e5edd512553eccf6a22a78e8bde00bb4aed84d5bdbf" + +[[package]] +name = "bytes" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" + +[[package]] +name = "cc" +version = "1.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fcb57c740ae1daf453ae85f16e37396f672b039e00d9d866e07ddb24e328e3a" +dependencies = [ + "shlex", +] + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "chrono" +version = "0.4.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a7964611d71df112cb1730f2ee67324fcf4d0fc6606acbbe9bfe06df124637c" +dependencies = [ + "android-tzdata", + "iana-time-zone", + "js-sys", + "num-traits", + "wasm-bindgen", + "windows-link", +] + +[[package]] +name = "console_error_panic_hook" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a06aeb73f470f66dcdbf7223caeebb85984942f22f1adb2a088cf9668146bbbc" +dependencies = [ + "cfg-if", + "wasm-bindgen", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" + +[[package]] +name = "equivalent" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "form_urlencoded" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "futures" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" + +[[package]] +name = "futures-io" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" + +[[package]] +name = "futures-macro" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", +] + +[[package]] +name = "futures-sink" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" + +[[package]] +name = "futures-task" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" + +[[package]] +name = "futures-util" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "getrandom" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "wasi", + "wasm-bindgen", +] + +[[package]] +name = "gimli" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" + +[[package]] +name = "gloo" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28999cda5ef6916ffd33fb4a7b87e1de633c47c0dc6d97905fee1cdaa142b94d" +dependencies = [ + "gloo-console 0.2.3", + "gloo-dialogs 0.1.1", + "gloo-events 0.1.2", + "gloo-file 0.2.3", + "gloo-history 0.1.5", + "gloo-net 0.3.1", + "gloo-render 0.1.1", + "gloo-storage 0.2.2", + "gloo-timers 0.2.6", + "gloo-utils 0.1.7", + "gloo-worker 0.2.1", +] + +[[package]] +name = "gloo" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd35526c28cc55c1db77aed6296de58677dbab863b118483a27845631d870249" +dependencies = [ + "gloo-console 0.3.0", + "gloo-dialogs 0.2.0", + "gloo-events 0.2.0", + "gloo-file 0.3.0", + "gloo-history 0.2.2", + "gloo-net 0.4.0", + "gloo-render 0.2.0", + "gloo-storage 0.3.0", + "gloo-timers 0.3.0", + "gloo-utils 0.2.0", + "gloo-worker 0.4.0", +] + +[[package]] +name = "gloo" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d15282ece24eaf4bd338d73ef580c6714c8615155c4190c781290ee3fa0fd372" +dependencies = [ + "gloo-console 0.3.0", + "gloo-dialogs 0.2.0", + "gloo-events 0.2.0", + "gloo-file 0.3.0", + "gloo-history 0.2.2", + "gloo-net 0.5.0", + "gloo-render 0.2.0", + "gloo-storage 0.3.0", + "gloo-timers 0.3.0", + "gloo-utils 0.2.0", + "gloo-worker 0.5.0", +] + +[[package]] +name = "gloo-console" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82b7ce3c05debe147233596904981848862b068862e9ec3e34be446077190d3f" +dependencies = [ + "gloo-utils 0.1.7", + "js-sys", + "serde", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "gloo-console" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a17868f56b4a24f677b17c8cb69958385102fa879418052d60b50bc1727e261" +dependencies = [ + "gloo-utils 0.2.0", + "js-sys", + "serde", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "gloo-dialogs" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67062364ac72d27f08445a46cab428188e2e224ec9e37efdba48ae8c289002e6" +dependencies = [ + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "gloo-dialogs" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf4748e10122b01435750ff530095b1217cf6546173459448b83913ebe7815df" +dependencies = [ + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "gloo-events" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68b107f8abed8105e4182de63845afcc7b69c098b7852a813ea7462a320992fc" +dependencies = [ + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "gloo-events" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27c26fb45f7c385ba980f5fa87ac677e363949e065a083722697ef1b2cc91e41" +dependencies = [ + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "gloo-file" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8d5564e570a38b43d78bdc063374a0c3098c4f0d64005b12f9bbe87e869b6d7" +dependencies = [ + "gloo-events 0.1.2", + "js-sys", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "gloo-file" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97563d71863fb2824b2e974e754a81d19c4a7ec47b09ced8a0e6656b6d54bd1f" +dependencies = [ + "futures-channel", + "gloo-events 0.2.0", + "js-sys", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "gloo-history" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85725d90bf0ed47063b3930ef28e863658a7905989e9929a8708aab74a1d5e7f" +dependencies = [ + "gloo-events 0.1.2", + "gloo-utils 0.1.7", + "serde", + "serde-wasm-bindgen 0.5.0", + "serde_urlencoded", + "thiserror", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "gloo-history" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "903f432be5ba34427eac5e16048ef65604a82061fe93789f2212afc73d8617d6" +dependencies = [ + "getrandom", + "gloo-events 0.2.0", + "gloo-utils 0.2.0", + "serde", + "serde-wasm-bindgen 0.6.5", + "serde_urlencoded", + "thiserror", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "gloo-net" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a66b4e3c7d9ed8d315fd6b97c8b1f74a7c6ecbbc2320e65ae7ed38b7068cc620" +dependencies = [ + "futures-channel", + "futures-core", + "futures-sink", + "gloo-utils 0.1.7", + "http", + "js-sys", + "pin-project", + "serde", + "serde_json", + "thiserror", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "gloo-net" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ac9e8288ae2c632fa9f8657ac70bfe38a1530f345282d7ba66a1f70b72b7dc4" +dependencies = [ + "futures-channel", + "futures-core", + "futures-sink", + "gloo-utils 0.2.0", + "http", + "js-sys", + "pin-project", + "serde", + "serde_json", + "thiserror", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "gloo-net" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43aaa242d1239a8822c15c645f02166398da4f8b5c4bae795c1f5b44e9eee173" +dependencies = [ + "futures-channel", + "futures-core", + "futures-sink", + "gloo-utils 0.2.0", + "http", + "js-sys", + "pin-project", + "serde", + "serde_json", + "thiserror", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "gloo-render" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fd9306aef67cfd4449823aadcd14e3958e0800aa2183955a309112a84ec7764" +dependencies = [ + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "gloo-render" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56008b6744713a8e8d98ac3dcb7d06543d5662358c9c805b4ce2167ad4649833" +dependencies = [ + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "gloo-storage" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d6ab60bf5dbfd6f0ed1f7843da31b41010515c745735c970e821945ca91e480" +dependencies = [ + "gloo-utils 0.1.7", + "js-sys", + "serde", + "serde_json", + "thiserror", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "gloo-storage" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbc8031e8c92758af912f9bc08fbbadd3c6f3cfcbf6b64cdf3d6a81f0139277a" +dependencies = [ + "gloo-utils 0.2.0", + "js-sys", + "serde", + "serde_json", + "thiserror", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "gloo-timers" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b995a66bb87bebce9a0f4a95aed01daca4872c050bfcb21653361c03bc35e5c" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "gloo-timers" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbb143cf96099802033e0d4f4963b19fd2e0b728bcf076cd9cf7f6634f092994" +dependencies = [ + "futures-channel", + "futures-core", + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "gloo-utils" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "037fcb07216cb3a30f7292bd0176b050b7b9a052ba830ef7d5d65f6dc64ba58e" +dependencies = [ + "js-sys", + "serde", + "serde_json", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "gloo-utils" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b5555354113b18c547c1d3a98fbf7fb32a9ff4f6fa112ce823a21641a0ba3aa" +dependencies = [ + "js-sys", + "serde", + "serde_json", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "gloo-worker" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13471584da78061a28306d1359dd0178d8d6fc1c7c80e5e35d27260346e0516a" +dependencies = [ + "anymap2", + "bincode", + "gloo-console 0.2.3", + "gloo-utils 0.1.7", + "js-sys", + "serde", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "gloo-worker" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76495d3dd87de51da268fa3a593da118ab43eb7f8809e17eb38d3319b424e400" +dependencies = [ + "bincode", + "futures", + "gloo-utils 0.2.0", + "gloo-worker-macros", + "js-sys", + "pinned", + "serde", + "thiserror", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "gloo-worker" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "085f262d7604911c8150162529cefab3782e91adb20202e8658f7275d2aefe5d" +dependencies = [ + "bincode", + "futures", + "gloo-utils 0.2.0", + "gloo-worker-macros", + "js-sys", + "pinned", + "serde", + "thiserror", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "gloo-worker-macros" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "956caa58d4857bc9941749d55e4bd3000032d8212762586fa5705632967140e7" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 2.0.100", +] + +[[package]] +name = "hashbrown" +version = "0.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" + +[[package]] +name = "hermit-abi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" + +[[package]] +name = "http" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "iana-time-zone" +version = "0.1.63" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0c919e5debc312ad217002b8048a17b7d83f80703865bbfcfebb0458b0b27d8" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "log", + "wasm-bindgen", + "windows-core", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + +[[package]] +name = "implicit-clone" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8a9aa791c7b5a71b636b7a68207fdebf171ddfc593d9c8506ec4cbc527b6a84" +dependencies = [ + "implicit-clone-derive", + "indexmap", +] + +[[package]] +name = "implicit-clone-derive" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "699c1b6d335e63d0ba5c1e1c7f647371ce989c3bcbe1f7ed2b85fa56e3bd1a21" +dependencies = [ + "quote", + "syn 2.0.100", +] + +[[package]] +name = "indexmap" +version = "2.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3954d50fe15b02142bf25d3b8bdadb634ec3948f103d04ffe3031bc8fe9d7058" +dependencies = [ + "equivalent", + "hashbrown", +] + +[[package]] +name = "instant" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" +dependencies = [ + "cfg-if", + "js-sys", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "itoa" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" + +[[package]] +name = "js-sys" +version = "0.3.77" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" +dependencies = [ + "once_cell", + "wasm-bindgen", +] + +[[package]] +name = "libc" +version = "0.2.171" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c19937216e9d3aa9956d9bb8dfc0b0c8beb6058fc4f7a4dc4d850edf86a237d6" + +[[package]] +name = "lipsum" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "636860251af8963cc40f6b4baadee105f02e21b28131d76eba8e40ce84ab8064" +dependencies = [ + "rand", + "rand_chacha", +] + +[[package]] +name = "log" +version = "0.4.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" + +[[package]] +name = "memchr" +version = "2.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" + +[[package]] +name = "miniz_oxide" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e3e04debbb59698c15bacbb6d93584a8c0ca9cc3213cb423d31f760d8843ce5" +dependencies = [ + "adler2", +] + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", +] + +[[package]] +name = "num_cpus" +version = "1.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" +dependencies = [ + "hermit-abi", + "libc", +] + +[[package]] +name = "object" +version = "0.36.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" +dependencies = [ + "memchr", +] + +[[package]] +name = "once_cell" +version = "1.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" + +[[package]] +name = "percent-encoding" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" + +[[package]] +name = "pin-project" +version = "1.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677f1add503faace112b9f1373e43e9e054bfdd22ff1a63c1bc485eaec6a6a8a" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "pinned" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a829027bd95e54cfe13e3e258a1ae7b645960553fb82b75ff852c29688ee595b" +dependencies = [ + "futures", + "rustversion", + "thiserror", +] + +[[package]] +name = "ppv-lite86" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" +dependencies = [ + "zerocopy", +] + +[[package]] +name = "prettyplease" +version = "0.2.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5316f57387668042f561aae71480de936257848f9c43ce528e311d89a07cadeb" +dependencies = [ + "proc-macro2", + "syn 2.0.100", +] + +[[package]] +name = "proc-macro-crate" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" +dependencies = [ + "once_cell", + "toml_edit", +] + +[[package]] +name = "proc-macro-error" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +dependencies = [ + "proc-macro-error-attr", + "proc-macro2", + "quote", + "syn 1.0.109", + "version_check", +] + +[[package]] +name = "proc-macro-error-attr" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +dependencies = [ + "proc-macro2", + "quote", + "version_check", +] + +[[package]] +name = "proc-macro2" +version = "1.0.94" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a31971752e70b8b2686d7e46ec17fb38dad4051d94024c88df49b667caea9c84" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "prokio" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03b55e106e5791fa5a13abd13c85d6127312e8e09098059ca2bc9b03ca4cf488" +dependencies = [ + "futures", + "gloo 0.8.1", + "num_cpus", + "once_cell", + "pin-project", + "pinned", + "tokio", + "tokio-stream", + "wasm-bindgen-futures", +] + +[[package]] +name = "quote" +version = "1.0.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha", + "rand_core", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom", +] + +[[package]] +name = "route-recognizer" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "afab94fb28594581f62d981211a9a4d53cc8130bbcbbb89a0440d9b8e81a7746" + +[[package]] +name = "rustc-demangle" +version = "0.1.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" + +[[package]] +name = "rustversion" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eded382c5f5f786b989652c49544c4877d9f015cc22e145a5ea8ea66c2921cd2" + +[[package]] +name = "ryu" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" + +[[package]] +name = "serde" +version = "1.0.219" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde-wasm-bindgen" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3b143e2833c57ab9ad3ea280d21fd34e285a42837aeb0ee301f4f41890fa00e" +dependencies = [ + "js-sys", + "serde", + "wasm-bindgen", +] + +[[package]] +name = "serde-wasm-bindgen" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8302e169f0eddcc139c70f139d19d6467353af16f9fce27e8c30158036a1e16b" +dependencies = [ + "js-sys", + "serde", + "wasm-bindgen", +] + +[[package]] +name = "serde_derive" +version = "1.0.219" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", +] + +[[package]] +name = "serde_json" +version = "1.0.140" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373" +dependencies = [ + "itoa", + "memchr", + "ryu", + "serde", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "slab" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" +dependencies = [ + "autocfg", +] + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b09a44accad81e1ba1cd74a32461ba89dee89095ba17b32f5d03683b1b1fc2a0" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "thiserror" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", +] + +[[package]] +name = "tokio" +version = "1.44.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f382da615b842244d4b8738c82ed1275e6c5dd90c459a30941cd07080b06c91a" +dependencies = [ + "backtrace", + "pin-project-lite", +] + +[[package]] +name = "tokio-stream" +version = "0.1.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eca58d7bba4a75707817a2c44174253f9236b2d5fbd055602e9d5c07c139a047" +dependencies = [ + "futures-core", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "toml_datetime" +version = "0.6.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" + +[[package]] +name = "toml_edit" +version = "0.19.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" +dependencies = [ + "indexmap", + "toml_datetime", + "winnow", +] + +[[package]] +name = "tracing" +version = "0.1.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" +dependencies = [ + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", +] + +[[package]] +name = "tracing-core" +version = "0.1.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" +dependencies = [ + "once_cell", +] + +[[package]] +name = "unicode-ident" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" + +[[package]] +name = "urlencoding" +version = "2.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da" + +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "wasm-bindgen" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" +dependencies = [ + "cfg-if", + "once_cell", + "rustversion", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" +dependencies = [ + "bumpalo", + "log", + "proc-macro2", + "quote", + "syn 2.0.100", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.50" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61" +dependencies = [ + "cfg-if", + "js-sys", + "once_cell", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "wasm-logger" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "074649a66bb306c8f2068c9016395fa65d8e08d2affcbf95acf3c24c3ab19718" +dependencies = [ + "log", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "web-sys" +version = "0.3.77" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "windows-core" +version = "0.61.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4763c1de310c86d75a878046489e2e5ba02c649d185f21c67d4cf8a56d098980" +dependencies = [ + "windows-implement", + "windows-interface", + "windows-link", + "windows-result", + "windows-strings", +] + +[[package]] +name = "windows-implement" +version = "0.60.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a47fddd13af08290e67f4acabf4b459f647552718f683a7b415d290ac744a836" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", +] + +[[package]] +name = "windows-interface" +version = "0.59.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd9211b69f8dcdfa817bfd14bf1c97c9188afa36f4750130fcdf3f400eca9fa8" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", +] + +[[package]] +name = "windows-link" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76840935b766e1b0a05c0066835fb9ec80071d4c09a16f6bd5f7e655e3c14c38" + +[[package]] +name = "windows-result" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c64fd11a4fd95df68efcfee5f44a294fe71b8bc6a91993e2791938abcc712252" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-strings" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a2ba9642430ee452d5a7aa78d72907ebe8cfda358e8cb7918a2050581322f97" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_gnullvm", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +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 = "yew" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f1a03f255c70c7aa3e9c62e15292f142ede0564123543c1cc0c7a4f31660cac" +dependencies = [ + "console_error_panic_hook", + "futures", + "gloo 0.10.0", + "implicit-clone", + "indexmap", + "js-sys", + "prokio", + "rustversion", + "serde", + "slab", + "thiserror", + "tokio", + "tracing", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "yew-macro", +] + +[[package]] +name = "yew-macro" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02fd8ca5166d69e59f796500a2ce432ff751edecbbb308ca59fd3fe4d0343de2" +dependencies = [ + "boolinator", + "once_cell", + "prettyplease", + "proc-macro-error", + "proc-macro2", + "quote", + "syn 2.0.100", +] + +[[package]] +name = "yew-router" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ca1d5052c96e6762b4d6209a8aded597758d442e6c479995faf0c7b5538e0c6" +dependencies = [ + "gloo 0.10.0", + "js-sys", + "route-recognizer", + "serde", + "serde_urlencoded", + "tracing", + "urlencoding", + "wasm-bindgen", + "web-sys", + "yew", + "yew-router-macro", +] + +[[package]] +name = "yew-router-macro" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42bfd190a07ca8cfde7cd4c52b3ac463803dc07323db8c34daa697e86365978c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", +] + +[[package]] +name = "zerocopy" +version = "0.8.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2586fea28e186957ef732a5f8b3be2da217d65c5969d4b1e17f973ebbe876879" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.8.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a996a8f63c5c4448cd959ac1bab0aaa3306ccfd060472f85943ee0750f0169be" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", +] diff --git a/blog/Cargo.toml b/blog/Cargo.toml new file mode 100644 index 0000000..008ec5e --- /dev/null +++ b/blog/Cargo.toml @@ -0,0 +1,29 @@ +[package] +name = "blog" +version = "0.1.0" +edition = "2021" + + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html +[dependencies] +web-sys = { version = "0.3", features = [ + "HtmlTableCellElement", + "Event", + "EventTarget", + "HtmlImageElement", + "HtmlDivElement", +] } +log = "0.4" +rand = { version = "0.8", features = ["small_rng"] } +yew = { version = "0.21", features = ["csr"] } +yew-router = "0.18.0" +serde = { version = "1.0", features = ["derive"] } +gloo = "0.11" +wasm-logger = "0.2" +instant = { version = "0.1", features = ["wasm-bindgen"] } +once_cell = "1" +chrono = "0.4.40" +blog-macros = { path = "../blog-macros" } +scratchpad = { path = "../scratchpad" } +futures = "0.3.31" +wasm-bindgen-futures = "0.4.50" diff --git a/blog/img/badges/bsky.png b/blog/img/badges/bsky.png new file mode 100644 index 0000000000000000000000000000000000000000..51c49a29f01b3d3dbfe1f63fa90b21b8e79936c6 GIT binary patch literal 2393 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 LNkvXXu0mjf!_I=+ literal 0 HcmV?d00001 diff --git a/blog/img/badges/bunny-animated.webp b/blog/img/badges/bunny-animated.webp new file mode 100644 index 0000000000000000000000000000000000000000..083fd4ced2acb861e1e8e855ac544dbc4056123f GIT binary patch literal 858 zcmV-g1Eu^@Nk&Fe0{{S5MM6+kP&il$0000I000120015U06|VkO$Gn}0RR90{{R3% zPEAG}0ssI20000009OD29smIP00073P&iBj0ssInSAYiqmB?|n&5@MO_6~SrjML+YW|Ww?;#j;^Y!s(VJnW4`@Muj-eYQEl5w?g*DWkc1+n(F8Pcch?bfUyLK! zit+cIt{hxqNo&VdN^gyTmOL-e~@;hPzgHzjeM)9N$h{6&g6o66G z02WIa0)?Ou1W0+?;Hh=H54g{>N47~(Qh)#uAQ0u;XLo;f)zRcfoxePn&z?u9B#Rls zVwUIbKF=QikgeZ9+fVm?8oSO2eOjW(?5TZTzk${c%JkX297T|@66veMI9ogUl+?=I zGolxj4;1DZVuV$n*M8dT&)zxkS3Rk%wRTc-28~1`YJh>TVztk!r62X3F*+Kd)|Pot z=hP^-pYGp4=4w4Luu}W!?(?1Yv-du)J`bN(!Ppo3s`XbJE&X`+T5I(h>C_otnBybT ze(?ES8F4e>MrcG+c7WFI3h|7S z$OBeyvwE9#Js`9_AZQ1O=SUJr=K(+edT3=J!wvltySHJ(DmwXxhCzzzM?HK?-;hVvX!H(izKt_L6#ZKK4-LeZn ztk(flT(3)#?WSa>X0Cop@_X8$3Uo_9$4VESep}SE zdvX=pZsI;$AR*h$x)_@0IQ9b>=TmG literal 0 HcmV?d00001 diff --git a/blog/img/badges/bunny.png b/blog/img/badges/bunny.png new file mode 100644 index 0000000000000000000000000000000000000000..21f206c198ae744c394ad0a0afed5b49ee1da798 GIT binary patch literal 1204 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 literal 0 HcmV?d00001 diff --git a/blog/img/badges/pronouns.png b/blog/img/badges/pronouns.png new file mode 100644 index 0000000000000000000000000000000000000000..74a7e31f4cf34a431872d313b9766481346433ef GIT binary patch literal 726 zcmV;{0xA88P)z@;j|==^1poj5AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBUy24YJ`L;wH)0002_L%V+f000SaNLh0L04^f{04^f|c%?sf00007 zbV*G`2k8U_3ndOb-=rA;00J6GL_t(&-tAg3lEW|vBp!XljURV?UUA(OF7Ffhf?we# zPsvrxC`2F-lCATIE+IlIyav|s?GEb;hBdQkq@bN`@PL3H7MMpyD%vmn3159WQY#6IGfu@pLcLsZDt@L2S81V%=yvfnSA(+&`IDok%VU8iBM2bf4WC7%!0+&60nvt&VhY!#>G#~; z_}kR)O0dNTk1YiaW#8RmYRehEVs4P z!Aone2b;AHb8)p3&17kCRzbk6)6Aeb_IgBuw3hQ(n!9O=uy*4(F(t!%j=dgi)=7r? zEXgmLBCHH59pbgMx7MBKnWb}kh8CMiKItJ#341-*S|)#!YH$q&mzy5A@{wb&2U|^{ z;g-tY+boqpiJ=zu_R!#pq;lyMj@1%XKXjeMP|4@PR)f_VS)N+=rsPuUNULV3TFS+d zlo?fqoN_BwS{ga5@kx84lKV(-jb>tf$di-BJw4ge8YVcj=(wKIid+BR{`KB8O73Xu z<=>M-riinWd$sp7LJuIW{L;&KFXAW$hKsa@D(!)yyItjJiP|!$HBlER1GYvGH8t~Ek&&X{gMH!~uTn66o zva__|3T)qTO){_{c+7C;m}J-!d69X}EQJOkK{eP_qsUG?1S||_RHFp01(ce#S)`HD z^JtuegFy%&-1rd{urzCV|NjpM?a;0h2Ca>dLdit|qtu+5`Nl?>D3kt02xJDCMh_SS z1|!aEgL?zRK{jhjnRXqfdmOT58P#P4)V`r}1cTDL&Y=X7eM8(g(#+QTJZ?cf7qRJ; z8_9lF`&`&p&Lu|!XByOxDBI*hk?nBqPxpPXC19dqvIzh|PEAHW0RR92000C408sz{ z4gdh?0{{V5P&iB_0RR9mQGf#w5=oIHNsx&BW8JHP>|L(w#*1*KfU@4xa*QFm8hWp@>JS4DQ+ zT@YM%7h#oMKo(E|dEm-B6j&w(c9*AJ=4t%Mi{0hDo!IdmmE+_XnRe0LebC+AiD6$j z8F(p_$#xBl7R_wwi=ZTFI8z*M!Hu z230U3#02v+Aq_#(hv5OFQtW`=ut` cuPue^*p~ShN-Fa&l!)v{(EK?p(kgZY0CDVhZ2$lO literal 0 HcmV?d00001 diff --git a/blog/img/badges/protect.png b/blog/img/badges/protect.png new file mode 100644 index 0000000000000000000000000000000000000000..63b0a3a04b6b3a3f0dd388080c346b03a243a4a0 GIT binary patch literal 759 zcmVz@;j|==^1poj5AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBUy24YJ`L;za=&H(yw+2!p3000SaNLh0L04^f{04^f|c%?sf00007 zbV*G`2k8U^5HdJkDW2j000KKnL_t(&-tAg3YXUJ8e#%`}p>rvA5a&V{7ym+M7gv`$ zSlmQP=_+;5$)(_ObAN(Ta1tr)P!+6naVxlbrFO8<+`HtGvv+#f_bqbIFE8Kwl8Z?& z)|q`Rfe;$vWI=c+RH|UGht}+y90?Hp<_*nYS|Z3`f(k}v{s9007vmAR5g=|qCp3d; zi8zEMf`2g2(}57gtBCSKMK+ znLb;M>hC82KrGSQyhf=c003M+CZV3U005wQ*Mm|!C*<+%%~VntFST})_DuV&|}!c_tgpH zd9>buFX#5=WHO$*PAOizt7>MwC%nIGJNAl6p9S;8;pO@*xT4a2c z4vfX?c(r|7yiJz8!Ct2<-e3_=XG5+!$>D)i>G9&IYS1~!sruk^I&Raf2eH9A=WH*Y z>@Gp4t>3$XZSF1n-bLv2p=~fBI530hy7EwV5&soNFL4S00Ik#sxe*}x#~qr%v_z1> p1ns*B_E#T52s5})sge^R;RiFZZ2pREWJCY}002ovPDHLkV1hq1MWp}$ literal 0 HcmV?d00001 diff --git a/blog/img/badges/puff.webp b/blog/img/badges/puff.webp new file mode 100644 index 0000000000000000000000000000000000000000..5cc043357c26ea56a30e702b3ccba1002be96db3 GIT binary patch literal 86548 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

nH`SA#_H)6Z%{;sZAx^jSrq{F{EjFaz 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%0AOtLopXsL}m$ma{XA=vVd9NxY7g1q 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 F!v|(MN@@TA literal 0 HcmV?d00001 diff --git a/blog/img/badges/riir-animated.webp b/blog/img/badges/riir-animated.webp new file mode 100644 index 0000000000000000000000000000000000000000..199b0030976864ab97d04946a6aea7a8bd3287c0 GIT binary patch literal 1388 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

-zAC< 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

Xg4=O($;MZ(%B({}%`99rBne5PUj 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

{exOKxYzjmHeu|!ZsdGStRL^R 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

  • 1cY6@Nw)Q6V-- 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 O@FAD)U3xMA0Qes?(whqa literal 0 HcmV?d00001 diff --git a/blog/index.html b/blog/index.html new file mode 100644 index 0000000..7edbe51 --- /dev/null +++ b/blog/index.html @@ -0,0 +1,17 @@ + + + + + + + website + + + + + + + + + + diff --git a/blog/index.scss b/blog/index.scss new file mode 100644 index 0000000..8362c73 --- /dev/null +++ b/blog/index.scss @@ -0,0 +1,264 @@ +html, +body { + margin: 0; +} + +body { + background: + linear-gradient(145deg, rgba(133, 0, 153, 1) 0%, rgba(57, 0, 153, 1) 100%); + min-height: 100vw; + font-size: 1.5rem; +} + +main { + color: #fff6d5; + font-family: sans-serif; + text-align: center; + // padding-bottom: 80px; + // min-height: 50vh; + // background: + // linear-gradient(145deg, rgba(133, 0, 153, 1) 0%, rgba(57, 0, 153, 1) 100%); +} + +.logo { + height: 20em; +} + +.burger { + background-color: transparent; + border: none; +} + +h1.navbar-item { + font-size: 32px; + align-self: flex-start; + backdrop-filter: blur(10px); + padding-left: 30px; +} + +.navbar-start .navbar-item { + background-color: #fff6d5; + margin-left: 20px; + padding-left: 5px; + padding-right: 5px; +} + +$link_color: #432054; +$link_hover_color: hsl(280, 55%, 61%); +$link_bg_color: #fff6d5; +$shadow_color: hsl(280, 55%, 61%); +$shadow_color_2: hsl(300, 55%, 61%); +$link_filter: drop-shadow(5px 5px 0 $shadow_color) drop-shadow(5px 5px 0 $shadow_color_2); +$link_select_filter: invert(100%); + +.navbar-item:hover { + filter: $link_select_filter; +} + +.navbar-menu { + justify-items: center; +} + +.navbar a, +.link-container a, +.pagination-item a { + text-decoration: none; + color: $link_color; +} + +.out-of-order { + filter: $link_select_filter; +} + +.navbar { + font-family: 'Cute Font'; + display: flex; + align-items: baseline; + + gap: 30px; + filter: $link_filter; +} + +.navbar-icon img { + width: 32px; + margin-left: 15px; +} + +.footer { + display: inline-block; + flex-shrink: 0; + position: fixed; + left: 0; + right: 0; + bottom: 0; + font-size: 12px; + width: 100vw; + user-select: none; + height: auto; +} + +.footer .content { + filter: drop-shadow(0px 0px 6px #000000); +} + +.footer-background { + height: 100%; + flex-shrink: 0; + + left: 0; + right: 0; + bottom: 0; + width: 100vw; + z-index: -1; + --s: 34px; + --c1: #1c2130; + --c2: hsl(291, 50%, 56%); + // --c2: #b3e099; + + --_c: 5%, #0000 75%, var(--c1) 0; + --_g: /var(--s) var(--s) conic-gradient(at var(--_c)); + --_l: /var(--s) var(--s) conic-gradient(at 50% var(--_c)); + background: + 0 calc(7*var(--s)/10) var(--_l), + calc(var(--s)/2) calc(var(--s)/5) var(--_l), + calc(var(--s)/5) 0 var(--_g), + calc(7*var(--s)/10) calc(var(--s)/2) var(--_g), + conic-gradient(at 90% 90%, var(--c1) 75%, var(--c2) 0) 0 0/calc(var(--s)/2) calc(var(--s)/2); + +} + +.badge-list { + display: flex; + flex-wrap: wrap; + width: 100%; + height: 100%; + backdrop-filter: blur(2px); + + align-items: center; + padding-left: 10px; + padding-right: 10px; + padding-top: 5px; + padding-bottom: 8px; + gap: 10px; +} + +.badge { + filter: drop-shadow(5px 5px 0px #000000); + image-rendering: pixelated; +} + +.badge:hover { + filter: brightness(120%) drop-shadow(5px 5px 0px hsl(0, 0%, 30%)); + transform: scale(1.1) skew(-10deg, 10deg); +} + +.posts-list { + padding-bottom: 100px; +} + +.link-list { + font-family: 'Cute Font'; + display: inline-flex; + flex-direction: column; + + gap: 30px; + filter: $link_filter; +} + +.pagination-list { + list-style: none; + + font-family: 'Cute Font'; + display: inline-flex; + flex-direction: row; + + gap: 30px; + filter: $link_filter; +} + + +.link-container { + background-color: #fff6d5; + width: 100%; + padding-left: 3px; + padding-right: 3px; +} + +.link-container:hover { + filter: $link_select_filter; +} + +.home-body { + display: flex; + columns: 2; + flex-wrap: wrap; + width: 80%; + margin-left: 5%; + margin-right: 5%; + justify-content: space-evenly; +} + +.home-column { + margin-left: 5%; + margin-right: 5%; +} + +.post-container { + display: flex; + flex-direction: column; + text-wrap: wrap; + width: 80vw; + margin-left: 10vw; + margin-right: 10vw; + justify-content: center; +} + +.post-body { + background-color: $link_bg_color; + font-family: 'Cute Font'; + filter: $link_filter; + color: $link_color +} + +.pagination { + display: flex; + justify-content: center; + gap: 20px; + width: 100vw; +} + +.pagination-list { + display: flex; + justify-content: left; + flex-direction: row; + gap: 15px; +} + +.pagination-list .pagination-item { + background-color: #fff6d5; + padding-left: 3px; + padding-right: 3px; +} + +.pagination-item:hover { + filter: $link_select_filter; +} + +.scratchpad-tile { + width: 10px; + height: 10px; + background: #fff6d5; +} + +.scratchpad-active-tile { + filter: invert(100%); +} + +.scratchpad-grid { + display: grid; + + grid-template-columns: repeat(32, 1fr); + grid-template-rows: repeat(32, 1fr); + + filter: $link_filter; +} diff --git a/blog/src/app.rs b/blog/src/app.rs new file mode 100644 index 0000000..8094669 --- /dev/null +++ b/blog/src/app.rs @@ -0,0 +1,66 @@ +use std::collections::HashMap; + +use yew::prelude::*; +use yew_router::{ + history::{AnyHistory, History, MemoryHistory}, + BrowserRouter, Router, Switch, +}; + +use crate::{components::Footer, nav::Nav, pages::*, Route}; + +#[function_component] +pub fn App() -> Html { + html! { + +