From 0e555ce5394ddab715da757cbd1a9adb75ba4faa Mon Sep 17 00:00:00 2001 From: Paul van Tilburg Date: Sun, 13 Jun 2021 20:51:18 +0200 Subject: [PATCH] Port to rocket 0.5.0-rc1 and Thirtyfour 0.19.0 Also switch to using tokio 1.6.1 (this is the version that Rocket uses). We only need to use the "process" feature from that. The rocket-contrib crate has been dropped by upstream. --- Cargo.lock | 1083 +++++++++++++++++++++++++----------------------- Cargo.toml | 12 +- screenshot.png | Bin 0 -> 80505 bytes src/main.rs | 50 ++- 4 files changed, 587 insertions(+), 558 deletions(-) create mode 100644 screenshot.png diff --git a/Cargo.lock b/Cargo.lock index 45a49c0..eff9aa8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,39 +2,54 @@ # It is not intended for manual editing. [[package]] name = "addr2line" -version = "0.13.0" +version = "0.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b6a2d3371669ab3ca9797670853d61402b03d0b4b9ebf33d677dfa720203072" +checksum = "e7a2e47a1fbe209ee101dd6d61285226744c6c8d3c21c8dc878ba6cb9f467f3a" dependencies = [ "gimli", ] [[package]] name = "adler" -version = "0.2.3" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee2a4ec343196209d6594e19543ae87a39f96d5534d7174822a3ad825dd6ed7e" +checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" [[package]] -name = "ansi_term" -version = "0.11.0" +name = "aho-corasick" +version = "0.7.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979b" +checksum = "1e37cfd5e7657ada45f742d6e99ca5788580b5c529dc78faf11ece6dc702656f" dependencies = [ - "winapi 0.3.9", + "memchr", ] [[package]] -name = "arc-swap" -version = "0.4.7" +name = "async-stream" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d25d88fd6b8041580a654f9d0c581a047baee2b3efee13275f2fc392fc75034" +checksum = "171374e7e3b2504e0e5236e3b59260560f9fe94bfe9ac39ba5e4e929c5590625" +dependencies = [ + "async-stream-impl", + "futures-core", +] + +[[package]] +name = "async-stream-impl" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "648ed8c8d2ce5409ccd57453d9d1b214b342a0d69376a6feda1fd6cae3299308" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] [[package]] name = "async-trait" -version = "0.1.41" +version = "0.1.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b246867b8b3b6ae56035f1eb1ed557c1d8eae97f0d53696138a50fa0e3a3b8c0" +checksum = "0b98e84bbb4cbcdd97da190ba0c58a1bb0de2c1fdf67d159e192ed766aeca722" dependencies = [ "proc-macro2", "quote", @@ -58,7 +73,7 @@ checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" dependencies = [ "hermit-abi", "libc", - "winapi 0.3.9", + "winapi", ] [[package]] @@ -68,7 +83,6 @@ dependencies = [ "color-eyre", "lazy_static", "rocket", - "rocket_contrib", "serde", "thirtyfour", "tokio", @@ -83,12 +97,13 @@ checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a" [[package]] name = "backtrace" -version = "0.3.53" +version = "0.3.60" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "707b586e0e2f247cbde68cdd2c3ce69ea7b7be43e1c5b426e37c9319c4b9838e" +checksum = "b7815ea54e4d821e791162e078acbebfd6d8c8939cd559c9335dceb1c8ca7282" dependencies = [ "addr2line", - "cfg-if 1.0.0", + "cc", + "cfg-if", "libc", "miniz_oxide", "object", @@ -97,15 +112,15 @@ dependencies = [ [[package]] name = "base-x" -version = "0.2.6" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b20b618342cf9891c292c4f5ac2cde7287cc5c87e87e9c769d617793607dec1" +checksum = "a4521f3e3d031370679b3b140beb36dfe4801b09ac77e30c61941f97df3ef28b" [[package]] name = "base64" -version = "0.12.3" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3441f0f7b02788e948e47f457ca01f1d7e6d92c693bc132c22b087d3141c03ff" +checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd" [[package]] name = "binascii" @@ -121,27 +136,21 @@ checksum = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693" [[package]] name = "bumpalo" -version = "3.4.0" +version = "3.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e8c087f005730276d1096a652e92a8bacee2e2472bcc9715a74d2bec38b5820" +checksum = "9c59e7af012c713f529e7a3ee57ce9b31ddd858d4b512923602f74608b009631" [[package]] name = "bytes" -version = "0.5.6" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e4cec68f03f32e44924783795810fa50a7035d8c8ebe78580ad7e6c703fba38" +checksum = "b700ce4376041dcd0a327fd0097c41095743c4c8af8887265942faf1100bd040" [[package]] name = "cc" -version = "1.0.61" +version = "1.0.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed67cbde08356238e75fc4656be4749481eeffb09e19f320a25237d5221c985d" - -[[package]] -name = "cfg-if" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" +checksum = "4a72c244c1ff497a746a7e1fb3d14bd08420ecda70c8f25c7112f2781652d787" [[package]] name = "cfg-if" @@ -159,24 +168,15 @@ dependencies = [ "num-integer", "num-traits", "serde", - "time 0.1.44", - "winapi 0.3.9", -] - -[[package]] -name = "cloudabi" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4344512281c643ae7638bbabc3af17a11307803ec8f0fcad9fae512a8bf36467" -dependencies = [ - "bitflags", + "time 0.1.43", + "winapi", ] [[package]] name = "color-eyre" -version = "0.5.6" +version = "0.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2a5123db5af8349c41c43ed0e5dca1cd56c911ea0c4ce6e6ff30f159fa5d27e" +checksum = "1f1885697ee8a177096d42f158922251a41973117f6d8a234cee94b9509157b7" dependencies = [ "backtrace", "color-spantrace", @@ -189,36 +189,44 @@ dependencies = [ [[package]] name = "color-spantrace" -version = "0.1.4" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a99aa4aa18448eef4c7d3f86d2720d2d8cad5c860fe9ff9b279293efdc8f5be" +checksum = "b6eee477a4a8a72f4addd4de416eb56d54bc307b284d6601bafdee1f4ea462d1" dependencies = [ - "ansi_term", + "once_cell", + "owo-colors", "tracing-core", "tracing-error", ] [[package]] name = "const_fn" -version = "0.4.2" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce90df4c658c62f12d78f7508cf92f9173e5184a539c10bfe54a3107b3ffd0f2" +checksum = "f92cfa0fd5690b3cf8c1ef2cabbd9b7ef22fa53cf5e1f92b05103f6d5d1cf6e7" + +[[package]] +name = "convert_case" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" [[package]] name = "cookie" -version = "0.15.0-dev" -source = "git+https://github.com/SergioBenitez/cookie-rs.git?rev=9675944#96759448004cc9bdb76a58cfacee815da5617f8b" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffdf8865bac3d9a3bde5bde9088ca431b11f5d37c7a578b8086af77248b76627" dependencies = [ "percent-encoding", - "time 0.2.22", + "time 0.2.27", "version_check", ] [[package]] name = "core-foundation" -version = "0.7.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57d24c7a13c43e870e37c1556b74555437870a04514f7685f5b354e090567171" +checksum = "0a89e2ae426ea83155dccf10c0fa6b1463ef6d5fcb44cee0b224a408fa640a62" dependencies = [ "core-foundation-sys", "libc", @@ -226,14 +234,27 @@ dependencies = [ [[package]] name = "core-foundation-sys" -version = "0.7.0" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3a71ab494c0b5b860bdc8407ae08978052417070c2ced38573a9157ad75b8ac" +checksum = "ea221b5284a47e40033bf9b66f35f984ec0ea2931eb03505246cd27a963f981b" + +[[package]] +name = "derive_more" +version = "0.99.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5cc7b9cef1e351660e5443924e4f43ab25fbbed3e9a5f052df3677deb4d6b320" +dependencies = [ + "convert_case", + "proc-macro2", + "quote", + "syn", +] [[package]] name = "devise" version = "0.3.0" -source = "git+https://github.com/SergioBenitez/Devise.git?rev=3648468#3648468a9ede9ca896cd35bc1eb818c7a9fb3047" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "411cf45ac38f00df3679689616649dc12607b846db171780bb790b514a042832" dependencies = [ "devise_codegen", "devise_core", @@ -242,7 +263,8 @@ dependencies = [ [[package]] name = "devise_codegen" version = "0.3.0" -source = "git+https://github.com/SergioBenitez/Devise.git?rev=3648468#3648468a9ede9ca896cd35bc1eb818c7a9fb3047" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2cf7081f06822f1787e29359354426132cf832cc977d7a8ff747848631462ad1" dependencies = [ "devise_core", "quote", @@ -251,11 +273,12 @@ dependencies = [ [[package]] name = "devise_core" version = "0.3.0" -source = "git+https://github.com/SergioBenitez/Devise.git?rev=3648468#3648468a9ede9ca896cd35bc1eb818c7a9fb3047" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80c23631758736875d7ce08f847f296b4001b72cf90878e85b47df7ac5442147" dependencies = [ "bitflags", "proc-macro2", - "proc-macro2-diagnostics 0.9.0", + "proc-macro2-diagnostics", "quote", "syn", ] @@ -277,12 +300,6 @@ dependencies = [ "syn", ] -[[package]] -name = "dtoa" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "134951f4028bdadb9b84baf4232681efbf277da25144b9b0ad65df75946c422b" - [[package]] name = "either" version = "1.6.1" @@ -291,23 +308,37 @@ checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457" [[package]] name = "encoding_rs" -version = "0.8.24" +version = "0.8.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a51b8cf747471cb9499b6d59e59b0444f4c90eba8968c4e44874e92b5b64ace2" +checksum = "80df024fbc5ac80f87dfef0d9f5209a252f2a497f7f42944cff24d8253cac065" dependencies = [ - "cfg-if 0.1.10", + "cfg-if", ] [[package]] name = "eyre" -version = "0.6.1" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4c5cb4dc433c59f09df4b4450f649cbfed61e8a3505abe32e4154066439157e" +checksum = "221239d1d5ea86bf5d6f91c9d6bc3646ffe471b08ff9b0f91c44f115ac969d2b" dependencies = [ "indenter", "once_cell", ] +[[package]] +name = "figment" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ca029e813a72b7526d28273d25f3e4a2f365d1b7a1018a6f93ec9053a119763" +dependencies = [ + "atomic", + "pear", + "serde", + "toml", + "uncased", + "version_check", +] + [[package]] name = "fnv" version = "1.0.7" @@ -330,26 +361,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" [[package]] -name = "fuchsia-zircon" -version = "0.3.3" +name = "form_urlencoded" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82" +checksum = "5fc25a87fa4fd2094bffb06925852034d90a17f0d1e05197d4956d3555752191" dependencies = [ - "bitflags", - "fuchsia-zircon-sys", + "matches", + "percent-encoding", ] -[[package]] -name = "fuchsia-zircon-sys" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" - [[package]] name = "futures" -version = "0.3.6" +version = "0.3.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d8e3078b7b2a8a671cb7a3d17b4760e4181ea243227776ba83fd043b4ca034e" +checksum = "0e7e43a803dae2fa37c1f6a8fe121e1f7bf9548b4dfc0522a42f34145dadfc27" dependencies = [ "futures-channel", "futures-core", @@ -362,9 +387,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.6" +version = "0.3.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7a4d35f7401e948629c9c3d6638fb9bf94e0b2121e96c3b428cc4e631f3eb74" +checksum = "e682a68b29a882df0545c143dc3646daefe80ba479bcdede94d5a703de2871e2" dependencies = [ "futures-core", "futures-sink", @@ -372,15 +397,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.6" +version = "0.3.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d674eaa0056896d5ada519900dbf97ead2e46a7b6621e8160d79e2f2e1e2784b" +checksum = "0402f765d8a89a26043b889b26ce3c4679d268fa6bb22cd7c6aad98340e179d1" [[package]] name = "futures-executor" -version = "0.3.6" +version = "0.3.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc709ca1da6f66143b8c9bec8e6260181869893714e9b5a490b169b0414144ab" +checksum = "badaa6a909fac9e7236d0620a2f57f7664640c56575b71a7552fbd68deafab79" dependencies = [ "futures-core", "futures-task", @@ -389,16 +414,17 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.6" +version = "0.3.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fc94b64bb39543b4e432f1790b6bf18e3ee3b74653c5449f63310e9a74b123c" +checksum = "acc499defb3b348f8d8f3f66415835a9131856ff7714bf10dadfc4ec4bdb29a1" [[package]] name = "futures-macro" -version = "0.3.6" +version = "0.3.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f57ed14da4603b2554682e9f2ff3c65d7567b53188db96cb71538217fc64581b" +checksum = "a4c40298486cdf52cc00cd6d6987892ba502c7656a16a4192a9992b1ccedd121" dependencies = [ + "autocfg", "proc-macro-hack", "proc-macro2", "quote", @@ -407,25 +433,23 @@ dependencies = [ [[package]] name = "futures-sink" -version = "0.3.6" +version = "0.3.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d8764258ed64ebc5d9ed185cf86a95db5cac810269c5d20ececb32e0088abbd" +checksum = "a57bead0ceff0d6dde8f465ecd96c9338121bb7717d3e7b108059531870c4282" [[package]] name = "futures-task" -version = "0.3.6" +version = "0.3.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4dd26820a9f3637f1302da8bceba3ff33adbe53464b54ca24d4e2d4f1db30f94" -dependencies = [ - "once_cell", -] +checksum = "8a16bef9fc1a4dddb5bee51c989e3fbba26569cbb0e31f5b303c184e3dd33dae" [[package]] name = "futures-util" -version = "0.3.6" +version = "0.3.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a894a0acddba51a2d49a6f4263b1e64b8c579ece8af50fa86503d52cd1eea34" +checksum = "feb5c238d27e2bf94ffdfd27b2c29e3df4a68c4193bb6427384259e2bf191967" dependencies = [ + "autocfg", "futures-channel", "futures-core", "futures-io", @@ -433,7 +457,7 @@ dependencies = [ "futures-sink", "futures-task", "memchr", - "pin-project", + "pin-project-lite", "pin-utils", "proc-macro-hack", "proc-macro-nested", @@ -441,21 +465,34 @@ dependencies = [ ] [[package]] -name = "getrandom" -version = "0.1.15" +name = "generator" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc587bc0ec293155d5bfa6b9891ec18a1e330c234f896ea47fbada4cadbe47e6" +checksum = "c1d9279ca822891c1a4dae06d185612cf8fc6acfe5dff37781b41297811b12ee" dependencies = [ - "cfg-if 0.1.10", + "cc", "libc", - "wasi 0.9.0+wasi-snapshot-preview1", + "log", + "rustversion", + "winapi", +] + +[[package]] +name = "getrandom" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fcd999463524c52659517fe2cea98493cfe485d10565e7b0fb07dbba7ad2753" +dependencies = [ + "cfg-if", + "libc", + "wasi", ] [[package]] name = "gimli" -version = "0.22.0" +version = "0.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aaf91faf136cb47367fa430cd46e37a788775e7fa104f8b4bcb3861dc389b724" +checksum = "0e4075386626662786ddb0ec9081e7c7eeb1ba31951f447ca780ef9f5d568189" [[package]] name = "glob" @@ -465,9 +502,9 @@ checksum = "9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574" [[package]] name = "h2" -version = "0.2.6" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "993f9e0baeed60001cf565546b0d3dbe6a6ad23f2bd31644a133c641eccf6d53" +checksum = "825343c4eef0b63f541f8903f395dc5beb362a979b5799a84062527ef1e37726" dependencies = [ "bytes", "fnv", @@ -490,18 +527,18 @@ checksum = "d7afe4a420e3fe79967a00898cc1f4db7c8a49a9333a29f8a4bd76a253d5cd04" [[package]] name = "hermit-abi" -version = "0.1.17" +version = "0.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5aca5565f760fb5b220e499d72710ed156fdb74e631659e99377d9ebfbd13ae8" +checksum = "322f4de77956e22ed0e5032c359a0f1273f1f7f0d79bfa3b8ffbc730d7fbcc5c" dependencies = [ "libc", ] [[package]] name = "http" -version = "0.2.1" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28d569972648b2c512421b5f2a405ad6ac9666547189d0c5477a3f200f3e02f9" +checksum = "527e8c9ac747e28542699a951517aa9a6945af506cd1f2e1b53a576c17b6cc11" dependencies = [ "bytes", "fnv", @@ -510,31 +547,32 @@ dependencies = [ [[package]] name = "http-body" -version = "0.3.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13d5ff830006f7646652e057693569bfe0d51760c0085a071769d142a205111b" +checksum = "60daa14be0e0786db0f03a9e57cb404c9d756eed2b6c62b9ea98ec5743ec75a9" dependencies = [ "bytes", "http", + "pin-project-lite", ] [[package]] name = "httparse" -version = "1.3.4" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd179ae861f0c2e53da70d892f5f3029f9594be0c41dc5269cd371691b1dc2f9" +checksum = "f3a87b616e37e93c22fb19bcd386f02f3af5ea98a25670ad0fce773de23c5e68" [[package]] name = "httpdate" -version = "0.3.2" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "494b4d60369511e7dea41cf646832512a94e542f68bb9c49e54518e0f468eb47" +checksum = "6456b8a6c8f33fee7d958fcd1b60d55b11940a79e63ae87013e6d22e26034440" [[package]] name = "hyper" -version = "0.13.8" +version = "0.14.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f3afcfae8af5ad0576a31e768415edb627824129e8e5a29b8bfccb2f234e835" +checksum = "07d6baa1b441335f3ce5098ac421fb6547c46dda735ca1bc6d0153c838f9dd83" dependencies = [ "bytes", "futures-channel", @@ -546,7 +584,7 @@ dependencies = [ "httparse", "httpdate", "itoa", - "pin-project", + "pin-project-lite", "socket2", "tokio", "tower-service", @@ -556,22 +594,22 @@ dependencies = [ [[package]] name = "hyper-tls" -version = "0.4.3" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d979acc56dcb5b8dddba3917601745e877576475aa046df3226eabdecef78eed" +checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" dependencies = [ "bytes", "hyper", "native-tls", "tokio", - "tokio-tls", + "tokio-native-tls", ] [[package]] name = "idna" -version = "0.2.0" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02e2673c30ee86b5b96a9cb52ad15718aa1f966f5ab9ad54a8b95d5ca33120a9" +checksum = "418a0a6fab821475f634efe3ccc45c013f742efe03d853e8d3355d5cb850ecf8" dependencies = [ "matches", "unicode-bidi", @@ -580,42 +618,34 @@ dependencies = [ [[package]] name = "indenter" -version = "0.3.0" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0bd112d44d9d870a6819eb505d04dd92b5e4d94bb8c304924a0872ae7016fb5" +checksum = "ce23b50ad8242c51a442f3ff322d56b02f08852c77e4c0b4d3fd684abc89c683" [[package]] name = "indexmap" -version = "1.6.0" +version = "1.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55e2e4c765aa53a0424761bf9f41aa7a6ac1efa87238f59560640e27fca028f2" +checksum = "824845a0bf897a9042383849b02c1bc219c2383772efcd5c6f9766fa4b81aef3" dependencies = [ "autocfg", "hashbrown", + "serde", ] [[package]] name = "inlinable_string" -version = "0.1.11" +version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb6ee2a7da03bfc3b66ca47c92c2e392fcc053ea040a85561749b026f7aad09a" +checksum = "3094308123a0e9fd59659ce45e22de9f53fc1d2ac6e1feb9fef988e4f76cad77" [[package]] name = "instant" -version = "0.1.7" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63312a18f7ea8760cdd0a7c5aac1a619752a246b833545e3e36d1f81f7cd9e66" +checksum = "61124eeebbd69b8190558df225adf7e4caafce0d743919e5d6b19652314ec5ec" dependencies = [ - "cfg-if 0.1.10", -] - -[[package]] -name = "iovec" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2b3ea6ff95e175473f8ffe6a7eb7c00d054240321b84c57051175fe3c1e075e" -dependencies = [ - "libc", + "cfg-if", ] [[package]] @@ -626,29 +656,19 @@ checksum = "47be2f14c678be2fdcab04ab1171db51b2762ce6f0a8ee87c8dd4a04ed216135" [[package]] name = "itoa" -version = "0.4.6" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc6f3ad7b9d11a0c00842ff8de1b60ee58661048eb8049ed33c73594f359d7e6" +checksum = "dd25036021b0de88a0aff6b850051563c6516d0bf53f8638938edbb9de732736" [[package]] name = "js-sys" -version = "0.3.45" +version = "0.3.51" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca059e81d9486668f12d455a4ea6daa600bd408134cd17e3d3fb5a32d1f016f8" +checksum = "83bdfbace3a0e81a4253f73b49e960b053e396a11012cbd49b9b74d6a2b67062" dependencies = [ "wasm-bindgen", ] -[[package]] -name = "kernel32-sys" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" -dependencies = [ - "winapi 0.2.8", - "winapi-build", -] - [[package]] name = "lazy_static" version = "1.4.0" @@ -657,26 +677,39 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "libc" -version = "0.2.79" +version = "0.2.97" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2448f6066e80e3bfc792e9c98bf705b4b0fc6e8ef5b43e5889aff0eaa9c58743" +checksum = "12b8adadd720df158f4d70dfe7ccc6adb0472d7c55ca83445f6a5ab3e36f8fb6" [[package]] name = "lock_api" -version = "0.4.1" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28247cc5a5be2f05fbcd76dd0cf2c7d3b5400cb978a28042abcd4fa0b3f8261c" +checksum = "0382880606dff6d15c9476c416d18690b72742aa7b605bb6dd6ec9030fbf07eb" dependencies = [ "scopeguard", ] [[package]] name = "log" -version = "0.4.11" +version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fabed175da42fed1fa0746b0ea71f412aa9d35e76e95e59b192c64b9dc2bf8b" +checksum = "51b9bbe6c47d51fc3e1a9b945965946b4c44142ab8792c50835a980d362c2710" dependencies = [ - "cfg-if 0.1.10", + "cfg-if", +] + +[[package]] +name = "loom" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7aa5348dc45fa5f2419b6dd4ea20345e6b01b1fcc9d176a322eada1ac3f382ba" +dependencies = [ + "cfg-if", + "generator", + "scoped-tls", + "serde", + "serde_json", ] [[package]] @@ -687,9 +720,9 @@ checksum = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08" [[package]] name = "memchr" -version = "2.3.3" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3728d817d99e5ac407411fa471ff9800a778d88a24685968b36824eaf4bee400" +checksum = "b16bd47d9e329435e309c58469fe0791c2d0d1ba96ec0954152a5ae2b04387dc" [[package]] name = "mime" @@ -697,21 +730,11 @@ version = "0.3.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2a60c7ce501c71e03a9c9c0d35b861413ae925bd979cc7a4e30d060069aaac8d" -[[package]] -name = "mime_guess" -version = "2.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2684d4c2e97d99848d30b324b00c8fcc7e5c897b7cbb5819b09e7c90e8baf212" -dependencies = [ - "mime", - "unicase", -] - [[package]] name = "miniz_oxide" -version = "0.4.3" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f2d26ec3309788e423cfbf68ad1800f061638098d76a83681af979dc4eda19d" +checksum = "a92518e98c078586bc6c934028adcca4c92a53d6a958196de835170a01d84e4b" dependencies = [ "adler", "autocfg", @@ -719,73 +742,52 @@ dependencies = [ [[package]] name = "mio" -version = "0.6.22" +version = "0.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fce347092656428bc8eaf6201042cb551b8d67855af7374542a92a0fbfcac430" +checksum = "cf80d3e903b34e0bd7282b218398aec54e082c840d9baf8339e0080a0c542956" dependencies = [ - "cfg-if 0.1.10", - "fuchsia-zircon", - "fuchsia-zircon-sys", - "iovec", - "kernel32-sys", "libc", "log", - "miow 0.2.1", - "net2", - "slab", - "winapi 0.2.8", -] - -[[package]] -name = "mio-named-pipes" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0840c1c50fd55e521b247f949c241c9997709f23bd7f023b9762cd561e935656" -dependencies = [ - "log", - "mio", - "miow 0.3.5", - "winapi 0.3.9", -] - -[[package]] -name = "mio-uds" -version = "0.6.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afcb699eb26d4332647cc848492bbc15eafb26f08d0304550d5aa1f612e066f0" -dependencies = [ - "iovec", - "libc", - "mio", + "miow", + "ntapi", + "winapi", ] [[package]] name = "miow" -version = "0.2.1" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c1f2f3b1cf331de6896aabf6e9d55dca90356cc9960cca7eaaf408a355ae919" +checksum = "b9f1c5b025cda876f66ef43a113f91ebc9f4ccef34843000e0adf6ebbab84e21" dependencies = [ - "kernel32-sys", - "net2", - "winapi 0.2.8", - "ws2_32-sys", + "winapi", ] [[package]] -name = "miow" -version = "0.3.5" +name = "multer" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07b88fb9795d4d36d62a012dfbf49a8f5cf12751f36d31a9dbe66d528e58979e" +checksum = "0fdd568fea4758b30d6423f013f7171e193c34aa97828d1bd9f924fb3af30a8c" dependencies = [ - "socket2", - "winapi 0.3.9", + "bytes", + "derive_more", + "encoding_rs", + "futures-util", + "http", + "httparse", + "log", + "mime", + "spin", + "tokio", + "tokio-util", + "twoway", + "version_check", ] [[package]] name = "native-tls" -version = "0.2.4" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b0d88c06fe90d5ee94048ba40409ef1d9315d86f6f38c2efdaad4fb50c58b2d" +checksum = "b8d96b2e1c8da3957d58100b09f102c6d9cfdfced01b7ec5a8974044bb09dbd4" dependencies = [ "lazy_static", "libc", @@ -800,21 +802,19 @@ dependencies = [ ] [[package]] -name = "net2" -version = "0.2.35" +name = "ntapi" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ebc3ec692ed7c9a255596c67808dee269f64655d8baf7b4f0638e51ba1d6853" +checksum = "3f6bb902e437b6d86e03cce10a7e2af662292c5dfef23b65899ea3ac9354ad44" dependencies = [ - "cfg-if 0.1.10", - "libc", - "winapi 0.3.9", + "winapi", ] [[package]] name = "num-integer" -version = "0.1.43" +version = "0.1.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d59457e662d541ba17869cf51cf177c0b5f0cbf476c66bdc90bf1edac4f875b" +checksum = "d2cc698a63b549a70bc047073d2949cce27cd1c7b0a4a862d08a8031bc2801db" dependencies = [ "autocfg", "num-traits", @@ -822,9 +822,9 @@ dependencies = [ [[package]] name = "num-traits" -version = "0.2.12" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac267bcc07f48ee5f8935ab0d24f316fb722d7a1292e2913f0cc196b29ffd611" +checksum = "9a64b1ec5cda2586e284722486d802acf1f7dbdc623e2bfc57e65ca1cd099290" dependencies = [ "autocfg", ] @@ -841,41 +841,44 @@ dependencies = [ [[package]] name = "object" -version = "0.21.1" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37fd5004feb2ce328a52b0b3d01dbf4ffff72583493900ed15f22d4111c51693" +checksum = "a38f2be3697a57b4060074ff41b44c16870d916ad7877c17696e063257482bc7" +dependencies = [ + "memchr", +] [[package]] name = "once_cell" -version = "1.4.1" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "260e51e7efe62b592207e9e13a68e43692a7a279171d6ba57abd208bf23645ad" +checksum = "692fcb63b64b1758029e0a96ee63e049ce8c5948587f2f7208df04625e5f6b56" [[package]] name = "openssl" -version = "0.10.30" +version = "0.10.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d575eff3665419f9b83678ff2815858ad9d11567e082f5ac1814baba4e2bcb4" +checksum = "6d7830286ad6a3973c0f1d9b73738f69c76b739301d0229c4b96501695cbe4c8" dependencies = [ "bitflags", - "cfg-if 0.1.10", + "cfg-if", "foreign-types", - "lazy_static", "libc", + "once_cell", "openssl-sys", ] [[package]] name = "openssl-probe" -version = "0.1.2" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77af24da69f9d9341038eba93a073b1fdaaa1b788221b00a69bce9e762cb32de" +checksum = "28988d872ab76095a6e6ac88d99b54fd267702734fd7ffe610ca27f533ddb95a" [[package]] name = "openssl-sys" -version = "0.9.58" +version = "0.9.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a842db4709b604f0fe5d1170ae3565899be2ad3d9cbc72dedc789ac0511f78de" +checksum = "b6b0d6fb7d80f877617dfcb014e605e2b5ab2fb0afdf27935219bb6bd984cb98" dependencies = [ "autocfg", "cc", @@ -886,15 +889,15 @@ dependencies = [ [[package]] name = "owo-colors" -version = "1.1.3" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a1250cdd103eef6bd542b5ae82989f931fc00a41a27f60377338241594410f3" +checksum = "2386b4ebe91c2f7f51082d4cefa145d030e33a1842a96b12e4885cc3c01f7a55" [[package]] name = "parking_lot" -version = "0.11.0" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4893845fa2ca272e647da5d0e46660a314ead9c2fdd9a883aabc32e481a8733" +checksum = "6d7744ac029df22dca6284efe4e898991d28e3085c706c972bcd7da4a27a15eb" dependencies = [ "instant", "lock_api", @@ -903,23 +906,23 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.8.0" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c361aa727dd08437f2f1447be8b59a33b0edd15e0fcee698f935613d9efbca9b" +checksum = "fa7a782938e745763fe6907fc6ba86946d72f49fe7e21de074e08128a99fb018" dependencies = [ - "cfg-if 0.1.10", - "cloudabi", + "cfg-if", "instant", "libc", "redox_syscall", "smallvec", - "winapi 0.3.9", + "winapi", ] [[package]] name = "pear" -version = "0.2.0-dev" -source = "git+https://github.com/SergioBenitez/Pear.git?rev=4b68055#4b680556063568a42fcd4328335cdfdf7608be49" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15e44241c5e4c868e3eaa78b7c1848cadd6344ed4f54d029832d32b415a58702" dependencies = [ "inlinable_string", "pear_codegen", @@ -928,11 +931,12 @@ dependencies = [ [[package]] name = "pear_codegen" -version = "0.2.0-dev" -source = "git+https://github.com/SergioBenitez/Pear.git?rev=4b68055#4b680556063568a42fcd4328335cdfdf7608be49" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82a5ca643c2303ecb740d506539deba189e16f2754040a42901cd8105d0282d0" dependencies = [ "proc-macro2", - "proc-macro2-diagnostics 0.1.0", + "proc-macro2-diagnostics", "quote", "syn", ] @@ -943,31 +947,11 @@ version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e" -[[package]] -name = "pin-project" -version = "0.4.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ffbc8e94b38ea3d2d8ba92aea2983b503cd75d0888d75b86bb37970b5698e15" -dependencies = [ - "pin-project-internal", -] - -[[package]] -name = "pin-project-internal" -version = "0.4.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65ad2ae56b6abe3a1ee25f15ee605bacadb9a764edaba9c2bf4103800d4a1895" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - [[package]] name = "pin-project-lite" -version = "0.1.10" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e555d9e657502182ac97b539fb3dae8b79cda19e3e4f8ffb5e8de4f18df93c95" +checksum = "dc0e1f259c92177c30a4c9d177246edd0a3568b25756a977d0632cf8fa37e905" [[package]] name = "pin-utils" @@ -983,48 +967,36 @@ checksum = "3831453b3449ceb48b6d9c7ad7c96d5ea673e9b470a1dc578c2ce6521230884c" [[package]] name = "ppv-lite86" -version = "0.2.9" +version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c36fa947111f5c62a733b652544dd0016a43ce89619538a8ef92724a6f501a20" +checksum = "ac74c624d6b2d21f425f752262f42188365d7b8ff1aff74c82e45136510a4857" [[package]] name = "proc-macro-hack" -version = "0.5.18" +version = "0.5.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99c605b9a0adc77b7211c6b1f722dcb613d68d66859a44f3d485a6da332b0598" +checksum = "dbf0c48bc1d91375ae5c3cd81e3722dff1abcf81a30960240640d223f59fe0e5" [[package]] name = "proc-macro-nested" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eba180dafb9038b050a4c280019bbedf9f2467b61e5d892dcad585bb57aadc5a" +checksum = "bc881b2c22681370c6a780e47af9840ef841837bc98118431d4e1868bd0c1086" [[package]] name = "proc-macro2" -version = "1.0.24" +version = "1.0.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e0704ee1a7e00d7bb417d0770ea303c1bccbabf0ef1667dae92b5967f5f8a71" +checksum = "f0d8caf72986c1a598726adc988bb5984792ef84f5ee5aa50209145ee8077038" dependencies = [ "unicode-xid", ] [[package]] name = "proc-macro2-diagnostics" -version = "0.1.0" -source = "git+https://github.com/SergioBenitez/proc-macro2-diagnostics.git?rev=13fbb43#13fbb43db72034b6f9660a9b00e338cebd8dcf44" -dependencies = [ - "proc-macro2", - "quote", - "syn", - "version_check", - "yansi", -] - -[[package]] -name = "proc-macro2-diagnostics" -version = "0.9.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56caa0152d6f336a41d76788ee92569c4e63db855d02eb7f0cb204ad32c99a5d" +checksum = "4bf29726d67464d49fa6224a1d07936a8c08bb3fba727c7493f6cf1616fdaada" dependencies = [ "proc-macro2", "quote", @@ -1035,20 +1007,19 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.7" +version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa563d17ecb180e500da1cfd2b028310ac758de548efdd203e18f283af693f37" +checksum = "c3d0b9745dc2debf507c8422de05d7226cc1f0644216dfdfead988f9b1ab32a7" dependencies = [ "proc-macro2", ] [[package]] name = "rand" -version = "0.7.3" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" +checksum = "0ef9e7e66b4468674bfcb0c81af8b7fa0bb154fa9f28eb840da5c447baeb8d7e" dependencies = [ - "getrandom", "libc", "rand_chacha", "rand_core", @@ -1057,9 +1028,9 @@ dependencies = [ [[package]] name = "rand_chacha" -version = "0.2.2" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" dependencies = [ "ppv-lite86", "rand_core", @@ -1067,62 +1038,82 @@ dependencies = [ [[package]] name = "rand_core" -version = "0.5.1" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" +checksum = "34cf66eb183df1c5876e2dcf6b13d57340741e8dc255b48e40a26de954d06ae7" dependencies = [ "getrandom", ] [[package]] name = "rand_hc" -version = "0.2.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" +checksum = "3190ef7066a446f2e7f42e239d161e905420ccab01eb967c9eb27d21b2322a73" dependencies = [ "rand_core", ] [[package]] name = "redox_syscall" -version = "0.1.57" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41cc0f7e4d5d4544e8861606a285bb08d3e70712ccc7d2b84d7c0ccfaf4b05ce" +checksum = "742739e41cd49414de871ea5e549afb7e2a3ac77b589bcbebe8c82fab37147fc" +dependencies = [ + "bitflags", +] [[package]] name = "ref-cast" -version = "1.0.2" +version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "745c1787167ddae5569661d5ffb8b25ae5fedbf46717eaa92d652221cec72623" +checksum = "300f2a835d808734ee295d45007adacb9ebb29dd3ae2424acfa17930cae541da" dependencies = [ "ref-cast-impl", ] [[package]] name = "ref-cast-impl" -version = "1.0.2" +version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d21b475ab879ef0e315ad99067fa25778c3b0377f57f1b00207448dac1a3144" +checksum = "4c38e3aecd2b21cb3959637b883bb3714bc7e43f0268b9a29d3743ee3e55cdd2" dependencies = [ "proc-macro2", "quote", "syn", ] +[[package]] +name = "regex" +version = "1.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d07a8629359eb56f1e2fb1652bb04212c072a87ba68546a04065d525673ac461" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.6.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f497285884f3fcff424ffc933e56d7cbca511def0c9831a7f9b5f6153e3cc89b" + [[package]] name = "remove_dir_all" version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7" dependencies = [ - "winapi 0.3.9", + "winapi", ] [[package]] name = "reqwest" -version = "0.10.8" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9eaa17ac5d7b838b7503d118fa16ad88f440498bf9ffe5424e621f93190d61e" +checksum = "2296f2fac53979e8ccbc4a1136b25dcefd37be9ed7e4a1f6b05a6029c84ff124" dependencies = [ "base64", "bytes", @@ -1138,7 +1129,6 @@ dependencies = [ "lazy_static", "log", "mime", - "mime_guess", "native-tls", "percent-encoding", "pin-project-lite", @@ -1146,7 +1136,7 @@ dependencies = [ "serde_json", "serde_urlencoded", "tokio", - "tokio-tls", + "tokio-native-tls", "url", "wasm-bindgen", "wasm-bindgen-futures", @@ -1156,26 +1146,38 @@ dependencies = [ [[package]] name = "rocket" -version = "0.5.0-dev" -source = "git+https://github.com/SergioBenitez/Rocket#8da034ab835ef1d599cd146164dffda960275c06" +version = "0.5.0-rc.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a71c18c42a0eb15bf3816831caf0dad11e7966f2a41aaf486a701979c4dd1f2" dependencies = [ + "async-stream", "async-trait", "atomic", "atty", "binascii", + "bytes", + "either", + "figment", "futures", + "indexmap", "log", "memchr", + "multer", "num_cpus", "parking_lot", - "pear", + "pin-project-lite", + "rand", "ref-cast", "rocket_codegen", "rocket_http", + "serde", + "serde_json", "state", - "time 0.2.22", + "tempfile", + "time 0.2.27", "tokio", - "toml", + "tokio-stream", + "tokio-util", "ubyte", "version_check", "yansi", @@ -1183,32 +1185,25 @@ dependencies = [ [[package]] name = "rocket_codegen" -version = "0.5.0-dev" -source = "git+https://github.com/SergioBenitez/Rocket#8da034ab835ef1d599cd146164dffda960275c06" +version = "0.5.0-rc.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66f5fa462f7eb958bba8710c17c5d774bbbd59809fa76fb1957af7e545aea8bb" dependencies = [ "devise", "glob", "indexmap", + "proc-macro2", "quote", "rocket_http", -] - -[[package]] -name = "rocket_contrib" -version = "0.5.0-dev" -source = "git+https://github.com/SergioBenitez/Rocket#8da034ab835ef1d599cd146164dffda960275c06" -dependencies = [ - "log", - "rocket", - "serde", - "serde_json", - "tokio", + "syn", + "unicode-xid", ] [[package]] name = "rocket_http" -version = "0.5.0-dev" -source = "git+https://github.com/SergioBenitez/Rocket#8da034ab835ef1d599cd146164dffda960275c06" +version = "0.5.0-rc.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23c8b7d512d2fcac2316ebe590cde67573844b99e6cc9ee0f53375fa16e25ebd" dependencies = [ "cookie", "either", @@ -1216,25 +1211,27 @@ dependencies = [ "hyper", "indexmap", "log", + "memchr", "mime", "parking_lot", "pear", "percent-encoding", + "pin-project-lite", "ref-cast", + "serde", "smallvec", + "stable-pattern", "state", - "time 0.2.22", + "time 0.2.27", "tokio", "uncased", - "unicode-xid", - "version_check", ] [[package]] name = "rustc-demangle" -version = "0.1.17" +version = "0.1.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2610b7f643d18c87dff3b489950269617e6601a51f1f05aa5daefee36f64f0b" +checksum = "410f7acf3cb3a44527c5d9546bad4bf4e6c460915d5f9f2fc524498bfe8f70ce" [[package]] name = "rustc_version" @@ -1245,6 +1242,12 @@ dependencies = [ "semver", ] +[[package]] +name = "rustversion" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61b3909d758bb75c79f23d4736fac9433868679d3ad2ea7a61e3c25cfda9a088" + [[package]] name = "ryu" version = "1.0.5" @@ -1258,9 +1261,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f05ba609c234e60bee0d547fe94a4c7e9da733d1c962cf6e59efa4cd9c8bc75" dependencies = [ "lazy_static", - "winapi 0.3.9", + "winapi", ] +[[package]] +name = "scoped-tls" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea6a9290e3c9cf0f18145ef7ffa62d68ee0bf5fcd651017e586dc7fd5da448c2" + [[package]] name = "scopeguard" version = "1.1.0" @@ -1269,9 +1278,9 @@ checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" [[package]] name = "security-framework" -version = "0.4.4" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64808902d7d99f78eaddd2b4e2509713babc3dc3c85ad6f4c447680f3c01e535" +checksum = "23a2ac85147a3a11d77ecf1bc7166ec0b92febfa4461c37944e180f319ece467" dependencies = [ "bitflags", "core-foundation", @@ -1282,9 +1291,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "0.4.3" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17bf11d99252f512695eb468de5516e5cf75455521e69dfe343f3b74e4748405" +checksum = "7e4effb91b4b8b6fb7732e670b6cee160278ff8e6bf485c7805d9e319d76e284" dependencies = [ "core-foundation-sys", "libc", @@ -1307,18 +1316,18 @@ checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" [[package]] name = "serde" -version = "1.0.117" +version = "1.0.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b88fa983de7720629c9387e9f517353ed404164b1e482c970a90c1a4aaf7dc1a" +checksum = "ec7505abeacaec74ae4778d9d9328fe5a5d04253220a85c4ee022239fc996d03" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.117" +version = "1.0.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cbd1ae72adb44aab48f325a02444a5fc079349a8d804c1fc922aed3f7454c74e" +checksum = "963a7dbc9895aeac7ac90e74f34a5d5261828f79df35cbed41e10189d3804d43" dependencies = [ "proc-macro2", "quote", @@ -1327,9 +1336,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.59" +version = "1.0.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcac07dbffa1c65e7f816ab9eba78eb142c6d44410f4eeba1e26e4f5dfa56b95" +checksum = "799e97dc9fdae36a5c8b8f2cae9ce2ee9fdce2058c57a93e6099d919fd982f79" dependencies = [ "indexmap", "itoa", @@ -1339,9 +1348,9 @@ dependencies = [ [[package]] name = "serde_repr" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dc6b7951b17b051f3210b063f12cc17320e2fe30ae05b0fe2a3abb068551c76" +checksum = "98d0516900518c29efa217c298fa1f4e6c6ffc85ae29fd7f4ee48f176e1a9ed5" dependencies = [ "proc-macro2", "quote", @@ -1350,14 +1359,14 @@ dependencies = [ [[package]] name = "serde_urlencoded" -version = "0.6.1" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ec5d77e2d4c73717816afac02670d5c4f534ea95ed430442cad02e7a6e32c97" +checksum = "edfa57a7f8d9c1d260a549e7224100f6c43d43f9103e06dd8b4095a9b2b43ce9" dependencies = [ - "dtoa", + "form_urlencoded", "itoa", + "ryu", "serde", - "url", ] [[package]] @@ -1368,61 +1377,76 @@ checksum = "2579985fda508104f7587689507983eadd6a6e84dd35d6d115361f530916fa0d" [[package]] name = "sharded-slab" -version = "0.0.9" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06d5a3f5166fb5b42a5439f2eee8b9de149e235961e3eb21c5808fc3ea17ff3e" +checksum = "79c719719ee05df97490f80a45acfc99e5a30ce98a1e4fb67aee422745ae14e3" dependencies = [ "lazy_static", ] [[package]] name = "signal-hook-registry" -version = "1.2.1" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3e12110bc539e657a646068aaf5eb5b63af9d0c1f7b29c97113fad80e15f035" +checksum = "e51e73328dc4ac0c7ccbda3a494dfa03df1de2f46018127f60c693f2648455b0" dependencies = [ - "arc-swap", "libc", ] [[package]] name = "slab" -version = "0.4.2" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8" +checksum = "f173ac3d1a7e3b28003f40de0b5ce7fe2710f9b9dc3fc38664cebee46b3b6527" [[package]] name = "smallvec" -version = "1.4.2" +version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbee7696b84bbf3d89a1c2eccff0850e3047ed46bfcd2e92c29a2d074d57e252" +checksum = "fe0f37c9e8f3c5a4a66ad655a93c74daac4ad00c441533bf5c6e7990bb42604e" [[package]] name = "socket2" -version = "0.3.15" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1fa70dc5c8104ec096f4fe7ede7a221d35ae13dcd19ba1ad9a81d2cab9a1c44" +checksum = "9e3dfc207c526015c632472a77be09cf1b6e46866581aecae5cc38fb4235dea2" dependencies = [ - "cfg-if 0.1.10", "libc", - "redox_syscall", - "winapi 0.3.9", + "winapi", +] + +[[package]] +name = "spin" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b87bbf98cb81332a56c1ee8929845836f85e8ddd693157c30d76660196014478" + +[[package]] +name = "stable-pattern" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4564168c00635f88eaed410d5efa8131afa8d8699a612c80c455a0ba05c21045" +dependencies = [ + "memchr", ] [[package]] name = "standback" -version = "0.2.11" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4e0831040d2cf2bdfd51b844be71885783d489898a192f254ae25d57cce725c" +checksum = "e113fb6f3de07a243d434a56ec6f186dfd51cb08448239fe7bcae73f87ff28ff" dependencies = [ "version_check", ] [[package]] name = "state" -version = "0.4.1" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7345c971d1ef21ffdbd103a75990a15eb03604fc8b8852ca8cb418ee1a099028" +checksum = "0b54c22963194db84a59ee48e1fa9ed6c1fa9909ad5db92a700aa6fe956d632b" +dependencies = [ + "loom", +] [[package]] name = "stdweb" @@ -1474,10 +1498,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "213701ba3370744dcd1a12960caa4843b3d68b4d1c0a5d575e0d65b2ee9d16c0" [[package]] -name = "syn" -version = "1.0.44" +name = "stringmatch" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e03e57e4fcbfe7749842d53e24ccb9aa12b7252dbe5e91d2acad31834c8b8fdd" +checksum = "229f859beedf0ea6cb2c11a797dea9b7d6e66f8abce9c642a411c6948f67591b" +dependencies = [ + "regex", +] + +[[package]] +name = "syn" +version = "1.0.73" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f71489ff30030d2ae598524f61326b902466f72a0fb1a8564c001cc63425bcc7" dependencies = [ "proc-macro2", "quote", @@ -1486,23 +1519,23 @@ dependencies = [ [[package]] name = "tempfile" -version = "3.1.0" +version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a6e24d9338a0a5be79593e2fa15a648add6138caa803e2d5bc782c371732ca9" +checksum = "dac1c663cfc93810f88aed9b8941d48cabf856a1b111c29a40439018d870eb22" dependencies = [ - "cfg-if 0.1.10", + "cfg-if", "libc", "rand", "redox_syscall", "remove_dir_all", - "winapi 0.3.9", + "winapi", ] [[package]] name = "thirtyfour" -version = "0.19.0" +version = "0.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f4a978bcb6b9d5a9882cd508fac784ddc76b0055ebdeadc14206a063efbbeab" +checksum = "0ffd78805c4ea3cd06dda0c2ba9dddbe03c1968bd55567219fa0f2ce00e7ef54" dependencies = [ "async-trait", "base64", @@ -1514,6 +1547,7 @@ dependencies = [ "serde", "serde_json", "serde_repr", + "stringmatch", "thiserror", "tokio", "urlparse", @@ -1521,18 +1555,18 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.21" +version = "1.0.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "318234ffa22e0920fe9a40d7b8369b5f649d490980cf7aadcf1eb91594869b42" +checksum = "fa6f76457f59514c7eeb4e59d891395fab0b2fd1d40723ae737d64153392e9c6" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.21" +version = "1.0.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cae2447b6282786c3493999f40a9be2a6ad20cb8bd268b0a0dbf5a065535c0ab" +checksum = "8a36768c0fbf1bb15eca10defa29526bda730a2376c2ab4393ccfa16fb1a318d" dependencies = [ "proc-macro2", "quote", @@ -1541,29 +1575,28 @@ dependencies = [ [[package]] name = "thread_local" -version = "1.0.1" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d40c6d1b69745a6ec6fb1ca717914848da4b44ae29d9b3080cbee91d72a69b14" +checksum = "8018d24e04c95ac8790716a5987d0fec4f8b27249ffa0f7d33f1369bdfb88cbd" dependencies = [ - "lazy_static", + "once_cell", ] [[package]] name = "time" -version = "0.1.44" +version = "0.1.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6db9e6914ab8b1ae1c260a4ae7a49b6c5611b40328a735b21862567685e73255" +checksum = "ca8a50ef2360fbd1eeb0ecd46795a87a19024eb4b53c5dc916ca1fd95fe62438" dependencies = [ "libc", - "wasi 0.10.0+wasi-snapshot-preview1", - "winapi 0.3.9", + "winapi", ] [[package]] name = "time" -version = "0.2.22" +version = "0.2.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55b7151c9065e80917fbf285d9a5d1432f60db41d170ccafc749a136b41a93af" +checksum = "4752a97f8eebd6854ff91f1c1824cd6160626ac4bd44287f7f4ea2035a02a242" dependencies = [ "const_fn", "libc", @@ -1571,7 +1604,7 @@ dependencies = [ "stdweb", "time-macros", "version_check", - "winapi 0.3.9", + "winapi", ] [[package]] @@ -1586,9 +1619,9 @@ dependencies = [ [[package]] name = "time-macros-impl" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5c3be1edfad6027c69f5491cf4cb310d1a71ecd6af742788c6ff8bced86b8fa" +checksum = "fd3c141a1b43194f3f56a1411225df8646c55781d5f26db825b3d98507eb482f" dependencies = [ "proc-macro-hack", "proc-macro2", @@ -1599,39 +1632,43 @@ dependencies = [ [[package]] name = "tinyvec" -version = "0.3.4" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "238ce071d267c5710f9d31451efec16c5ee22de34df17cc05e56cbc92e967117" +checksum = "5b5220f05bb7de7f3f53c7c065e1199b3172696fe2db9f9c4d8ad9b4ee74c342" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" [[package]] name = "tokio" -version = "0.2.22" +version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d34ca54d84bf2b5b4d7d31e901a8464f7b60ac145a284fba25ceb801f2ddccd" +checksum = "0a38d31d7831c6ed7aad00aa4c12d9375fd225a6dd77da1d25b707346319a975" dependencies = [ + "autocfg", "bytes", - "fnv", - "futures-core", - "iovec", - "lazy_static", "libc", "memchr", "mio", - "mio-named-pipes", - "mio-uds", "num_cpus", + "once_cell", "pin-project-lite", "signal-hook-registry", - "slab", "tokio-macros", - "winapi 0.3.9", + "winapi", ] [[package]] name = "tokio-macros" -version = "0.2.5" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0c3acc6aa564495a0f2e1d59fab677cd7f81a19994cfc7f3ad0e64301560389" +checksum = "c49e3df43841dafb86046472506755d8501c5615673955f6aa17181125d13c37" dependencies = [ "proc-macro2", "quote", @@ -1639,20 +1676,31 @@ dependencies = [ ] [[package]] -name = "tokio-tls" -version = "0.3.1" +name = "tokio-native-tls" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a70f4fcd7b3b24fb194f837560168208f669ca8cb70d0c4b862944452396343" +checksum = "f7d995660bd2b7f8c1568414c1126076c13fbb725c40112dc0120b78eb9b717b" dependencies = [ "native-tls", "tokio", ] [[package]] -name = "tokio-util" -version = "0.3.1" +name = "tokio-stream" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be8242891f2b6cbef26a2d7e8605133c2c554cd35b3e4948ea892d6d68436499" +checksum = "f8864d706fdb3cc0843a49647ac892720dac98a6eeb818b77190592cf4994066" +dependencies = [ + "futures-core", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "tokio-util" +version = "0.6.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1caa0b0c8d94a049db56b5acf8cba99dc0623aab1b26d5b5f5e2d945846b3592" dependencies = [ "bytes", "futures-core", @@ -1664,27 +1712,26 @@ dependencies = [ [[package]] name = "toml" -version = "0.5.7" +version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75cf45bb0bef80604d001caaec0d09da99611b3c0fd39d3080468875cdb65645" +checksum = "a31142970826733df8241ef35dc040ef98c679ab14d7c3e54d827099b3acecaa" dependencies = [ "serde", ] [[package]] name = "tower-service" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e987b6bf443f4b5b3b6f38704195592cca41c5bb7aedd3c3693c7081f8289860" +checksum = "360dfd1d6d30e05fda32ace2c8c70e9c0a9da713275777f5a4dbb8a1893930c6" [[package]] name = "tracing" -version = "0.1.21" +version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0987850db3733619253fe60e17cb59b82d37c7e6c0236bb81e4d6b87c879f27" +checksum = "09adeb8c97449311ccd28a427f96fb563e7fd31aabf994189879d9da2394b89d" dependencies = [ - "cfg-if 0.1.10", - "log", + "cfg-if", "pin-project-lite", "tracing-attributes", "tracing-core", @@ -1692,9 +1739,9 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.11" +version = "0.1.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80e0ccfc3378da0cce270c946b676a376943f5cd16aeba64568e7939806f4ada" +checksum = "c42e6fa53307c8a17e4ccd4dc81cf5ec38db9209f59b222210375b54ee40d1e2" dependencies = [ "proc-macro2", "quote", @@ -1703,9 +1750,9 @@ dependencies = [ [[package]] name = "tracing-core" -version = "0.1.17" +version = "0.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f50de3927f93d202783f4513cda820ab47ef17f624b03c096e86ef00c67e6b5f" +checksum = "a9ff14f98b1a4b289c6248a023c1c2fa1491062964e9fed67ab29c4e4da4a052" dependencies = [ "lazy_static", ] @@ -1722,9 +1769,9 @@ dependencies = [ [[package]] name = "tracing-subscriber" -version = "0.2.13" +version = "0.2.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ef0a5e15477aa303afbfac3a44cba9b6430fdaad52423b1e6c0dbbe28c3eedd" +checksum = "aa5553bf0883ba7c9cbe493b085c29926bd41b66afc31ff72cf17ff4fb60dcd5" dependencies = [ "sharded-slab", "thread_local", @@ -1738,59 +1785,71 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" [[package]] -name = "ubyte" -version = "0.10.0" +name = "twoway" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8576ece1c74e91210e2ec01e016f2fb68037f8274e2e80dee775ca2fbf8a8479" +checksum = "c57ffb460d7c24cd6eda43694110189030a3d1dfe418416d9468fd1c1d290b47" +dependencies = [ + "memchr", + "unchecked-index", +] + +[[package]] +name = "ubyte" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42756bb9e708855de2f8a98195643dff31a97f0485d90d8467b39dc24be9e8fe" +dependencies = [ + "serde", +] [[package]] name = "uncased" -version = "0.9.3" +version = "0.9.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "369fa7fd7969c5373541d3c9a40dc1b76ce676fc87aba30d87c0ad3b97fad179" +checksum = "5baeed7327e25054889b9bd4f975f32e5f4c5d434042d59ab6cd4142c0a76ed0" dependencies = [ + "serde", "version_check", ] [[package]] -name = "unicase" -version = "2.6.0" +name = "unchecked-index" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50f37be617794602aabbeee0be4f259dc1778fabe05e2d67ee8f79326d5cb4f6" -dependencies = [ - "version_check", -] +checksum = "eeba86d422ce181a719445e51872fa30f1f7413b62becb52e95ec91aa262d85c" [[package]] name = "unicode-bidi" -version = "0.3.4" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49f2bd0c6468a8230e1db229cff8029217cf623c767ea5d60bfbd42729ea54d5" +checksum = "eeb8be209bb1c96b7c177c7420d26e04eccacb0eeae6b980e35fcb74678107e0" dependencies = [ "matches", ] [[package]] name = "unicode-normalization" -version = "0.1.13" +version = "0.1.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fb19cf769fa8c6a80a162df694621ebeb4dafb606470b2b2fce0be40a98a977" +checksum = "d54590932941a9e9266f0832deed84ebe1bf2e4c9e4a3554d393d18f5e854bf9" dependencies = [ "tinyvec", ] [[package]] name = "unicode-xid" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7fe0bb3479651439c9112f72b6c505038574c9fbb575ed1bf3b797fa39dd564" +checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3" [[package]] name = "url" -version = "2.1.1" +version = "2.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "829d4a8476c35c9bf0bbce5a3b23f4106f79728039b726d292bb93bc106787cb" +checksum = "a507c383b2d33b5fc35d1861e77e6b383d158b2da5e14fe51b83dfedf6fd578c" dependencies = [ + "form_urlencoded", "idna", "matches", "percent-encoding", @@ -1804,15 +1863,15 @@ checksum = "110352d4e9076c67839003c7788d8604e24dcded13e0b375af3efaa8cf468517" [[package]] name = "vcpkg" -version = "0.2.10" +version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6454029bf181f092ad1b853286f23e2c507d8e8194d01d92da4a55c274a5508c" +checksum = "025ce40a007e1907e58d5bc1a594def78e5573bb0b1160bc389634e8f12e4faa" [[package]] name = "version_check" -version = "0.9.2" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5a972e5669d67ba988ce3dc826706fb0a8b01471c088cb0b6110b805cc36aed" +checksum = "5fecdca9a5291cc2b8dcf7dc02453fee791a280f3743cb0905f8822ae463b3fe" [[package]] name = "want" @@ -1826,23 +1885,17 @@ dependencies = [ [[package]] name = "wasi" -version = "0.9.0+wasi-snapshot-preview1" +version = "0.10.2+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" - -[[package]] -name = "wasi" -version = "0.10.0+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f" +checksum = "fd6fbd9a79829dd1ad0cc20627bf1ed606756a7f77edff7b66b7064f9cb327c6" [[package]] name = "wasm-bindgen" -version = "0.2.68" +version = "0.2.74" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ac64ead5ea5f05873d7c12b545865ca2b8d28adfc50a49b84770a3a97265d42" +checksum = "d54ee1d4ed486f78874278e63e4069fc1ab9f6a18ca492076ffb90c5eb2997fd" dependencies = [ - "cfg-if 0.1.10", + "cfg-if", "serde", "serde_json", "wasm-bindgen-macro", @@ -1850,9 +1903,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.68" +version = "0.2.74" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f22b422e2a757c35a73774860af8e112bff612ce6cb604224e8e47641a9e4f68" +checksum = "3b33f6a0694ccfea53d94db8b2ed1c3a8a4c86dd936b13b9f0a15ec4a451b900" dependencies = [ "bumpalo", "lazy_static", @@ -1865,11 +1918,11 @@ dependencies = [ [[package]] name = "wasm-bindgen-futures" -version = "0.4.18" +version = "0.4.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7866cab0aa01de1edf8b5d7936938a7e397ee50ce24119aef3e1eaa3b6171da" +checksum = "5fba7978c679d53ce2d0ac80c8c175840feb849a161664365d1287b41f2e67f1" dependencies = [ - "cfg-if 0.1.10", + "cfg-if", "js-sys", "wasm-bindgen", "web-sys", @@ -1877,9 +1930,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.68" +version = "0.2.74" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b13312a745c08c469f0b292dd2fcd6411dba5f7160f593da6ef69b64e407038" +checksum = "088169ca61430fe1e58b8096c24975251700e7b1f6fd91cc9d59b04fb9b18bd4" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -1887,9 +1940,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.68" +version = "0.2.74" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f249f06ef7ee334cc3b8ff031bfc11ec99d00f34d86da7498396dc1e3b1498fe" +checksum = "be2241542ff3d9f241f5e2cb6dd09b37efe786df8851c54957683a49f0987a97" dependencies = [ "proc-macro2", "quote", @@ -1900,26 +1953,20 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.68" +version = "0.2.74" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d649a3145108d7d3fbcde896a468d1bd636791823c9921135218ad89be08307" +checksum = "d7cff876b8f18eed75a66cf49b65e7f967cb354a7aa16003fb55dbfd25b44b4f" [[package]] name = "web-sys" -version = "0.3.45" +version = "0.3.51" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bf6ef87ad7ae8008e15a355ce696bed26012b7caa21605188cfd8214ab51e2d" +checksum = "e828417b379f3df7111d3a2a9e5753706cae29c41f7c4029ee9fd77f3e09e582" dependencies = [ "js-sys", "wasm-bindgen", ] -[[package]] -name = "winapi" -version = "0.2.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" - [[package]] name = "winapi" version = "0.3.9" @@ -1930,12 +1977,6 @@ dependencies = [ "winapi-x86_64-pc-windows-gnu", ] -[[package]] -name = "winapi-build" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc" - [[package]] name = "winapi-i686-pc-windows-gnu" version = "0.4.0" @@ -1954,17 +1995,7 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0120db82e8a1e0b9fb3345a539c478767c0048d842860994d96113d5b667bd69" dependencies = [ - "winapi 0.3.9", -] - -[[package]] -name = "ws2_32-sys" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e" -dependencies = [ - "winapi 0.2.8", - "winapi-build", + "winapi", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index ebe4937..4028be5 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -7,14 +7,8 @@ edition = "2018" [dependencies] color-eyre = "0.5.6" lazy_static = "1.4.0" +rocket = { version = "0.5.0-rc.1", features = ["json"] } serde = "1.0.116" toml = "0.5.6" -thirtyfour = { version = "0.19.0", features = ["tokio-runtime"] } -tokio = { version = "0.2.22", features = ["process", "sync"] } - -[dependencies.rocket] -git = "https://github.com/SergioBenitez/Rocket" -default-features = false - -[dependencies.rocket_contrib] -git = "https://github.com/SergioBenitez/Rocket" +thirtyfour = { version = "0.25.0", features = ["tokio-runtime"] } +tokio = { version = "1.6.1", features = ["process"] } diff --git a/screenshot.png b/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..fbaf4107e106e5706d0ba45d7cdd9ebffa613dfc GIT binary patch literal 80505 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�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 PX@kS2he!uc{q+9 Result { // This is taken from the webdriver-client crate. let child = Command::new("geckodriver") @@ -109,7 +117,7 @@ async fn update_loop(mut rx: Receiver<()>) -> Result<()> { let mut last_updated = 0; loop { // Wait the poll interval to check again! - delay_for(Duration::from_secs(1)).await; + sleep(Duration::from_secs(1)).await; // Shut down if there is a signal if let Ok(()) = rx.try_recv() { @@ -161,26 +169,22 @@ async fn status() -> Option> { status_guard.map(|status| Json(status)) } -fn rocket() -> Rocket { - rocket::ignite().mount("/", routes![status]) -} - #[rocket::main] async fn main() -> Result<()> { color_eyre::install()?; - let driver_proc = + let mut driver_proc = spawn_driver(GECKO_DRIVER_PORT).expect("Could not find/start the Gecko Driver"); - let (tx, rx) = tokio::sync::oneshot::channel(); - let updater = tokio::spawn(update_loop(rx)); + let (tx, rx) = rocket::tokio::sync::oneshot::channel(); + let updater = rocket::tokio::spawn(update_loop(rx)); - let mut rocket = rocket(); - let shutdown_handle = rocket.inspect().await.shutdown(); + let rocket = rocket::build().mount("/", routes![status]).ignite().await?; + let shutdown = rocket.shutdown(); - tokio::select! { - result = driver_proc => { - shutdown_handle.shutdown(); + select! { + result = driver_proc.wait() => { + shutdown.notify(); tx.send(()).map_err(|_| eyre!("Could not send shutdown signal"))?; result?; }, @@ -189,7 +193,7 @@ async fn main() -> Result<()> { result?; }, result = updater => { - shutdown_handle.shutdown(); + shutdown.notify(); result??; } }