diff --git a/Cargo.lock b/Cargo.lock index 759e49c..b861c54 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -21,9 +21,9 @@ dependencies = [ [[package]] name = "actix-http" -version = "3.11.1" +version = "3.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44cceded2fb55f3c4b67068fa64962e2ca59614edc5b03167de9ff82ae803da0" +checksum = "48e2faa3e7418ed780cca54829d32782a4008a077230f67457caa063415e99c2" dependencies = [ "actix-codec", "actix-rt", @@ -34,10 +34,10 @@ dependencies = [ "brotli", "bytes", "bytestring", - "derive_more 2.1.1", + "derive_more", "encoding_rs", "flate2", - "foldhash 0.1.5", + "foldhash 0.2.0", "futures-core", "h2 0.3.27", "http 0.2.12", @@ -49,8 +49,8 @@ dependencies = [ "mime", "percent-encoding", "pin-project-lite", - "rand 0.9.2", - "sha1 0.10.6", + "rand 0.10.1", + "sha1 0.11.0", "smallvec", "tokio", "tokio-util", @@ -60,17 +60,18 @@ dependencies = [ [[package]] name = "actix-identity" -version = "0.4.0" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "171fe3ed055b2dd50c61967911d253d47e76e1d4308acfbf99fc7affe5ec42aa" +checksum = "810f47733f956175bd5b2ae17ae5237fa92bd1b6a4a65f646a7240dbe9ff2728" dependencies = [ "actix-service", + "actix-session", "actix-utils", "actix-web", - "futures-util", + "derive_more", + "futures-core", "serde", - "serde_json", - "time 0.3.51", + "tracing", ] [[package]] @@ -80,32 +81,52 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e01ed3140b2f8d422c68afa1ed2e85d996ea619c988ac834d255db32138655cb" dependencies = [ "quote", - "syn 2.0.106", + "syn", ] [[package]] name = "actix-multipart" -version = "0.4.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9edfb0e7663d7fe18c8d5b668c9c1bcf79176b1dcc9d4da9592503209a6bfb0" +checksum = "560e3dd4eae03837f86d1b6bf6222c508568eff36845ef5ebb3a0dff480e3f64" dependencies = [ + "actix-multipart-derive", "actix-utils", "actix-web", - "bytes", - "derive_more 0.99.20", + "derive_more", "futures-core", + "futures-util", "httparse", "local-waker", "log", + "memchr", "mime", - "twoway", + "rand 0.10.1", + "serde", + "serde_json", + "serde_plain", + "tempfile", + "tokio", +] + +[[package]] +name = "actix-multipart-derive" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8720bceaa6797fd8b2deab968d52e1120b2a8c30950939f6c8cdb42a910bc885" +dependencies = [ + "bytesize", + "darling", + "proc-macro2", + "quote", + "syn", ] [[package]] name = "actix-router" -version = "0.5.3" +version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13d324164c51f63867b57e73ba5936ea151b8a41a1d23d1031eeb9f70d0236f8" +checksum = "14f8c75c51892f18d9c46150c5ac7beb81c95f78c8b83a634d49f4ca32551fe7" dependencies = [ "bytestring", "cfg-if", @@ -153,6 +174,23 @@ dependencies = [ "pin-project-lite", ] +[[package]] +name = "actix-session" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "400c27fd4cdbe0082b7bbd29ac44a3070cbda1b2114138dc106ba39fe2f90dff" +dependencies = [ + "actix-service", + "actix-utils", + "actix-web", + "anyhow", + "derive_more", + "rand 0.9.2", + "serde", + "serde_json", + "tracing", +] + [[package]] name = "actix-tls" version = "3.4.0" @@ -164,8 +202,8 @@ dependencies = [ "actix-utils", "futures-core", "http 0.2.12", - "http 1.3.1", - "impl-more", + "http 1.4.2", + "impl-more 0.1.9", "pin-project-lite", "tokio", "tokio-rustls 0.23.4", @@ -186,9 +224,9 @@ dependencies = [ [[package]] name = "actix-web" -version = "4.11.0" +version = "4.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a597b77b5c6d6a1e1097fddde329a83665e25c5437c696a3a9a4aa514a614dea" +checksum = "df09e2d9239703dd64056359c920c7f3fba6535ec61a0059e0f44e095ffe02b4" dependencies = [ "actix-codec", "actix-http", @@ -203,12 +241,12 @@ dependencies = [ "bytestring", "cfg-if", "cookie", - "derive_more 2.1.1", + "derive_more", "encoding_rs", - "foldhash 0.1.5", + "foldhash 0.2.0", "futures-core", "futures-util", - "impl-more", + "impl-more 0.3.1", "itoa", "language-tags", "log", @@ -221,8 +259,8 @@ dependencies = [ "serde_json", "serde_urlencoded", "smallvec", - "socket2 0.5.10", - "time 0.3.51", + "socket2 0.6.4", + "time", "tracing", "url", ] @@ -236,36 +274,15 @@ dependencies = [ "actix-router", "proc-macro2", "quote", - "syn 2.0.106", -] - -[[package]] -name = "addr2line" -version = "0.25.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b5d307320b3181d6d7954e663bd7c774a838b8220fe0593c86d9fb09f498b4b" -dependencies = [ - "gimli", + "syn", ] -[[package]] -name = "adler" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" - [[package]] name = "adler2" version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" -[[package]] -name = "adler32" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aae1277d39aeec15cb388266ecc24b11c80469deae6067e17a1a7aa9e5c1f234" - [[package]] name = "aead" version = "0.5.2" @@ -278,9 +295,9 @@ dependencies = [ [[package]] name = "aead" -version = "0.6.0-rc.10" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b657e772794c6b04730ea897b66a058ccd866c16d1967da05eeeecec39043fe" +checksum = "1973cfbc1a2daf9cf550e74e1f088c28e7f7d8c1e1418fb6c9dc5184b7e84c99" dependencies = [ "crypto-common 0.2.1", "inout 0.2.2", @@ -306,6 +323,7 @@ dependencies = [ "cipher 0.5.1", "cpubits", "cpufeatures 0.3.0", + "zeroize", ] [[package]] @@ -324,48 +342,44 @@ dependencies = [ [[package]] name = "aes-gcm" -version = "0.11.0-rc.3" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e22c0c90bbe8d4f77c3ca9ddabe41a1f8382d6fc1f7cea89459d0f320371f972" +checksum = "fdf011db2e21ce0d575593d749db5554b47fed37aff429e4dc50bc91ac93a028" dependencies = [ - "aead 0.6.0-rc.10", + "aead 0.6.1", "aes 0.9.0", "cipher 0.5.1", "ctr 0.10.0", "ghash 0.6.0", "subtle", + "zeroize", ] [[package]] -name = "ahash" -version = "0.7.8" +name = "aho-corasick" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "891477e0c6a8957309ee5c45a6368af3ae14bb510732d2684ffa19af310920f9" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" dependencies = [ - "getrandom 0.2.16", - "once_cell", - "version_check", + "memchr", ] [[package]] -name = "ahash" -version = "0.8.12" +name = "aligned" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75" +checksum = "ee4508988c62edf04abd8d92897fca0c2995d907ce1dfeaf369dac3716a40685" dependencies = [ - "cfg-if", - "once_cell", - "version_check", - "zerocopy", + "as-slice", ] [[package]] -name = "aho-corasick" -version = "1.1.3" +name = "aligned-vec" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +checksum = "dc890384c8602f339876ded803c97ad529f3842aba97f6392b3dba0dd171769b" dependencies = [ - "memchr", + "equator", ] [[package]] @@ -434,7 +448,7 @@ version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc" dependencies = [ - "windows-sys 0.61.1", + "windows-sys 0.61.2", ] [[package]] @@ -445,14 +459,14 @@ checksum = "291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d" dependencies = [ "anstyle", "once_cell_polyfill", - "windows-sys 0.61.1", + "windows-sys 0.61.2", ] [[package]] name = "anyhow" -version = "1.0.100" +version = "1.0.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61" +checksum = "2a4385e2e34eb35d6b3efe798b9eb88096925d87726c0798709bf56d9ed84af3" [[package]] name = "arbitrary" @@ -469,15 +483,26 @@ version = "1.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "69f7f8c3906b62b754cd5326047894316021dcfe5a194c8ea52bdd94934a3457" +[[package]] +name = "arg_enum_proc_macro" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ae92a5119aa49cdbcf6b9f893fe4e1d98b04ccbf82ee0584ad948a44a734dea" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "argon2" -version = "0.5.3" +version = "0.6.0-rc.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c3610892ee6e0cbce8ae2700349fcf8f98adb0dbfbee85aec3c9179d29cc072" +checksum = "7af50940b73bf4e16c15c448a2b121c63f2d68e3e54b6a8731673cb4aa0cdff5" dependencies = [ "base64ct", "blake2", - "cpufeatures 0.2.17", + "cpufeatures 0.3.0", "password-hash", ] @@ -493,6 +518,15 @@ version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" +[[package]] +name = "as-slice" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "516b6b4f0e40d50dcda9365d53964ec74560ad4284da2e7fc97122cd83174516" +dependencies = [ + "stable_deref_trait", +] + [[package]] name = "askalono" version = "0.4.4" @@ -539,7 +573,7 @@ dependencies = [ "rustc-hash", "serde", "serde_derive", - "syn 2.0.106", + "syn", ] [[package]] @@ -577,7 +611,7 @@ dependencies = [ "num-traits", "rusticata-macros", "thiserror 1.0.69", - "time 0.3.51", + "time", ] [[package]] @@ -588,7 +622,7 @@ checksum = "965c2d33e53cb6b267e148a4cb0760bc01f4904c1cd4bb4002a085bb016d1490" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn", "synstructure", ] @@ -600,18 +634,17 @@ checksum = "7b18050c2cd6fe86c3a76584ef5e0baf286d038cda203eb6223df2cc413565f7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn", ] [[package]] name = "async-compression" -version = "0.3.15" +version = "0.4.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "942c7cd7ae39e91bde4820d74132e9862e62c2f386c3aa90ccf55949f5bad63a" +checksum = "e79b3f8a79cccc2898f31920fc69f304859b3bd567490f75ebf51ae1c792a9ac" dependencies = [ - "flate2", - "futures-core", - "memchr", + "compression-codecs", + "compression-core", "pin-project-lite", "tokio", ] @@ -624,7 +657,7 @@ checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn", ] [[package]] @@ -635,16 +668,7 @@ checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", -] - -[[package]] -name = "atoi" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7c57d12312ff59c811c0643f4d80830505833c9ffaebd193d819392b265be8e" -dependencies = [ - "num-traits", + "syn", ] [[package]] @@ -668,11 +692,54 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" +[[package]] +name = "av-scenechange" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f321d77c20e19b92c39e7471cf986812cbb46659d2af674adc4331ef3f18394" +dependencies = [ + "aligned", + "anyhow", + "arg_enum_proc_macro", + "arrayvec", + "log", + "num-rational", + "num-traits", + "pastey", + "rayon", + "thiserror 2.0.18", + "v_frame", + "y4m", +] + +[[package]] +name = "av1-grain" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8cfddb07216410377231960af4fcab838eaa12e013417781b78bd95ee22077f8" +dependencies = [ + "anyhow", + "arrayvec", + "log", + "nom 8.0.0", + "num-rational", + "v_frame", +] + +[[package]] +name = "avif-serialize" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7178fe5f7d460b13895ebb9dcb28a3a6216d2df2574a0806cb51b555d297f38" +dependencies = [ + "arrayvec", +] + [[package]] name = "awc" -version = "3.8.0" +version = "3.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "117ec0a30fe956b77d69efff54bce923854df0437874fe4bfa701dfdddca8d5d" +checksum = "b7dc0207013c5059ddce268fe12045bd12b2e919318ee660c891bfe297a54f1f" dependencies = [ "actix-codec", "actix-http", @@ -684,7 +751,7 @@ dependencies = [ "bytes", "cfg-if", "cookie", - "derive_more 2.1.1", + "derive_more", "futures-core", "futures-util", "h2 0.3.27", @@ -727,64 +794,47 @@ dependencies = [ [[package]] name = "axum" -version = "0.6.20" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b829e4e32b91e643de6eafe82b1d90675f5874230191a4ffbc1b336dec4d6bf" +checksum = "31b698c5f9a010f6573133b09e0de5408834d0c82f8d7475a89fc1867a71cd90" dependencies = [ - "async-trait", "axum-core", - "bitflags 1.3.2", "bytes", "futures-util", - "http 0.2.12", - "http-body 0.4.6", - "hyper 0.14.32", + "http 1.4.2", + "http-body", + "http-body-util", "itoa", "matchit", "memchr", "mime", "percent-encoding", "pin-project-lite", - "rustversion", - "serde", - "sync_wrapper 0.1.2", - "tower 0.4.13", + "serde_core", + "sync_wrapper", + "tower", "tower-layer", "tower-service", ] [[package]] name = "axum-core" -version = "0.3.4" +version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "759fa577a247914fd3f7f76d62972792636412fbfd634cd452f6a385a74d2d2c" +checksum = "08c78f31d7b1291f7ee735c1c6780ccde7785daae9a9206026862dab7d8792d1" dependencies = [ - "async-trait", "bytes", - "futures-util", - "http 0.2.12", - "http-body 0.4.6", + "futures-core", + "http 1.4.2", + "http-body", + "http-body-util", "mime", - "rustversion", + "pin-project-lite", + "sync_wrapper", "tower-layer", "tower-service", ] -[[package]] -name = "backtrace" -version = "0.3.76" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb531853791a215d7c62a30daf0dde835f381ab5de4589cfe7c649d2cbe92bd6" -dependencies = [ - "addr2line", - "cfg-if", - "libc", - "miniz_oxide 0.8.9", - "object", - "rustc-demangle", - "windows-link", -] - [[package]] name = "base16ct" version = "1.0.0" @@ -823,9 +873,9 @@ checksum = "55248b47b0caf0546f7988906588779981c43bb1bc9d0c44087278f80cdb44ba" [[package]] name = "base64urlsafedata" -version = "0.5.4" +version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42f7f6be94fa637132933fd0a68b9140bcb60e3d46164cb68e82a2bb8d102b3a" +checksum = "b08e33815c87d8cadcddb1e74ac307368a3751fbe40c961538afa21a1899f21c" dependencies = [ "base64 0.21.7", "pastey", @@ -843,13 +893,13 @@ dependencies = [ [[package]] name = "bcrypt-pbkdf" -version = "0.10.0" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6aeac2e1fe888769f34f05ac343bbef98b14d1ffb292ab69d4608b3abc86f2a2" +checksum = "144e573728da132683b9488acd528274c790e07fc06ff81ee29f9d8f8b1041e0" dependencies = [ "blowfish", - "pbkdf2 0.12.2", - "sha2 0.10.9", + "pbkdf2", + "sha2 0.11.0", ] [[package]] @@ -867,6 +917,12 @@ version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" +[[package]] +name = "bit_field" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e4b40c7323adcfc0a41c4b88143ed58346ff65a288fc144329c5c45e05d70c6" + [[package]] name = "bitflags" version = "1.3.2" @@ -882,13 +938,22 @@ dependencies = [ "serde_core", ] +[[package]] +name = "bitstream-io" +version = "4.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7eff00be299a18769011411c9def0d827e8f2d7bf0c3dbf53633147a8867fd1f" +dependencies = [ + "no_std_io2", +] + [[package]] name = "blake2" -version = "0.10.6" +version = "0.11.0-rc.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46502ad458c9a52b69d4d4d32775c788b7a1b85e8bc9d482d92250fc0e3f8efe" +checksum = "061f1a09225e328e1ffbb378d2d49923c0ca5fee19fb5ac1cc9c1e9d52b93690" dependencies = [ - "digest 0.10.7", + "digest 0.11.2", ] [[package]] @@ -899,7 +964,7 @@ checksum = "06e903a20b159e944f91ec8499fe1e55651480c541ea0a584f5d967c49ad9d99" dependencies = [ "arrayref", "arrayvec", - "constant_time_eq", + "constant_time_eq 0.3.1", ] [[package]] @@ -927,15 +992,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cdd35008169921d80bc60d3d0ab416eecb028c4cd653352907921d95084790be" dependencies = [ "hybrid-array", -] - -[[package]] -name = "block-padding" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8894febbff9f758034a5b8e12d87918f56dfc64a8e1fe757d65e29041538d93" -dependencies = [ - "generic-array 0.14.7", + "zeroize", ] [[package]] @@ -949,12 +1006,37 @@ dependencies = [ [[package]] name = "blowfish" -version = "0.9.1" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e412e2cd0f2b2d93e02543ceae7917b3c70331573df19ee046bcbc35e45e87d7" +checksum = "62ce3946557b35e71d1bbe07ec385073ce9eda05043f95de134eb578fcf1a298" dependencies = [ "byteorder", - "cipher 0.4.4", + "cipher 0.5.1", +] + +[[package]] +name = "bon" +version = "3.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a602c73c7b0148ec6d12af6fd5cc7a46e2eacc8878271a999abac56eed12f561" +dependencies = [ + "bon-macros", + "rustversion", +] + +[[package]] +name = "bon-macros" +version = "3.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6dee98b0db6a962de883bf5d20362dee4d7ca0d12fe39a7c6c73c844e1cd7c1f" +dependencies = [ + "darling", + "ident_case", + "prettyplease", + "proc-macro2", + "quote", + "rustversion", + "syn", ] [[package]] @@ -980,15 +1062,21 @@ dependencies = [ [[package]] name = "bstr" -version = "1.12.1" +version = "1.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63044e1ae8e69f3b5a92c736ca6269b8d12fa7efe39bf34ddb06d102cf0e2cab" +checksum = "5cee35f73844aa3014bb606320a6c1f010249dbdf43342fe54b5a4f6a8ed4b79" dependencies = [ "memchr", "regex-automata", - "serde", + "serde_core", ] +[[package]] +name = "built" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c0e531d93d39c34eef561e929e8a7f86d77a5af08aac4f6d6e39976c51858e9" + [[package]] name = "bumpalo" version = "3.19.0" @@ -1007,11 +1095,17 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" +[[package]] +name = "byteorder-lite" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f1fe948ff07f4bd06c30984e69f5b4899c516a3ef74f34df92a2df2ab535495" + [[package]] name = "bytes" -version = "1.11.1" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33" +checksum = "8ae3f5d315924270530207e2a68396c3cc547f6dca3fbdca317cfb1a51edb593" [[package]] name = "bytesize" @@ -1028,15 +1122,6 @@ dependencies = [ "bytes", ] -[[package]] -name = "cbc" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26b52a9543ae338f279b96b0b9fed9c8093744685043739079ce85cd58f289a6" -dependencies = [ - "cipher 0.4.4", -] - [[package]] name = "cbc" version = "0.2.0" @@ -1058,6 +1143,12 @@ dependencies = [ "shlex", ] +[[package]] +name = "cesu8" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" + [[package]] name = "cfb" version = "0.7.3" @@ -1081,17 +1172,6 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" -[[package]] -name = "chacha20" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3613f74bd2eac03dad61bd53dbe620703d4371614fe0bc3b9f04dd36fe4e818" -dependencies = [ - "cfg-if", - "cipher 0.4.4", - "cpufeatures 0.2.17", -] - [[package]] name = "chacha20" version = "0.10.0" @@ -1099,8 +1179,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6f8d983286843e49675a4b7a2d174efe136dc93a18d69130dd18198a6c167601" dependencies = [ "cfg-if", + "cipher 0.5.1", "cpufeatures 0.3.0", "rand_core 0.10.1", + "zeroize", ] [[package]] @@ -1158,6 +1240,7 @@ dependencies = [ "block-buffer 0.12.0", "crypto-common 0.2.1", "inout 0.2.2", + "zeroize", ] [[package]] @@ -1198,10 +1281,10 @@ version = "4.5.55" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a92793da1a46a5f2a02a6f4c46c6496b28c43638adea8306fcb0caa1634f24e5" dependencies = [ - "heck 0.5.0", + "heck", "proc-macro2", "quote", - "syn 2.0.106", + "syn", ] [[package]] @@ -1254,46 +1337,77 @@ dependencies = [ ] [[package]] -name = "concurrent-queue" -version = "2.5.0" +name = "combine" +version = "4.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" +checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd" dependencies = [ - "crossbeam-utils", + "bytes", + "memchr", +] + +[[package]] +name = "compression-codecs" +version = "0.4.38" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce2548391e9c1929c21bf6aa2680af86fe4c1b33e6cea9ac1cfeec0bd11218cf" +dependencies = [ + "compression-core", + "flate2", + "memchr", +] + +[[package]] +name = "compression-core" +version = "0.4.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc14f565cf027a105f7a44ccf9e5b424348421a1d8952a8fc9d499d313107789" + +[[package]] +name = "concurrent-queue" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" +dependencies = [ + "crossbeam-utils", ] [[package]] name = "console-api" -version = "0.5.0" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2895653b4d9f1538a83970077cb01dfc77a4810524e51a110944688e916b18e" +checksum = "e8599749b6667e2f0c910c1d0dff6901163ff698a52d5a39720f61b5be4b20d3" dependencies = [ - "prost 0.11.9", + "futures-core", + "prost", "prost-types", - "tonic 0.9.2", + "tonic", + "tonic-prost", "tracing-core", ] [[package]] name = "console-subscriber" -version = "0.1.10" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4cf42660ac07fcebed809cfe561dd8730bcd35b075215e6479c516bcd0d11cb" +checksum = "fb4915b7d8dd960457a1b6c380114c2944f728e7c65294ab247ae6b6f1f37592" dependencies = [ "console-api", "crossbeam-channel", "crossbeam-utils", - "futures", + "futures-task", "hdrhistogram", "humantime", - "parking_lot 0.12.4", + "hyper-util", + "parking_lot", + "prost", "prost-types", "serde", "serde_json", "thread_local", "tokio", "tokio-stream", - "tonic 0.9.2", + "tonic", "tracing", "tracing-core", "tracing-subscriber", @@ -1330,10 +1444,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6" [[package]] -name = "convert_case" -version = "0.4.0" +name = "constant_time_eq" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" +checksum = "3d52eff69cd5e647efe296129160853a42795992097e8af39800e1060caeea9b" [[package]] name = "convert_case" @@ -1367,7 +1481,7 @@ dependencies = [ "rand 0.8.5", "sha2 0.10.9", "subtle", - "time 0.3.51", + "time", "version_check", ] @@ -1436,6 +1550,16 @@ version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5" +[[package]] +name = "crc-fast" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e75b2483e97a5a7da73ac68a05b629f9c53cff58d8ed1c77866079e18b00dba5" +dependencies = [ + "digest 0.10.7", + "spin 0.10.0", +] + [[package]] name = "crc32fast" version = "1.5.0" @@ -1445,15 +1569,22 @@ dependencies = [ "cfg-if", ] +[[package]] +name = "critical-section" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "790eea4361631c5e7d22598ecd5723ff611904e3344ce8720784c93e3d83d40b" + [[package]] name = "cron" -version = "0.12.1" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f8c3e73077b4b4a6ab1ea5047c37c57aee77657bc8ecd6f29b0af082d0b0c07" +checksum = "a5dcd6f69605c2956916ce24e8af637b754964c9a83f4662d3a2361654cdba09" dependencies = [ "chrono", - "nom 7.1.3", "once_cell", + "phf", + "winnow 0.7.13", ] [[package]] @@ -1507,9 +1638,9 @@ checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" [[package]] name = "crypto-bigint" -version = "0.7.0-rc.28" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96dacf199529fb801ae62a9aafdc01b189e9504c0d1ee1512a4c16bcd8666a93" +checksum = "1a52aa3fcda4e6302a9f48734f234d35d4721b96f8fe07d073f07ce9df4f0271" dependencies = [ "cpubits", "ctutils", @@ -1546,12 +1677,11 @@ dependencies = [ [[package]] name = "crypto-primes" -version = "0.7.0-pre.9" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6081ce8b60c0e533e2bba42771b94eb6149052115f4179744d5779883dc98583" +checksum = "3633a51a39c69ebbaa4feaa694bd83d241e4093901c84a0963b19d9bb3f0cf8f" dependencies = [ "crypto-bigint", - "libm", "rand_core 0.10.1", ] @@ -1585,12 +1715,12 @@ dependencies = [ [[package]] name = "curve25519-dalek" -version = "5.0.0-pre.6" +version = "5.0.0-rc.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "335f1947f241137a14106b6f5acc5918a5ede29c9d71d3f2cb1678d5075d9fc3" +checksum = "4f359e08ca85e7bd759e1fd933ff2bccd81864c60a8fba0e259c7f822b0924bf" dependencies = [ "cfg-if", - "cpufeatures 0.2.17", + "cpufeatures 0.3.0", "curve25519-dalek-derive", "digest 0.11.2", "fiat-crypto", @@ -1607,7 +1737,41 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn", +] + +[[package]] +name = "darling" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25ae13da2f202d56bd7f91c25fba009e7717a1e4a1cc98a76d844b65ae912e9d" +dependencies = [ + "darling_core", + "darling_macro", +] + +[[package]] +name = "darling_core" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9865a50f7c335f53564bb694ef660825eb8610e0a53d3e11bf1b0d3df31e03b0" +dependencies = [ + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn", +] + +[[package]] +name = "darling_macro" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3984ec7bd6cfa798e62b4a642426a5be0e68f9401cfc2a01e3fa9ea2fcdb8d" +dependencies = [ + "darling_core", + "quote", + "syn", ] [[package]] @@ -1621,7 +1785,7 @@ dependencies = [ "hashbrown 0.14.5", "lock_api", "once_cell", - "parking_lot_core 0.9.11", + "parking_lot_core", "serde", ] @@ -1631,16 +1795,6 @@ version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a4ae5f15dda3c708c0ade84bfee31ccab44a3da4f88015ed22f63732abe300c8" -[[package]] -name = "deflate" -version = "0.8.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73770f8e1fe7d64df17ca66ad28994a0a623ea497fa69486e14984e715c5d174" -dependencies = [ - "adler32", - "byteorder", -] - [[package]] name = "delegate" version = "0.13.5" @@ -1649,7 +1803,7 @@ checksum = "780eb241654bf097afb00fc5f054a09b687dad862e485fdcf8399bb056565370" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn", ] [[package]] @@ -1705,20 +1859,7 @@ checksum = "1e567bd82dcff979e4b03460c307b3cdc9e96fde3d73bed1496d2bc75d9dd62a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", -] - -[[package]] -name = "derive_more" -version = "0.99.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6edb4b64a43d977b8e99788fe3a04d483834fba1215a7e02caa415b626497f7f" -dependencies = [ - "convert_case 0.4.0", - "proc-macro2", - "quote", - "rustc_version", - "syn 2.0.106", + "syn", ] [[package]] @@ -1740,10 +1881,19 @@ dependencies = [ "proc-macro2", "quote", "rustc_version", - "syn 2.0.106", + "syn", "unicode-xid", ] +[[package]] +name = "des" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "916a94e407b54f9034d71dd748234cd1e516ced6284009906ae246f177eafe5a" +dependencies = [ + "cipher 0.5.1", +] + [[package]] name = "deunicode" version = "1.6.2" @@ -1784,23 +1934,13 @@ dependencies = [ ] [[package]] -name = "dirs" -version = "4.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca3aa72a6f96ea37bbc5aa912f6788242832f75369bdfdadcb0e38423f100059" -dependencies = [ - "dirs-sys", -] - -[[package]] -name = "dirs-sys" -version = "0.3.7" +name = "dispatch2" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b1d1d91c932ef41c0f2663aa8b0ca0342d444d842c06914aa0a7e352d0bada6" +checksum = "1e0e367e4e7da84520dedcac1901e4da967309406d1e51017ae1abfb97adbd38" dependencies = [ - "libc", - "redox_users", - "winapi", + "bitflags 2.11.1", + "objc2", ] [[package]] @@ -1811,7 +1951,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn", ] [[package]] @@ -1822,7 +1962,7 @@ checksum = "e6bf3a6a5a5068b83e2bc1251735e040c3c0d54bc0bb829bec86d76eb1197689" dependencies = [ "chrono", "jiff", - "time 0.3.51", + "time", ] [[package]] @@ -1839,34 +1979,34 @@ checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" [[package]] name = "ecdsa" -version = "0.17.0-rc.16" +version = "0.17.0-rc.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91bbdd377139884fafcad8dc43a760a3e1e681aa26db910257fa6535b70e1829" +checksum = "54fb064faabbee66e1fc8e5c5a9458d4269dc2d8b638fe86a425adb2510d1a96" dependencies = [ "der 0.8.0", "digest 0.11.2", "elliptic-curve", "rfc6979", "signature 3.0.0", - "spki 0.8.0-rc.4", + "spki 0.8.0", "zeroize", ] [[package]] name = "ed25519" -version = "3.0.0-rc.4" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6e914c7c52decb085cea910552e24c63ac019e3ab8bf001ff736da9a9d9d890" +checksum = "29fcf32e6c73d1079f83ab4d782de2d81620346a5f38c6237a86a22f8368980a" dependencies = [ - "pkcs8 0.11.0-rc.11", + "pkcs8 0.11.0", "signature 3.0.0", ] [[package]] name = "ed25519-dalek" -version = "3.0.0-pre.6" +version = "3.0.0-rc.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "053618a4c3d3bc24f188aa660ae75a46eeab74ef07fb415c61431e5e7cd4749b" +checksum = "b011170fe4f04665565b4110afef66774fe9ffff278f3eb5b81cc73d26e27d60" dependencies = [ "curve25519-dalek", "ed25519", @@ -1880,31 +2020,31 @@ dependencies = [ [[package]] name = "either" -version = "1.15.0" +version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" +checksum = "91622ff5e7162018101f2fea40d6ebf4a78bbe5a49736a2020649edf9693679e" dependencies = [ "serde", ] [[package]] name = "elliptic-curve" -version = "0.14.0-rc.28" +version = "0.14.0-rc.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bde7860544606d222fd6bd6d9f9a0773321bf78072a637e1d560a058c0031978" +checksum = "102d3643d30dd8b559613c5cced68317199597fffb278cdc88daa2ef7fafc935" dependencies = [ "base16ct", "crypto-bigint", "crypto-common 0.2.1", "digest 0.11.2", + "ff", + "group", "hkdf 0.13.0", "hybrid-array", "once_cell", "pem-rfc7468 1.0.0", - "pkcs8 0.11.0-rc.11", + "pkcs8 0.11.0", "rand_core 0.10.1", - "rustcrypto-ff", - "rustcrypto-group", "sec1", "subtle", "zeroize", @@ -1912,9 +2052,9 @@ dependencies = [ [[package]] name = "email-encoding" -version = "0.2.1" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a87260449b06739ee78d6281c68d2a0ff3e3af64a78df63d3a1aeb3c06997c8a" +checksum = "9298e6504d9b9e780ed3f7dfd43a61be8cd0e09eb07f7706a945b0072b6670b6" dependencies = [ "base64 0.22.1", "memchr", @@ -1945,47 +2085,35 @@ dependencies = [ ] [[package]] -name = "enum-as-inner" -version = "0.6.1" +name = "enum_dispatch" +version = "0.3.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1e6a265c649f3f5979b601d26f1d05ada116434c87741c9493cb56218f76cbc" +checksum = "aa18ce2bc66555b3218614519ac839ddb759a7d6720732f979ef8d13be147ecd" dependencies = [ - "heck 0.5.0", + "once_cell", "proc-macro2", "quote", - "syn 2.0.106", -] - -[[package]] -name = "enum-iterator" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2953d1df47ac0eb70086ccabf0275aa8da8591a28bd358ee2b52bd9f9e3ff9e9" -dependencies = [ - "enum-iterator-derive", + "syn", ] [[package]] -name = "enum-iterator-derive" -version = "0.8.1" +name = "equator" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8958699f9359f0b04e691a13850d48b7de329138023876d07cbd024c2c820598" +checksum = "4711b213838dfee0117e3be6ac926007d7f433d7bbe33595975d4190cb07e6fc" dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", + "equator-macro", ] [[package]] -name = "enum_dispatch" -version = "0.3.13" +name = "equator-macro" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa18ce2bc66555b3218614519ac839ddb759a7d6720732f979ef8d13be147ecd" +checksum = "44f23cf4b44bfce11a86ace86f8a73ffdec849c9fd00a386a53d278bd9e81fb3" dependencies = [ - "once_cell", "proc-macro2", "quote", - "syn 2.0.106", + "syn", ] [[package]] @@ -2012,7 +2140,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" dependencies = [ "libc", - "windows-sys 0.61.1", + "windows-sys 0.61.2", ] [[package]] @@ -2027,10 +2155,14 @@ dependencies = [ ] [[package]] -name = "event-listener" -version = "2.5.3" +name = "etcetera" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" +checksum = "de48cc4d1c1d97a20fd819def54b890cadde72ed3ad0c614822a0a433361be96" +dependencies = [ + "cfg-if", + "windows-sys 0.61.2", +] [[package]] name = "event-listener" @@ -2043,6 +2175,21 @@ dependencies = [ "pin-project-lite", ] +[[package]] +name = "exr" +version = "1.74.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4300e043a56aa2cb633c01af81ca8f699a321879a7854d3896a0ba89056363be" +dependencies = [ + "bit_field", + "half", + "lebe", + "miniz_oxide", + "rayon-core", + "smallvec", + "zune-inflate", +] + [[package]] name = "fancy-regex" version = "0.17.0" @@ -2056,8 +2203,8 @@ dependencies = [ [[package]] name = "fang" -version = "0.11.0-rc1" -source = "git+https://github.com/ayrat555/fang?rev=f7b5cac#f7b5cacd163cbf052c4396da01ddc01e44f7430e" +version = "0.11.0-rc2" +source = "git+https://github.com/rustworthy/fang?rev=187a10be2024b8f78c0a85af32294aafd183e248#187a10be2024b8f78c0a85af32294aafd183e248" dependencies = [ "async-recursion", "async-trait", @@ -2068,12 +2215,13 @@ dependencies = [ "serde", "serde_derive", "serde_json", - "sha2 0.10.9", - "sqlx 0.6.3", - "thiserror 1.0.69", + "sha2 0.11.0", + "sqlx 0.8.6", + "thiserror 2.0.18", "tokio", "typed-builder", "typetag", + "url", "uuid", ] @@ -2089,18 +2237,34 @@ dependencies = [ [[package]] name = "fastrand" -version = "1.9.0" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" + +[[package]] +name = "fax" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "caf1079563223d5d59d83c85886a56e586cfd5c1a26292e971a0fa266531ac5a" + +[[package]] +name = "fdeflate" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be" +checksum = "1e6853b52649d4ac5c0bd02320cddc5ba956bdb407c4b75a2c6b75bf51500f8c" dependencies = [ - "instant", + "simd-adler32", ] [[package]] -name = "fastrand" -version = "2.3.0" +name = "ff" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" +checksum = "a1f686ab92a9fb0eaf188f6c6c87b89490baa6fdb0db4544ba4dc47f7942489f" +dependencies = [ + "rand_core 0.10.1", + "subtle", +] [[package]] name = "fiat-crypto" @@ -2128,12 +2292,13 @@ checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" [[package]] name = "flate2" -version = "1.1.2" +version = "1.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a3d7db9596fecd151c5f638c0ee5d5bd487b6e0ea232e5dc96d5250f6f94b1d" +checksum = "843fba2746e448b37e26a819579957415c8cef339bf08564fe8b7ddbd959573c" dependencies = [ "crc32fast", - "miniz_oxide 0.8.9", + "miniz_oxide", + "zlib-rs 0.6.4", ] [[package]] @@ -2147,6 +2312,17 @@ dependencies = [ "spin 0.9.8", ] +[[package]] +name = "flume" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e139bc46ca777eb5efaf62df0ab8cc5fd400866427e56c68b22e414e53bd3be" +dependencies = [ + "futures-core", + "futures-sink", + "spin 0.9.8", +] + [[package]] name = "fnv" version = "1.0.7" @@ -2207,9 +2383,9 @@ checksum = "42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c" [[package]] name = "futures" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" +checksum = "8b147ee9d1f6d097cef9ce628cd2ee62288d963e16fb287bd9286455b241382d" dependencies = [ "futures-channel", "futures-core", @@ -2222,9 +2398,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" +checksum = "07bbe89c50d7a535e539b8c17bc0b49bdb77747034daa8087407d655f3f7cc1d" dependencies = [ "futures-core", "futures-sink", @@ -2232,32 +2408,21 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" +checksum = "7e3450815272ef58cec6d564423f6e755e25379b217b0bc688e295ba24df6b1d" [[package]] name = "futures-executor" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" +checksum = "baf29c38818342a3b26b5b923639e7b1f4a61fc5e76102d4b1981c6dc7a7579d" dependencies = [ "futures-core", "futures-task", "futures-util", ] -[[package]] -name = "futures-intrusive" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a604f7a68fbf8103337523b1fadc8ade7361ee3f112f7c680ad179651616aed5" -dependencies = [ - "futures-core", - "lock_api", - "parking_lot 0.11.2", -] - [[package]] name = "futures-intrusive" version = "0.5.0" @@ -2266,14 +2431,14 @@ checksum = "1d930c203dd0b6ff06e0201a4a2fe9149b43c684fd4420555b26d21b1a02956f" dependencies = [ "futures-core", "lock_api", - "parking_lot 0.12.4", + "parking_lot", ] [[package]] name = "futures-io" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" +checksum = "cecba35d7ad927e23624b22ad55235f2239cfa44fd10428eecbeba6d6a717718" [[package]] name = "futures-lite" @@ -2281,7 +2446,7 @@ version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f78e10609fe0e0b3f4157ffab1876319b5b0db102a2c60dc4626306dc46b44ad" dependencies = [ - "fastrand 2.3.0", + "fastrand", "futures-core", "futures-io", "parking", @@ -2301,32 +2466,32 @@ dependencies = [ [[package]] name = "futures-macro" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" +checksum = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn", ] [[package]] name = "futures-sink" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" +checksum = "c39754e157331b013978ec91992bde1ac089843443c49cbc7f46150b0fad0893" [[package]] name = "futures-task" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" +checksum = "037711b3d59c33004d3856fbdc83b99d4ff37a24768fa1be9ce3538a1cde4393" [[package]] name = "futures-util" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" +checksum = "389ca41296e6190b48053de0321d02a77f32f8a5d2461dd38762c0593805c6d6" dependencies = [ "futures-channel", "futures-core", @@ -2336,7 +2501,6 @@ dependencies = [ "futures-task", "memchr", "pin-project-lite", - "pin-utils", "slab", ] @@ -2406,23 +2570,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0de51e6874e94e7bf76d726fc5d13ba782deca734ff60d5bb2fb2607c7406555" dependencies = [ "cfg-if", + "js-sys", "libc", "r-efi 6.0.0", "rand_core 0.10.1", "wasip2", "wasip3", -] - -[[package]] -name = "getset" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cf0fc11e47561d47397154977bc219f4cf809b2974facc3ccb3b89e2436f912" -dependencies = [ - "proc-macro-error2", - "proc-macro2", - "quote", - "syn 2.0.106", + "wasm-bindgen", ] [[package]] @@ -2446,20 +2600,14 @@ dependencies = [ [[package]] name = "gif" -version = "0.11.4" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3edd93c6756b4dfaf2709eafcc345ba2636565295c198a9cfbf75fa5e3e00b06" +checksum = "ee8cfcc411d9adbbaba82fb72661cc1bcca13e8bba98b364e62b2dba8f960159" dependencies = [ "color_quant", "weezl", ] -[[package]] -name = "gimli" -version = "0.32.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e629b9b98ef3dd8afe6ca2bd0f89306cec16d43d907889945bc5d6687f2f13c7" - [[package]] name = "git2" version = "0.20.2" @@ -2481,6 +2629,7 @@ version = "0.0.0" dependencies = [ "actix-identity", "actix-multipart", + "actix-session", "actix-web", "anyhow", "askalono", @@ -2489,12 +2638,12 @@ dependencies = [ "async-recursion", "async-trait", "awc", - "base64 0.13.1", + "base64 0.22.1", "bstr", "bytes", "chrono", "console-subscriber", - "derive_more 2.1.1", + "derive_more", "dos-date-time", "either", "fang", @@ -2507,11 +2656,12 @@ dependencies = [ "gitarena-macros", "gix", "hex", - "http 1.3.1", + "hickory-resolver", + "http 1.4.2", "image", "infer", "ipnetwork", - "itertools 0.10.5", + "itertools 0.15.0", "lettre", "linguist", "log", @@ -2536,10 +2686,10 @@ dependencies = [ "serde", "serde_cbor_2", "serde_json", - "sha2 0.10.9", - "sqlx 0.8.6", + "sha2 0.11.0", + "sqlx 0.9.0", "sysinfo", - "time 0.3.51", + "time", "tokei", "tokio", "tokio-tar", @@ -2548,12 +2698,11 @@ dependencies = [ "tracing-opentelemetry", "tracing-subscriber", "tracing-unwrap", - "trust-dns-resolver", "url", "utoipa", "utoipa-rapidoc", "uuid", - "vergen", + "vergen-gitcl", "webauthn-rs", "zip", ] @@ -2563,7 +2712,7 @@ name = "gitarena-issues" version = "0.0.0" dependencies = [ "anyhow", - "base64 0.13.1", + "base64 0.22.1", "chrono", "gix", "hex", @@ -2581,10 +2730,10 @@ dependencies = [ name = "gitarena-macros" version = "0.0.0" dependencies = [ - "proc-macro-error", + "proc-macro-error2", "proc-macro2", "quote", - "syn 1.0.109", + "syn", ] [[package]] @@ -2641,7 +2790,7 @@ dependencies = [ "gix-worktree", "gix-worktree-state", "gix-worktree-stream", - "parking_lot 0.12.4", + "parking_lot", "regex", "signal-hook", "smallvec", @@ -2896,7 +3045,7 @@ dependencies = [ "libc", "libz-rs-sys", "once_cell", - "parking_lot 0.12.4", + "parking_lot", "prodash", "thiserror 2.0.18", "walkdir", @@ -2930,7 +3079,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f1ecd896258cdc5ccd94d18386d17906b8de265ad2ecf68e3bea6b007f6a28f" dependencies = [ "bstr", - "fastrand 2.3.0", + "fastrand", "gix-features", "gix-path", "gix-utils", @@ -2969,7 +3118,7 @@ checksum = "a27d4a3ea9640da504a2657fef3419c517fd71f1767ad8935298bcc805edd195" dependencies = [ "gix-hash", "hashbrown 0.16.0", - "parking_lot 0.12.4", + "parking_lot", ] [[package]] @@ -3089,7 +3238,7 @@ dependencies = [ "gix-pack", "gix-path", "gix-quote", - "parking_lot 0.12.4", + "parking_lot", "tempfile", "thiserror 2.0.18", ] @@ -3109,7 +3258,7 @@ dependencies = [ "gix-path", "gix-tempfile", "memmap2", - "parking_lot 0.12.4", + "parking_lot", "smallvec", "thiserror 2.0.18", "uluru", @@ -3165,7 +3314,7 @@ checksum = "868e6516dfa16fdcbc5f8c935167d085f2ae65ccd4c9476a4319579d12a69d8d" dependencies = [ "gix-command", "gix-config-value", - "parking_lot 0.12.4", + "parking_lot", "rustix", "thiserror 2.0.18", ] @@ -3288,7 +3437,7 @@ dependencies = [ "bitflags 2.11.1", "gix-path", "libc", - "windows-sys 0.61.1", + "windows-sys 0.61.2", ] [[package]] @@ -3350,7 +3499,7 @@ dependencies = [ "dashmap", "gix-fs", "libc", - "parking_lot 0.12.4", + "parking_lot", "signal-hook", "signal-hook-registry", "tempfile", @@ -3419,7 +3568,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "befcdbdfb1238d2854591f760a48711bed85e72d80a10e8f2f93f656746ef7c5" dependencies = [ "bstr", - "fastrand 2.3.0", + "fastrand", "unicode-normalization", ] @@ -3484,7 +3633,7 @@ dependencies = [ "gix-object", "gix-path", "gix-traverse", - "parking_lot 0.12.4", + "parking_lot", "thiserror 2.0.18", ] @@ -3542,6 +3691,17 @@ dependencies = [ "memmap2", ] +[[package]] +name = "group" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fd1a1c7a5206c5b7a3f5a0d7ccd3ff85d0c8f5133d62a02680255b0004af5f4" +dependencies = [ + "ff", + "rand_core 0.10.1", + "subtle", +] + [[package]] name = "h2" version = "0.3.27" @@ -3554,7 +3714,7 @@ dependencies = [ "futures-sink", "futures-util", "http 0.2.12", - "indexmap 2.11.4", + "indexmap", "slab", "tokio", "tokio-util", @@ -3572,8 +3732,8 @@ dependencies = [ "fnv", "futures-core", "futures-sink", - "http 1.3.1", - "indexmap 2.11.4", + "http 1.4.2", + "indexmap", "slab", "tokio", "tokio-util", @@ -3600,21 +3760,11 @@ dependencies = [ "byteorder", ] -[[package]] -name = "hashbrown" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" - [[package]] name = "hashbrown" version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" -dependencies = [ - "ahash 0.8.12", - "allocator-api2", -] [[package]] name = "hashbrown" @@ -3640,20 +3790,20 @@ dependencies = [ [[package]] name = "hashlink" -version = "0.8.4" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8094feaf31ff591f651a2664fb9cfd92bba7a60ce3197265e9482ebe753c8f7" +checksum = "7382cf6263419f2d8df38c55d7da83da5c18aef87fc7a7fc1fb1e344edfe14c1" dependencies = [ - "hashbrown 0.14.5", + "hashbrown 0.15.5", ] [[package]] name = "hashlink" -version = "0.10.0" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7382cf6263419f2d8df38c55d7da83da5c18aef87fc7a7fc1fb1e344edfe14c1" +checksum = "824e001ac4f3012dd16a264bec811403a67ca9deb6c102fc5049b32c4574b35f" dependencies = [ - "hashbrown 0.15.5", + "hashbrown 0.16.0", ] [[package]] @@ -3681,18 +3831,9 @@ dependencies = [ [[package]] name = "heck" -version = "0.4.1" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" -dependencies = [ - "unicode-segmentation", -] - -[[package]] -name = "heck" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] name = "hermit-abi" @@ -3712,6 +3853,85 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e712f64ec3850b98572bffac52e2c6f282b29fe6c5fa6d42334b30be438d95c1" +[[package]] +name = "hickory-net" +version = "0.26.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2295ed2f9c31e471e1428a8f88a3f0e1f4b27c15049592138d1eebe9c35b183" +dependencies = [ + "async-trait", + "bitflags 2.11.1", + "cfg-if", + "data-encoding", + "futures-channel", + "futures-io", + "futures-util", + "hickory-proto", + "idna", + "ipnet", + "jni 0.22.4", + "lru-cache", + "parking_lot", + "rand 0.10.1", + "ring 0.17.14", + "rustls-pki-types", + "thiserror 2.0.18", + "time", + "tinyvec", + "tokio", + "tracing", + "url", +] + +[[package]] +name = "hickory-proto" +version = "0.26.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bab31817bfb44672a252e97fe81cd0c18d1b2cf892108922f6818820df8c643" +dependencies = [ + "bitflags 2.11.1", + "data-encoding", + "idna", + "ipnet", + "jni 0.22.4", + "once_cell", + "prefix-trie", + "rand 0.10.1", + "ring 0.17.14", + "rustls-pki-types", + "thiserror 2.0.18", + "time", + "tinyvec", + "tracing", + "url", +] + +[[package]] +name = "hickory-resolver" +version = "0.26.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0d58d28879ceecde6607729660c2667a081ccdc082e082675042793960f178c" +dependencies = [ + "cfg-if", + "futures-util", + "hickory-net", + "hickory-proto", + "ipconfig", + "ipnet", + "jni 0.22.4", + "moka", + "ndk-context", + "once_cell", + "parking_lot", + "rand 0.10.1", + "resolv-conf", + "smallvec", + "system-configuration", + "thiserror 2.0.18", + "tokio", + "tracing", +] + [[package]] name = "hkdf" version = "0.12.4" @@ -3759,13 +3979,13 @@ dependencies = [ [[package]] name = "hostname" -version = "0.3.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c731c3e10504cc8ed35cfe2f1db4c9274c3d35fa486e3b31df46f068ef3e867" +checksum = "617aaa3557aef3810a6369d0a99fac8a080891b68bd9f9812a1eeda0c0730cbd" dependencies = [ + "cfg-if", "libc", - "match_cfg", - "winapi", + "windows-link", ] [[package]] @@ -3781,26 +4001,14 @@ dependencies = [ [[package]] name = "http" -version = "1.3.1" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4a85d31aea989eead29a3aaf9e1115a180df8282431156e533de47660892565" +checksum = "6970f50e31d6fc17d3fa27329444bfa74e196cf62e95052a3f6fee181dba6425" dependencies = [ "bytes", - "fnv", "itoa", ] -[[package]] -name = "http-body" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" -dependencies = [ - "bytes", - "http 0.2.12", - "pin-project-lite", -] - [[package]] name = "http-body" version = "1.0.1" @@ -3808,7 +4016,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" dependencies = [ "bytes", - "http 1.3.1", + "http 1.4.2", ] [[package]] @@ -3819,8 +4027,8 @@ checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" dependencies = [ "bytes", "futures-core", - "http 1.3.1", - "http-body 1.0.1", + "http 1.4.2", + "http-body", "pin-project-lite", ] @@ -3859,9 +4067,9 @@ checksum = "135b12329e5e3ce057a9f972339ea52bc954fe1e9358ef27f95e89716fbc5424" [[package]] name = "hybrid-array" -version = "0.4.11" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08d46837a0ed51fe95bd3b05de33cd64a1ee88fc797477ca48446872504507c5" +checksum = "818356c5132c1fede50f837ca96afbe78ff42413047f4abb886217845e1b6c8c" dependencies = [ "ctutils", "subtle", @@ -3869,30 +4077,6 @@ dependencies = [ "zeroize", ] -[[package]] -name = "hyper" -version = "0.14.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41dfc780fdec9373c01bae43289ea34c972e40ee3c9f6b3c8801a35f35586ce7" -dependencies = [ - "bytes", - "futures-channel", - "futures-core", - "futures-util", - "h2 0.3.27", - "http 0.2.12", - "http-body 0.4.6", - "httparse", - "httpdate", - "itoa", - "pin-project-lite", - "socket2 0.5.10", - "tokio", - "tower-service", - "tracing", - "want", -] - [[package]] name = "hyper" version = "1.9.0" @@ -3904,9 +4088,10 @@ dependencies = [ "futures-channel", "futures-core", "h2 0.4.14", - "http 1.3.1", - "http-body 1.0.1", + "http 1.4.2", + "http-body", "httparse", + "httpdate", "itoa", "pin-project-lite", "smallvec", @@ -3920,36 +4105,23 @@ version = "0.27.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "33ca68d021ef39cf6463ab54c1d0f5daf03377b70561305bb89a8f83aab66e0f" dependencies = [ - "http 1.3.1", - "hyper 1.9.0", + "http 1.4.2", + "hyper", "hyper-util", "rustls 0.23.35", - "rustls-native-certs", "tokio", "tokio-rustls 0.26.4", "tower-service", "webpki-roots 1.0.4", ] -[[package]] -name = "hyper-timeout" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbb958482e8c7be4bc3cf272a766a2b0bf1a6755e7a6ae777f017a31d11b13b1" -dependencies = [ - "hyper 0.14.32", - "pin-project-lite", - "tokio", - "tokio-io-timeout", -] - [[package]] name = "hyper-timeout" version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2b90d566bffbce6a75bd8b09a05aa8c2cb1fabb6cb348f8840c9e4c90a0d83b0" dependencies = [ - "hyper 1.9.0", + "hyper", "hyper-util", "pin-project-lite", "tokio", @@ -3966,14 +4138,14 @@ dependencies = [ "bytes", "futures-channel", "futures-util", - "http 1.3.1", - "http-body 1.0.1", - "hyper 1.9.0", + "http 1.4.2", + "http-body", + "hyper", "ipnet", "libc", "percent-encoding", "pin-project-lite", - "socket2 0.6.0", + "socket2 0.6.4", "tokio", "tower-service", "tracing", @@ -4096,24 +4268,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3d3067d79b975e8844ca9eb072e16b31c3c1c36928edf9c6789548c524d0d954" [[package]] -name = "idna" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e14ddfc70884202db2244c223200c204c2bda1bc6e0998d11b5e024d657209e6" -dependencies = [ - "unicode-bidi", - "unicode-normalization", -] - -[[package]] -name = "idna" -version = "0.4.0" +name = "ident_case" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c" -dependencies = [ - "unicode-bidi", - "unicode-normalization", -] +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] name = "idna" @@ -4154,21 +4312,36 @@ dependencies = [ [[package]] name = "image" -version = "0.23.14" +version = "0.25.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24ffcb7e7244a9bf19d35bf2883b9c080c4ced3c07a9895572178cdb8f13f6a1" +checksum = "85ab80394333c02fe689eaf900ab500fbd0c2213da414687ebf995a65d5a6104" dependencies = [ "bytemuck", - "byteorder", + "byteorder-lite", "color_quant", + "exr", "gif", - "jpeg-decoder", - "num-iter", - "num-rational", + "image-webp", + "moxcms", "num-traits", "png", - "scoped_threadpool", + "qoi", + "ravif", + "rayon", + "rgb", "tiff", + "zune-core", + "zune-jpeg", +] + +[[package]] +name = "image-webp" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "525e9ff3e1a4be2fbea1fdf0e98686a6d98b4d8f937e1bf7402245af1909e8c3" +dependencies = [ + "byteorder-lite", + "quick-error", ] [[package]] @@ -4180,6 +4353,12 @@ dependencies = [ "hashbrown 0.15.5", ] +[[package]] +name = "imgref" +version = "1.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89194689a993ab15268672e99e7b0e19da2da3268ac682e8f02d29d4d1434cd7" + [[package]] name = "impl-more" version = "0.1.9" @@ -4187,14 +4366,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e8a5a9a0ff0086c7a148acb942baaabeadf9504d10400b5a05645853729b9cd2" [[package]] -name = "indexmap" -version = "1.9.3" +name = "impl-more" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" -dependencies = [ - "autocfg", - "hashbrown 0.12.3", -] +checksum = "35a84fd5aa25fae5c0f4a33d9cac2ca017fc622cbd089be2229993514990f870" [[package]] name = "indexmap" @@ -4223,7 +4398,6 @@ version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01" dependencies = [ - "block-padding 0.3.3", "generic-array 0.14.7", ] @@ -4233,49 +4407,10 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4250ce6452e92010fdf7268ccc5d14faa80bb12fc741938534c58f16804e03c7" dependencies = [ - "block-padding 0.4.2", + "block-padding", "hybrid-array", ] -[[package]] -name = "instant" -version = "0.1.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "internal-russh-forked-ssh-key" -version = "0.6.18+upstream-0.6.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25f8a978272e3cbdf4768f7363eb1c8e1e6ba63c52a3ed05e29e222da4aec7cb" -dependencies = [ - "argon2", - "bcrypt-pbkdf", - "crypto-bigint", - "ecdsa", - "ed25519-dalek", - "hex", - "hmac 0.13.0", - "num-bigint-dig", - "p256", - "p384", - "p521", - "rand_core 0.10.1", - "rsa 0.10.0-rc.16", - "sec1", - "serde", - "sha1 0.11.0", - "sha2 0.11.0", - "signature 3.0.0", - "ssh-cipher", - "ssh-encoding", - "subtle", - "zeroize", -] - [[package]] name = "internal-russh-num-bigint" version = "0.5.0" @@ -4288,6 +4423,17 @@ dependencies = [ "rand_core 0.10.1", ] +[[package]] +name = "interpolate_name" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c34819042dc3d3971c46c2190835914dfbe0c3c13f61449b2997f4e9722dfa60" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "inventory" version = "0.3.24" @@ -4307,26 +4453,15 @@ dependencies = [ "winapi", ] -[[package]] -name = "io-uring" -version = "0.7.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "046fa2d4d00aea763528b4950358d0ead425372445dc8ff86312b3c69ff7727b" -dependencies = [ - "bitflags 2.11.1", - "cfg-if", - "libc", -] - [[package]] name = "ipconfig" version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2d72a21f6a71a6c4c3160e095e8925861f5119dd26ef71acee1b9146f74f76c8" dependencies = [ - "socket2 0.6.0", + "socket2 0.6.4", "widestring", - "windows-sys 0.61.1", + "windows-sys 0.61.2", "winreg", ] @@ -4335,12 +4470,15 @@ name = "ipnet" version = "2.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d98f6fed1fde3f8c21bc40a1abb88dd75e67924f9cffc3ef95607bad8017f8e2" +dependencies = [ + "serde", +] [[package]] name = "ipnetwork" -version = "0.20.0" +version = "0.21.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf466541e9d546596ee94f9f69590f89473455f88372423e0008fc1a7daf100e" +checksum = "cf370abdafd54d13e54a620e8c3e1145f28e46cc9d704bc6d94414559df41763" dependencies = [ "serde", ] @@ -4362,27 +4500,27 @@ dependencies = [ [[package]] name = "itertools" -version = "0.10.5" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57" dependencies = [ "either", ] [[package]] name = "itertools" -version = "0.11.0" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57" +checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285" dependencies = [ "either", ] [[package]] name = "itertools" -version = "0.14.0" +version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285" +checksum = "8b4baf93f58d4425749ca49a51c50ebab072c5df6994d08fed93541c331481dc" dependencies = [ "either", ] @@ -4405,7 +4543,7 @@ dependencies = [ "portable-atomic", "portable-atomic-util", "serde_core", - "windows-sys 0.61.1", + "windows-sys 0.61.2", ] [[package]] @@ -4416,7 +4554,7 @@ checksum = "3c22e04db9c58f5136eb1757f3d5c49a7b187f49e52185228cbd2f5acdfcc08c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn", ] [[package]] @@ -4435,68 +4573,133 @@ dependencies = [ ] [[package]] -name = "jobserver" -version = "0.1.34" +name = "jni" +version = "0.21.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33" +checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97" dependencies = [ - "getrandom 0.3.3", - "libc", + "cesu8", + "cfg-if", + "combine", + "jni-sys 0.3.1", + "log", + "thiserror 1.0.69", + "walkdir", + "windows-sys 0.45.0", ] [[package]] -name = "jpeg-decoder" -version = "0.1.22" +name = "jni" +version = "0.22.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "229d53d58899083193af11e15917b5640cd40b29ff475a1fe4ef725deb02d0f2" +checksum = "5efd9a482cf3a427f00d6b35f14332adc7902ce91efb778580e180ff90fa3498" dependencies = [ - "rayon", + "cfg-if", + "combine", + "jni-macros", + "jni-sys 0.4.1", + "log", + "simd_cesu8", + "thiserror 2.0.18", + "walkdir", + "windows-link", ] [[package]] -name = "js-sys" -version = "0.3.81" +name = "jni-macros" +version = "0.22.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec48937a97411dcb524a265206ccd4c90bb711fca92b2792c407f268825b9305" +checksum = "a00109accc170f0bdb141fed3e393c565b6f5e072365c3bd58f5b062591560a3" dependencies = [ - "once_cell", - "wasm-bindgen", + "proc-macro2", + "quote", + "rustc_version", + "simd_cesu8", + "syn", ] [[package]] -name = "json5" -version = "0.4.1" +name = "jni-sys" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96b0db21af676c1ce64250b5f40f3ce2cf27e4e47cb91ed91eb6fe9350b430c1" +checksum = "41a652e1f9b6e0275df1f15b32661cf0d4b78d4d87ddec5e0c3c20f097433258" dependencies = [ - "pest", - "pest_derive", - "serde", + "jni-sys 0.4.1", ] [[package]] -name = "jsonwebtoken" -version = "10.4.0" +name = "jni-sys" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eba32bfb4ffdeaca3e34431072faf01745c9b26d25504aa7a6cf5684334fc4fc" +checksum = "c6377a88cb3910bee9b0fa88d4f42e1d2da8e79915598f65fb0c7ee14c878af2" dependencies = [ - "aws-lc-rs", - "base64 0.22.1", - "getrandom 0.2.16", - "js-sys", - "serde", - "serde_json", - "signature 2.2.0", - "zeroize", + "jni-sys-macros", ] [[package]] -name = "keccak" -version = "0.2.0" +name = "jni-sys-macros" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e24a010dd405bd7ed803e5253182815b41bf2e6a80cc3bfc066658e03a198aa" +checksum = "38c0b942f458fe50cdac086d2f946512305e5631e720728f2a61aabcd47a6264" dependencies = [ - "cfg-if", + "quote", + "syn", +] + +[[package]] +name = "jobserver" +version = "0.1.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33" +dependencies = [ + "getrandom 0.3.3", + "libc", +] + +[[package]] +name = "js-sys" +version = "0.3.81" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec48937a97411dcb524a265206ccd4c90bb711fca92b2792c407f268825b9305" +dependencies = [ + "once_cell", + "wasm-bindgen", +] + +[[package]] +name = "json5" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96b0db21af676c1ce64250b5f40f3ce2cf27e4e47cb91ed91eb6fe9350b430c1" +dependencies = [ + "pest", + "pest_derive", + "serde", +] + +[[package]] +name = "jsonwebtoken" +version = "10.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eba32bfb4ffdeaca3e34431072faf01745c9b26d25504aa7a6cf5684334fc4fc" +dependencies = [ + "aws-lc-rs", + "base64 0.22.1", + "getrandom 0.2.16", + "js-sys", + "serde", + "serde_json", + "signature 2.2.0", + "zeroize", +] + +[[package]] +name = "keccak" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e24a010dd405bd7ed803e5253182815b41bf2e6a80cc3bfc066658e03a198aa" +dependencies = [ + "cfg-if", "cpufeatures 0.3.0", ] @@ -4540,30 +4743,38 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2" +[[package]] +name = "lebe" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a79a3332a6609480d7d0c9eab957bca6b455b91bb84e66d19f5ff66294b85b8" + [[package]] name = "lettre" -version = "0.10.4" +version = "0.11.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76bd09637ae3ec7bd605b8e135e757980b3968430ff2b1a4a94fb7769e50166d" +checksum = "0da65617f6cb926332d039cb578aad56178da86e128db6a1b09f4c94fa5b3349" dependencies = [ "async-trait", - "base64 0.21.7", + "base64 0.22.1", "email-encoding", "email_address", - "fastrand 1.9.0", + "fastrand", "futures-io", "futures-util", "hostname", "httpdate", - "idna 0.3.0", + "idna", "mime", - "native-tls", - "nom 7.1.3", - "once_cell", + "nom 8.0.0", + "percent-encoding", "quoted_printable", - "socket2 0.4.10", + "rustls 0.23.35", + "socket2 0.6.4", "tokio", - "tokio-native-tls", + "tokio-rustls 0.26.4", + "url", + "webpki-roots 1.0.4", ] [[package]] @@ -4572,6 +4783,16 @@ version = "0.2.186" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66" +[[package]] +name = "libfuzzer-sys" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9fd2f41a1cba099f79a0b6b6c35656cf7c03351a7bae8ff0f28f25270f929d2" +dependencies = [ + "arbitrary", + "cc", +] + [[package]] name = "libgit2-sys" version = "0.18.2+1.9.1" @@ -4633,7 +4854,7 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "840db8cf39d9ec4dd794376f38acc40d0fc65eec2a8f484f7fd375b84602becd" dependencies = [ - "zlib-rs", + "zlib-rs 0.5.2", ] [[package]] @@ -4650,9 +4871,9 @@ dependencies = [ [[package]] name = "linguist" -version = "0.1.9" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b4e96f85311249a1817ed57a3b64596e1c7271a6d5c9eb23b3feb5d25e77b3d" +checksum = "8770b251cb72fcd4871d9d657aaee00f71f9ac293ee69af498619fc1e958d195" dependencies = [ "clap", "fancy-regex", @@ -4680,9 +4901,9 @@ checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" [[package]] name = "linux-raw-sys" -version = "0.11.0" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039" +checksum = "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53" [[package]] name = "litemap" @@ -4719,9 +4940,18 @@ dependencies = [ [[package]] name = "log" -version = "0.4.28" +version = "0.4.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ceec5bc11778974d1bcb055b18002eba7f4b3518b6a0081b3af5f21666da9ad" + +[[package]] +name = "loop9" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432" +checksum = "0fae87c125b03c1d2c0150c90365d7d6bcc53fb73a9acaef207d2d065860f062" +dependencies = [ + "imgref", +] [[package]] name = "lru-cache" @@ -4738,12 +4968,6 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154" -[[package]] -name = "match_cfg" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffbee8634e0d45d258acb448e7eaab3fce7a0a467395d4d9f228e3c1f01fb2e4" - [[package]] name = "matchers" version = "0.2.0" @@ -4755,20 +4979,21 @@ dependencies = [ [[package]] name = "matchit" -version = "0.7.3" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94" +checksum = "47e1ffaa40ddd1f3ed91f717a33c8c0ee23fff369e3aa8772b9605cc1d22f4c3" [[package]] name = "maxminddb" -version = "0.24.0" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6087e5d8ea14861bb7c7f573afbc7be3798d3ef0fae87ec4fd9a4de9a127c3c" +checksum = "65e84ef32bcbf18a95548989e880db4af6fafd563463753afb4b9a149fb2782c" dependencies = [ "ipnetwork", "log", "memchr", "serde", + "thiserror 2.0.18", ] [[package]] @@ -4779,7 +5004,17 @@ checksum = "5cf92c10c7e361d6b99666ec1c6f9805b0bea2c3bd8c78dc6fe98ac5bd78db11" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn", +] + +[[package]] +name = "maybe-rayon" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ea1f30cedd69f0a2954655f7188c6a834246d2bcf1e315e2ac40c4b24dc9519" +dependencies = [ + "cfg-if", + "rayon", ] [[package]] @@ -4792,11 +5027,21 @@ dependencies = [ "digest 0.10.7", ] +[[package]] +name = "md-5" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69b6441f590336821bb897fb28fc622898ccceb1d6cea3fde5ea86b090c4de98" +dependencies = [ + "cfg-if", + "digest 0.11.2", +] + [[package]] name = "md5" -version = "0.7.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "490cc448043f947bae3cbee9c203358d62dbee0db12107a74be5c30ccfd09771" +checksum = "ae960838283323069879657ca3de837e9f7bbb4c7bf6ea7f1b290d5e9476d2e0" [[package]] name = "meilisearch-index-setting-macro" @@ -4808,7 +5053,7 @@ dependencies = [ "proc-macro2", "quote", "structmeta", - "syn 2.0.106", + "syn", ] [[package]] @@ -4829,11 +5074,11 @@ dependencies = [ "log", "meilisearch-index-setting-macro", "pin-project-lite", - "reqwest", + "reqwest 0.12.28", "serde", "serde_json", "thiserror 2.0.18", - "time 0.3.51", + "time", "tokio", "uuid", "wasm-bindgen-futures", @@ -4874,25 +5119,6 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" -[[package]] -name = "miniz_oxide" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "791daaae1ed6889560f8c4359194f56648355540573244a5448a83ba1ecc7435" -dependencies = [ - "adler32", -] - -[[package]] -name = "miniz_oxide" -version = "0.4.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a92518e98c078586bc6c934028adcca4c92a53d6a958196de835170a01d84e4b" -dependencies = [ - "adler", - "autocfg", -] - [[package]] name = "miniz_oxide" version = "0.8.9" @@ -4900,38 +5126,40 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" dependencies = [ "adler2", + "simd-adler32", ] [[package]] name = "mio" -version = "1.0.4" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78bed444cc8a2160f01cbcf811ef18cac863ad68ae8ca62092e8db51d51c761c" +checksum = "02bd0af71c67b473010cbbc60715ee815645a4dc942899111f494b4b737d6fda" dependencies = [ "libc", "log", "wasi 0.11.1+wasi-snapshot-preview1", - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] name = "ml-kem" -version = "0.3.0-rc.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8198b5db27ac9773534c371751a59dc18aec8b80aa141e69abfdd1dec2e3f78c" +checksum = "5e15f3e5b957493873e396a66914e83e616b6afe335cdef7efe5c6e1216aba66" dependencies = [ "hybrid-array", "kem", "module-lattice", + "pkcs8 0.11.0", "rand_core 0.10.1", "sha3", ] [[package]] name = "module-lattice" -version = "0.2.2" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc7c90d33a0dac244570c26461d761ffaeadb3bfc2b17cc625ae2185cafdffae" +checksum = "0c61b87c9683ab7cb1c6871d261ad5479b6b10ceb52c4352aaca3b5d35a8febe" dependencies = [ "ctutils", "hybrid-array", @@ -4939,22 +5167,44 @@ dependencies = [ ] [[package]] -name = "native-tls" -version = "0.2.14" +name = "moka" +version = "0.12.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87de3442987e9dbec73158d5c715e7ad9072fda936bb03d19d7fa10e00520f0e" +checksum = "957228ad12042ee839f93c8f257b62b4c0ab5eaae1d4fa60de53b27c9d7c5046" dependencies = [ - "libc", - "log", - "openssl", - "openssl-probe 0.1.6", - "openssl-sys", - "schannel", - "security-framework 2.11.1", - "security-framework-sys", - "tempfile", + "crossbeam-channel", + "crossbeam-epoch", + "crossbeam-utils", + "equivalent", + "parking_lot", + "portable-atomic", + "smallvec", + "tagptr", + "uuid", +] + +[[package]] +name = "moxcms" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb85c154ba489f01b25c0d36ae69a87e4a1c73a72631fc6c0eb6dde34a73e44b" +dependencies = [ + "num-traits", + "pxfm", ] +[[package]] +name = "ndk-context" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b" + +[[package]] +name = "new_debug_unreachable" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" + [[package]] name = "nix" version = "0.31.2" @@ -4967,6 +5217,15 @@ dependencies = [ "libc", ] +[[package]] +name = "no_std_io2" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "418abd1b6d34fbf6cae440dc874771b0525a604428704c76e48b29a5e67b8003" +dependencies = [ + "memchr", +] + [[package]] name = "nom" version = "7.1.3" @@ -4986,6 +5245,12 @@ dependencies = [ "memchr", ] +[[package]] +name = "noop_proc_macro" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0676bb32a98c1a483ce53e500a81ad9c3d5b3f7c920c28c24e9cb0980d0b5bc8" + [[package]] name = "ntapi" version = "0.4.1" @@ -5026,7 +5291,6 @@ dependencies = [ "num-iter", "num-traits", "rand 0.8.5", - "serde", "smallvec", "zeroize", ] @@ -5037,6 +5301,17 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "521739c6d2bac4aa25192232afe6841231376b2b26d4d9fae5ecf8ca5772e441" +[[package]] +name = "num-derive" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "num-integer" version = "0.1.46" @@ -5059,11 +5334,11 @@ dependencies = [ [[package]] name = "num-rational" -version = "0.3.2" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12ac428b1cb17fce6f731001d307d351ec70a6d202fc2e60f7d4c5e42d8f4f07" +checksum = "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824" dependencies = [ - "autocfg", + "num-bigint", "num-integer", "num-traits", ] @@ -5088,6 +5363,15 @@ dependencies = [ "libc", ] +[[package]] +name = "num_threads" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c7398b9c8b70908f6371f47ed36737907c87c52af34c268fed0bf0ceb92ead9" +dependencies = [ + "libc", +] + [[package]] name = "oauth2" version = "4.1.1" @@ -5107,40 +5391,91 @@ dependencies = [ ] [[package]] -name = "object" -version = "0.37.3" +name = "objc2" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a12a8ed07aefc768292f076dc3ac8c48f3781c8f2d5851dd3d98950e8c5a89f" +dependencies = [ + "objc2-encode", +] + +[[package]] +name = "objc2-core-foundation" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff76201f031d8863c38aa7f905eca4f53abbfa15f609db4277d44cd8938f33fe" +checksum = "2a180dd8642fa45cdb7dd721cd4c11b1cadd4929ce112ebd8b9f5803cc79d536" dependencies = [ - "memchr", + "bitflags 2.11.1", + "dispatch2", + "objc2", +] + +[[package]] +name = "objc2-encode" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef25abbcd74fb2609453eb695bd2f860d389e457f67dc17cafc8b8cbc89d0c33" + +[[package]] +name = "objc2-foundation" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3e0adef53c21f888deb4fa59fc59f7eb17404926ee8a6f59f5df0fd7f9f3272" +dependencies = [ + "bitflags 2.11.1", + "objc2", +] + +[[package]] +name = "objc2-io-kit" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33fafba39597d6dc1fb709123dfa8289d39406734be322956a69f0931c73bb15" +dependencies = [ + "libc", + "objc2-core-foundation", +] + +[[package]] +name = "objc2-open-directory" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb82bed227edf5201dfedf072bba4015a33d3d4a98519837295a90f0a23f676d" +dependencies = [ + "objc2", + "objc2-core-foundation", + "objc2-foundation", ] [[package]] name = "object_store" -version = "0.13.2" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "622acbc9100d3c10e2ee15804b0caa40e55c933d5aa53814cd520805b7958a49" +checksum = "765784b4390c6bcf80316e5a22f4e3661b639c9d8c83246856643c27d8ce9dbe" dependencies = [ "async-trait", + "aws-lc-rs", "base64 0.22.1", "bytes", "chrono", + "crc-fast", "form_urlencoded", "futures-channel", "futures-core", "futures-util", - "http 1.3.1", + "http 1.4.2", "http-body-util", "humantime", - "hyper 1.9.0", - "itertools 0.14.0", - "md-5", - "parking_lot 0.12.4", + "hyper", + "itertools 0.15.0", + "md-5 0.11.0", + "nix", + "parking_lot", "percent-encoding", "quick-xml", "rand 0.10.1", - "reqwest", - "ring 0.17.14", + "reqwest 0.13.1", + "rustls-pki-types", "serde", "serde_json", "serde_urlencoded", @@ -5151,6 +5486,7 @@ dependencies = [ "walkdir", "wasm-bindgen-futures", "web-time", + "windows-sys 0.61.2", ] [[package]] @@ -5164,9 +5500,13 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.21.3" +version = "1.21.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" +checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" +dependencies = [ + "critical-section", + "portable-atomic", +] [[package]] name = "once_cell_polyfill" @@ -5203,7 +5543,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn", ] [[package]] @@ -5232,9 +5572,9 @@ dependencies = [ [[package]] name = "opentelemetry" -version = "0.31.0" +version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b84bcd6ae87133e903af7ef497404dda70c60d0ea14895fc8a5e6722754fc2a0" +checksum = "b0142c63252a9e054e68a4c61a5778f7b14f576274d593f8ce883d191a099682" dependencies = [ "futures-core", "futures-sink", @@ -5246,9 +5586,9 @@ dependencies = [ [[package]] name = "opentelemetry-appender-tracing" -version = "0.31.1" +version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef6a1ac5ca3accf562b8c306fa8483c85f4390f768185ab775f242f7fe8fdcc2" +checksum = "2c0080f0dc1d7c786f467cd85a4e395fcab11ee852004f39a29a18ab7c25d837" dependencies = [ "log", "opentelemetry", @@ -5259,22 +5599,22 @@ dependencies = [ [[package]] name = "opentelemetry-http" -version = "0.31.0" +version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7a6d09a73194e6b66df7c8f1b680f156d916a1a942abf2de06823dd02b7855d" +checksum = "5683015d09e2df236ef005b17f6f196f0d5f6313c4fa43a7b6a53b52776e4331" dependencies = [ "async-trait", "bytes", - "http 1.3.1", + "http 1.4.2", "opentelemetry", - "reqwest", + "reqwest 0.13.1", ] [[package]] name = "opentelemetry-instrumentation-actix-web" -version = "0.23.0" +version = "0.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "936e41b4ed3365bae2a4a9216f52d3fb9ad30e848dde33ed229c8c454ccba31d" +checksum = "cd512fd527cabb128a2ad9f134a5a3e7c75bdb88af729809f212cec839986985" dependencies = [ "actix-http", "actix-web", @@ -5283,62 +5623,63 @@ dependencies = [ "opentelemetry", "opentelemetry-semantic-conventions", "serde", + "time", ] [[package]] name = "opentelemetry-otlp" -version = "0.31.1" +version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f69cd6acbb9af919df949cd1ec9e5e7fdc2ef15d234b6b795aaa525cc02f71f" +checksum = "9966929966d17620d7c316c643ba62631826e10021409357772d5eea84f62c35" dependencies = [ - "http 1.3.1", + "http 1.4.2", "opentelemetry", "opentelemetry-http", "opentelemetry-proto", "opentelemetry_sdk", - "prost 0.14.3", - "reqwest", + "prost", + "reqwest 0.13.1", "serde_json", "thiserror 2.0.18", "tokio", - "tonic 0.14.6", - "tracing", + "tonic", + "tonic-types", ] [[package]] name = "opentelemetry-proto" -version = "0.31.0" +version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7175df06de5eaee9909d4805a3d07e28bb752c34cab57fa9cff549da596b30f" +checksum = "56d658ba1faf63f7b9c492cfbe6e0ec365440a16132d3270c1065f7b33f1b638" dependencies = [ "base64 0.22.1", "const-hex", "opentelemetry", "opentelemetry_sdk", - "prost 0.14.3", + "prost", "serde", - "serde_json", - "tonic 0.14.6", + "tonic", "tonic-prost", ] [[package]] name = "opentelemetry-semantic-conventions" -version = "0.31.0" +version = "0.32.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e62e29dfe041afb8ed2a6c9737ab57db4907285d999ef8ad3a59092a36bdc846" +checksum = "c913ac17a6c451661ee255f4625d143e51647ae78ebd969b75e41c4442f4fe47" [[package]] name = "opentelemetry_sdk" -version = "0.31.0" +version = "0.32.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e14ae4f5991976fd48df6d843de219ca6d31b01daaab2dad5af2badeded372bd" +checksum = "9b59f80e1ac4d5ff7a2db8fb6c80badb7f0f3f858211fba08dd9aaec750894f9" dependencies = [ "futures-channel", "futures-executor", "futures-util", "opentelemetry", "percent-encoding", + "portable-atomic", "rand 0.9.2", "thiserror 2.0.18", "tokio", @@ -5347,9 +5688,9 @@ dependencies = [ [[package]] name = "p256" -version = "0.14.0-rc.7" +version = "0.14.0-rc.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "018bfbb86e05fd70a83e985921241035ee09fcd369c4a2c3680b389a01d2ad28" +checksum = "41adc63effe99d48837a8cc0e6d7a77e32ae6a07f6000df466178dbc2193093e" dependencies = [ "ecdsa", "elliptic-curve", @@ -5360,9 +5701,9 @@ dependencies = [ [[package]] name = "p384" -version = "0.14.0-rc.7" +version = "0.14.0-rc.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c91df688211f5957dbe2ab599dcbcaade8d6d3cdc15c5b350d350d7d07ce423" +checksum = "9bd5333afa5ae0347f39e6a0f2c9c155da431583fd71fe5555bd0521b4ccaf02" dependencies = [ "ecdsa", "elliptic-curve", @@ -5374,9 +5715,9 @@ dependencies = [ [[package]] name = "p521" -version = "0.14.0-rc.7" +version = "0.14.0-rc.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de6cd9451de522549d36cc78a1b45a699a3d55a872e8ea0c8f0318e502d99e2c" +checksum = "a3a5297f53dc16d35909060ba3032cff7867e8809f01e273ff325579d5f0ceae" dependencies = [ "base16ct", "ecdsa", @@ -5413,37 +5754,12 @@ checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" [[package]] name = "parking_lot" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99" -dependencies = [ - "instant", - "lock_api", - "parking_lot_core 0.8.6", -] - -[[package]] -name = "parking_lot" -version = "0.12.4" +version = "0.12.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "70d58bf43669b5795d1576d0641cfb6fbb2057bf629506267a92807158584a13" dependencies = [ "lock_api", - "parking_lot_core 0.9.11", -] - -[[package]] -name = "parking_lot_core" -version = "0.8.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60a2cfe6f0ad2bfc16aefa463b497d5c7a5ecd44a23efa72aa342d90177356dc" -dependencies = [ - "cfg-if", - "instant", - "libc", - "redox_syscall 0.2.16", - "smallvec", - "winapi", + "parking_lot_core", ] [[package]] @@ -5470,13 +5786,11 @@ dependencies = [ [[package]] name = "password-hash" -version = "0.5.0" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "346f04948ba92c43e8469c1ee6736c7563d71012b17d40745260fe106aac2166" +checksum = "aab41826031698d6ffcd9cff78ef56ef998e39dc7e5067cdfebe373842d4723b" dependencies = [ - "base64ct", - "rand_core 0.6.4", - "subtle", + "phc", ] [[package]] @@ -5491,16 +5805,6 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "35fb2e5f958ec131621fdd531e9fc186ed768cbe395337403ae56c17a74c68ec" -[[package]] -name = "pbkdf2" -version = "0.12.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8ed6a7761f76e3b9f92dfb0a60a6a6477c61024b775147ff0973a02653abaf2" -dependencies = [ - "digest 0.10.7", - "hmac 0.12.1", -] - [[package]] name = "pbkdf2" version = "0.13.0" @@ -5566,7 +5870,7 @@ dependencies = [ "pest_meta", "proc-macro2", "quote", - "syn 2.0.106", + "syn", ] [[package]] @@ -5579,12 +5883,23 @@ dependencies = [ "sha2 0.10.9", ] +[[package]] +name = "phc" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44dc769b75f93afdddd8c7fa12d685292ddeff1e66f7f0f3a234cf1818afe892" +dependencies = [ + "base64ct", + "ctutils", +] + [[package]] name = "phf" version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1fd6780a80ae0c52cc120a26a1a42c1ae51b247a253e4e06113d23d2c2edd078" dependencies = [ + "phf_macros", "phf_shared", ] @@ -5608,6 +5923,19 @@ dependencies = [ "rand 0.8.5", ] +[[package]] +name = "phf_macros" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f84ac04429c13a7ff43785d75ad27569f2951ce0ffd30a3321230db2fc727216" +dependencies = [ + "phf_generator", + "phf_shared", + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "phf_shared" version = "0.11.3" @@ -5634,7 +5962,7 @@ checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn", ] [[package]] @@ -5643,12 +5971,6 @@ version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" -[[package]] -name = "pin-utils" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" - [[package]] name = "pkcs1" version = "0.7.5" @@ -5667,24 +5989,24 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "986d2e952779af96ea048f160fd9194e1751b4faea78bcf3ceb456efe008088e" dependencies = [ "der 0.8.0", - "spki 0.8.0-rc.4", + "spki 0.8.0", ] [[package]] name = "pkcs5" -version = "0.8.0-rc.13" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5a777c6e26664bc9504b3ce3f6133f8f20d9071f130a4f9fcbd3186959d8dd6" +checksum = "63d440a804ec8d6fafbb6b84471e013286658d373248927692ab3366686220ca" dependencies = [ "aes 0.9.0", - "aes-gcm 0.11.0-rc.3", - "cbc 0.2.0", + "aes-gcm 0.11.0", + "cbc", "der 0.8.0", - "pbkdf2 0.13.0", + "pbkdf2", "rand_core 0.10.1", "scrypt", "sha2 0.11.0", - "spki 0.8.0-rc.4", + "spki 0.8.0", ] [[package]] @@ -5699,14 +6021,14 @@ dependencies = [ [[package]] name = "pkcs8" -version = "0.11.0-rc.11" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12922b6296c06eb741b02d7b5161e3aaa22864af38dfa025a1a3ba3f68c84577" +checksum = "451913da69c775a56034ea8d9003d27ee8948e12443eae7c038ba100a4f21cb7" dependencies = [ "der 0.8.0", "pkcs5", "rand_core 0.10.1", - "spki 0.8.0-rc.4", + "spki 0.8.0", ] [[package]] @@ -5717,25 +6039,26 @@ checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" [[package]] name = "png" -version = "0.16.8" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c3287920cb847dee3de33d301c463fba14dda99db24214ddf93f83d3021f4c6" +checksum = "60769b8b31b2a9f263dae2776c37b1b28ae246943cf719eb6946a1db05128a61" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.11.1", "crc32fast", - "deflate", - "miniz_oxide 0.3.7", + "fdeflate", + "flate2", + "miniz_oxide", ] [[package]] name = "poly1305" -version = "0.8.0" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8159bd90725d2df49889a078b54f4f79e87f1f8a8444194cdca81d38f5393abf" +checksum = "a00baa632505d05512f48a963e16051c54fda9a95cc9acea1a4e3c90991c4a2e" dependencies = [ - "cpufeatures 0.2.17", - "opaque-debug", - "universal-hash 0.5.1", + "cpufeatures 0.3.0", + "universal-hash 0.6.1", + "zeroize", ] [[package]] @@ -5800,6 +6123,17 @@ dependencies = [ "zerocopy", ] +[[package]] +name = "prefix-trie" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cf6e3177f0684016a5c209b00882e15f8bdd3f3bb48f0491df10cd102d0c6e7" +dependencies = [ + "either", + "ipnet", + "num-traits", +] + [[package]] name = "prettyplease" version = "0.2.37" @@ -5807,56 +6141,32 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" dependencies = [ "proc-macro2", - "syn 2.0.106", + "syn", ] [[package]] name = "primefield" -version = "0.14.0-rc.7" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93401c13cc7ff24684571cfca9d3cf9ebabfaf3d4b7b9963ade41ec54da196b5" +checksum = "c555a6e4eb7d4e158fcb028c835c3b8642206ddc279b5c6b202ef9a8bdb592f4" dependencies = [ "crypto-bigint", "crypto-common 0.2.1", + "ff", "rand_core 0.10.1", - "rustcrypto-ff", "subtle", "zeroize", ] [[package]] name = "primeorder" -version = "0.14.0-rc.7" +version = "0.14.0-rc.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0c5c8a39bcd764bfedf456e8d55e115fe86dda3e0f555371849f2a41cbc9706" +checksum = "7d2793f22b9b6fd11ef3ac1d59bf003c2573593e4968702341605c2748fd90bf" dependencies = [ "elliptic-curve", ] -[[package]] -name = "proc-macro-error" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" -dependencies = [ - "proc-macro-error-attr", - "proc-macro2", - "quote", - "syn 1.0.109", - "version_check", -] - -[[package]] -name = "proc-macro-error-attr" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" -dependencies = [ - "proc-macro2", - "quote", - "version_check", -] - [[package]] name = "proc-macro-error-attr2" version = "2.0.0" @@ -5876,14 +6186,14 @@ dependencies = [ "proc-macro-error-attr2", "proc-macro2", "quote", - "syn 2.0.106", + "syn", ] [[package]] name = "proc-macro2" -version = "1.0.101" +version = "1.0.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89ae43fd86e4158d6db51ad8e2b80f313af9cc74f5c0e03ccb87de09998732de" +checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" dependencies = [ "unicode-ident", ] @@ -5896,7 +6206,26 @@ checksum = "5a6efc566849d3d9d737c5cb06cc50e48950ebe3d3f9d70631490fff3a07b139" dependencies = [ "bytesize", "human_format", - "parking_lot 0.12.4", + "parking_lot", +] + +[[package]] +name = "profiling" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d595e54a326bc53c1c197b32d295e14b169e3cfeaa8dc82b529f947fba6bcf5" +dependencies = [ + "profiling-procmacros", +] + +[[package]] +name = "profiling-procmacros" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4488a4a36b9a4ba6b9334a32a39971f77c1436ec82c38707bce707699cc3bbcb" +dependencies = [ + "quote", + "syn", ] [[package]] @@ -5914,16 +6243,6 @@ dependencies = [ "unarray", ] -[[package]] -name = "prost" -version = "0.11.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b82eaa1d779e9a4bc1c3217db8ffbeabaae1dca241bf70183242128d48681cd" -dependencies = [ - "bytes", - "prost-derive 0.11.9", -] - [[package]] name = "prost" version = "0.14.3" @@ -5931,42 +6250,44 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d2ea70524a2f82d518bce41317d0fae74151505651af45faf1ffbd6fd33f0568" dependencies = [ "bytes", - "prost-derive 0.14.3", + "prost-derive", ] [[package]] name = "prost-derive" -version = "0.11.9" +version = "0.14.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5d2d8d10f3c6ded6da8b05b5fb3b8a5082514344d56c9f871412d29b4e075b4" +checksum = "27c6023962132f4b30eb4c172c91ce92d933da334c59c23cddee82358ddafb0b" dependencies = [ "anyhow", - "itertools 0.10.5", + "itertools 0.14.0", "proc-macro2", "quote", - "syn 1.0.109", + "syn", ] [[package]] -name = "prost-derive" +name = "prost-types" version = "0.14.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "27c6023962132f4b30eb4c172c91ce92d933da334c59c23cddee82358ddafb0b" +checksum = "8991c4cbdb8bc5b11f0b074ffe286c30e523de90fee5ba8132f1399f23cb3dd7" dependencies = [ - "anyhow", - "itertools 0.14.0", - "proc-macro2", - "quote", - "syn 2.0.106", + "prost", ] [[package]] -name = "prost-types" -version = "0.11.9" +name = "pxfm" +version = "0.1.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "213622a1460818959ac1181aaeb2dc9c7f63df720db7d788b3e24eacd1983e13" +checksum = "e0c5ccf5294c6ccd63a74f1565028353830a9c2f5eb0c682c355c471726a6e3f" + +[[package]] +name = "qoi" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f6d64c71eb498fe9eae14ce4ec935c555749aef511cca85b5568910d6e48001" dependencies = [ - "prost 0.11.9", + "bytemuck", ] [[package]] @@ -5978,11 +6299,17 @@ dependencies = [ "percent-encoding", ] +[[package]] +name = "quick-error" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a993555f31e5a609f617c12db6250dedcac1b0a85076912c436e6fc9b2c8e6a3" + [[package]] name = "quick-xml" -version = "0.39.4" +version = "0.40.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cdcc8dd4e2f670d309a5f0e83fe36dfdc05af317008fea29144da1a2ac858e5e" +checksum = "2474bd2e5029e7ccb6abb2ba48cf2383a333851dedf495901544281590c7da7f" dependencies = [ "memchr", "serde", @@ -6001,7 +6328,7 @@ dependencies = [ "quinn-udp", "rustc-hash", "rustls 0.23.35", - "socket2 0.6.0", + "socket2 0.6.4", "thiserror 2.0.18", "tokio", "tracing", @@ -6014,6 +6341,7 @@ version = "0.11.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "434b42fec591c96ef50e21e886936e66d3cc3f737104fdb9b737c40ffb94c098" dependencies = [ + "aws-lc-rs", "bytes", "getrandom 0.3.3", "lru-slab", @@ -6038,25 +6366,25 @@ dependencies = [ "cfg_aliases", "libc", "once_cell", - "socket2 0.6.0", + "socket2 0.6.4", "tracing", "windows-sys 0.60.2", ] [[package]] name = "quote" -version = "1.0.41" +version = "1.0.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce25767e7b499d1b604768e7cde645d14cc8584231ea6b295e9c9eb22c02e1d1" +checksum = "dfbc457d0c7a0759a614551b11a6409e5951f6c7537be1f1b7682b9ae9230368" dependencies = [ "proc-macro2", ] [[package]] name = "quoted_printable" -version = "0.4.8" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a3866219251662ec3b26fc217e3e05bf9c4f84325234dfb96bf0bf840889e49" +checksum = "478e0585659a122aa407eb7e3c0e1fa51b1d8a870038bd29f0cf4a8551eea972" [[package]] name = "r-efi" @@ -6110,7 +6438,7 @@ version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d2e8e8bcc7961af1fdac401278c6a831614941f6164ee3bf4ce61b7edb162207" dependencies = [ - "chacha20 0.10.0", + "chacha20", "getrandom 0.4.2", "rand_core 0.10.1", ] @@ -6196,6 +6524,56 @@ dependencies = [ "rand_core 0.9.3", ] +[[package]] +name = "rav1e" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43b6dd56e85d9483277cde964fd1bdb0428de4fec5ebba7540995639a21cb32b" +dependencies = [ + "aligned-vec", + "arbitrary", + "arg_enum_proc_macro", + "arrayvec", + "av-scenechange", + "av1-grain", + "bitstream-io", + "built", + "cfg-if", + "interpolate_name", + "itertools 0.14.0", + "libc", + "libfuzzer-sys", + "log", + "maybe-rayon", + "new_debug_unreachable", + "noop_proc_macro", + "num-derive", + "num-traits", + "paste", + "profiling", + "rand 0.9.2", + "rand_chacha 0.9.0", + "simd_helpers", + "thiserror 2.0.18", + "v_frame", + "wasm-bindgen", +] + +[[package]] +name = "ravif" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e52310197d971b0f5be7fe6b57530dcd27beb35c1b013f29d66c1ad73fbbcc45" +dependencies = [ + "avif-serialize", + "imgref", + "loop9", + "quick-error", + "rav1e", + "rayon", + "rgb", +] + [[package]] name = "rayon" version = "1.11.0" @@ -6216,15 +6594,6 @@ dependencies = [ "crossbeam-utils", ] -[[package]] -name = "redox_syscall" -version = "0.2.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" -dependencies = [ - "bitflags 1.3.2", -] - [[package]] name = "redox_syscall" version = "0.3.5" @@ -6243,17 +6612,6 @@ dependencies = [ "bitflags 2.11.1", ] -[[package]] -name = "redox_users" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" -dependencies = [ - "getrandom 0.2.16", - "libredox", - "thiserror 1.0.69", -] - [[package]] name = "regex" version = "1.11.3" @@ -6297,14 +6655,13 @@ checksum = "eddd3ca559203180a307f12d114c268abf583f59b03cb906fd0b3ff8646c1147" dependencies = [ "base64 0.22.1", "bytes", - "futures-channel", "futures-core", "futures-util", "h2 0.4.14", - "http 1.3.1", - "http-body 1.0.1", + "http 1.4.2", + "http-body", "http-body-util", - "hyper 1.9.0", + "hyper", "hyper-rustls", "hyper-util", "js-sys", @@ -6313,16 +6670,56 @@ dependencies = [ "pin-project-lite", "quinn", "rustls 0.23.35", - "rustls-native-certs", "rustls-pki-types", "serde", "serde_json", "serde_urlencoded", - "sync_wrapper 1.0.2", + "sync_wrapper", + "tokio", + "tokio-rustls 0.26.4", + "tokio-util", + "tower", + "tower-http", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "wasm-streams", + "web-sys", + "webpki-roots 1.0.4", +] + +[[package]] +name = "reqwest" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04e9018c9d814e5f30cc16a0f03271aeab3571e609612d9fe78c1aa8d11c2f62" +dependencies = [ + "base64 0.22.1", + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "h2 0.4.14", + "http 1.4.2", + "http-body", + "http-body-util", + "hyper", + "hyper-rustls", + "hyper-util", + "js-sys", + "log", + "percent-encoding", + "pin-project-lite", + "quinn", + "rustls 0.23.35", + "rustls-pki-types", + "rustls-platform-verifier", + "sync_wrapper", "tokio", "tokio-rustls 0.26.4", "tokio-util", - "tower 0.5.3", + "tower", "tower-http", "tower-service", "url", @@ -6349,6 +6746,12 @@ dependencies = [ "subtle", ] +[[package]] +name = "rgb" +version = "0.8.53" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47b34b781b31e5d73e9fbc8689c70551fd1ade9a19e3e28cfec8580a79290cc4" + [[package]] name = "ring" version = "0.16.20" @@ -6422,49 +6825,44 @@ dependencies = [ [[package]] name = "rsa" -version = "0.10.0-rc.16" +version = "0.10.0-rc.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fb9fd8c1edd9e6a2693623baf0fe77ff05ce022a5d7746900ffc38a15c233de" +checksum = "30b2aa4ba0d89f73d1e332df05be0eeab8840351c36ca5654341dfdb57bb3caf" dependencies = [ "const-oid 0.10.2", "crypto-bigint", "crypto-primes", "digest 0.11.2", "pkcs1 0.8.0-rc.4", - "pkcs8 0.11.0-rc.11", + "pkcs8 0.11.0", "rand_core 0.10.1", "sha2 0.11.0", "signature 3.0.0", - "spki 0.8.0-rc.4", + "spki 0.8.0", "zeroize", ] [[package]] name = "russh" -version = "0.60.2" +version = "0.61.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c9e358980fe9b079b99da387117864ee6f0a3fd02f39e5b5fde6af9c2895374" +checksum = "bbf893f64684e58da8a68d56a5e84d1cf0440226274c515770fe267707a7d0b0" dependencies = [ - "aead 0.6.0-rc.10", - "aes 0.8.4", "aes 0.9.0", - "aes-gcm 0.11.0-rc.3", "aws-lc-rs", "bitflags 2.11.1", - "block-padding 0.3.3", + "block-padding", "byteorder", "bytes", - "cbc 0.1.2", - "cbc 0.2.0", + "cbc", "cipher 0.5.1", "crypto-bigint", "ctr 0.10.0", - "ctr 0.9.2", "curve25519-dalek", "data-encoding", "delegate", "der 0.8.0", - "digest 0.10.7", + "digest 0.11.2", "ecdsa", "ed25519-dalek", "elliptic-curve", @@ -6472,14 +6870,11 @@ dependencies = [ "flate2", "futures", "generic-array 1.4.1", - "getrandom 0.2.16", + "getrandom 0.4.2", "ghash 0.6.0", "hex-literal", - "hkdf 0.13.0", - "hmac 0.12.1", "hmac 0.13.0", - "inout 0.1.4", - "internal-russh-forked-ssh-key", + "inout 0.2.2", "internal-russh-num-bigint", "keccak", "log", @@ -6491,28 +6886,26 @@ dependencies = [ "p384", "p521", "pageant", - "pbkdf2 0.12.2", - "pbkdf2 0.13.0", + "pbkdf2", "pkcs1 0.8.0-rc.4", "pkcs5", - "pkcs8 0.11.0-rc.11", + "pkcs8 0.11.0", "polyval 0.7.1", "rand 0.10.1", "rand_core 0.10.1", - "rsa 0.10.0-rc.16", + "rsa 0.10.0-rc.18", "russh-cryptovec", "russh-util", "salsa20", "scrypt", "sec1", - "sha1 0.10.6", "sha1 0.11.0", - "sha2 0.10.9", "sha2 0.11.0", "sha3", "signature 3.0.0", - "spki 0.8.0-rc.4", + "spki 0.8.0", "ssh-encoding", + "ssh-key", "subtle", "thiserror 2.0.18", "tokio", @@ -6523,14 +6916,14 @@ dependencies = [ [[package]] name = "russh-cryptovec" -version = "0.59.0" +version = "0.61.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36140e8a20297bc2e8338807c3d9ca911f7fa49d7539cbcd6d48d3befd70efd8" +checksum = "443f6bbcfacb34a1aab2b12b99bf08e0c63abdc5a0db261901365df9d57fff51" dependencies = [ "log", "nix", "ssh-encoding", - "windows-sys 0.61.1", + "windows-sys 0.61.2", ] [[package]] @@ -6547,22 +6940,16 @@ dependencies = [ [[package]] name = "rust-argon2" -version = "1.0.1" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5885493fdf0be6cdff808d1533ce878d21cfa49c7086fa00c66355cd9141bfc" +checksum = "8ae76b7506744d254fd0eb2c0ff5c5d108201ccbb083111ac04a44eeda105680" dependencies = [ - "base64 0.21.7", + "base64 0.22.1", "blake2b_simd", - "constant_time_eq", + "constant_time_eq 0.4.2", "crossbeam-utils", ] -[[package]] -name = "rustc-demangle" -version = "0.1.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56f7d92ca342cea22a06f2121d944b4fd82af56988c270852495420f961d4ace" - [[package]] name = "rustc-hash" version = "2.1.2" @@ -6578,27 +6965,6 @@ dependencies = [ "semver", ] -[[package]] -name = "rustcrypto-ff" -version = "0.14.0-rc.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd2a8adb347447693cd2ba0d218c4b66c62da9b0a5672b17b981e4291ec65ff6" -dependencies = [ - "rand_core 0.10.1", - "subtle", -] - -[[package]] -name = "rustcrypto-group" -version = "0.14.0-rc.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "369f9b61aa45933c062c9f6b5c3c50ab710687eca83dd3802653b140b43f85ed" -dependencies = [ - "rand_core 0.10.1", - "rustcrypto-ff", - "subtle", -] - [[package]] name = "rusticata-macros" version = "4.1.0" @@ -6610,15 +6976,15 @@ dependencies = [ [[package]] name = "rustix" -version = "1.1.2" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd15f8a2c5551a84d56efdc1cd049089e409ac19a3072d5037a17fd70719ff3e" +checksum = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190" dependencies = [ "bitflags 2.11.1", "errno", "libc", "linux-raw-sys", - "windows-sys 0.61.1", + "windows-sys 0.61.2", ] [[package]] @@ -6639,6 +7005,7 @@ version = "0.23.35" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "533f54bc6a7d4f647e46ad909549eda97bf5afc1585190ef692b4286b198bd8f" dependencies = [ + "aws-lc-rs", "log", "once_cell", "ring 0.17.14", @@ -6657,16 +7024,7 @@ dependencies = [ "openssl-probe 0.2.1", "rustls-pki-types", "schannel", - "security-framework 3.5.1", -] - -[[package]] -name = "rustls-pemfile" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" -dependencies = [ - "base64 0.21.7", + "security-framework", ] [[package]] @@ -6679,12 +7037,40 @@ dependencies = [ "zeroize", ] +[[package]] +name = "rustls-platform-verifier" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d99feebc72bae7ab76ba994bb5e121b8d83d910ca40b36e0921f53becc41784" +dependencies = [ + "core-foundation 0.10.1", + "core-foundation-sys", + "jni 0.21.1", + "log", + "once_cell", + "rustls 0.23.35", + "rustls-native-certs", + "rustls-platform-verifier-android", + "rustls-webpki", + "security-framework", + "security-framework-sys", + "webpki-root-certs", + "windows-sys 0.61.2", +] + +[[package]] +name = "rustls-platform-verifier-android" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f87165f0995f63a9fbeea62b64d10b4d9d8e78ec6d7d51fb2125fda7bb36788f" + [[package]] name = "rustls-webpki" version = "0.103.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2ffdfa2f5286e2247234e03f680868ac2815974dc39e00ea15adc445d0aafe52" dependencies = [ + "aws-lc-rs", "ring 0.17.14", "rustls-pki-types", "untrusted 0.9.0", @@ -6727,15 +7113,9 @@ version = "0.1.28" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "891d81b926048e76efe18581bf793546b4c0eaf8448d72be8de2bbee5fd166e1" dependencies = [ - "windows-sys 0.61.1", + "windows-sys 0.61.2", ] -[[package]] -name = "scoped_threadpool" -version = "0.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d51f5df5af43ab3f1360b429fa5e0152ac5ce8c0bd6485cae490332e96846a8" - [[package]] name = "scopeguard" version = "1.2.0" @@ -6749,7 +7129,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d87af57419b594aa23fa95f09f0e06d80d84ba01c26148c43844cad6ff4485f0" dependencies = [ "cfg-if", - "pbkdf2 0.13.0", + "pbkdf2", "salsa20", "sha2 0.11.0", ] @@ -6778,19 +7158,6 @@ dependencies = [ "zeroize", ] -[[package]] -name = "security-framework" -version = "2.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" -dependencies = [ - "bitflags 2.11.1", - "core-foundation 0.9.4", - "core-foundation-sys", - "libc", - "security-framework-sys", -] - [[package]] name = "security-framework" version = "3.5.1" @@ -6857,7 +7224,7 @@ checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn", ] [[package]] @@ -6884,6 +7251,15 @@ dependencies = [ "serde_core", ] +[[package]] +name = "serde_plain" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ce1fc6db65a611022b23a0dec6975d63fb80a302cb3388835ff02c097258d50" +dependencies = [ + "serde", +] + [[package]] name = "serde_spanned" version = "0.6.9" @@ -6911,7 +7287,7 @@ version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7b4db627b98b36d4203a7b458cf3573730f2bb591b28871d916dfa9efabfd41f" dependencies = [ - "indexmap 2.11.4", + "indexmap", "itoa", "ryu", "serde", @@ -7071,6 +7447,37 @@ dependencies = [ "rand_core 0.10.1", ] +[[package]] +name = "simd-adler32" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "703d5c7ef118737c72f1af64ad2f6f8c5e1921f818cdcb97b8fe6fc69bf66214" + +[[package]] +name = "simd_cesu8" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94f90157bb87cddf702797c5dadfa0be7d266cdf49e22da2fcaa32eff75b2c33" +dependencies = [ + "rustc_version", + "simdutf8", +] + +[[package]] +name = "simd_helpers" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95890f873bec569a0362c235787f3aca6e1e887302ba4840839bcc6459c42da6" +dependencies = [ + "quote", +] + +[[package]] +name = "simdutf8" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e" + [[package]] name = "siphasher" version = "1.0.1" @@ -7102,16 +7509,6 @@ dependencies = [ "serde", ] -[[package]] -name = "socket2" -version = "0.4.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f7916fc008ca5542385b89a3d3ce689953c143e9304a9bf8beec1de48994c0d" -dependencies = [ - "libc", - "winapi", -] - [[package]] name = "socket2" version = "0.5.10" @@ -7124,12 +7521,12 @@ dependencies = [ [[package]] name = "socket2" -version = "0.6.0" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "233504af464074f9d066d7b5416c5f9b894a5862a6506e306f7b816cdd6f1807" +checksum = "52d1cfed4120b4d927bf7c0f86d2087a4a7d6027c906d9f9d525a80573b9be51" dependencies = [ "libc", - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] @@ -7147,6 +7544,12 @@ dependencies = [ "lock_api", ] +[[package]] +name = "spin" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5fe4ccb98d9c292d56fec89a5e07da7fc4cf0dc11e156b41793132775d3e591" + [[package]] name = "spki" version = "0.7.3" @@ -7159,126 +7562,102 @@ dependencies = [ [[package]] name = "spki" -version = "0.8.0-rc.4" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8baeff88f34ed0691978ec34440140e1572b68c7dd4a495fd14a3dc1944daa80" +checksum = "1d9efca8738c78ee9484207732f728b1ef517bbb1833d6fc0879ca898a522f6f" dependencies = [ "base64ct", "der 0.8.0", ] -[[package]] -name = "sqlformat" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7bba3a93db0cc4f7bdece8bb09e77e2e785c20bfebf79eb8340ed80708048790" -dependencies = [ - "nom 7.1.3", - "unicode_categories", -] - [[package]] name = "sqlx" -version = "0.6.3" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8de3b03a925878ed54a954f621e64bf55a3c1bd29652d0d1a17830405350188" +checksum = "1fefb893899429669dcdd979aff487bd78f4064e5e7907e4269081e0ef7d97dc" dependencies = [ - "sqlx-core 0.6.3", - "sqlx-macros 0.6.3", + "sqlx-core 0.8.6", + "sqlx-macros 0.8.6", + "sqlx-mysql 0.8.6", + "sqlx-postgres 0.8.6", + "sqlx-sqlite 0.8.6", ] [[package]] name = "sqlx" -version = "0.8.6" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fefb893899429669dcdd979aff487bd78f4064e5e7907e4269081e0ef7d97dc" +checksum = "378620ccc25c62c89d8be1c819e76a88d59bdcc3304733330788948e619bfd71" dependencies = [ - "sqlx-core 0.8.6", - "sqlx-macros 0.8.6", - "sqlx-mysql", - "sqlx-postgres", - "sqlx-sqlite", + "sqlx-core 0.9.0", + "sqlx-macros 0.9.0", + "sqlx-mysql 0.9.0", + "sqlx-postgres 0.9.0", + "sqlx-sqlite 0.9.0", ] [[package]] name = "sqlx-core" -version = "0.6.3" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa8241483a83a3f33aa5fff7e7d9def398ff9990b2752b6c6112b83c6d246029" +checksum = "ee6798b1838b6a0f69c007c133b8df5866302197e404e8b6ee8ed3e3a5e68dc6" dependencies = [ - "ahash 0.7.8", - "atoi 1.0.0", - "base64 0.13.1", - "bitflags 1.3.2", - "byteorder", + "base64 0.22.1", "bytes", "chrono", "crc", "crossbeam-queue", - "dirs", - "dotenvy", "either", - "event-listener 2.5.3", - "futures-channel", + "event-listener", "futures-core", - "futures-intrusive 0.4.2", + "futures-intrusive", + "futures-io", "futures-util", - "hashlink 0.8.4", - "hex", - "hkdf 0.12.4", - "hmac 0.12.1", - "indexmap 1.9.3", - "itoa", - "libc", + "hashbrown 0.15.5", + "hashlink 0.10.0", + "indexmap", "log", - "md-5", "memchr", "once_cell", - "paste", "percent-encoding", - "rand 0.8.5", - "rustls 0.20.9", - "rustls-pemfile", + "rustls 0.23.35", "serde", "serde_json", - "sha1 0.10.6", "sha2 0.10.9", "smallvec", - "sqlformat", - "sqlx-rt", - "stringprep", - "thiserror 1.0.69", + "thiserror 2.0.18", + "tokio", "tokio-stream", + "tracing", "url", "uuid", - "webpki-roots 0.22.6", - "whoami", + "webpki-roots 0.26.11", ] [[package]] name = "sqlx-core" -version = "0.8.6" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee6798b1838b6a0f69c007c133b8df5866302197e404e8b6ee8ed3e3a5e68dc6" +checksum = "05b44e85bf579a8eeb4ceaa77a3a523baf2bf0e9bac7e40f405d537b5d2d5ccb" dependencies = [ "base64 0.22.1", "bytes", + "cfg-if", "chrono", "crc", "crossbeam-queue", "either", - "event-listener 5.4.1", + "event-listener", "futures-core", - "futures-intrusive 0.5.0", + "futures-intrusive", "futures-io", "futures-util", - "hashbrown 0.15.5", - "hashlink 0.10.0", - "indexmap 2.11.4", + "hashbrown 0.16.0", + "hashlink 0.11.1", + "indexmap", "ipnetwork", "log", "memchr", - "once_cell", "percent-encoding", "rustls 0.23.35", "serde", @@ -7291,40 +7670,33 @@ dependencies = [ "tracing", "url", "uuid", - "webpki-roots 0.26.11", + "webpki-roots 1.0.4", ] [[package]] name = "sqlx-macros" -version = "0.6.3" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9966e64ae989e7e575b19d7265cb79d7fc3cbbdf179835cb0d716f294c2049c9" +checksum = "a2d452988ccaacfbf5e0bdbc348fb91d7c8af5bee192173ac3636b5fb6e6715d" dependencies = [ - "dotenvy", - "either", - "heck 0.4.1", - "once_cell", "proc-macro2", "quote", - "serde_json", - "sha2 0.10.9", - "sqlx-core 0.6.3", - "sqlx-rt", - "syn 1.0.109", - "url", + "sqlx-core 0.8.6", + "sqlx-macros-core 0.8.6", + "syn", ] [[package]] name = "sqlx-macros" -version = "0.8.6" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2d452988ccaacfbf5e0bdbc348fb91d7c8af5bee192173ac3636b5fb6e6715d" +checksum = "bd2b84f2bc39a5705ef27ec785a11c934a41bbd4a24941e257927cddc26b60bf" dependencies = [ "proc-macro2", "quote", - "sqlx-core 0.8.6", - "sqlx-macros-core", - "syn 2.0.106", + "sqlx-core 0.9.0", + "sqlx-macros-core 0.9.0", + "syn", ] [[package]] @@ -7335,7 +7707,7 @@ checksum = "19a9c1841124ac5a61741f96e1d9e2ec77424bf323962dd894bdb93f37d5219b" dependencies = [ "dotenvy", "either", - "heck 0.5.0", + "heck", "hex", "once_cell", "proc-macro2", @@ -7344,10 +7716,36 @@ dependencies = [ "serde_json", "sha2 0.10.9", "sqlx-core 0.8.6", - "sqlx-mysql", - "sqlx-postgres", - "sqlx-sqlite", - "syn 2.0.106", + "sqlx-mysql 0.8.6", + "sqlx-postgres 0.8.6", + "sqlx-sqlite 0.8.6", + "syn", + "tokio", + "url", +] + +[[package]] +name = "sqlx-macros-core" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb8d96de5fdc85a5c4ec813432b523ec637e80ba98f046555f75f7908ddac7c3" +dependencies = [ + "cfg-if", + "dotenvy", + "either", + "heck", + "hex", + "proc-macro2", + "quote", + "serde", + "serde_json", + "sha2 0.10.9", + "sqlx-core 0.9.0", + "sqlx-mysql 0.9.0", + "sqlx-postgres 0.9.0", + "sqlx-sqlite 0.9.0", + "syn", + "thiserror 2.0.18", "tokio", "url", ] @@ -7358,7 +7756,7 @@ version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "aa003f0038df784eb8fecbbac13affe3da23b45194bd57dba231c8f48199c526" dependencies = [ - "atoi 2.0.0", + "atoi", "base64 0.22.1", "bitflags 2.11.1", "byteorder", @@ -7378,7 +7776,7 @@ dependencies = [ "hmac 0.12.1", "itoa", "log", - "md-5", + "md-5 0.10.6", "memchr", "once_cell", "percent-encoding", @@ -7393,7 +7791,35 @@ dependencies = [ "thiserror 2.0.18", "tracing", "uuid", - "whoami", + "whoami 1.6.1", +] + +[[package]] +name = "sqlx-mysql" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90b8020fe17c5f2c245bfa2505d7ef59c5604839527c740266ad2214acebea27" +dependencies = [ + "bitflags 2.11.1", + "byteorder", + "bytes", + "chrono", + "crc", + "digest 0.11.2", + "dotenvy", + "either", + "futures-core", + "futures-util", + "generic-array 0.14.7", + "log", + "percent-encoding", + "serde", + "sha1 0.11.0", + "sha2 0.11.0", + "sqlx-core 0.9.0", + "thiserror 2.0.18", + "tracing", + "uuid", ] [[package]] @@ -7402,14 +7828,14 @@ version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "db58fcd5a53cf07c184b154801ff91347e4c30d17a3562a635ff028ad5deda46" dependencies = [ - "atoi 2.0.0", + "atoi", "base64 0.22.1", "bitflags 2.11.1", "byteorder", "chrono", "crc", "dotenvy", - "etcetera", + "etcetera 0.8.0", "futures-channel", "futures-core", "futures-util", @@ -7417,10 +7843,9 @@ dependencies = [ "hkdf 0.12.4", "hmac 0.12.1", "home", - "ipnetwork", "itoa", "log", - "md-5", + "md-5 0.10.6", "memchr", "once_cell", "rand 0.8.5", @@ -7433,18 +7858,45 @@ dependencies = [ "thiserror 2.0.18", "tracing", "uuid", - "whoami", + "whoami 1.6.1", ] [[package]] -name = "sqlx-rt" -version = "0.6.3" +name = "sqlx-postgres" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "804d3f245f894e61b1e6263c84b23ca675d96753b5abfd5cc8597d86806e8024" +checksum = "87a2bdd6e83f6b3ea525ca9fee568030508b58355a43d0b2c1674d5f79dcd65e" dependencies = [ - "once_cell", - "tokio", - "tokio-rustls 0.23.4", + "atoi", + "base64 0.22.1", + "bitflags 2.11.1", + "byteorder", + "chrono", + "crc", + "dotenvy", + "etcetera 0.11.0", + "futures-channel", + "futures-core", + "futures-util", + "hex", + "hkdf 0.13.0", + "hmac 0.13.0", + "ipnetwork", + "itoa", + "log", + "md-5 0.11.0", + "memchr", + "rand 0.10.1", + "serde", + "serde_json", + "sha2 0.11.0", + "smallvec", + "sqlx-core 0.9.0", + "stringprep", + "thiserror 2.0.18", + "tracing", + "uuid", + "whoami 2.1.2", ] [[package]] @@ -7453,13 +7905,13 @@ version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2d12fe70b2c1b4401038055f90f151b78208de1f9f89a7dbfd41587a10c3eea" dependencies = [ - "atoi 2.0.0", + "atoi", "chrono", - "flume", + "flume 0.11.1", "futures-channel", "futures-core", "futures-executor", - "futures-intrusive 0.5.0", + "futures-intrusive", "futures-util", "libsqlite3-sys", "log", @@ -7473,33 +7925,92 @@ dependencies = [ "uuid", ] +[[package]] +name = "sqlx-sqlite" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "488e99c397a62007e4229aec669a179816339afc6d2620ca6fa420dbee2e982c" +dependencies = [ + "atoi", + "chrono", + "flume 0.12.0", + "form_urlencoded", + "futures-channel", + "futures-core", + "futures-executor", + "futures-intrusive", + "futures-util", + "libsqlite3-sys", + "log", + "percent-encoding", + "serde", + "sqlx-core 0.9.0", + "thiserror 2.0.18", + "tracing", + "url", + "uuid", +] + [[package]] name = "ssh-cipher" -version = "0.2.0" +version = "0.3.0-rc.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "caac132742f0d33c3af65bfcde7f6aa8f62f0e991d80db99149eb9d44708784f" +checksum = "10db6f219196a8528f9ec904d9d45cdad692d65b0e57e72be4dedd1c5fddce36" dependencies = [ - "aes 0.8.4", - "aes-gcm 0.10.3", - "cbc 0.1.2", - "chacha20 0.9.1", - "cipher 0.4.4", - "ctr 0.9.2", + "aead 0.6.1", + "aes 0.9.0", + "aes-gcm 0.11.0", + "cbc", + "chacha20", + "cipher 0.5.1", + "ctr 0.10.0", + "ctutils", + "des", "poly1305", "ssh-encoding", - "subtle", + "zeroize", ] [[package]] name = "ssh-encoding" -version = "0.2.0" +version = "0.3.0-rc.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb9242b9ef4108a78e8cd1a2c98e193ef372437f8c22be363075233321dd4a15" +checksum = "7abf34aa716da5d5b4c496936d042ea282ab392092cd68a72ef6a8863ff8c96a" dependencies = [ "base64ct", "bytes", - "pem-rfc7468 0.7.0", - "sha2 0.10.9", + "crypto-bigint", + "ctutils", + "digest 0.11.2", + "pem-rfc7468 1.0.0", + "zeroize", +] + +[[package]] +name = "ssh-key" +version = "0.7.0-rc.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45735ce3dea95690e4a9e414c4cfde7f79835063c3dcd35881df85a84118e74b" +dependencies = [ + "argon2", + "bcrypt-pbkdf", + "ctutils", + "ed25519-dalek", + "hex", + "hmac 0.13.0", + "p256", + "p384", + "p521", + "rand_core 0.10.1", + "rsa 0.10.0-rc.18", + "sec1", + "serde", + "sha1 0.11.0", + "sha2 0.11.0", + "signature 3.0.0", + "ssh-cipher", + "ssh-encoding", + "zeroize", ] [[package]] @@ -7540,7 +8051,7 @@ dependencies = [ "proc-macro2", "quote", "structmeta-derive", - "syn 2.0.106", + "syn", ] [[package]] @@ -7551,7 +8062,7 @@ checksum = "152a0b65a590ff6c3da95cabe2353ee04e6167c896b28e3b14478c2636c922fc" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn", ] [[package]] @@ -7561,33 +8072,22 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" [[package]] -name = "syn" -version = "1.0.109" +name = "symlink" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] +checksum = "a7973cce6668464ea31f176d85b13c7ab3bba2cb3b77a2ed26abd7801688010a" [[package]] name = "syn" -version = "2.0.106" +version = "2.0.118" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ede7c438028d4436d71104916910f5bb611972c5cfd7f89b8300a8186e6fada6" +checksum = "1b9ae57f904213ebb649ce6895b8a66c66f0203b9319718f69a5612a065b1422" dependencies = [ "proc-macro2", "quote", "unicode-ident", ] -[[package]] -name = "sync_wrapper" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" - [[package]] name = "sync_wrapper" version = "1.0.2" @@ -7605,22 +8105,43 @@ checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn", ] [[package]] name = "sysinfo" -version = "0.29.11" +version = "0.39.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd727fc423c2060f6c92d9534cef765c65a6ed3f428a03d7def74a8c4348e666" +checksum = "2c8bd2130a9b60bee2581bf82cfe89ee836424d1f37dcfa4ce21509611684673" dependencies = [ - "cfg-if", - "core-foundation-sys", "libc", + "memchr", "ntapi", - "once_cell", - "rayon", - "winapi", + "objc2-core-foundation", + "objc2-io-kit", + "objc2-open-directory", + "windows", +] + +[[package]] +name = "system-configuration" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a13f3d0daba03132c0aa9767f98351b3488edc2c100cda2d2ec2b04f3d8d3c8b" +dependencies = [ + "bitflags 2.11.1", + "core-foundation 0.9.4", + "system-configuration-sys", +] + +[[package]] +name = "system-configuration-sys" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4" +dependencies = [ + "core-foundation-sys", + "libc", ] [[package]] @@ -7634,17 +8155,23 @@ dependencies = [ "thiserror 1.0.69", ] +[[package]] +name = "tagptr" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b2093cf4c8eb1e67749a6762251bc9cd836b6fc171623bd0a9d324d37af2417" + [[package]] name = "tempfile" -version = "3.23.0" +version = "3.27.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d31c77bdf42a745371d260a26ca7163f1e0924b64afa0b688e61b5a9fa02f16" +checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd" dependencies = [ - "fastrand 2.3.0", - "getrandom 0.3.3", + "fastrand", + "getrandom 0.4.2", "once_cell", "rustix", - "windows-sys 0.61.1", + "windows-sys 0.61.2", ] [[package]] @@ -7705,7 +8232,7 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn", ] [[package]] @@ -7716,7 +8243,7 @@ checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn", ] [[package]] @@ -7730,24 +8257,16 @@ dependencies = [ [[package]] name = "tiff" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a53f4706d65497df0c4349241deddf35f84cee19c87ed86ea8ca590f4464437" -dependencies = [ - "jpeg-decoder", - "miniz_oxide 0.4.4", - "weezl", -] - -[[package]] -name = "time" -version = "0.1.45" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b797afad3f312d1c66a56d11d0316f916356d11bd158fbc6ca6389ff6bf805a" +checksum = "b63feaf3343d35b6ca4d50483f94843803b0f51634937cc2ec519fc32232bc52" dependencies = [ - "libc", - "wasi 0.10.0+wasi-snapshot-preview1", - "winapi", + "fax", + "flate2", + "half", + "quick-error", + "weezl", + "zune-jpeg", ] [[package]] @@ -7757,7 +8276,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "85c17d80feb7334b40c484e45ed1a5273dfd8bfda537c3be2e74a06a6686f327" dependencies = [ "deranged", + "libc", "num-conv", + "num_threads", "powerfmt", "serde_core", "time-core", @@ -7817,13 +8338,13 @@ dependencies = [ "crossbeam-channel", "dashmap", "encoding_rs_io", - "etcetera", + "etcetera 0.8.0", "grep-searcher", "ignore", "json5", "log", "once_cell", - "parking_lot 0.12.4", + "parking_lot", "rayon", "regex", "serde", @@ -7836,54 +8357,31 @@ dependencies = [ [[package]] name = "tokio" -version = "1.47.1" +version = "1.52.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89e49afdadebb872d3145a5638b59eb0691ea23e46ca484037cfab3b76b95038" +checksum = "8fc7f01b389ac15039e4dc9531aa973a135d7a4135281b12d7c1bc79fd57fffe" dependencies = [ - "backtrace", "bytes", - "io-uring", "libc", "mio", - "parking_lot 0.12.4", + "parking_lot", "pin-project-lite", "signal-hook-registry", - "slab", - "socket2 0.6.0", + "socket2 0.6.4", "tokio-macros", "tracing", - "windows-sys 0.59.0", -] - -[[package]] -name = "tokio-io-timeout" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bd86198d9ee903fedd2f9a2e72014287c0d9167e4ae43b5853007205dda1b76" -dependencies = [ - "pin-project-lite", - "tokio", + "windows-sys 0.61.2", ] [[package]] name = "tokio-macros" -version = "2.5.0" +version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" +checksum = "385a6cb71ab9ab790c5fe8d67f1645e6c450a7ce006a33de03daa956cf70a496" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", -] - -[[package]] -name = "tokio-native-tls" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" -dependencies = [ - "native-tls", - "tokio", + "syn", ] [[package]] @@ -7973,7 +8471,7 @@ version = "0.22.27" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" dependencies = [ - "indexmap 2.11.4", + "indexmap", "serde", "serde_spanned", "toml_datetime", @@ -7987,34 +8485,6 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801" -[[package]] -name = "tonic" -version = "0.9.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3082666a3a6433f7f511c7192923fa1fe07c69332d3c6a2e6bb040b569199d5a" -dependencies = [ - "async-trait", - "axum", - "base64 0.21.7", - "bytes", - "futures-core", - "futures-util", - "h2 0.3.27", - "http 0.2.12", - "http-body 0.4.6", - "hyper 0.14.32", - "hyper-timeout 0.4.1", - "percent-encoding", - "pin-project", - "prost 0.11.9", - "tokio", - "tokio-stream", - "tower 0.4.13", - "tower-layer", - "tower-service", - "tracing", -] - [[package]] name = "tonic" version = "0.14.6" @@ -8022,21 +8492,24 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ac2a5518c70fa84342385732db33fb3f44bc4cc748936eb5833d2df34d6445ef" dependencies = [ "async-trait", + "axum", "base64 0.22.1", "bytes", - "http 1.3.1", - "http-body 1.0.1", + "h2 0.4.14", + "http 1.4.2", + "http-body", "http-body-util", - "hyper 1.9.0", - "hyper-timeout 0.5.2", + "hyper", + "hyper-timeout", "hyper-util", "percent-encoding", "pin-project", - "sync_wrapper 1.0.2", + "socket2 0.6.4", + "sync_wrapper", "tokio", "tokio-rustls 0.26.4", "tokio-stream", - "tower 0.5.3", + "tower", "tower-layer", "tower-service", "tracing", @@ -8050,28 +8523,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "50849f68853be452acf590cde0b146665b8d507b3b8af17261df47e02c209ea0" dependencies = [ "bytes", - "prost 0.14.3", - "tonic 0.14.6", + "prost", + "tonic", ] [[package]] -name = "tower" -version = "0.4.13" +name = "tonic-types" +version = "0.14.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" +checksum = "73ab1b02061f83d519bba3caa167f88f261ef05720ab8ebc954ade70de3348e8" dependencies = [ - "futures-core", - "futures-util", - "indexmap 1.9.3", - "pin-project", - "pin-project-lite", - "rand 0.8.5", - "slab", - "tokio", - "tokio-util", - "tower-layer", - "tower-service", - "tracing", + "prost", + "prost-types", + "tonic", ] [[package]] @@ -8082,10 +8546,10 @@ checksum = "ebe5ef63511595f1344e2d5cfa636d973292adc0eec1f0ad45fae9f0851ab1d4" dependencies = [ "futures-core", "futures-util", - "indexmap 2.11.4", + "indexmap", "pin-project-lite", "slab", - "sync_wrapper 1.0.2", + "sync_wrapper", "tokio", "tokio-util", "tower-layer", @@ -8102,10 +8566,10 @@ dependencies = [ "bitflags 2.11.1", "bytes", "futures-util", - "http 1.3.1", - "http-body 1.0.1", + "http 1.4.2", + "http-body", "pin-project-lite", - "tower 0.5.3", + "tower", "tower-layer", "tower-service", "url", @@ -8137,13 +8601,14 @@ dependencies = [ [[package]] name = "tracing-appender" -version = "0.2.3" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3566e8ce28cc0a3fe42519fc80e6b4c943cc4c8cef275620eb8dac2d3d4e06cf" +checksum = "050686193eb999b4bb3bc2acfa891a13da00f79734704c4b8b4ef1a10b368a3c" dependencies = [ "crossbeam-channel", - "thiserror 1.0.69", - "time 0.3.51", + "symlink", + "thiserror 2.0.18", + "time", "tracing-subscriber", ] @@ -8155,7 +8620,7 @@ checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn", ] [[package]] @@ -8181,9 +8646,9 @@ dependencies = [ [[package]] name = "tracing-opentelemetry" -version = "0.32.1" +version = "0.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ac28f2d093c6c477eaa76b23525478f38de514fa9aeb1285738d4b97a9552fc" +checksum = "adbc64cba7137545b8044cb1fe9814f7aacf3c6b5f9b45be8bb5db538befdb26" dependencies = [ "js-sys", "opentelemetry", @@ -8214,7 +8679,7 @@ dependencies = [ "matchers", "nu-ansi-term", "once_cell", - "parking_lot 0.12.4", + "parking_lot", "regex-automata", "serde", "serde_json", @@ -8229,58 +8694,11 @@ dependencies = [ [[package]] name = "tracing-unwrap" -version = "0.9.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7908a5f1475756bd7f81d6fe7e3607f13b33562c3ec8f9fb7502df790350f74a" -dependencies = [ - "tracing", -] - -[[package]] -name = "trust-dns-proto" -version = "0.23.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3119112651c157f4488931a01e586aa459736e9d6046d3bd9105ffb69352d374" -dependencies = [ - "async-trait", - "cfg-if", - "data-encoding", - "enum-as-inner", - "futures-channel", - "futures-io", - "futures-util", - "idna 0.4.0", - "ipnet", - "once_cell", - "rand 0.8.5", - "ring 0.16.20", - "smallvec", - "thiserror 1.0.69", - "tinyvec", - "tokio", - "tracing", - "url", -] - -[[package]] -name = "trust-dns-resolver" -version = "0.23.2" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10a3e6c3aff1718b3c73e395d1f35202ba2ffa847c6a62eea0db8fb4cfe30be6" +checksum = "c4e33415be97f5ae70322d6fefc696bbc08887d8835400d6c77f059469b30354" dependencies = [ - "cfg-if", - "futures-util", - "ipconfig", - "lru-cache", - "once_cell", - "parking_lot 0.12.4", - "rand 0.8.5", - "resolv-conf", - "smallvec", - "thiserror 1.0.69", - "tokio", "tracing", - "trust-dns-proto", ] [[package]] @@ -8290,26 +8708,31 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" [[package]] -name = "twoway" -version = "0.2.2" +name = "typed-builder" +version = "0.23.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c57ffb460d7c24cd6eda43694110189030a3d1dfe418416d9468fd1c1d290b47" +checksum = "31aa81521b70f94402501d848ccc0ecaa8f93c8eb6999eb9747e72287757ffda" dependencies = [ - "memchr", - "unchecked-index", + "typed-builder-macro", ] [[package]] -name = "typed-builder" -version = "0.14.0" +name = "typed-builder-macro" +version = "0.23.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64cba322cb9b7bc6ca048de49e83918223f35e7a86311267013afff257004870" +checksum = "076a02dc54dd46795c2e9c8282ed40bcfb1e22747e955de9389a1de28190fb26" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn", ] +[[package]] +name = "typed-path" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e28f89b80c87b8fb0cf04ab448d5dd0dd0ade2f8891bae878de66a75a28600e" + [[package]] name = "typeid" version = "1.0.3" @@ -8343,7 +8766,7 @@ checksum = "27a7a9b72ba121f6f1f6c3632b85604cac41aedb5ddc70accbebb6cac83de846" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn", ] [[package]] @@ -8367,12 +8790,6 @@ version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" -[[package]] -name = "unchecked-index" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eeba86d422ce181a719445e51872fa30f1f7413b62becb52e95ec91aa262d85c" - [[package]] name = "unic-char-property" version = "0.9.0" @@ -8468,12 +8885,6 @@ version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" -[[package]] -name = "unicode_categories" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39ec24b3121d976906ece63c9daad25b85969647682eee313cb5779fdd69e14e" - [[package]] name = "universal-hash" version = "0.5.1" @@ -8514,14 +8925,15 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "url" -version = "2.5.7" +version = "2.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08bc136a29a3d1758e07a9cca267be308aeebf5cfd5a10f3f67ab2097683ef5b" +checksum = "ff67a8a4397373c3ef660812acab3268222035010ab8680ec4215f38ba3d0eed" dependencies = [ "form_urlencoded", - "idna 1.1.0", + "idna", "percent-encoding", "serde", + "serde_derive", ] [[package]] @@ -8538,11 +8950,11 @@ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "utoipa" -version = "4.2.3" +version = "5.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5afb1a60e207dca502682537fefcfd9921e71d0b83e9576060f09abc6efab23" +checksum = "8bde15df68e80b16c7d16b9616e80770ad158988daa56a27dccd1e55558b0160" dependencies = [ - "indexmap 2.11.4", + "indexmap", "serde", "serde_json", "utoipa-gen", @@ -8550,24 +8962,23 @@ dependencies = [ [[package]] name = "utoipa-gen" -version = "4.3.1" +version = "5.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20c24e8ab68ff9ee746aad22d39b5535601e6416d1b0feeabf78be986a5c4392" +checksum = "6ba0b99ee52df3028635d93840c797102da61f8a7bb3cf751032455895b52ef8" dependencies = [ - "proc-macro-error", "proc-macro2", "quote", "regex", - "syn 2.0.106", + "syn", "url", "uuid", ] [[package]] name = "utoipa-rapidoc" -version = "1.0.0" +version = "6.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d54a9a294323cfd98cb7e210ffa3d65ec83f3c09b17b5c49ce17d9658101e162" +checksum = "e5f8f5abd341cce16bb4f09a8bafc087d4884a004f25fb980e538d51d6501dab" dependencies = [ "actix-web", "serde", @@ -8588,6 +8999,17 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "v_frame" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "666b7727c8875d6ab5db9533418d7c764233ac9c0cff1d469aec8fa127597be2" +dependencies = [ + "aligned-vec", + "num-traits", + "wasm-bindgen", +] + [[package]] name = "valuable" version = "0.1.1" @@ -8602,19 +9024,41 @@ checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" [[package]] name = "vergen" -version = "6.0.2" +version = "10.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3893329bee75c101278e0234b646fa72221547d63f97fb66ac112a0569acd110" +checksum = "b5574dd2f922b1a46a06a4b1dc11193a4012108fd54cf725e1816cb8183d8778" dependencies = [ "anyhow", - "cfg-if", - "chrono", - "enum-iterator", - "getset", - "git2", + "bon", "rustc_version", "rustversion", - "thiserror 1.0.69", + "time", + "vergen-lib", +] + +[[package]] +name = "vergen-gitcl" +version = "10.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23d9fead6d7c515ac3a658e1a65d36925525d5cfdea414e27eb99b99ffd92bfa" +dependencies = [ + "anyhow", + "bon", + "rustversion", + "time", + "vergen", + "vergen-lib", +] + +[[package]] +name = "vergen-lib" +version = "10.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8cd42fd155c2c2971f6d00face12ec245fbb604fce011ccaf2306d014c2e97ca" +dependencies = [ + "anyhow", + "bon", + "rustversion", ] [[package]] @@ -8648,12 +9092,6 @@ version = "0.9.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" -[[package]] -name = "wasi" -version = "0.10.0+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f" - [[package]] name = "wasi" version = "0.11.1+wasi-snapshot-preview1" @@ -8716,7 +9154,7 @@ dependencies = [ "log", "proc-macro2", "quote", - "syn 2.0.106", + "syn", "wasm-bindgen-shared", ] @@ -8751,7 +9189,7 @@ checksum = "9f07d2f20d4da7b26400c9f4a0511e6e0345b040694e8a75bd41d578fa4421d7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -8782,7 +9220,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bb0e353e6a2fbdc176932bbaab493762eb1255a7900fe0fea1a2f96c296cc909" dependencies = [ "anyhow", - "indexmap 2.11.4", + "indexmap", "wasm-encoder", "wasmparser", ] @@ -8808,7 +9246,7 @@ checksum = "47b807c72e1bac69382b3a6fb3dbe8ea4c0ed87ff5629b8685ae6b9a611028fe" dependencies = [ "bitflags 2.11.1", "hashbrown 0.15.5", - "indexmap 2.11.4", + "indexmap", "semver", ] @@ -8834,9 +9272,9 @@ dependencies = [ [[package]] name = "webauthn-attestation-ca" -version = "0.5.4" +version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fafcf13f7dc1fb292ed4aea22cdd3757c285d7559e9748950ee390249da4da6b" +checksum = "6475c0bbd1a3f04afaa3e98880408c5be61680c5e6bd3c6f8c250990d5d3e18e" dependencies = [ "base64urlsafedata", "openssl", @@ -8848,9 +9286,9 @@ dependencies = [ [[package]] name = "webauthn-rs" -version = "0.5.4" +version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b24d082d3360258fefb6ffe56123beef7d6868c765c779f97b7a2fcf06727f8" +checksum = "6c548915e0e92ee946bbf2aecf01ea21bef53d974b0793cc6732ba81a03fc422" dependencies = [ "base64urlsafedata", "serde", @@ -8862,9 +9300,9 @@ dependencies = [ [[package]] name = "webauthn-rs-core" -version = "0.5.4" +version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15784340a24c170ce60567282fb956a0938742dbfbf9eff5df793a686a009b8b" +checksum = "296d2d501feb715d80b8e186fb88bab1073bca17f460303a1013d17b673bea6a" dependencies = [ "base64 0.21.7", "base64urlsafedata", @@ -8889,9 +9327,9 @@ dependencies = [ [[package]] name = "webauthn-rs-proto" -version = "0.5.4" +version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16a1fb2580ce73baa42d3011a24de2ceab0d428de1879ece06e02e8c416e497c" +checksum = "c37393beac9c1ed1ca6dbb30b1e01783fb316ab3a45d90ecd48c99052dd7ef1e" dependencies = [ "base64 0.21.7", "base64urlsafedata", @@ -8910,6 +9348,15 @@ dependencies = [ "untrusted 0.9.0", ] +[[package]] +name = "webpki-root-certs" +version = "1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d46a5a140e6f7afeccd8eae97eff335163939eac8b929834875168b29b3d267" +dependencies = [ + "rustls-pki-types", +] + [[package]] name = "webpki-roots" version = "0.22.6" @@ -8945,9 +9392,9 @@ checksum = "a751b3277700db47d3e574514de2eced5e54dc8a5436a3bf7a0b248b2cee16f3" [[package]] name = "which" -version = "8.0.2" +version = "8.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81995fafaaaf6ae47a7d0cc83c67caf92aeb7e5331650ae6ff856f7c0c60c459" +checksum = "48d7cd18d4acb58fb3cdfe9ea54e6cd96a4e7d4cc45c56338b236e82dad47248" dependencies = [ "libc", ] @@ -8960,9 +9407,14 @@ checksum = "5d4a4db5077702ca3015d3d02d74974948aba2ad9e12ab7df718ee64ccd7e97d" dependencies = [ "libredox", "wasite", - "web-sys", ] +[[package]] +name = "whoami" +version = "2.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "998767ef88740d1f5b0682a9c53c24431453923962269c2db68ee43788c5a40d" + [[package]] name = "widestring" version = "1.2.1" @@ -8991,7 +9443,7 @@ version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" dependencies = [ - "windows-sys 0.61.1", + "windows-sys 0.61.2", ] [[package]] @@ -9053,7 +9505,7 @@ checksum = "edb307e42a74fb6de9bf3a02d9712678b22399c87e6fa869d6dfcd8c1b7754e0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn", ] [[package]] @@ -9064,14 +9516,14 @@ checksum = "c0abd1ddbc6964ac14db11c7213d6532ef34bd9aa042c2e5935f59d7908b46a5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn", ] [[package]] name = "windows-link" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45e46c0661abb7180e7b9c281db115305d49ca1709ab8242adf09666d2173c65" +checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" [[package]] name = "windows-numerics" @@ -9101,6 +9553,15 @@ dependencies = [ "windows-link", ] +[[package]] +name = "windows-sys" +version = "0.45.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" +dependencies = [ + "windows-targets 0.42.2", +] + [[package]] name = "windows-sys" version = "0.48.0" @@ -9139,13 +9600,28 @@ dependencies = [ [[package]] name = "windows-sys" -version = "0.61.1" +version = "0.61.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f109e41dd4a3c848907eb83d5a42ea98b3769495597450cf6d153507b166f0f" +checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" dependencies = [ "windows-link", ] +[[package]] +name = "windows-targets" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" +dependencies = [ + "windows_aarch64_gnullvm 0.42.2", + "windows_aarch64_msvc 0.42.2", + "windows_i686_gnu 0.42.2", + "windows_i686_msvc 0.42.2", + "windows_x86_64_gnu 0.42.2", + "windows_x86_64_gnullvm 0.42.2", + "windows_x86_64_msvc 0.42.2", +] + [[package]] name = "windows-targets" version = "0.48.5" @@ -9203,6 +9679,12 @@ dependencies = [ "windows-link", ] +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" + [[package]] name = "windows_aarch64_gnullvm" version = "0.48.5" @@ -9221,6 +9703,12 @@ version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764" +[[package]] +name = "windows_aarch64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" + [[package]] name = "windows_aarch64_msvc" version = "0.48.5" @@ -9239,6 +9727,12 @@ version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c" +[[package]] +name = "windows_i686_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" + [[package]] name = "windows_i686_gnu" version = "0.48.5" @@ -9269,6 +9763,12 @@ version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11" +[[package]] +name = "windows_i686_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" + [[package]] name = "windows_i686_msvc" version = "0.48.5" @@ -9287,6 +9787,12 @@ version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d" +[[package]] +name = "windows_x86_64_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" + [[package]] name = "windows_x86_64_gnu" version = "0.48.5" @@ -9305,6 +9811,12 @@ version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba" +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" + [[package]] name = "windows_x86_64_gnullvm" version = "0.48.5" @@ -9323,6 +9835,12 @@ version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57" +[[package]] +name = "windows_x86_64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" + [[package]] name = "windows_x86_64_msvc" version = "0.48.5" @@ -9391,7 +9909,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ea61de684c3ea68cb082b7a88508a8b27fcc8b797d738bfc99a82facf1d752dc" dependencies = [ "anyhow", - "heck 0.5.0", + "heck", "wit-parser", ] @@ -9402,10 +9920,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b7c566e0f4b284dd6561c786d9cb0142da491f46a9fbed79ea69cdad5db17f21" dependencies = [ "anyhow", - "heck 0.5.0", - "indexmap 2.11.4", + "heck", + "indexmap", "prettyplease", - "syn 2.0.106", + "syn", "wasm-metadata", "wit-bindgen-core", "wit-component", @@ -9421,7 +9939,7 @@ dependencies = [ "prettyplease", "proc-macro2", "quote", - "syn 2.0.106", + "syn", "wit-bindgen-core", "wit-bindgen-rust", ] @@ -9434,7 +9952,7 @@ checksum = "9d66ea20e9553b30172b5e831994e35fbde2d165325bec84fc43dbf6f4eb9cb2" dependencies = [ "anyhow", "bitflags 2.11.1", - "indexmap 2.11.4", + "indexmap", "log", "serde", "serde_derive", @@ -9453,7 +9971,7 @@ checksum = "ecc8ac4bc1dc3381b7f59c34f00b67e18f910c2c0f50015669dde7def656a736" dependencies = [ "anyhow", "id-arena", - "indexmap 2.11.4", + "indexmap", "log", "semver", "serde", @@ -9483,7 +10001,7 @@ dependencies = [ "oid-registry", "rusticata-macros", "thiserror 1.0.69", - "time 0.3.51", + "time", ] [[package]] @@ -9496,6 +10014,12 @@ dependencies = [ "rustix", ] +[[package]] +name = "y4m" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a5a4b21e1a62b67a2970e6831bc091d7b87e119e7f9791aef9702e3bef04448" + [[package]] name = "yaup" version = "0.3.1" @@ -9527,7 +10051,7 @@ checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn", "synstructure", ] @@ -9548,7 +10072,7 @@ checksum = "88d2b8d9c68ad2b9e4340d7832716a4d21a22a1154777ad56ea55c51a9cf3831" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn", ] [[package]] @@ -9568,7 +10092,7 @@ checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn", "synstructure", ] @@ -9589,7 +10113,7 @@ checksum = "85a5b4158499876c763cb03bc4e49185d3cccbabb15b33c627f7884f43db852e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn", ] [[package]] @@ -9622,20 +10146,21 @@ checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn", ] [[package]] name = "zip" -version = "0.5.13" +version = "8.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93ab48844d61251bb3835145c521d88aa4031d7139e8485990f60ca911fa0815" +checksum = "2d04a6b5381502aa6087c94c669499eb1602eb9c5e8198e534de571f7154809b" dependencies = [ - "byteorder", "crc32fast", "flate2", - "thiserror 1.0.69", - "time 0.1.45", + "indexmap", + "memchr", + "typed-path", + "zopfli", ] [[package]] @@ -9644,6 +10169,24 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2f06ae92f42f5e5c42443fd094f245eb656abf56dd7cce9b8b263236565e00f2" +[[package]] +name = "zlib-rs" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "977347db8caa080403f6b6b7c1cda9479a8e869316f7e13a59b19076a40f94e3" + +[[package]] +name = "zopfli" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f05cd8797d63865425ff89b5c4a48804f35ba0ce8d125800027ad6017d2b5249" +dependencies = [ + "bumpalo", + "crc32fast", + "log", + "simd-adler32", +] + [[package]] name = "zstd" version = "0.11.2+zstd.1.5.2" @@ -9690,3 +10233,27 @@ dependencies = [ "cc", "pkg-config", ] + +[[package]] +name = "zune-core" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb8a0807f7c01457d0379ba880ba6322660448ddebc890ce29bb64da71fb40f9" + +[[package]] +name = "zune-inflate" +version = "0.2.54" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73ab332fe2f6680068f3582b16a24f90ad7096d5d39b974d1c0aff0125116f02" +dependencies = [ + "simd-adler32", +] + +[[package]] +name = "zune-jpeg" +version = "0.5.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27bc9d5b815bc103f142aa054f561d9187d191692ec7c2d1e2b4737f8dbd7296" +dependencies = [ + "zune-core", +] diff --git a/Cargo.toml b/Cargo.toml index 2286f36..e1536d6 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -25,16 +25,17 @@ struct_excessive_bools = "allow" unused_self = "allow" [workspace.dependencies] -anyhow = "1.0.52" -base64 = "0.13.0" -chrono = { version = "0.4.19", features = ["serde"] } +anyhow = "1.0.103" +base64 = "0.22.1" +chrono = { version = "0.4.45", features = ["serde"] } gix = { version = "0.75.0", features = ["max-performance"] } hex = "0.4.3" rand = "0.10.1" -serde = { version = "1.0.133", features = ["derive"] } -serde_json = "1.0.75" -tracing = "0.1.29" -uuid = { version = "1", features = ["serde"] } +serde = { version = "1.0.228", features = ["derive"] } +serde_json = "1.0.145" +sha2 = "0.11.0" +tracing = "0.1.44" +uuid = { version = "1.23.1", features = ["serde"] } [patch.crates-io] gitarena-macros = { path = "gitarena-macros" } diff --git a/gitarena-issues/Cargo.toml b/gitarena-issues/Cargo.toml index 812c09f..186bd0d 100644 --- a/gitarena-issues/Cargo.toml +++ b/gitarena-issues/Cargo.toml @@ -19,10 +19,10 @@ hex = { workspace = true } rand = { workspace = true } serde = { workspace = true } serde_json = { workspace = true } -sha2 = "0.11.0" +sha2 = { workspace = true } tracing = { workspace = true } uuid = { workspace = true, features = ["v4"] } [dev-dependencies] -tempfile = "3.23.0" -which = "8.0.2" +tempfile = "3.27.0" +which = "8.0.4" diff --git a/gitarena-issues/src/author.rs b/gitarena-issues/src/author.rs index a032093..6e32d9d 100644 --- a/gitarena-issues/src/author.rs +++ b/gitarena-issues/src/author.rs @@ -1,4 +1,6 @@ use anyhow::{Context, Result, bail}; +use base64::Engine as _; +use base64::engine::general_purpose; use chrono::Utc; use gix::actor::Signature; use gix::bstr::ByteSlice; @@ -58,7 +60,7 @@ impl Author { /// - `created_at`: Unix timestamp when the user was created pub fn from_user(user_id: Uuid, username: &str, email: &str, created_at: i64) -> Self { let nonce_hash = Sha256::digest(format!("gitarena-identity:{user_id}").as_bytes()); - let nonce = base64::encode(&nonce_hash[..20]); + let nonce = general_purpose::STANDARD.encode(&nonce_hash[..20]); let identity_json = build_identity_json(username, email, &nonce, created_at); diff --git a/gitarena-issues/src/operation.rs b/gitarena-issues/src/operation.rs index db0d2bd..1e22847 100644 --- a/gitarena-issues/src/operation.rs +++ b/gitarena-issues/src/operation.rs @@ -1,5 +1,7 @@ use crate::author::Author; use anyhow::Result; +use base64::Engine as _; +use base64::engine::general_purpose; use rand::RngExt; use serde::{Deserialize, Serialize}; use sha2::{Digest, Sha256}; @@ -100,5 +102,5 @@ pub struct OperationPack { #[must_use] pub fn random_nonce() -> String { let bytes: [u8; 20] = rand::rng().random(); - base64::encode(bytes) + general_purpose::STANDARD.encode(bytes) } diff --git a/gitarena-macros/Cargo.toml b/gitarena-macros/Cargo.toml index d8e8d8f..7b0bef9 100644 --- a/gitarena-macros/Cargo.toml +++ b/gitarena-macros/Cargo.toml @@ -13,7 +13,7 @@ workspace = true proc-macro = true [dependencies] -proc-macro-error = "1.0.4" -proc-macro2 = "1.0.27" -quote = "1.0.9" -syn = { version = "1.0.73", features = ["full"] } +proc-macro-error2 = "2.0.0" +proc-macro2 = "1.0.106" +quote = "1.0.46" +syn = { version = "2.0.118", features = ["full"] } diff --git a/gitarena-macros/src/ipc_packet.rs b/gitarena-macros/src/ipc_packet.rs index fc2e8b4..f2e28f4 100644 --- a/gitarena-macros/src/ipc_packet.rs +++ b/gitarena-macros/src/ipc_packet.rs @@ -1,9 +1,9 @@ use proc_macro::TokenStream; -use proc_macro_error::{emit_call_site_error, emit_error}; +use proc_macro_error2::{emit_call_site_error, emit_error}; use proc_macro2::{Ident, Span}; use quote::quote; use syn::spanned::Spanned; -use syn::{DeriveInput, Lit, Meta, NestedMeta, parse_macro_input}; +use syn::{DeriveInput, LitInt, LitStr, parse_macro_input}; pub(crate) fn ipc_packet(input: TokenStream) -> TokenStream { let mut input = parse_macro_input!(input as DeriveInput); @@ -13,60 +13,41 @@ pub(crate) fn ipc_packet(input: TokenStream) -> TokenStream { let mut packet_id = None; input.attrs.retain(|attribute| { - if let Ok(Meta::List(list)) = attribute.parse_meta() { - let ipc = list.path.segments.first().is_some_and(|segment| segment.ident == "ipc"); - - if ipc { - for args in list.nested { - if let NestedMeta::Meta(Meta::NameValue(pair)) = args - && let Some(segment) = pair.path.segments.first() - { - let identifier = segment.ident.to_string(); - let value = pair.lit; + if !attribute.path().is_ident("ipc") { + return true; + } - match identifier.as_str() { - "packet" => { - if let Lit::Str(value) = value { - category = Some(value.value()); - } else { - emit_error! { - value.span(), - "packet requires a string argument" - } - } - } - "id" => { - if let Lit::Int(value) = value { - packet_id = if let Ok(id) = value.base10_parse::() { - Some(id) - } else { - emit_error! { - value.span(), - "id argument could not be parsed into u64" - } + if let Err(e) = attribute.parse_nested_meta(|meta| { + let ident = meta.path.get_ident().map(|i| i.to_string()).unwrap_or_default(); + let value = meta.value()?; - None - }; - } else { - emit_error! { - value.span(), - "id requires a int argument" - } - } - } - _ => emit_error! { - segment.span(), - "unknown identifier, expected `packet` or `id`" - }, + match ident.as_str() { + "packet" => { + let s: LitStr = value.parse()?; + category = Some(s.value()); + } + "id" => { + let n: LitInt = value.parse()?; + match n.base10_parse::() { + Ok(id) => { + packet_id = Some(id); + } + Err(_) => { + emit_error!(n.span(), "id argument could not be parsed into u64"); } } } - - return false; + _ => { + emit_error!(meta.path.span(), "unknown identifier, expected `packet` or `id`"); + } } + + Ok(()) + }) { + emit_call_site_error!("{}", e); } - true + false }); if let (Some(category), Some(packet_id)) = (category, packet_id) { diff --git a/gitarena-macros/src/lib.rs b/gitarena-macros/src/lib.rs index 4e197db..c8a895a 100644 --- a/gitarena-macros/src/lib.rs +++ b/gitarena-macros/src/lib.rs @@ -4,7 +4,7 @@ use crate::ipc_packet::ipc_packet as internal_ipc_packet; use crate::route::route as internal_route; use proc_macro::TokenStream; -use proc_macro_error::proc_macro_error; +use proc_macro_error2::proc_macro_error; mod config; mod ipc_packet; diff --git a/gitarena-macros/src/route.rs b/gitarena-macros/src/route.rs index c1efd5a..44bc732 100644 --- a/gitarena-macros/src/route.rs +++ b/gitarena-macros/src/route.rs @@ -1,46 +1,53 @@ use proc_macro::TokenStream; -use proc_macro_error::{abort, abort_call_site, abort_if_dirty, emit_error}; +use proc_macro_error2::{abort, abort_call_site, abort_if_dirty, emit_error}; use proc_macro2::{Ident, Span, TokenStream as TokenStream2}; use quote::{ToTokens, quote}; +use syn::parse::Parser; +use syn::punctuated::Punctuated; use syn::spanned::Spanned; -use syn::{AttributeArgs, FnArg, ItemFn, Lit, LitStr, Meta, NestedMeta, Pat, parse_macro_input}; +use syn::{Expr, ExprAssign, ExprLit, FnArg, ItemFn, Lit, LitStr, Pat, Token, parse_macro_input}; #[allow(clippy::too_many_lines)] pub(crate) fn route(args: TokenStream, input: TokenStream) -> TokenStream { - let mut args = parse_macro_input!(args as AttributeArgs); + let parser = Punctuated::::parse_terminated; + let mut args: Vec = match parser.parse(args.clone()) { + Ok(exprs) => exprs.into_iter().collect(), + Err(e) => return e.to_compile_error().into(), + }; + let mut input = parse_macro_input!(input as ItemFn); let mut error_type = ErrorDisplayType::Unset; let mut error_type_index = 0; let mut sanitized_first_arg = None; - for (index, meta) in args.iter().enumerate() { - match meta { - NestedMeta::Meta(meta) => { - if let Meta::NameValue(name_value) = meta { - if let Some(segment) = name_value.path.segments.first() { + for (index, expr) in args.iter().enumerate() { + match expr { + Expr::Assign(ExprAssign { left, right, .. }) => { + if let Expr::Path(path) = left.as_ref() { + if let Some(segment) = path.path.segments.first() { let lowered = segment.ident.to_string().to_lowercase(); if lowered.as_str() == "err" - && let Some(parsed_error_type) = match_error_type(&name_value.lit) + && let Some(parsed_error_type) = match_error_type(right.as_ref()) { error_type = parsed_error_type; error_type_index = index; } } else { emit_error! { - meta.span(), + path.path.span(), "meta name cannot be empty" } } } } - NestedMeta::Lit(literal) if index == 0 => { - if let Some(meta) = sanitize_first_argument(literal) { - sanitized_first_arg = Some(meta); + Expr::Lit(ExprLit { lit: Lit::Str(s), .. }) if index == 0 => { + if let Some(sanitized) = sanitize_first_argument(&s) { + sanitized_first_arg = Some(sanitized); } } - NestedMeta::Lit(_) => { /* ignored - actix web will error if the attribute is invalid */ } + _ => { /* ignored - actix web will error if the attribute is invalid */ } } } @@ -55,8 +62,8 @@ pub(crate) fn route(args: TokenStream, input: TokenStream) -> TokenStream { args.remove(error_type_index); // This cannot be done inline (with &mut) because of https://github.com/rust-lang/rust/issues/59159 - if let Some(meta) = sanitized_first_arg { - args.insert(0, meta); + if let Some(sanitized) = sanitized_first_arg { + args.insert(0, sanitized); args.remove(1); } @@ -178,9 +185,9 @@ impl ToTokens for ErrorDisplayType { } } -fn match_error_type(input: &Lit) -> Option { - if let Lit::Str(str) = input { - let value = str.value().to_lowercase(); +fn match_error_type(input: &Expr) -> Option { + if let Expr::Lit(ExprLit { lit: Lit::Str(s), .. }) = input { + let value = s.value().to_lowercase(); return match value.as_str() { "html" => Some(ErrorDisplayType::Html), @@ -218,19 +225,20 @@ fn match_error_type(input: &Lit) -> Option { /// Transforms routes which are only a "/" to an empty string. This allows scoped routes to have index /// pages without having to declare their route with a literal empty string (which is quite confusing). -fn sanitize_first_argument(literal: &Lit) -> Option { - if let Lit::Str(str) = literal { - let value = str.value(); - - if value.is_empty() { - emit_error! { - str.span(), - "route cannot be empty"; - help = "if you want to match on index, use \"/\"" - } - } else if value == "/" { - return Some(NestedMeta::Lit(Lit::Str(LitStr::new("", str.span())))); +fn sanitize_first_argument(str: &LitStr) -> Option { + let value = str.value(); + + if value.is_empty() { + emit_error! { + str.span(), + "route cannot be empty"; + help = "if you want to match on index, use \"/\"" } + } else if value == "/" { + return Some(Expr::Lit(ExprLit { + attrs: vec![], + lit: Lit::Str(LitStr::new("", str.span())), + })); } None diff --git a/gitarena/Cargo.toml b/gitarena/Cargo.toml index a2f64fb..20e9fd6 100644 --- a/gitarena/Cargo.toml +++ b/gitarena/Cargo.toml @@ -16,82 +16,83 @@ name = "gitarena" workspace = true [dependencies] -actix-identity = "0.4.0" -actix-multipart = "0.4.0" -actix-web = { version = "4.0.1", features = ["secure-cookies"] } +actix-identity = "0.9.0" +actix-multipart = "0.8.0" +actix-session = { version = "0.11.0", features = ["cookie-session"] } +actix-web = { version = "4.14.0", features = ["secure-cookies"] } anyhow = { workspace = true } askalono = { version = "0.4.4", git = "https://github.com/mellowagain/askalono" } # Currently uses my own fork until https://github.com/jpeddicord/askalono/pull/73 is merged askama = { version = "0.16.0", default-features = false, features = ["config", "derive", "std"] } -async-compression = { version = "0.3.8", features = ["gzip", "tokio"] } -async-recursion = "1.0.0" -async-trait = "0.1.52" -awc = { version = "3.0.0", features = ["rustls"] } # awc uses rustls for the time being because of version conflicts with openssl +async-compression = { version = "0.4.42", features = ["gzip", "tokio"] } +async-recursion = "1.1.1" +async-trait = "0.1.89" +awc = { version = "3.8.2", features = ["rustls"] } base64 = { workspace = true } -bstr = "1.12.1" -bytes = "1.11.1" +bstr = "1.12.3" +bytes = "1.12.0" chrono = { workspace = true } -console-subscriber = { version = "0.1.3", features = ["parking_lot"] } +console-subscriber = { version = "0.5.0", features = ["parking_lot"] } derive_more = { version = "2.1.1", features = ["debug"] } dos-date-time = { version = "0.3.0", features = ["chrono"] } -either = "1.15.0" -fang = { version = "0.11.0-rc1", default-features = false, features = ["asynk-postgres"], git = "https://github.com/ayrat555/fang", rev = "f7b5cac" } +either = "1.16.0" +fang = { version = "0.11.0-rc1", default-features = false, features = ["asynk-postgres"], git = "https://github.com/rustworthy/fang", rev = "187a10be2024b8f78c0a85af32294aafd183e248" } fs2 = "0.4.3" -fs_extra = "1.2.0" -futures = "0.3.19" -futures-locks = "0.7.0" +fs_extra = "1.3.0" +futures = "0.3.32" +futures-locks = "0.7.1" git2 = "0.20.0" gitarena-issues = { path = "../gitarena-issues" } gitarena-macros = { path = "../gitarena-macros" } gix = { workspace = true, features = ["async-network-client"] } hex = { workspace = true } -image = "0.23.14" +hickory-resolver = { version = "0.26.1", features = ["dnssec-ring"] } +http = "1.4.2" +image = "0.25.10" infer = "0.19.0" -ipnetwork = { version = "=0.20.0", features = ["serde"] } # needs to be in sync with the version sqlx uses -itertools = "0.10.3" -lettre = { version = "0.10.0-rc.4", features = ["smtp-transport", "tokio1", "tokio1-native-tls"] } -linguist = "0.1.9" -maxminddb = "0.24" -md5 = "0.7.0" +ipnetwork = { version = "0.21.1", features = ["serde"] } +itertools = "0.15.0" +lettre = { version = "0.11.22", default-features = false, features = ["smtp-transport", "tokio1", "tokio1-rustls", "rustls-tls", "ring", "builder", "hostname"] } +linguist = "0.1.10" +log = "0.4.33" +maxminddb = "0.29.0" +md5 = "0.8.0" memmem = "0.1.1" meilisearch-sdk = "0.33.0" -num_cpus = "1.13.1" +num_cpus = "1.17.0" oauth2 = { version = "4.1.0", default-features = false, git = "https://github.com/mellowagain/oauth2-rs" } -http = "1.3.1" -object_store = { version = "0.13.2", features = ["tokio", "http", "aws"] } -once_cell = "1.9.0" -opentelemetry = "0.31.0" -opentelemetry-appender-tracing = { version = "0.31.1", default-features = false, features = ["log"] } -opentelemetry-instrumentation-actix-web = { version = "0.23.0", features = ["metrics", "awc"] } -opentelemetry-otlp = { version = "0.31.1", features = ["grpc-tonic", "tls-webpki-roots", "http-proto", "http-json", "reqwest-rustls-webpki-roots"] } -opentelemetry-semantic-conventions = "0.31.0" -opentelemetry_sdk = { version = "0.31.0", features = ["rt-tokio"] } +object_store = { version = "0.14.0", features = ["tokio", "http", "aws"] } +once_cell = "1.21.4" +opentelemetry = "0.32.0" +opentelemetry-appender-tracing = { version = "0.32.0", default-features = false, features = ["log"] } +opentelemetry-instrumentation-actix-web = { version = "0.24.0", features = ["metrics", "awc"] } +opentelemetry-otlp = { version = "0.32.0", features = ["grpc-tonic", "tls-webpki-roots", "http-proto", "http-json", "reqwest-rustls-webpki-roots"] } +opentelemetry-semantic-conventions = "0.32.1" +opentelemetry_sdk = { version = "0.32.1", features = ["rt-tokio"] } qstring = "0.7.2" rand = { workspace = true } -russh = { version = "0.60.2", features = ["aws-lc-rs", "serde"] } -rust-argon2 = { version = "1.0.0", features = ["crossbeam-utils"] } +russh = { version = "0.61.2", features = ["aws-lc-rs", "serde"] } +rust-argon2 = { version = "3.0.0", features = ["crossbeam-utils"] } serde = { workspace = true } -sha2 = "0.10" +sha2 = { workspace = true } serde_cbor_2 = "0.13.0" serde_json = { workspace = true } -sqlx = { version = "0.8.6", features = ["chrono", "ipnetwork", "json", "postgres", "runtime-tokio", "tls-rustls-ring-webpki", "uuid"] } -sysinfo = "0.29.0" -time = "0.3.5" +sqlx = { version = "0.9.0", features = ["chrono", "ipnetwork", "json", "postgres", "runtime-tokio", "tls-rustls-ring-webpki", "uuid"] } +sysinfo = "0.39.5" +time = "=0.3.51" tokei = { version = "14.0.0", default-features = false } -tokio = { version = "1.28.2", features = ["full", "tracing"] } -tokio-tar = "0.3.0" +tokio = { version = "1.52.3", features = ["full", "tracing"] } +tokio-tar = "0.3.1" tracing = { workspace = true } -tracing-appender = "0.2.0" -tracing-opentelemetry = "0.32.1" -tracing-subscriber = { version = "0.3.6", features = ["env-filter", "json", "std"] } -tracing-unwrap = "0.9.2" -trust-dns-resolver = { version = "0.23.2", features = ["dnssec-ring"] } -url = "2.2.2" -utoipa = { version = "4.2.3", features = ["actix_extras", "chrono", "url", "uuid"] } -utoipa-rapidoc = { version = "1", features = ["actix-web"] } +tracing-appender = "0.2.5" +tracing-opentelemetry = "0.33.0" +tracing-subscriber = { version = "0.3.23", features = ["env-filter", "json", "std"] } +tracing-unwrap = "1.0.1" +url = "2.5.8" +utoipa = { version = "5.5.0", features = ["actix_extras", "chrono", "url", "uuid"] } +utoipa-rapidoc = { version = "6.0.0", features = ["actix-web"] } uuid = { workspace = true, features = ["v4", "v5", "v7"] } -webauthn-rs = { version = "0.5", features = ["danger-allow-state-serialisation", "conditional-ui"] } -zip = { version = "0.5.13", default-features = false, features = ["deflate", "time"] } -log = "0.4.28" +webauthn-rs = { version = "0.5.5", features = ["danger-allow-state-serialisation", "conditional-ui"] } +zip = { version = "8.6.0", default-features = false, features = ["deflate"] } [build-dependencies] -vergen = { version = "6.0.0", default-features = false, features = ["git", "rustc"] } +vergen-gitcl = { version = "10.0.1", features = ["build", "rustc"] } diff --git a/gitarena/build.rs b/gitarena/build.rs index dd9c23b..b9e271a 100644 --- a/gitarena/build.rs +++ b/gitarena/build.rs @@ -1,7 +1,17 @@ -use vergen::{Config, vergen}; +use vergen_gitcl::{Build, Emitter, Gitcl, Rustc}; -fn main() { - vergen(Config::default()).unwrap(); +fn main() -> Result<(), Box> { + let build = Build::all_build(); + let gitcl = Gitcl::all_git(); + let rustc = Rustc::all_rustc(); + + Emitter::default() + .add_instructions(&build)? + .add_instructions(&gitcl)? + .add_instructions(&rustc)? + .emit()?; println!("cargo:rerun-if-changed=../migrations"); + + Ok(()) } diff --git a/gitarena/src/events.rs b/gitarena/src/events.rs index 75c2d28..5374c8d 100644 --- a/gitarena/src/events.rs +++ b/gitarena/src/events.rs @@ -44,6 +44,7 @@ pub(crate) struct Event { /// May be nil UUID if no user id exists for the triggering users (only on `auth.login_failed` and maybe on `email.verified` and `git.*`) pub(crate) actor_id: Uuid, /// IP Address + #[schema(value_type = Option)] pub(crate) ip_address: Option, /// User agent pub(crate) user_agent: Option, diff --git a/gitarena/src/geoip.rs b/gitarena/src/geoip.rs index 57ea00b..c1bcff9 100644 --- a/gitarena/src/geoip.rs +++ b/gitarena/src/geoip.rs @@ -8,14 +8,16 @@ static MMDB_BYTES: &[u8] = include_bytes!("../data/GeoLite2-City.mmdb"); static READER: Lazy> = Lazy::new(|| Reader::from_source(MMDB_BYTES).expect("Failed to parse GeoLite2-City.mmdb")); pub(crate) fn lookup(ip: IpAddr) -> (Option, Option) { - let city_record: geoip2::City<'_> = match READER.lookup(ip) { - Ok(r) => r, - Err(_) => return (None, None), + let Ok(lookup_result) = READER.lookup(ip) else { + return (None, None); }; - let city = city_record.city.and_then(|c| c.names).and_then(|n| n.get("en").copied()).map(str::to_owned); + let Ok(Some(city_record)) = lookup_result.decode::>() else { + return (None, None); + }; - let country = city_record.country.and_then(|c| c.names).and_then(|n| n.get("en").copied()).map(str::to_owned); + let city = city_record.city.names.english.map(str::to_owned); + let country = city_record.country.names.english.map(str::to_owned); (city, country) } diff --git a/gitarena/src/git/basic_auth.rs b/gitarena/src/git/basic_auth.rs index a81236b..1668d72 100644 --- a/gitarena/src/git/basic_auth.rs +++ b/gitarena/src/git/basic_auth.rs @@ -9,6 +9,8 @@ use crate::mail::Email; use actix_web::http::header::{CONTENT_TYPE, WWW_AUTHENTICATE}; use actix_web::{HttpRequest, HttpResponse}; use anyhow::Result; +use base64::Engine as _; +use base64::engine::general_purpose; use either::Either; use sqlx::Transaction; use tracing::{debug, instrument}; @@ -113,7 +115,7 @@ pub(crate) async fn parse_basic_auth(auth_header: &str) -> Result<(String, Strin die!(UNAUTHORIZED, "Unsupported authentication type, only Basic auth allowed"); } - let credentials = String::from_utf8(base64::decode(base64_credentials)?)?; + let credentials = String::from_utf8(general_purpose::STANDARD.decode(base64_credentials)?)?; Ok(credentials .split_once(':') diff --git a/gitarena/src/mail/mod.rs b/gitarena/src/mail/mod.rs index 91735c7..ba6e0ce 100644 --- a/gitarena/src/mail/mod.rs +++ b/gitarena/src/mail/mod.rs @@ -14,7 +14,6 @@ use chrono::{DateTime, Local}; use derive_more::Display; use gitarena_macros::from_config; use lettre::message::Mailbox; -use lettre::transport::smtp::PoolConfig; use lettre::transport::smtp::authentication::Credentials; use lettre::{AsyncSmtpTransport, Tokio1Executor}; use once_cell::sync::OnceCell; @@ -23,6 +22,7 @@ use sqlx::{FromRow, Transaction}; use std::fmt::{Debug, Formatter, Result as FmtResult, Write}; use std::time::{Duration, UNIX_EPOCH}; use tracing::debug; +use utoipa::ToSchema; use uuid::Uuid; pub(crate) mod task; @@ -30,12 +30,13 @@ pub(crate) mod templates; pub(crate) static TRANSPORTER: OnceCell> = OnceCell::new(); -#[derive(FromRow, Display, Serialize)] +#[derive(FromRow, Display, Serialize, ToSchema)] #[serde(rename_all = "camelCase")] #[display("{email}")] pub(crate) struct Email { pub(crate) id: Uuid, #[serde(skip)] + #[schema(ignore)] pub(crate) owner: Uuid, #[allow(clippy::struct_field_names)] pub(crate) email: String, @@ -154,13 +155,11 @@ pub(crate) async fn create_transport(db_pool: &Pool) -> Result<()> { .context("Unable to create TLS connection")? .port(u16::try_from(port).context("port too big for u16")?) .credentials(credentials) - .pool_config(PoolConfig::new().max_size(5).idle_timeout(Duration::from_secs(30))) .build() } else { AsyncSmtpTransport::::builder_dangerous(server.as_str()) .port(u16::try_from(port).context("port too big for u16")?) .credentials(credentials) - .pool_config(PoolConfig::new().max_size(5).idle_timeout(Duration::from_secs(30))) .build() }; diff --git a/gitarena/src/main.rs b/gitarena/src/main.rs index 0cfe2fa..0decf02 100644 --- a/gitarena/src/main.rs +++ b/gitarena/src/main.rs @@ -10,10 +10,12 @@ use std::env; use crate::database::{Pool, create_postgres_pool}; use crate::log::init_logger; -use actix_identity::{CookieIdentityPolicy, IdentityService}; -use actix_web::body::{BoxBody, EitherBody}; +use actix_identity::IdentityMiddleware; +use actix_session::config::PersistentSession; +use actix_session::{SessionMiddleware, storage::CookieSessionStore}; +use actix_web::cookie::Key; use actix_web::cookie::SameSite; -use actix_web::dev::{Service, ServiceResponse}; +use actix_web::dev::Service; use actix_web::http::Method; use actix_web::http::header::{ACCESS_CONTROL_ALLOW_ORIGIN, CACHE_CONTROL, HeaderValue}; use actix_web::middleware::{NormalizePath, TrailingSlash}; @@ -95,6 +97,7 @@ async fn main() -> Result<()> { let (secret, domain): (Option, Option) = from_optional_config!("secret" => String, "domain" => String); let secret = secret.ok_or_else(|| anyhow!("Unable to read secret from database"))?; let secure = domain.as_deref().is_some_and(|d| d.starts_with("https")); + let secret_key = Key::derive_from(secret.as_bytes()); let webauthn_origin: Option = from_optional_config!("webauthn.origin" => String); let webauthn_domain = domain.unwrap_or_else(|| "http://localhost:8320".to_owned()); @@ -114,14 +117,13 @@ async fn main() -> Result<()> { let ssh_handle = ssh::init(db_pool.clone(), meili_client.clone(), &bind_address).await?; let server = HttpServer::new(move || { - let identity_service = IdentityService::new( - CookieIdentityPolicy::new(secret.as_bytes()) - .name("gitarena-auth") - .max_age(TimeDuration::days(10)) - .http_only(true) - .same_site(SameSite::Lax) - .secure(secure), - ); + let session_middleware = SessionMiddleware::builder(CookieSessionStore::default(), secret_key.clone()) + .cookie_name("gitarena-auth".to_owned()) + .cookie_http_only(true) + .cookie_same_site(SameSite::Lax) + .cookie_secure(secure) + .session_lifecycle(PersistentSession::default().session_ttl(TimeDuration::days(10))) + .build(); App::new() .app_data(Data::new(db_pool.clone())) @@ -133,11 +135,12 @@ async fn main() -> Result<()> { .wrap(RequestTracing::new()) // must we outermost wrap to capture full duration .wrap(RequestMetrics::default()) .wrap(NormalizePath::new(TrailingSlash::Trim)) - .wrap(identity_service) + .wrap(IdentityMiddleware::default()) + .wrap(session_middleware) .wrap_fn(|req, srv| { let fut = srv.call(req); async { - let mut res: ServiceResponse> = fut.await?; + let mut res = fut.await?; if res.request().path().contains(".git") { // https://git-scm.com/docs/http-protocol/en#_smart_server_response diff --git a/gitarena/src/passkey.rs b/gitarena/src/passkey.rs index f7baef8..7d8d5c3 100644 --- a/gitarena/src/passkey.rs +++ b/gitarena/src/passkey.rs @@ -6,6 +6,8 @@ use crate::database::Database; use crate::prelude::MapToFangError; use anyhow::{Result, anyhow}; use async_trait::async_trait; +use base64::Engine as _; +use base64::engine::general_purpose; use chrono::{DateTime, Utc}; use fang::{AsyncQueueable, AsyncRunnable, Deserialize, FangError, Scheduled, Serialize, typetag}; use serde_cbor_2::Value as CborValue; @@ -25,7 +27,7 @@ fn aaguid_map() -> &'static HashMap<&'static str, &'static str> { pub(crate) fn aaguid_from_raw_credential(raw_credential: &Value) -> Option { let attest_b64 = raw_credential.pointer("/response/attestationObject").and_then(|v| v.as_str())?; - let attest_bytes = base64::decode_config(attest_b64, base64::URL_SAFE_NO_PAD).ok()?; + let attest_bytes = general_purpose::URL_SAFE_NO_PAD.decode(attest_b64).ok()?; // Parse CBOR: { "fmt": ..., "attStmt": ..., "authData": bytes } let cbor_val: CborValue = serde_cbor_2::from_slice(&attest_bytes).ok()?; @@ -45,7 +47,7 @@ pub(crate) fn aaguid_from_raw_credential(raw_credential: &Value) -> Option { - sqlx::query_as::<_, EventResponse>(&format!("{base_query} and e.class = $1 and e.type = $2 order by e.id desc limit $3 offset $4")) - .bind(class) - .bind(type_filter) - .bind(limit) - .bind(offset) - .fetch_all(&mut *tx) - .await? + sqlx::query_as::<_, EventResponse>(sqlx::AssertSqlSafe(format!( + "{base_query} and e.class = $1 and e.type = $2 order by e.id desc limit $3 offset $4" + ))) + .bind(class) + .bind(type_filter) + .bind(limit) + .bind(offset) + .fetch_all(&mut *tx) + .await? } (Some(class), None) => { - sqlx::query_as::<_, EventResponse>(&format!("{base_query} and e.class = $1 order by e.id desc limit $2 offset $3")) - .bind(class) - .bind(limit) - .bind(offset) - .fetch_all(&mut *tx) - .await? + sqlx::query_as::<_, EventResponse>(sqlx::AssertSqlSafe(format!( + "{base_query} and e.class = $1 order by e.id desc limit $2 offset $3" + ))) + .bind(class) + .bind(limit) + .bind(offset) + .fetch_all(&mut *tx) + .await? } (None, Some(type_filter)) => { - sqlx::query_as::<_, EventResponse>(&format!("{base_query} and e.type = $1 order by e.id desc limit $2 offset $3")) - .bind(type_filter) - .bind(limit) - .bind(offset) - .fetch_all(&mut *tx) - .await? + sqlx::query_as::<_, EventResponse>(sqlx::AssertSqlSafe(format!( + "{base_query} and e.type = $1 order by e.id desc limit $2 offset $3" + ))) + .bind(type_filter) + .bind(limit) + .bind(offset) + .fetch_all(&mut *tx) + .await? } (None, None) => { - sqlx::query_as::<_, EventResponse>(&format!("{base_query} order by e.id desc limit $1 offset $2")) + sqlx::query_as::<_, EventResponse>(sqlx::AssertSqlSafe(format!("{base_query} order by e.id desc limit $1 offset $2"))) .bind(limit) .bind(offset) .fetch_all(&mut *tx) diff --git a/gitarena/src/routes/admin/users.rs b/gitarena/src/routes/admin/users.rs index 7835f31..3ed94d5 100644 --- a/gitarena/src/routes/admin/users.rs +++ b/gitarena/src/routes/admin/users.rs @@ -50,12 +50,12 @@ pub(crate) async fn get_instance_users(web_user: WebUser, request: HttpRequest, let mut tx = db_pool.begin().await?; - let users = sqlx::query_as::<_, ExtendedUser>(&format!( + let users = sqlx::query_as::<_, ExtendedUser>(sqlx::AssertSqlSafe(format!( "select u.*, e.email, e.verified_at from users u \ join emails e on e.owner = u.id and e.\"primary\" = true \ order by u.id {order} \ limit {limit}" - )) + ))) .fetch_all(&mut *tx) .await?; diff --git a/gitarena/src/routes/events/audit_log.rs b/gitarena/src/routes/events/audit_log.rs index f0c991a..141a6c1 100644 --- a/gitarena/src/routes/events/audit_log.rs +++ b/gitarena/src/routes/events/audit_log.rs @@ -44,15 +44,17 @@ pub(crate) async fn get_personal_audit_log(web_user: WebUser, query: web::Query< where e.actor_id = $1 and e.class = 'security'"; let events: Vec = if let Some(ref type_filter) = params.type_filter { - sqlx::query_as(&format!("{base_query} and e.type = $2 order by e.id desc limit $3 offset $4")) - .bind(user.id) - .bind(type_filter) - .bind(params.limit) - .bind(params.offset) - .fetch_all(&mut *tx) - .await? + sqlx::query_as(sqlx::AssertSqlSafe(format!( + "{base_query} and e.type = $2 order by e.id desc limit $3 offset $4" + ))) + .bind(user.id) + .bind(type_filter) + .bind(params.limit) + .bind(params.offset) + .fetch_all(&mut *tx) + .await? } else { - sqlx::query_as(&format!("{base_query} order by e.id desc limit $2 offset $3")) + sqlx::query_as(sqlx::AssertSqlSafe(format!("{base_query} order by e.id desc limit $2 offset $3"))) .bind(user.id) .bind(params.limit) .bind(params.offset) diff --git a/gitarena/src/routes/events/contributions.rs b/gitarena/src/routes/events/contributions.rs index 8e9c29c..f056138 100644 --- a/gitarena/src/routes/events/contributions.rs +++ b/gitarena/src/routes/events/contributions.rs @@ -101,14 +101,14 @@ pub(crate) async fn get_contributions( group by cc.author_date" ); - let event_rows = sqlx::query_as::<_, EventContribRow>(&event_query) + let event_rows = sqlx::query_as::<_, EventContribRow>(sqlx::AssertSqlSafe(event_query)) .bind(target.id) .bind(lower) .bind(upper) .fetch_all(&mut *tx) .await?; - let contributor_rows = sqlx::query_as::<_, CommitContribRow>(&contributor_query) + let contributor_rows = sqlx::query_as::<_, CommitContribRow>(sqlx::AssertSqlSafe(contributor_query)) .bind(target.id) .bind(start.date_naive()) .bind(end.date_naive()) diff --git a/gitarena/src/routes/events/dashboard.rs b/gitarena/src/routes/events/dashboard.rs index 7ba5c86..328863e 100644 --- a/gitarena/src/routes/events/dashboard.rs +++ b/gitarena/src/routes/events/dashboard.rs @@ -63,9 +63,13 @@ pub(crate) async fn get_dashboard_feed(web_user: WebUser, query: web::Query = if let Some(ref type_filter) = params.type_filter { - sqlx::query_as(&query).bind(user.id).bind(type_filter).fetch_all(&mut *tx).await? + sqlx::query_as(sqlx::AssertSqlSafe(query.as_str())) + .bind(user.id) + .bind(type_filter) + .fetch_all(&mut *tx) + .await? } else { - sqlx::query_as(&query).bind(user.id).fetch_all(&mut *tx).await? + sqlx::query_as(sqlx::AssertSqlSafe(query.as_str())).bind(user.id).fetch_all(&mut *tx).await? }; tx.commit().await?; diff --git a/gitarena/src/routes/events/org_audit_log.rs b/gitarena/src/routes/events/org_audit_log.rs index 12ad6cb..02e063a 100644 --- a/gitarena/src/routes/events/org_audit_log.rs +++ b/gitarena/src/routes/events/org_audit_log.rs @@ -65,15 +65,17 @@ pub(crate) async fn get_org_audit_log( where e.subject_id_org = $1"; let events: Vec = if let Some(ref type_filter) = params.type_filter { - sqlx::query_as(&format!("{base_query} and e.type = $2 order by e.id desc limit $3 offset $4")) - .bind(org.id) - .bind(type_filter) - .bind(params.limit) - .bind(params.offset) - .fetch_all(&mut *tx) - .await? + sqlx::query_as(sqlx::AssertSqlSafe(format!( + "{base_query} and e.type = $2 order by e.id desc limit $3 offset $4" + ))) + .bind(org.id) + .bind(type_filter) + .bind(params.limit) + .bind(params.offset) + .fetch_all(&mut *tx) + .await? } else { - sqlx::query_as(&format!("{base_query} order by e.id desc limit $2 offset $3")) + sqlx::query_as(sqlx::AssertSqlSafe(format!("{base_query} order by e.id desc limit $2 offset $3"))) .bind(org.id) .bind(params.limit) .bind(params.offset) diff --git a/gitarena/src/routes/events/user_feed.rs b/gitarena/src/routes/events/user_feed.rs index cdfacf9..fc16543 100644 --- a/gitarena/src/routes/events/user_feed.rs +++ b/gitarena/src/routes/events/user_feed.rs @@ -79,7 +79,7 @@ pub(crate) async fn get_user_feed( ); let events: Vec = if let Some(ref type_filter) = params.type_filter { - sqlx::query_as(&query) + sqlx::query_as(sqlx::AssertSqlSafe(query.as_str())) .bind(target.id) .bind(params.limit) .bind(params.offset) @@ -87,7 +87,7 @@ pub(crate) async fn get_user_feed( .fetch_all(&mut *tx) .await? } else { - sqlx::query_as(&query) + sqlx::query_as(sqlx::AssertSqlSafe(query.as_str())) .bind(target.id) .bind(params.limit) .bind(params.offset) diff --git a/gitarena/src/routes/explore.rs b/gitarena/src/routes/explore.rs index 56a786f..6630c44 100644 --- a/gitarena/src/routes/explore.rs +++ b/gitarena/src/routes/explore.rs @@ -77,7 +77,7 @@ async fn get_repositories(options: &ExploreOptions<'_>, tx: &mut Transaction<'_, {options}", ); - Ok(sqlx::query_as::<_, ExploreRepo>(query.as_str()).fetch_all(&mut **tx).await?) + Ok(sqlx::query_as::<_, ExploreRepo>(sqlx::AssertSqlSafe(query)).fetch_all(&mut **tx).await?) } #[derive(FromRow, Serialize, Deserialize, Debug, Clone, ToSchema)] diff --git a/gitarena/src/routes/organization/api/repos.rs b/gitarena/src/routes/organization/api/repos.rs index 70244f9..8bed3f0 100644 --- a/gitarena/src/routes/organization/api/repos.rs +++ b/gitarena/src/routes/organization/api/repos.rs @@ -76,7 +76,10 @@ pub(crate) async fn list_repos(name: web::Path, web_user: WebUser, db_po query.push_str(" group by repositories.id order by stars desc, repositories.id desc"); - let repos = sqlx::query_as::<_, OrgRepo>(&query).bind(org.id).fetch_all(&mut *tx).await?; + let repos = sqlx::query_as::<_, OrgRepo>(sqlx::AssertSqlSafe(query)) + .bind(org.id) + .fetch_all(&mut *tx) + .await?; tx.commit().await?; diff --git a/gitarena/src/routes/repository/api/archive.rs b/gitarena/src/routes/repository/api/archive.rs index 669b3e0..6b61c5b 100644 --- a/gitarena/src/routes/repository/api/archive.rs +++ b/gitarena/src/routes/repository/api/archive.rs @@ -54,10 +54,12 @@ pub(crate) async fn toggle_archive( let value = if body.archive { "now()" } else { "null" }; - let repo: Repository = sqlx::query_as(&format!("update repositories set archived_at = {value} where id = $1 returning *")) - .bind(repo.id) - .fetch_one(&mut *tx) - .await?; + let repo: Repository = sqlx::query_as(sqlx::AssertSqlSafe(format!( + "update repositories set archived_at = {value} where id = $1 returning *" + ))) + .bind(repo.id) + .fetch_one(&mut *tx) + .await?; Event::new( if body.archive { "repo.archived" } else { "repo.unarchived" }, diff --git a/gitarena/src/routes/repository/api/create_repo.rs b/gitarena/src/routes/repository/api/create_repo.rs index dead1ab..31919cf 100644 --- a/gitarena/src/routes/repository/api/create_repo.rs +++ b/gitarena/src/routes/repository/api/create_repo.rs @@ -70,9 +70,9 @@ pub(crate) async fn create( let (owner_id, owner_name) = determine_namespace(&body.namespace, &user, &mut tx).await?; let owner_col = if body.namespace == user.username { "owner_user" } else { "owner_org" }; - let (exists,): (bool,) = sqlx::query_as(&format!( + let (exists,): (bool,) = sqlx::query_as(sqlx::AssertSqlSafe(format!( "select exists(select 1 from repositories where {owner_col} = $1 and lower(name) = lower($2) limit 1)" - )) + ))) .bind(owner_id) .bind(name) .fetch_one(&mut *tx) @@ -82,9 +82,9 @@ pub(crate) async fn create( die!(CONFLICT, "Repository name already in use for this namespace"); } - let repo: Repository = sqlx::query_as::<_, Repository>(&format!( + let repo: Repository = sqlx::query_as::<_, Repository>(sqlx::AssertSqlSafe(format!( "insert into repositories (id, {owner_col}, name, description, visibility, default_branch) values ($1, $2, $3, $4, $5, $6) returning *" - )) + ))) .bind(Uuid::now_v7()) .bind(owner_id) .bind(name) diff --git a/gitarena/src/routes/repository/api/download.rs b/gitarena/src/routes/repository/api/download.rs index 573ded4..3501cb3 100644 --- a/gitarena/src/routes/repository/api/download.rs +++ b/gitarena/src/routes/repository/api/download.rs @@ -23,7 +23,7 @@ use gix::odb::Store; use gix::odb::pack::FindExt; use tokio_tar::{Builder as TarBuilder, Header as TarHeader}; use zip::ZipWriter; -use zip::write::FileOptions as ZipFileOptions; +use zip::write::SimpleFileOptions as ZipFileOptions; #[utoipa::path( get, @@ -286,5 +286,5 @@ fn unix_secs_to_zip_datetime(unix_secs: i64) -> zip::DateTime { let dos_dt = dos_date_time::DateTime::try_from(dt).unwrap_or(dos_date_time::DateTime::MIN); - zip::DateTime::from_msdos(dos_dt.date().to_raw(), dos_dt.time().to_raw()) + zip::DateTime::try_from_msdos(dos_dt.date().to_raw(), dos_dt.time().to_raw()).unwrap_or_default() } diff --git a/gitarena/src/routes/repository/api/fork_repo.rs b/gitarena/src/routes/repository/api/fork_repo.rs index c7be6de..dd42e43 100644 --- a/gitarena/src/routes/repository/api/fork_repo.rs +++ b/gitarena/src/routes/repository/api/fork_repo.rs @@ -69,9 +69,9 @@ pub(crate) async fn create_fork( let is_org_fork = target_id != user.id; let owner_col = if is_org_fork { "owner_org" } else { "owner_user" }; - let (exists,): (bool,) = sqlx::query_as(&format!( + let (exists,): (bool,) = sqlx::query_as(sqlx::AssertSqlSafe(format!( "select exists(select 1 from repositories where {owner_col} = $1 and lower(name) = lower($2) limit 1)" - )) + ))) .bind(target_id) .bind(&repo.name) .fetch_one(&mut *tx) @@ -81,9 +81,9 @@ pub(crate) async fn create_fork( die!(CONFLICT, "Repository name already in use in this namespace"); } - let new_repo = sqlx::query_as::<_, Repository>(&format!( + let new_repo = sqlx::query_as::<_, Repository>(sqlx::AssertSqlSafe(format!( "insert into repositories (id, {owner_col}, name, description, visibility, forked_from) values ($1, $2, $3, $4, $5, $6) returning *" - )) + ))) .bind(Uuid::now_v7()) .bind(target_id) .bind(&repo.name) diff --git a/gitarena/src/routes/repository/api/import_repo.rs b/gitarena/src/routes/repository/api/import_repo.rs index dff9922..abed39d 100644 --- a/gitarena/src/routes/repository/api/import_repo.rs +++ b/gitarena/src/routes/repository/api/import_repo.rs @@ -105,9 +105,9 @@ pub(crate) async fn import( let (owner_id, owner_name) = determine_namespace(&body.namespace, &user, &mut tx).await?; let owner_col = if body.namespace == user.username { "owner_user" } else { "owner_org" }; - let (exists,): (bool,) = sqlx::query_as(&format!( + let (exists,): (bool,) = sqlx::query_as(sqlx::AssertSqlSafe(format!( "select exists(select 1 from repositories where {owner_col} = $1 and lower(name) = lower($2) limit 1)" - )) + ))) .bind(owner_id) .bind(name) .fetch_one(&mut *tx) @@ -117,9 +117,9 @@ pub(crate) async fn import( die!(CONFLICT, "Repository name already in use for this namespace"); } - let repo = sqlx::query_as::<_, Repository>(&format!( + let repo = sqlx::query_as::<_, Repository>(sqlx::AssertSqlSafe(format!( "insert into repositories (id, {owner_col}, name, description, visibility) values ($1, $2, $3, $4, $5) returning *" - )) + ))) .bind(Uuid::now_v7()) .bind(owner_id) .bind(name) diff --git a/gitarena/src/routes/repository/api/issues/mod.rs b/gitarena/src/routes/repository/api/issues/mod.rs index 3660131..e6d8a9f 100644 --- a/gitarena/src/routes/repository/api/issues/mod.rs +++ b/gitarena/src/routes/repository/api/issues/mod.rs @@ -772,7 +772,7 @@ pub(super) async fn load_reactions(target: ReactionTarget, viewer_id: Option, web_user: WebUser, request: HttpRequest, - id: Identity, queue: web::Data, db_pool: web::Data, ) -> Result { @@ -96,7 +95,7 @@ pub(crate) async fn post_login( } let session = Session::new(&request, &user, &mut transaction).await?; - id.remember(session.to_string()); + Identity::login(&*request.extensions(), session.to_string())?; Event::new( "auth.login", diff --git a/gitarena/src/routes/user/api/auth/logout.rs b/gitarena/src/routes/user/api/auth/logout.rs index 721daab..3582dbc 100644 --- a/gitarena/src/routes/user/api/auth/logout.rs +++ b/gitarena/src/routes/user/api/auth/logout.rs @@ -28,7 +28,7 @@ pub(crate) async fn post_logout(web_user: WebUser, id: Identity, request: HttpRe let mut transaction = db_pool.begin().await?; - if let Some(session) = Session::from_identity(id.identity(), &mut transaction).await? { + if let Some(session) = Session::from_identity(id.id().ok(), &mut transaction).await? { debug!(user.id = %session.user_id, "User logged out"); session.destroy(&mut transaction).await?; @@ -38,7 +38,7 @@ pub(crate) async fn post_logout(web_user: WebUser, id: Identity, request: HttpRe .await?; } - id.forget(); + id.logout(); transaction.commit().await?; diff --git a/gitarena/src/routes/user/api/auth/passkey.rs b/gitarena/src/routes/user/api/auth/passkey.rs index bd51879..ce3f1de 100644 --- a/gitarena/src/routes/user/api/auth/passkey.rs +++ b/gitarena/src/routes/user/api/auth/passkey.rs @@ -8,8 +8,10 @@ use crate::{die, err}; use crate::events::Event; use actix_identity::Identity; -use actix_web::{HttpRequest, HttpResponse, Responder, web}; +use actix_web::{HttpMessage, HttpRequest, HttpResponse, Responder, web}; use anyhow::{Context, Result, anyhow}; +use base64::Engine as _; +use base64::engine::general_purpose; use fang::AsyncQueue; use gitarena_macros::route; use serde::{Deserialize, Serialize}; @@ -148,6 +150,7 @@ pub(crate) async fn post_register_start(web_user: WebUser, webauthn: web::Data, web_user: WebUser, request: HttpRequest, - id: Identity, webauthn: web::Data, queue: web::Data, db_pool: web::Data, @@ -368,7 +370,7 @@ pub(crate) async fn post_login_finish( } let session = Session::new(&request, &user, &mut tx).await?; - id.remember(session.to_string()); + Identity::login(&*request.extensions(), session.to_string())?; Event::new( "auth.login", @@ -399,9 +401,10 @@ pub(crate) async fn post_login_finish( #[derive(Deserialize, ToSchema)] pub(crate) struct LoginFinishRequest { pub(crate) challenge_id: Uuid, + #[schema(value_type = Object)] pub(crate) credential: PublicKeyCredential, } fn base64_url_encode(bytes: &[u8]) -> String { - base64::encode_config(bytes, base64::URL_SAFE_NO_PAD) + general_purpose::URL_SAFE_NO_PAD.encode(bytes) } diff --git a/gitarena/src/routes/user/api/emails.rs b/gitarena/src/routes/user/api/emails.rs index fd86d01..5e920b4 100644 --- a/gitarena/src/routes/user/api/emails.rs +++ b/gitarena/src/routes/user/api/emails.rs @@ -80,10 +80,12 @@ pub(crate) async fn post_email( let mut transaction = db_pool.begin().await?; - let (exists,): (bool,) = sqlx::query_as(&format!("select exists(select 1 from emails where email = $1{verified_filter} limit 1)")) - .bind(body.email.as_str()) - .fetch_one(&mut *transaction) - .await?; + let (exists,): (bool,) = sqlx::query_as(sqlx::AssertSqlSafe(format!( + "select exists(select 1 from emails where email = $1{verified_filter} limit 1)" + ))) + .bind(body.email.as_str()) + .fetch_one(&mut *transaction) + .await?; if exists { die!(CONFLICT, "Email address already in use"); diff --git a/gitarena/src/routes/user/api/profile.rs b/gitarena/src/routes/user/api/profile.rs index fee1391..a9df746 100644 --- a/gitarena/src/routes/user/api/profile.rs +++ b/gitarena/src/routes/user/api/profile.rs @@ -109,7 +109,7 @@ async fn get_user_repos(user_id: Uuid, is_self: bool, can_see_internal: bool, tx query.push_str(" group by repositories.id order by stars desc, repositories.id desc"); - Ok(sqlx::query_as(&query).bind(user_id).fetch_all(&mut **tx).await?) + Ok(sqlx::query_as(sqlx::AssertSqlSafe(query)).bind(user_id).fetch_all(&mut **tx).await?) } async fn get_user_stats(user_id: Uuid, tx: &mut Transaction<'_, Database>) -> Result { diff --git a/gitarena/src/routes/user/api/sessions.rs b/gitarena/src/routes/user/api/sessions.rs index 812e920..73a6db2 100644 --- a/gitarena/src/routes/user/api/sessions.rs +++ b/gitarena/src/routes/user/api/sessions.rs @@ -64,7 +64,7 @@ pub(crate) async fn get_sessions(id: Identity, web_user: WebUser, db_pool: web:: .fetch_all(&mut *transaction) .await?; - let current_session = Session::from_identity(id.identity(), &mut transaction) + let current_session = Session::from_identity(id.id().ok(), &mut transaction) .await? .expect("authenticated user to have a session"); @@ -108,7 +108,7 @@ pub(crate) async fn delete_session( let mut transaction = db_pool.begin().await?; - let current_session = Session::from_identity(id.identity(), &mut transaction) + let current_session = Session::from_identity(id.id().ok(), &mut transaction) .await? .expect("authenticated user to have a session"); @@ -161,7 +161,7 @@ pub(crate) async fn delete_all_sessions(id: Identity, web_user: WebUser, request let mut transaction = db_pool.begin().await?; - let current_session = Session::from_identity(id.identity(), &mut transaction) + let current_session = Session::from_identity(id.id().ok(), &mut transaction) .await? .expect("authenticated user to have a session"); diff --git a/gitarena/src/routes/user/api/sso.rs b/gitarena/src/routes/user/api/sso.rs index 1a8c296..507d903 100644 --- a/gitarena/src/routes/user/api/sso.rs +++ b/gitarena/src/routes/user/api/sso.rs @@ -14,7 +14,7 @@ use crate::mail::Email; use crate::meili::MeiliClient; use actix_identity::Identity; use actix_web::http::header::LOCATION; -use actix_web::{HttpRequest, HttpResponse, Responder, web}; +use actix_web::{HttpMessage, HttpRequest, HttpResponse, Responder, web}; use anyhow::{Context, Result}; use gitarena_macros::{from_config, route}; use oauth2::TokenResponse; @@ -77,7 +77,7 @@ pub(crate) async fn sso_callback( meili_client: web::Data, db_pool: web::Data, ) -> Result { - if id.identity().is_some() { + if id.id().is_ok() { die!(UNAUTHORIZED, "Already logged in"); } @@ -145,7 +145,7 @@ pub(crate) async fn sso_callback( // don't protect in this case against cross-site request forgery. let session = Session::new(&request, &user, &mut transaction).await?; - id.remember(session.to_string()); + Identity::login(&*request.extensions(), session.to_string())?; Event::new( "auth.login", diff --git a/gitarena/src/routes/user/avatar.rs b/gitarena/src/routes/user/avatar.rs index 83afb41..b21ca13 100644 --- a/gitarena/src/routes/user/avatar.rs +++ b/gitarena/src/routes/user/avatar.rs @@ -85,10 +85,10 @@ pub(crate) async fn put_avatar(web_user: WebUser, mut payload: Multipart, db_poo let mut field = match payload.try_next().await { Ok(Some(field)) => field, Ok(None) => die!(BAD_REQUEST, "No multipart field found"), - Err(err) => return Err(err.into()), + Err(err) => return Err(anyhow::anyhow!("{err}")), }; - let content_disposition = field.content_disposition(); + let content_disposition = field.content_disposition().ok_or_else(|| err!(BAD_REQUEST, "No content disposition header"))?; let file_name = content_disposition.get_filename().ok_or_else(|| err!(BAD_REQUEST, "No file name"))?; let extension = file_name .rsplit_once('.') @@ -97,7 +97,7 @@ pub(crate) async fn put_avatar(web_user: WebUser, mut payload: Multipart, db_poo let mut bytes = web::BytesMut::new(); - while let Some(chunk) = field.try_next().await.context("Failed to read multipart data chunk")? { + while let Some(chunk) = field.try_next().await.map_err(|e| anyhow::anyhow!("{e}"))? { bytes.extend_from_slice(chunk.as_ref()); } @@ -136,7 +136,9 @@ fn send_image>(path: P, request: &HttpRequest) -> Result, db_pool: web::Data, ) -> Result { - if id.identity().is_some() { + if id.id().is_ok() { // Maybe just redirect to home page? die!(UNAUTHORIZED, "Already logged in"); } @@ -148,7 +148,7 @@ pub(crate) async fn post_register( send_verification_mail(&user, email.email, &queue, &db_pool).await?; - id.remember(session.to_string()); + Identity::login(&*request.extensions(), session.to_string())?; user.index_meili(&meili_client).await; diff --git a/gitarena/src/routes/user/user_logout.rs b/gitarena/src/routes/user/user_logout.rs index 3d99152..806064c 100644 --- a/gitarena/src/routes/user/user_logout.rs +++ b/gitarena/src/routes/user/user_logout.rs @@ -11,19 +11,19 @@ use tracing::debug; #[route("/logout", method = "POST", err = "text")] pub(crate) async fn logout(_request: HttpRequest, id: Identity, db_pool: web::Data) -> Result { - if id.identity().is_none() { + if id.id().is_err() { // Maybe just redirect to home page? die!(UNAUTHORIZED, "Already logged out"); } let mut transaction = db_pool.begin().await?; - if let Some(session) = Session::from_identity(id.identity(), &mut transaction).await.ok().flatten() { + if let Some(session) = Session::from_identity(id.id().ok(), &mut transaction).await.ok().flatten() { debug!(user.id = %session.user_id, "User logged out"); session.destroy(&mut transaction).await?; } - id.forget(); + id.logout(); transaction.commit().await?; diff --git a/gitarena/src/ssh/key.rs b/gitarena/src/ssh/key.rs index 174c928..684a60c 100644 --- a/gitarena/src/ssh/key.rs +++ b/gitarena/src/ssh/key.rs @@ -2,6 +2,8 @@ use crate::database::Database; use crate::user::User; use anyhow::Result; use anyhow::{Error, bail}; +use base64::Engine as _; +use base64::engine::general_purpose; use chrono::{DateTime, Utc}; use derive_more::Display; use russh::keys::Algorithm; @@ -12,9 +14,10 @@ use serde::{Serialize, Serializer}; use sqlx::Type; use sqlx::{FromRow, Transaction}; use tracing::instrument; +use utoipa::ToSchema; use uuid::Uuid; -#[derive(FromRow, Display, derive_more::Debug, Serialize, Clone)] +#[derive(FromRow, Display, derive_more::Debug, Serialize, Clone, ToSchema)] #[serde(rename_all = "camelCase")] #[display("{title}")] pub(crate) struct SshKey { @@ -24,6 +27,7 @@ pub(crate) struct SshKey { pub(crate) fingerprint: String, pub(crate) algorithm: KeyType, #[serde(rename = "pubkey", serialize_with = "serialize_key_as_base64")] + #[schema(value_type = String, rename = "pubkey")] #[debug(skip)] key: Vec, pub(crate) expires_at: Option>, @@ -54,15 +58,15 @@ impl SshKey { } pub(crate) fn as_string(&self) -> String { - format!("{} {}", &self.algorithm, base64::encode(&self.key)) + format!("{} {}", &self.algorithm, general_purpose::STANDARD.encode(&self.key)) } } fn serialize_key_as_base64(key: &Vec, serializer: S) -> Result { - serializer.serialize_str(&base64::encode(key)) + serializer.serialize_str(&general_purpose::STANDARD.encode(key)) } -#[derive(Type, Debug, Display, Deserialize, Serialize, Copy, Clone)] +#[derive(Type, Debug, Display, Deserialize, Serialize, Copy, Clone, ToSchema)] #[sqlx(type_name = "ssh_key_type", rename_all = "kebab-case")] #[serde(rename_all = "kebab-case")] #[display(rename_all = "kebab-case")] diff --git a/gitarena/src/ssh/mod.rs b/gitarena/src/ssh/mod.rs index 22f1b79..afcc66c 100644 --- a/gitarena/src/ssh/mod.rs +++ b/gitarena/src/ssh/mod.rs @@ -4,7 +4,7 @@ use crate::meili::MeiliClient; use crate::ssh::server::SshServer; use anyhow::{Context, Result}; use gitarena_macros::from_config; -use russh::keys::ssh_encoding::LineEnding; +use russh::keys::ssh_key::LineEnding; use russh::keys::{Algorithm, PrivateKey}; use russh::server::{Config, RunningServerHandle, Server}; use russh::{MethodKind, MethodSet, SshId}; diff --git a/gitarena/src/user.rs b/gitarena/src/user.rs index ee267d9..9e7fd1a 100644 --- a/gitarena/src/user.rs +++ b/gitarena/src/user.rs @@ -23,14 +23,16 @@ use serde::Serialize; use sqlx::{FromRow, Transaction}; use tracing::{error, instrument}; use tracing_unwrap::OptionExt; +use utoipa::ToSchema; use uuid::Uuid; -#[derive(FromRow, Display, Debug, Serialize, Clone)] +#[derive(FromRow, Display, Debug, Serialize, Clone, ToSchema)] #[display("{username}")] pub(crate) struct User { pub(crate) id: Uuid, pub(crate) username: String, #[serde(skip_serializing)] + #[schema(ignore)] #[display("[redacted]")] #[debug("[redacted]")] pub(crate) password: String, @@ -219,7 +221,7 @@ async fn extract_webuser_from_request Result { let id = id_future.await.map_err(|_| anyhow!("Failed to build identity"))?; - match id.identity() { + match id.id().ok() { Some(identity) => { let mut transaction = db_pool.begin().await?; @@ -233,7 +235,7 @@ async fn extract_webuser_from_request = - Lazy::new(|| TokioAsyncResolver::tokio_from_system_conf().expect("to be able to initialize dns resolver")); +pub(crate) static DNS_RESOLVER: Lazy = Lazy::new(|| { + TokioResolver::builder_tokio() + .expect("to be able to read system dns config") + .build() + .expect("to be able to initialize dns resolver") +}); /// Counts the amount of seconds the provided [Future][future] took to execute. /// The [Future][future] _should_ not return a output, as it will be discarded and not returned. diff --git a/gitarena/src/utils/system.rs b/gitarena/src/utils/system.rs index 2ee4b1a..7f9254b 100644 --- a/gitarena/src/utils/system.rs +++ b/gitarena/src/utils/system.rs @@ -2,7 +2,7 @@ use std::time::Duration; use futures_locks::RwLock; use once_cell::sync::Lazy; -use sysinfo::{RefreshKind, System, SystemExt}; +use sysinfo::{RefreshKind, System}; use tracing::{Instrument, info_span}; pub(crate) static SYSTEM_INFO: Lazy> = Lazy::new(init); @@ -10,7 +10,7 @@ pub(crate) static SYSTEM_INFO: Lazy> = Lazy::new(init); fn init() -> RwLock { let mut interval = tokio::time::interval(Duration::from_mins(5)); - let system = System::new_with_specifics(RefreshKind::new().with_memory()); + let system = System::new_with_specifics(RefreshKind::nothing().with_memory(sysinfo::MemoryRefreshKind::everything())); let lock = RwLock::new(system); tokio::spawn(