From 98c06cbe919b989ef06da626071b87019ab27642 Mon Sep 17 00:00:00 2001 From: Tyler Hallada Date: Mon, 10 Feb 2025 00:51:04 -0500 Subject: [PATCH] WIP frontend isn't completely broken now Still more work left with integrating apalis and need to fully update it. These changes are mostly for fixing the frontend I broke by eagerly updating everything. --- Cargo.lock | 1565 ++++++++++++++++++++++------------- Cargo.toml | 23 +- frontend/bun.lockb | Bin 181424 -> 193400 bytes frontend/js/index.ts | 20 +- frontend/package.json | 26 +- frontend/tailwind.config.js | 4 +- justfile | 18 +- src/actors/importer.rs | 2 +- src/bin/web.rs | 4 +- tailwind.config.js | 2 - 10 files changed, 1053 insertions(+), 611 deletions(-) delete mode 100644 tailwind.config.js diff --git a/Cargo.lock b/Cargo.lock index b84cb1a..6651e80 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1,21 +1,21 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. -version = 3 +version = 4 [[package]] name = "addr2line" -version = "0.21.0" +version = "0.24.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" +checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" dependencies = [ "gimli", ] [[package]] -name = "adler" -version = "1.0.2" +name = "adler2" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" +checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" [[package]] name = "ahash" @@ -41,9 +41,9 @@ dependencies = [ [[package]] name = "allocator-api2" -version = "0.2.18" +version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f" +checksum = "611cc2ae7d2e242c457e4be7f97036b8ad9ca152b499f53faf99b1ed8fc2553f" [[package]] name = "ammonia" @@ -80,14 +80,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d73c455ae09fa2223a75114789f30ad605e9e297f79537953523366c05995f5f" dependencies = [ "regex", - "thiserror", + "thiserror 1.0.68", ] [[package]] name = "anstream" -version = "0.6.14" +version = "0.6.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "418c75fa768af9c03be99d17643f93f79bbba589895012a80e3452a19ddda15b" +checksum = "8acc5369981196006228e28809f761875c0327210a891e941f4c683b3a99529b" dependencies = [ "anstyle", "anstyle-parse", @@ -100,66 +100,66 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.7" +version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "038dfcf04a5feb68e9c60b21c9625a54c2c0616e79b72b0fd87075a056ae1d1b" +checksum = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9" [[package]] name = "anstyle-parse" -version = "0.2.4" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c03a11a9034d92058ceb6ee011ce58af4a9bf61491aa7e1e59ecd24bd40d22d4" +checksum = "3b2d16507662817a6a20a9ea92df6652ee4f94f914589377d69f3b21bc5798a9" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.0.3" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a64c907d4e79225ac72e2a354c9ce84d50ebb4586dee56c82b3ee73004f537f5" +checksum = "79947af37f4177cfead1110013d678905c37501914fba0efea834c3fe9a8d60c" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] name = "anstyle-wincon" -version = "3.0.3" +version = "3.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61a38449feb7068f52bb06c12759005cf459ee52bb4adc1d5a7c4322d716fb19" +checksum = "2109dbce0e72be3ec00bed26e6a7479ca384ad226efdd66db8fa2e3a38c83125" dependencies = [ "anstyle", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] name = "anyhow" -version = "1.0.83" +version = "1.0.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25bdb32cbbdce2b519a9cd7df3a678443100e265d5e25ca763b7572a5104f5f3" +checksum = "4c95c10ba0b00a02636238b814946408b1322d5ac4760326e6fb8ec956d85775" [[package]] name = "apalis" -version = "0.6.0-rc.7" +version = "0.6.0-rc.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fe9f6044555ce7984b4dff510f869c25ee8258d13277eadcfee11efa0a827a0" +checksum = "8ace6dafa546dd1c3c1a10652763c1c4df4e92eefbbcb4ff73c6aff22092cca8" dependencies = [ "apalis-core", "futures", "pin-project-lite", "serde", - "thiserror", + "thiserror 1.0.68", "tokio", - "tower", + "tower 0.4.13", "tracing", "tracing-futures", ] [[package]] name = "apalis-core" -version = "0.6.0-rc.7" +version = "0.6.0-rc.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f7959df1edc75df26a1ee13a46d1b59fd63ba6642a6c29039583f5aedfd13aa" +checksum = "8e1edf35c07053f8cf197b26e912798007ee56a204042cd51b3be5b26e96cbc2" dependencies = [ "async-oneshot", "futures", @@ -167,30 +167,30 @@ dependencies = [ "pin-project-lite", "serde", "serde_json", - "thiserror", - "tower", + "thiserror 1.0.68", + "tower 0.4.13", "ulid", ] [[package]] name = "apalis-cron" -version = "0.6.0-rc.7" +version = "0.6.0-rc.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "821d4b219ed2fa48e6ff722f23a97db3a70dcb0beeb96d3cf9391d88d23050c2" +checksum = "3ae034935492ef9da6ffb6a417dc28d026d832007461a4152eb37280cbf27d72" dependencies = [ "apalis-core", "async-stream", "chrono", "cron", "futures", - "tower", + "tower 0.4.13", ] [[package]] name = "apalis-redis" -version = "0.6.0-rc.7" +version = "0.6.0-rc.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "405b6457c973eb82ed4a20048131b767ebca684cdc4897d42f622ed115641f21" +checksum = "5dfe9a0521b50d1d1989fc4ea336d95c3161966178b912e2298d4dba681c5ea9" dependencies = [ "apalis-core", "async-stream", @@ -202,7 +202,7 @@ dependencies = [ "serde", "serde_json", "tokio", - "tower", + "tower 0.4.13", ] [[package]] @@ -234,9 +234,9 @@ dependencies = [ [[package]] name = "async-stream" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd56dd203fef61ac097dd65721a419ddccb106b2d2b70ba60a6b529f03961a51" +checksum = "0b5a71a6f37880a80d1d7f19efd781e4b5de42c88f0722cc13bcb6cc2cfe8476" dependencies = [ "async-stream-impl", "futures-core", @@ -245,24 +245,24 @@ dependencies = [ [[package]] name = "async-stream-impl" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" +checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.61", + "syn 2.0.87", ] [[package]] name = "async-trait" -version = "0.1.80" +version = "0.1.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6fa2087f2753a7da8cc1c0dbfcf89579dd57458e36769de5ac750b4671737ca" +checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" dependencies = [ "proc-macro2", "quote", - "syn 2.0.61", + "syn 2.0.87", ] [[package]] @@ -275,25 +275,31 @@ dependencies = [ ] [[package]] -name = "autocfg" -version = "1.3.0" +name = "atomic-waker" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + +[[package]] +name = "autocfg" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" [[package]] name = "axum" -version = "0.7.5" +version = "0.7.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a6c9af12842a67734c9a2e355436e5d03b22383ed60cf13cd0c18fbfe3dcbcf" +checksum = "504e3947307ac8326a5437504c517c4b56716c9d98fac0028c2acc7ca47d70ae" dependencies = [ "async-trait", "axum-core", "bytes", "futures-util", "http 1.1.0", - "http-body 1.0.0", + "http-body 1.0.1", "http-body-util", - "hyper 1.3.1", + "hyper 1.5.0", "hyper-util", "itoa", "matchit", @@ -309,7 +315,7 @@ dependencies = [ "serde_urlencoded", "sync_wrapper 1.0.1", "tokio", - "tower", + "tower 0.5.1", "tower-layer", "tower-service", "tracing", @@ -317,9 +323,9 @@ dependencies = [ [[package]] name = "axum-client-ip" -version = "0.6.0" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72188bed20deb981f3a4a9fe674e5980fd9e9c2bd880baa94715ad5d60d64c67" +checksum = "9eefda7e2b27e1bda4d6fa8a06b50803b8793769045918bc37ad062d48a6efac" dependencies = [ "axum", "forwarded-header-value", @@ -328,20 +334,20 @@ dependencies = [ [[package]] name = "axum-core" -version = "0.4.3" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a15c63fd72d41492dc4f497196f5da1fb04fb7529e631d73630d1b491e47a2e3" +checksum = "09f2bd6146b97ae3359fa0cc6d6b376d9539582c7b4220f041a33ec24c226199" dependencies = [ "async-trait", "bytes", "futures-util", "http 1.1.0", - "http-body 1.0.0", + "http-body 1.0.1", "http-body-util", "mime", "pin-project-lite", "rustversion", - "sync_wrapper 0.1.2", + "sync_wrapper 1.0.1", "tower-layer", "tower-service", "tracing", @@ -349,9 +355,9 @@ dependencies = [ [[package]] name = "axum-extra" -version = "0.9.3" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0be6ea09c9b96cb5076af0de2e383bd2bc0c18f827cf1967bdd353e0b910d733" +checksum = "73c3220b188aea709cf1b6c5f9b01c3bd936bb08bd2b5184a12b35ac8131b1f9" dependencies = [ "axum", "axum-core", @@ -359,12 +365,12 @@ dependencies = [ "futures-util", "headers", "http 1.1.0", - "http-body 1.0.0", + "http-body 1.0.1", "http-body-util", "mime", "pin-project-lite", "serde", - "tower", + "tower 0.5.1", "tower-layer", "tower-service", "tracing", @@ -372,16 +378,16 @@ dependencies = [ [[package]] name = "axum-login" -version = "0.15.1" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0fbc0d7bd2577dda9aa9cac096e53b30342725d8eea5798169ff2537a214f45" +checksum = "5260ed0ecc8ace8e7e61a7406672faba598c8a86b8f4742fcdde0ddc979a318f" dependencies = [ "async-trait", "axum", "form_urlencoded", "serde", "subtle", - "thiserror", + "thiserror 1.0.68", "tower-cookies", "tower-layer", "tower-service", @@ -392,17 +398,17 @@ dependencies = [ [[package]] name = "backtrace" -version = "0.3.71" +version = "0.3.74" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26b05800d2e817c8b3b4b54abd461726265fa9789ae34330622f2db9ee696f9d" +checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" dependencies = [ "addr2line", - "cc", "cfg-if", "libc", "miniz_oxide", "object", "rustc-demangle", + "windows-targets 0.52.6", ] [[package]] @@ -431,9 +437,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.5.0" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1" +checksum = "8f68f53c83ab957f72c32642f3868eec03eb974d1fb82e453128456482613d36" dependencies = [ "serde", ] @@ -470,9 +476,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.6.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9" +checksum = "9ac0150caa2ae65ca5bd83f25c7de183dea78d4d366469f148435e2acfbad0da" [[package]] name = "bytes-utils" @@ -486,9 +492,12 @@ dependencies = [ [[package]] name = "cc" -version = "1.0.97" +version = "1.1.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "099a5357d84c4c61eb35fc8eafa9a79a902c2f76911e5747ced4e032edd8d9b4" +checksum = "40545c26d092346d8a8dab71ee48e7685a7a9cba76e634790c215b41a4a7b4cf" +dependencies = [ + "shlex", +] [[package]] name = "cfg-if" @@ -508,7 +517,7 @@ dependencies = [ "num-traits", "serde", "wasm-bindgen", - "windows-targets 0.52.5", + "windows-targets 0.52.6", ] [[package]] @@ -523,9 +532,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.4" +version = "4.5.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90bc066a67923782aa8515dbaea16946c5bcc5addbd668bb80af688e53e548a0" +checksum = "b97f376d85a664d5837dbae44bf546e6477a679ff6610010f17276f686d867e8" dependencies = [ "clap_builder", "clap_derive", @@ -533,39 +542,39 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.2" +version = "4.5.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae129e2e766ae0ec03484e609954119f123cc1fe650337e155d03b022f24f7b4" +checksum = "19bc80abd44e4bed93ca373a0704ccbd1b710dc5749406201bb018272808dc54" dependencies = [ "anstream", "anstyle", "clap_lex", - "strsim 0.11.1", + "strsim", ] [[package]] name = "clap_derive" -version = "4.5.4" +version = "4.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "528131438037fd55894f62d6e9f068b8f45ac57ffa77517819645d10aed04f64" +checksum = "4ac6a0c7b1a9e9a5186361f67dfa1b88213572f427fb9ab038efb2bd8c582dab" dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.61", + "syn 2.0.87", ] [[package]] name = "clap_lex" -version = "0.7.0" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98cc8fbded0c607b7ba9dd60cd98df59af97e84d24e49c8557331cfc26d301ce" +checksum = "1462739cb27611015575c0c11df5df7601141071f07518d56fcc1be504cbec97" [[package]] name = "colorchoice" -version = "1.0.1" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b6a852b24ab71dffc585bcb46eaf7959d175cb865a7152e35b348d1b2960422" +checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990" [[package]] name = "combine" @@ -621,15 +630,15 @@ dependencies = [ [[package]] name = "core-foundation-sys" -version = "0.8.6" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" [[package]] name = "cpufeatures" -version = "0.2.12" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" +checksum = "608697df725056feaccfa42cffdaeeec3fccc4ffc38358ecd19b243e716a78e0" dependencies = [ "libc", ] @@ -655,7 +664,7 @@ dependencies = [ "clap", "dotenvy", "feed-rs", - "fred 9.1.2", + "fred", "futures", "headers", "http 1.1.0", @@ -668,15 +677,15 @@ dependencies = [ "password-auth", "rand", "readability", - "reqwest 0.12.4", + "reqwest 0.12.9", "serde", "serde_with", "sqlx", - "thiserror", + "thiserror 2.0.1", "time", "tokio", "tokio-stream", - "tower", + "tower 0.5.1", "tower-http", "tower-livereload", "tower-sessions", @@ -723,9 +732,9 @@ dependencies = [ [[package]] name = "crossbeam-channel" -version = "0.5.12" +version = "0.5.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab3db02a9c5b5121e1e42fbdb1aeb65f5e02624cc58c43f2884c6ccac0b82f95" +checksum = "33480d6946193aa8033910124896ca395333cae7e2d1113d1fef6c3272217df2" dependencies = [ "crossbeam-utils", ] @@ -741,9 +750,9 @@ dependencies = [ [[package]] name = "crossbeam-utils" -version = "0.8.19" +version = "0.8.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "248e3bacc7dc6baa3b21e405ee045c3047101a49145e7e9eca583ab4c2ca5345" +checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" [[package]] name = "crypto-common" @@ -757,9 +766,9 @@ dependencies = [ [[package]] name = "darling" -version = "0.20.8" +version = "0.20.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54e36fcd13ed84ffdfda6f5be89b31287cbb80c439841fe69e04841435464391" +checksum = "6f63b86c8a8826a49b8c21f08a2d07338eec8d900540f8630dc76284be802989" dependencies = [ "darling_core", "darling_macro", @@ -767,27 +776,27 @@ dependencies = [ [[package]] name = "darling_core" -version = "0.20.8" +version = "0.20.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c2cf1c23a687a1feeb728783b993c4e1ad83d99f351801977dd809b48d0a70f" +checksum = "95133861a8032aaea082871032f5815eb9e98cef03fa916ab4500513994df9e5" dependencies = [ "fnv", "ident_case", "proc-macro2", "quote", - "strsim 0.10.0", - "syn 2.0.61", + "strsim", + "syn 2.0.87", ] [[package]] name = "darling_macro" -version = "0.20.8" +version = "0.20.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a668eda54683121533a393014d8692171709ff57a7d61f187b6e782719f8933f" +checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" dependencies = [ "darling_core", "quote", - "syn 2.0.61", + "syn 2.0.87", ] [[package]] @@ -823,6 +832,17 @@ dependencies = [ "subtle", ] +[[package]] +name = "displaydoc" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", +] + [[package]] name = "dotenvy" version = "0.15.7" @@ -831,9 +851,9 @@ checksum = "1aaf95b3e5c8f23aa320147307562d361db0ae0d51242340f558153b4eb2439b" [[package]] name = "either" -version = "1.11.0" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a47c1c47d2f5964e29c61246e81db715514cd532db6b5116a25ea3c03d6780a2" +checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" dependencies = [ "serde", ] @@ -850,15 +870,15 @@ dependencies = [ [[package]] name = "email_address" -version = "0.2.4" +version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2153bd83ebc09db15bcbdc3e2194d901804952e3dc96967e1cd3b0c5c32d112" +checksum = "e079f19b08ca6239f47f8ba8509c11cf3ea30095831f7fed61441475edd8c449" [[package]] name = "encoding_rs" -version = "0.8.34" +version = "0.8.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59" +checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" dependencies = [ "cfg-if", ] @@ -898,18 +918,18 @@ checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" [[package]] name = "fastrand" -version = "2.1.0" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a" +checksum = "486f806e73c5707928240ddc295403b1b93c96a02038563881c4a2fd84b81ac4" [[package]] name = "feed-rs" -version = "1.5.2" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9aa43bcab8b8dde6fc5fd7489e61f690c9fd4ce7b74c97299962b83e5a241a90" +checksum = "6511d29ecf291f32688d546c33d8e62bbebd4fe60ef40b52b20e3f3a0ec6eb56" dependencies = [ "chrono", - "mime", + "mediatype", "quick-xml", "regex", "serde", @@ -921,22 +941,16 @@ dependencies = [ [[package]] name = "filetime" -version = "0.2.23" +version = "0.2.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ee447700ac8aa0b2f2bd7bc4462ad686ba06baa6727ac149a2d6277f0d240fd" +checksum = "35c0522e981e68cbfa8c3f978441a5f34b30b96e146b33cd3359176b50fe8586" dependencies = [ "cfg-if", "libc", - "redox_syscall 0.4.1", - "windows-sys 0.52.0", + "libredox", + "windows-sys 0.59.0", ] -[[package]] -name = "finl_unicode" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fcfdc7a0362c9f4444381a9e697c79d435fe65b52a37466fc2c1184cee9edc6" - [[package]] name = "float-cmp" version = "0.9.0" @@ -948,13 +962,13 @@ dependencies = [ [[package]] name = "flume" -version = "0.11.0" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55ac459de2512911e4b674ce33cf20befaba382d05b62b008afc1c8b57cbf181" +checksum = "da0e4dd2a88388a1f4ccc7c9ce104604dab68d9f408dc34cd45823d5a9069095" dependencies = [ "futures-core", "futures-sink", - "spin 0.9.8", + "spin", ] [[package]] @@ -994,14 +1008,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8835f84f38484cc86f110a805655697908257fb9a7af005234060891557198e9" dependencies = [ "nonempty", - "thiserror", + "thiserror 1.0.68", ] [[package]] name = "fred" -version = "8.0.6" +version = "9.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b8e3a1339ed45ad8fde94530c4bdcbd5f371a3c6bd3bf57682923792830aa37" +checksum = "3cdd5378252ea124b712e0ac55147d26ae3af575883b34b8423091a4c719606b" dependencies = [ "arc-swap", "async-trait", @@ -1009,11 +1023,12 @@ dependencies = [ "bytes-utils", "crossbeam-queue", "float-cmp", + "fred-macros", "futures", "log", "parking_lot", "rand", - "redis-protocol 4.1.0", + "redis-protocol", "semver", "socket2", "tokio", @@ -1024,29 +1039,14 @@ dependencies = [ ] [[package]] -name = "fred" -version = "9.1.2" +name = "fred-macros" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "152397076bd317aa06bca9666e954ad15cde1a8f17b6ea4b007cf0bfc074d1d0" +checksum = "1458c6e22d36d61507034d5afecc64f105c1d39712b7ac6ec3b352c423f715cc" dependencies = [ - "arc-swap", - "async-trait", - "bytes", - "bytes-utils", - "crossbeam-queue", - "float-cmp", - "futures", - "log", - "parking_lot", - "rand", - "redis-protocol 5.0.1", - "semver", - "socket2", - "tokio", - "tokio-stream", - "tokio-util", - "url", - "urlencoding", + "proc-macro2", + "quote", + "syn 2.0.87", ] [[package]] @@ -1070,9 +1070,9 @@ dependencies = [ [[package]] name = "futures" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" +checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" dependencies = [ "futures-channel", "futures-core", @@ -1085,9 +1085,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" dependencies = [ "futures-core", "futures-sink", @@ -1095,15 +1095,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" [[package]] name = "futures-executor" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d" +checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" dependencies = [ "futures-core", "futures-task", @@ -1123,19 +1123,19 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" +checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" [[package]] name = "futures-macro" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" +checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.61", + "syn 2.0.87", ] [[package]] @@ -1149,15 +1149,15 @@ dependencies = [ [[package]] name = "futures-sink" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" [[package]] name = "futures-task" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" [[package]] name = "futures-timer" @@ -1167,9 +1167,9 @@ checksum = "f288b0a4f20f9a56b5d1da57e2227c661b7b16168e2f72365f57b63326e29b24" [[package]] name = "futures-util" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" dependencies = [ "futures-channel", "futures-core", @@ -1208,9 +1208,9 @@ dependencies = [ [[package]] name = "gimli" -version = "0.28.1" +version = "0.31.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" +checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" [[package]] name = "h2" @@ -1224,7 +1224,7 @@ dependencies = [ "futures-sink", "futures-util", "http 0.2.12", - "indexmap 2.2.6", + "indexmap 2.6.0", "slab", "tokio", "tokio-util", @@ -1233,17 +1233,17 @@ dependencies = [ [[package]] name = "h2" -version = "0.4.4" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "816ec7294445779408f36fe57bc5b7fc1cf59664059096c65f905c1c61f58069" +checksum = "524e8ac6999421f49a846c2d4411f337e53497d8ec55d67753beffa43c5d9205" dependencies = [ + "atomic-waker", "bytes", "fnv", "futures-core", "futures-sink", - "futures-util", "http 1.1.0", - "indexmap 2.2.6", + "indexmap 2.6.0", "slab", "tokio", "tokio-util", @@ -1269,7 +1269,7 @@ version = "1.36.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1bfae7cdfe23e50ea96929ccf1948d9ae1d8608353556461e5de247463d3a4f6" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.8.0", "proc-macro2", "quote", "syn 1.0.109", @@ -1291,6 +1291,12 @@ dependencies = [ "allocator-api2", ] +[[package]] +name = "hashbrown" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a9bfc1af68b1726ea47d3d5109de126281def866b33970e10fbab11b5dafab3" + [[package]] name = "hashlink" version = "0.8.4" @@ -1414,7 +1420,7 @@ dependencies = [ "markup5ever 0.12.1", "proc-macro2", "quote", - "syn 2.0.61", + "syn 2.0.87", ] [[package]] @@ -1452,9 +1458,9 @@ dependencies = [ [[package]] name = "http-body" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cac85db508abc24a2e48553ba12a996e87244a0395ce011e62b37158745d643" +checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" dependencies = [ "bytes", "http 1.1.0", @@ -1462,14 +1468,14 @@ dependencies = [ [[package]] name = "http-body-util" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0475f8b2ac86659c21b64320d5d653f9efe42acd2a4e560073ec61a155a34f1d" +checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f" dependencies = [ "bytes", - "futures-core", + "futures-util", "http 1.1.0", - "http-body 1.0.0", + "http-body 1.0.1", "pin-project-lite", ] @@ -1481,9 +1487,9 @@ checksum = "08a397c49fec283e3d6211adbe480be95aae5f304cfb923e9970e08956d5168a" [[package]] name = "httparse" -version = "1.8.0" +version = "1.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" +checksum = "7d71d3574edd2771538b901e6549113b4006ece66150fb69c0fb6d9a2adae946" [[package]] name = "httpdate" @@ -1493,9 +1499,9 @@ checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" [[package]] name = "hyper" -version = "0.14.28" +version = "0.14.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf96e135eb83a2a8ddf766e426a841d8ddd7449d5f00d34ea02b41d2f19eef80" +checksum = "8c08302e8fa335b151b788c775ff56e7a03ae64ff85c548ee820fecb70356e85" dependencies = [ "bytes", "futures-channel", @@ -1517,16 +1523,16 @@ dependencies = [ [[package]] name = "hyper" -version = "1.3.1" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe575dd17d0862a9a33781c8c4696a55c320909004a67a00fb286ba8b1bc496d" +checksum = "bbbff0a806a4728c99295b254c8838933b5b082d75e3cb70c8dab21fdfbcfa9a" dependencies = [ "bytes", "futures-channel", "futures-util", - "h2 0.4.4", + "h2 0.4.6", "http 1.1.0", - "http-body 1.0.0", + "http-body 1.0.1", "httparse", "httpdate", "itoa", @@ -1536,6 +1542,23 @@ dependencies = [ "want", ] +[[package]] +name = "hyper-rustls" +version = "0.27.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08afdbb5c31130e3034af566421053ab03787c640246a446327f550d11bcb333" +dependencies = [ + "futures-util", + "http 1.1.0", + "hyper 1.5.0", + "hyper-util", + "rustls", + "rustls-pki-types", + "tokio", + "tokio-rustls", + "tower-service", +] + [[package]] name = "hyper-tls" version = "0.5.0" @@ -1543,7 +1566,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" dependencies = [ "bytes", - "hyper 0.14.28", + "hyper 0.14.31", "native-tls", "tokio", "tokio-native-tls", @@ -1557,7 +1580,7 @@ checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" dependencies = [ "bytes", "http-body-util", - "hyper 1.3.1", + "hyper 1.5.0", "hyper-util", "native-tls", "tokio", @@ -1567,29 +1590,28 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.3" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca38ef113da30126bbff9cd1705f9273e15d45498615d138b0c20279ac7a76aa" +checksum = "df2dcfbe0677734ab2f3ffa7fa7bfd4706bfdc1ef393f2ee30184aed67e631b4" dependencies = [ "bytes", "futures-channel", "futures-util", "http 1.1.0", - "http-body 1.0.0", - "hyper 1.3.1", + "http-body 1.0.1", + "hyper 1.5.0", "pin-project-lite", "socket2", "tokio", - "tower", "tower-service", "tracing", ] [[package]] name = "iana-time-zone" -version = "0.1.60" +version = "0.1.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141" +checksum = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220" dependencies = [ "android_system_properties", "core-foundation-sys", @@ -1608,6 +1630,124 @@ dependencies = [ "cc", ] +[[package]] +name = "icu_collections" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locid" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_locid_transform" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01d11ac35de8e40fdeda00d9e1e9d92525f3f9d887cdd7aa81d727596788b54e" +dependencies = [ + "displaydoc", + "icu_locid", + "icu_locid_transform_data", + "icu_provider", + "tinystr", + "zerovec", +] + +[[package]] +name = "icu_locid_transform_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdc8ff3388f852bede6b579ad4e978ab004f139284d7b28715f773507b946f6e" + +[[package]] +name = "icu_normalizer" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "utf16_iter", + "utf8_iter", + "write16", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8cafbf7aa791e9b22bec55a167906f9e1215fd475cd22adfcf660e03e989516" + +[[package]] +name = "icu_properties" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93d6020766cfc6302c15dbbc9c8778c37e62c14427cb7f6e601d849e092aeef5" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_locid_transform", + "icu_properties_data", + "icu_provider", + "tinystr", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67a8effbc3dd3e4ba1afa8ad918d5684b8868b3b26500753effea8d2eed19569" + +[[package]] +name = "icu_provider" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9" +dependencies = [ + "displaydoc", + "icu_locid", + "icu_provider_macros", + "stable_deref_trait", + "tinystr", + "writeable", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_provider_macros" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", +] + [[package]] name = "ident_case" version = "1.0.1" @@ -1616,12 +1756,23 @@ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] name = "idna" -version = "0.5.0" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" +checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" dependencies = [ - "unicode-bidi", - "unicode-normalization", + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "daca1df1c957320b2cf139ac61e7bd64fed304c5040df000a745aa1de3b4ef71" +dependencies = [ + "icu_normalizer", + "icu_properties", ] [[package]] @@ -1637,12 +1788,12 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.2.6" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" +checksum = "707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da" dependencies = [ "equivalent", - "hashbrown 0.14.5", + "hashbrown 0.15.1", "serde", ] @@ -1668,9 +1819,9 @@ dependencies = [ [[package]] name = "ipnet" -version = "2.9.0" +version = "2.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" +checksum = "ddc24109865250148c2e0f3d25d4f0f479571723792d3802153c60922a4fb708" [[package]] name = "ipnetwork" @@ -1683,18 +1834,9 @@ dependencies = [ [[package]] name = "is_terminal_polyfill" -version = "1.70.0" +version = "1.70.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8478577c03552c21db0e2724ffb8986a5ce7af88107e6be5d2ee6e158c12800" - -[[package]] -name = "itertools" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" -dependencies = [ - "either", -] +checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" [[package]] name = "itoa" @@ -1710,9 +1852,9 @@ checksum = "47f142fe24a9c9944451e8349de0a56af5f3e7226dc46f3ed4d4ecc0b85af75e" [[package]] name = "js-sys" -version = "0.3.69" +version = "0.3.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d" +checksum = "6a88f1bda2bd75b0452a14784937d796722fdebfe50df998aeb3f0b7603019a9" dependencies = [ "wasm-bindgen", ] @@ -1739,18 +1881,18 @@ dependencies = [ [[package]] name = "lazy_static" -version = "1.4.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" dependencies = [ - "spin 0.5.2", + "spin", ] [[package]] name = "lettre" -version = "0.11.7" +version = "0.11.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a62049a808f1c4e2356a2a380bd5f2aca3b011b0b482cf3b914ba1731426969" +checksum = "0161e452348e399deb685ba05e55ee116cae9410f4f51fe42d597361444521d9" dependencies = [ "base64 0.22.1", "chumsky", @@ -1773,15 +1915,26 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.154" +version = "0.2.162" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae743338b92ff9146ce83992f766a31066a91a8c84a45e0e9f21e7cf6de6d346" +checksum = "18d287de67fe55fd7e1581fe933d965a5a9477b38e949cfa9f8574ef01506398" [[package]] name = "libm" -version = "0.2.8" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" +checksum = "8355be11b20d696c8f18f6cc018c4e372165b1fa8126cef092399c9951984ffa" + +[[package]] +name = "libredox" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" +dependencies = [ + "bitflags 2.8.0", + "libc", + "redox_syscall", +] [[package]] name = "libsqlite3-sys" @@ -1796,9 +1949,15 @@ dependencies = [ [[package]] name = "linux-raw-sys" -version = "0.4.13" +version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c" +checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" + +[[package]] +name = "litemap" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "643cb0b8d4fcc284004d5fd0d67ccf61dfffadb7f75e1e71bc420f4688a3a704" [[package]] name = "lock_api" @@ -1813,9 +1972,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.21" +version = "0.4.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" +checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" [[package]] name = "mac" @@ -1903,7 +2062,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.61", + "syn 2.0.87", ] [[package]] @@ -1917,10 +2076,16 @@ dependencies = [ ] [[package]] -name = "memchr" -version = "2.7.2" +name = "mediatype" +version = "0.19.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c8640c5d730cb13ebd907d8d04b52f55ac9a2eec55b440c8892f40d56c76c1d" +checksum = "8878cd8d1b3c8c8ae4b2ba0a36652b7cf192f618a599a7fbdfa25cffd4ea72dd" + +[[package]] +name = "memchr" +version = "2.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" [[package]] name = "mime" @@ -1930,9 +2095,9 @@ checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" [[package]] name = "mime_guess" -version = "2.0.4" +version = "2.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4192263c238a5f0d0c6bfd21f336a313a4ce1c450542449ca191bb657b4642ef" +checksum = "f7c44f8e672c00fe5308fa235f821cb4198414e1c77935c1ab6948d3fd78550e" dependencies = [ "mime", "unicase", @@ -1946,11 +2111,11 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "miniz_oxide" -version = "0.7.2" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d811f3e15f28568be3407c8e7fdb6514c1cda3cb30683f15b6a1a1dc4ea14a7" +checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1" dependencies = [ - "adler", + "adler2", ] [[package]] @@ -1965,6 +2130,18 @@ dependencies = [ "windows-sys 0.48.0", ] +[[package]] +name = "mio" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80e04d1dcff3aae0704555fe5fee3bcfaf3d1fdf8a7e521d5b9d2b42acb52cec" +dependencies = [ + "hermit-abi", + "libc", + "wasi", + "windows-sys 0.52.0", +] + [[package]] name = "multer" version = "3.1.0" @@ -1978,17 +2155,16 @@ dependencies = [ "httparse", "memchr", "mime", - "spin 0.9.8", + "spin", "version_check", ] [[package]] name = "native-tls" -version = "0.2.11" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07226173c32f2926027b63cce4bcd8076c3552846cbe7925f3aaffeac0a3b92e" +checksum = "a8614eb2c83d59d1c8cc974dd3f920198647674a0a035e1af1fa58707e317466" dependencies = [ - "lazy_static", "libc", "log", "openssl", @@ -2028,7 +2204,7 @@ version = "6.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6205bd8bb1e454ad2e27422015fb5e4f2bcc7e08fa8f27058670d208324a4d2d" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.8.0", "crossbeam-channel", "filetime", "fsevent-sys", @@ -2036,7 +2212,7 @@ dependencies = [ "kqueue", "libc", "log", - "mio", + "mio 0.8.11", "walkdir", "windows-sys 0.48.0", ] @@ -2104,38 +2280,28 @@ dependencies = [ "libm", ] -[[package]] -name = "num_cpus" -version = "1.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" -dependencies = [ - "hermit-abi", - "libc", -] - [[package]] name = "object" -version = "0.32.2" +version = "0.36.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" +checksum = "aedf0a2d09c573ed1d8d85b30c119153926a2b36dce0ab28322c09a117a4683e" dependencies = [ "memchr", ] [[package]] name = "once_cell" -version = "1.19.0" +version = "1.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" +checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" [[package]] name = "openssl" -version = "0.10.64" +version = "0.10.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95a0481286a310808298130d22dd1fef0fa571e05a8f44ec801801e84b216b1f" +checksum = "6174bc48f102d208783c2c84bf931bb75927a617866870de8a4ea85597f871f5" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.8.0", "cfg-if", "foreign-types", "libc", @@ -2152,7 +2318,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.61", + "syn 2.0.87", ] [[package]] @@ -2163,9 +2329,9 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "openssl-sys" -version = "0.9.102" +version = "0.9.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c597637d56fbc83893a35eb0dd04b2b8e7a50c91e64e9493e398b5df4fb45fa2" +checksum = "45abf306cbf99debc8195b66b7346498d7b10c210de50418b5ccd7ceba08c741" dependencies = [ "cc", "libc", @@ -2181,7 +2347,7 @@ checksum = "df2f96426c857a92676dc29a9e2a181eb39321047ac994491c69eae01619ddf2" dependencies = [ "hard-xml", "serde", - "thiserror", + "thiserror 1.0.68", ] [[package]] @@ -2192,9 +2358,9 @@ checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" [[package]] name = "parking_lot" -version = "0.12.2" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e4af0ca4f6caed20e900d564c242b8e5d4903fdacf31d3daf527b66fe6f42fb" +checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" dependencies = [ "lock_api", "parking_lot_core", @@ -2208,9 +2374,9 @@ checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" dependencies = [ "cfg-if", "libc", - "redox_syscall 0.5.1", + "redox_syscall", "smallvec", - "windows-targets 0.52.5", + "windows-targets 0.52.6", ] [[package]] @@ -2335,29 +2501,29 @@ dependencies = [ [[package]] name = "pin-project" -version = "1.1.5" +version = "1.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3" +checksum = "be57f64e946e500c8ee36ef6331845d40a93055567ec57e8fae13efd33759b95" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.5" +version = "1.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" +checksum = "3c0f5fad0874fc7abcd4d750e76917eaebbecaa2c20bde22e1dbeeba8beb758c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.61", + "syn 2.0.87", ] [[package]] name = "pin-project-lite" -version = "0.2.14" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" +checksum = "915a1e146535de9163f3987b8944ed8cf49a18bb0056bcebcdcece385cece4ff" [[package]] name = "pin-utils" @@ -2388,9 +2554,9 @@ dependencies = [ [[package]] name = "pkg-config" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" +checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" [[package]] name = "powerfmt" @@ -2400,9 +2566,12 @@ checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" [[package]] name = "ppv-lite86" -version = "0.2.17" +version = "0.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" +checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" +dependencies = [ + "zerocopy", +] [[package]] name = "precomputed-hash" @@ -2419,7 +2588,6 @@ dependencies = [ "proc-macro-error-attr", "proc-macro2", "quote", - "syn 1.0.109", "version_check", ] @@ -2435,28 +2603,50 @@ dependencies = [ ] [[package]] -name = "proc-macro2" -version = "1.0.82" +name = "proc-macro-error-attr2" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ad3d49ab951a01fbaafe34f2ec74122942fe18a3f9814c3268f1bb72042131b" +checksum = "96de42df36bb9bba5542fe9f1a054b8cc87e172759a1868aa05c1f3acc89dfc5" +dependencies = [ + "proc-macro2", + "quote", +] + +[[package]] +name = "proc-macro-error2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11ec05c52be0a07b08061f7dd003e7d7092e0472bc731b4af7bb1ef876109802" +dependencies = [ + "proc-macro-error-attr2", + "proc-macro2", + "quote", + "syn 2.0.87", +] + +[[package]] +name = "proc-macro2" +version = "1.0.89" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f139b0662de085916d1fb67d2b4169d1addddda1919e696f3252b740b629986e" dependencies = [ "unicode-ident", ] [[package]] name = "psm" -version = "0.1.21" +version = "0.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5787f7cda34e3033a72192c018bc5883100330f362ef279a8cbccfce8bb4e874" +checksum = "aa37f80ca58604976033fae9515a8a2989fc13797d953f7c04fb8fa36a11f205" dependencies = [ "cc", ] [[package]] name = "quick-xml" -version = "0.31.0" +version = "0.36.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1004a344b30a54e2ee58d66a71b32d2db2feb0a31f9a2d302bf0536f15de2a33" +checksum = "f7649a7b4df05aed9ea7ec6f628c67c9953a43869b8bc50929569b2999d443fe" dependencies = [ "encoding_rs", "memchr", @@ -2464,18 +2654,18 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.36" +version = "1.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" +checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" dependencies = [ "proc-macro2", ] [[package]] name = "quoted_printable" -version = "0.5.0" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79ec282e887b434b68c18fe5c121d38e72a5cf35119b59e54ec5b992ea9c8eb0" +checksum = "640c9bd8497b02465aeef5375144c26062e0dcd5939dfcbb0f5db76cb8c17c73" [[package]] name = "rand" @@ -2544,20 +2734,6 @@ dependencies = [ "url", ] -[[package]] -name = "redis-protocol" -version = "4.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c31deddf734dc0a39d3112e73490e88b61a05e83e074d211f348404cee4d2c6" -dependencies = [ - "bytes", - "bytes-utils", - "cookie-factory", - "crc16", - "log", - "nom", -] - [[package]] name = "redis-protocol" version = "5.0.1" @@ -2574,32 +2750,23 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.4.1" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" +checksum = "9b6dfecf2c74bce2466cabf93f6664d6998a69eb21e39f4207930065b27b771f" dependencies = [ - "bitflags 1.3.2", -] - -[[package]] -name = "redox_syscall" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "469052894dcb553421e483e4209ee581a45100d31b4018de03e5a7ad86374a7e" -dependencies = [ - "bitflags 2.5.0", + "bitflags 2.8.0", ] [[package]] name = "regex" -version = "1.10.4" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c117dbdfde9c8308975b6a18d71f3f385c89461f7b3fb054288ecf2a2058ba4c" +checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" dependencies = [ "aho-corasick", "memchr", - "regex-automata 0.4.6", - "regex-syntax 0.8.3", + "regex-automata 0.4.8", + "regex-syntax 0.8.5", ] [[package]] @@ -2613,13 +2780,13 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.6" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86b83b8b9847f9bf95ef68afb0b8e6cdb80f498442f5179a29fad448fcc1eaea" +checksum = "368758f23274712b504848e9d5a6f010445cc8b87a7cdb4d7cbee666c1288da3" dependencies = [ "aho-corasick", "memchr", - "regex-syntax 0.8.3", + "regex-syntax 0.8.5", ] [[package]] @@ -2630,9 +2797,9 @@ checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" [[package]] name = "regex-syntax" -version = "0.8.3" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adad44e29e4c806119491a7f06f03de4d1af22c3a680dd47f1e6e179439d1f56" +checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" [[package]] name = "reqwest" @@ -2648,7 +2815,7 @@ dependencies = [ "h2 0.3.26", "http 0.2.12", "http-body 0.4.6", - "hyper 0.14.28", + "hyper 0.14.31", "hyper-tls 0.5.0", "ipnet", "js-sys", @@ -2663,7 +2830,7 @@ dependencies = [ "serde_json", "serde_urlencoded", "sync_wrapper 0.1.2", - "system-configuration", + "system-configuration 0.5.1", "tokio", "tokio-native-tls", "tower-service", @@ -2671,25 +2838,26 @@ dependencies = [ "wasm-bindgen", "wasm-bindgen-futures", "web-sys", - "winreg 0.50.0", + "winreg", ] [[package]] name = "reqwest" -version = "0.12.4" +version = "0.12.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "566cafdd92868e0939d3fb961bd0dc25fcfaaed179291093b3d43e6b3150ea10" +checksum = "a77c62af46e79de0a562e1a9849205ffcb7fc1238876e9bd743357570e04046f" dependencies = [ "base64 0.22.1", "bytes", "encoding_rs", "futures-core", "futures-util", - "h2 0.4.4", + "h2 0.4.6", "http 1.1.0", - "http-body 1.0.0", + "http-body 1.0.1", "http-body-util", - "hyper 1.3.1", + "hyper 1.5.0", + "hyper-rustls", "hyper-tls 0.6.0", "hyper-util", "ipnet", @@ -2700,12 +2868,12 @@ dependencies = [ "once_cell", "percent-encoding", "pin-project-lite", - "rustls-pemfile 2.1.2", + "rustls-pemfile 2.2.0", "serde", "serde_json", "serde_urlencoded", - "sync_wrapper 0.1.2", - "system-configuration", + "sync_wrapper 1.0.1", + "system-configuration 0.6.1", "tokio", "tokio-native-tls", "tower-service", @@ -2713,7 +2881,22 @@ dependencies = [ "wasm-bindgen", "wasm-bindgen-futures", "web-sys", - "winreg 0.52.0", + "windows-registry", +] + +[[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", + "untrusted", + "windows-sys 0.52.0", ] [[package]] @@ -2766,17 +2949,30 @@ checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" [[package]] name = "rustix" -version = "0.38.34" +version = "0.38.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" +checksum = "375116bee2be9ed569afe2154ea6a99dfdffd257f533f187498c2a8f5feaf4ee" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.8.0", "errno", "libc", "linux-raw-sys", "windows-sys 0.52.0", ] +[[package]] +name = "rustls" +version = "0.23.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eee87ff5d9b36712a58574e12e9f0ea80f915a5b0ac518d322b24a465617925e" +dependencies = [ + "once_cell", + "rustls-pki-types", + "rustls-webpki", + "subtle", + "zeroize", +] + [[package]] name = "rustls-pemfile" version = "1.0.4" @@ -2788,25 +2984,35 @@ dependencies = [ [[package]] name = "rustls-pemfile" -version = "2.1.2" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29993a25686778eb88d4189742cd713c9bce943bc54251a33509dc63cbacf73d" +checksum = "dce314e5fee3f39953d46bb63bb8a46d40c2f8fb7cc5a3b6cab2bde9721d6e50" dependencies = [ - "base64 0.22.1", "rustls-pki-types", ] [[package]] name = "rustls-pki-types" -version = "1.7.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "976295e77ce332211c0d24d92c0e83e50f5c5f046d11082cea19f3df13a3562d" +checksum = "16f1201b3c9a7ee8039bcadc17b7e605e2945b27eee7631788c1bd2b0643674b" + +[[package]] +name = "rustls-webpki" +version = "0.102.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64ca1bc8749bd4cf37b5ce386cc146580777b4e8572c7b97baf22c83f444bee9" +dependencies = [ + "ring", + "rustls-pki-types", + "untrusted", +] [[package]] name = "rustversion" -version = "1.0.16" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "092474d1a01ea8278f69e6a358998405fae5b8b963ddaeb2b0b04a128bf1dfb0" +checksum = "0e819f2bc632f285be6d7cd36e25940d45b2391dd6d9b939e79de557f7014248" [[package]] name = "ryu" @@ -2825,11 +3031,11 @@ dependencies = [ [[package]] name = "schannel" -version = "0.1.23" +version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbc91545643bcf3a0bbb6569265615222618bdf33ce4ffbbd13c4bbd4c093534" +checksum = "01227be5826fa0690321a2ba6c5cd57a19cf3f6a09e76973b58e61de6ab9d1c1" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -2840,11 +3046,11 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "security-framework" -version = "2.11.0" +version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c627723fd09706bacdb5cf41499e95098555af3c3c29d014dc3c458ef6be11c0" +checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.8.0", "core-foundation", "core-foundation-sys", "libc", @@ -2853,9 +3059,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.11.0" +version = "2.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "317936bbbd05227752583946b9e66d7ce3b489f84e11a94a510b4437fef407d7" +checksum = "fa39c7303dc58b5543c94d22c1766b0d31f2ee58306363ea622b10bbc075eaa2" dependencies = [ "core-foundation-sys", "libc", @@ -2869,31 +3075,32 @@ checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" [[package]] name = "serde" -version = "1.0.201" +version = "1.0.214" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "780f1cebed1629e4753a1a38a3c72d30b97ec044f0aef68cb26650a3c5cf363c" +checksum = "f55c3193aca71c12ad7890f1785d2b73e1b9f63a0bbc353c08ef26fe03fc56b5" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.201" +version = "1.0.214" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5e405930b9796f1c00bee880d03fc7e0bb4b9a11afc776885ffe84320da2865" +checksum = "de523f781f095e28fa605cdce0f8307e451cc0fd14e2eb4cd2e98a355b147766" dependencies = [ "proc-macro2", "quote", - "syn 2.0.61", + "syn 2.0.87", ] [[package]] name = "serde_json" -version = "1.0.117" +version = "1.0.132" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "455182ea6142b14f93f4bc5320a2b31c1f266b66a4a5c858b013302a5d8cbfc3" +checksum = "d726bfaff4b320266d395898905d0eba0345aae23b54aee3a737e260fd46db03" dependencies = [ "itoa", + "memchr", "ryu", "serde", ] @@ -2922,15 +3129,15 @@ dependencies = [ [[package]] name = "serde_with" -version = "3.8.1" +version = "3.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ad483d2ab0149d5a5ebcd9972a3852711e0153d863bf5a5d0391d28883c4a20" +checksum = "8e28bdad6db2b8340e449f7108f020b3b092e8583a9e3fb82713e1d4e71fe817" dependencies = [ "base64 0.22.1", "chrono", "hex", "indexmap 1.9.3", - "indexmap 2.2.6", + "indexmap 2.6.0", "serde", "serde_derive", "serde_json", @@ -2940,14 +3147,14 @@ dependencies = [ [[package]] name = "serde_with_macros" -version = "3.8.1" +version = "3.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65569b702f41443e8bc8bbb1c5779bd0450bbe723b56198980e80ec45780bce2" +checksum = "9d846214a9854ef724f3da161b426242d8de7c1fc7de2f89bb1efcb154dca79d" dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.61", + "syn 2.0.87", ] [[package]] @@ -2963,9 +3170,9 @@ dependencies = [ [[package]] name = "sha1_smol" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae1a47186c03a32177042e55dbc5fd5aee900b8e0069a8d70fba96a9375cd012" +checksum = "bbfa15b3dddfee50a0fff136974b3e1bde555604ba463834a7eb7deb6417705d" [[package]] name = "sha2" @@ -2987,6 +3194,12 @@ dependencies = [ "lazy_static", ] +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + [[package]] name = "signal-hook-registry" version = "1.4.2" @@ -3043,12 +3256,6 @@ dependencies = [ "windows-sys 0.52.0", ] -[[package]] -name = "spin" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" - [[package]] name = "spin" version = "0.9.8" @@ -3070,11 +3277,10 @@ dependencies = [ [[package]] name = "sqlformat" -version = "0.2.3" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce81b7bd7c4493975347ef60d8c7e8b742d4694f4c49f93e0a12ea263938176c" +checksum = "7bba3a93db0cc4f7bdece8bb09e77e2e785c20bfebf79eb8340ed80708048790" dependencies = [ - "itertools", "nom", "unicode_categories", ] @@ -3114,7 +3320,7 @@ dependencies = [ "futures-util", "hashlink", "hex", - "indexmap 2.2.6", + "indexmap 2.6.0", "ipnetwork", "log", "memchr", @@ -3126,7 +3332,7 @@ dependencies = [ "sha2", "smallvec", "sqlformat", - "thiserror", + "thiserror 1.0.68", "tokio", "tokio-stream", "tracing", @@ -3181,7 +3387,7 @@ checksum = "1ed31390216d20e538e447a7a9b959e06ed9fc51c37b514b46eb758016ecd418" dependencies = [ "atoi", "base64 0.21.7", - "bitflags 2.5.0", + "bitflags 2.8.0", "byteorder", "bytes", "chrono", @@ -3211,7 +3417,7 @@ dependencies = [ "smallvec", "sqlx-core", "stringprep", - "thiserror", + "thiserror 1.0.68", "tracing", "uuid", "whoami", @@ -3225,7 +3431,7 @@ checksum = "7c824eb80b894f926f89a0b9da0c7f435d27cdd35b8c655b114e58223918577e" dependencies = [ "atoi", "base64 0.21.7", - "bitflags 2.5.0", + "bitflags 2.8.0", "byteorder", "chrono", "crc", @@ -3252,7 +3458,7 @@ dependencies = [ "smallvec", "sqlx-core", "stringprep", - "thiserror", + "thiserror 1.0.68", "tracing", "uuid", "whoami", @@ -3284,16 +3490,22 @@ dependencies = [ ] [[package]] -name = "stacker" -version = "0.1.15" +name = "stable_deref_trait" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c886bd4480155fd3ef527d45e9ac8dd7118a898a46530b7b94c3e21866259fce" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" + +[[package]] +name = "stacker" +version = "0.1.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "799c883d55abdb5e98af1a7b3f23b9b6de8ecada0ecac058672d7635eb48ca7b" dependencies = [ "cc", "cfg-if", "libc", "psm", - "winapi", + "windows-sys 0.59.0", ] [[package]] @@ -3324,21 +3536,15 @@ dependencies = [ [[package]] name = "stringprep" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb41d74e231a107a1b4ee36bd1214b11285b77768d2e3824aedafa988fd36ee6" +checksum = "7b4df3d392d81bd458a8a621b8bffbd2302a12ffe288a9d931670948749463b1" dependencies = [ - "finl_unicode", "unicode-bidi", "unicode-normalization", + "unicode-properties", ] -[[package]] -name = "strsim" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" - [[package]] name = "strsim" version = "0.11.1" @@ -3347,9 +3553,9 @@ checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" [[package]] name = "subtle" -version = "2.5.0" +version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" [[package]] name = "syn" @@ -3364,9 +3570,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.61" +version = "2.0.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c993ed8ccba56ae856363b1845da7266a7cb78e1d146c8a32d54b45a8b831fc9" +checksum = "25aa4ce346d03a6dcd68dd8b4010bcb74e54e62c90c573f394c46eae99aba32d" dependencies = [ "proc-macro2", "quote", @@ -3384,6 +3590,20 @@ name = "sync_wrapper" version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a7065abeca94b6a8a577f9bd45aa0867a2238b74e8eb67cf10d492bc39351394" +dependencies = [ + "futures-core", +] + +[[package]] +name = "synstructure" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", +] [[package]] name = "system-configuration" @@ -3393,7 +3613,18 @@ checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" dependencies = [ "bitflags 1.3.2", "core-foundation", - "system-configuration-sys", + "system-configuration-sys 0.5.0", +] + +[[package]] +name = "system-configuration" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" +dependencies = [ + "bitflags 2.8.0", + "core-foundation", + "system-configuration-sys 0.6.0", ] [[package]] @@ -3407,15 +3638,26 @@ dependencies = [ ] [[package]] -name = "tempfile" -version = "3.10.1" +name = "system-configuration-sys" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1" +checksum = "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "tempfile" +version = "3.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28cce251fcbc87fac86a866eeb0d6c2d536fc16d06f184bb61aeae11aa4cee0c" dependencies = [ "cfg-if", "fastrand", + "once_cell", "rustix", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -3431,22 +3673,42 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.60" +version = "1.0.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "579e9083ca58dd9dcf91a9923bb9054071b9ebbd800b342194c9feb0ee89fc18" +checksum = "02dd99dc800bbb97186339685293e1cc5d9df1f8fae2d0aecd9ff1c77efea892" dependencies = [ - "thiserror-impl", + "thiserror-impl 1.0.68", +] + +[[package]] +name = "thiserror" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07c1e40dd48a282ae8edc36c732cbc219144b87fb6a4c7316d611c6b1f06ec0c" +dependencies = [ + "thiserror-impl 2.0.1", ] [[package]] name = "thiserror-impl" -version = "1.0.60" +version = "1.0.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2470041c06ec3ac1ab38d0356a6119054dedaea53e12fbefc0de730a1c08524" +checksum = "a7c61ec9a6f64d2793d8a45faba21efbe3ced62a886d44c36a009b2b519b4c7e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.61", + "syn 2.0.87", +] + +[[package]] +name = "thiserror-impl" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "874aa7e446f1da8d9c3a5c95b1c5eb41d800045252121dc7f8e0ba370cee55f5" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", ] [[package]] @@ -3491,10 +3753,20 @@ dependencies = [ ] [[package]] -name = "tinyvec" -version = "1.6.0" +name = "tinystr" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f" +dependencies = [ + "displaydoc", + "zerovec", +] + +[[package]] +name = "tinyvec" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938" dependencies = [ "tinyvec_macros", ] @@ -3507,32 +3779,31 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.37.0" +version = "1.41.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1adbebffeca75fcfd058afa480fb6c0b81e165a0323f9c9d39c9697e37c46787" +checksum = "22cfb5bee7a6a52939ca9224d6ac897bb669134078daa8735560897f69de4d33" dependencies = [ "backtrace", "bytes", "libc", - "mio", - "num_cpus", + "mio 1.0.2", "parking_lot", "pin-project-lite", "signal-hook-registry", "socket2", "tokio-macros", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] name = "tokio-macros" -version = "2.2.0" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" +checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" dependencies = [ "proc-macro2", "quote", - "syn 2.0.61", + "syn 2.0.87", ] [[package]] @@ -3557,10 +3828,21 @@ dependencies = [ ] [[package]] -name = "tokio-stream" -version = "0.1.15" +name = "tokio-rustls" +version = "0.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "267ac89e0bec6e691e5813911606935d77c476ff49024f98abcea3e7b15e37af" +checksum = "0c7bc40d0e5a97695bb96e27995cd3a08538541b0a846f65bba7a359f36700d4" +dependencies = [ + "rustls", + "rustls-pki-types", + "tokio", +] + +[[package]] +name = "tokio-stream" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f4e6ce100d0eb49a2734f8c0812bcd324cf357d21810932c5df6b96ef2b86f1" dependencies = [ "futures-core", "pin-project-lite", @@ -3570,9 +3852,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.11" +version = "0.7.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cf6b47b3771c49ac75ad09a6162f53ad4b8088b76ac60e8ec1455b31a189fe1" +checksum = "61e7c3654c13bcd040d4a03abee2c75b1d14a37b423cf5a813ceae1cc903ec6a" dependencies = [ "bytes", "futures-core", @@ -3597,6 +3879,22 @@ dependencies = [ "tracing", ] +[[package]] +name = "tower" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2873938d487c3cfb9aed7546dc9f2711d867c9f90c46b889989a2cb84eba6b4f" +dependencies = [ + "futures-core", + "futures-util", + "pin-project-lite", + "sync_wrapper 0.1.2", + "tokio", + "tower-layer", + "tower-service", + "tracing", +] + [[package]] name = "tower-cookies" version = "0.10.0" @@ -3616,15 +3914,15 @@ dependencies = [ [[package]] name = "tower-http" -version = "0.5.2" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e9cd434a998747dd2c4276bc96ee2e0c7a2eadf3cae88e52be55a05fa9053f5" +checksum = "8437150ab6bbc8c5f0f519e3d5ed4aa883a83dd4cdd3d1b21f9482936046cb97" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.8.0", "bytes", "futures-util", "http 1.1.0", - "http-body 1.0.0", + "http-body 1.0.1", "http-body-util", "http-range-header", "httpdate", @@ -3641,35 +3939,35 @@ dependencies = [ [[package]] name = "tower-layer" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c20c8dbed6283a09604c3e69b4b7eeb54e298b8a600d4d5ecb5ad39de609f1d0" +checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" [[package]] name = "tower-livereload" -version = "0.9.2" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61d6cbbab4b2d3cafd21fb211cc4b06525a0df919c3e8ca3d36485b1c1bd4cd4" +checksum = "0eed2e2234e1daf043b5548205c29778f2655a00eba8fd980333506bb007f052" dependencies = [ "bytes", "http 1.1.0", - "http-body 1.0.0", + "http-body 1.0.1", "pin-project-lite", "tokio", - "tower", + "tower 0.5.1", ] [[package]] name = "tower-service" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" +checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" [[package]] name = "tower-sessions" -version = "0.12.2" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2d9b6f0c4938eed0eefd9cce19319b4bdad10e11ca9d8c3be373ce734bbfd63" +checksum = "65856c81ee244e0f8a55ab0f7b769b72fbde387c235f0a73cd97c579818d05eb" dependencies = [ "async-trait", "http 1.1.0", @@ -3685,9 +3983,9 @@ dependencies = [ [[package]] name = "tower-sessions-core" -version = "0.12.2" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38767064990c327ec1d92bba2576dce0944750e9c9ae021f12ebc72de77ac406" +checksum = "fb6abbfcaf6436ec5a772cd9f965401da12db793e404ae6134eac066fa5a04f3" dependencies = [ "async-trait", "axum-core", @@ -3698,7 +3996,7 @@ dependencies = [ "rand", "serde", "serde_json", - "thiserror", + "thiserror 1.0.68", "time", "tokio", "tracing", @@ -3706,9 +4004,9 @@ dependencies = [ [[package]] name = "tower-sessions-memory-store" -version = "0.12.2" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8b09bbe2c138a9b0ebf307dc6e6a4f7723c59545e0f4fe5e329a89868164ae3" +checksum = "7fad75660c8afbe74f4e7cbbe8e9090171a056b57370ea4d7d5e9eb3e4af3092" dependencies = [ "async-trait", "time", @@ -3718,14 +4016,14 @@ dependencies = [ [[package]] name = "tower-sessions-redis-store" -version = "0.12.0" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0460effd120251714fae61067fa3e8b2a3c8202501cdcae375d4bd14194c85cf" +checksum = "b7d9f0fdeebdc2c6accbc760a585c2932bf6eebf68537715e8ff199dfd9b5d03" dependencies = [ "async-trait", - "fred 8.0.6", + "fred", "rmp-serde", - "thiserror", + "thiserror 1.0.68", "time", "tower-sessions-core", ] @@ -3749,7 +4047,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3566e8ce28cc0a3fe42519fc80e6b4c943cc4c8cef275620eb8dac2d3d4e06cf" dependencies = [ "crossbeam-channel", - "thiserror", + "thiserror 1.0.68", "time", "tracing-subscriber", ] @@ -3762,7 +4060,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.61", + "syn 2.0.87", ] [[package]] @@ -3827,9 +4125,9 @@ checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" [[package]] name = "ulid" -version = "1.1.2" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34778c17965aa2a08913b57e1f34db9b4a63f5de31768b55bf20d2795f921259" +checksum = "04f903f293d11f31c0c29e4148f6dc0d033a7f80cebc0282bea147611667d289" dependencies = [ "getrandom", "rand", @@ -3838,39 +4136,42 @@ dependencies = [ [[package]] name = "unicase" -version = "2.7.0" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7d2d4dafb69621809a81864c9c1b864479e1235c0dd4e199924b9742439ed89" -dependencies = [ - "version_check", -] +checksum = "7e51b68083f157f853b6379db119d1c1be0e6e4dec98101079dec41f6f5cf6df" [[package]] name = "unicode-bidi" -version = "0.3.15" +version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" +checksum = "5ab17db44d7388991a428b2ee655ce0c212e862eff1768a455c58f9aad6e7893" [[package]] name = "unicode-ident" -version = "1.0.12" +version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" +checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe" [[package]] name = "unicode-normalization" -version = "0.1.23" +version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5" +checksum = "5033c97c4262335cded6d6fc3e5c18ab755e1a3dc96376350f3d8e9f009ad956" dependencies = [ "tinyvec", ] [[package]] -name = "unicode-segmentation" -version = "1.11.0" +name = "unicode-properties" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202" +checksum = "e70f2a8b45122e719eb623c01822704c4e0907e7e426a05927e1a1cfff5b75d0" + +[[package]] +name = "unicode-segmentation" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" [[package]] name = "unicode_categories" @@ -3879,10 +4180,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "39ec24b3121d976906ece63c9daad25b85969647682eee313cb5779fdd69e14e" [[package]] -name = "url" -version = "2.5.0" +name = "untrusted" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633" +checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" + +[[package]] +name = "url" +version = "2.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d157f1b96d14500ffdc1f10ba712e780825526c03d9a49b4d0324b0d9113ada" dependencies = [ "form_urlencoded", "idna", @@ -3902,16 +4209,28 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" [[package]] -name = "utf8parse" -version = "0.2.1" +name = "utf16_iter" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" +checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246" + +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + +[[package]] +name = "utf8parse" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "uuid" -version = "1.8.0" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a183cf7feeba97b4dd1c0d46788634f6221d87fa961b305bed08c851829efcc0" +checksum = "f8c5f0a0af699448548ad1a2fbf920fb4bee257eae39953ba95cb84891a0446a" dependencies = [ "getrandom", "serde", @@ -3919,9 +4238,9 @@ dependencies = [ [[package]] name = "validator" -version = "0.18.1" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db79c75af171630a3148bd3e6d7c4f42b6a9a014c2945bc5ed0020cbb8d9478e" +checksum = "d0b4a29d8709210980a09379f27ee31549b73292c87ab9899beee1c0d3be6303" dependencies = [ "idna", "once_cell", @@ -3935,16 +4254,16 @@ dependencies = [ [[package]] name = "validator_derive" -version = "0.18.1" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55591299b7007f551ed1eb79a684af7672c19c3193fb9e0a31936987bb2438ec" +checksum = "bac855a2ce6f843beb229757e6e570a42e837bcb15e5f449dd48d5747d41bf77" dependencies = [ "darling", "once_cell", - "proc-macro-error", + "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.61", + "syn 2.0.87", ] [[package]] @@ -3961,9 +4280,9 @@ checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" [[package]] name = "version_check" -version = "0.9.4" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" [[package]] name = "walkdir" @@ -3998,34 +4317,35 @@ checksum = "b8dad83b4f25e74f184f64c43b150b91efe7647395b42289f38e50566d82855b" [[package]] name = "wasm-bindgen" -version = "0.2.92" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" +checksum = "128d1e363af62632b8eb57219c8fd7877144af57558fb2ef0368d0087bddeb2e" dependencies = [ "cfg-if", + "once_cell", "wasm-bindgen-macro", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.92" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da" +checksum = "cb6dd4d3ca0ddffd1dd1c9c04f94b868c37ff5fac97c30b97cff2d74fce3a358" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn 2.0.61", + "syn 2.0.87", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.42" +version = "0.4.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76bc14366121efc8dbb487ab05bcc9d346b3b5ec0eaa76e46594cabbe51762c0" +checksum = "cc7ec4f8827a71586374db3e87abdb5a2bb3a15afed140221307c3ec06b1f63b" dependencies = [ "cfg-if", "js-sys", @@ -4035,9 +4355,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.92" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" +checksum = "e79384be7f8f5a9dd5d7167216f022090cf1f9ec128e6e6a482a2cb5c5422c56" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -4045,28 +4365,28 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.92" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" +checksum = "26c6ab57572f7a24a4985830b120de1594465e5d500f24afe89e16b4e833ef68" dependencies = [ "proc-macro2", "quote", - "syn 2.0.61", + "syn 2.0.87", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.92" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" +checksum = "65fc09f10666a9f147042251e0dda9c18f166ff7de300607007e96bdebc1068d" [[package]] name = "web-sys" -version = "0.3.69" +version = "0.3.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77afa9a11836342370f4817622a2f0f418b134426d91a82dfb48f532d2ec13ef" +checksum = "f6488b90108c040df0fe62fa815cbdee25124641df01814dd7282749234c6112" dependencies = [ "js-sys", "wasm-bindgen", @@ -4084,11 +4404,11 @@ dependencies = [ [[package]] name = "whoami" -version = "1.5.1" +version = "1.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a44ab49fad634e88f55bf8f9bb3abd2f27d7204172a112c7c9987e01c1c94ea9" +checksum = "372d5b87f58ec45c384ba03563b03544dc5fadc3983e434b286913f5b4a9bb6d" dependencies = [ - "redox_syscall 0.4.1", + "redox_syscall", "wasite", ] @@ -4110,11 +4430,11 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.8" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d4cc384e1e73b93bafa6fb4f1df8c41695c8a91cf9c4c64358067d15a7b6c6b" +checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -4130,7 +4450,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e48a53791691ab099e5e2ad123536d0fff50652600abaf43bbf952894110d0be" dependencies = [ "windows-core", - "windows-targets 0.52.5", + "windows-targets 0.52.6", ] [[package]] @@ -4139,7 +4459,37 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" dependencies = [ - "windows-targets 0.52.5", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-registry" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e400001bb720a623c1c69032f8e3e4cf09984deec740f007dd2b03ec864804b0" +dependencies = [ + "windows-result", + "windows-strings", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-result" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-strings" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" +dependencies = [ + "windows-result", + "windows-targets 0.52.6", ] [[package]] @@ -4157,7 +4507,16 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" dependencies = [ - "windows-targets 0.52.5", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets 0.52.6", ] [[package]] @@ -4177,18 +4536,18 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" dependencies = [ - "windows_aarch64_gnullvm 0.52.5", - "windows_aarch64_msvc 0.52.5", - "windows_i686_gnu 0.52.5", + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", "windows_i686_gnullvm", - "windows_i686_msvc 0.52.5", - "windows_x86_64_gnu 0.52.5", - "windows_x86_64_gnullvm 0.52.5", - "windows_x86_64_msvc 0.52.5", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", ] [[package]] @@ -4199,9 +4558,9 @@ checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" [[package]] name = "windows_aarch64_gnullvm" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" [[package]] name = "windows_aarch64_msvc" @@ -4211,9 +4570,9 @@ checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" [[package]] name = "windows_aarch64_msvc" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" [[package]] name = "windows_i686_gnu" @@ -4223,15 +4582,15 @@ checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" [[package]] name = "windows_i686_gnu" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88ba073cf16d5372720ec942a8ccbf61626074c6d4dd2e745299726ce8b89670" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" [[package]] name = "windows_i686_gnullvm" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" [[package]] name = "windows_i686_msvc" @@ -4241,9 +4600,9 @@ checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" [[package]] name = "windows_i686_msvc" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" [[package]] name = "windows_x86_64_gnu" @@ -4253,9 +4612,9 @@ checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" [[package]] name = "windows_x86_64_gnu" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" [[package]] name = "windows_x86_64_gnullvm" @@ -4265,9 +4624,9 @@ checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" [[package]] name = "windows_x86_64_gnullvm" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" [[package]] name = "windows_x86_64_msvc" @@ -4277,9 +4636,9 @@ checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] name = "windows_x86_64_msvc" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "winreg" @@ -4292,14 +4651,16 @@ dependencies = [ ] [[package]] -name = "winreg" -version = "0.52.0" +name = "write16" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a277a57398d4bfa075df44f501a17cfdf8542d224f0d36095a2adc7aee4ef0a5" -dependencies = [ - "cfg-if", - "windows-sys 0.48.0", -] +checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936" + +[[package]] +name = "writeable" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" [[package]] name = "xml5ever" @@ -4319,27 +4680,95 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "66fee0b777b0f5ac1c69bb06d361268faafa61cd4682ae064a171c16c433e9e4" [[package]] -name = "zerocopy" -version = "0.7.34" +name = "yoke" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae87e3fcd617500e5d106f0380cf7b77f3c6092aae37191433159dda23cfb087" +checksum = "6c5b1314b079b0930c31e3af543d8ee1757b1951ae1e1565ec704403a7240ca5" dependencies = [ + "serde", + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28cc31741b18cb6f1d5ff12f5b7523e3d6eb0852bbbad19d73905511d9849b95" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", + "synstructure", +] + +[[package]] +name = "zerocopy" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" +dependencies = [ + "byteorder", "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.7.34" +version = "0.7.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15e934569e47891f7d9411f1a451d947a60e000ab3bd24fbb970f000387d1b3b" +checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.61", + "syn 2.0.87", +] + +[[package]] +name = "zerofrom" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91ec111ce797d0e0784a1116d0ddcdbea84322cd79e5d5ad173daeba4f93ab55" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ea7b4a3637ea8669cedf0f1fd5c286a17f3de97b8dd5a70a6c167a1730e63a5" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", + "synstructure", ] [[package]] name = "zeroize" -version = "1.7.0" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "525b4ec142c6b68a2d10f01f7bbf6755599ca3f81ea53b8431b7dd348f5fdb2d" +checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" + +[[package]] +name = "zerovec" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa2b893d79df23bfb12d5461018d408ea19dfafe76c2c7ef6d4eba614f8ff079" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", +] diff --git a/Cargo.toml b/Cargo.toml index e44ff5e..8b2fd67 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -16,21 +16,21 @@ ammonia = "4" ansi-to-html = "0.2" anyhow = "1" # apalis v0.6 fixes this issue: https://github.com/geofmureithi/apalis/issues/351 -apalis = { version = "0.6.0-rc.7", features = ["retry"] } -apalis-cron = "0.6.0-rc.7" -apalis-redis = "0.6.0-rc.7" +apalis = { version = "0.6.0-rc.8", features = ["retry"] } +apalis-cron = "0.6.0-rc.8" +apalis-redis = "0.6.0-rc.8" async-trait = "0.1" axum = { version = "0.7", features = ["form", "multipart", "query"] } axum-client-ip = "0.6" axum-extra = { version = "0.9", features = ["typed-header"] } -axum-login = "0.15" +axum-login = "0.16" base64 = "0.22" bytes = "1.4" # TODO: replace chrono with time chrono = { version = "0.4", features = ["serde"] } clap = { version = "4.4", features = ["derive", "env"] } dotenvy = "0.15" -feed-rs = "1.3" +feed-rs = "2.1" fred = "9" futures = "0.3" headers = "0.4" @@ -41,6 +41,7 @@ lettre = { version = "0.11", features = ["builder"] } maud = { git = "https://github.com/vidhanio/maud", branch = "patch-1", features = [ "axum", ] } +# upgrading this to > 6 causes infinite reloads with tower-livereload notify = "6" once_cell = "1.18" opml = "1.1" @@ -59,21 +60,21 @@ sqlx = { version = "0.7", features = [ "uuid", "ipnetwork", ] } -thiserror = "1" +thiserror = "2" time = "0.3" tokio = { version = "1", features = ["full"] } tokio-stream = { version = "0.1", features = ["sync"] } -tower = "0.4" +tower = { version = "0.5", features = ["retry"] } tower-livereload = "0.9" -tower-http = { version = "0.5", features = ["trace", "fs"] } -tower-sessions = { version = "0.12", features = ["signed"] } -tower-sessions-redis-store = "0.12" +tower-http = { version = "0.6", features = ["trace", "fs"] } +tower-sessions = { version = "0.13", features = ["signed"] } +tower-sessions-redis-store = "0.14" tracing = { version = "0.1", features = ["valuable", "attributes"] } tracing-appender = "0.2" tracing-subscriber = { version = "0.3", features = ["env-filter"] } uuid = { version = "1.4", features = ["serde"] } url = "2.4" -validator = { version = "0.18", features = ["derive"] } +validator = { version = "0.19", features = ["derive"] } [profile.dev.package.sqlx-macros] opt-level = 3 diff --git a/frontend/bun.lockb b/frontend/bun.lockb index 1524216010c890be5487170f40f2f7e005eb452f..1a588d8b77c5ddaef1b6de7e75a6d3217fd51006 100755 GIT binary patch delta 51014 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 z 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 A?f?J) delta 44329 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 diff --git a/frontend/js/index.ts b/frontend/js/index.ts index 9bf2960..ec47c46 100644 --- a/frontend/js/index.ts +++ b/frontend/js/index.ts @@ -1,10 +1,5 @@ import htmx from 'htmx.org'; -// import assets so they get named with a content hash that busts caches -// import '../css/styles.css'; - -import './localTimeController'; - declare global { interface Window { htmx: typeof htmx; @@ -13,5 +8,16 @@ declare global { window.htmx = htmx; -// eslint-disable-next-line import/first -import 'htmx.org/dist/ext/sse'; +// Wait for htmx to be fully initialized before loading extensions +document.addEventListener( + 'htmx:load', + () => { + import('htmx.org/dist/ext/sse'); + }, + { once: true } +); + +// import assets so they get named with a content hash that busts caches +// import '../css/styles.css'; + +import './localTimeController'; diff --git a/frontend/package.json b/frontend/package.json index f383784..25acf33 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -2,21 +2,21 @@ "name": "crawlnicle-frontend", "module": "js/index.ts", "devDependencies": { - "@tailwindcss/forms": "^0.5.7", - "@tailwindcss/typography": "^0.5.13", - "@typescript-eslint/eslint-plugin": "^7.8.0", - "@typescript-eslint/parser": "^7.8.0", - "bun-types": "^1.1.8", - "eslint": "^9.2.0", + "@tailwindcss/forms": "^0.5.10", + "@tailwindcss/typography": "^0.5.16", + "@typescript-eslint/eslint-plugin": "^7.18.0", + "@typescript-eslint/parser": "^7.18.0", + "bun-types": "^1.2.2", + "eslint": "^9.20.0", "eslint-config-prettier": "^9.1.0", "eslint-config-standard-with-typescript": "latest", - "eslint-plugin-import": "^2.29.1", - "eslint-plugin-n": "^17.6.0", - "eslint-plugin-prettier": "^5.1.3", - "eslint-plugin-promise": "^6.1.1", - "prettier": "^3.2.5", - "tailwindcss": "^3.4.3", - "typescript": "^5.4.5" + "eslint-plugin-import": "^2.31.0", + "eslint-plugin-n": "^17.15.1", + "eslint-plugin-prettier": "^5.2.3", + "eslint-plugin-promise": "^6.6.0", + "prettier": "^3.4.2", + "tailwindcss": "^3.4.17", + "typescript": "^5.7.3" }, "peerDependencies": { "typescript": "^5.0.0" diff --git a/frontend/tailwind.config.js b/frontend/tailwind.config.js index c5c44a6..4b1fe61 100644 --- a/frontend/tailwind.config.js +++ b/frontend/tailwind.config.js @@ -1,8 +1,8 @@ -const plugin = require('tailwindcss/plugin'); +import plugin from 'tailwindcss/plugin'; /** @type {import('tailwindcss').Config} */ export default { - content: ['./src/**/*.rs'], + content: ['../src/**/*.rs'], theme: { extend: {}, }, diff --git a/justfile b/justfile index 37cc30e..c54b42e 100755 --- a/justfile +++ b/justfile @@ -7,14 +7,22 @@ install-frontend: clean-frontend: rm -rf ./static/js/* ./static/css/* ./static/img/* -build-frontend: clean-frontend - bunx tailwindcss -i frontend/css/styles.css -o static/css/styles.css --minify +[working-directory: 'frontend'] +build-css: + bunx tailwindcss -i css/styles.css -o ../static/css/styles.css --minify + +[working-directory: 'frontend'] +build-dev-css: + bunx tailwindcss -i css/styles.css -o ../static/css/styles.css + +build-frontend: clean-frontend build-css bun build frontend/js/index.ts \ --outdir ./static \ --root ./frontend \ --entry-naming [dir]/[name]-[hash].[ext] \ --chunk-naming [dir]/[name]-[hash].[ext] \ --asset-naming [dir]/[name]-[hash].[ext] \ + --sourcemap=linked \ --minify mkdir -p static/img cp frontend/img/* static/img/ @@ -22,14 +30,14 @@ build-frontend: clean-frontend touch ./static/css/manifest.txt # create empty manifest to be overwritten by build.rs touch .frontend-built # trigger build.rs to run -build-dev-frontend: clean-frontend - bunx tailwindcss -i frontend/css/styles.css -o static/css/styles.css +build-dev-frontend: clean-frontend build-dev-css bun build frontend/js/index.ts \ --outdir ./static \ --root ./frontend \ --entry-naming [dir]/[name]-[hash].[ext] \ --chunk-naming [dir]/[name]-[hash].[ext] \ - --asset-naming [dir]/[name]-[hash].[ext] + --asset-naming [dir]/[name]-[hash].[ext] \ + --sourcemap=linked mkdir -p static/img cp frontend/img/* static/img/ touch ./static/js/manifest.txt # create empty manifest needed so binary compiles diff --git a/src/actors/importer.rs b/src/actors/importer.rs index 15dd01f..734e79a 100644 --- a/src/actors/importer.rs +++ b/src/actors/importer.rs @@ -11,7 +11,7 @@ use uuid::Uuid; use crate::actors::crawl_scheduler::{CrawlSchedulerHandle, CrawlSchedulerHandleMessage}; use crate::error::Error; -use crate::models::feed::{Feed, CreateFeed}; +use crate::models::feed::{CreateFeed, Feed}; use crate::state::Imports; use crate::uuid::Base62Uuid; diff --git a/src/bin/web.rs b/src/bin/web.rs index 489cafa..4989934 100644 --- a/src/bin/web.rs +++ b/src/bin/web.rs @@ -19,7 +19,6 @@ use dotenvy::dotenv; use fred::prelude::*; use lettre::transport::smtp::authentication::Credentials; use lettre::SmtpTransport; -use notify::Watcher; use reqwest::Client; use sqlx::postgres::PgPoolOptions; use time::Duration; @@ -27,7 +26,6 @@ use tokio::sync::watch::channel; use tokio::sync::Mutex; use tower::ServiceBuilder; use tower_http::{services::ServeDir, trace::TraceLayer}; -use tower_livereload::LiveReloadLayer; use tower_sessions::cookie::Key; use tower_sessions_redis_store::{ fred::{ @@ -193,6 +191,8 @@ async fn main() -> Result<()> { .layer(ip_source_extension); if cfg!(debug_assertions) { + use notify::Watcher; + use tower_livereload::LiveReloadLayer; debug!("starting livereload"); let livereload = LiveReloadLayer::new().request_predicate(not_htmx_predicate); let reloader = livereload.reloader(); diff --git a/tailwind.config.js b/tailwind.config.js deleted file mode 100644 index d22a7e1..0000000 --- a/tailwind.config.js +++ /dev/null @@ -1,2 +0,0 @@ -const config = require('./frontend/tailwind.config.js'); -export default config;