From 6345cfb0b5b85af58758ef0530cb59b9d9932b06 Mon Sep 17 00:00:00 2001 From: mautamu Date: Sat, 16 Mar 2024 21:02:46 -0700 Subject: [PATCH] V0.3.1 (#77) * fix: drain_filter to extract_if * feat: submaps (aka respawn maps) - Submaps are collections of territories within regions of a map - Respawn maps are implemented through submaps of the main map; currently submap id 0 is the main map and submap id 1 is the respawn map - For respawn, the order of execution is as follows: 1. We process submap 0 (the main map) as normal 2. We determine which team(s) were eliminated on the main map and which have not yet used any respawns (teams.respawn_count < 1) 3. If any teams have previously been on submap id 1 but are now present on submap 0, then we discard any turns made on submap id 1 by players on those teams 4. We process submap 1 (the secondary map), assigning the protected territories of any team which has succesfully returned to submap 0 to the NCAA (team id 0) 5. We randomly shuffle the eligible eliminated teams 6. We take all submap 1 territories owned by NCAA and add them to a pool of re-assignable territories 7. We take all teams that own more than one territory on submap 1 and select all but one of their territories to add to the pool of re-assignable territories randomly (but all such territories will be placed after any NCAA territories to ensure NCAA territories are exhausted first) 8. We reassign the territories from the re-assignable pool until either it is exhausted or all respawn-eligible teams have recevied a single territory 9. We merge all results from all submaps and write it to the database * fix: update auth to use territory ownership as sot * fix: minor bugs * fix: lints * fix: back to green * chore: clippies --- Cargo.lock | 1793 +++++++++++++++++++-------------- Cargo.toml | 2 +- src/db.rs | 2 +- src/model/auth/route.rs | 38 +- src/model/captchasvc/model.rs | 8 +- src/model/discord/route.rs | 21 +- src/model/player/model.rs | 20 +- src/model/ratings/model.rs | 2 +- src/model/reddit/route.rs | 26 +- src/model/region/model.rs | 1 - src/model/stats/model.rs | 26 +- src/model/territory/model.rs | 1 - src/model/turn/model.rs | 18 +- src/ringmaster.rs | 435 +++++++- src/schema.rs | 4 + src/structs.rs | 26 +- 16 files changed, 1572 insertions(+), 851 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 1284bb6..5bd3e5f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,6 +2,15 @@ # It is not intended for manual editing. version = 3 +[[package]] +name = "addr2line" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" +dependencies = [ + "gimli", +] + [[package]] name = "adler" version = "1.0.2" @@ -26,9 +35,9 @@ dependencies = [ [[package]] name = "aes" -version = "0.8.3" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac1f845298e95f983ff1944b728ae08b8cebab80d684f0a832ed0fc74dfa27e2" +checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" dependencies = [ "cfg-if", "cipher", @@ -37,9 +46,9 @@ dependencies = [ [[package]] name = "aes-gcm" -version = "0.10.2" +version = "0.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "209b47e8954a928e1d72e86eca7000ebb6655fe1436d33eefc2201cad027e237" +checksum = "831010a0f742e1209b3bcea8fab6a8e149051ba6099432c8cb2cc117dec3ead1" dependencies = [ "aead", "aes", @@ -51,20 +60,32 @@ dependencies = [ [[package]] name = "ahash" -version = "0.8.3" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "891477e0c6a8957309ee5c45a6368af3ae14bb510732d2684ffa19af310920f9" +dependencies = [ + "getrandom", + "once_cell", + "version_check", +] + +[[package]] +name = "ahash" +version = "0.8.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c99f64d1e06488f620f932677e24bc6e2897582980441ae90a671415bd7ec2f" +checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" dependencies = [ "cfg-if", "once_cell", "version_check", + "zerocopy", ] [[package]] name = "aho-corasick" -version = "1.0.2" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43f6cb1bf222025340178f382c426f13757b2960e89779dfcb319c32542a5a41" +checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0" dependencies = [ "memchr", ] @@ -84,6 +105,12 @@ dependencies = [ "libc", ] +[[package]] +name = "arrayvec" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" + [[package]] name = "async-stream" version = "0.3.5" @@ -101,20 +128,20 @@ version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" dependencies = [ - "proc-macro2 1.0.60", - "quote 1.0.28", - "syn 2.0.18", + "proc-macro2 1.0.79", + "quote 1.0.35", + "syn 2.0.53", ] [[package]] name = "async-trait" -version = "0.1.68" +version = "0.1.78" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9ccdd8f2a161be9bd5c023df56f1b2a0bd1d83872ae53b71a84a12c9bf6e842" +checksum = "461abc97219de0eaaf81fe3ef974a540158f3d079c2ab200f891f1a2ef201e85" dependencies = [ - "proc-macro2 1.0.60", - "quote 1.0.28", - "syn 2.0.18", + "proc-macro2 1.0.79", + "quote 1.0.35", + "syn 2.0.53", ] [[package]] @@ -123,12 +150,36 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c59bdb34bc650a32731b31bd8f0829cc15d24a708ee31559e0bb34f2bc320cba" +[[package]] +name = "atomic" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d818003e740b63afc82337e3160717f4f63078720a810b7b903e70a5d1d2994" +dependencies = [ + "bytemuck", +] + [[package]] name = "autocfg" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +[[package]] +name = "backtrace" +version = "0.3.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837" +dependencies = [ + "addr2line", + "cc", + "cfg-if", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", +] + [[package]] name = "base64" version = "0.13.1" @@ -143,16 +194,18 @@ checksum = "0ea22880d78093b0cbe17c89f64a7d457941e65759157ec6cb31a31d652b05e5" [[package]] name = "base64" -version = "0.21.2" +version = "0.21.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "604178f6c5c21f02dc555784810edfb88d34ac2c73b2eae109655649ee73ce3d" +checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" [[package]] name = "bigdecimal" -version = "0.3.1" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6773ddc0eafc0e509fb60e48dff7f450f8e674a0686ae8605e8d9901bd5eefa" +checksum = "9324c8014cd04590682b34f1e9448d38f0674d0f7b2dc553331016ef0e4e9ebc" dependencies = [ + "autocfg", + "libm", "num-bigint", "num-integer", "num-traits", @@ -178,9 +231,21 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.3.2" +version = "2.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed570934406eb16438a4e976b1b4500774099c13b8cb96eec99f620f05090ddf" + +[[package]] +name = "bitvec" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6dbe3c979c178231552ecba20214a8272df4e09f232a87aef4320cf06539aded" +checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" +dependencies = [ + "funty", + "radium", + "tap", + "wyz", +] [[package]] name = "block-buffer" @@ -191,29 +256,87 @@ dependencies = [ "generic-array", ] +[[package]] +name = "borsh" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f58b559fd6448c6e2fd0adb5720cd98a2506594cafa4737ff98c396f3e82f667" +dependencies = [ + "borsh-derive", + "cfg_aliases", +] + +[[package]] +name = "borsh-derive" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7aadb5b6ccbd078890f6d7003694e33816e6b784358f18e15e7e6d9f065a57cd" +dependencies = [ + "once_cell", + "proc-macro-crate", + "proc-macro2 1.0.79", + "quote 1.0.35", + "syn 2.0.53", + "syn_derive", +] + [[package]] name = "bumpalo" -version = "3.13.0" +version = "3.15.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ff69b9dd49fd426c69a0db9fc04dd934cdb6645ff000864d98f7e2af8830eaa" + +[[package]] +name = "byte-unit" +version = "5.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33ac19bdf0b2665407c39d82dbc937e951e7e2001609f0fb32edd0af45a2d63e" +dependencies = [ + "rocket", + "rust_decimal", + "serde", + "utf8-width", +] + +[[package]] +name = "bytecheck" +version = "0.6.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23cdc57ce23ac53c931e88a43d06d070a6fd142f2617be5855eb75efc9beb1c2" +dependencies = [ + "bytecheck_derive", + "ptr_meta", + "simdutf8", +] + +[[package]] +name = "bytecheck_derive" +version = "0.6.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3e2c3daef883ecc1b5d58c15adae93470a91d425f3532ba1695849656af3fc1" +checksum = "3db406d29fbcd95542e92559bed4d8ad92636d1ca8b3b72ede10b4bcc010e659" +dependencies = [ + "proc-macro2 1.0.79", + "quote 1.0.35", + "syn 1.0.109", +] [[package]] name = "bytemuck" -version = "1.13.1" +version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17febce684fd15d89027105661fec94afb475cb995fbc59d2865198446ba2eea" +checksum = "5d6d68c57235a3a081186990eca2867354726650f42f7516ca50c28d6281fd15" [[package]] name = "byteorder" -version = "1.4.3" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.4.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be" +checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" [[package]] name = "captcha" @@ -223,7 +346,7 @@ checksum = "db21780337b425f968a2c3efa842eeaa4fe53d2bcb1eb27d2877460a862fb0ab" dependencies = [ "base64 0.13.1", "hound", - "image 0.24.6", + "image 0.24.9", "lodepng", "rand", "serde_json", @@ -231,9 +354,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.0.79" +version = "1.0.90" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f" +checksum = "8cd6604a82acf3039f1144f54b8eb34e91ffba622051189e71b781822d5ee1f5" [[package]] name = "cfg-if" @@ -241,20 +364,25 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +[[package]] +name = "cfg_aliases" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e" + [[package]] name = "chrono" -version = "0.4.26" +version = "0.4.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec837a71355b28f6556dbd569b37b3f363091c0bd4b2e735674521b4c5fd9bc5" +checksum = "8eaf5903dcbc0a39312feb77df2ff4c76387d591b9fc7b04a238dcf8bb62639a" dependencies = [ "android-tzdata", "iana-time-zone", "js-sys", "num-traits", "serde", - "time 0.1.45", "wasm-bindgen", - "winapi", + "windows-targets 0.52.4", ] [[package]] @@ -275,26 +403,26 @@ checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" [[package]] name = "cookie" -version = "0.17.0" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7efb37c3e1ccb1ff97164ad95ac1606e8ccd35b3fa0a7d99a304c7f4a428cc24" +checksum = "3cd91cf61412820176e137621345ee43b3f4423e589e7ae4e50d601d93e35ef8" dependencies = [ "aes-gcm", - "base64 0.21.2", + "base64 0.21.7", "hkdf", "percent-encoding", "rand", "sha2", "subtle", - "time 0.3.22", + "time", "version_check", ] [[package]] name = "core-foundation" -version = "0.9.3" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" dependencies = [ "core-foundation-sys", "libc", @@ -302,70 +430,52 @@ dependencies = [ [[package]] name = "core-foundation-sys" -version = "0.8.4" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" +checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" [[package]] name = "cpufeatures" -version = "0.2.8" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03e69e28e9f7f77debdedbaafa2866e1de9ba56df55a8bd7cfc724c25a09987c" +checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" dependencies = [ "libc", ] [[package]] name = "crc32fast" -version = "1.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "crossbeam-channel" -version = "0.5.8" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a33c2bf77f2df06183c3aa30d1e96c0695a313d4f9c453cc3762a6db39f99200" +checksum = "b3855a8a784b474f333699ef2bbca9db2c4a1f6d9088a90a2d25b1eb53111eaa" dependencies = [ "cfg-if", - "crossbeam-utils", ] [[package]] name = "crossbeam-deque" -version = "0.8.3" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef" +checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" dependencies = [ - "cfg-if", "crossbeam-epoch", "crossbeam-utils", ] [[package]] name = "crossbeam-epoch" -version = "0.9.15" +version = "0.9.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae211234986c545741a7dc064309f67ee1e5ad243d0e48335adc0484d960bcc7" +checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" dependencies = [ - "autocfg", - "cfg-if", "crossbeam-utils", - "memoffset", - "scopeguard", ] [[package]] name = "crossbeam-utils" -version = "0.8.16" +version = "0.8.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294" -dependencies = [ - "cfg-if", -] +checksum = "248e3bacc7dc6baa3b21e405ee045c3047101a49145e7e9eca583ab4c2ca5345" [[package]] name = "crunchy" @@ -411,8 +521,8 @@ checksum = "859d65a907b6852c9361e3185c862aae7fafd2887876799fa55f5f99dc40d610" dependencies = [ "fnv", "ident_case", - "proc-macro2 1.0.60", - "quote 1.0.28", + "proc-macro2 1.0.79", + "quote 1.0.35", "strsim", "syn 1.0.109", ] @@ -424,10 +534,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c972679f83bdf9c42bd905396b6c3588a843a17f0f16dfcfa3e2c5d57441835" dependencies = [ "darling_core", - "quote 1.0.28", + "quote 1.0.35", "syn 1.0.109", ] +[[package]] +name = "data-encoding" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e962a19be5cfc3f3bf6dd8f61eb50107f356ad6270fbb3ed41476571db78be5" + [[package]] name = "deflate" version = "0.7.20" @@ -438,6 +554,15 @@ dependencies = [ "byteorder", ] +[[package]] +name = "deranged" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" +dependencies = [ + "powerfmt", +] + [[package]] name = "devise" version = "0.4.1" @@ -455,7 +580,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c8cf4b8dd484ede80fd5c547592c46c3745a617c8af278e2b72bea86b2dfed6" dependencies = [ "devise_core", - "quote 1.0.28", + "quote 1.0.35", ] [[package]] @@ -464,21 +589,21 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "35b50dba0afdca80b187392b24f2499a88c336d5a8493e4b4ccfb608708be56a" dependencies = [ - "bitflags 2.3.2", - "proc-macro2 1.0.60", + "bitflags 2.4.2", + "proc-macro2 1.0.79", "proc-macro2-diagnostics", - "quote 1.0.28", - "syn 2.0.18", + "quote 1.0.35", + "syn 2.0.53", ] [[package]] name = "diesel" -version = "2.1.0" +version = "2.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7a532c1f99a0f596f6960a60d1e119e91582b24b39e2d83a190e61262c3ef0c" +checksum = "03fc05c17098f21b89bc7d98fe1dd3cce2c11c2ad8e145f2a44fe08ed28eb559" dependencies = [ "bigdecimal", - "bitflags 2.3.2", + "bitflags 2.4.2", "byteorder", "chrono", "diesel_derives", @@ -494,14 +619,14 @@ dependencies = [ [[package]] name = "diesel_derives" -version = "2.1.0" +version = "2.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74398b79d81e52e130d991afeed9c86034bb1b7735f46d2f5bf7deb261d80303" +checksum = "5d02eecb814ae714ffe61ddc2db2dd03e6c49a42e269b5001355500d431cce0c" dependencies = [ "diesel_table_macro_syntax", - "proc-macro2 1.0.60", - "quote 1.0.28", - "syn 2.0.18", + "proc-macro2 1.0.79", + "quote 1.0.35", + "syn 2.0.53", ] [[package]] @@ -510,7 +635,7 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fc5557efc453706fed5e4fa85006fe9817c224c3f480a34c7e5959fd700921c5" dependencies = [ - "syn 2.0.18", + "syn 2.0.53", ] [[package]] @@ -526,76 +651,66 @@ dependencies = [ [[package]] name = "dyn-clone" -version = "1.0.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68b0cf012f1230e43cd00ebb729c6bb58707ecfa8ad08b52ef3a4ccd2697fc30" - -[[package]] -name = "educe" -version = "0.4.22" +version = "1.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "079044df30bb07de7d846d41a184c4b00e66ebdac93ee459253474f3a47e50ae" -dependencies = [ - "enum-ordinalize", - "proc-macro2 1.0.60", - "quote 1.0.28", - "syn 1.0.109", -] +checksum = "0d6ef0072f8a535281e4876be788938b528e9a1d43900b82c2569af7da799125" [[package]] name = "either" -version = "1.8.1" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91" +checksum = "11157ac094ffbdde99aa67b23417ebdd801842852b500e395a45a9c0aac03e4a" [[package]] name = "encoding_rs" -version = "0.8.32" +version = "0.8.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "071a31f4ee85403370b58aca746f01041ede6f0da2730960ad001edc2b71b394" +checksum = "7268b386296a025e474d5140678f75d6de9493ae55a5d709eeb9dd08149945e1" dependencies = [ "cfg-if", ] [[package]] name = "enum-ordinalize" -version = "3.1.13" +version = "4.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4f76552f53cefc9a7f64987c3701b99d982f7690606fd67de1d09712fbf52f1" +checksum = "fea0dcfa4e54eeb516fe454635a95753ddd39acda650ce703031c6973e315dd5" dependencies = [ - "num-bigint", - "num-traits", - "proc-macro2 1.0.60", - "quote 1.0.28", - "syn 2.0.18", + "enum-ordinalize-derive", ] [[package]] -name = "errno" -version = "0.3.1" +name = "enum-ordinalize-derive" +version = "4.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bcfec3a70f97c962c307b2d2c56e358cf1d00b558d74262b5f929ee8cc7e73a" +checksum = "0d28318a75d4aead5c4db25382e8ef717932d0346600cacae6357eb5941bc5ff" dependencies = [ - "errno-dragonfly", - "libc", - "windows-sys 0.48.0", + "proc-macro2 1.0.79", + "quote 1.0.35", + "syn 2.0.53", ] [[package]] -name = "errno-dragonfly" -version = "0.1.2" +name = "equivalent" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" + +[[package]] +name = "errno" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" +checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245" dependencies = [ - "cc", "libc", + "windows-sys 0.52.0", ] [[package]] name = "exr" -version = "1.6.4" +version = "1.72.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "279d3efcc55e19917fff7ab3ddd6c14afb6a90881a0078465196fe2f99d08c56" +checksum = "887d93f60543e9a9362ef8a21beedd0a833c5d9610e18c67abe15a5963dcb1a4" dependencies = [ "bit_field", "flume", @@ -609,50 +724,47 @@ dependencies = [ [[package]] name = "fallible_collections" -version = "0.4.8" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "618bf220e692a59c50e7b281149f53c3fe93e0cf0b40c050fc2af8c9ecb28505" +checksum = "a88c69768c0a15262df21899142bc6df9b9b823546d4b4b9a7bc2d6c448ec6fd" dependencies = [ "hashbrown 0.13.2", ] [[package]] name = "fastrand" -version = "1.9.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be" -dependencies = [ - "instant", -] +checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5" [[package]] name = "fdeflate" -version = "0.3.0" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d329bdeac514ee06249dabc27877490f17f5d371ec693360768b838e19f3ae10" +checksum = "4f9bfee30e4dedf0ab8b422f03af778d9612b63f502710fc500a334ebe2de645" dependencies = [ "simd-adler32", ] [[package]] name = "figment" -version = "0.10.10" +version = "0.10.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4547e226f4c9ab860571e070a9034192b3175580ecea38da34fcdb53a018c9a5" +checksum = "7270677e7067213e04f323b55084586195f18308cd7546cfac9f873344ccceb6" dependencies = [ - "atomic", + "atomic 0.6.0", "pear", "serde", - "toml 0.7.4", + "toml 0.8.11", "uncased", "version_check", ] [[package]] name = "flate2" -version = "1.0.26" +version = "1.0.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b9429470923de8e8cbd4d2dc513535400b4b3fef0319fb5c4e1f520a7bef743" +checksum = "46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e" dependencies = [ "crc32fast", "miniz_oxide", @@ -660,14 +772,10 @@ dependencies = [ [[package]] name = "flume" -version = "0.10.14" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1657b4441c3403d9f7b3409e47575237dac27b1b5726df654a6ecbf92f0f7577" +checksum = "55ac459de2512911e4b674ce33cf20befaba382d05b62b008afc1c8b57cbf181" dependencies = [ - "futures-core", - "futures-sink", - "nanorand", - "pin-project", "spin 0.9.8", ] @@ -694,18 +802,24 @@ checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" [[package]] name = "form_urlencoded" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" dependencies = [ "percent-encoding", ] +[[package]] +name = "funty" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" + [[package]] name = "futures" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23342abe12aba583913b2e62f22225ff9c950774065e4bfb61a19cd9770fec40" +checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" dependencies = [ "futures-channel", "futures-core", @@ -717,9 +831,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "955518d47e09b25bbebc7a18df10b81f0c766eaf4c4f1cccef2fca5f2a4fb5f2" +checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" dependencies = [ "futures-core", "futures-sink", @@ -727,33 +841,33 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bca583b7e26f571124fe5b7561d49cb2868d79116cfa0eefce955557c6fee8c" +checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" [[package]] name = "futures-io" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fff74096e71ed47f8e023204cfd0aa1289cd54ae5430a9523be060cdb849964" +checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" [[package]] name = "futures-sink" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f43be4fe21a13b9781a69afa4985b0f6ee0e1afab2c6f454a8cf30e2b2237b6e" +checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" [[package]] name = "futures-task" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76d3d132be6c0e6aa1534069c705a74a5997a356c0dc2f86a47765e5617c5b65" +checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" [[package]] name = "futures-util" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26b01e40b772d54cf6c6d721c1d1abd0647a0106a12ecaa1c186273392a69533" +checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" dependencies = [ "futures-channel", "futures-core", @@ -768,9 +882,9 @@ dependencies = [ [[package]] name = "generator" -version = "0.7.4" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3e123d9ae7c02966b4d892e550bdc32164f05853cd40ab570650ad600596a8a" +checksum = "5cc16584ff22b460a382b7feec54b23d2908d858152e5739a120b949293bd74e" dependencies = [ "cc", "libc", @@ -791,22 +905,20 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.10" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427" +checksum = "190092ea657667030ac6a35e305e62fc4dd69fd98ac98631e5d3a2b1575a12b5" dependencies = [ "cfg-if", - "js-sys", "libc", - "wasi 0.11.0+wasi-snapshot-preview1", - "wasm-bindgen", + "wasi", ] [[package]] name = "ghash" -version = "0.5.0" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d930750de5717d2dd0b8c0d42c076c0e884c81a73e6cab859bbd2339c71e3e40" +checksum = "f0d8a4362ccb29cb0b265253fb0a2728f592895ee6854fd9bc13f2ffda266ff1" dependencies = [ "opaque-debug", "polyval", @@ -824,34 +936,38 @@ dependencies = [ [[package]] name = "gif" -version = "0.12.0" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80792593675e051cf94a4b111980da2ba60d4a83e43e0048c5693baab3977045" +checksum = "3fb2d69b19215e18bb912fa30f7ce15846e301408695e44e0ef719f1da9e19f2" dependencies = [ "color_quant", "weezl", ] +[[package]] +name = "gimli" +version = "0.28.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" + [[package]] name = "git-version" -version = "0.3.5" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6b0decc02f4636b9ccad390dcbe77b722a77efedfa393caf8379a51d5c61899" +checksum = "1ad568aa3db0fcbc81f2f116137f263d7304f512a1209b35b85150d3ef88ad19" dependencies = [ "git-version-macro", - "proc-macro-hack", ] [[package]] name = "git-version-macro" -version = "0.3.5" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe69f1cbdb6e28af2bac214e943b99ce8a0a06b447d15d3e61161b0423139f3f" +checksum = "53010ccb100b96a67bc32c0175f0ed1426b31b655d562898e57325f81c023ac0" dependencies = [ - "proc-macro-hack", - "proc-macro2 1.0.60", - "quote 1.0.28", - "syn 1.0.109", + "proc-macro2 1.0.79", + "quote 1.0.35", + "syn 2.0.53", ] [[package]] @@ -862,9 +978,9 @@ checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" [[package]] name = "h2" -version = "0.3.19" +version = "0.3.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d357c7ae988e7d2182f7d7871d0b963962420b0678b0997ce7de72001aeab782" +checksum = "4fbd2820c5e49886948654ab546d0688ff24530286bdcf8fca3cefb16d4618eb" dependencies = [ "bytes", "fnv", @@ -872,7 +988,7 @@ dependencies = [ "futures-sink", "futures-util", "http", - "indexmap", + "indexmap 2.2.5", "slab", "tokio", "tokio-util", @@ -881,10 +997,11 @@ dependencies = [ [[package]] name = "half" -version = "2.2.1" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02b4af3693f1b705df946e9fe5631932443781d0aabb423b62fcd4d73f6d2fd0" +checksum = "b5eceaaeec696539ddaf7b333340f1af35a5aa87ae3e4f3ead0532f72affab2e" dependencies = [ + "cfg-if", "crunchy", ] @@ -893,6 +1010,9 @@ name = "hashbrown" version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" +dependencies = [ + "ahash 0.7.8", +] [[package]] name = "hashbrown" @@ -900,29 +1020,26 @@ version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" dependencies = [ - "ahash", + "ahash 0.8.11", ] [[package]] -name = "hermit-abi" -version = "0.2.6" +name = "hashbrown" +version = "0.14.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7" -dependencies = [ - "libc", -] +checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" [[package]] name = "hermit-abi" -version = "0.3.1" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fed44880c466736ef9a5c5b5facefb5ed0785676d0c02d612db14e54f0d84286" +checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" [[package]] name = "hkdf" -version = "0.12.3" +version = "0.12.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "791a029f6b9fc27657f6f188ec6e5e43f6911f6f878e0dc5501396e09809d437" +checksum = "7b5f8eb2ad728638ea2c7d47a21db23b7b58a72ed6a38256b8a1849f15fbbdf7" dependencies = [ "hmac", ] @@ -938,15 +1055,15 @@ dependencies = [ [[package]] name = "hound" -version = "3.5.0" +version = "3.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d13cdbd5dbb29f9c88095bbdc2590c9cba0d0a1269b983fef6b2cdd7e9f4db1" +checksum = "62adaabb884c94955b19907d60019f4e145d091c75345379e70d1ee696f7854f" [[package]] name = "http" -version = "0.2.9" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd6effc99afb63425aff9b05836f029929e345a6148a14b7ecd5ab67af944482" +checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" dependencies = [ "bytes", "fnv", @@ -955,9 +1072,9 @@ dependencies = [ [[package]] name = "http-body" -version = "0.4.5" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1" +checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" dependencies = [ "bytes", "http", @@ -972,15 +1089,15 @@ checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" [[package]] name = "httpdate" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421" +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" [[package]] name = "hyper" -version = "0.14.26" +version = "0.14.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab302d72a6f11a3b910431ff93aae7e773078c769f0a3ef15fb9ec692ed147d4" +checksum = "bf96e135eb83a2a8ddf766e426a841d8ddd7449d5f00d34ea02b41d2f19eef80" dependencies = [ "bytes", "futures-channel", @@ -1002,10 +1119,11 @@ dependencies = [ [[package]] name = "hyper-rustls" -version = "0.24.0" +version = "0.24.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0646026eb1b3eea4cd9ba47912ea5ce9cc07713d105b1a14698f4e6433d348b7" +checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" dependencies = [ + "futures-util", "http", "hyper", "log", @@ -1030,16 +1148,16 @@ dependencies = [ [[package]] name = "iana-time-zone" -version = "0.1.57" +version = "0.1.60" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fad5b825842d2b38bd206f3e81d6957625fd7f0a361e345c30e01a0ae2dd613" +checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141" dependencies = [ "android_system_properties", "core-foundation-sys", "iana-time-zone-haiku", "js-sys", "wasm-bindgen", - "windows", + "windows-core", ] [[package]] @@ -1059,9 +1177,9 @@ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] name = "idna" -version = "0.4.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c" +checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" dependencies = [ "unicode-bidi", "unicode-normalization", @@ -1079,7 +1197,7 @@ dependencies = [ "lzw", "num-derive", "num-iter", - "num-rational 0.1.42", + "num-rational", "num-traits", "png 0.12.0", "scoped_threadpool", @@ -1087,19 +1205,18 @@ dependencies = [ [[package]] name = "image" -version = "0.24.6" +version = "0.24.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "527909aa81e20ac3a44803521443a765550f09b5130c2c2fa1ea59c2f8f50a3a" +checksum = "5690139d2f55868e080017335e4b94cb7414274c74f1669c84fb5feba2c9f69d" dependencies = [ "bytemuck", "byteorder", "color_quant", "exr", - "gif 0.12.0", - "jpeg-decoder 0.3.0", - "num-rational 0.4.1", + "gif 0.13.1", + "jpeg-decoder 0.3.1", "num-traits", - "png 0.17.9", + "png 0.17.13", "qoi", "tiff", ] @@ -1115,6 +1232,17 @@ dependencies = [ "serde", ] +[[package]] +name = "indexmap" +version = "2.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b0b929d511467233429c45a44ac1dcaa21ba0f5ba11e4879e6ed28ddb4f9df4" +dependencies = [ + "equivalent", + "hashbrown 0.14.3", + "serde", +] + [[package]] name = "inflate" version = "0.4.5" @@ -1139,49 +1267,28 @@ dependencies = [ "generic-array", ] -[[package]] -name = "instant" -version = "0.1.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "io-lifetimes" -version = "1.0.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2" -dependencies = [ - "hermit-abi 0.3.1", - "libc", - "windows-sys 0.48.0", -] - [[package]] name = "ipnet" -version = "2.7.2" +version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12b6ee2129af8d4fb011108c73d99a1b83a85977f23b82460c0ae2e25bb4b57f" +checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" [[package]] name = "is-terminal" -version = "0.4.7" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adcf93614601c8129ddf72e2d5633df827ba6551541c6d8c59520a371475be1f" +checksum = "f23ff5ef2b80d608d61efee834934d862cd92461afc0560dedf493e4c033738b" dependencies = [ - "hermit-abi 0.3.1", - "io-lifetimes", - "rustix", - "windows-sys 0.48.0", + "hermit-abi", + "libc", + "windows-sys 0.52.0", ] [[package]] name = "itoa" -version = "1.0.6" +version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6" +checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c" [[package]] name = "jpeg-decoder" @@ -1194,18 +1301,18 @@ dependencies = [ [[package]] name = "jpeg-decoder" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc0000e42512c92e31c2252315bda326620a4e034105e900c98ec492fa077b3e" +checksum = "f5d4a7da358eff58addd2877a45865158f0d78c911d43a5784ceb7bbf52833b0" dependencies = [ "rayon", ] [[package]] name = "js-sys" -version = "0.3.64" +version = "0.3.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935a" +checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d" dependencies = [ "wasm-bindgen", ] @@ -1216,9 +1323,9 @@ version = "8.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6971da4d9c3aa03c3d8f3ff0f4155b534aad021292003895a469716b2a230378" dependencies = [ - "base64 0.21.2", + "base64 0.21.7", "pem", - "ring", + "ring 0.16.20", "serde", "serde_json", "simple_asn1", @@ -1238,21 +1345,27 @@ checksum = "03087c2bad5e1034e8cace5926dec053fb3790248370865f5117a7d0213354c8" [[package]] name = "libc" -version = "0.2.146" +version = "0.2.153" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" + +[[package]] +name = "libm" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f92be4933c13fd498862a9e02a3055f8a8d9c039ce33db97306fd5a6caa7f29b" +checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" [[package]] name = "linux-raw-sys" -version = "0.3.8" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519" +checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c" [[package]] name = "lock_api" -version = "0.4.10" +version = "0.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1cc9717a20b1bb222f333e6a92fd32f7d8a18ddc5a3191a11af45dcbf4dcd16" +checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45" dependencies = [ "autocfg", "scopeguard", @@ -1260,9 +1373,9 @@ dependencies = [ [[package]] name = "lodepng" -version = "3.7.2" +version = "3.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0ad39f75bbaa4b10bb6f2316543632a8046a5bcf9c785488d79720b21f044f8" +checksum = "a42d298694b14401847de29abd44adf278b42e989e516deac7b72018400002d8" dependencies = [ "crc32fast", "fallible_collections", @@ -1273,9 +1386,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.19" +version = "0.4.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b06a4cde4c0f271a446782e3eff8de789548ce57dbc8eca9292c27f4a42004b4" +checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" [[package]] name = "loom" @@ -1304,23 +1417,14 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" dependencies = [ - "regex-automata", + "regex-automata 0.1.10", ] [[package]] name = "memchr" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" - -[[package]] -name = "memoffset" -version = "0.9.0" +version = "2.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c" -dependencies = [ - "autocfg", -] +checksum = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149" [[package]] name = "mime" @@ -1330,9 +1434,9 @@ checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" [[package]] name = "miniz_oxide" -version = "0.7.1" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" +checksum = "9d811f3e15f28568be3407c8e7fdb6514c1cda3cb30683f15b6a1a1dc4ea14a7" dependencies = [ "adler", "simd-adler32", @@ -1340,12 +1444,12 @@ dependencies = [ [[package]] name = "mio" -version = "0.8.8" +version = "0.8.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "927a765cd3fc26206e66b296465fa9d3e5ab003e651c1b3c060e7956d96b19d2" +checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" dependencies = [ "libc", - "wasi 0.11.0+wasi-snapshot-preview1", + "wasi", "windows-sys 0.48.0", ] @@ -1369,15 +1473,6 @@ dependencies = [ "version_check", ] -[[package]] -name = "nanorand" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a51313c5820b0b02bd422f4b44776fbf47961755c74ce64afc73bfad10226c3" -dependencies = [ - "getrandom", -] - [[package]] name = "native-tls" version = "0.2.11" @@ -1418,15 +1513,21 @@ dependencies = [ [[package]] name = "num-bigint" -version = "0.4.3" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f93ab6289c7b344a8a9f60f88d80aa20032336fe78da341afc91c8a2341fc75f" +checksum = "608e7659b5c3d7cba262d894801b9ec9d00de989e8a82bd4bef91d08da45cdc0" dependencies = [ "autocfg", "num-integer", "num-traits", ] +[[package]] +name = "num-conv" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" + [[package]] name = "num-derive" version = "0.2.5" @@ -1440,19 +1541,18 @@ dependencies = [ [[package]] name = "num-integer" -version = "0.1.45" +version = "0.1.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" dependencies = [ - "autocfg", "num-traits", ] [[package]] name = "num-iter" -version = "0.1.43" +version = "0.1.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d03e6c028c5dc5cac6e2dec0efda81fc887605bb3d884578bb6d6bf7514e252" +checksum = "d869c01cc0c455284163fd0092f1f93835385ccab5a98a0dcc497b2f8bf055a9" dependencies = [ "autocfg", "num-integer", @@ -1470,40 +1570,38 @@ dependencies = [ ] [[package]] -name = "num-rational" -version = "0.4.1" +name = "num-traits" +version = "0.2.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0" +checksum = "da0df0e5185db44f69b44f26786fe401b6c293d1907744beaa7fa62b2e5a517a" dependencies = [ "autocfg", - "num-integer", - "num-traits", ] [[package]] -name = "num-traits" -version = "0.2.15" +name = "num_cpus" +version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" +checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" dependencies = [ - "autocfg", + "hermit-abi", + "libc", ] [[package]] -name = "num_cpus" -version = "1.15.0" +name = "object" +version = "0.32.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b" +checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" dependencies = [ - "hermit-abi 0.2.6", - "libc", + "memchr", ] [[package]] name = "okapi" -version = "0.7.0-rc.1" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce66b6366e049880a35c378123fddb630b1a1a3c37fa1ca70caaf4a09f6e2893" +checksum = "9a64853d7ab065474e87696f7601cee817d200e86c42e04004e005cb3e20c3c5" dependencies = [ "log", "schemars", @@ -1513,23 +1611,23 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.18.0" +version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" +checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" [[package]] name = "opaque-debug" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" +checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" [[package]] name = "openssl" -version = "0.10.54" +version = "0.10.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69b3f656a17a6cbc115b5c7a40c616947d213ba182135b014d6051b73ab6f019" +checksum = "95a0481286a310808298130d22dd1fef0fa571e05a8f44ec801801e84b216b1f" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.4.2", "cfg-if", "foreign-types", "libc", @@ -1544,9 +1642,9 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ - "proc-macro2 1.0.60", - "quote 1.0.28", - "syn 2.0.18", + "proc-macro2 1.0.79", + "quote 1.0.35", + "syn 2.0.53", ] [[package]] @@ -1557,9 +1655,9 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "openssl-sys" -version = "0.9.88" +version = "0.9.101" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2ce0f250f34a308dcfdbb351f511359857d4ed2134ba715a4eadd46e1ffd617" +checksum = "dda2b0f344e78efc2facf7d195d098df0dd72151b26ab98da807afc26c198dff" dependencies = [ "cc", "libc", @@ -1585,22 +1683,22 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.8" +version = "0.9.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93f00c865fe7cabf650081affecd3871070f26767e7b2070a3ffae14c654b447" +checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e" dependencies = [ "cfg-if", "libc", "redox_syscall", "smallvec", - "windows-targets", + "windows-targets 0.48.5", ] [[package]] name = "pear" -version = "0.2.4" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ec95680a7087503575284e5063e14b694b7a9c0b065e5dceec661e0497127e8" +checksum = "4ccca0f6c17acc81df8e242ed473ec144cbf5c98037e69aa6d144780aad103c8" dependencies = [ "inlinable_string", "pear_codegen", @@ -1609,14 +1707,14 @@ dependencies = [ [[package]] name = "pear_codegen" -version = "0.2.4" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9661a3a53f93f09f2ea882018e4d7c88f6ff2956d809a276060476fd8c879d3c" +checksum = "2e22670e8eb757cff11d6c199ca7b987f352f0346e0be4dd23869ec72cb53c77" dependencies = [ - "proc-macro2 1.0.60", + "proc-macro2 1.0.79", "proc-macro2-diagnostics", - "quote 1.0.28", - "syn 2.0.18", + "quote 1.0.35", + "syn 2.0.53", ] [[package]] @@ -1630,35 +1728,15 @@ dependencies = [ [[package]] name = "percent-encoding" -version = "2.3.0" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94" - -[[package]] -name = "pin-project" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c95a7476719eab1e366eaf73d0260af3021184f18177925b07f54b30089ceead" -dependencies = [ - "pin-project-internal", -] - -[[package]] -name = "pin-project-internal" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39407670928234ebc5e6e580247dd567ad73a3578460c5990f9503df207e8f07" -dependencies = [ - "proc-macro2 1.0.60", - "quote 1.0.28", - "syn 2.0.18", -] +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "pin-project-lite" -version = "0.2.9" +version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116" +checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" [[package]] name = "pin-utils" @@ -1668,9 +1746,9 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] name = "pkg-config" -version = "0.3.27" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964" +checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" [[package]] name = "png" @@ -1686,9 +1764,9 @@ dependencies = [ [[package]] name = "png" -version = "0.17.9" +version = "0.17.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59871cc5b6cce7eaccca5a802b4173377a1c2ba90654246789a8fa2334426d11" +checksum = "06e4b0d3d1312775e782c86c91a111aa1f910cbb65e1337f9975b5f9a554b5e1" dependencies = [ "bitflags 1.3.2", "crc32fast", @@ -1699,9 +1777,9 @@ dependencies = [ [[package]] name = "polyval" -version = "0.6.1" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d52cff9d1d4dee5fe6d03729099f4a310a41179e0a10dbf542039873f2e826fb" +checksum = "9d1fe60d06143b2430aa532c94cfe9e29783047f06c0d7fd359a9a51b729fa25" dependencies = [ "cfg-if", "cpufeatures", @@ -1709,6 +1787,12 @@ dependencies = [ "universal-hash", ] +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + [[package]] name = "ppv-lite86" version = "0.2.17" @@ -1725,10 +1809,36 @@ dependencies = [ ] [[package]] -name = "proc-macro-hack" -version = "0.5.20+deprecated" +name = "proc-macro-crate" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d37c51ca738a55da99dc0c4a34860fd675453b8b36209178c2249bb13651284" +dependencies = [ + "toml_edit 0.21.1", +] + +[[package]] +name = "proc-macro-error" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068" +checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +dependencies = [ + "proc-macro-error-attr", + "proc-macro2 1.0.79", + "quote 1.0.35", + "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 1.0.79", + "quote 1.0.35", + "version_check", +] [[package]] name = "proc-macro2" @@ -1741,26 +1851,46 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.60" +version = "1.0.79" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dec2b086b7a862cf4de201096214fa870344cf922b2b30c167badb3af3195406" +checksum = "e835ff2298f5721608eb1a980ecaee1aef2c132bf95ecc026a11b7bf3c01c02e" dependencies = [ "unicode-ident", ] [[package]] name = "proc-macro2-diagnostics" -version = "0.10.0" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "606c4ba35817e2922a308af55ad51bab3645b59eae5c570d4a6cf07e36bd493b" +checksum = "af066a9c399a26e020ada66a034357a868728e72cd426f3adcd35f80d88d88c8" dependencies = [ - "proc-macro2 1.0.60", - "quote 1.0.28", - "syn 2.0.18", + "proc-macro2 1.0.79", + "quote 1.0.35", + "syn 2.0.53", "version_check", "yansi", ] +[[package]] +name = "ptr_meta" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0738ccf7ea06b608c10564b31debd4f5bc5e197fc8bfe088f68ae5ce81e7a4f1" +dependencies = [ + "ptr_meta_derive", +] + +[[package]] +name = "ptr_meta_derive" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16b845dbfca988fa33db069c0e230574d15a3088f147a87b64c7589eb662c9ac" +dependencies = [ + "proc-macro2 1.0.79", + "quote 1.0.35", + "syn 1.0.109", +] + [[package]] name = "qoi" version = "0.4.1" @@ -1781,11 +1911,11 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.28" +version = "1.0.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b9ab9c7eadfd8df19006f1cf1a4aed13540ed5cbc047010ece5826e10825488" +checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" dependencies = [ - "proc-macro2 1.0.60", + "proc-macro2 1.0.79", ] [[package]] @@ -1799,6 +1929,12 @@ dependencies = [ "scheduled-thread-pool", ] +[[package]] +name = "radium" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" + [[package]] name = "rand" version = "0.8.5" @@ -1831,9 +1967,9 @@ dependencies = [ [[package]] name = "rayon" -version = "1.7.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d2df5196e37bcc87abebc0053e20787d73847bb33134a69841207dd0a47f03b" +checksum = "e4963ed1bc86e4f3ee217022bd855b297cef07fb9eac5dfa1f788b220b49b3bd" dependencies = [ "either", "rayon-core", @@ -1841,54 +1977,53 @@ dependencies = [ [[package]] name = "rayon-core" -version = "1.11.0" +version = "1.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b8f95bd6966f5c87776639160a66bd8ab9895d9d4ab01ddba9fc60661aebe8d" +checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" dependencies = [ - "crossbeam-channel", "crossbeam-deque", "crossbeam-utils", - "num_cpus", ] [[package]] name = "redox_syscall" -version = "0.3.5" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" +checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" dependencies = [ "bitflags 1.3.2", ] [[package]] name = "ref-cast" -version = "1.0.16" +version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f43faa91b1c8b36841ee70e97188a869d37ae21759da6846d4be66de5bf7b12c" +checksum = "c4846d4c50d1721b1a3bef8af76924eef20d5e723647333798c1b519b3a9473f" dependencies = [ "ref-cast-impl", ] [[package]] name = "ref-cast-impl" -version = "1.0.16" +version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d2275aab483050ab2a7364c1a46604865ee7d6906684e08db0f090acf74f9e7" +checksum = "5fddb4f8d99b0a2ebafc65a87a69a7b9875e4b1ae1f00db265d300ef7f28bccc" dependencies = [ - "proc-macro2 1.0.60", - "quote 1.0.28", - "syn 2.0.18", + "proc-macro2 1.0.79", + "quote 1.0.35", + "syn 2.0.53", ] [[package]] name = "regex" -version = "1.8.4" +version = "1.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0ab3ca65655bb1e41f2a8c8cd662eb4fb035e67c3f78da1d61dffe89d07300f" +checksum = "b62dbe01f0b06f9d8dc7d49e05a0785f153b00b2c227856282f671e0318c9b15" dependencies = [ "aho-corasick", "memchr", - "regex-syntax 0.7.2", + "regex-automata 0.4.6", + "regex-syntax 0.8.2", ] [[package]] @@ -1900,6 +2035,17 @@ dependencies = [ "regex-syntax 0.6.29", ] +[[package]] +name = "regex-automata" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86b83b8b9847f9bf95ef68afb0b8e6cdb80f498442f5179a29fad448fcc1eaea" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax 0.8.2", +] + [[package]] name = "regex-syntax" version = "0.6.29" @@ -1908,17 +2054,26 @@ checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" [[package]] name = "regex-syntax" -version = "0.7.2" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" + +[[package]] +name = "rend" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "436b050e76ed2903236f032a59761c1eb99e1b0aead2c257922771dab1fc8c78" +checksum = "71fe3824f5629716b1589be05dacd749f6aa084c87e00e016714a8cdfccc997c" +dependencies = [ + "bytecheck", +] [[package]] name = "reqwest" -version = "0.11.18" +version = "0.11.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cde824a14b7c14f85caff81225f411faacc04a2013f41670f41443742b1c1c55" +checksum = "78bf93c4af7a8bb7d879d51cebe797356ff10ae8516ace542b5182d9dcac10b2" dependencies = [ - "base64 0.21.2", + "base64 0.21.7", "bytes", "encoding_rs", "futures-core", @@ -1942,6 +2097,8 @@ dependencies = [ "serde", "serde_json", "serde_urlencoded", + "sync_wrapper", + "system-configuration", "tokio", "tokio-native-tls", "tokio-rustls", @@ -1956,9 +2113,9 @@ dependencies = [ [[package]] name = "rgb" -version = "0.8.36" +version = "0.8.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20ec2d3e3fc7a92ced357df9cebd5a10b6fb2aa1ee797bf7e9ce2f17dffc8f59" +checksum = "05aaa8004b64fd573fc9d002f4e632d51ad4f026c2b5ba95fcb6c2f32c2c47d8" dependencies = [ "bytemuck", ] @@ -1973,27 +2130,70 @@ dependencies = [ "libc", "once_cell", "spin 0.5.2", - "untrusted", + "untrusted 0.7.1", "web-sys", "winapi", ] +[[package]] +name = "ring" +version = "0.17.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" +dependencies = [ + "cc", + "cfg-if", + "getrandom", + "libc", + "spin 0.9.8", + "untrusted 0.9.0", + "windows-sys 0.52.0", +] + +[[package]] +name = "rkyv" +version = "0.7.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5cba464629b3394fc4dbc6f940ff8f5b4ff5c7aef40f29166fd4ad12acbc99c0" +dependencies = [ + "bitvec", + "bytecheck", + "bytes", + "hashbrown 0.12.3", + "ptr_meta", + "rend", + "rkyv_derive", + "seahash", + "tinyvec", + "uuid", +] + +[[package]] +name = "rkyv_derive" +version = "0.7.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7dddfff8de25e6f62b9d64e6e432bf1c6736c57d20323e15ee10435fbda7c65" +dependencies = [ + "proc-macro2 1.0.79", + "quote 1.0.35", + "syn 1.0.109", +] + [[package]] name = "rocket" -version = "0.5.0-rc.3" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58734f7401ae5cfd129685b48f61182331745b357b96f2367f01aebaf1cc9cc9" +checksum = "9e7bb57ccb26670d73b6a47396c83139447b9e7878cab627fdfe9ea8da489150" dependencies = [ "async-stream", "async-trait", - "atomic", + "atomic 0.5.3", "binascii", "bytes", "either", "figment", "futures", - "indexmap", - "is-terminal", + "indexmap 2.2.5", "log", "memchr", "multer", @@ -2008,7 +2208,7 @@ dependencies = [ "serde_json", "state", "tempfile", - "time 0.3.22", + "time", "tokio", "tokio-stream", "tokio-util", @@ -2019,18 +2219,18 @@ dependencies = [ [[package]] name = "rocket-client-addr" -version = "0.5.2" +version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8cb54a6e3dd696465c8a47fa61603b49e28cf475133a3d082902c2d4eaae9df1" +checksum = "30ca3b4757605fd3fbdffd2265091d5dad0086403bc9f31d5719c8352b6fa432" dependencies = [ "rocket", ] [[package]] name = "rocket-recaptcha-v3" -version = "0.3.2" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7036d214663fedb5203d83fad620596af537552d4504a1d452596c138d292ec3" +checksum = "c917d72f62be58cc8fc16fb069233df7b262d4a8ff189835b5b4e685b93d845d" dependencies = [ "chrono", "once_cell", @@ -2044,32 +2244,33 @@ dependencies = [ [[package]] name = "rocket_codegen" -version = "0.5.0-rc.3" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7093353f14228c744982e409259fb54878ba9563d08214f2d880d59ff2fc508b" +checksum = "a2238066abf75f21be6cd7dc1a09d5414a671f4246e384e49fe3f8a4936bd04c" dependencies = [ "devise", "glob", - "indexmap", - "proc-macro2 1.0.60", - "quote 1.0.28", + "indexmap 2.2.5", + "proc-macro2 1.0.79", + "quote 1.0.35", "rocket_http", - "syn 2.0.18", + "syn 2.0.53", "unicode-xid 0.2.4", + "version_check", ] [[package]] name = "rocket_http" -version = "0.5.0-rc.3" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "936012c99162a03a67f37f9836d5f938f662e26f2717809761a9ac46432090f4" +checksum = "37a1663694d059fe5f943ea5481363e48050acedd241d46deb2e27f71110389e" dependencies = [ "cookie", "either", "futures", "http", "hyper", - "indexmap", + "indexmap 2.2.5", "log", "memchr", "pear", @@ -2080,18 +2281,18 @@ dependencies = [ "smallvec", "stable-pattern", "state", - "time 0.3.22", + "time", "tokio", "uncased", ] [[package]] name = "rocket_oauth2" -version = "0.5.0-rc.2" -source = "git+https://github.com/mautamu/rocket_oauth2?branch=next#4717108119b06ef1b9b754955c87fe51155598a3" +version = "0.5.0-rc.3" +source = "git+https://github.com/mautamu/rocket_oauth2?branch=next#20abd1cf8d5e3b2b28ca117e1939edc03069d511" dependencies = [ "async-trait", - "base64 0.21.2", + "base64 0.21.7", "hyper", "hyper-rustls", "log", @@ -2104,11 +2305,10 @@ dependencies = [ [[package]] name = "rocket_okapi" -version = "0.8.0-rc.3" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "742098674565c8f0c35c77444f90344aafedebb71cfee9cdbf0185acc6b9cdb7" +checksum = "e059407ecef9ee2f071fc971e10444fcf942149deb028879d6d8ca61a7ce9edc" dependencies = [ - "either", "log", "okapi", "rocket", @@ -2120,22 +2320,22 @@ dependencies = [ [[package]] name = "rocket_okapi_codegen" -version = "0.8.0-rc.3" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c43f8edc57d88750a220b0ec1870a36c1106204ec99cc35131b49de3b954a4a" +checksum = "cfb96114e69e5d7f80bfa0948cbc0120016e9b460954abe9eed37e9a2ad3f999" dependencies = [ "darling", - "proc-macro2 1.0.60", - "quote 1.0.28", + "proc-macro2 1.0.79", + "quote 1.0.35", "rocket_http", "syn 1.0.109", ] [[package]] name = "rocket_sync_db_pools" -version = "0.1.0-rc.3" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6b6bd8a6b33c305404653c05c02ab8fec86cb9e4739e5fd0d2284116e740d08" +checksum = "d83f32721ed79509adac4328e97f817a8f55a47c4b64799f6fd6cc3adb6e42ff" dependencies = [ "diesel", "r2d2", @@ -2148,12 +2348,12 @@ dependencies = [ [[package]] name = "rocket_sync_db_pools_codegen" -version = "0.1.0-rc.3" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd26d72db34a46b182d79defd99dc5e40c2edb58651262e724d78ddcf1eb2474" +checksum = "5cc890925dc79370c28eb15c9957677093fdb7e8c44966d189f38cedb995ee68" dependencies = [ "devise", - "quote 1.0.28", + "quote 1.0.35", ] [[package]] @@ -2166,7 +2366,7 @@ dependencies = [ "diesel", "git-version", "hyper", - "image 0.24.6", + "image 0.24.9", "jsonwebtoken", "nsvg", "okapi", @@ -2183,33 +2383,54 @@ dependencies = [ "serde_derive", "serde_json", "thiserror", - "time 0.3.22", + "time", "toml 0.5.11", "urlencoding", ] +[[package]] +name = "rust_decimal" +version = "1.34.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b39449a79f45e8da28c57c341891b69a183044b29518bb8f86dbac9df60bb7df" +dependencies = [ + "arrayvec", + "borsh", + "bytes", + "num-traits", + "rand", + "rkyv", + "serde", + "serde_json", +] + +[[package]] +name = "rustc-demangle" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" + [[package]] name = "rustix" -version = "0.37.20" +version = "0.38.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b96e891d04aa506a6d1f318d2771bcb1c7dfda84e126660ace067c9b474bb2c0" +checksum = "6ea3e1a662af26cd7a3ba09c0297a31af215563ecf42817c98df621387f4e949" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.4.2", "errno", - "io-lifetimes", "libc", "linux-raw-sys", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] name = "rustls" -version = "0.21.2" +version = "0.21.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e32ca28af694bc1bbf399c33a516dbdf1c90090b8ab23c2bc24f834aa2247f5f" +checksum = "f9d5a6813c0759e4609cd494e8e725babae6a2ca7b62a5536a13daaec6fcb7ba" dependencies = [ "log", - "ring", + "ring 0.17.8", "rustls-webpki", "sct", ] @@ -2228,42 +2449,42 @@ dependencies = [ [[package]] name = "rustls-pemfile" -version = "1.0.2" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d194b56d58803a43635bdc398cd17e383d6f71f9182b9a192c127ca42494a59b" +checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" dependencies = [ - "base64 0.21.2", + "base64 0.21.7", ] [[package]] name = "rustls-webpki" -version = "0.100.2" +version = "0.101.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e98ff011474fa39949b7e5c0428f9b4937eda7da7848bbb947786b7be0b27dab" +checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" dependencies = [ - "ring", - "untrusted", + "ring 0.17.8", + "untrusted 0.9.0", ] [[package]] name = "rustversion" -version = "1.0.12" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f3208ce4d8448b3f3e7d168a73f5e0c43a61e32930de3bceeccedb388b6bf06" +checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4" [[package]] name = "ryu" -version = "1.0.13" +version = "1.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f91339c0467de62360649f8d3e185ca8de4224ff281f66000de5eb2a77a79041" +checksum = "e86697c916019a8588c99b5fac3cead74ec0b4b819707a682fd4d23fa0ce1ba1" [[package]] name = "schannel" -version = "0.1.21" +version = "0.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "713cfb06c7059f3588fb8044c0fad1d09e3c01d225e25b9220dbfdcf16dbb1b3" +checksum = "fbc91545643bcf3a0bbb6569265615222618bdf33ce4ffbbd13c4bbd4c093534" dependencies = [ - "windows-sys 0.42.0", + "windows-sys 0.52.0", ] [[package]] @@ -2277,13 +2498,13 @@ dependencies = [ [[package]] name = "schemars" -version = "0.8.12" +version = "0.8.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02c613288622e5f0c3fdc5dbd4db1c5fbe752746b1d1a56a0630b78fd00de44f" +checksum = "45a28f4c49489add4ce10783f7911893516f15afe45d015608d41faca6bc4d29" dependencies = [ "chrono", "dyn-clone", - "indexmap", + "indexmap 1.9.3", "schemars_derive", "serde", "serde_json", @@ -2291,12 +2512,12 @@ dependencies = [ [[package]] name = "schemars_derive" -version = "0.8.12" +version = "0.8.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "109da1e6b197438deb6db99952990c7f959572794b80ff93707d55a232545e7c" +checksum = "c767fd6fa65d9ccf9cf026122c1b555f2ef9a4f0cea69da4d7dbc3e258d30967" dependencies = [ - "proc-macro2 1.0.60", - "quote 1.0.28", + "proc-macro2 1.0.79", + "quote 1.0.35", "serde_derive_internals", "syn 1.0.109", ] @@ -2315,25 +2536,31 @@ checksum = "1d51f5df5af43ab3f1360b429fa5e0152ac5ce8c0bd6485cae490332e96846a8" [[package]] name = "scopeguard" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "sct" -version = "0.7.0" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d53dcdb7c9f8158937a7981b48accfd39a43af418591a5d008c7b22b5e1b7ca4" +checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" dependencies = [ - "ring", - "untrusted", + "ring 0.17.8", + "untrusted 0.9.0", ] +[[package]] +name = "seahash" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c107b6f4780854c8b126e228ea8869f4d7b71260f962fefb57b996b8959ba6b" + [[package]] name = "security-framework" -version = "2.9.1" +version = "2.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fc758eb7bffce5b308734e9b0c1468893cae9ff70ebf13e7090be8dcbcc83a8" +checksum = "05b64fb303737d99b81884b2c63433e9ae28abebe5eb5045dcdd175dc2ecf4de" dependencies = [ "bitflags 1.3.2", "core-foundation", @@ -2344,32 +2571,38 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.9.0" +version = "2.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f51d0c0d83bec45f16480d0ce0058397a69e48fcdc52d1dc8855fb68acbd31a7" +checksum = "e932934257d3b408ed8f30db49d85ea163bfe74961f017f405b025af298f0c7a" dependencies = [ "core-foundation-sys", "libc", ] +[[package]] +name = "semver" +version = "1.0.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92d43fe69e652f3df9bdc2b85b2854a0825b86e4fb76bc44d945137d053639ca" + [[package]] name = "serde" -version = "1.0.164" +version = "1.0.197" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e8c8cf938e98f769bc164923b06dce91cea1751522f46f8466461af04c9027d" +checksum = "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.164" +version = "1.0.197" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9735b638ccc51c28bf6914d90a2e9725b377144fc612c49a611fddd1b631d68" +checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b" dependencies = [ - "proc-macro2 1.0.60", - "quote 1.0.28", - "syn 2.0.18", + "proc-macro2 1.0.79", + "quote 1.0.35", + "syn 2.0.53", ] [[package]] @@ -2378,16 +2611,16 @@ version = "0.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "85bf8229e7920a9f636479437026331ce11aa132b4dde37d121944a44d6e5f3c" dependencies = [ - "proc-macro2 1.0.60", - "quote 1.0.28", + "proc-macro2 1.0.79", + "quote 1.0.35", "syn 1.0.109", ] [[package]] name = "serde_json" -version = "1.0.97" +version = "1.0.114" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bdf3bf93142acad5821c99197022e170842cdbc1c30482b98750c688c640842a" +checksum = "c5f09b1bd632ef549eaa9f60a1f8de742bdbc698e6cee2095fc84dde5f549ae0" dependencies = [ "itoa", "ryu", @@ -2396,9 +2629,9 @@ dependencies = [ [[package]] name = "serde_spanned" -version = "0.6.2" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93107647184f6027e3b7dcb2e11034cf95ffa1e3a682c67951963ac69c1c007d" +checksum = "eb3622f419d1296904700073ea6cc23ad690adbd66f13ea683df73298736f0c1" dependencies = [ "serde", ] @@ -2417,9 +2650,9 @@ dependencies = [ [[package]] name = "sha2" -version = "0.10.7" +version = "0.10.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "479fb9d862239e610720565ca91403019f2f00410f1864c5aa7479b950a76ed8" +checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" dependencies = [ "cfg-if", "cpufeatures", @@ -2428,9 +2661,9 @@ dependencies = [ [[package]] name = "sharded-slab" -version = "0.1.4" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "900fba806f70c630b0a382d0d825e17a0f19fcd059a2ade1ff237bcddf446b31" +checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" dependencies = [ "lazy_static", ] @@ -2446,9 +2679,15 @@ dependencies = [ [[package]] name = "simd-adler32" -version = "0.3.5" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" + +[[package]] +name = "simdutf8" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "238abfbb77c1915110ad968465608b68e869e0772622c9656714e73e5a1a522f" +checksum = "f27f6278552951f1f2b8cf9da965d10969b2efdea95a6ec47987ab46edfe263a" [[package]] name = "simple_asn1" @@ -2459,32 +2698,32 @@ dependencies = [ "num-bigint", "num-traits", "thiserror", - "time 0.3.22", + "time", ] [[package]] name = "slab" -version = "0.4.8" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d" +checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" dependencies = [ "autocfg", ] [[package]] name = "smallvec" -version = "1.10.0" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0" +checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" [[package]] name = "socket2" -version = "0.4.9" +version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64a4a911eed85daf18834cfaa86a79b7d266ff93ff5ba14005426219480ed662" +checksum = "05ffd9c0a93b7543e062e759284fcf5f5e3b098501104bfbdde4d404db792871" dependencies = [ "libc", - "winapi", + "windows-sys 0.52.0", ] [[package]] @@ -2513,9 +2752,9 @@ dependencies = [ [[package]] name = "state" -version = "0.5.3" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbe866e1e51e8260c9eed836a042a5e7f6726bb2b411dffeaa712e19c388f23b" +checksum = "2b8c4a4445d81357df8b1a650d0d0d6fbbbfe99d064aa5e02f3e4022061476d8" dependencies = [ "loom", ] @@ -2549,61 +2788,104 @@ version = "1.0.109" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" dependencies = [ - "proc-macro2 1.0.60", - "quote 1.0.28", + "proc-macro2 1.0.79", + "quote 1.0.35", "unicode-ident", ] [[package]] name = "syn" -version = "2.0.18" +version = "2.0.53" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32d41677bcbe24c20c52e7c70b0d8db04134c5d1066bf98662e2871ad200ea3e" +checksum = "7383cd0e49fff4b6b90ca5670bfd3e9d6a733b3f90c686605aa7eec8c4996032" dependencies = [ - "proc-macro2 1.0.60", - "quote 1.0.28", + "proc-macro2 1.0.79", + "quote 1.0.35", "unicode-ident", ] +[[package]] +name = "syn_derive" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1329189c02ff984e9736652b1631330da25eaa6bc639089ed4915d25446cbe7b" +dependencies = [ + "proc-macro-error", + "proc-macro2 1.0.79", + "quote 1.0.35", + "syn 2.0.53", +] + +[[package]] +name = "sync_wrapper" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" + +[[package]] +name = "system-configuration" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" +dependencies = [ + "bitflags 1.3.2", + "core-foundation", + "system-configuration-sys", +] + +[[package]] +name = "system-configuration-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "tap" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" + [[package]] name = "tempfile" -version = "3.6.0" +version = "3.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31c0432476357e58790aaa47a8efb0c5138f137343f3b5f23bd36a27e3b0a6d6" +checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1" dependencies = [ - "autocfg", "cfg-if", "fastrand", - "redox_syscall", "rustix", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] name = "thiserror" -version = "1.0.40" +version = "1.0.58" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "978c9a314bd8dc99be594bc3c175faaa9794be04a5a5e153caba6915336cebac" +checksum = "03468839009160513471e86a034bb2c5c0e4baae3b43f79ffc55c4a5427b3297" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.40" +version = "1.0.58" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f" +checksum = "c61f3ba182994efc43764a46c018c347bc492c79f024e705f46567b418f6d4f7" dependencies = [ - "proc-macro2 1.0.60", - "quote 1.0.28", - "syn 2.0.18", + "proc-macro2 1.0.79", + "quote 1.0.35", + "syn 2.0.53", ] [[package]] name = "thread_local" -version = "1.1.7" +version = "1.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152" +checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" dependencies = [ "cfg-if", "once_cell", @@ -2611,33 +2893,25 @@ dependencies = [ [[package]] name = "tiff" -version = "0.8.1" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7449334f9ff2baf290d55d73983a7d6fa15e01198faef72af07e2a8db851e471" +checksum = "ba1310fcea54c6a9a4fd1aad794ecc02c31682f6bfbecdf460bf19533eed1e3e" dependencies = [ "flate2", - "jpeg-decoder 0.3.0", + "jpeg-decoder 0.3.1", "weezl", ] [[package]] name = "time" -version = "0.1.45" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b797afad3f312d1c66a56d11d0316f916356d11bd158fbc6ca6389ff6bf805a" -dependencies = [ - "libc", - "wasi 0.10.0+wasi-snapshot-preview1", - "winapi", -] - -[[package]] -name = "time" -version = "0.3.22" +version = "0.3.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea9e1b3cf1243ae005d9e74085d4d542f3125458f3a81af210d901dcd7411efd" +checksum = "c8248b6521bb14bc45b4067159b9b6ad792e2d6d754d6c41fb50e29fefe38749" dependencies = [ + "deranged", "itoa", + "num-conv", + "powerfmt", "serde", "time-core", "time-macros", @@ -2645,16 +2919,17 @@ dependencies = [ [[package]] name = "time-core" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7300fbefb4dadc1af235a9cef3737cea692a9d97e1b9cbcd4ebdae6f8868e6fb" +checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" [[package]] name = "time-macros" -version = "0.2.9" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "372950940a5f07bf38dbe211d7283c9e6d7327df53794992d293e534c733d09b" +checksum = "7ba3a3ef41e6672a2f0f001392bb5dcd3ff0a9992d618ca761a11c3121547774" dependencies = [ + "num-conv", "time-core", ] @@ -2675,11 +2950,11 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.28.2" +version = "1.36.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94d7b1cfd2aa4011f2de74c2c4c63665e27a71006b0a192dcd2710272e73dfa2" +checksum = "61285f6515fa018fb2d1e46eb21223fff441ee8db5d0f1435e8ab4f5cdb80931" dependencies = [ - "autocfg", + "backtrace", "bytes", "libc", "mio", @@ -2693,13 +2968,13 @@ dependencies = [ [[package]] name = "tokio-macros" -version = "2.1.0" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675e" +checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" dependencies = [ - "proc-macro2 1.0.60", - "quote 1.0.28", - "syn 2.0.18", + "proc-macro2 1.0.79", + "quote 1.0.35", + "syn 2.0.53", ] [[package]] @@ -2724,9 +2999,9 @@ dependencies = [ [[package]] name = "tokio-stream" -version = "0.1.14" +version = "0.1.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "397c988d37662c7dda6d2208364a706264bf3d6138b11d436cbac0ad38832842" +checksum = "267ac89e0bec6e691e5813911606935d77c476ff49024f98abcea3e7b15e37af" dependencies = [ "futures-core", "pin-project-lite", @@ -2735,9 +3010,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.8" +version = "0.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "806fe8c2c87eccc8b3267cbae29ed3ab2d0bd37fca70ab622e46aaa9375ddb7d" +checksum = "5419f34732d9eb6ee4c3578b7989078579b7f039cbbb9ca2c4da015749371e15" dependencies = [ "bytes", "futures-core", @@ -2758,36 +3033,47 @@ dependencies = [ [[package]] name = "toml" -version = "0.7.4" +version = "0.8.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6135d499e69981f9ff0ef2167955a5333c35e36f6937d382974566b3d5b94ec" +checksum = "af06656561d28735e9c1cd63dfd57132c8155426aa6af24f36a00a351f88c48e" dependencies = [ "serde", "serde_spanned", "toml_datetime", - "toml_edit", + "toml_edit 0.22.7", ] [[package]] name = "toml_datetime" -version = "0.6.2" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a76a9312f5ba4c2dec6b9161fdf25d87ad8a09256ccea5a556fef03c706a10f" +checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1" dependencies = [ "serde", ] [[package]] name = "toml_edit" -version = "0.19.10" +version = "0.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1" +dependencies = [ + "indexmap 2.2.5", + "toml_datetime", + "winnow 0.5.40", +] + +[[package]] +name = "toml_edit" +version = "0.22.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2380d56e8670370eee6566b0bfd4265f65b3f432e8c6d85623f728d4fa31f739" +checksum = "18769cd1cec395d70860ceb4d932812a0b4d06b1a4bb336745a4d21b9496e992" dependencies = [ - "indexmap", + "indexmap 2.2.5", "serde", "serde_spanned", "toml_datetime", - "winnow", + "winnow 0.6.5", ] [[package]] @@ -2798,11 +3084,10 @@ checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" [[package]] name = "tracing" -version = "0.1.37" +version = "0.1.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" +checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" dependencies = [ - "cfg-if", "pin-project-lite", "tracing-attributes", "tracing-core", @@ -2810,20 +3095,20 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.24" +version = "0.1.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f57e3ca2a01450b1a921183a9c9cbfda207fd822cef4ccb00a65402cbba7a74" +checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ - "proc-macro2 1.0.60", - "quote 1.0.28", - "syn 2.0.18", + "proc-macro2 1.0.79", + "quote 1.0.35", + "syn 2.0.53", ] [[package]] name = "tracing-core" -version = "0.1.31" +version = "0.1.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0955b8137a1df6f1a2e9a37d8a6656291ff0297c1a97c24e0d8425fe2312f79a" +checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" dependencies = [ "once_cell", "valuable", @@ -2831,20 +3116,20 @@ dependencies = [ [[package]] name = "tracing-log" -version = "0.1.3" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78ddad33d2d10b1ed7eb9d1f518a5674713876e97e5bb9b7345a7984fbb4f922" +checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" dependencies = [ - "lazy_static", "log", + "once_cell", "tracing-core", ] [[package]] name = "tracing-subscriber" -version = "0.3.17" +version = "0.3.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30a651bc37f915e81f087d86e62a18eec5f79550c7faff886f7090b4ea757c77" +checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" dependencies = [ "matchers", "nu-ansi-term", @@ -2860,30 +3145,30 @@ dependencies = [ [[package]] name = "try-lock" -version = "0.2.4" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" [[package]] name = "typenum" -version = "1.16.0" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba" +checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" [[package]] name = "ubyte" -version = "0.10.3" +version = "0.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c81f0dae7d286ad0d9366d7679a77934cfc3cf3a8d67e82669794412b2368fe6" +checksum = "f720def6ce1ee2fc44d40ac9ed6d3a59c361c80a75a7aa8e75bb9baed31cf2ea" dependencies = [ "serde", ] [[package]] name = "uncased" -version = "0.9.9" +version = "0.9.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b9bc53168a4be7402ab86c3aad243a84dd7381d09be0eddc81280c1da95ca68" +checksum = "e1b88fcfe09e89d3866a5c11019378088af2d24c3fbd4f0543f96b479ec90697" dependencies = [ "serde", "version_check", @@ -2891,21 +3176,21 @@ dependencies = [ [[package]] name = "unicode-bidi" -version = "0.3.13" +version = "0.3.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" +checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" [[package]] name = "unicode-ident" -version = "1.0.9" +version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b15811caf2415fb889178633e7724bad2509101cde276048e013b9def5e51fa0" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" [[package]] name = "unicode-normalization" -version = "0.1.22" +version = "0.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" +checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5" dependencies = [ "tinyvec", ] @@ -2938,11 +3223,17 @@ version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" +[[package]] +name = "untrusted" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" + [[package]] name = "url" -version = "2.4.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50bff7831e19200a85b17131d085c25d7811bc4e186efdaf54bbd132994a88cb" +checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633" dependencies = [ "form_urlencoded", "idna", @@ -2951,51 +3242,50 @@ dependencies = [ [[package]] name = "urlencoding" -version = "2.1.2" +version = "2.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8db7427f936968176eaa7cdf81b7f98b980b18495ec28f1b5791ac3bfe3eea9" +checksum = "daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da" + +[[package]] +name = "utf8-width" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86bd8d4e895da8537e5315b8254664e6b769c4ff3db18321b297a1e7004392e3" [[package]] name = "uuid" -version = "1.3.4" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fa2982af2eec27de306107c027578ff7f423d65f7250e40ce0fea8f45248b81" +checksum = "f00cc9702ca12d3c81455259621e676d0f7251cec66a21e98fe2e9a37db93b2a" [[package]] name = "validators" -version = "0.24.3" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "345238a3881e9e3ba259ebb8b210f9180b48021d65962825bc68675c4c9a2ad8" +checksum = "57e4dd623e1c294e7d7850097c41863cda2703166c5f58c225c5ca969299fb7a" dependencies = [ + "byte-unit", + "data-encoding", + "idna", "regex", "rocket", + "semver", + "serde", + "serde_json", "validators-derive", - "validators-options", ] [[package]] name = "validators-derive" -version = "0.24.1" +version = "0.25.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02935d87f4a5e4c6622f795317a5c32b4e20f308ea2bf7f561795d18cde58ebc" +checksum = "72377736834d42b3e4029d46058f7ee2dbd44340bed0e82aaffd5c395bb0e6b3" dependencies = [ - "educe", "enum-ordinalize", - "proc-macro2 1.0.60", - "quote 1.0.28", + "proc-macro2 1.0.79", + "quote 1.0.35", "regex", - "syn 1.0.109", - "validators-options", -] - -[[package]] -name = "validators-options" -version = "0.24.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad273b68c2810b6bc92a6df4008505849bf02d5723381156871e9729616d2523" -dependencies = [ - "educe", - "enum-ordinalize", + "syn 2.0.53", ] [[package]] @@ -3025,12 +3315,6 @@ dependencies = [ "try-lock", ] -[[package]] -name = "wasi" -version = "0.10.0+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f" - [[package]] name = "wasi" version = "0.11.0+wasi-snapshot-preview1" @@ -3039,9 +3323,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.87" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342" +checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" dependencies = [ "cfg-if", "wasm-bindgen-macro", @@ -3049,24 +3333,24 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.87" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd" +checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da" dependencies = [ "bumpalo", "log", "once_cell", - "proc-macro2 1.0.60", - "quote 1.0.28", - "syn 2.0.18", + "proc-macro2 1.0.79", + "quote 1.0.35", + "syn 2.0.53", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.37" +version = "0.4.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c02dbc21516f9f1f04f187958890d7e6026df8d16540b7ad9492bc34a67cea03" +checksum = "76bc14366121efc8dbb487ab05bcc9d346b3b5ec0eaa76e46594cabbe51762c0" dependencies = [ "cfg-if", "js-sys", @@ -3076,67 +3360,54 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.87" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d" +checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" dependencies = [ - "quote 1.0.28", + "quote 1.0.35", "wasm-bindgen-macro-support", ] [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.87" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" +checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" dependencies = [ - "proc-macro2 1.0.60", - "quote 1.0.28", - "syn 2.0.18", + "proc-macro2 1.0.79", + "quote 1.0.35", + "syn 2.0.53", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.87" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1" +checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" [[package]] name = "web-sys" -version = "0.3.64" +version = "0.3.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b85cbef8c220a6abc02aefd892dfc0fc23afb1c6a426316ec33253a3877249b" +checksum = "77afa9a11836342370f4817622a2f0f418b134426d91a82dfb48f532d2ec13ef" dependencies = [ "js-sys", "wasm-bindgen", ] -[[package]] -name = "webpki" -version = "0.22.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f095d78192e208183081cc07bc5515ef55216397af48b873e5edcd72637fa1bd" -dependencies = [ - "ring", - "untrusted", -] - [[package]] name = "webpki-roots" -version = "0.22.6" +version = "0.25.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6c71e40d7d2c34a5106301fb632274ca37242cd0c9d3e64dbece371a40a2d87" -dependencies = [ - "webpki", -] +checksum = "5f20c57d8d7db6d3b86154206ae5d8fba62dd39573114de97c2cb0578251f8e1" [[package]] name = "weezl" -version = "0.1.7" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9193164d4de03a926d909d3bc7c30543cecb35400c02114792c2cae20d5e2dbb" +checksum = "53a85b86a771b1c87058196170769dd264f66c0782acf1ae6cc51bfd64b39082" [[package]] name = "winapi" @@ -3166,22 +3437,16 @@ version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f" dependencies = [ - "windows-targets", + "windows-targets 0.48.5", ] [[package]] -name = "windows-sys" -version = "0.42.0" +name = "windows-core" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7" +checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" 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", + "windows-targets 0.52.4", ] [[package]] @@ -3190,131 +3455,197 @@ version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" dependencies = [ - "windows-targets", + "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.4", ] [[package]] name = "windows-targets" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b1eb6f0cd7c80c79759c929114ef071b87354ce476d9d94271031c0497adfd5" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" dependencies = [ - "windows_aarch64_gnullvm 0.48.0", - "windows_aarch64_msvc 0.48.0", - "windows_i686_gnu 0.48.0", - "windows_i686_msvc 0.48.0", - "windows_x86_64_gnu 0.48.0", - "windows_x86_64_gnullvm 0.48.0", - "windows_x86_64_msvc 0.48.0", + "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.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7dd37b7e5ab9018759f893a1952c9420d060016fc19a472b4bb20d1bdd694d1b" +dependencies = [ + "windows_aarch64_gnullvm 0.52.4", + "windows_aarch64_msvc 0.52.4", + "windows_i686_gnu 0.52.4", + "windows_i686_msvc 0.52.4", + "windows_x86_64_gnu 0.52.4", + "windows_x86_64_gnullvm 0.52.4", + "windows_x86_64_msvc 0.52.4", ] [[package]] name = "windows_aarch64_gnullvm" -version = "0.42.2" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" [[package]] name = "windows_aarch64_gnullvm" -version = "0.48.0" +version = "0.52.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc" +checksum = "bcf46cf4c365c6f2d1cc93ce535f2c8b244591df96ceee75d8e83deb70a9cac9" [[package]] name = "windows_aarch64_msvc" -version = "0.42.2" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" [[package]] name = "windows_aarch64_msvc" -version = "0.48.0" +version = "0.52.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3" +checksum = "da9f259dd3bcf6990b55bffd094c4f7235817ba4ceebde8e6d11cd0c5633b675" [[package]] name = "windows_i686_gnu" -version = "0.42.2" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" [[package]] name = "windows_i686_gnu" -version = "0.48.0" +version = "0.52.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241" +checksum = "b474d8268f99e0995f25b9f095bc7434632601028cf86590aea5c8a5cb7801d3" [[package]] name = "windows_i686_msvc" -version = "0.42.2" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" [[package]] name = "windows_i686_msvc" -version = "0.48.0" +version = "0.52.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00" +checksum = "1515e9a29e5bed743cb4415a9ecf5dfca648ce85ee42e15873c3cd8610ff8e02" [[package]] name = "windows_x86_64_gnu" -version = "0.42.2" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" [[package]] name = "windows_x86_64_gnu" -version = "0.48.0" +version = "0.52.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1" +checksum = "5eee091590e89cc02ad514ffe3ead9eb6b660aedca2183455434b93546371a03" [[package]] name = "windows_x86_64_gnullvm" -version = "0.42.2" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" [[package]] name = "windows_x86_64_gnullvm" -version = "0.48.0" +version = "0.52.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953" +checksum = "77ca79f2451b49fa9e2af39f0747fe999fcda4f5e241b2898624dca97a1f2177" [[package]] name = "windows_x86_64_msvc" -version = "0.42.2" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] name = "windows_x86_64_msvc" -version = "0.48.0" +version = "0.52.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32b752e52a2da0ddfbdbcc6fceadfeede4c939ed16d13e648833a61dfb611ed8" + +[[package]] +name = "winnow" +version = "0.5.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" +checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" +dependencies = [ + "memchr", +] [[package]] name = "winnow" -version = "0.4.7" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca0ace3845f0d96209f0375e6d367e3eb87eb65d27d445bdc9f1843a26f39448" +checksum = "dffa400e67ed5a4dd237983829e66475f0a4a26938c4b04c21baede6262215b8" dependencies = [ "memchr", ] [[package]] name = "winreg" -version = "0.10.1" +version = "0.50.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80d0f4e272c85def139476380b12f9ac60926689dd2e01d4923222f40580869d" +checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" dependencies = [ - "winapi", + "cfg-if", + "windows-sys 0.48.0", ] [[package]] -name = "yansi" +name = "wyz" version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09041cd90cf85f7f8b2df60c646f853b7f535ce68f85244eb6731cf89fa498ec" +checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" +dependencies = [ + "tap", +] + +[[package]] +name = "yansi" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfe53a6657fd280eaa890a3bc59152892ffa3e30101319d168b781ed6529b049" +dependencies = [ + "is-terminal", +] + +[[package]] +name = "zerocopy" +version = "0.7.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74d4d3961e53fa4c9a25a8637fc2bfaf2595b3d3ae34875568a5cf64787716be" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.7.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6" +dependencies = [ + "proc-macro2 1.0.79", + "quote 1.0.35", + "syn 2.0.53", +] [[package]] name = "zune-inflate" diff --git a/Cargo.toml b/Cargo.toml index 000bfd6..169518f 100755 --- a/Cargo.toml +++ b/Cargo.toml @@ -18,7 +18,7 @@ jsonwebtoken = "8.0.1" rand = {version = "0.8", features = ["std"]} rand_chacha="0.3" reqwest = { version = "0.11.8", default-features = false, features = ["json", "rustls-tls"] } -rocket = {version = "0.5.0-rc.3", features = ["secrets", "json"] } +rocket = {version = "0.5.0-rc.4", features = ["secrets", "json"] } rocket_sync_db_pools = {version = "0.1.0-rc.3", features=["diesel_postgres_pool"]} rocket_oauth2 = {git = "https://github.com/mautamu/rocket_oauth2", branch="next", features = ["hyper_rustls_adapter"]} okapi = {version = "0.7.0-rc.1" } diff --git a/src/db.rs b/src/db.rs index f508a2b..95eccca 100755 --- a/src/db.rs +++ b/src/db.rs @@ -2,6 +2,6 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -use rocket_sync_db_pools::{database, diesel}; +use rocket_sync_db_pools::database; #[database("postgres_global")] pub struct DbConn(diesel::PgConnection); diff --git a/src/model/auth/route.rs b/src/model/auth/route.rs index 63c2d74..b0de521 100755 --- a/src/model/auth/route.rs +++ b/src/model/auth/route.rs @@ -4,8 +4,8 @@ use crate::db::DbConn; use crate::model::reddit::route::{audit_trail, Cip, UA}; use crate::model::{ - Claims, CurrentStrength, Latest, Log, MoveInfo, MoveSub, PlayerWithTurnsAndAdditionalTeam, - Poll, PollResponse, Ratings, Stats, TurnInfo, UpdateUser, UserIdFast, + Claims, Latest, Log, MoveInfo, MoveSub, PlayerWithTurnsAndAdditionalTeam, Poll, PollResponse, + Ratings, Stats, TurnInfo, UpdateUser, UserIdFast, }; use crate::schema::{ cfbr_stats, region_ownership, territory_adjacency, territory_ownership, turns, users, @@ -71,6 +71,20 @@ pub(crate) async fn me( } } +pub(crate) fn has_territories( + turn_id: &i32, + team_id: &i32, + conn: &mut PgConnection, +) -> Result { + use diesel::dsl::count; + Ok(territory_ownership::table + .select(count(territory_ownership::id)) + .filter(territory_ownership::turn_id.eq(turn_id)) + .filter(territory_ownership::owner_id.eq(team_id)) + .first::(conn)? + > 0) +} + #[get("/join?", rank = 1)] pub(crate) async fn join_team( team: i32, @@ -100,12 +114,14 @@ pub(crate) async fn join_team( // Does the team they want to join have territories? // check that team has territories - let has_territories: bool = conn - .run(move |connection| CurrentStrength::load_id(team, connection)) + let latest = conn + .run(Latest::latest) .await - .map_err(|_| crate::Error::BadRequest {})? - .territories - > 0; + .map_err(|_| crate::Error::InternalServerError {})?; + + let has_territories: bool = conn + .run(move |c| has_territories(&latest.id, &team, c)) + .await?; // If user has no team (and thus no active_team), then allow them to join anything if users.active_team.unwrap_or_default().name.is_some() { return std::result::Result::Err(crate::Error::BadRequest {}); @@ -284,7 +300,7 @@ pub(crate) async fn make_move<'v>( let v2_verif = match &movesub.token_v2 { None => false, Some(mv_tv2) => { - if mv_tv2 == "" { + if mv_tv2.is_empty() { return std::result::Result::Ok(Json(StatusWrapper { code: 4004, message: "Captcha required.".to_string(), @@ -306,11 +322,7 @@ pub(crate) async fn make_move<'v>( dbg!(e); crate::Error::InternalServerError {} })?; - if r_v2_result.score > 0.5 { - true - } else { - false - } + r_v2_result.score > 0.5 } }; diff --git a/src/model/captchasvc/model.rs b/src/model/captchasvc/model.rs index ceafb65..9700f55 100755 --- a/src/model/captchasvc/model.rs +++ b/src/model/captchasvc/model.rs @@ -44,10 +44,10 @@ impl Captchas { .select((captchas::title, captchas::content, captchas::creation)) .first::(conn)?; true_content.delete(conn)?; - Ok( - true_content.creation.timestamp() - Utc::now().naive_utc().timestamp() < 600 - && content == true_content.content, - ) + Ok(true_content.creation.and_utc().timestamp() + - Utc::now().naive_utc().and_utc().timestamp() + < 600 + && content == true_content.content) } pub fn delete(&self, conn: &mut PgConnection) -> Result { diff --git a/src/model/discord/route.rs b/src/model/discord/route.rs index 10e5ff2..a4a3864 100755 --- a/src/model/discord/route.rs +++ b/src/model/discord/route.rs @@ -19,8 +19,8 @@ pub(crate) fn login(oauth2: OAuth2, cookies: &CookieJar<'_>) -> #[allow(dead_code)] #[get("/logout")] pub(crate) async fn logout(cookies: &CookieJar<'_>) -> Flash { - cookies.remove_private(Cookie::named("jwt")); - cookies.remove_private(Cookie::named("username")); + cookies.remove_private(Cookie::build("jwt")); + cookies.remove_private(Cookie::build("username")); Flash::success(Redirect::to("/"), "Successfully logged out.") //TODO: Implement a deletion call to reddit. } @@ -54,10 +54,13 @@ pub(crate) async fn callback( match userinfo { Ok(user_info) => { let new_user = UpsertableUser { - uname: String::from(user_info.name()), + uname: user_info.name(), platform: String::from("discord"), }; - match conn.run(move |c| UpsertableUser::upsert(new_user, c)).await { + match conn + .run(move |c| UpsertableUser::upsert(&new_user, c)) + .await + { Ok(_n) => { let name = user_info.name(); match conn @@ -76,22 +79,20 @@ pub(crate) async fn callback( exp: timestamp, }; cookies.add_private( - Cookie::build("username", user_info.name()) + Cookie::build(("username", user_info.name())) .same_site(SameSite::Lax) .domain(config.settings.base_url.clone()) .path("/") - .max_age(Duration::hours(168)) - .finish(), + .max_age(Duration::hours(168)), ); match Claims::put(config.settings.cookie_key.as_bytes(), new_claims) { Ok(s) => { cookies.add_private( - Cookie::build("jwt", s) + Cookie::build(("jwt", s)) .same_site(SameSite::Lax) .domain(config.settings.base_url.clone()) .path("/") - .max_age(Duration::hours(720)) - .finish(), + .max_age(Duration::hours(720)), ); std::result::Result::Ok(Redirect::to("/")) } diff --git a/src/model/player/model.rs b/src/model/player/model.rs index ccb4d3c..1c6a725 100755 --- a/src/model/player/model.rs +++ b/src/model/player/model.rs @@ -3,7 +3,7 @@ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ use crate::model::team::TeamWithColors; use crate::model::turn::{LastTurn, PastTurn}; -use crate::model::{Colors, Ratings, Stats, Team, Turn, UserId}; +use crate::model::{Colors, Ratings, Stats, Team, UserId}; use crate::schema::{award_info, awards, moves, past_turns, teams, territories, turninfo, users}; use diesel::prelude::*; use diesel::result::Error; @@ -20,15 +20,15 @@ pub struct Award { info: String, } -#[derive(Serialize)] -pub(crate) struct Player { - pub(crate) id: i32, - pub(crate) name: String, - pub(crate) team: Team, - pub(crate) ratings: Ratings, - pub(crate) stats: Stats, - pub(crate) turns: Vec, -} +// #[derive(Serialize)] +// pub(crate) struct Player { +// pub(crate) id: i32, +// pub(crate) name: String, +// pub(crate) team: Team, +// pub(crate) ratings: Ratings, +// pub(crate) stats: Stats, +// pub(crate) turns: Vec, +// } #[derive(Queryable, Serialize, Deserialize, JsonSchema)] /// A brief summary of a Player on a Team to display on the Team's page diff --git a/src/model/ratings/model.rs b/src/model/ratings/model.rs index 466e7ed..420cdd3 100755 --- a/src/model/ratings/model.rs +++ b/src/model/ratings/model.rs @@ -24,7 +24,7 @@ impl Ratings { let gameTurns = Self::fromarr(stat.gameTurns, [0, 5, 10, 25, 40]); let mvps = Self::fromarr(stat.mvps, [0, 1, 5, 10, 25]); let streak = Self::fromarr(stat.streak, [0, 3, 5, 10, 25]); - let mut numbers = vec![totalTurns, gameTurns, mvps, streak]; // awards + let mut numbers = [totalTurns, gameTurns, mvps, streak]; // awards numbers.sort_unstable(); let mid = ((numbers[1] as f32 + numbers[2] as f32) / 2_f32).round() as i32; let overall: i32 = mid; diff --git a/src/model/reddit/route.rs b/src/model/reddit/route.rs index 72b2617..b4153d2 100755 --- a/src/model/reddit/route.rs +++ b/src/model/reddit/route.rs @@ -29,8 +29,8 @@ pub(crate) fn login(oauth2: OAuth2, cookies: &CookieJar<'_>) -> #[get("/logout")] pub(crate) async fn logout(cookies: &CookieJar<'_>) -> Flash { - cookies.remove_private(Cookie::named("jwt")); - cookies.remove_private(Cookie::named("username")); + cookies.remove_private(Cookie::build("jwt")); + cookies.remove_private(Cookie::build("username")); Flash::success(Redirect::to("/"), "Successfully logged out.") //TODO: Implement a deletion call to reddit. } @@ -75,14 +75,15 @@ pub(crate) async fn callback( let uname_ban_chk = uname.clone(); // We also want to ensure the user has a validated email with Reddit: - if !user_info + let has_verified_email = user_info .get("has_verified_email") .unwrap_or_else(|| { dbg!("Error serializing user email check"); &serde_json::json!(false) }) .as_bool() - .unwrap_or(false) + .unwrap_or(false); + if !has_verified_email && conn .run(move |c| { bans::table @@ -115,15 +116,16 @@ pub(crate) async fn callback( dbg!(user_info.get("is_suspended")); - if user_info + let is_suspended = user_info .get("is_suspended") .unwrap_or_else(|| { dbg!("Error: unable to know if user was suspended"); &serde_json::json!(false) }) .as_bool() - .unwrap_or(false) - { + .unwrap_or(false); + + if is_suspended { conn.run(move |c| UpsertableUser::flag(uname_2_int, c)) .await .map_err(|e| { @@ -160,12 +162,11 @@ pub(crate) async fn callback( // Now we build a private `Cookie` to return to the user // that contains the user's username (which is used in some low-sec processes) cookies.add_private( - Cookie::build("username", uname) + Cookie::build(("username", uname)) .same_site(SameSite::Lax) .domain(config.settings.base_url.clone()) .path("/") - .max_age(Duration::hours(720)) - .finish(), + .max_age(Duration::hours(720)), ); // Now we build the private JWT `Cookie` to return to the user @@ -173,12 +174,11 @@ pub(crate) async fn callback( match Claims::put(config.settings.cookie_key.as_bytes(), new_claims) { Ok(s) => { cookies.add_private( - Cookie::build("jwt", s) + Cookie::build(("jwt", s)) .same_site(SameSite::Lax) .domain(config.settings.base_url.clone()) .path("/") - .max_age(Duration::hours(720)) - .finish(), + .max_age(Duration::hours(720)), ); std::result::Result::Ok(Redirect::to("/")) } diff --git a/src/model/region/model.rs b/src/model/region/model.rs index 826f6b3..372a7bd 100755 --- a/src/model/region/model.rs +++ b/src/model/region/model.rs @@ -6,7 +6,6 @@ use crate::schema::regions; use diesel::prelude::*; use schemars::JsonSchema; -use std::result::Result; #[derive(Serialize, Queryable, Deserialize, JsonSchema)] pub(crate) struct Region { diff --git a/src/model/stats/model.rs b/src/model/stats/model.rs index 3b1da90..2595c91 100755 --- a/src/model/stats/model.rs +++ b/src/model/stats/model.rs @@ -171,19 +171,19 @@ impl CurrentStrength { .first::(conn) } - pub(crate) fn load_id(team: i32, conn: &mut PgConnection) -> Result { - statistics::table - .select(( - statistics::tname, - statistics::playercount, - statistics::merccount, - statistics::starpower, - statistics::territorycount, - )) - .filter(statistics::team.eq(team)) - .order(statistics::turn_id.desc()) - .first::(conn) - } + // pub(crate) fn load_id(team: i32, conn: &mut PgConnection) -> Result { + // statistics::table + // .select(( + // statistics::tname, + // statistics::playercount, + // statistics::merccount, + // statistics::starpower, + // statistics::territorycount, + // )) + // .filter(statistics::team.eq(team)) + // .order(statistics::turn_id.desc()) + // .first::(conn) + // } /* statistics::table .select(( statistics::tname, diff --git a/src/model/territory/model.rs b/src/model/territory/model.rs index 8043de6..f09522a 100755 --- a/src/model/territory/model.rs +++ b/src/model/territory/model.rs @@ -10,7 +10,6 @@ use diesel::prelude::*; use schemars::JsonSchema; use serde_json::Value; -use std::result::Result; #[derive(Serialize, Queryable, Deserialize, JsonSchema)] pub(crate) struct Territory { diff --git a/src/model/turn/model.rs b/src/model/turn/model.rs index ef30ade..8b44434 100755 --- a/src/model/turn/model.rs +++ b/src/model/turn/model.rs @@ -8,15 +8,15 @@ use diesel::result::Error; use schemars::JsonSchema; use serde_json::Value; -#[derive(Serialize)] -pub(crate) struct Turn { - pub(crate) season: i32, - pub(crate) day: i32, - pub(crate) stars: i32, - pub(crate) mvp: bool, - pub(crate) territory: String, - pub(crate) team: String, -} +// #[derive(Serialize)] +// pub(crate) struct Turn { +// pub(crate) season: i32, +// pub(crate) day: i32, +// pub(crate) stars: i32, +// pub(crate) mvp: bool, +// pub(crate) territory: String, +// pub(crate) team: String, +// } #[derive(Queryable, Serialize, Deserialize, JsonSchema)] pub(crate) struct LastTurn { diff --git a/src/ringmaster.rs b/src/ringmaster.rs index 85e92ef..c9cb77b 100755 --- a/src/ringmaster.rs +++ b/src/ringmaster.rs @@ -2,7 +2,7 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -#![feature(drain_filter)] +#![feature(extract_if)] #[macro_use] extern crate diesel; #[macro_use] @@ -14,22 +14,43 @@ pub mod schema; pub mod structs; use chrono::{DateTime, Datelike, Duration, NaiveDateTime, NaiveTime, Timelike, Utc}; -use diesel::pg::PgConnection; use diesel::prelude::*; use diesel::sql_query; use rand::prelude::*; use rand_chacha::ChaCha12Rng; -use std::collections::BTreeMap; +use schema::regions; +use schema::teams; +use schema::territories; +use std::collections::{BTreeMap, HashSet}; const ALT_CUTOFF: i32 = 75; const AON_END: i32 = 48; const AON_START: i32 = 4; +const RESPAWN_ENABLED: bool = true; +const MAX_RESPAWN_COUNT: i32 = 1; +const MAIN_SUBMAP_ID: i32 = 0; +const SECONDARY_SUBMAP_ID: i32 = 1; use structs::{ Bar, PlayerMoves, Stats, TerritoryOwners, TerritoryOwnersInsert, TerritoryStats, TurnInfo, Victor, }; +pub trait Unique { + fn unique(&mut self) -> Self; +} + +impl Unique for Vec +where + T: Clone + Eq + std::hash::Hash, +{ + fn unique(self: &mut Vec) -> Self { + let mut seen: HashSet = HashSet::new(); + self.retain(|item| seen.insert(item.clone())); + self.to_vec() + } +} + #[must_use] pub fn establish_connection() -> PgConnection { // Rocket figment gives us the information we need, then we discard it @@ -92,6 +113,129 @@ fn get_mvp(mut territory_players: Vec, test: bool) -> Option(items: &mut Vec) { + let mut rng = thread_rng(); + + items.shuffle(&mut rng); +} + +// Gathers a pool of available reassignable territories +// (i.e. a team owns multiple territories) +fn gather_reprocessable_territories( + territories: Vec, +) -> (Vec, Vec) { + dbg!(territories.len()); + // We'll populate this first with NCAA's territories, then randomly the pre-owned territories + let mut reprocessable: Vec = Vec::new(); + // This holds pre-owned territories + let mut reprocessable_staging: Vec = Vec::new(); + let mut unreprocessable: Vec = Vec::new(); + let mut teams_with_prior: Vec = vec![]; + for territory in territories { + // If territory's owner owns multiple territories or is NCAA, assign to reprocessable + if territory.owner_id == 0 { + reprocessable.push(territory); + } else if teams_with_prior.contains(&territory.owner_id) { + reprocessable_staging.push(territory); + } else { + // Otherwise, assign to unreprocessable + teams_with_prior.push(territory.owner_id); + unreprocessable.push(territory); + } + } + // Shuffle pre-owned territories + shuffle_array(&mut reprocessable_staging); + // Appends reprocessible_staging to reprocessable + reprocessable.append(&mut reprocessable_staging); + (unreprocessable, reprocessable) +} + +// Returns teams which are eligible for respawn +fn get_respawn_elgibile_team_ids( + team_ids: &Vec, + conn: &mut PgConnection, +) -> Result, diesel::result::Error> { + teams::table + .select(teams::id) + .filter(teams::id.eq_any(team_ids)) + .filter(teams::respawn_count.lt(MAX_RESPAWN_COUNT)) + .load::(conn) +} + +// Returns teams which are eligible for respawn +fn add_one_to_team_respawns( + team_ids: &Vec, + conn: &mut PgConnection, +) -> Result { + diesel::update(teams::table.filter(teams::id.eq_any(team_ids))) + .set(teams::respawn_count.eq(teams::respawn_count + 1)) + .returning(teams::id) + .execute(conn) +} + +// Returns territory ids which are on the respawn map +// territory_id +// Submaps are the respawn map(s) +fn get_territories_by_submaps( + submaps: &Vec, + conn: &mut PgConnection, +) -> Result, diesel::result::Error> { + territories::table + .inner_join(regions::table) + .select(territories::id) + .filter(regions::submap.eq_any(submaps)) + .load::(conn) +} + +fn reassign_processed_territories( + eligible_teams: &Vec, + territory_pool: &mut [TerritoryOwnersInsert], + secondary_stats: &mut BTreeMap, + secondary_territory_stats: &mut Vec, + turn_id: i32, +) -> Vec { + let mut saved_teams: Vec = vec![]; + let mut territory_pointer = 0; + dbg!(&eligible_teams); + for team in eligible_teams { + if territory_pool.len() > territory_pointer { + // Remove territory from existing owner's stats + secondary_stats + .entry(territory_pool[territory_pointer].owner_id) + .or_insert_with(|| { + Stats::new(turn_id + 1, territory_pool[territory_pointer].owner_id) + }) + .territorycount -= 1; + // Update the territory's owner + territory_pool[territory_pointer].owner_id = *team; + // Mark as a respawn + territory_pool[territory_pointer].is_respawn = true; + // Update respawned team's stats + secondary_stats + .entry(*team) + .or_insert_with(|| Stats::new(turn_id + 1, *team)) + .territorycount += 1; + // Update territory stats to include this new team + secondary_territory_stats.push(TerritoryStats { + team: *team, + turn_id, + territory: territory_pool[territory_pointer].territory_id, + ..TerritoryStats::default() + }); + // Note: we leave the MVP in tact + territory_pointer += 1; + saved_teams.push(*team); + } + } + saved_teams +} + /// Go territory by territory and determine new owner, MVP, and statistics /// This is the portion of the code that determines who wins a territory and /// who will be MVP of that territory. You can consider it 'RNGESUS,' if you please. @@ -112,6 +256,7 @@ fn process_territories( mut players: Vec, seed: &mut ChaCha12Rng, test: bool, + must_vacate: Vec, ) -> ( Vec, Vec, @@ -128,6 +273,13 @@ fn process_territories( let mut stats: BTreeMap = BTreeMap::new(); let mut territory_stats: Vec = Vec::new(); + // If this is for the respawn map and a team has moved to main map, then we vacate + // their territories; we do this by discarding their moves and on territories w/ 0 moves + // reassigning to NCAA (id 0) + if !must_vacate.is_empty() { + players.retain(|x| !must_vacate.contains(&x.team)); + } + // Now we go over each territory that was owned previously. // If a territory wasn't 'owned' yesterday, we won't see it. // But given proper starting DB conditions that's not an issue. @@ -137,7 +289,7 @@ fn process_territories( // We collect all the players that placed a move on this territory let territory_players = players - .drain_filter(|player| { + .extract_if(|player| { player.territory == territory.territory_id && player.alt_score < ALT_CUTOFF }) .collect::>(); @@ -161,21 +313,29 @@ fn process_territories( 0 => { dbg!("Zero Team"); + // In the case that respawn = true and the owning team + let territory_owner_id = if !must_vacate.is_empty() { + 0 + } else { + territory.owner_id + }; + // Push the new territory owner. new_owners.push(TerritoryOwnersInsert::new( &territory, - territory.owner_id, + territory_owner_id, None, None, + false, )); // add team territory count to stats (but no MVPs as nobody made a move here) stats - .entry(territory.owner_id) - .or_insert_with(|| Stats::new(territory.turn_id + 1, territory.owner_id)) + .entry(territory_owner_id) + .or_insert_with(|| Stats::new(territory.turn_id + 1, territory_owner_id)) .territorycount += 1; territory_stats.push(TerritoryStats { - team: territory.owner_id, + team: territory_owner_id, turn_id: territory.turn_id, territory: territory.territory_id, ..TerritoryStats::default() @@ -200,6 +360,7 @@ fn process_territories( territory.owner_id, None, None, + false, )); // add team territory count to stats stats @@ -254,7 +415,7 @@ fn process_territories( // We push the new territory owner into the owners docket. new_owners.push(TerritoryOwnersInsert::new( - &territory, teams[0], None, mvp_id, + &territory, teams[0], None, mvp_id, false, )); // And finally we alter the statistics for the team that won @@ -341,6 +502,7 @@ fn process_territories( territory.owner_id, None, None, + false, )); // add team territory count to stats @@ -441,7 +603,7 @@ fn process_territories( // We collect the players that are on the winning team for MVPing. let territory_victors = territory_players .clone() - .drain_filter(|player| player.team == victor && player.alt_score < ALT_CUTOFF) + .extract_if(|player| player.team == victor && player.alt_score < ALT_CUTOFF) .collect::>(); // We now determine the MVP from the players on the winning team. @@ -463,6 +625,7 @@ fn process_territories( victor, Some(lottery), mvp_id, + false, )); // We generate the team statistics for the victor @@ -623,7 +786,7 @@ fn chaos_update( // Goes 0, 1, 2, 3, num-1; excludes num just like normal languages let mut new_stuff = Vec::new(); #[derive(Insertable)] - #[diesel(table_name = "territory_adjacency")] + #[diesel(table_name = territory_adjacency)] struct TerritoryAdjacent<'a> { territory_id: i32, adjacent_id: i32, @@ -697,11 +860,9 @@ fn next_day_in_seq( let min = next_days.iter().min().unwrap_or(&0); 7 - (min - curr_day).abs() }; - (*now + Duration::days(index)).date_naive().and_hms_opt( - next_time.hour(), - next_time.minute(), - next_time.second(), - ) + (*now + Duration::try_days(index).expect("adding index of days should work")) + .date_naive() + .and_hms_opt(next_time.hour(), next_time.minute(), next_time.second()) } fn runtime() -> Result<(), diesel::result::Error> { @@ -718,21 +879,125 @@ fn runtime() -> Result<(), diesel::result::Error> { //dbg!(&turninfoblock.season, &turninfoblock.day); // Now we go get all player moves for the current day let players = PlayerMoves::load(&turninfoblock.id, &mut conn)?; - // And a list of all territories, and their current owners: - let territories = TerritoryOwners::load(&turninfoblock.id, &mut conn)?; // If there are no moves to load, we'll exit as something's not right. // TODO: Return Err, not Ok if players.is_empty() { return Ok(()); } + + // If Respawn is enabled, select two pools of territories + let (territories, secondary_territories, primary_players, secondary_players) = + if RESPAWN_ENABLED { + let territory_id_filter_main: Vec = + get_territories_by_submaps(&vec![MAIN_SUBMAP_ID], &mut conn)?; + let territory_id_filter_secondary: Vec = + get_territories_by_submaps(&vec![SECONDARY_SUBMAP_ID], &mut conn)?; + let territories: Vec = TerritoryOwners::load( + &turninfoblock.id, + Some(&territory_id_filter_main), + &mut conn, + )?; + let secondary_territories = TerritoryOwners::load( + &turninfoblock.id, + Some(&territory_id_filter_secondary), + &mut conn, + )?; + + let (primary_players, secondary_players) = players + .into_iter() + .partition(|v| territory_id_filter_main.contains(&v.territory)); + + ( + territories, + Some(secondary_territories), + primary_players, + Some(secondary_players), + ) + } else { + // And a list of all territories, and their current owners: + let territories = TerritoryOwners::load(&turninfoblock.id, None, &mut conn)?; + (territories, None, players, None) + }; + + // If Respawn is enabled, get only those territories for which the territory is + // on the main map //let move_ids = players.iter().map(|x| x.id).collect::>(); // We pass in an entropy-driven randomy number, since we're not testing - let (owners, mvps, stats, territory_stats) = process_territories( + let (mut owners, mut mvps, mut stats, mut territory_stats) = process_territories( territories, - players, + primary_players, &mut ChaCha12Rng::from_entropy(), false, + Vec::new(), ); + // If Respawn is enabled, deduce which teams died + if RESPAWN_ENABLED { + let alive_teams = owners + .iter() + .map(|v| v.owner_id) + .collect::>() + .unique(); + let eliminated_teams = owners + .iter() + .map(|v| v.previous_owner_id) + .collect::>() + .unique() + .iter() + .filter(|v| !alive_teams.contains(*v)) + .copied() + .collect(); + // Now that we know which teams died, query to see which are eligible for respawn + let mut eligible_eliminated_teams = + get_respawn_elgibile_team_ids(&eliminated_teams, &mut conn)?; + + // Run process_territories on secondary_territories + // If any teams alive on the main map exist, we then vacate their territories + let ( + mut secondary_owners, + mut secondary_mvps, + mut secondary_stats, + mut secondary_territory_stats, + ) = process_territories( + secondary_territories.expect("Secondary territories not defined, bailing!"), + secondary_players.expect("Secondary players was neither a populated nor empty vec?"), + &mut ChaCha12Rng::from_entropy(), + false, + alive_teams, + ); + + if !eligible_eliminated_teams.is_empty() { + // Shuffle the pool of eliminated teams + shuffle_array(&mut eligible_eliminated_teams); + // Gather a pool of available reassignable territories + let (unreprocessable, mut reprocessable) = + gather_reprocessable_territories(secondary_owners.clone()); + + dbg!(unreprocessable.len(), reprocessable.len()); + + secondary_owners = unreprocessable; + // Assign eliminated teams territories from the reprocessable pool, if eligible + let saved_teams = reassign_processed_territories( + &eligible_eliminated_teams, + &mut reprocessable, + &mut secondary_stats, + &mut secondary_territory_stats, + turninfoblock.id, + ); + secondary_owners.append(&mut reprocessable); + // Update the statistics and whatnot + assert_eq!( + add_one_to_team_respawns(&saved_teams, &mut conn)?, + saved_teams.len() + ); + } + + // Merge all the data + owners.append(&mut secondary_owners); + mvps.append(&mut secondary_mvps); + stats.append(&mut secondary_stats); + territory_stats.append(&mut secondary_territory_stats); + } + TerritoryStats::insert(territory_stats, &mut conn)?; Stats::insert(stats, turninfoblock.id, &mut conn)?; let territory_insert = TerritoryOwnersInsert::insert(&owners, &mut conn)?; @@ -754,8 +1019,8 @@ fn runtime() -> Result<(), diesel::result::Error> { Ok(_ok) => { println!("Update turninfo success.") } - Err(_e) => { - println!("Error updating turninfo.") + Err(e) => { + println!("Error updating turninfo. {e:?}") } } let aone = (turninfoblock.allornothingenabled == Some(true) @@ -814,7 +1079,7 @@ fn main() { mod tests { // Note this useful idiom: importing names from outer (for mod tests) scope. use super::*; - use chrono::{NaiveDate, NaiveTime}; + use chrono::NaiveDate; #[test] fn test_next_day_in_seq() { @@ -833,7 +1098,11 @@ mod tests { .unwrap(); assert_eq!( Some(next), - next_day_in_seq(&next_days, &naive_time, &DateTime::from_utc(now, Utc)) + next_day_in_seq( + &next_days, + &naive_time, + &DateTime::from_naive_utc_and_offset(now, Utc) + ) ); } @@ -850,7 +1119,11 @@ mod tests { .unwrap(); assert_eq!( None, - next_day_in_seq(&next_days, &naive_time, &DateTime::from_utc(now, Utc)) + next_day_in_seq( + &next_days, + &naive_time, + &DateTime::from_naive_utc_and_offset(now, Utc) + ) ); } @@ -871,7 +1144,58 @@ mod tests { .unwrap(); assert_eq!( Some(next), - next_day_in_seq(&next_days, &naive_time, &DateTime::from_utc(now, Utc)) + next_day_in_seq( + &next_days, + &naive_time, + &DateTime::from_naive_utc_and_offset(now, Utc) + ) + ); + } + + #[test] + fn test_gather_reprocessable_territories() { + let territories: Vec = vec![ + TerritoryOwnersInsert { + territory_id: 1, + owner_id: 2, + ..Default::default() + }, + TerritoryOwnersInsert { + territory_id: 2, + owner_id: 2, + ..Default::default() + }, + TerritoryOwnersInsert { + territory_id: 3, + owner_id: 0, + ..Default::default() + }, + TerritoryOwnersInsert { + territory_id: 4, + owner_id: 3, + ..Default::default() + }, + TerritoryOwnersInsert { + territory_id: 5, + owner_id: 0, + ..Default::default() + }, + ]; + let (unreprocessable, reprocessable) = gather_reprocessable_territories(territories); + assert_eq!( + unreprocessable + .iter() + .map(|x| x.territory_id) + .collect::>(), + vec![1, 4] + ); + // Make sure owner_id=0 are placed first + assert_eq!( + reprocessable + .iter() + .map(|x| x.territory_id) + .collect::>(), + vec![3, 5, 2] ); } @@ -892,7 +1216,11 @@ mod tests { .unwrap(); assert_eq!( Some(next), - next_day_in_seq(&next_days, &naive_time, &DateTime::from_utc(now, Utc)) + next_day_in_seq( + &next_days, + &naive_time, + &DateTime::from_naive_utc_and_offset(now, Utc) + ) ); } @@ -913,7 +1241,11 @@ mod tests { .unwrap(); assert_eq!( Some(next), - next_day_in_seq(&next_days, &naive_time, &DateTime::from_utc(now, Utc)) + next_day_in_seq( + &next_days, + &naive_time, + &DateTime::from_naive_utc_and_offset(now, Utc) + ) ); } @@ -935,7 +1267,11 @@ mod tests { .unwrap(); assert_eq!( Some(next), - next_day_in_seq(&next_days, &naive_time, &DateTime::from_utc(now, Utc)) + next_day_in_seq( + &next_days, + &naive_time, + &DateTime::from_naive_utc_and_offset(now, Utc) + ) ); } } @@ -965,7 +1301,11 @@ mod tests { }; assert_eq!( Some(next), - next_day_in_seq(&next_days, &naive_time, &DateTime::from_utc(now, Utc)) + next_day_in_seq( + &next_days, + &naive_time, + &DateTime::from_naive_utc_and_offset(now, Utc) + ) ); } } @@ -1078,6 +1418,7 @@ mod tests { previous_owner_id: 5, random_number: 0.0, mvp: None, + is_respawn: false, }]; let playermoves: Vec = Vec::new(); @@ -1086,6 +1427,7 @@ mod tests { 3, Some(0.0), None, + false, )]; let mvps: Vec = Vec::new(); let mut stats: BTreeMap = BTreeMap::new(); @@ -1108,7 +1450,8 @@ mod tests { territories, playermoves, &mut ChaCha12Rng::seed_from_u64(45), - true + true, + Vec::new() ) ); } @@ -1123,6 +1466,7 @@ mod tests { previous_owner_id: 5, random_number: 0.0, mvp: None, + is_respawn: false, }]; let playermoves: Vec = vec![PlayerMoves { @@ -1144,6 +1488,7 @@ mod tests { 3, Some(0.0), Some(6), + false, )]; let mvps: Vec = vec![playermoves[0].clone()]; let mut stats: BTreeMap = BTreeMap::new(); @@ -1184,7 +1529,8 @@ mod tests { territories, playermoves, &mut ChaCha12Rng::seed_from_u64(45), - true + true, + Vec::new() ) ); } @@ -1199,6 +1545,7 @@ mod tests { previous_owner_id: 5, random_number: 0.0, mvp: None, + is_respawn: false, }]; let playermoves: Vec = vec![PlayerMoves { @@ -1220,6 +1567,7 @@ mod tests { 3, Some(0.0), Some(6), + false, )]; let mvps: Vec = vec![playermoves[0].clone()]; let mut stats: BTreeMap = BTreeMap::new(); @@ -1276,7 +1624,8 @@ mod tests { territories, playermoves, &mut ChaCha12Rng::seed_from_u64(45), - true + true, + Vec::new() ) ); } @@ -1291,6 +1640,7 @@ mod tests { previous_owner_id: 5, random_number: 0.0, mvp: None, + is_respawn: false, }]; let playermoves: Vec = vec![PlayerMoves { @@ -1312,6 +1662,7 @@ mod tests { 6, Some(0.0), None, + false, )]; let mvps: Vec = vec![]; let mut stats: BTreeMap = BTreeMap::new(); @@ -1367,7 +1718,8 @@ mod tests { territories, playermoves, &mut ChaCha12Rng::seed_from_u64(45), - true + true, + Vec::new() ) ); } @@ -1382,6 +1734,7 @@ mod tests { previous_owner_id: 5, random_number: 0.0, mvp: None, + is_respawn: false, }]; let playermoves: Vec = vec![PlayerMoves { @@ -1403,6 +1756,7 @@ mod tests { 3, Some(0.0), None, + false, )]; let mvps: Vec = Vec::new(); let mut stats: BTreeMap = BTreeMap::new(); @@ -1425,7 +1779,8 @@ mod tests { territories, playermoves, &mut ChaCha12Rng::seed_from_u64(45), - true + true, + Vec::new() ) ); } @@ -1440,6 +1795,7 @@ mod tests { previous_owner_id: 5, random_number: 0.0, mvp: Some(12), + is_respawn: false, }]; let playermoves: Vec = vec![ @@ -1477,6 +1833,7 @@ mod tests { 3, Some(5.254_147_072_201_107), Some(6), + false, )]; let mvps: Vec = vec![playermoves[0].clone()]; let mut stats: BTreeMap = BTreeMap::new(); @@ -1547,7 +1904,8 @@ mod tests { territories, playermoves, &mut ChaCha12Rng::seed_from_u64(45), - true + true, + Vec::new() ) ); } @@ -1562,6 +1920,7 @@ mod tests { previous_owner_id: 5, random_number: 0.0, mvp: Some(12), + is_respawn: false, }]; let playermoves: Vec = vec![ @@ -1655,6 +2014,7 @@ mod tests { 6, Some(0.0), None, + false, )]; let mvps: Vec = vec![]; let mut stats: BTreeMap = BTreeMap::new(); @@ -1715,7 +2075,8 @@ mod tests { territories, playermoves, &mut ChaCha12Rng::seed_from_u64(45), - true + true, + Vec::new() ) ); } diff --git a/src/schema.rs b/src/schema.rs index 4414895..ba3734f 100755 --- a/src/schema.rs +++ b/src/schema.rs @@ -29,6 +29,7 @@ table! { color_1 -> Text, color_2 -> Text, seasons -> Array, + respawn_count -> Int4, } } @@ -81,6 +82,7 @@ table! { regions (id){ id -> Int4, name -> Text, + submap -> Int4, } } @@ -174,6 +176,7 @@ table! { previous_owner_id -> Int4, random_number -> Double, mvp -> Nullable, + is_respawn -> Bool, } } @@ -392,6 +395,7 @@ allow_tables_to_appear_in_same_query!(users, awards, award_info); diesel::joinable!(awards -> users (user_id)); diesel::joinable!(awards -> award_info (award_id)); diesel::joinable!(statistics -> turninfo (turn_id)); +diesel::joinable!(territories -> regions (region)); allow_tables_to_appear_in_same_query!( past_turns, diff --git a/src/structs.rs b/src/structs.rs index 1d6a89c..3cf6070 100755 --- a/src/structs.rs +++ b/src/structs.rs @@ -5,7 +5,6 @@ use crate::schema::{stats, teams, territory_ownership, territory_stats, turninfo, turns}; use crate::Utc; use chrono::NaiveDateTime; -use diesel::pg::PgConnection; use diesel::prelude::*; use diesel::result::Error; use diesel::sql_types::Bool; @@ -69,9 +68,10 @@ pub struct TerritoryOwners { pub previous_owner_id: i32, pub random_number: f64, pub mvp: Option, + pub is_respawn: bool, } -#[derive(Deserialize, Insertable, Queryable, Debug, PartialEq)] +#[derive(Clone, Default, Deserialize, Insertable, Queryable, Debug, PartialEq)] #[diesel(table_name = territory_ownership)] pub struct TerritoryOwnersInsert { pub territory_id: i32, @@ -80,6 +80,7 @@ pub struct TerritoryOwnersInsert { pub previous_owner_id: i32, pub random_number: f64, pub mvp: Option, + pub is_respawn: bool, } #[derive(Deserialize, Insertable, Queryable, Debug, PartialEq, Clone)] @@ -320,19 +321,31 @@ impl Default for TerritoryStats { } impl TerritoryOwners { - pub fn load(turn_id: &i32, conn: &mut PgConnection) -> Result, Error> { - territory_ownership::table + // Loads the TerritoryOwnersfor a given turn; if respawn is enabled, + // then optionally filters on territories if territory_ids is Some + pub fn load( + turn_id: &i32, + territory_ids: Option<&Vec>, + conn: &mut PgConnection, + ) -> Result, Error> { + let mut query = territory_ownership::table .filter(territory_ownership::turn_id.eq(turn_id)) - .load::(conn) + .into_boxed(); + if let Some(territory_ids) = territory_ids { + query = query.filter(territory_ownership::territory_id.eq_any(territory_ids)); + } + query.load::(conn) } } impl TerritoryOwnersInsert { - #[must_use] pub fn new( + #[must_use] + pub fn new( territory: &TerritoryOwners, owner: i32, random_number: Option, mvp: Option, + is_respawn: bool, ) -> Self { TerritoryOwnersInsert { territory_id: territory.territory_id, @@ -341,6 +354,7 @@ impl TerritoryOwnersInsert { previous_owner_id: territory.owner_id, random_number: random_number.unwrap_or(0_f64), mvp, + is_respawn, } }