From 9e8f7d45428e1b2c1371e5d25fe8a34373abab1a Mon Sep 17 00:00:00 2001 From: Mars Ultor Date: Sat, 1 Feb 2025 15:10:24 -0600 Subject: [PATCH] frontend done --- .gitignore | 1 + frontend/.gitignore | 7 + frontend/Cargo.lock | 5353 ++++++++++++++++++++++++++++ frontend/Cargo.toml | 32 + frontend/Dioxus.toml | 24 + frontend/README.md | 27 + frontend/assets/favicon.ico | Bin 0 -> 132770 bytes frontend/assets/header.svg | 20 + frontend/assets/styling/blog.css | 8 + frontend/assets/styling/echo.css | 34 + frontend/assets/styling/main.css | 150 + frontend/assets/styling/navbar.css | 16 + frontend/assets/tailwind.css | 0 frontend/input.css | 3 + frontend/src/components/echo.rs | 37 + frontend/src/components/hero.rs | 21 + frontend/src/components/mod.rs | 11 + frontend/src/components/navbar.rs | 21 + frontend/src/components/story.rs | 56 + frontend/src/main.rs | 83 + frontend/src/shared.rs | 6 + frontend/src/views/home.rs | 13 + frontend/src/views/mod.rs | 5 + frontend/tailwind.config.js | 9 + stock_news_publisher/src/main.rs | 4 +- 25 files changed, 5939 insertions(+), 2 deletions(-) create mode 100644 frontend/.gitignore create mode 100644 frontend/Cargo.lock create mode 100644 frontend/Cargo.toml create mode 100644 frontend/Dioxus.toml create mode 100644 frontend/README.md create mode 100644 frontend/assets/favicon.ico create mode 100644 frontend/assets/header.svg create mode 100644 frontend/assets/styling/blog.css create mode 100644 frontend/assets/styling/echo.css create mode 100644 frontend/assets/styling/main.css create mode 100644 frontend/assets/styling/navbar.css create mode 100644 frontend/assets/tailwind.css create mode 100644 frontend/input.css create mode 100644 frontend/src/components/echo.rs create mode 100644 frontend/src/components/hero.rs create mode 100644 frontend/src/components/mod.rs create mode 100644 frontend/src/components/navbar.rs create mode 100644 frontend/src/components/story.rs create mode 100644 frontend/src/main.rs create mode 100644 frontend/src/shared.rs create mode 100644 frontend/src/views/home.rs create mode 100644 frontend/src/views/mod.rs create mode 100644 frontend/tailwind.config.js diff --git a/.gitignore b/.gitignore index b60de5b..d8a0c1a 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ **/target +creds.js diff --git a/frontend/.gitignore b/frontend/.gitignore new file mode 100644 index 0000000..80aab8e --- /dev/null +++ b/frontend/.gitignore @@ -0,0 +1,7 @@ +# Generated by Cargo +# will have compiled files and executables +/target +.DS_Store + +# These are backup files generated by rustfmt +**/*.rs.bk diff --git a/frontend/Cargo.lock b/frontend/Cargo.lock new file mode 100644 index 0000000..0040f77 --- /dev/null +++ b/frontend/Cargo.lock @@ -0,0 +1,5353 @@ +# 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 = "arc-swap" +version = "1.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69f7f8c3906b62b754cd5326047894316021dcfe5a194c8ea52bdd94934a3457" + +[[package]] +name = "ashpd" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd884d7c72877a94102c3715f3b1cd09ff4fac28221add3e57cfbe25c236d093" +dependencies = [ + "enumflags2", + "futures-channel", + "futures-util", + "rand 0.8.5", + "serde", + "serde_repr", + "tokio", + "url", + "zbus", +] + +[[package]] +name = "async-broadcast" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "435a87a52755b8f27fcf321ac4f04b2802e337c8c4872923137471ec39c37532" +dependencies = [ + "event-listener", + "event-listener-strategy", + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "async-channel" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89b47800b0be77592da0afd425cc03468052844aff33b84e33cc696f64e77b6a" +dependencies = [ + "concurrent-queue", + "event-listener-strategy", + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "async-io" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43a2b323ccce0a1d90b449fd71f2a06ca7faa7c54c2751f06c9bd851fc061059" +dependencies = [ + "async-lock", + "cfg-if", + "concurrent-queue", + "futures-io", + "futures-lite", + "parking", + "polling", + "rustix", + "slab", + "tracing", + "windows-sys 0.59.0", +] + +[[package]] +name = "async-lock" +version = "3.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff6e472cdea888a4bd64f342f09b3f50e1886d32afe8df3d663c01140b811b18" +dependencies = [ + "event-listener", + "event-listener-strategy", + "pin-project-lite", +] + +[[package]] +name = "async-process" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63255f1dc2381611000436537bbedfe83183faa303a5a0edaf191edef06526bb" +dependencies = [ + "async-channel", + "async-io", + "async-lock", + "async-signal", + "async-task", + "blocking", + "cfg-if", + "event-listener", + "futures-lite", + "rustix", + "tracing", +] + +[[package]] +name = "async-recursion" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.96", +] + +[[package]] +name = "async-signal" +version = "0.2.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "637e00349800c0bdf8bfc21ebbc0b6524abea702b0da4168ac00d070d0c0b9f3" +dependencies = [ + "async-io", + "async-lock", + "atomic-waker", + "cfg-if", + "futures-core", + "futures-io", + "rustix", + "signal-hook-registry", + "slab", + "windows-sys 0.59.0", +] + +[[package]] +name = "async-task" +version = "4.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" + +[[package]] +name = "async-trait" +version = "0.1.85" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f934833b4b7233644e5848f235df3f57ed8c80f1528a26c3dfa13d2147fa056" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.96", +] + +[[package]] +name = "atk" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "241b621213072e993be4f6f3a9e4b45f65b7e6faad43001be957184b7bb1824b" +dependencies = [ + "atk-sys", + "glib", + "libc", +] + +[[package]] +name = "atk-sys" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5e48b684b0ca77d2bbadeef17424c2ea3c897d44d566a1617e7e8f30614d086" +dependencies = [ + "glib-sys", + "gobject-sys", + "libc", + "system-deps", +] + +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + +[[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 0.52.6", +] + +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitflags" +version = "2.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f68f53c83ab957f72c32642f3868eec03eb974d1fb82e453128456482613d36" +dependencies = [ + "serde", +] + +[[package]] +name = "block" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" + +[[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 = "block2" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c132eebf10f5cad5289222520a4a058514204aed6d791f1cf4fe8088b82d15f" +dependencies = [ + "objc2", +] + +[[package]] +name = "blocking" +version = "1.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "703f41c54fc768e63e091340b424302bb1c29ef4aa0c7f10fe849dfb114d29ea" +dependencies = [ + "async-channel", + "async-task", + "futures-io", + "futures-lite", + "piper", +] + +[[package]] +name = "bumpalo" +version = "3.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1628fb46dfa0b37568d12e5edd512553eccf6a22a78e8bde00bb4aed84d5bdbf" + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "bytes" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "325918d6fe32f23b19878fe4b34794ae41fc19ddbe53b10571a4874d44ffd39b" + +[[package]] +name = "cairo-rs" +version = "0.18.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ca26ef0159422fb77631dc9d17b102f253b876fe1586b03b803e63a309b4ee2" +dependencies = [ + "bitflags 2.8.0", + "cairo-sys-rs", + "glib", + "libc", + "once_cell", + "thiserror", +] + +[[package]] +name = "cairo-sys-rs" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "685c9fa8e590b8b3d678873528d83411db17242a73fccaed827770ea0fedda51" +dependencies = [ + "glib-sys", + "libc", + "system-deps", +] + +[[package]] +name = "cc" +version = "1.2.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13208fcbb66eaeffe09b99fffbe1af420f00a7b35aa99ad683dfc1aa76145229" +dependencies = [ + "shlex", +] + +[[package]] +name = "cesu8" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" + +[[package]] +name = "cfb" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d38f2da7a0a2c4ccf0065be06397cc26a81f4e528be095826eee9d4adbb8c60f" +dependencies = [ + "byteorder", + "fnv", + "uuid", +] + +[[package]] +name = "cfg-expr" +version = "0.15.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d067ad48b8650848b989a59a86c6c36a995d02d2bf778d45c3c5d57bc2718f02" +dependencies = [ + "smallvec", + "target-lexicon", +] + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "ciborium" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42e69ffd6f0917f5c029256a24d0161db17cea3997d185db0d35926308770f0e" +dependencies = [ + "ciborium-io", + "ciborium-ll", + "serde", +] + +[[package]] +name = "ciborium-io" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05afea1e0a06c9be33d539b876f1ce3692f4afea2cb41f740e7743225ed1c757" + +[[package]] +name = "ciborium-ll" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57663b653d948a338bfb3eeba9bb2fd5fcfaecb9e199e87e1eda4d9e8b240fd9" +dependencies = [ + "ciborium-io", + "half", +] + +[[package]] +name = "cocoa" +version = "0.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6140449f97a6e97f9511815c5632d84c8aacf8ac271ad77c559218161a1373c" +dependencies = [ + "bitflags 1.3.2", + "block", + "cocoa-foundation 0.1.2", + "core-foundation 0.9.4", + "core-graphics 0.23.2", + "foreign-types", + "libc", + "objc", +] + +[[package]] +name = "cocoa" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f79398230a6e2c08f5c9760610eb6924b52aa9e7950a619602baba59dcbbdbb2" +dependencies = [ + "bitflags 2.8.0", + "block", + "cocoa-foundation 0.2.0", + "core-foundation 0.10.0", + "core-graphics 0.24.0", + "foreign-types", + "libc", + "objc", +] + +[[package]] +name = "cocoa-foundation" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c6234cbb2e4c785b456c0644748b1ac416dd045799740356f8363dfe00c93f7" +dependencies = [ + "bitflags 1.3.2", + "block", + "core-foundation 0.9.4", + "core-graphics-types 0.1.3", + "libc", + "objc", +] + +[[package]] +name = "cocoa-foundation" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e14045fb83be07b5acf1c0884b2180461635b433455fa35d1cd6f17f1450679d" +dependencies = [ + "bitflags 2.8.0", + "block", + "core-foundation 0.10.0", + "core-graphics-types 0.2.0", + "libc", + "objc", +] + +[[package]] +name = "combine" +version = "4.6.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd" +dependencies = [ + "bytes", + "memchr", +] + +[[package]] +name = "concurrent-queue" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" +dependencies = [ + "crossbeam-utils", +] + +[[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 = "const-serialize" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08259976d62c715c4826cb4a3d64a3a9e5c5f68f964ff6087319857f569f93a6" +dependencies = [ + "const-serialize-macro", + "serde", +] + +[[package]] +name = "const-serialize-macro" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04382d0d9df7434af6b1b49ea1a026ef39df1b0738b1cc373368cf175354f6eb" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.96", +] + +[[package]] +name = "const_format" +version = "0.2.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "126f97965c8ad46d6d9163268ff28432e8f6a1196a55578867832e3049df63dd" +dependencies = [ + "const_format_proc_macros", +] + +[[package]] +name = "const_format_proc_macros" +version = "0.2.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d57c2eccfb16dbac1f4e61e206105db5820c9d26c3c472bc17c774259ef7744" +dependencies = [ + "proc-macro2", + "quote", + "unicode-xid", +] + +[[package]] +name = "convert_case" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" + +[[package]] +name = "convert_case" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec182b0ca2f35d8fc196cf3404988fd8b8c739a4d270ff118a398feb0cbec1ca" +dependencies = [ + "unicode-segmentation", +] + +[[package]] +name = "core-foundation" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b55271e5c8c478ad3f38ad24ef34923091e0548492a266d19b3c0b4d82574c63" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" + +[[package]] +name = "core-graphics" +version = "0.23.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c07782be35f9e1140080c6b96f0d44b739e2278479f64e02fdab4e32dfd8b081" +dependencies = [ + "bitflags 1.3.2", + "core-foundation 0.9.4", + "core-graphics-types 0.1.3", + "foreign-types", + "libc", +] + +[[package]] +name = "core-graphics" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa95a34622365fa5bbf40b20b75dba8dfa8c94c734aea8ac9a5ca38af14316f1" +dependencies = [ + "bitflags 2.8.0", + "core-foundation 0.10.0", + "core-graphics-types 0.2.0", + "foreign-types", + "libc", +] + +[[package]] +name = "core-graphics-types" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45390e6114f68f718cc7a830514a96f903cccd70d02a8f6d9f643ac4ba45afaf" +dependencies = [ + "bitflags 1.3.2", + "core-foundation 0.9.4", + "libc", +] + +[[package]] +name = "core-graphics-types" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d44a101f213f6c4cdc1853d4b78aef6db6bdfa3468798cc1d9912f4735013eb" +dependencies = [ + "bitflags 2.8.0", + "core-foundation 0.10.0", + "libc", +] + +[[package]] +name = "cpufeatures" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" +dependencies = [ + "libc", +] + +[[package]] +name = "crc32fast" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "crossbeam-channel" +version = "0.5.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06ba6d68e24814cb8de6bb986db8222d3a027d15872cabc0d18817bc3c0e4471" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" + +[[package]] +name = "crunchy" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43da5946c66ffcc7745f48db692ffbb10a83bfe0afd96235c5c2a4fb23994929" + +[[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 = "cssparser" +version = "0.27.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "754b69d351cdc2d8ee09ae203db831e005560fc6030da058f86ad60c92a9cb0a" +dependencies = [ + "cssparser-macros", + "dtoa-short", + "itoa 0.4.8", + "matches", + "phf 0.8.0", + "proc-macro2", + "quote", + "smallvec", + "syn 1.0.109", +] + +[[package]] +name = "cssparser-macros" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331" +dependencies = [ + "quote", + "syn 2.0.96", +] + +[[package]] +name = "darling" +version = "0.20.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f63b86c8a8826a49b8c21f08a2d07338eec8d900540f8630dc76284be802989" +dependencies = [ + "darling_core", + "darling_macro", +] + +[[package]] +name = "darling_core" +version = "0.20.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95133861a8032aaea082871032f5815eb9e98cef03fa916ab4500513994df9e5" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "syn 2.0.96", +] + +[[package]] +name = "darling_macro" +version = "0.20.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" +dependencies = [ + "darling_core", + "quote", + "syn 2.0.96", +] + +[[package]] +name = "dashmap" +version = "5.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856" +dependencies = [ + "cfg-if", + "hashbrown 0.14.5", + "lock_api", + "once_cell", + "parking_lot_core", +] + +[[package]] +name = "data-encoding" +version = "2.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e60eed09d8c01d3cee5b7d30acb059b76614c918fa0f992e0dd6eeb10daad6f" + +[[package]] +name = "derivative" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "derive_more" +version = "0.99.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f33878137e4dafd7fa914ad4e259e18a4e8e532b9617a2d0150262bf53abfce" +dependencies = [ + "convert_case 0.4.0", + "proc-macro2", + "quote", + "rustc_version", + "syn 2.0.96", +] + +[[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 = "dioxus" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e7d69c4bd197db4739654af0a37c426417b45d5f495df8d10fafeb5da846dca" +dependencies = [ + "dioxus-cli-config", + "dioxus-config-macro", + "dioxus-core", + "dioxus-core-macro", + "dioxus-desktop", + "dioxus-devtools", + "dioxus-document", + "dioxus-fullstack", + "dioxus-history", + "dioxus-hooks", + "dioxus-html", + "dioxus-logger", + "dioxus-mobile", + "dioxus-router", + "dioxus-signals", + "dioxus-web", + "manganis", + "serde", + "warnings", +] + +[[package]] +name = "dioxus-cli-config" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d20764ae5fbe886e4602fdd6f2420ed03697eccba51605926f54693bd65879f3" +dependencies = [ + "wasm-bindgen", +] + +[[package]] +name = "dioxus-config-macro" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75cbf582fbb1c32d34a1042ea675469065574109c95154468710a4d73ee98b49" +dependencies = [ + "proc-macro2", + "quote", +] + +[[package]] +name = "dioxus-core" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23f0eb105e433754659d8e2dd8ac4590aae92f4f2e13770b49700fdc08e87d2c" +dependencies = [ + "const_format", + "dioxus-core-types", + "futures-channel", + "futures-util", + "generational-box", + "longest-increasing-subsequence", + "rustc-hash", + "rustversion", + "serde", + "slab", + "slotmap", + "tracing", + "warnings", +] + +[[package]] +name = "dioxus-core-macro" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a798c5538481e6bc831514a5dd10ee53e3df12fd13a88d64e787e0268443adcd" +dependencies = [ + "convert_case 0.6.0", + "dioxus-rsx", + "proc-macro2", + "quote", + "syn 2.0.96", +] + +[[package]] +name = "dioxus-core-types" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91a82fccfa48574eb7aa183e297769540904694844598433a9eb55896ad9f93b" +dependencies = [ + "once_cell", +] + +[[package]] +name = "dioxus-desktop" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4bc09a4d163c3b63010c2f137423c0ea19485c9fc2049726828e8562127b9188" +dependencies = [ + "async-trait", + "base64", + "cocoa 0.25.0", + "core-foundation 0.9.4", + "dioxus-cli-config", + "dioxus-core", + "dioxus-devtools", + "dioxus-document", + "dioxus-history", + "dioxus-hooks", + "dioxus-html", + "dioxus-interpreter-js", + "dioxus-signals", + "dunce", + "futures-channel", + "futures-util", + "generational-box", + "global-hotkey", + "infer", + "jni", + "lazy-js-bundle", + "muda 0.11.5", + "ndk", + "ndk-context", + "ndk-sys", + "objc", + "objc_id", + "once_cell", + "rfd", + "rustc-hash", + "serde", + "serde_json", + "signal-hook", + "slab", + "tao", + "thiserror", + "tokio", + "tracing", + "tray-icon", + "urlencoding", + "webbrowser", + "wry", +] + +[[package]] +name = "dioxus-devtools" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712a7300f1e8181218187b03502044157eef04e0a25b518117c5ef9ae1096880" +dependencies = [ + "dioxus-core", + "dioxus-devtools-types", + "dioxus-signals", + "serde", + "serde_json", + "tracing", + "tungstenite", + "warnings", +] + +[[package]] +name = "dioxus-devtools-types" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f62434973c0c9c5a3bc42e9cd5e7070401c2062a437fb5528f318c3e42ebf4ff" +dependencies = [ + "dioxus-core", + "serde", +] + +[[package]] +name = "dioxus-document" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f195e3027dea214d34fd87c8189470cf24ef3f9ff10b13675cc9d80e0db07517" +dependencies = [ + "dioxus-core", + "dioxus-core-macro", + "dioxus-core-types", + "dioxus-html", + "futures-channel", + "futures-util", + "generational-box", + "lazy-js-bundle", + "serde", + "serde_json", + "tracing", +] + +[[package]] +name = "dioxus-fullstack" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa2da12d6b6ce390bd3143f46c8441fa1a50f1428113a059b25d8fd22a3899d2" +dependencies = [ + "base64", + "bytes", + "ciborium", + "dioxus-desktop", + "dioxus-devtools", + "dioxus-history", + "dioxus-lib", + "dioxus-mobile", + "dioxus-web", + "dioxus_server_macro", + "futures-channel", + "futures-util", + "generational-box", + "once_cell", + "serde", + "server_fn", + "tracing", + "web-sys", +] + +[[package]] +name = "dioxus-history" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ae4e22616c698f35b60727313134955d885de2d32e83689258e586ebc9b7909" +dependencies = [ + "dioxus-core", + "tracing", +] + +[[package]] +name = "dioxus-hooks" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "948e2b3f20d9d4b2c300aaa60281b1755f3298684448920b27106da5841896d0" +dependencies = [ + "dioxus-core", + "dioxus-signals", + "futures-channel", + "futures-util", + "generational-box", + "rustversion", + "slab", + "tracing", + "warnings", +] + +[[package]] +name = "dioxus-html" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "664518f9d9b7d765755e79db271562b36c271e97709ff3bc0c71234700f5e8ae" +dependencies = [ + "async-trait", + "dioxus-core", + "dioxus-core-macro", + "dioxus-core-types", + "dioxus-hooks", + "dioxus-html-internal-macro", + "enumset", + "euclid", + "futures-channel", + "generational-box", + "keyboard-types", + "lazy-js-bundle", + "rustversion", + "serde", + "serde_json", + "serde_repr", + "tracing", +] + +[[package]] +name = "dioxus-html-internal-macro" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43ba87b53688a2c9f619ecdf4b3b955bc1f08bd0570a80a0d626c405f6d14a76" +dependencies = [ + "convert_case 0.6.0", + "proc-macro2", + "quote", + "syn 2.0.96", +] + +[[package]] +name = "dioxus-interpreter-js" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "330707b10ca75cb0eb05f9e5f8d80217cd0d7e62116a8277ae363c1a09b57a22" +dependencies = [ + "dioxus-core", + "dioxus-core-types", + "dioxus-html", + "js-sys", + "lazy-js-bundle", + "rustc-hash", + "serde", + "sledgehammer_bindgen", + "sledgehammer_utils", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "dioxus-lib" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5405b71aa9b8b0c3e0d22728f12f34217ca5277792bd315878cc6ecab7301b72" +dependencies = [ + "dioxus-config-macro", + "dioxus-core", + "dioxus-core-macro", + "dioxus-document", + "dioxus-history", + "dioxus-hooks", + "dioxus-html", + "dioxus-rsx", + "dioxus-signals", + "warnings", +] + +[[package]] +name = "dioxus-logger" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "545961e752f6c8bf59c274951b3c8b18a106db6ad2f9e2035b29e1f2a3e899b1" +dependencies = [ + "console_error_panic_hook", + "dioxus-cli-config", + "tracing", + "tracing-subscriber", + "tracing-wasm", +] + +[[package]] +name = "dioxus-mobile" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d1295388909f427758993f32a571e0f8698d6ce0f125fa0e81b8bfdec3fa952" +dependencies = [ + "dioxus-cli-config", + "dioxus-desktop", + "dioxus-lib", + "jni", + "libc", + "once_cell", +] + +[[package]] +name = "dioxus-router" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc284034f3fffb198a189eaaa8be854520770160d79bdc85b8ad64a8e8170433" +dependencies = [ + "dioxus-cli-config", + "dioxus-history", + "dioxus-lib", + "dioxus-router-macro", + "rustversion", + "tracing", + "url", + "urlencoding", +] + +[[package]] +name = "dioxus-router-macro" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb48c4f1e8fd66716191c9bd492b532de3dd0b59a278c0a35dd0755b7a05e2fc" +dependencies = [ + "proc-macro2", + "quote", + "slab", + "syn 2.0.96", +] + +[[package]] +name = "dioxus-rsx" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3eb588e05800b5a7eb90b2f40fca5bbd7626e823fb5e1ba21e011de649b45aa1" +dependencies = [ + "proc-macro2", + "proc-macro2-diagnostics", + "quote", + "syn 2.0.96", +] + +[[package]] +name = "dioxus-signals" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e8f8811f32274228aff06e01c891d0828f5461d33b4fa9465dc69b995fc12c1" +dependencies = [ + "dioxus-core", + "futures-channel", + "futures-util", + "generational-box", + "once_cell", + "parking_lot", + "rustc-hash", + "tracing", + "warnings", +] + +[[package]] +name = "dioxus-web" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45d8e94a78633382687f2555d7c3e0da934aff3d4937d8c63b351a632befdd0c" +dependencies = [ + "async-trait", + "ciborium", + "dioxus-cli-config", + "dioxus-core", + "dioxus-core-types", + "dioxus-devtools", + "dioxus-document", + "dioxus-history", + "dioxus-html", + "dioxus-interpreter-js", + "dioxus-signals", + "futures-channel", + "futures-util", + "generational-box", + "js-sys", + "lazy-js-bundle", + "rustc-hash", + "serde", + "serde-wasm-bindgen", + "serde_json", + "tracing", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "dioxus_server_macro" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "371a5b21989a06b53c5092e977b3f75d0e60a65a4c15a2aa1d07014c3b2dda97" +dependencies = [ + "proc-macro2", + "quote", + "server_fn_macro", + "syn 2.0.96", +] + +[[package]] +name = "dirs" +version = "5.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225" +dependencies = [ + "dirs-sys", +] + +[[package]] +name = "dirs-sys" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c" +dependencies = [ + "libc", + "option-ext", + "redox_users", + "windows-sys 0.48.0", +] + +[[package]] +name = "dispatch" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b" + +[[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.96", +] + +[[package]] +name = "dlopen2" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e1297103d2bbaea85724fcee6294c2d50b1081f9ad47d0f6f6f61eda65315a6" +dependencies = [ + "dlopen2_derive", + "libc", + "once_cell", + "winapi", +] + +[[package]] +name = "dlopen2_derive" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2b99bf03862d7f545ebc28ddd33a665b50865f4dfd84031a393823879bd4c54" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.96", +] + +[[package]] +name = "dpi" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f25c0e292a7ca6d6498557ff1df68f32c99850012b6ea401cf8daf771f22ff53" + +[[package]] +name = "dtoa" +version = "1.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcbb2bf8e87535c23f7a8a321e364ce21462d0ff10cb6407820e8e96dfff6653" + +[[package]] +name = "dtoa-short" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd1511a7b6a56299bd043a9c167a6d2bfb37bf84a6dfceaba651168adfb43c87" +dependencies = [ + "dtoa", +] + +[[package]] +name = "dunce" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" + +[[package]] +name = "endi" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3d8a32ae18130a3c84dd492d4215c3d913c3b07c6b63c2eb3eb7ff1101ab7bf" + +[[package]] +name = "enumflags2" +version = "0.7.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba2f4b465f5318854c6f8dd686ede6c0a9dc67d4b1ac241cf0eb51521a309147" +dependencies = [ + "enumflags2_derive", + "serde", +] + +[[package]] +name = "enumflags2_derive" +version = "0.7.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc4caf64a58d7a6d65ab00639b046ff54399a39f5f2554728895ace4b297cd79" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.96", +] + +[[package]] +name = "enumset" +version = "1.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d07a4b049558765cef5f0c1a273c3fc57084d768b44d2f98127aef4cceb17293" +dependencies = [ + "enumset_derive", +] + +[[package]] +name = "enumset_derive" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59c3b24c345d8c314966bdc1832f6c2635bfcce8e7cf363bd115987bba2ee242" +dependencies = [ + "darling", + "proc-macro2", + "quote", + "syn 2.0.96", +] + +[[package]] +name = "equivalent" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" + +[[package]] +name = "errno" +version = "0.3.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33d852cb9b869c2a9b3df2f71a3074817f01e1844f839a144f5fcef059a4eb5d" +dependencies = [ + "libc", + "windows-sys 0.59.0", +] + +[[package]] +name = "euclid" +version = "0.22.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad9cdb4b747e485a12abb0e6566612956c7a1bafa3bdb8d682c5b6d403589e48" +dependencies = [ + "num-traits", + "serde", +] + +[[package]] +name = "event-listener" +version = "5.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3492acde4c3fc54c845eaab3eed8bd00c7a7d881f78bfc801e43a93dec1331ae" +dependencies = [ + "concurrent-queue", + "parking", + "pin-project-lite", +] + +[[package]] +name = "event-listener-strategy" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c3e4e0dd3673c1139bf041f3008816d9cf2946bbfac2945c09e523b8d7b05b2" +dependencies = [ + "event-listener", + "pin-project-lite", +] + +[[package]] +name = "fastrand" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" + +[[package]] +name = "fdeflate" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e6853b52649d4ac5c0bd02320cddc5ba956bdb407c4b75a2c6b75bf51500f8c" +dependencies = [ + "simd-adler32", +] + +[[package]] +name = "field-offset" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38e2275cc4e4fc009b0669731a1e5ab7ebf11f469eaede2bab9309a5b4d6057f" +dependencies = [ + "memoffset", + "rustc_version", +] + +[[package]] +name = "flate2" +version = "1.0.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c936bfdafb507ebbf50b8074c54fa31c5be9a1e7e5f467dd659697041407d07c" +dependencies = [ + "crc32fast", + "miniz_oxide", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "foreign-types" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d737d9aa519fb7b749cbc3b962edcf310a8dd1f4b67c91c4f83975dbdd17d965" +dependencies = [ + "foreign-types-macros", + "foreign-types-shared", +] + +[[package]] +name = "foreign-types-macros" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.96", +] + +[[package]] +name = "foreign-types-shared" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa9a19cbb55df58761df49b23516a86d432839add4af60fc256da840f66ed35b" + +[[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 = "frontend" +version = "0.1.0" +dependencies = [ + "dioxus", + "lazy_static", + "redis", + "serde", + "serde_json", +] + +[[package]] +name = "futf" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df420e2e84819663797d1ec6544b13c5be84629e7bb00dc960d6917db2987843" +dependencies = [ + "mac", + "new_debug_unreachable", +] + +[[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-lite" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f5edaec856126859abb19ed65f39e90fea3a9574b9707f13539acf4abf7eb532" +dependencies = [ + "fastrand", + "futures-core", + "futures-io", + "parking", + "pin-project-lite", +] + +[[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.96", +] + +[[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 = "fxhash" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" +dependencies = [ + "byteorder", +] + +[[package]] +name = "gdk" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9f245958c627ac99d8e529166f9823fb3b838d1d41fd2b297af3075093c2691" +dependencies = [ + "cairo-rs", + "gdk-pixbuf", + "gdk-sys", + "gio", + "glib", + "libc", + "pango", +] + +[[package]] +name = "gdk-pixbuf" +version = "0.18.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50e1f5f1b0bfb830d6ccc8066d18db35c487b1b2b1e8589b5dfe9f07e8defaec" +dependencies = [ + "gdk-pixbuf-sys", + "gio", + "glib", + "libc", + "once_cell", +] + +[[package]] +name = "gdk-pixbuf-sys" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9839ea644ed9c97a34d129ad56d38a25e6756f99f3a88e15cd39c20629caf7" +dependencies = [ + "gio-sys", + "glib-sys", + "gobject-sys", + "libc", + "system-deps", +] + +[[package]] +name = "gdk-sys" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c2d13f38594ac1e66619e188c6d5a1adb98d11b2fcf7894fc416ad76aa2f3f7" +dependencies = [ + "cairo-sys-rs", + "gdk-pixbuf-sys", + "gio-sys", + "glib-sys", + "gobject-sys", + "libc", + "pango-sys", + "pkg-config", + "system-deps", +] + +[[package]] +name = "gdkwayland-sys" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "140071d506d223f7572b9f09b5e155afbd77428cd5cc7af8f2694c41d98dfe69" +dependencies = [ + "gdk-sys", + "glib-sys", + "gobject-sys", + "libc", + "pkg-config", + "system-deps", +] + +[[package]] +name = "gdkx11" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3caa00e14351bebbc8183b3c36690327eb77c49abc2268dd4bd36b856db3fbfe" +dependencies = [ + "gdk", + "gdkx11-sys", + "gio", + "glib", + "libc", + "x11", +] + +[[package]] +name = "gdkx11-sys" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e2e7445fe01ac26f11601db260dd8608fe172514eb63b3b5e261ea6b0f4428d" +dependencies = [ + "gdk-sys", + "glib-sys", + "libc", + "system-deps", + "x11", +] + +[[package]] +name = "generational-box" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a673cf4fb0ea6a91aa86c08695756dfe875277a912cdbf33db9a9f62d47ed82b" +dependencies = [ + "parking_lot", + "tracing", +] + +[[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.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" +dependencies = [ + "cfg-if", + "libc", + "wasi 0.9.0+wasi-snapshot-preview1", +] + +[[package]] +name = "getrandom" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" +dependencies = [ + "cfg-if", + "libc", + "wasi 0.11.0+wasi-snapshot-preview1", +] + +[[package]] +name = "getrandom" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43a49c392881ce6d5c3b8cb70f98717b7c07aabbdff06687b9030dbfbe2725f8" +dependencies = [ + "cfg-if", + "libc", + "wasi 0.13.3+wasi-0.2.2", + "windows-targets 0.52.6", +] + +[[package]] +name = "gimli" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" + +[[package]] +name = "gio" +version = "0.18.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4fc8f532f87b79cbc51a79748f16a6828fb784be93145a322fa14d06d354c73" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-util", + "gio-sys", + "glib", + "libc", + "once_cell", + "pin-project-lite", + "smallvec", + "thiserror", +] + +[[package]] +name = "gio-sys" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37566df850baf5e4cb0dfb78af2e4b9898d817ed9263d1090a2df958c64737d2" +dependencies = [ + "glib-sys", + "gobject-sys", + "libc", + "system-deps", + "winapi", +] + +[[package]] +name = "glib" +version = "0.18.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "233daaf6e83ae6a12a52055f568f9d7cf4671dabb78ff9560ab6da230ce00ee5" +dependencies = [ + "bitflags 2.8.0", + "futures-channel", + "futures-core", + "futures-executor", + "futures-task", + "futures-util", + "gio-sys", + "glib-macros", + "glib-sys", + "gobject-sys", + "libc", + "memchr", + "once_cell", + "smallvec", + "thiserror", +] + +[[package]] +name = "glib-macros" +version = "0.18.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bb0228f477c0900c880fd78c8759b95c7636dbd7842707f49e132378aa2acdc" +dependencies = [ + "heck 0.4.1", + "proc-macro-crate 2.0.2", + "proc-macro-error", + "proc-macro2", + "quote", + "syn 2.0.96", +] + +[[package]] +name = "glib-sys" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "063ce2eb6a8d0ea93d2bf8ba1957e78dbab6be1c2220dd3daca57d5a9d869898" +dependencies = [ + "libc", + "system-deps", +] + +[[package]] +name = "global-hotkey" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b436093d1598b05e3b7fddc097b2bad32763f53a1beb25ab6f9718c6a60acd09" +dependencies = [ + "bitflags 2.8.0", + "cocoa 0.25.0", + "crossbeam-channel", + "keyboard-types", + "objc", + "once_cell", + "thiserror", + "windows-sys 0.52.0", + "x11-dl", +] + +[[package]] +name = "gloo-net" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c06f627b1a58ca3d42b45d6104bf1e1a03799df472df00988b6ba21accc10580" +dependencies = [ + "futures-channel", + "futures-core", + "futures-sink", + "gloo-utils", + "http", + "js-sys", + "pin-project", + "serde", + "serde_json", + "thiserror", + "wasm-bindgen", + "wasm-bindgen-futures", + "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 = "gobject-sys" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0850127b514d1c4a4654ead6dedadb18198999985908e6ffe4436f53c785ce44" +dependencies = [ + "glib-sys", + "libc", + "system-deps", +] + +[[package]] +name = "gtk" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd56fb197bfc42bd5d2751f4f017d44ff59fbb58140c6b49f9b3b2bdab08506a" +dependencies = [ + "atk", + "cairo-rs", + "field-offset", + "futures-channel", + "gdk", + "gdk-pixbuf", + "gio", + "glib", + "gtk-sys", + "gtk3-macros", + "libc", + "pango", + "pkg-config", +] + +[[package]] +name = "gtk-sys" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f29a1c21c59553eb7dd40e918be54dccd60c52b049b75119d5d96ce6b624414" +dependencies = [ + "atk-sys", + "cairo-sys-rs", + "gdk-pixbuf-sys", + "gdk-sys", + "gio-sys", + "glib-sys", + "gobject-sys", + "libc", + "pango-sys", + "system-deps", +] + +[[package]] +name = "gtk3-macros" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52ff3c5b21f14f0736fed6dcfc0bfb4225ebf5725f3c0209edeec181e4d73e9d" +dependencies = [ + "proc-macro-crate 1.3.1", + "proc-macro-error", + "proc-macro2", + "quote", + "syn 2.0.96", +] + +[[package]] +name = "half" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6dd08c532ae367adf81c312a4580bc67f1d0fe8bc9c460520283f4c0ff277888" +dependencies = [ + "cfg-if", + "crunchy", +] + +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" + +[[package]] +name = "hashbrown" +version = "0.14.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" + +[[package]] +name = "hashbrown" +version = "0.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" + +[[package]] +name = "heck" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" + +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + +[[package]] +name = "hermit-abi" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc" + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + +[[package]] +name = "home" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589533453244b0995c858700322199b2becb13b627df2851f64a2775d024abcf" +dependencies = [ + "windows-sys 0.59.0", +] + +[[package]] +name = "html5ever" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bea68cab48b8459f17cf1c944c67ddc572d272d9f2b274140f223ecb1da4a3b7" +dependencies = [ + "log", + "mac", + "markup5ever", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "http" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f16ca2af56261c99fba8bac40a10251ce8188205a4c448fbb745a2e4daa76fea" +dependencies = [ + "bytes", + "fnv", + "itoa 1.0.14", +] + +[[package]] +name = "http-body" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" +dependencies = [ + "bytes", + "http", +] + +[[package]] +name = "http-body-util" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f" +dependencies = [ + "bytes", + "futures-util", + "http", + "http-body", + "pin-project-lite", +] + +[[package]] +name = "httparse" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2d708df4e7140240a16cd6ab0ab65c972d7433ab77819ea693fde9c43811e2a" + +[[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", + "http-body", + "httparse", + "itoa 1.0.14", + "pin-project-lite", + "smallvec", + "tokio", + "want", +] + +[[package]] +name = "hyper-util" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df2dcfbe0677734ab2f3ffa7fa7bfd4706bfdc1ef393f2ee30184aed67e631b4" +dependencies = [ + "bytes", + "futures-channel", + "futures-util", + "http", + "http-body", + "hyper", + "pin-project-lite", + "socket2", + "tokio", + "tower-service", + "tracing", +] + +[[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.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdc8ff3388f852bede6b579ad4e978ab004f139284d7b28715f773507b946f6e" + +[[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.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8cafbf7aa791e9b22bec55a167906f9e1215fd475cd22adfcf660e03e989516" + +[[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.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67a8effbc3dd3e4ba1afa8ad918d5684b8868b3b26500753effea8d2eed19569" + +[[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.96", +] + +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + +[[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 = "indexmap" +version = "1.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +dependencies = [ + "autocfg", + "hashbrown 0.12.3", +] + +[[package]] +name = "indexmap" +version = "2.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c9c992b02b5b4c94ea26e32fe5bccb7aa7d9f390ab5c1221ff895bc7ea8b652" +dependencies = [ + "equivalent", + "hashbrown 0.15.2", +] + +[[package]] +name = "infer" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a6c16b11a665b26aeeb9b1d7f954cdeb034be38dd00adab4f2ae921a8fee804" +dependencies = [ + "cfb", +] + +[[package]] +name = "instant" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "ipnet" +version = "2.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" + +[[package]] +name = "itoa" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4" + +[[package]] +name = "itoa" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674" + +[[package]] +name = "javascriptcore-rs" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca5671e9ffce8ffba57afc24070e906da7fc4b1ba66f2cabebf61bf2ea257fcc" +dependencies = [ + "bitflags 1.3.2", + "glib", + "javascriptcore-rs-sys", +] + +[[package]] +name = "javascriptcore-rs-sys" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af1be78d14ffa4b75b66df31840478fef72b51f8c2465d4ca7c194da9f7a5124" +dependencies = [ + "glib-sys", + "gobject-sys", + "libc", + "system-deps", +] + +[[package]] +name = "jni" +version = "0.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97" +dependencies = [ + "cesu8", + "cfg-if", + "combine", + "jni-sys", + "log", + "thiserror", + "walkdir", + "windows-sys 0.45.0", +] + +[[package]] +name = "jni-sys" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" + +[[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 = "keyboard-types" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b750dcadc39a09dbadd74e118f6dd6598df77fa01df0cfcdc52c28dece74528a" +dependencies = [ + "bitflags 2.8.0", + "serde", + "unicode-segmentation", +] + +[[package]] +name = "kuchikiki" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f29e4755b7b995046f510a7520c42b2fed58b77bd94d5a87a8eb43d2fd126da8" +dependencies = [ + "cssparser", + "html5ever", + "indexmap 1.9.3", + "matches", + "selectors", +] + +[[package]] +name = "lazy-js-bundle" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e49596223b9d9d4947a14a25c142a6e7d8ab3f27eb3ade269d238bb8b5c267e2" + +[[package]] +name = "lazy_static" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" + +[[package]] +name = "libappindicator" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03589b9607c868cc7ae54c0b2a22c8dc03dd41692d48f2d7df73615c6a95dc0a" +dependencies = [ + "glib", + "gtk", + "gtk-sys", + "libappindicator-sys", + "log", +] + +[[package]] +name = "libappindicator-sys" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e9ec52138abedcc58dc17a7c6c0c00a2bdb4f3427c7f63fa97fd0d859155caf" +dependencies = [ + "gtk-sys", + "libloading", + "once_cell", +] + +[[package]] +name = "libc" +version = "0.2.169" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5aba8db14291edd000dfcc4d620c7ebfb122c613afb886ca8803fa4e128a20a" + +[[package]] +name = "libloading" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f" +dependencies = [ + "cfg-if", + "winapi", +] + +[[package]] +name = "libredox" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" +dependencies = [ + "bitflags 2.8.0", + "libc", +] + +[[package]] +name = "libxdo" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00333b8756a3d28e78def82067a377de7fa61b24909000aeaa2b446a948d14db" +dependencies = [ + "libxdo-sys", +] + +[[package]] +name = "libxdo-sys" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db23b9e7e2b7831bbd8aac0bbeeeb7b68cbebc162b227e7052e8e55829a09212" +dependencies = [ + "libc", + "x11", +] + +[[package]] +name = "linux-raw-sys" +version = "0.4.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" + +[[package]] +name = "litemap" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ee93343901ab17bd981295f2cf0026d4ad018c7c31ba84549a4ddbb47a45104" + +[[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.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04cbf5b083de1c7e0222a7a51dbfdba1cbe1c6ab0b15e29fff3f6c077fd9cd9f" + +[[package]] +name = "longest-increasing-subsequence" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3bd0dd2cd90571056fdb71f6275fada10131182f84899f4b2a916e565d81d86" + +[[package]] +name = "mac" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c41e0c4fef86961ac6d6f8a82609f55f31b05e4fce149ac5710e439df7619ba4" + +[[package]] +name = "malloc_buf" +version = "0.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb" +dependencies = [ + "libc", +] + +[[package]] +name = "manganis" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "317af44b15e7605b85f04525449a3bb631753040156c9b318e6cba8a3ea4ef73" +dependencies = [ + "const-serialize", + "manganis-core", + "manganis-macro", +] + +[[package]] +name = "manganis-core" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c38bee65cc725b2bba23b5dbb290f57c8be8fadbe2043fb7e2ce73022ea06519" +dependencies = [ + "const-serialize", + "dioxus-cli-config", + "dioxus-core-types", + "serde", +] + +[[package]] +name = "manganis-macro" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9f4f71310913c40174d9f0cfcbcb127dad0329ecdb3945678a120db22d3d065" +dependencies = [ + "dunce", + "manganis-core", + "proc-macro2", + "quote", + "syn 2.0.96", +] + +[[package]] +name = "markup5ever" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a2629bb1404f3d34c2e921f21fd34ba00b206124c81f65c50b43b6aaefeb016" +dependencies = [ + "log", + "phf 0.10.1", + "phf_codegen 0.10.0", + "string_cache", + "string_cache_codegen", + "tendril", +] + +[[package]] +name = "matches" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2532096657941c2fea9c289d370a250971c689d4f143798ff67113ec042024a5" + +[[package]] +name = "memchr" +version = "2.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" + +[[package]] +name = "memoffset" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a" +dependencies = [ + "autocfg", +] + +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[package]] +name = "mime_guess" +version = "2.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7c44f8e672c00fe5308fa235f821cb4198414e1c77935c1ab6948d3fd78550e" +dependencies = [ + "mime", + "unicase", +] + +[[package]] +name = "miniz_oxide" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8402cab7aefae129c6977bb0ff1b8fd9a04eb5b51efc50a70bea51cda0c7924" +dependencies = [ + "adler2", + "simd-adler32", +] + +[[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 = "muda" +version = "0.11.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c47e7625990fc1af2226ea4f34fb2412b03c12639fcb91868581eb3a6893453" +dependencies = [ + "cocoa 0.25.0", + "crossbeam-channel", + "gtk", + "keyboard-types", + "libxdo", + "objc", + "once_cell", + "png", + "thiserror", + "windows-sys 0.52.0", +] + +[[package]] +name = "muda" +version = "0.15.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdae9c00e61cc0579bcac625e8ad22104c60548a025bfc972dc83868a28e1484" +dependencies = [ + "crossbeam-channel", + "dpi", + "gtk", + "keyboard-types", + "libxdo", + "objc2", + "objc2-app-kit", + "objc2-foundation", + "once_cell", + "png", + "thiserror", + "windows-sys 0.59.0", +] + +[[package]] +name = "ndk" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3f42e7bbe13d351b6bead8286a43aac9534b82bd3cc43e47037f012ebfd62d4" +dependencies = [ + "bitflags 2.8.0", + "jni-sys", + "log", + "ndk-sys", + "num_enum", + "raw-window-handle 0.6.2", + "thiserror", +] + +[[package]] +name = "ndk-context" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b" + +[[package]] +name = "ndk-sys" +version = "0.6.0+11769913" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee6cda3051665f1fb8d9e08fc35c96d5a244fb1be711a03b71118828afc9a873" +dependencies = [ + "jni-sys", +] + +[[package]] +name = "new_debug_unreachable" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" + +[[package]] +name = "nix" +version = "0.27.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2eb04e9c688eff1c89d72b407f168cf79bb9e867a9d3323ed6c01519eb9cc053" +dependencies = [ + "bitflags 2.8.0", + "cfg-if", + "libc", + "memoffset", +] + +[[package]] +name = "nodrop" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72ef4a56884ca558e5ddb05a1d1e7e1bfd9a68d9ed024c21704cc98872dae1bb" + +[[package]] +name = "num-bigint" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" +dependencies = [ + "num-integer", + "num-traits", +] + +[[package]] +name = "num-integer" +version = "0.1.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", +] + +[[package]] +name = "num_enum" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e613fc340b2220f734a8595782c551f1250e969d87d3be1ae0579e8d4065179" +dependencies = [ + "num_enum_derive", +] + +[[package]] +name = "num_enum_derive" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af1844ef2428cc3e1cb900be36181049ef3d3193c63e43026cfe202983b27a56" +dependencies = [ + "proc-macro-crate 2.0.2", + "proc-macro2", + "quote", + "syn 2.0.96", +] + +[[package]] +name = "objc" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1" +dependencies = [ + "malloc_buf", + "objc_exception", +] + +[[package]] +name = "objc-foundation" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1add1b659e36c9607c7aab864a76c7a4c2760cd0cd2e120f3fb8b952c7e22bf9" +dependencies = [ + "block", + "objc", + "objc_id", +] + +[[package]] +name = "objc-sys" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdb91bdd390c7ce1a8607f35f3ca7151b65afc0ff5ff3b34fa350f7d7c7e4310" + +[[package]] +name = "objc2" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46a785d4eeff09c14c487497c162e92766fbb3e4059a71840cecc03d9a50b804" +dependencies = [ + "objc-sys", + "objc2-encode", +] + +[[package]] +name = "objc2-app-kit" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4e89ad9e3d7d297152b17d39ed92cd50ca8063a89a9fa569046d41568891eff" +dependencies = [ + "bitflags 2.8.0", + "block2", + "libc", + "objc2", + "objc2-core-data", + "objc2-core-image", + "objc2-foundation", + "objc2-quartz-core", +] + +[[package]] +name = "objc2-core-data" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "617fbf49e071c178c0b24c080767db52958f716d9eabdf0890523aeae54773ef" +dependencies = [ + "bitflags 2.8.0", + "block2", + "objc2", + "objc2-foundation", +] + +[[package]] +name = "objc2-core-image" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55260963a527c99f1819c4f8e3b47fe04f9650694ef348ffd2227e8196d34c80" +dependencies = [ + "block2", + "objc2", + "objc2-foundation", + "objc2-metal", +] + +[[package]] +name = "objc2-encode" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef25abbcd74fb2609453eb695bd2f860d389e457f67dc17cafc8b8cbc89d0c33" + +[[package]] +name = "objc2-foundation" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ee638a5da3799329310ad4cfa62fbf045d5f56e3ef5ba4149e7452dcf89d5a8" +dependencies = [ + "bitflags 2.8.0", + "block2", + "libc", + "objc2", +] + +[[package]] +name = "objc2-metal" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd0cba1276f6023976a406a14ffa85e1fdd19df6b0f737b063b95f6c8c7aadd6" +dependencies = [ + "bitflags 2.8.0", + "block2", + "objc2", + "objc2-foundation", +] + +[[package]] +name = "objc2-quartz-core" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e42bee7bff906b14b167da2bac5efe6b6a07e6f7c0a21a7308d40c960242dc7a" +dependencies = [ + "bitflags 2.8.0", + "block2", + "objc2", + "objc2-foundation", + "objc2-metal", +] + +[[package]] +name = "objc_exception" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad970fb455818ad6cba4c122ad012fae53ae8b4795f86378bce65e4f6bab2ca4" +dependencies = [ + "cc", +] + +[[package]] +name = "objc_id" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c92d4ddb4bd7b50d730c215ff871754d0da6b2178849f8a2a2ab69712d0c073b" +dependencies = [ + "objc", +] + +[[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.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" + +[[package]] +name = "option-ext" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" + +[[package]] +name = "ordered-stream" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9aa2b01e1d916879f73a53d01d1d6cee68adbb31d6d9177a8cfce093cced1d50" +dependencies = [ + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "pango" +version = "0.18.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ca27ec1eb0457ab26f3036ea52229edbdb74dee1edd29063f5b9b010e7ebee4" +dependencies = [ + "gio", + "glib", + "libc", + "once_cell", + "pango-sys", +] + +[[package]] +name = "pango-sys" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "436737e391a843e5933d6d9aa102cb126d501e815b83601365a948a518555dc5" +dependencies = [ + "glib-sys", + "gobject-sys", + "libc", + "system-deps", +] + +[[package]] +name = "parking" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" + +[[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 0.52.6", +] + +[[package]] +name = "percent-encoding" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" + +[[package]] +name = "phf" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3dfb61232e34fcb633f43d12c58f83c1df82962dcdfa565a4e866ffc17dafe12" +dependencies = [ + "phf_macros", + "phf_shared 0.8.0", + "proc-macro-hack", +] + +[[package]] +name = "phf" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fabbf1ead8a5bcbc20f5f8b939ee3f5b0f6f281b6ad3468b84656b658b455259" +dependencies = [ + "phf_shared 0.10.0", +] + +[[package]] +name = "phf_codegen" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cbffee61585b0411840d3ece935cce9cb6321f01c45477d30066498cd5e1a815" +dependencies = [ + "phf_generator 0.8.0", + "phf_shared 0.8.0", +] + +[[package]] +name = "phf_codegen" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fb1c3a8bc4dd4e5cfce29b44ffc14bedd2ee294559a294e2a4d4c9e9a6a13cd" +dependencies = [ + "phf_generator 0.10.0", + "phf_shared 0.10.0", +] + +[[package]] +name = "phf_generator" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17367f0cc86f2d25802b2c26ee58a7b23faeccf78a396094c13dced0d0182526" +dependencies = [ + "phf_shared 0.8.0", + "rand 0.7.3", +] + +[[package]] +name = "phf_generator" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d5285893bb5eb82e6aaf5d59ee909a06a16737a8970984dd7746ba9283498d6" +dependencies = [ + "phf_shared 0.10.0", + "rand 0.8.5", +] + +[[package]] +name = "phf_macros" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f6fde18ff429ffc8fe78e2bf7f8b7a5a5a6e2a8b58bc5a9ac69198bbda9189c" +dependencies = [ + "phf_generator 0.8.0", + "phf_shared 0.8.0", + "proc-macro-hack", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "phf_shared" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c00cf8b9eafe68dde5e9eaa2cef8ee84a9336a47d566ec55ca16589633b65af7" +dependencies = [ + "siphasher", +] + +[[package]] +name = "phf_shared" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6796ad771acdc0123d2a88dc428b5e38ef24456743ddb1744ed628f9815c096" +dependencies = [ + "siphasher", +] + +[[package]] +name = "pin-project" +version = "1.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e2ec53ad785f4d35dac0adea7f7dc6f1bb277ad84a680c7afefeae05d1f5916" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d56a66c0c55993aa927429d0f8a0abfd74f084e4d9c192cffed01e418d83eefb" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.96", +] + +[[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 = "piper" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96c8c490f422ef9a4efd2cb5b42b76c8613d7e7dfc1caf667b8a3350a5acc066" +dependencies = [ + "atomic-waker", + "fastrand", + "futures-io", +] + +[[package]] +name = "pkg-config" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" + +[[package]] +name = "png" +version = "0.17.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82151a2fc869e011c153adc57cf2789ccb8d9906ce52c0b39a6b5697749d7526" +dependencies = [ + "bitflags 1.3.2", + "crc32fast", + "fdeflate", + "flate2", + "miniz_oxide", +] + +[[package]] +name = "polling" +version = "3.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a604568c3202727d1507653cb121dbd627a58684eb09a820fd746bee38b4442f" +dependencies = [ + "cfg-if", + "concurrent-queue", + "hermit-abi", + "pin-project-lite", + "rustix", + "tracing", + "windows-sys 0.59.0", +] + +[[package]] +name = "pollster" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22686f4785f02a4fcc856d3b3bb19bf6c8160d103f7a99cc258bddd0251dc7f2" + +[[package]] +name = "ppv-lite86" +version = "0.2.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" +dependencies = [ + "zerocopy", +] + +[[package]] +name = "precomputed-hash" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" + +[[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 0.19.15", +] + +[[package]] +name = "proc-macro-crate" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b00f26d3400549137f92511a46ac1cd8ce37cb5598a96d382381458b992a5d24" +dependencies = [ + "toml_datetime", + "toml_edit 0.20.2", +] + +[[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-macro-hack" +version = "0.5.20+deprecated" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068" + +[[package]] +name = "proc-macro2" +version = "1.0.93" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60946a68e5f9d28b0dc1c21bb8a97ee7d018a8b322fa57838ba31cc878e22d99" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "proc-macro2-diagnostics" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af066a9c399a26e020ada66a034357a868728e72cd426f3adcd35f80d88d88c8" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.96", + "version_check", +] + +[[package]] +name = "quote" +version = "1.0.38" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e4dccaaaf89514f546c693ddc140f729f958c247918a13380cccc6078391acc" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "rand" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" +dependencies = [ + "getrandom 0.1.16", + "libc", + "rand_chacha 0.2.2", + "rand_core 0.5.1", + "rand_hc", + "rand_pcg", +] + +[[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_chacha" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" +dependencies = [ + "ppv-lite86", + "rand_core 0.5.1", +] + +[[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_core" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" +dependencies = [ + "getrandom 0.1.16", +] + +[[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_hc" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" +dependencies = [ + "rand_core 0.5.1", +] + +[[package]] +name = "rand_pcg" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16abd0c1b639e9eb4d7c50c0b8100b0d0f849be2349829c740fe8e6eb4816429" +dependencies = [ + "rand_core 0.5.1", +] + +[[package]] +name = "raw-window-handle" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2ff9a1f06a88b01621b7ae906ef0211290d1c8a168a15542486a8f61c0833b9" + +[[package]] +name = "raw-window-handle" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20675572f6f24e9e76ef639bc5552774ed45f1c30e2951e1e99c59888861c539" + +[[package]] +name = "redis" +version = "0.28.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e37ec3fd44bea2ec947ba6cc7634d7999a6590aca7c35827c250bc0de502bda6" +dependencies = [ + "arc-swap", + "combine", + "itoa 1.0.14", + "num-bigint", + "percent-encoding", + "ryu", + "url", +] + +[[package]] +name = "redox_syscall" +version = "0.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03a862b389f93e68874fbf580b9de08dd02facb9a788ebadaf4a3fd33cf58834" +dependencies = [ + "bitflags 2.8.0", +] + +[[package]] +name = "redox_users" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" +dependencies = [ + "getrandom 0.2.15", + "libredox", + "thiserror", +] + +[[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 = "reqwest" +version = "0.12.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43e734407157c3c2034e0258f5e4473ddb361b1e85f95a66690d67264d7cd1da" +dependencies = [ + "base64", + "bytes", + "futures-core", + "futures-util", + "http", + "http-body", + "http-body-util", + "hyper", + "hyper-util", + "ipnet", + "js-sys", + "log", + "mime", + "mime_guess", + "once_cell", + "percent-encoding", + "pin-project-lite", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper", + "tokio", + "tokio-util", + "tower", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "wasm-streams", + "web-sys", + "windows-registry", +] + +[[package]] +name = "rfd" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25a73a7337fc24366edfca76ec521f51877b114e42dab584008209cca6719251" +dependencies = [ + "ashpd", + "block", + "dispatch", + "js-sys", + "log", + "objc", + "objc-foundation", + "objc_id", + "pollster", + "raw-window-handle 0.6.2", + "urlencoding", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "windows-sys 0.48.0", +] + +[[package]] +name = "rustc-demangle" +version = "0.1.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" + +[[package]] +name = "rustc-hash" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" + +[[package]] +name = "rustc_version" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" +dependencies = [ + "semver", +] + +[[package]] +name = "rustix" +version = "0.38.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" +dependencies = [ + "bitflags 2.8.0", + "errno", + "libc", + "linux-raw-sys", + "windows-sys 0.59.0", +] + +[[package]] +name = "rustversion" +version = "1.0.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7c45b9784283f1b2e7fb61b42047c2fd678ef0960d4f6f1eba131594cc369d4" + +[[package]] +name = "ryu" +version = "1.0.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ea1a2d0a644769cc99faa24c3ad26b379b786fe7c36fd3c546254801650e6dd" + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "selectors" +version = "0.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df320f1889ac4ba6bc0cdc9c9af7af4bd64bb927bccdf32d81140dc1f9be12fe" +dependencies = [ + "bitflags 1.3.2", + "cssparser", + "derive_more", + "fxhash", + "log", + "matches", + "phf 0.8.0", + "phf_codegen 0.8.0", + "precomputed-hash", + "servo_arc", + "smallvec", + "thin-slice", +] + +[[package]] +name = "semver" +version = "1.0.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f79dfe2d285b0488816f30e700a7438c5a73d816b5b7d3ac72fbc48b0d185e03" + +[[package]] +name = "send_wrapper" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73" +dependencies = [ + "futures-core", +] + +[[package]] +name = "serde" +version = "1.0.217" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02fc4265df13d6fa1d00ecff087228cc0a2b5f3c0e87e258d8b94a156e984c70" +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_derive" +version = "1.0.217" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a9bf7cf98d04a2b28aead066b7496853d4779c9cc183c440dbac457641e19a0" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.96", +] + +[[package]] +name = "serde_json" +version = "1.0.138" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d434192e7da787e94a6ea7e9670b26a036d0ca41e0b7efb2676dd32bae872949" +dependencies = [ + "itoa 1.0.14", + "memchr", + "ryu", + "serde", +] + +[[package]] +name = "serde_qs" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0431a35568651e363364210c91983c1da5eb29404d9f0928b67d4ebcfa7d330c" +dependencies = [ + "percent-encoding", + "serde", + "thiserror", +] + +[[package]] +name = "serde_repr" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.96", +] + +[[package]] +name = "serde_spanned" +version = "0.6.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87607cb1398ed59d48732e575a4c28a7a8ebf2454b964fe3f224f2afc07909e1" +dependencies = [ + "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 1.0.14", + "ryu", + "serde", +] + +[[package]] +name = "server_fn" +version = "0.6.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fae7a3038a32e5a34ba32c6c45eb4852f8affaf8b794ebfcd4b1099e2d62ebe" +dependencies = [ + "bytes", + "const_format", + "dashmap", + "futures", + "gloo-net", + "http", + "js-sys", + "once_cell", + "reqwest", + "send_wrapper", + "serde", + "serde_json", + "serde_qs", + "server_fn_macro_default", + "thiserror", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "wasm-streams", + "web-sys", + "xxhash-rust", +] + +[[package]] +name = "server_fn_macro" +version = "0.6.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "faaaf648c6967aef78177c0610478abb5a3455811f401f3c62d10ae9bd3901a1" +dependencies = [ + "const_format", + "convert_case 0.6.0", + "proc-macro2", + "quote", + "syn 2.0.96", + "xxhash-rust", +] + +[[package]] +name = "server_fn_macro_default" +version = "0.6.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f2aa8119b558a17992e0ac1fd07f080099564f24532858811ce04f742542440" +dependencies = [ + "server_fn_macro", + "syn 2.0.96", +] + +[[package]] +name = "servo_arc" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d98238b800e0d1576d8b6e3de32827c2d74bee68bb97748dcf5071fb53965432" +dependencies = [ + "nodrop", + "stable_deref_trait", +] + +[[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 = "sha2" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "sharded-slab" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" +dependencies = [ + "lazy_static", +] + +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "signal-hook" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8621587d4798caf8eb44879d42e56b9a93ea5dcd315a6487c357130095b62801" +dependencies = [ + "libc", + "signal-hook-registry", +] + +[[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 = "simd-adler32" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" + +[[package]] +name = "siphasher" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" + +[[package]] +name = "slab" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" +dependencies = [ + "autocfg", +] + +[[package]] +name = "sledgehammer_bindgen" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49e83e178d176459c92bc129cfd0958afac3ced925471b889b3a75546cfc4133" +dependencies = [ + "sledgehammer_bindgen_macro", + "wasm-bindgen", +] + +[[package]] +name = "sledgehammer_bindgen_macro" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33a1b4f13e2bbf2f5b29d09dfebc9de69229ffee245aed80e3b70f9b5fd28c06" +dependencies = [ + "quote", + "syn 2.0.96", +] + +[[package]] +name = "sledgehammer_utils" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "debdd4b83524961983cea3c55383b3910fd2f24fd13a188f5b091d2d504a61ae" +dependencies = [ + "rustc-hash", +] + +[[package]] +name = "slotmap" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbff4acf519f630b3a3ddcfaea6c06b42174d9a44bc70c620e9ed1649d58b82a" +dependencies = [ + "serde", + "version_check", +] + +[[package]] +name = "smallvec" +version = "1.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" + +[[package]] +name = "socket2" +version = "0.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c970269d99b64e60ec3bd6ad27270092a5394c4e309314b18ae3fe575695fbe8" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "soup3" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "471f924a40f31251afc77450e781cb26d55c0b650842efafc9c6cbd2f7cc4f9f" +dependencies = [ + "futures-channel", + "gio", + "glib", + "libc", + "soup3-sys", +] + +[[package]] +name = "soup3-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ebe8950a680a12f24f15ebe1bf70db7af98ad242d9db43596ad3108aab86c27" +dependencies = [ + "gio-sys", + "glib-sys", + "gobject-sys", + "libc", + "system-deps", +] + +[[package]] +name = "stable_deref_trait" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" + +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + +[[package]] +name = "string_cache" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f91138e76242f575eb1d3b38b4f1362f10d3a43f47d182a5b359af488a02293b" +dependencies = [ + "new_debug_unreachable", + "once_cell", + "parking_lot", + "phf_shared 0.10.0", + "precomputed-hash", + "serde", +] + +[[package]] +name = "string_cache_codegen" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6bb30289b722be4ff74a408c3cc27edeaad656e06cb1fe8fa9231fa59c728988" +dependencies = [ + "phf_generator 0.10.0", + "phf_shared 0.10.0", + "proc-macro2", + "quote", +] + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.96" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5d0adab1ae378d7f53bdebc67a39f1f151407ef230f0ce2883572f5d8985c80" +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" +dependencies = [ + "futures-core", +] + +[[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.96", +] + +[[package]] +name = "system-deps" +version = "6.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3e535eb8dded36d55ec13eddacd30dec501792ff23a0b1682c38601b8cf2349" +dependencies = [ + "cfg-expr", + "heck 0.5.0", + "pkg-config", + "toml", + "version-compare", +] + +[[package]] +name = "tao" +version = "0.30.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6682a07cf5bab0b8a2bd20d0a542917ab928b5edb75ebd4eda6b05cbaab872da" +dependencies = [ + "bitflags 2.8.0", + "cocoa 0.26.0", + "core-foundation 0.10.0", + "core-graphics 0.24.0", + "crossbeam-channel", + "dispatch", + "dlopen2", + "dpi", + "gdkwayland-sys", + "gdkx11-sys", + "gtk", + "instant", + "jni", + "lazy_static", + "libc", + "log", + "ndk", + "ndk-context", + "ndk-sys", + "objc", + "once_cell", + "parking_lot", + "raw-window-handle 0.5.2", + "raw-window-handle 0.6.2", + "scopeguard", + "tao-macros", + "unicode-segmentation", + "url", + "windows", + "windows-core", + "windows-version", + "x11-dl", +] + +[[package]] +name = "tao-macros" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4e16beb8b2ac17db28eab8bca40e62dbfbb34c0fcdc6d9826b11b7b5d047dfd" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.96", +] + +[[package]] +name = "target-lexicon" +version = "0.12.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" + +[[package]] +name = "tempfile" +version = "3.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38c246215d7d24f48ae091a2902398798e05d978b24315d6efbc00ede9a8bb91" +dependencies = [ + "cfg-if", + "fastrand", + "getrandom 0.3.1", + "once_cell", + "rustix", + "windows-sys 0.59.0", +] + +[[package]] +name = "tendril" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d24a120c5fc464a3458240ee02c299ebcb9d67b5249c8848b09d639dca8d7bb0" +dependencies = [ + "futf", + "mac", + "utf-8", +] + +[[package]] +name = "thin-slice" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8eaa81235c7058867fa8c0e7314f33dcce9c215f535d1913822a2b3f5e289f3c" + +[[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.96", +] + +[[package]] +name = "thread_local" +version = "1.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" +dependencies = [ + "cfg-if", + "once_cell", +] + +[[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.43.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d61fa4ffa3de412bfea335c6ecff681de2b609ba3c77ef3e00e521813a9ed9e" +dependencies = [ + "backtrace", + "bytes", + "libc", + "mio", + "pin-project-lite", + "signal-hook-registry", + "socket2", + "tokio-macros", + "tracing", + "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.96", +] + +[[package]] +name = "tokio-util" +version = "0.7.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7fcaa8d55a2bdd6b83ace262b016eca0d79ee02818c5c1bcdf0305114081078" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "toml" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "185d8ab0dfbb35cf1399a6344d8484209c088f75f8f68230da55d48d95d43e3d" +dependencies = [ + "serde", + "serde_spanned", + "toml_datetime", + "toml_edit 0.20.2", +] + +[[package]] +name = "toml_datetime" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_edit" +version = "0.19.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" +dependencies = [ + "indexmap 2.7.1", + "toml_datetime", + "winnow", +] + +[[package]] +name = "toml_edit" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "396e4d48bbb2b7554c944bde63101b5ae446cff6ec4a24227428f15eb72ef338" +dependencies = [ + "indexmap 2.7.1", + "serde", + "serde_spanned", + "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", +] + +[[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 = [ + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.96", +] + +[[package]] +name = "tracing-core" +version = "0.1.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" +dependencies = [ + "once_cell", +] + +[[package]] +name = "tracing-subscriber" +version = "0.3.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8189decb5ac0fa7bc8b96b7cb9b2701d60d48805aca84a238004d665fcc4008" +dependencies = [ + "sharded-slab", + "thread_local", + "tracing-core", +] + +[[package]] +name = "tracing-wasm" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4575c663a174420fa2d78f4108ff68f65bf2fbb7dd89f33749b6e826b3626e07" +dependencies = [ + "tracing", + "tracing-subscriber", + "wasm-bindgen", +] + +[[package]] +name = "tray-icon" +version = "0.19.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d48a05076dd272615d03033bf04f480199f7d1b66a8ac64d75c625fc4a70c06b" +dependencies = [ + "core-graphics 0.24.0", + "crossbeam-channel", + "dirs", + "libappindicator", + "muda 0.15.3", + "objc2", + "objc2-app-kit", + "objc2-foundation", + "once_cell", + "png", + "thiserror", + "windows-sys 0.59.0", +] + +[[package]] +name = "try-lock" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" + +[[package]] +name = "tungstenite" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e2e2ce1e47ed2994fd43b04c8f618008d4cabdd5ee34027cf14f9d918edd9c8" +dependencies = [ + "byteorder", + "bytes", + "data-encoding", + "http", + "httparse", + "log", + "rand 0.8.5", + "sha1", + "thiserror", + "utf-8", +] + +[[package]] +name = "typenum" +version = "1.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" + +[[package]] +name = "uds_windows" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89daebc3e6fd160ac4aa9fc8b3bf71e1f74fbf92367ae71fb83a037e8bf164b9" +dependencies = [ + "memoffset", + "tempfile", + "winapi", +] + +[[package]] +name = "unicase" +version = "2.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75b844d17643ee918803943289730bec8aac480150456169e647ed0b576ba539" + +[[package]] +name = "unicode-ident" +version = "1.0.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a210d160f08b701c8721ba1c726c11662f877ea6b7094007e1ca9a1041945034" + +[[package]] +name = "unicode-segmentation" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" + +[[package]] +name = "unicode-xid" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" + +[[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", + "serde", +] + +[[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 = "uuid" +version = "1.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3758f5e68192bb96cc8f9b7e2c2cfdabb435499a28499a42f8f984092adad4b" + +[[package]] +name = "version-compare" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "852e951cb7832cb45cb1169900d19760cfa39b82bc0ea9c0e5a14ae88411c98b" + +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[package]] +name = "walkdir" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" +dependencies = [ + "same-file", + "winapi-util", +] + +[[package]] +name = "want" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" +dependencies = [ + "try-lock", +] + +[[package]] +name = "warnings" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64f68998838dab65727c9b30465595c6f7c953313559371ca8bf31759b3680ad" +dependencies = [ + "pin-project", + "tracing", + "warnings-macro", +] + +[[package]] +name = "warnings-macro" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59195a1db0e95b920366d949ba5e0d3fc0e70b67c09be15ce5abb790106b0571" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.96", +] + +[[package]] +name = "wasi" +version = "0.9.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" + +[[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.13.3+wasi-0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26816d2e1a4a36a2940b96c5296ce403917633dff8f3440e9b236ed6f6bacad2" +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.96", + "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.96", + "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-streams" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15053d8d85c7eccdbefef60f06769760a563c7f0a9d6902a13d35c7800b0ad65" +dependencies = [ + "futures-util", + "js-sys", + "wasm-bindgen", + "wasm-bindgen-futures", + "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 = "webbrowser" +version = "0.8.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db67ae75a9405634f5882791678772c94ff5f16a66535aae186e26aa0841fc8b" +dependencies = [ + "core-foundation 0.9.4", + "home", + "jni", + "log", + "ndk-context", + "objc", + "raw-window-handle 0.5.2", + "url", + "web-sys", +] + +[[package]] +name = "webkit2gtk" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76b1bc1e54c581da1e9f179d0b38512ba358fb1af2d634a1affe42e37172361a" +dependencies = [ + "bitflags 1.3.2", + "cairo-rs", + "gdk", + "gdk-sys", + "gio", + "gio-sys", + "glib", + "glib-sys", + "gobject-sys", + "gtk", + "gtk-sys", + "javascriptcore-rs", + "libc", + "once_cell", + "soup3", + "webkit2gtk-sys", +] + +[[package]] +name = "webkit2gtk-sys" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62daa38afc514d1f8f12b8693d30d5993ff77ced33ce30cd04deebc267a6d57c" +dependencies = [ + "bitflags 1.3.2", + "cairo-sys-rs", + "gdk-sys", + "gio-sys", + "glib-sys", + "gobject-sys", + "gtk-sys", + "javascriptcore-rs-sys", + "libc", + "pkg-config", + "soup3-sys", + "system-deps", +] + +[[package]] +name = "webview2-com" +version = "0.33.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f61ff3d9d0ee4efcb461b14eb3acfda2702d10dc329f339303fc3e57215ae2c" +dependencies = [ + "webview2-com-macros", + "webview2-com-sys", + "windows", + "windows-core", + "windows-implement", + "windows-interface", +] + +[[package]] +name = "webview2-com-macros" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d228f15bba3b9d56dde8bddbee66fa24545bd17b48d5128ccf4a8742b18e431" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.96", +] + +[[package]] +name = "webview2-com-sys" +version = "0.33.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3a3e2eeb58f82361c93f9777014668eb3d07e7d174ee4c819575a9208011886" +dependencies = [ + "thiserror", + "windows", + "windows-core", +] + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[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 = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd04d41d93c4992d421894c18c8b43496aa748dd4c081bac0dc93eb0489272b6" +dependencies = [ + "windows-core", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-core" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ba6d44ec8c2591c134257ce647b7ea6b20335bf6379a27dac5f1641fcf59f99" +dependencies = [ + "windows-implement", + "windows-interface", + "windows-result", + "windows-strings", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-implement" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.96", +] + +[[package]] +name = "windows-interface" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.96", +] + +[[package]] +name = "windows-registry" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e400001bb720a623c1c69032f8e3e4cf09984deec740f007dd2b03ec864804b0" +dependencies = [ + "windows-result", + "windows-strings", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-result" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-strings" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" +dependencies = [ + "windows-result", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.45.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" +dependencies = [ + "windows-targets 0.42.2", +] + +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets 0.48.5", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-targets" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" +dependencies = [ + "windows_aarch64_gnullvm 0.42.2", + "windows_aarch64_msvc 0.42.2", + "windows_i686_gnu 0.42.2", + "windows_i686_msvc 0.42.2", + "windows_x86_64_gnu 0.42.2", + "windows_x86_64_gnullvm 0.42.2", + "windows_x86_64_msvc 0.42.2", +] + +[[package]] +name = "windows-targets" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", +] + +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm 0.52.6", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", +] + +[[package]] +name = "windows-targets" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1e4c7e8ceaaf9cb7d7507c974735728ab453b67ef8f18febdd7c11fe59dca8b" +dependencies = [ + "windows_aarch64_gnullvm 0.53.0", + "windows_aarch64_msvc 0.53.0", + "windows_i686_gnu 0.53.0", + "windows_i686_gnullvm 0.53.0", + "windows_i686_msvc 0.53.0", + "windows_x86_64_gnu 0.53.0", + "windows_x86_64_gnullvm 0.53.0", + "windows_x86_64_msvc 0.53.0", +] + +[[package]] +name = "windows-version" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c12476c23a74725c539b24eae8bfc0dac4029c39cdb561d9f23616accd4ae26d" +dependencies = [ + "windows-targets 0.53.0", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + +[[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_gnullvm" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c" + +[[package]] +name = "windows_i686_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + +[[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_gnu" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1dc67659d35f387f5f6c479dc4e28f1d4bb90ddd1a5d3da2e5d97b42d6272c3" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11" + +[[package]] +name = "windows_i686_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_i686_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + +[[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_gnu" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + +[[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_gnullvm" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486" + +[[package]] +name = "winnow" +version = "0.5.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" +dependencies = [ + "memchr", +] + +[[package]] +name = "wit-bindgen-rt" +version = "0.33.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3268f3d866458b787f390cf61f4bbb563b922d091359f9608842999eaee3943c" +dependencies = [ + "bitflags 2.8.0", +] + +[[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 = "wry" +version = "0.45.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac0099a336829fbf54c26b5f620c68980ebbe37196772aeaf6118df4931b5cb0" +dependencies = [ + "base64", + "block", + "cocoa 0.26.0", + "core-graphics 0.24.0", + "crossbeam-channel", + "dpi", + "dunce", + "gdkx11", + "gtk", + "html5ever", + "http", + "javascriptcore-rs", + "jni", + "kuchikiki", + "libc", + "ndk", + "objc", + "objc_id", + "once_cell", + "percent-encoding", + "raw-window-handle 0.6.2", + "sha2", + "soup3", + "tao-macros", + "thiserror", + "webkit2gtk", + "webkit2gtk-sys", + "webview2-com", + "windows", + "windows-core", + "windows-version", + "x11-dl", +] + +[[package]] +name = "x11" +version = "2.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "502da5464ccd04011667b11c435cb992822c2c0dbde1770c988480d312a0db2e" +dependencies = [ + "libc", + "pkg-config", +] + +[[package]] +name = "x11-dl" +version = "2.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38735924fedd5314a6e548792904ed8c6de6636285cb9fec04d5b1db85c1516f" +dependencies = [ + "libc", + "once_cell", + "pkg-config", +] + +[[package]] +name = "xdg-home" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec1cdab258fb55c0da61328dc52c8764709b249011b2cad0454c72f0bf10a1f6" +dependencies = [ + "libc", + "windows-sys 0.59.0", +] + +[[package]] +name = "xxhash-rust" +version = "0.8.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdd20c5420375476fbd4394763288da7eb0cc0b8c11deed431a91562af7335d3" + +[[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.96", + "synstructure", +] + +[[package]] +name = "zbus" +version = "4.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b8e3d6ae3342792a6cc2340e4394334c7402f3d793b390d2c5494a4032b3030" +dependencies = [ + "async-broadcast", + "async-process", + "async-recursion", + "async-trait", + "derivative", + "enumflags2", + "event-listener", + "futures-core", + "futures-sink", + "futures-util", + "hex", + "nix", + "ordered-stream", + "rand 0.8.5", + "serde", + "serde_repr", + "sha1", + "static_assertions", + "tokio", + "tracing", + "uds_windows", + "windows-sys 0.52.0", + "xdg-home", + "zbus_macros", + "zbus_names", + "zvariant", +] + +[[package]] +name = "zbus_macros" +version = "4.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7a3e850ff1e7217a3b7a07eba90d37fe9bb9e89a310f718afcde5885ca9b6d7" +dependencies = [ + "proc-macro-crate 1.3.1", + "proc-macro2", + "quote", + "regex", + "syn 1.0.109", + "zvariant_utils", +] + +[[package]] +name = "zbus_names" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b9b1fef7d021261cc16cba64c351d291b715febe0fa10dc3a443ac5a5022e6c" +dependencies = [ + "serde", + "static_assertions", + "zvariant", +] + +[[package]] +name = "zerocopy" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" +dependencies = [ + "byteorder", + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.96", +] + +[[package]] +name = "zerofrom" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cff3ee08c995dee1859d998dea82f7374f2826091dd9cd47def953cae446cd2e" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "595eed982f7d355beb85837f651fa22e90b3c044842dc7f2c2842c086f295808" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.96", + "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.96", +] + +[[package]] +name = "zvariant" +version = "4.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e09e8be97d44eeab994d752f341e67b3b0d80512a8b315a0671d47232ef1b65" +dependencies = [ + "endi", + "enumflags2", + "serde", + "static_assertions", + "url", + "zvariant_derive", +] + +[[package]] +name = "zvariant_derive" +version = "4.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72a5857e2856435331636a9fbb415b09243df4521a267c5bedcd5289b4d5799e" +dependencies = [ + "proc-macro-crate 1.3.1", + "proc-macro2", + "quote", + "syn 1.0.109", + "zvariant_utils", +] + +[[package]] +name = "zvariant_utils" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00bedb16a193cc12451873fee2a1bc6550225acece0e36f333e68326c73c8172" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] diff --git a/frontend/Cargo.toml b/frontend/Cargo.toml new file mode 100644 index 0000000..5d3af6c --- /dev/null +++ b/frontend/Cargo.toml @@ -0,0 +1,32 @@ +[package] +name = "frontend" +version = "0.1.0" +authors = ["Mars Ultor "] +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +dioxus = { version = "0.6.0", features = ["router", "fullstack", "web"] } +serde_json = "1.0" +serde = { version = "1.0", features = ["derive"] } +#redis = "0.28.0" +redis = { version = "0.28.0", default-features = false } +lazy_static = "1.4" +[features] +default = [] +web = ["dioxus/web"] +desktop = ["dioxus/desktop"] +mobile = ["dioxus/mobile"] + +[profile] + +[profile.wasm-dev] +inherits = "dev" +opt-level = 1 + +[profile.server-dev] +inherits = "dev" + +[profile.android-dev] +inherits = "dev" diff --git a/frontend/Dioxus.toml b/frontend/Dioxus.toml new file mode 100644 index 0000000..706c700 --- /dev/null +++ b/frontend/Dioxus.toml @@ -0,0 +1,24 @@ +[application] + +# App (Project) Name +name = "frontend" + +[web.app] + +# HTML title tag content +title = "frontend" + +# include `assets` in web platform +[web.resource] + +# Additional CSS style files +style = [] + +# Additional JavaScript files +script = [] + +[web.resource.dev] + +# Javascript code file +# serve: [dev-server] only +script = [] diff --git a/frontend/README.md b/frontend/README.md new file mode 100644 index 0000000..920b5c6 --- /dev/null +++ b/frontend/README.md @@ -0,0 +1,27 @@ +# Development + +Your new jumpstart project includes basic organization with an organized `assets` folder and a `components` folder. +If you chose to develop with the router feature, you will also have a `views` folder. + +### Tailwind +1. Install npm: https://docs.npmjs.com/downloading-and-installing-node-js-and-npm +2. Install the Tailwind CSS CLI: https://tailwindcss.com/docs/installation +3. Run the following command in the root of the project to start the Tailwind CSS compiler: + +```bash +npx tailwindcss -i ./input.css -o ./assets/tailwind.css --watch +``` + +### Serving Your App + +Run the following command in the root of your project to start developing with the default platform: + +```bash +dx serve --platform web +``` + +To run for a different platform, use the `--platform platform` flag. E.g. +```bash +dx serve --platform desktop +``` + diff --git a/frontend/assets/favicon.ico b/frontend/assets/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..eed0c09735ab94e724c486a053c367cf7ee3d694 GIT binary patch literal 132770 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 U&%gk}Kjax0U>L+lR|j$j0CbVJvH$=8 literal 0 HcmV?d00001 diff --git a/frontend/assets/header.svg b/frontend/assets/header.svg new file mode 100644 index 0000000..59c96f2 --- /dev/null +++ b/frontend/assets/header.svg @@ -0,0 +1,20 @@ + \ No newline at end of file diff --git a/frontend/assets/styling/blog.css b/frontend/assets/styling/blog.css new file mode 100644 index 0000000..f27f060 --- /dev/null +++ b/frontend/assets/styling/blog.css @@ -0,0 +1,8 @@ +#blog { + margin-top: 50px; +} + +#blog a { + color: #ffffff; + margin-top: 50px; +} \ No newline at end of file diff --git a/frontend/assets/styling/echo.css b/frontend/assets/styling/echo.css new file mode 100644 index 0000000..67d9b2b --- /dev/null +++ b/frontend/assets/styling/echo.css @@ -0,0 +1,34 @@ +#echo { + width: 360px; + margin-left: auto; + margin-right: auto; + margin-top: 50px; + background-color: #1e222d; + padding: 20px; + border-radius: 10px; +} + +#echo>h4 { + margin: 0px 0px 15px 0px; +} + + +#echo>input { + border: none; + border-bottom: 1px white solid; + background-color: transparent; + color: #ffffff; + transition: border-bottom-color 0.2s ease; + outline: none; + display: block; + padding: 0px 0px 5px 0px; + width: 100%; +} + +#echo>input:focus { + border-bottom-color: #6d85c6; +} + +#echo>p { + margin: 20px 0px 0px auto; +} \ No newline at end of file diff --git a/frontend/assets/styling/main.css b/frontend/assets/styling/main.css new file mode 100644 index 0000000..3127ac6 --- /dev/null +++ b/frontend/assets/styling/main.css @@ -0,0 +1,150 @@ +body { + background-color: #0f1116; + color: #ffffff; + font-family: 'Times New Roman', serif; + margin: 20px; +} + +#hero { + margin: 0; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; +} + +#links { + width: 400px; + text-align: left; + font-size: x-large; + color: white; + display: flex; + flex-direction: column; +} + +#links a { + color: white; + text-decoration: none; + margin-top: 20px; + margin: 10px 0px; + border: white 1px solid; + border-radius: 5px; + padding: 10px; + font-family: 'Times New Roman', serif; +} + +#links a:hover { + background-color: #1f1f1f; + cursor: pointer; +} + +#header { + max-width: 1200px; + font-family: 'Arial Narrow', sans-serif; +} +.news-story { + max-width: 65ch; + margin: 2rem auto; + padding: 0 1.5rem; + font-family: "Escrow Text", Georgia, serif; + line-height: 1.7; + color: #f8fafc; + font-size: 1.125rem; +} + +.news-story p { + margin-bottom: 1.5rem; +} +.news-story img { + max-width: 100%; + height: auto; + margin: 1.5rem 0; +} + +.news-story h1, +.news-story h2, +.news-story h3, +.news-story h4 { + font-family: "Brunel Text", Georgia, serif; + color: #f1f5f9; + line-height: 1.3; + margin-top: 2.5rem; + margin-bottom: 1rem; + font-weight: 600; +} + +.news-story h1 { + font-size: 2.25rem; + margin-top: 0; +} + +.news-story h2 { + font-size: 1.875rem; +} + +.news-story h3 { + font-size: 1.5rem; +} + +.news-story h4 { + font-size: 1.25rem; +} + +.news-story a { + color: #60a5fa; + text-decoration: underline; + text-decoration-thickness: 1px; + text-underline-offset: 2px; + transition: color 0.2s ease; +} + +.news-story a:hover { + color: #93c5fd; +} + +.news-story blockquote { + border-left: 3px solid #475569; + margin: 1.5rem 0; + padding: 0.5rem 0 0.5rem 1.5rem; + font-style: italic; + color: #cbd5e1; +} + +.news-story ul, +.news-story ol { + margin: 1.5rem 0; + padding-left: 1.5rem; +} + +.news-story li { + margin-bottom: 0.5rem; +} + +.news-story hr { + border: 0; + border-top: 1px solid #334155; + margin: 2rem 0; +} + +@media (max-width: 640px) { + .news-story { + font-size: 1rem; + padding: 0 1rem; + } + + .news-story h1 { + font-size: 1.875rem; + } + + .news-story h2 { + font-size: 1.5rem; + } + + .news-story h3 { + font-size: 1.25rem; + } + + .news-story h4 { + font-size: 1.125rem; + } +} diff --git a/frontend/assets/styling/navbar.css b/frontend/assets/styling/navbar.css new file mode 100644 index 0000000..7372c63 --- /dev/null +++ b/frontend/assets/styling/navbar.css @@ -0,0 +1,16 @@ +#navbar { + display: flex; + flex-direction: row; +} + +#navbar a { + color: #ffffff; + margin-right: 20px; + text-decoration: none; + transition: color 0.2s ease; +} + +#navbar a:hover { + cursor: pointer; + color: #91a4d2; +} \ No newline at end of file diff --git a/frontend/assets/tailwind.css b/frontend/assets/tailwind.css new file mode 100644 index 0000000..e69de29 diff --git a/frontend/input.css b/frontend/input.css new file mode 100644 index 0000000..bd6213e --- /dev/null +++ b/frontend/input.css @@ -0,0 +1,3 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; \ No newline at end of file diff --git a/frontend/src/components/echo.rs b/frontend/src/components/echo.rs new file mode 100644 index 0000000..02e6523 --- /dev/null +++ b/frontend/src/components/echo.rs @@ -0,0 +1,37 @@ +use dioxus::prelude::*; + +const ECHO_CSS: Asset = asset!("/assets/styling/echo.css"); + +/// Echo component that demonstrates fullstack server functions. +#[component] +pub fn Echo() -> Element { + let mut response = use_signal(|| String::new()); + + rsx! { + document::Link { rel: "stylesheet", href: ECHO_CSS } + div { + id: "echo", + h4 { "ServerFn Echo" } + input { + placeholder: "Type here to echo...", + oninput: move |event| async move { + let data = echo_server(event.value()).await.unwrap(); + response.set(data); + }, + } + + if !response().is_empty() { + p { + "Server echoed: " + i { "{response}" } + } + } + } + } +} + +/// Echo the user input on the server. +#[server(EchoServer)] +async fn echo_server(input: String) -> Result { + Ok(input) +} diff --git a/frontend/src/components/hero.rs b/frontend/src/components/hero.rs new file mode 100644 index 0000000..5df5cd0 --- /dev/null +++ b/frontend/src/components/hero.rs @@ -0,0 +1,21 @@ +use dioxus::prelude::*; + +const HEADER_SVG: Asset = asset!("/assets/header.svg"); + +#[component] +pub fn Hero() -> Element { + rsx! { + div { + id: "hero", + img { src: HEADER_SVG, id: "header" } + div { id: "links", + a { href: "https://dioxuslabs.com/learn/0.6/", "📚 Learn Dioxus" } + a { href: "https://dioxuslabs.com/awesome", "🚀 Awesome Dioxus" } + a { href: "https://github.com/dioxus-community/", "📡 Community Libraries" } + a { href: "https://github.com/DioxusLabs/sdk", "⚙️ Dioxus Development Kit" } + a { href: "https://marketplace.visualstudio.com/items?itemName=DioxusLabs.dioxus", "💫 VSCode Extension" } + a { href: "https://discord.gg/XgGxMSkvUM", "👋 Community Discord" } + } + } + } +} diff --git a/frontend/src/components/mod.rs b/frontend/src/components/mod.rs new file mode 100644 index 0000000..54bf39d --- /dev/null +++ b/frontend/src/components/mod.rs @@ -0,0 +1,11 @@ +mod hero; +pub use hero::Hero; + +mod navbar; +pub use navbar::Navbar; + +mod echo; +pub use echo::Echo; + +mod story; +pub use story::*; diff --git a/frontend/src/components/navbar.rs b/frontend/src/components/navbar.rs new file mode 100644 index 0000000..8a6df35 --- /dev/null +++ b/frontend/src/components/navbar.rs @@ -0,0 +1,21 @@ +use crate::Route; +use dioxus::prelude::*; + +const NAVBAR_CSS: Asset = asset!("/assets/styling/navbar.css"); + +#[component] +pub fn Navbar() -> Element { + rsx! { + document::Link { rel: "stylesheet", href: NAVBAR_CSS } + + div { + id: "navbar", + Link { + to: Route::Home {}, + "Home" + } + } + + Outlet:: {} + } +} diff --git a/frontend/src/components/story.rs b/frontend/src/components/story.rs new file mode 100644 index 0000000..dd61d16 --- /dev/null +++ b/frontend/src/components/story.rs @@ -0,0 +1,56 @@ +use crate::{components::story, Notification}; +use dioxus::prelude::*; + +const CSS: Asset = asset!("/assets/styling/main.css"); + +#[component] +pub fn Story(static_notification: Notification) -> Element { + // Extract fields from the Notification object into local variables + let title = static_notification.title; + let description = static_notification.description; + let url = static_notification.url; + let image_url = static_notification.image_url; + + // Join tickers into a single string + let tickers = static_notification.tickers.join(", "); + + rsx! { + document::Link {rel: "stylesheet", href: CSS} + div { + class: "news-story", + + // Image section, if an image URL is provided + img { + src: image_url, + alt: "News Image", + class: "news-image", + } + + // Title section + h2 { + class: "news-title", + "{title}" + } + + // Description section + p { + class: "news-description", + "{description}" + } + + // Tickers section, now just displays the joined tickers string + div { + class: "news-tickers", + "Affected Stocks: {tickers}" + } + + // Link to the full article + a { + href: url, + class: "news-link", + "Read more" + } + } + } +} + diff --git a/frontend/src/main.rs b/frontend/src/main.rs new file mode 100644 index 0000000..96daa54 --- /dev/null +++ b/frontend/src/main.rs @@ -0,0 +1,83 @@ +use std::{collections::VecDeque, hash::{Hash, Hasher}, sync::{Arc, Mutex}, thread}; + +use dioxus::prelude::*; + +use components::Navbar; +use lazy_static::lazy_static; +use redis::Client; +use views::{Home}; +use serde_json::Value; +use serde::{Deserialize, Serialize}; +mod components; +mod views; +mod shared; +#[derive(Debug, Clone, Routable, PartialEq)] +#[rustfmt::skip] +enum Route { + #[layout(Navbar)] + #[route("/")] + Home {}, +} + +const FAVICON: Asset = asset!("/assets/favicon.ico"); +const MAIN_CSS: Asset = asset!("/assets/styling/main.css"); +const TAILWIND_CSS: Asset = asset!("/assets/tailwind.css"); + + + +fn main() { + let reference_arc = Arc::clone(&shared::NOTIFICATION_Q); + thread::spawn(move || { + let client = Client::open("redis://192.168.1.23/").unwrap(); + let mut connection = client.get_connection().unwrap(); + let mut pubsub = connection.as_pubsub(); + pubsub.subscribe("notifications").unwrap(); + + loop{ + let message = pubsub.get_message().unwrap(); + + let payload_string: String = message.get_payload().unwrap(); + println!("{payload_string}"); + let notif: Vec = serde_json::from_str(payload_string.as_str()).unwrap(); + println!("Just recieved: {:#?}", notif); + for notification in notif{ + reference_arc.lock().unwrap().push_front(notification.clone()); + } + while reference_arc.lock().unwrap().len() > 10{ + reference_arc.lock().unwrap().pop_back(); + + } + let unique_vec: VecDeque<_> = reference_arc.lock().unwrap().clone().into_iter().collect::>().into_iter().collect(); + *reference_arc.lock().unwrap()=unique_vec; + } + }) ; + dioxus::launch(App); +} + +#[component] +fn App() -> Element { + // Build cool things ✌️ + + rsx! { + // Global app resources + document::Link { rel: "icon", href: FAVICON } + document::Link { rel: "stylesheet", href: MAIN_CSS } + document::Link { rel: "stylesheet", href: TAILWIND_CSS } + + Router:: {} + } +} +#[derive(Debug, Clone, PartialEq, Deserialize, Serialize, Eq, PartialOrd, Ord)] +pub struct Notification{ + title: String, + description: String, + url: String, + image_url: String, + tickers: Vec +} +impl Hash for Notification{ + fn hash(&self, state: &mut H) { + self.title.hash(state); + self.url.hash(state); + } +} diff --git a/frontend/src/shared.rs b/frontend/src/shared.rs new file mode 100644 index 0000000..849296e --- /dev/null +++ b/frontend/src/shared.rs @@ -0,0 +1,6 @@ +use lazy_static::lazy_static; +use std::{collections::VecDeque, sync::{Arc, Mutex}}; +use crate::Notification; +lazy_static!{ + pub static ref NOTIFICATION_Q: Arc>> = Arc::new(Mutex::new(VecDeque::new())); +} diff --git a/frontend/src/views/home.rs b/frontend/src/views/home.rs new file mode 100644 index 0000000..aab3fec --- /dev/null +++ b/frontend/src/views/home.rs @@ -0,0 +1,13 @@ +use crate::components::{Echo, Hero, Story}; +use dioxus::prelude::*; +use crate::shared::NOTIFICATION_Q; +#[component] +pub fn Home() -> Element { + let vec_d_clone = NOTIFICATION_Q.lock().unwrap().clone(); + rsx! { + + for story in vec_d_clone{ + Story{ static_notification: story.clone()} + } + } +} diff --git a/frontend/src/views/mod.rs b/frontend/src/views/mod.rs new file mode 100644 index 0000000..d07630b --- /dev/null +++ b/frontend/src/views/mod.rs @@ -0,0 +1,5 @@ +mod home; +pub use home::Home; + +//mod blog; +//pub use blog::Blog; diff --git a/frontend/tailwind.config.js b/frontend/tailwind.config.js new file mode 100644 index 0000000..2a69d58 --- /dev/null +++ b/frontend/tailwind.config.js @@ -0,0 +1,9 @@ +/** @type {import('tailwindcss').Config} */ +module.exports = { + mode: "all", + content: ["./src/**/*.{rs,html,css}", "./dist/**/*.html"], + theme: { + extend: {}, + }, + plugins: [], +}; diff --git a/stock_news_publisher/src/main.rs b/stock_news_publisher/src/main.rs index 9b77efa..a2842f4 100644 --- a/stock_news_publisher/src/main.rs +++ b/stock_news_publisher/src/main.rs @@ -17,9 +17,9 @@ fn main() { let mut connection = client.get_connection().unwrap(); loop{ - let query_url_gte: String = format!("https://api.marketaux.com/v1/news/all/?api_token={}&countries={}&sentiment_gte={}&language={}&published_after={}&limit={}", NEWS_API_KEY.clone(), encode("us,ca").into_owned(),encode(0.25f32.to_string().as_str()).into_owned(), "en", + let query_url_gte: String = format!("https://api.marketaux.com/v1/news/all/?api_token={}&countries={}&sentiment_gte={}&language={}&published_after={}&limit={}", NEWS_API_KEY.clone(), encode("us,ca").into_owned(),encode(0.5f32.to_string().as_str()).into_owned(), "en", encode((Local::now() - Duration::from_secs(20*60)).format("%Y-%m-%dT%H:%M:%S").to_string().as_str()).into_owned(), 10); - let query_url_lte: String = format!("https://api.marketaux.com/v1/news/all/?api_token={}&countries={}&sentiment_lte={}&language={}&published_after={}&limit={}", NEWS_API_KEY.clone(), encode("us,ca").into_owned(), encode((-0.25f32).to_string().as_str()).into_owned(), "en", + let query_url_lte: String = format!("https://api.marketaux.com/v1/news/all/?api_token={}&countries={}&sentiment_lte={}&language={}&published_after={}&limit={}", NEWS_API_KEY.clone(), encode("us,ca").into_owned(), encode((-0.5f32).to_string().as_str()).into_owned(), "en", encode((Local::now() - Duration::from_secs(20*60)).format("%Y-%m-%dT%H:%M:%S").to_string().as_str()).into_owned(), 10); info!(" Query url: {}", query_url_gte); let response_batch_gte = reqwest::blocking::get(query_url_gte.as_str()).unwrap().text().unwrap();