From 70219805d0029bb5b1e0bd08f77f444949d5b9f6 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Tue, 18 Jun 2024 20:40:27 +0200 Subject: [PATCH 001/221] fix: make icon visible on light background --- resources/favicon.ico | Bin 268 -> 766 bytes resources/favicon.xcf | Bin 2040 -> 1952 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/resources/favicon.ico b/resources/favicon.ico index 8525003a304197258ff55a816db723d80d55e45d..6cff4b9e335851a3d66ee19b041d986280726b83 100644 GIT binary patch literal 766 zcmaKqJ&wXK5QSd=L4(lJtSBfVZ$r5oH!e8}N7y5{%&~G5O3IWeq8;WhXazVEy-3e* z{CQ*# zLfp@I-Y)qAAhW7xv4#s4}jU(NV5C>Z)v7X1Xq6+JO4CY1n~=t!X@h#se$Ko25I@kAK<# literal 268 zcmZQzU<5)11py$*!tjlOfk6z2I|KaOdAX#xfJ|Ob50@YytpLItY(TQOs_F}n+Ux1! z7!uKXb-Jfeg8~oB!B6LF7~^`?bzBlBB}6=Hi{`z%Bl7*;nKOf{78UC~do0j&w(X)o zu?P18r^DPL8-GmbW7>MtOCv*2B78waO{Is_4OW4)b!~e^uDtsz$E(F+A@wbgL2hpn zZx+i6sc!)d9~Qq|w$O1ZgX>`r*7+g{j9UM0)wv}0yUu7z^FQ(WPa5OPbTRkCySR3A z_fI@tdW9pvbj?Z!!TM9RwxLWSystHXNZVIA^Qi~;T{!p8c0a>9#xO3f1D(r(9%1lw L^>bP0l+XkKG96$Y diff --git a/resources/favicon.xcf b/resources/favicon.xcf index dbb418a0c3c19b241d85c1509fa698421ca72bf2..aa0098466c1c4d541c063cde059d14babe6c58c6 100644 GIT binary patch literal 1952 zcmeH{%Wl&^6o!w-j&DgyXq&lFTue2nxw3@6C=5|Sk1 z6d52R3->@KI(4)>^D*c{a{> z#X>Z3{~Ybh`&Fj*+f}hRPe;pqzFlp1dSuIZmtW2F#2(XgOke$DdaCUq(|7xu*}T}~ zdOAUO-|FgSe7h-1U2Nvp**0E)}xGY&wAP%K<`_RXM~Ter_Da}fxS;Q70Z1x&N)Q?@MIsJ?0@>sa=jbairs+g z-Jn&m6L1%aUEohm;Z+oIN-6ZFCe(!I?e*J zyDosemy*>-w;L#sXFR?`@`{ov@#e+)%3P;Q^KF(S3SpWg|3p4QMiH7P$iX>=n24vy zF0zk&-Y|8~kiU?V981S(xn5_R3Vp@N$LHH@US$jOy{InD`wt&KapuHJi}gIu;(S{y zI7ao|bXVQ1GP5gJ#o}xZLtj>n2hz|E>@lu!$moDa zel2SHwq|NV9zxUg>-22R)Py{Mrsp+Bwq|PnuvT5$hlX>}U#uP1)v9BAsC8c&@y(_2?sdf)&bxm dtpfxs9KZ<&2v|4(9IJJJfQ17%;Q;Pb{Ra3Nr>p<~ From 299f54fd58b567884f76e1c36c7c1648d43fbc75 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Tue, 18 Jun 2024 23:55:34 +0200 Subject: [PATCH 002/221] feat: add userscript --- Cargo.lock | 27 ++++++++++ Cargo.toml | 2 +- Justfile | 2 +- README.md | 41 +++++++-------- resources/style.css | 1 - resources/style.css.gz | Bin 1210 -> 1209 bytes src/app.rs | 70 +++++++++++++++++++++---- src/config.rs | 19 +++++++ src/query.rs | 27 +++++++--- src/templates.rs | 13 +++++ templates/index.hbs | 6 ++- templates/userscript.hbs | 108 +++++++++++++++++++++++++++++++++++++++ tests/tests.rs | 8 +++ 13 files changed, 283 insertions(+), 41 deletions(-) create mode 100644 templates/userscript.hbs diff --git a/Cargo.lock b/Cargo.lock index b6e4361..e9c65a6 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -438,6 +438,12 @@ dependencies = [ "generic-array", ] +[[package]] +name = "buf-min" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22d5698cf6842742ed64805705798f8b351fff53fa546fd45c52184bee58dc90" + [[package]] name = "bumpalo" version = "3.16.0" @@ -502,7 +508,9 @@ checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" dependencies = [ "android-tzdata", "iana-time-zone", + "js-sys", "num-traits", + "wasm-bindgen", "windows-targets 0.52.5", ] @@ -3160,6 +3168,18 @@ name = "v_htmlescape" version = "0.15.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4e8257fbc510f0a46eb602c10215901938b5c2a7d5e70fc11483b1d3c9b5b18c" +dependencies = [ + "buf-min", +] + +[[package]] +name = "v_jsonescape" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be8219cc464ba10c48c3231a6871f11d26d831c5c45a47467eea387ea7bb10e8" +dependencies = [ + "buf-min", +] [[package]] name = "valuable" @@ -3539,6 +3559,7 @@ version = "0.15.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dfce1df93f3b16e5272221a559e60bbbaaa71dbc042a43996d223e51a690aab2" dependencies = [ + "buf-min", "yarte_derive", "yarte_helpers", ] @@ -3565,6 +3586,7 @@ dependencies = [ "proc-macro2", "quote", "syn 1.0.109", + "v_jsonescape", "yarte_codegen", "yarte_helpers", "yarte_hir", @@ -3577,13 +3599,18 @@ version = "0.15.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e0d1076f8cee9541ea5ffbecd9102f751252c91f085e7d30a18a3ce805ebd3ee" dependencies = [ + "buf-min", + "chrono", "dtoa", "itoa", "prettyplease", + "ryu", "serde", + "serde_json", "syn 1.0.109", "toml", "v_htmlescape", + "v_jsonescape", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index 2ccdfe7..a5c3eee 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -72,7 +72,7 @@ tower-http = { version = "0.5.2", features = ["trace", "set-header"] } tracing = "0.1.40" tracing-subscriber = "0.3.18" url = "2.5.0" -yarte = "0.15.7" +yarte = { version = "0.15.7", features = ["json"] } [build-dependencies] yarte_helpers = "0.15.8" diff --git a/Justfile b/Justfile index f4ecb96..29c63ca 100644 --- a/Justfile +++ b/Justfile @@ -1,5 +1,5 @@ test: - cargo test + cargo nextest run --no-fail-fast compress-res: cd resources && zopfli *.css diff --git a/README.md b/README.md index e94622e..0a610f8 100644 --- a/README.md +++ b/README.md @@ -70,26 +70,27 @@ networks: Artifactview is configured using environment variables. -| Variable | Default | Description | -| ------------------------- | ------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `PORT` | 3000 | HTTP port | -| `CACHE_DIR` | /tmp/artifactview | Temporary directory where to store the artifacts | -| `ROOT_DOMAIN` | localhost:3000 | Public hostname+port number under which artifactview is accessible. If this is configured incorrectly, artifactview will show the error message "host does not end with configured ROOT_DOMAIN" | -| `RUST_LOG` | info | Logging level | -| `NO_HTTPS` | false | Set to True if the website is served without HTTPS (used if testing artifactview without an ) | -| `MAX_ARTIFACT_SIZE` | 100000000 (100 MB) | Maximum size of the artifact zip file to be downloaded | -| `MAX_FILE_SIZE` | 100000000 (100 MB) | Maximum contained file size to be served | -| `MAX_FILE_COUNT` | 10000 | Maximum amount of files within a zip file | -| `MAX_AGE_H` | 12 | Maximum age in hours after which cached artifacts are deleted | -| `ZIP_TIMEOUT_MS` | 1000 | Maximum time in milliseconds for reading the index of a zip file. If this takes too long, the zip file is most likely excessively large or malicious (zip bomb) | -| `GITHUB_TOKEN` | - | GitHub API token for downloading artifacts. Using a fine-grained token with public read permissions is recommended | -| `MEM_CACHE_SIZE` | 50 | Artifactview keeps artifact metadata as well as the zip file indexes in memory to improve performance. The amount of cached items is adjustable. | -| `REAL_IP_HEADER` | - | Get the client IP address from a HTTP request header
If Artifactview is exposed to the network directly, this option has to be unset. If you are using a reverse proxy the proxy needs to be configured to send the actual client IP as a request header.
For most proxies this header is `x-forwarded-for`. | -| `LIMIT_ARTIFACTS_PER_MIN` | 5 | Limit the amount of downloaded artifacts per IP address and minute | -| `REPO_BLACKLIST` | - | List of sites/users/repos that can NOT be accessed. The blacklist takes precedence over the whitelist (repos included in both lists cannot be accessed)
Example: `github.com/evil-corp/world-destruction;codeberg.org/blackhat;example.org` | -| `REPO_WHITELIST` | - | List of sites/users/repos that can ONLY be accessed. If the whitelist is empty, it will be ignored and any repository can be accessed. Uses the same syntax as `REPO_BLACLIST`. | -| `SITE_ALIASES` | - | Aliases for sites to make URLs shorter
Example: `gh => github.com;cb => codeberg.org` | -| `VIEWER_MAX_SIZE` | 500000 | Maximum file size to be displayed using the viewer | +| Variable | Default | Description | +| ------------------------- | ----------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `PORT` | 3000 | HTTP port | +| `CACHE_DIR` | /tmp/artifactview | Temporary directory where to store the artifacts | +| `ROOT_DOMAIN` | localhost:3000 | Public hostname+port number under which artifactview is accessible. If this is configured incorrectly, artifactview will show the error message "host does not end with configured ROOT_DOMAIN" | +| `RUST_LOG` | info | Logging level | +| `NO_HTTPS` | false | Set to True if the website is served without HTTPS (used if testing artifactview without an ) | +| `MAX_ARTIFACT_SIZE` | 100000000 (100 MB) | Maximum size of the artifact zip file to be downloaded | +| `MAX_FILE_SIZE` | 100000000 (100 MB) | Maximum contained file size to be served | +| `MAX_FILE_COUNT` | 10000 | Maximum amount of files within a zip file | +| `MAX_AGE_H` | 12 | Maximum age in hours after which cached artifacts are deleted | +| `ZIP_TIMEOUT_MS` | 1000 | Maximum time in milliseconds for reading the index of a zip file. If this takes too long, the zip file is most likely excessively large or malicious (zip bomb) | +| `GITHUB_TOKEN` | - | GitHub API token for downloading artifacts. Using a fine-grained token with public read permissions is recommended | +| `MEM_CACHE_SIZE` | 50 | Artifactview keeps artifact metadata as well as the zip file indexes in memory to improve performance. The amount of cached items is adjustable. | +| `REAL_IP_HEADER` | - | Get the client IP address from a HTTP request header
If Artifactview is exposed to the network directly, this option has to be unset. If you are using a reverse proxy the proxy needs to be configured to send the actual client IP as a request header.
For most proxies this header is `x-forwarded-for`. | +| `LIMIT_ARTIFACTS_PER_MIN` | 5 | Limit the amount of downloaded artifacts per IP address and minute | +| `REPO_BLACKLIST` | - | List of sites/users/repos that can NOT be accessed. The blacklist takes precedence over the whitelist (repos included in both lists cannot be accessed)
Example: `github.com/evil-corp/world-destruction;codeberg.org/blackhat;example.org` | +| `REPO_WHITELIST` | - | List of sites/users/repos that can ONLY be accessed. If the whitelist is empty, it will be ignored and any repository can be accessed. Uses the same syntax as `REPO_BLACKLIST`. | +| `SITE_ALIASES` | - | Aliases for sites to make URLs shorter
Example: `gh => github.com;cb => codeberg.org` | +| `SUGGESTED_SITES` | codeberg.org; github.com; gitea.com | List of suggested code forges (host only, without https://, separated by `;`). If repo_whitelist is empty, this value is used for the matched sites in the userscript. The first value is used in the placeholder URL on the home page. | +| `VIEWER_MAX_SIZE` | 500000 | Maximum file size to be displayed using the viewer | ## Technical details diff --git a/resources/style.css b/resources/style.css index 1516292..be5c3d0 100644 --- a/resources/style.css +++ b/resources/style.css @@ -172,7 +172,6 @@ p { width: 100%; } .center { - width: 100%; display: flex; flex-direction: row; justify-content: center; diff --git a/resources/style.css.gz b/resources/style.css.gz index 2efabdc2876cfa2b2661e2d6a7acc85f416ecaff..0d2e1f31888fe15ea3a064b455b29d9d129b404d 100644 GIT binary patch literal 1209 zcmV;q1V;NGiwFP!000021D#jrcKaq2|DLCyJI;wbGo7wy==zS}%A!F)0k4jCF9_@J zi-S&m>g~J7j|C85@fhBChsuqTFYz>&Mz%^mschJ=TqoC~#C zllfc!zoT{|)Th5y#kAD6a=^6W)E?L53l8y_^F17VV9n?AkMv54O&hr{FE2T_)|P_} z9L89Qvka`dt}j?#^`4%9uW}9@qgSoo1>S1$%9`fw=AWBd^W&)ijaI&DXeVUI%~9n- zu2wY3LLa^b#liMP(#DHU{0Ytg@FY@G_P()tt9bGj{4|g8nb;@Vj@nyXlSzz%#t_Of zbbQTY=QEq^@ZDZU1;Y$nTE!CQ2qlR z$Z~EDXPpzD3uhz^rD`M`QjGCe#f1fyLbQ6H7#nKVWC7h9wp@7~sLMxl$jP<#UUxx0 zaK(x6$bQE36heyDky(2$H3*HCx> zLwfvv_|;qJd|k1skg(frPU4{`UN9<$ z#5%#b1YCzCSoVJzZ9oK8T`S*KtQC^qE+*%CX5@<^#ljB53W4S&V5V$%i49|Np=&nI zytm>+FB@N#jjygVUPV&MX1pw@7e+ggCK9ckmRq0qVY<;>VJ|abdbGHHM6C_QU7dsdie?EyfT9+ntKwg61_`ZTMoHnRvFW+-h3)6I)GHUtt z=N=Y-+^K9azYZHfM-SDB_BfxL@h!9W+XJq$dOz+QZ!u9NYX7f8+V5NEMRTl9$G|KO z8H-<@w)x?{Z_JM!a6!o}%JnJc`e}sl(l|uP(5=@gsDF?GntqX3o_#3mv`ny_d{e(@ z$Ku?Me`3yXFv0@Az~RQyqhnOUZIDkmoTl?(63m^G&qQam^;CIW7-OLU>xL^8YoQDH zZ*X+GwICJ+Dszg1$E literal 1210 zcmV;r1V#HFiwFP!000021C>`-p7SOUf8SG(zD=%My=iAidq*&`$Rbbxx0JgFJl5xt z7X9M5dwTgZ!1R{=91a?M4G>sm9phRv?t-eg2wMd^*77xYc00YgWq)0<_-MJ5%B)vx z_ICW=aJN?G)8C>HR$Eti5Y|ZU4lDMBg!Jt51MEX&&1SQY^g^q3owzSAFMV!lodg#- zLWmq^5m{wf4p_k)Jw1V3_BnivUetCQdCU2$sH(TCf38X^52pfD)`X(sjnXkU&y6oU zI8~vAWB3k?1a~ZwZG&pmpWs^ni6SKz?`vl_MxwXqr+Q3JWS?kT?yhM~Zc-E+L&(YS z8xnv7VI2?3#>9;^aMWGJoWR{PKJlPI1dyZFumDGwHE@}*E*e1#& zXQZ-=^dv#mbJ|89TeHHr&%_-d{ET%C*T~q_DnQ{|E+8>>jQ^NcW3Qacq~d#g6l4^ zMoFoG)&T|c{)f>fL=e@L33VZArRDYf=3LJnc~GQOSTd|S(7YtfWDPHc;M8a&w%R+k5TCZ>-@zPtp3H?4y)^^k0lmCV{&>M}X>dhz5kKO*V zvrZPJ1OC2Z$FCT!9!&Mr%Z{7mGk|Ly6dmLye{8@V3T4_&=z~s~8k`Dw6z3;JX8A^_ z4#y08!3vg}5UlBqgwy7aVQidFakN(9pv~elKLIwzLqKMak`gY18J!%x_=EY+;Cq7z z=W42bLW%+JuOrfLh%^^LZDCye`6OOho14%Pc?iGpeT8BeH>hN56Q)F&Fk_7lBSPbePqCm!BBIbu7&6=zmwA0_^ z2mP6!`}0rA8TPGmAP2x)JAUwjYq*Z`2+Ro{7*VkAoPDO6*1Et=poM82RN#Df#}YL( z5wMcG_b!d@nl^S9o4qU^md_Y%<~}B+L|*pRwV0T!6g&K@H(`iSs<0Vd~r6E_e501x+IG5`Po diff --git a/src/app.rs b/src/app.rs index 0e84191..a2cc2eb 100644 --- a/src/app.rs +++ b/src/app.rs @@ -1,4 +1,6 @@ -use std::{net::SocketAddr, ops::Bound, path::Path, str::FromStr, sync::Arc}; +use std::{ + collections::BTreeMap, net::SocketAddr, ops::Bound, path::Path, str::FromStr, sync::Arc, +}; use async_zip::tokio::read::ZipEntryReader; use axum::{ @@ -256,17 +258,62 @@ impl App { uri: Uri, hdrs: &HeaderMap, ) -> Result, Error> { - if uri.path() == FAVICON_PATH { - return Self::favicon(); - } - if uri.path() == STYLE_MAIN_PATH { - return Self::stylesheet(hdrs, STYLE_MAIN_BYTES, STYLE_MAIN_BYTES_GZ); - } - if uri.path() == STYLE_CONTENT_PATH { - return Self::stylesheet(hdrs, STYLE_CONTENT_BYTES, STYLE_CONTENT_BYTES_GZ); - } if uri.path() != "/" { - return Err(Error::NotFound("path".into())); + match uri.path() { + FAVICON_PATH => return Self::favicon(), + STYLE_MAIN_PATH => { + return Self::stylesheet(hdrs, STYLE_MAIN_BYTES, STYLE_MAIN_BYTES_GZ) + } + STYLE_CONTENT_PATH => { + return Self::stylesheet(hdrs, STYLE_CONTENT_BYTES, STYLE_CONTENT_BYTES_GZ) + } + "/artifactview.user.js" => { + let cfg = state.i.cfg.load(); + + let map_host = |h: &str| { + // Since GitHub uses Javascript for page changes, the userscript needs to be always loaded + if h == "github.com" { + "https://github.com/*".to_owned() + } else { + format!("https://{h}/*/runs/*") + } + }; + + let forge_urls = if cfg.repo_whitelist.is_empty() { + cfg.suggested_sites + .iter() + .map(|itm| map_host(itm)) + .collect::>() + } else { + cfg.repo_whitelist + .hosts() + .iter() + .map(|h| map_host(h)) + .collect::>() + }; + let aliases = cfg + .site_aliases + .iter() + .map(|(k, v)| (v.as_str(), k.as_str())) + .collect::>(); + + let tmpl = templates::Userscript { + main_url: state.i.cfg.main_url(), + root_domain: &cfg.root_domain, + no_https: cfg.no_https, + forge_urls, + aliases: &aliases, + }; + + return Ok(Response::builder() + .typed_header(headers::ContentType::from( + mime::APPLICATION_JAVASCRIPT_UTF_8, + )) + .cache() + .body(tmpl.to_string().into())?); + } + _ => return Err(Error::NotFound("path".into())), + } } #[derive(Deserialize)] @@ -318,6 +365,7 @@ impl App { .body( templates::Index { main_url: state.i.cfg.main_url(), + example_site: state.i.cfg.example_site(), } .to_string() .into(), diff --git a/src/config.rs b/src/config.rs index c3a6256..0c524f3 100644 --- a/src/config.rs +++ b/src/config.rs @@ -65,6 +65,11 @@ pub struct ConfigData { pub repo_blacklist: QueryFilterList, /// List of sites/users/repos that can ONLY be accessed pub repo_whitelist: QueryFilterList, + /// List of suggested code forges (host only, without https://) + /// + /// If repo_whitelist is empty, this value is used for the matched sites in the userscript + /// as well as the url placeholder on the home page + pub suggested_sites: Vec, /// Aliases for sites (Example: `gh => github.com`) pub site_aliases: HashMap, /// Maximum file size for the viewer @@ -89,6 +94,11 @@ impl Default for ConfigData { limit_artifacts_per_min: Some(NonZeroU32::new(5).unwrap()), repo_blacklist: QueryFilterList::default(), repo_whitelist: QueryFilterList::default(), + suggested_sites: vec![ + String::from("codeberg.org"), + String::from("github.com"), + String::from("gitea.com"), + ], site_aliases: HashMap::new(), viewer_max_size: Some(NonZeroU32::new(500_000).unwrap()), } @@ -154,6 +164,15 @@ impl Config { &self.i.main_url } + pub fn example_site(&self) -> &str { + self.i + .data + .repo_whitelist + .first_host() + .or_else(|| self.i.data.suggested_sites.first().map(|s| s.as_str())) + .unwrap_or("codeberg.org") + } + pub fn check_filterlist(&self, query: &ArtifactQuery) -> Result<()> { if !self.i.data.repo_blacklist.passes(query, true) { Err(Error::Forbidden("repository is blacklisted".into())) diff --git a/src/query.rs b/src/query.rs index d810b1c..ddf206c 100644 --- a/src/query.rs +++ b/src/query.rs @@ -1,4 +1,7 @@ -use std::{collections::HashMap, str::FromStr}; +use std::{ + collections::{BTreeSet, HashMap}, + str::FromStr, +}; use once_cell::sync::Lazy; use regex::{Captures, Regex}; @@ -244,11 +247,11 @@ impl From for RunQuery { fn encode_domain(s: &str, bias: char) -> String { // Check if the character at the given position is in the middle of the string // and it is not followed by escape seq numbers or further escapable characters - let is_mid_single = |pos: usize| -> bool { - if pos == 0 || pos >= (s.len() - 1) { + let is_mid_single = |str: &str, pos: usize| -> bool { + if pos == 0 || pos >= (str.len() - 1) { return false; } - let next_char = s[pos..].chars().nth(1).unwrap(); + let next_char = str[pos..].chars().nth(1).unwrap(); !('0'..='2').contains(&next_char) && !matches!(next_char, '-' | '.' | '_') }; @@ -257,7 +260,7 @@ fn encode_domain(s: &str, bias: char) -> String { let mut last_pos = 0; for (pos, c) in s.match_indices('-') { buf += &s[last_pos..pos]; - if bias == '-' && is_mid_single(pos) { + if bias == '-' && is_mid_single(s, pos) { buf.push('-'); } else { buf += "-1"; @@ -272,7 +275,7 @@ fn encode_domain(s: &str, bias: char) -> String { for (pos, c) in buf.match_indices(['.', '_']) { buf2 += &buf[last_pos..pos]; let cchar = c.chars().next().unwrap(); - if cchar == bias && is_mid_single(pos) { + if cchar == bias && is_mid_single(&buf, pos) { buf2.push('-'); } else if cchar == '.' { buf2 += "-0" @@ -374,6 +377,18 @@ impl QueryFilterList { self.0.iter().any(|itm| itm.passes(query)) ^ blacklist } } + + pub fn is_empty(&self) -> bool { + self.0.is_empty() + } + + pub fn first_host(&self) -> Option<&str> { + self.0.first().map(|f| f.host.as_str()) + } + + pub fn hosts(&self) -> BTreeSet<&str> { + self.0.iter().map(|f| f.host.as_str()).collect() + } } impl<'de> Deserialize<'de> for QueryFilterList { diff --git a/src/templates.rs b/src/templates.rs index ec90fe3..7af5f0e 100644 --- a/src/templates.rs +++ b/src/templates.rs @@ -1,3 +1,5 @@ +use std::collections::BTreeMap; + use crate::{ artifact_api::Artifact, cache::{Crc32, ListingEntry, Size}, @@ -11,6 +13,7 @@ use yarte::{Render, Template}; #[template(path = "index")] pub struct Index<'a> { pub main_url: &'a str, + pub example_site: &'a str, } #[derive(Template)] @@ -65,6 +68,16 @@ pub struct Junit { pub suites: TestSuites, } +#[derive(Template)] +#[template(path = "userscript")] +pub struct Userscript<'a> { + pub main_url: &'a str, + pub root_domain: &'a str, + pub no_https: bool, + pub forge_urls: Vec, + pub aliases: &'a BTreeMap<&'a str, &'a str>, +} + pub struct ViewerLink { pub id: &'static str, pub name: &'static str, diff --git a/templates/index.hbs b/templates/index.hbs index fcbe54e..ba12e5b 100644 --- a/templates/index.hbs +++ b/templates/index.hbs @@ -24,7 +24,7 @@ name="url" type="text" required - placeholder="codeberg.org/username/repo/actions/runs/42" + placeholder="{{example_site}}/user/repo/actions/runs/42" style="flex-grow: 1" /> @@ -40,6 +40,10 @@ Artifactview {{~crate::app::VERSION}} +

+ Install the Artifactview userscript for Greasemonkey/Violentmonkey + to add a "View artifact" button to your code forge. +

Disclaimer: Artifactview does not host any websites, the data is fetched from the respective diff --git a/templates/userscript.hbs b/templates/userscript.hbs new file mode 100644 index 0000000..3f1a15d --- /dev/null +++ b/templates/userscript.hbs @@ -0,0 +1,108 @@ +// ==UserScript== +// @name Artifactview +// @version 0.1.0 +// @description Adds a "View artifact" button to GitHub/Gitea/Forgejo CI artifacts +// @author ThetaDev +// @icon {{{main_url}}}/favicon.ico +// @homepageURL {{{main_url}}} +// @run-at document-idle +// @grant none +// @require https://greasyfork.org/scripts/28721-mutations/code/mutations.js?version=1108163 +{{~#each forge_urls}} +// @match {{{this}}} +{{~/each}} +// ==/UserScript== + +// Copyright (C) 2024 ThetaDev, MIT License + +// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +const AV_HOST = "{{{root_domain}}}"; +const NO_HTTPS = {{{no_https}}}; +const ALIASES = {{ @json_pretty aliases }}; + +function encodeDomain(s, bias) { + // Check if the character at the given position is in the middle of the string + // and it is not followed by escape seq numbers or further escapable characters + const isMidSingle = (str, pos) => { + if (pos === 0) return false; + const nc = str[pos + 1]; + return nc && !nc.match(/^[0-2\-\._]$/) + }; + + // Escape dashes + let buf = ""; + let last_pos = 0; + while (true) { + let pos = s.indexOf("-", last_pos); + if (pos < 0) break; + buf += s.substring(last_pos, pos); + if (bias === "-" && isMidSingle(s, pos)) { + buf += "-"; + } else { + buf += "-1"; + } + last_pos = pos + 1; + } + buf += s.substring(last_pos); + + // Replace special chars [._] + let buf2 = ""; + last_pos = 0; + for (let i = 0; i < buf.length; i++) { + if (buf[i] === "." || buf[i] === "_") { + if (buf[i] === bias && isMidSingle(buf, i)) { + buf2 += "-"; + } else if (buf[i] == ".") { + buf2 += "-0"; + } else { + buf2 += "-2"; + } + } else { + buf2 += buf[i]; + } + } + return buf2; +} + +function queryURL(host, user, repo, run, artifact) { + const h = ALIASES[host] ?? encodeDomain(host, "."); + return `http${NO_HTTPS ? "" : "s"}://${h}--${encodeDomain(user, "-")}--${encodeDomain(repo, "-")}--${run}-${artifact}.${AV_HOST}`; +} + +const url = new URL(window.location.href); +const m = url.pathname.match(/^\/([\w\-\.]+)\/([\w\-\.]+)\/actions\/runs\/(\d+)/); +const ICON = ``; + +if (m) { + if (url.host === "github.com") { + const init = () => document.querySelectorAll(`a[data-test-selector="download-artifact-button"]:not([data-has-view-button="true"])`).forEach((elm) => { + const artifact = elm.getAttribute("href").match(/\d+$/)[0]; + elm.insertAdjacentHTML("beforebegin", `${ICON}`); + elm.setAttribute("data-has-view-button", "true"); + }); + document.addEventListener("ghmo:container", init); + init(); + } else { + const rav = document.getElementById("repo-action-view"); + new MutationObserver((changes, observer) => { + if (changes.find((c) => Array.from(c.addedNodes).find((n) => n.className === "job-artifacts"))) { + document.querySelectorAll(".job-artifacts-item").forEach((elm, i) => { + const delBtn = elm.querySelector(".job-artifacts-delete"); + if (delBtn) { + const wrapper = document.createElement("div"); + wrapper.classList.add("tw-flex", "tw-gap-4", "tw-justify-end"); + wrapper.innerHTML = `${ICON}`; + elm.insertAdjacentElement("beforeend", wrapper); + wrapper.appendChild(delBtn); + } + }); + observer.disconnect(); + } + }).observe(rav, { childList: true, subtree: true }); + } +} diff --git a/tests/tests.rs b/tests/tests.rs index cdf21e9..8a0cfa2 100644 --- a/tests/tests.rs +++ b/tests/tests.rs @@ -430,3 +430,11 @@ async fn compressed(server: TestAv) { let expect = std::fs::read_to_string(path!(*TESTFILES / "sites" / "example.rs")).unwrap(); assert_eq!(buf, expect); } + +#[rstest] +#[tokio::test] +async fn userscript(server: TestAv) { + let resp = server.get("", "/artifactview.user.js").await; + let script = resp.text(); + assert!(script.starts_with("// ==UserScript==\n")); +} From a8e173c8a921ab29f4e70b7abd5167fb87c6f609 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Wed, 19 Jun 2024 00:19:59 +0200 Subject: [PATCH 003/221] fix: redirect user to directory path when requesting index page --- src/app.rs | 121 +++++++++++++++++++++++++------------------------ src/cache.rs | 33 ++++++++++++-- tests/tests.rs | 14 ++++++ 3 files changed, 105 insertions(+), 63 deletions(-) diff --git a/src/app.rs b/src/app.rs index a2cc2eb..8367c5a 100644 --- a/src/app.rs +++ b/src/app.rs @@ -178,68 +178,73 @@ impl App { } match entry.get_file(&path, uri.query().unwrap_or_default()) { - Ok(GetFileResult::File(res)) => { - let qparams = uri - .query() - .and_then(|q| serde_urlencoded::from_str::(q).ok()) - .unwrap_or_default(); - if res.filename.is_some() { - if let Some(viewer) = qparams.viewer { - match Self::try_view_file( - &state, - &entry, - &entry_res.zip_path, - &query, - &res, - &viewer, - &path, - ) - .await - { - Ok(resp) => return Ok(resp), - Err(e) => { - tracing::error!("{e}") + Ok(gfr) => { + if gfr.index() && !path.ends_with('/') { + return Ok(Redirect::permanent(&format!("{path}/")).into_response()); + } + + match gfr { + GetFileResult::File(res) => { + let qparams = uri + .query() + .and_then(|q| serde_urlencoded::from_str::(q).ok()) + .unwrap_or_default(); + if res.filename.is_some() { + if let Some(viewer) = qparams.viewer { + match Self::try_view_file( + &state, + &entry, + &entry_res.zip_path, + &query, + &res, + &viewer, + &path, + ) + .await + { + Ok(resp) => return Ok(resp), + Err(e) => { + tracing::error!("{e}") + } + } } } + Self::serve_artifact_file(&state, entry, &entry_res.zip_path, res, hdrs) + .await + } + GetFileResult::Listing(listing) => { + let run_url = query.forge_url(); + let tmpl = templates::Listing { + main_url: state.i.cfg.main_url(), + run_url: &run_url, + artifact_name: &entry.name, + path_components: path_components( + &query, + state.i.cfg.main_url(), + &run_url, + &entry.name, + &path, + ), + n_dirs: listing.n_dirs, + n_files: listing.n_files, + has_parent: listing.has_parent, + publisher: query.publisher(), + viewer_max_size: state + .i + .cfg + .load() + .viewer_max_size + .map(u32::from) + .unwrap_or(u32::MAX), + entries: listing.entries, + }; + + Ok(Response::builder() + .typed_header(headers::ContentType::html()) + .cache() + .body(tmpl.to_string().into())?) } } - Self::serve_artifact_file(&state, entry, &entry_res.zip_path, res, hdrs).await - } - Ok(GetFileResult::Listing(listing)) => { - if !path.ends_with('/') { - return Ok(Redirect::to(&format!("{path}/")).into_response()); - } - - let run_url = query.forge_url(); - let tmpl = templates::Listing { - main_url: state.i.cfg.main_url(), - run_url: &run_url, - artifact_name: &entry.name, - path_components: path_components( - &query, - state.i.cfg.main_url(), - &run_url, - &entry.name, - &path, - ), - n_dirs: listing.n_dirs, - n_files: listing.n_files, - has_parent: listing.has_parent, - publisher: query.publisher(), - viewer_max_size: state - .i - .cfg - .load() - .viewer_max_size - .map(u32::from) - .unwrap_or(u32::MAX), - entries: listing.entries, - }; - - Ok(Response::builder() - .typed_header(headers::ContentType::html()) - .cache() - .body(tmpl.to_string().into())?) } Err(Error::NotFound(e)) => { if path == FAVICON_PATH { diff --git a/src/cache.rs b/src/cache.rs index a2cb665..72611f9 100644 --- a/src/cache.rs +++ b/src/cache.rs @@ -72,6 +72,7 @@ pub struct GetFileResultFile { pub file: FileEntry, pub mime: Option, pub status: StatusCode, + pub index: bool, } #[derive(Serialize)] @@ -105,6 +106,17 @@ pub struct Size(pub u32); #[derive(Serialize)] pub struct Crc32(#[serde(with = "SerHexOpt::")] pub Option); +impl GetFileResult { + /// Return true if the result represents a directory index, so the client has to be redirected to the directory path + /// if the requested path does not end with a slash (otherwise resources on the index.html may not resolve properly) + pub fn index(&self) -> bool { + match self { + GetFileResult::File(f) => f.index, + GetFileResult::Listing(_) => true, + } + } +} + impl Cache { pub fn new(cfg: Config) -> Self { Self { @@ -298,21 +310,31 @@ impl CacheEntry { file: file.clone(), mime: util::path_mime(path), status: StatusCode::OK, + index: false, })); } else if util::site_path_ext(path).is_none() { index_path = Some(format!("{path}/index.html").into()); } - if let Some(file) = index_path - .and_then(|p: Cow| self.files.get(p.as_ref())) - .or_else(|| self.files.get("200.html")) - { - // index.html or SPA entrypoint + if let Some(file) = index_path.and_then(|p: Cow| self.files.get(p.as_ref())) { + // index.html return Ok(GetFileResult::File(GetFileResultFile { filename: None, file: file.clone(), mime: Some(mime::TEXT_HTML), status: StatusCode::OK, + index: true, + })); + } + + // SPA entrypoint + if let Some(file) = self.files.get("200.html") { + return Ok(GetFileResult::File(GetFileResultFile { + filename: None, + file: file.clone(), + mime: Some(mime::TEXT_HTML), + status: StatusCode::OK, + index: false, })); } @@ -348,6 +370,7 @@ impl CacheEntry { file: file.clone(), mime: Some(mime::TEXT_HTML), status: StatusCode::NOT_FOUND, + index: false, })); } diff --git a/tests/tests.rs b/tests/tests.rs index 8a0cfa2..bc305c0 100644 --- a/tests/tests.rs +++ b/tests/tests.rs @@ -435,6 +435,20 @@ async fn compressed(server: TestAv) { #[tokio::test] async fn userscript(server: TestAv) { let resp = server.get("", "/artifactview.user.js").await; + resp.assert_status_ok(); let script = resp.text(); assert!(script.starts_with("// ==UserScript==\n")); } + +#[rstest] +#[tokio::test] +/// Redirect user to the directory path if index.html or directory listing is served +async fn index_redirect(server: TestAv) { + let resp = server.get(S1, "/sites").await; + resp.assert_status(StatusCode::PERMANENT_REDIRECT); + assert_eq!(resp.header(header::LOCATION), "/sites/"); + + let resp = server.get(S1, "/junit").await; + resp.assert_status(StatusCode::PERMANENT_REDIRECT); + assert_eq!(resp.header(header::LOCATION), "/junit/"); +} From 55298b46176604445c8913744d3eac1f8470165f Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Wed, 19 Jun 2024 00:21:05 +0200 Subject: [PATCH 004/221] chore(release): release artifactview v0.3.0 --- CHANGELOG.md | 12 ++++++++++++ Cargo.lock | 2 +- Cargo.toml | 2 +- 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 149b09e..dad4e8f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,18 @@ All notable changes to this project will be documented in this file. +## [v0.3.0](https://codeberg.org/ThetaDev/artifactview/compare/v0.2.0..v0.3.0) - 2024-06-18 + +### ๐Ÿš€ Features + +- Add userscript - ([299f54f](https://codeberg.org/ThetaDev/artifactview/commit/299f54fd58b567884f76e1c36c7c1648d43fbc75)) + +### ๐Ÿ› Bug Fixes + +- Make icon visible on light background - ([7021980](https://codeberg.org/ThetaDev/artifactview/commit/70219805d0029bb5b1e0bd08f77f444949d5b9f6)) +- Redirect user to directory path when requesting index page - ([a8e173c](https://codeberg.org/ThetaDev/artifactview/commit/a8e173c8a921ab29f4e70b7abd5167fb87c6f609)) + + ## [v0.2.0](https://codeberg.org/ThetaDev/artifactview/compare/v0.1.0..v0.2.0) - 2024-06-14 ### ๐Ÿš€ Features diff --git a/Cargo.lock b/Cargo.lock index e9c65a6..3e8e2e8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -141,7 +141,7 @@ dependencies = [ [[package]] name = "artifactview" -version = "0.2.0" +version = "0.3.0" dependencies = [ "async_zip", "axum", diff --git a/Cargo.toml b/Cargo.toml index a5c3eee..c8bc2e1 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "artifactview" -version = "0.2.0" +version = "0.3.0" edition = "2021" authors = ["ThetaDev "] license = "MIT" From 604d650d49180b80784948e895508aa7e0048211 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Wed, 19 Jun 2024 00:45:22 +0200 Subject: [PATCH 005/221] chore: update quick-xml to v0.32.0 --- Cargo.lock | 5 ++--- Cargo.toml | 1 - crates/junit-parser/Cargo.toml | 2 +- crates/junit-parser/src/lib.rs | 38 +++++++++++++++++++++++++++------- 4 files changed, 34 insertions(+), 12 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 3e8e2e8..105c882 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -166,7 +166,6 @@ dependencies = [ "percent-encoding", "pin-project", "proptest", - "quick-xml", "quick_cache", "rand", "regex", @@ -2030,9 +2029,9 @@ checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" [[package]] name = "quick-xml" -version = "0.31.0" +version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1004a344b30a54e2ee58d66a71b32d2db2feb0a31f9a2d302bf0536f15de2a33" +checksum = "1d3a6e5838b60e0e8fa7a43f22ade549a37d61f8bdbe636d0d7816191de969c2" dependencies = [ "memchr", ] diff --git a/Cargo.toml b/Cargo.toml index c8bc2e1..d63eb11 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -45,7 +45,6 @@ once_cell = "1.19.0" path_macro = "1.0.0" percent-encoding = "2.3.1" pin-project = "1.1.5" -quick-xml = { version = "0.31.0", features = ["escape-html"] } quick_cache = "0.5.1" rand = "0.8.5" regex = "1.10.4" diff --git a/crates/junit-parser/Cargo.toml b/crates/junit-parser/Cargo.toml index 6bc422a..ddd48a4 100644 --- a/crates/junit-parser/Cargo.toml +++ b/crates/junit-parser/Cargo.toml @@ -7,7 +7,7 @@ license = "BSD-2-Clause" repository = "https://github.com/borisfaure/junit-parser" [dependencies] -quick-xml = { version = "0.31.0", features = ["escape-html"] } +quick-xml = { version = "0.32.0", features = ["escape-html"] } thiserror = "1.0.61" time = { version = "0.3.36", features = ["parsing", "serde-well-known"] } serde = { version = "1.0", features = ["derive"] } diff --git a/crates/junit-parser/src/lib.rs b/crates/junit-parser/src/lib.rs index a74f94d..1b8a093 100644 --- a/crates/junit-parser/src/lib.rs +++ b/crates/junit-parser/src/lib.rs @@ -1,6 +1,7 @@ use std::borrow::Cow; use std::io::BufRead; +use quick_xml::errors::IllFormedError; use quick_xml::escape::unescape; use quick_xml::events::BytesStart as XMLBytesStart; use quick_xml::events::Event as XMLEvent; @@ -156,7 +157,10 @@ impl TestSuites { ts.suites.push(TestSuite::new_empty(e)?); } Ok(XMLEvent::Eof) => { - return Err(XMLError::UnexpectedEof("testsuites".to_string()).into()) + return Err(XMLError::IllFormed(IllFormedError::MissingEndTag( + "testsuites".to_string(), + )) + .into()); } Err(err) => return Err(err.into()), _ => (), @@ -212,7 +216,10 @@ impl TestSuite { ts.cases.push(TestCase::new_empty(e)?); } Ok(XMLEvent::Eof) => { - return Err(XMLError::UnexpectedEof("testsuite".to_string()).into()) + return Err(XMLError::IllFormed(IllFormedError::MissingEndTag( + "testsuite".to_string(), + )) + .into()); } Err(err) => return Err(err.into()), _ => (), @@ -311,7 +318,12 @@ impl TestCase { tc.status = TestStatus::Flaky; tc.retries.push(Retry::from_reader(e, r)?); } - XMLEvent::Eof => return Err(XMLError::UnexpectedEof("testcase".to_string()).into()), + XMLEvent::Eof => { + return Err(XMLError::IllFormed(IllFormedError::MissingEndTag( + "testcase".to_string(), + )) + .into()); + } _ => (), } } @@ -392,7 +404,10 @@ impl Message { msg.text += e.unescape()?.trim(); } Ok(XMLEvent::Eof) => { - return Err(XMLError::UnexpectedEof("failure".to_string()).into()) + return Err(XMLError::IllFormed(IllFormedError::MissingEndTag( + String::from_utf8(name.0.to_vec()).unwrap_or_default(), + )) + .into()); } Err(err) => return Err(err.into()), _ => (), @@ -444,7 +459,10 @@ impl Retry { rt.system_err = parse_system(e, r)?; } Ok(XMLEvent::Eof) => { - return Err(XMLError::UnexpectedEof("failure".to_string()).into()) + return Err(XMLError::IllFormed(IllFormedError::MissingEndTag( + String::from_utf8(name.0.to_vec()).unwrap_or_default(), + )) + .into()); } Err(err) => return Err(err.into()), _ => (), @@ -500,7 +518,10 @@ fn parse_system( res = Some(e.unescape()?.to_string()); } Ok(XMLEvent::Eof) => { - return Err(XMLError::UnexpectedEof(format!("{:?}", orig.name())).into()); + return Err(XMLError::IllFormed(IllFormedError::MissingEndTag( + String::from_utf8(orig.name().0.to_vec()).unwrap_or_default(), + )) + .into()); } Err(err) => return Err(err.into()), _ => (), @@ -557,7 +578,10 @@ pub fn from_reader(reader: B) -> Result { return Ok(suites); } Ok(XMLEvent::Eof) => { - return Err(XMLError::UnexpectedEof("testsuites".to_string()).into()) + return Err(XMLError::IllFormed(IllFormedError::MissingEndTag( + "testsuites".to_string(), + )) + .into()); } Err(err) => return Err(err.into()), _ => (), From 311d3aedb968d1103569300d9c7f117edd96ae45 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Wed, 19 Jun 2024 00:50:52 +0200 Subject: [PATCH 006/221] fix: add instance domain to userscript description --- templates/userscript.hbs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/userscript.hbs b/templates/userscript.hbs index 3f1a15d..d4cff45 100644 --- a/templates/userscript.hbs +++ b/templates/userscript.hbs @@ -1,7 +1,7 @@ // ==UserScript== // @name Artifactview // @version 0.1.0 -// @description Adds a "View artifact" button to GitHub/Gitea/Forgejo CI artifacts +// @description Adds a "View artifact" button to GitHub/Gitea/Forgejo CI artifacts using the Artifactview instance {{{root_domain}}} // @author ThetaDev // @icon {{{main_url}}}/favicon.ico // @homepageURL {{{main_url}}} From 7e016682c03871fba8896b148a23b2ed9ed104fd Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Wed, 19 Jun 2024 03:19:43 +0200 Subject: [PATCH 007/221] ci: create test artifacts --- .forgejo/workflows/artifact.yaml | 32 ++++++++++++++++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/.forgejo/workflows/artifact.yaml b/.forgejo/workflows/artifact.yaml index 28870dd..0470fa2 100644 --- a/.forgejo/workflows/artifact.yaml +++ b/.forgejo/workflows/artifact.yaml @@ -4,7 +4,7 @@ on: branches: - main paths: - - ".forgejo/artifact.yaml" + - ".forgejo/workflows/artifact.yaml" jobs: artifact: @@ -12,4 +12,32 @@ jobs: steps: - name: ๐Ÿ‘๏ธ Checkout repository uses: actions/checkout@v4 - - name: Build artifact + - name: Create test artifacts + run: | + # A1 + mkdir -p artifacts/a1/mdbook + cd artifacts + git clone https://github.com/rust-lang/mdBook + cd mdBook/test_book + mdbook build -d ../../a1/mdbook + cd ../.. + + cp -r ../tests/testfiles/junit ../tests/testfiles/sites/style.css ../tests/testfiles/sites/404.html ../tests/testfiles/sites/example.rs ../README.md a1 + + # A2 + git clone https://github.com/SveltePress/sveltepress + cd sveltepress/packages/docs-site + pnpm i + pnpm build + mv dist ../../../a2 + - name: Upload A1 (Example) + uses: https://code.forgejo.org/forgejo/upload-artifact@v4 + with: + name: Example + path: artifacts/a1 + + - name: Upload A2 (SveltePress) + uses: https://code.forgejo.org/forgejo/upload-artifact@v4 + with: + name: SveltePress + path: artifacts/a2 From f1f0af62647074e2cce6eb52fb188e014b248ace Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Wed, 19 Jun 2024 03:38:26 +0200 Subject: [PATCH 008/221] fix: do not show fallback pages for favicon --- src/cache.rs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/cache.rs b/src/cache.rs index 72611f9..737e514 100644 --- a/src/cache.rs +++ b/src/cache.rs @@ -327,6 +327,11 @@ impl CacheEntry { })); } + // Do not show fallback pages for favicon + if path == "favicon.ico" { + return Err(Error::NotFound("requested file".into())); + } + // SPA entrypoint if let Some(file) = self.files.get("200.html") { return Ok(GetFileResult::File(GetFileResultFile { From 68ad00170fc8b0a881bbdeb36e50374e335b3f7f Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Wed, 19 Jun 2024 03:41:19 +0200 Subject: [PATCH 009/221] chore: update dependencies --- Cargo.lock | 161 ++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 109 insertions(+), 52 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 105c882..d36ae3d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -107,9 +107,9 @@ dependencies = [ [[package]] name = "anstyle-query" -version = "1.0.3" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a64c907d4e79225ac72e2a354c9ce84d50ebb4586dee56c82b3ee73004f537f5" +checksum = "ad186efb764318d35165f1758e7dcef3b10628e26d41a44bc5550652e6804391" dependencies = [ "windows-sys 0.52.0", ] @@ -333,9 +333,9 @@ dependencies = [ [[package]] name = "axum-test" -version = "15.0.1" +version = "15.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6eaf3651cc3b15185c6033db9cc40676b02ffaa69278679c5f018de2bcae598" +checksum = "0882240a5cff2c0af7b01a684cb4048629841ccbd20305948e12ddc25f1c36c2" dependencies = [ "anyhow", "auto-future", @@ -343,6 +343,7 @@ dependencies = [ "bytes", "cookie", "http 1.1.0", + "http-body", "http-body-util", "hyper", "hyper-util", @@ -361,9 +362,9 @@ dependencies = [ [[package]] name = "backtrace" -version = "0.3.72" +version = "0.3.73" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17c6a35df3749d2e8bb1b7b21a976d82b15548788d2735b9d82f329268f71a11" +checksum = "5cc23269a4f8976d0a4d2e7109211a419fe30e8d88d677cd60b6bc79c5732e0a" dependencies = [ "addr2line", "cc", @@ -484,9 +485,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.0.98" +version = "1.0.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41c270e7540d725e65ac7f1b212ac8ce349719624d7bcff99f8e2e488e8cf03f" +checksum = "96c51067fd44124faa7f870b4b1c969379ad32b2ba805aa959430ceaa384f695" dependencies = [ "jobserver", "libc", @@ -749,15 +750,15 @@ dependencies = [ [[package]] name = "derive_more" -version = "0.99.17" +version = "0.99.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321" +checksum = "5f33878137e4dafd7fa914ad4e259e18a4e8e532b9617a2d0150262bf53abfce" dependencies = [ "convert_case", "proc-macro2", "quote", "rustc_version", - "syn 1.0.109", + "syn 2.0.66", ] [[package]] @@ -1215,12 +1216,12 @@ dependencies = [ [[package]] name = "http-body-util" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0475f8b2ac86659c21b64320d5d653f9efe42acd2a4e560073ec61a155a34f1d" +checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f" dependencies = [ "bytes", - "futures-core", + "futures-util", "http 1.1.0", "http-body", "pin-project-lite", @@ -1228,9 +1229,9 @@ dependencies = [ [[package]] name = "httparse" -version = "1.8.0" +version = "1.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" +checksum = "0fcc0b4a115bf80b728eb8ea024ad5bd707b615bfed49e0665b6e0f86fd082d9" [[package]] name = "httpdate" @@ -1276,19 +1277,21 @@ dependencies = [ [[package]] name = "hyper-rustls" -version = "0.26.0" +version = "0.27.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0bea761b46ae2b24eb4aef630d8d1c398157b6fc29e6350ecf090a0b70c952c" +checksum = "5ee4be2c948921a1a5320b629c4193916ed787a7f7f293fd3f7f5a6c9de74155" dependencies = [ "futures-util", "http 1.1.0", "hyper", "hyper-util", "rustls", + "rustls-native-certs", "rustls-pki-types", "tokio", "tokio-rustls", "tower-service", + "webpki-roots", ] [[package]] @@ -1538,9 +1541,9 @@ checksum = "60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00" [[package]] name = "memchr" -version = "2.7.2" +version = "2.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c8640c5d730cb13ebd907d8d04b52f55ac9a2eec55b440c8892f40d56c76c1d" +checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" [[package]] name = "mime" @@ -1560,9 +1563,9 @@ dependencies = [ [[package]] name = "miniz_oxide" -version = "0.7.3" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87dfd01fe195c66b572b37921ad8803d010623c0aca821bea2302239d155cdae" +checksum = "b8a240ddb74feaf34a79a7add65a741f3167852fba007066dcac1ca548d89c08" dependencies = [ "adler", ] @@ -1657,9 +1660,9 @@ dependencies = [ [[package]] name = "object" -version = "0.35.0" +version = "0.36.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8ec7ab813848ba4522158d5517a6093db1ded27575b070f4177b8d12b41db5e" +checksum = "576dfe1fc8f9df304abb159d767a29d0476f7750fbf8aa7ad07816004a207434" dependencies = [ "memchr", ] @@ -1979,9 +1982,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.84" +version = "1.0.85" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec96c6a92621310b51366f1e28d05ef11489516e93be030060e5fc12024a49d6" +checksum = "22244ce15aa966053a896d1accb3a6e68469b97c7f33f284b99f0d576879fc23" dependencies = [ "unicode-ident", ] @@ -2048,6 +2051,53 @@ dependencies = [ "parking_lot", ] +[[package]] +name = "quinn" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4ceeeeabace7857413798eb1ffa1e9c905a9946a57d81fb69b4b71c4d8eb3ad" +dependencies = [ + "bytes", + "pin-project-lite", + "quinn-proto", + "quinn-udp", + "rustc-hash", + "rustls", + "thiserror", + "tokio", + "tracing", +] + +[[package]] +name = "quinn-proto" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddf517c03a109db8100448a4be38d498df8a210a99fe0e1b9eaf39e78c640efe" +dependencies = [ + "bytes", + "rand", + "ring", + "rustc-hash", + "rustls", + "slab", + "thiserror", + "tinyvec", + "tracing", +] + +[[package]] +name = "quinn-udp" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9096629c45860fc7fb143e125eb826b5e721e10be3263160c7d60ca832cf8c46" +dependencies = [ + "libc", + "once_cell", + "socket2", + "tracing", + "windows-sys 0.52.0", +] + [[package]] name = "quote" version = "1.0.36" @@ -2107,18 +2157,18 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.5.1" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "469052894dcb553421e483e4209ee581a45100d31b4018de03e5a7ad86374a7e" +checksum = "c82cf8cff14456045f55ec4241383baeff27af886adb72ffb2162f99911de0fd" dependencies = [ "bitflags 2.5.0", ] [[package]] name = "regex" -version = "1.10.4" +version = "1.10.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c117dbdfde9c8308975b6a18d71f3f385c89461f7b3fb054288ecf2a2058ba4c" +checksum = "b91213439dad192326a0d7c6ee3955910425f441d7038e0d6933b0aec5c4517f" dependencies = [ "aho-corasick", "memchr", @@ -2128,9 +2178,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.6" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86b83b8b9847f9bf95ef68afb0b8e6cdb80f498442f5179a29fad448fcc1eaea" +checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df" dependencies = [ "aho-corasick", "memchr", @@ -2139,9 +2189,9 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.8.3" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adad44e29e4c806119491a7f06f03de4d1af22c3a680dd47f1e6e179439d1f56" +checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b" [[package]] name = "relative-path" @@ -2151,9 +2201,9 @@ checksum = "ba39f3699c378cd8970968dcbff9c43159ea4cfbd88d43c00b22f2ef10a435d2" [[package]] name = "reqwest" -version = "0.12.4" +version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "566cafdd92868e0939d3fb961bd0dc25fcfaaed179291093b3d43e6b3150ea10" +checksum = "c7d6d2a27d57148378eb5e111173f4276ad26340ecc5c49a4a2152167a2d6a37" dependencies = [ "base64 0.22.1", "bytes", @@ -2174,6 +2224,7 @@ dependencies = [ "once_cell", "percent-encoding", "pin-project-lite", + "quinn", "rustls", "rustls-native-certs", "rustls-pemfile", @@ -2181,7 +2232,7 @@ dependencies = [ "serde", "serde_json", "serde_urlencoded", - "sync_wrapper 0.1.2", + "sync_wrapper 1.0.1", "tokio", "tokio-native-tls", "tokio-rustls", @@ -2271,6 +2322,12 @@ version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" +[[package]] +name = "rustc-hash" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" + [[package]] name = "rustc_version" version = "0.4.0" @@ -2295,11 +2352,11 @@ dependencies = [ [[package]] name = "rustls" -version = "0.22.4" +version = "0.23.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf4ef73721ac7bcd79b2b315da7779d8fc09718c6b3d2d1b2d94850eb8c18432" +checksum = "05cff451f60db80f490f3c182b77c35260baace73209e9cdbbe526bfe3a4d402" dependencies = [ - "log", + "once_cell", "ring", "rustls-pki-types", "rustls-webpki", @@ -2899,9 +2956,9 @@ dependencies = [ [[package]] name = "tokio-rustls" -version = "0.25.0" +version = "0.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "775e0c0f0adb3a2f22a00c4745d728b479985fc15ee7ca6a2608388c5569860f" +checksum = "0c7bc40d0e5a97695bb96e27995cd3a08538541b0a846f65bba7a359f36700d4" dependencies = [ "rustls", "rustls-pki-types", @@ -3107,9 +3164,9 @@ dependencies = [ [[package]] name = "unicode-width" -version = "0.1.12" +version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68f5e5f3158ecfd4b8ff6fe086db7c8467a2dfdac97fe420f2b7c4aa97af66d6" +checksum = "0336d538f7abc86d282a4189614dfaa90810dfc2c6f6427eaf88e16311dd225d" [[package]] name = "unicode-xid" @@ -3131,9 +3188,9 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "url" -version = "2.5.0" +version = "2.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633" +checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" dependencies = [ "form_urlencoded", "idna", @@ -3148,9 +3205,9 @@ checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" [[package]] name = "utf8parse" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" +checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "v_eval" @@ -3323,9 +3380,9 @@ dependencies = [ [[package]] name = "webpki-roots" -version = "0.26.1" +version = "0.26.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3de34ae270483955a94f4b21bdaaeb83d508bb84a01435f393818edb0012009" +checksum = "bd7c23921eeb1713a4e851530e9b9756e4fb0e89978582942612524cf09f01cd" dependencies = [ "rustls-pki-types", ] @@ -3729,9 +3786,9 @@ dependencies = [ [[package]] name = "zstd-sys" -version = "2.0.10+zstd.1.5.6" +version = "2.0.11+zstd.1.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c253a4914af5bafc8fa8c86ee400827e83cf6ec01195ec1f1ed8441bf00d65aa" +checksum = "75652c55c0b6f3e6f12eb786fe1bc960396bf05a1eb3bf1f3691c3610ac2e6d4" dependencies = [ "cc", "pkg-config", From 30838a1523d11b2485da854355cbd186f7c2b997 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Wed, 19 Jun 2024 03:42:15 +0200 Subject: [PATCH 010/221] chore(release): release artifactview v0.3.1 --- CHANGELOG.md | 13 +++++++++++++ Cargo.lock | 2 +- Cargo.toml | 2 +- 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index dad4e8f..f5bf17a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,19 @@ All notable changes to this project will be documented in this file. +## [v0.3.1](https://codeberg.org/ThetaDev/artifactview/compare/v0.3.0..v0.3.1) - 2024-06-19 + +### ๐Ÿ› Bug Fixes + +- Add instance domain to userscript description - ([311d3ae](https://codeberg.org/ThetaDev/artifactview/commit/311d3aedb968d1103569300d9c7f117edd96ae45)) +- Do not show fallback pages for favicon - ([f1f0af6](https://codeberg.org/ThetaDev/artifactview/commit/f1f0af62647074e2cce6eb52fb188e014b248ace)) + +### โš™๏ธ Miscellaneous Tasks + +- Update quick-xml to v0.32.0 - ([604d650](https://codeberg.org/ThetaDev/artifactview/commit/604d650d49180b80784948e895508aa7e0048211)) +- Update dependencies - ([68ad001](https://codeberg.org/ThetaDev/artifactview/commit/68ad00170fc8b0a881bbdeb36e50374e335b3f7f)) + + ## [v0.3.0](https://codeberg.org/ThetaDev/artifactview/compare/v0.2.0..v0.3.0) - 2024-06-18 ### ๐Ÿš€ Features diff --git a/Cargo.lock b/Cargo.lock index d36ae3d..d6d6299 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -141,7 +141,7 @@ dependencies = [ [[package]] name = "artifactview" -version = "0.3.0" +version = "0.3.1" dependencies = [ "async_zip", "axum", diff --git a/Cargo.toml b/Cargo.toml index d63eb11..9197504 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "artifactview" -version = "0.3.0" +version = "0.3.1" edition = "2021" authors = ["ThetaDev "] license = "MIT" From d0cdbf55a3a278ce21cab11885170e9f4a6d4094 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Fri, 21 Jun 2024 07:38:14 +0200 Subject: [PATCH 011/221] feat: create PR comments --- Cargo.lock | 54 ++ Cargo.toml | 3 + README.md | 70 ++- resources/screenshotCode.png | Bin 0 -> 44256 bytes resources/screenshotJUnit.png | Bin 0 -> 48349 bytes src/app.rs | 300 +++++++++- src/artifact_api.rs | 565 ++++++++++++++++-- src/cache.rs | 12 +- src/config.rs | 15 +- src/error.rs | 8 +- src/query.rs | 12 +- ...rtifactview__app__tests__pr_comment_1.snap | 9 + ...rtifactview__app__tests__pr_comment_2.snap | 14 + ...rtifactview__app__tests__pr_comment_3.snap | 15 + src/util.rs | 20 +- tests/testfiles/giteaWorkflowRun.json | 320 ++++++++++ tests/testfiles/githubWorkflowRun.json | 220 +++++++ 17 files changed, 1560 insertions(+), 77 deletions(-) create mode 100644 resources/screenshotCode.png create mode 100644 resources/screenshotJUnit.png create mode 100644 src/snapshots/artifactview__app__tests__pr_comment_1.snap create mode 100644 src/snapshots/artifactview__app__tests__pr_comment_2.snap create mode 100644 src/snapshots/artifactview__app__tests__pr_comment_3.snap create mode 100644 tests/testfiles/giteaWorkflowRun.json create mode 100644 tests/testfiles/githubWorkflowRun.json diff --git a/Cargo.lock b/Cargo.lock index d6d6299..b444204 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -172,6 +172,7 @@ dependencies = [ "reqwest", "rstest", "scraper", + "secrecy", "serde", "serde-env", "serde-hex", @@ -180,11 +181,13 @@ dependencies = [ "syntect", "temp_testdir", "thiserror", + "time", "tokio", "tokio-util", "tower-http", "tracing", "tracing-subscriber", + "unic-emoji-char", "url", "yarte", "yarte_helpers", @@ -2468,6 +2471,16 @@ dependencies = [ "tendril", ] +[[package]] +name = "secrecy" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9bd1c54ea06cfd2f6b63219704de0b9b4f72dcc2b8fdef820be6cd799780e91e" +dependencies = [ + "serde", + "zeroize", +] + [[package]] name = "security-framework" version = "2.11.0" @@ -3132,6 +3145,47 @@ version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" +[[package]] +name = "unic-char-property" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8c57a407d9b6fa02b4795eb81c5b6652060a15a7903ea981f3d723e6c0be221" +dependencies = [ + "unic-char-range", +] + +[[package]] +name = "unic-char-range" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0398022d5f700414f6b899e10b8348231abf9173fa93144cbc1a43b9793c1fbc" + +[[package]] +name = "unic-common" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80d7ff825a6a654ee85a63e80f92f054f904f21e7d12da4e22f9834a4aaa35bc" + +[[package]] +name = "unic-emoji-char" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b07221e68897210270a38bde4babb655869637af0f69407f96053a34f76494d" +dependencies = [ + "unic-char-property", + "unic-char-range", + "unic-ucd-version", +] + +[[package]] +name = "unic-ucd-version" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96bd2f2237fe450fcd0a1d2f5f4e91711124f7857ba2e964247776ebeeb7b0c4" +dependencies = [ + "unic-common", +] + [[package]] name = "unicase" version = "2.7.0" diff --git a/Cargo.toml b/Cargo.toml index 9197504..b4cbbc2 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -52,6 +52,7 @@ reqwest = { version = "0.12.4", default-features = false, features = [ "json", "stream", ] } +secrecy = { version = "0.8.0", features = ["serde"] } serde = { version = "1.0.203", features = ["derive"] } serde-env = "0.1.1" serde-hex = "0.1.0" @@ -65,11 +66,13 @@ syntect = { version = "5.2.0", default-features = false, features = [ "regex-onig", ] } thiserror = "1.0.61" +time = { version = "0.3.36", features = ["serde-human-readable", "macros"] } tokio = { version = "1.37.0", features = ["macros", "fs", "rt-multi-thread"] } tokio-util = { version = "0.7.11", features = ["io"] } tower-http = { version = "0.5.2", features = ["trace", "set-header"] } tracing = "0.1.40" tracing-subscriber = "0.3.18" +unic-emoji-char = "0.9.0" url = "2.5.0" yarte = { version = "0.15.7", features = ["json"] } diff --git a/README.md b/README.md index 0a610f8..d3458fd 100644 --- a/README.md +++ b/README.md @@ -1,23 +1,28 @@ # Artifactview -View CI build artifacts from Forgejo/Github using your web browser. +View CI build artifacts from Forgejo/Github using your web browser! Forgejo and GitHub's CI systems allow you to upload files and directories as [artifacts](https://github.com/actions/upload-artifact). These can be downloaded as zip files. However there is no simple way to view individual files of an artifact. -Artifactview is a small web application that fetches these CI artifacts and displays -their contents. +That's why I developed Artifactview. It is a small web application that fetches these CI +artifacts and serves their contents. -It offers full support for single page applications and custom 404 error pages. -Single-page applications require a file named `200.html` placed in the root directory, -which will be served in case no file exists for the requested path. A custom 404 error -page is defined using a file named `404.html` in the root directory. +It is a valuable tool in open source software development: you can quickly look at test +reports or coverage data or showcase your single page web applications to your +teammates. -Artifactview displays a file listing if there is no `index.html` or fallback page -present, so you can browse artifacts that dont contain websites. +## Features -![Artifact file listing](resources/screenshotFiles.png) +- ๐Ÿ“ฆ Quickly view CI artifacts in your browser without messing with zip files +- ๐Ÿ“‚ File listing for directories without index page +- ๐Ÿ  Every artifact has a unique subdomain to support pages with absolute paths +- ๐ŸŒŽ Full SPA support with `200.html` and `404.html` fallback pages +- ๐Ÿ‘๏ธ Viewer for Markdown, syntax-highlighted code and JUnit test reports +- ๐Ÿต Greasemonkey userscript to automatically add a "View artifact" button to + GitHub/Gitea/Forgejo +- ๐Ÿฆ€ Fast and efficient, only extracts files from zip archive if necessary ## How to use @@ -27,6 +32,51 @@ box on the main page. You can also pass the run URL with the `?url=` parameter. Artifactview will show you a selection page where you will be able to choose the artifact you want to browse. +If there is no `index.html` or fallback page present, a file listing will be shown so +you can browse the contents of the artifact. + +![Artifact file listing](resources/screenshotFiles.png) + +If you want to use Artifactview to showcase a static website, you can make use of +fallback pages. If a file named `200.html` is placed in the root directory, it will be +served in case no file exists for the requested path. This allows serving single-page +applications with custom routing. A custom 404 error page is defined using a file named +`404.html` in the root directory. + +The behavior is the same as with other web hosts like surge.sh, so a lot of website +build tools already follow that convention. + +Artifactview includes different viewers to better display files of certain types that +browsers cannot handle by default. There is a renderer for markdown files as well as a +syntax highlighter for source code files. The viewers are only shown if the files are +accessed with the `?viewer=` URL parameter which is automatically set when opening a +file from a directory listing. You can always download the raw version of the file via +the link in the top right corner. + +![Code viewer](resources/screenshotCode.png) + +Artifactview even includes an interactive viewer for JUnit test reports (XML files with +`junit` in their filename). The application has been designed to be easily extendable, +so if you have suggestions on other viewers that should be added, feel free to create an +issue or a PR. + +![JUnit report viewer](resources/screenshotJUnit.png) + +Accessing Artifactview by copying the CI run URL into its homepage may be a little bit +tedious. That's why there are some convenient alternatives available. + +You can install the Greasemonkey userscript from the link at the bottom of the homepage. +The script adds a "View artifact" link with an eye icon next to every CI artifact on +both GitHub and Forgejo. + +Additionally there is a custom GitHub/Forgejo action that automatically creates a comment +under each pull request with the preview links of all artifacts created by the latest +CI run. This way every collaborator to your project has easy access to the preview. + +```yaml +TODO: showcase action +``` + ## Setup You can run artifactview using the docker image provided under diff --git a/resources/screenshotCode.png b/resources/screenshotCode.png new file mode 100644 index 0000000000000000000000000000000000000000..7052628a573193460b65664ddf602495a69f87d8 GIT binary patch literal 44256 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 literal 0 HcmV?d00001 diff --git a/resources/screenshotJUnit.png b/resources/screenshotJUnit.png new file mode 100644 index 0000000000000000000000000000000000000000..3a050703164ab7af51ed7f1ab11690b0edad43d4 GIT binary patch literal 48349 zcmeFZXH-;6*Dk6^Xh3ojkxS#9F61>z^on-mrN!C>2=(G0i`kcpaZ(|DRux1;M0cIhpzC zdH>lya`@_ve>9nyH1fTlx}4!7-G4M0`)?T{tvbe0xx97`Zf2@_5njn{@u#pj{j@ufA^68rJ=JZ zq5G@3g)b+{tk*Z|FU!7seAHPko2!|R`N0ytmzMT!Mj5axi9Y&fKNgv9Mk~Q+B+&Jkf~9sLL@@_$QRXzJ;u= zFvVs3jj+Sw4|u%P?E4#5_2&mAF6-lCP5y-I$IEHu?TlVEsL+Jr{b2(yWc5;<4yIRZ z^Sj8j8%w^UQv{@i1r5GCsdF09a~=DoDy26U5j7P(#;t6oC!(G5$aMpg=CxUOT5x{0 z+c%cy`ObQ*Ic!8-{_}Jw(wX?gs zo?!B^XgSrRmk?$5XtQRw2JvVuuLN_tS|oMS)dc=LSCc2{!J8=L#qsjN;0x9KLCrJIQKP_P$45?o43*+}_e1aP zrIb&FiC{uOz=6n}7Wx>@K%Y<=GUl<{7-Y&PoP9!; zlj>6L(6mgOwaNx1Af@3>{BV(UrqH%#`-#r?*J?S<3m0`8Rcp78?Nr|#%>|luvP83) zDZw-}B`EYu++rtF%DGIx5)BId8RWrTM) z6f5YvbLr5^TCC-lmnGR$b*PH!yD!D=Xc}eidhD;79nN^w@2^jcyy{L+TXpqw{ic$l zS^Q+mzMZ~oX*9W%}Z;t1)s|8Z%kD$dIqqFlZF2J zrh52|#ilYoAp`zObAs&2S#9s5wWH0C5(kJ&y$GAyeN8Fivz;zJPoKvOz;OBbrNb{T zQY((;Ltjw!Tuy&eWqi#2{HvQa9fZU0oW|f?5j<5nWV7~g`g=iaD4v-PEOS2XPinVt zm)yv+2fx|4NcwL0jWK$i&GC#aDY(7)Nkd3T*cJWkNpDYF1j;T}qt9(*%BFh#CYO|n zoW?V9xJId&IxiVJE3j%vFe$|?hDQ~#MS>qP-?xOg)O((vEvs)Jy>(`!F3(H~>o49u znJ97J{VmxiGV`va$$yYo3}ZN=?~$LzttkR^2D99ws9Vlsy2hQ>`o18Ys9id}(@ziH zW}#}qPI)w+q|rB_Q{9-^t&`*1Ev^r9l$c-wZn*Lu+LNEuwqhW`AEiJHuzyVD!&hqOMCOH+kGbw?LUi#$U5ojumGbbeIe6 zeGX(O{`@$wz|RQy@*ywFQP6^CD}hul=1!lp$ssJ0lP&Igo)acJUAHK>SkGT| zeX%XFBPvBh%pzEnv*ZV6?-wvY6deD!C=u7NB#O-nx? zla%&Ui;~*Sqcm7nwIem*F-1^a( z$)>_i@Vf0>4Vl>FX;_jBBVilP2_bJaTdEtX++_gQjq;~(MN+^EjPr{R#~mlMeFeBg zw?}(KW|Gl`yW%F?-uK#h^=n3Ttc;Gqo^^~_(5A-{*aaKg(P^yt4Nd0_j#Qz&>)iPW zf9-UX?axc}4%~dBo(bppKJ{Gh6L-zW>O@>;+^jaiAeZ`)l?JsKV#!X^Z7AQ@Ub%L`kp}J z5+J+jM1GUB1eM-DU2CJ5kyVKHv|HYf~UU3*dVbsl*6*5yrBt9FGyGg zAnI~AQGp%q{K1BW#099LXf{@iT?3Zl#GC`nhmj&#ntjW#Z9TLDYu~s@R)=4Kq*ry^pf46xGeL0g%Bdf3Y%-GlerME&mf|B=2;nD5y+~N{D*CJ53e&s zZ1R4e_=4{XyG?r%a>LnH8Uyaio7Y9NNTO9&yfjT21j)h_*aBABE`v&5^?Y*YG7=a0F9M#y#xG8jR>N(uBD^|O(z?t&nQZK^pz0Scl9o#VH=lk>D4_k*jN-&a8ke9vQw zM$EjucW;f{Qo<_g+5Y|l)#4a-d_7dEaoT3JFX25Ckq@QWm-V|DQN+h5YS^3~r2X+Z z7+#A%03n+Cd}lLL8+Iff7KsJ?(ePKNJk2F&$Ug4KZ zA0ifR{Y)H1uil}i$x9`7f^yd&)Sj5KI;<~vcP_HmWGB8${NbN3EzU${B7Tbu(Rd?j z2iqr3!3F`#)KTH4%$pD330~}K=0IQL$0ufE?ffo*#l>AWkgv*=;f4^@ZnEYQPRHg7 z-uvR_kum>loSl(GuJgVB17U$V!yR(oO%Pgd$kRpR=Y74)YOMU4tS+ck&L%W?T-ff| zgxn{SKRM`0hiTX&C}jSbr;)El(1GaywK4-biW$z%xZZkGq*3E7od9WA(a#1`QDFfEBCqh)2>cg@&^8NSDqhW> z5vo;4w%4jHL?$x)4ym_Z zbNgiA?OOiwsi74=MS%h-%{cP`!^d_Z`in$Lc#OA4v>+}%^qGWl`-0oZGvVLuYt`?b zN|_b;EK6fjyJzogP>ctag_WY1pO8P>dnlCLT;(|$l>CaxAVSJVZvy%DaQI)5(u=AHrHbw>H1iW+4y_1`*f35qlq`PTU%D zn#FddM@I|c=Pi*jim=vPmR#>}$&;+K2gcS+IJ|;+sCL|qhW#*y0Dtuu2i%b_`aum$ zMFc&Me;0T0axKMmScn#=#R&9!#@f}+53!NL!E~3B;rHEg2OZi*;5o|$F~MNUUlX~D z9?@5n6GbC^ z>UvEhsPr|R=9G+g8s#3O(y^^~w}`Xz%|``u52Lm+c>5)Smtq&PT@61FGj?H9S>CgP z<)K-O5pPsteS)Fq9~7KWF`O0#qNK#`{M$vvAjEbDJhJ7H<0Sz>5lB z7z$vCD7OWT+MRi)nilZ{5ZpX8nXLeyPq{0zH#tbUY8Z*%JPG;V%!%_kf98%i~FR<2$@k-1WSh1AyFf0wgZ$Kl^tz0WA&xQM^heRm%86OcDptAX;aH-@LJ9P03UIMe`yy(2-(4C0$}cyA*3g7lAJ4Pxh(%_?(zq)mu8qx$kCg^AZI# z?sVn+an^WsB0C1w8J}v+x5WqY`8T& zwL4fc$>GY$XjZg2mTQuoVF)^+$vVV@!n!-0$cv#gxq{bt1;QPy%-a!L7l!j}@E zgT6WIc`FI*8jp;Y?{j2~hBl|(J7GKbMlx5xa5%U#Mwxmntlfsh^kn$IKd>(vocU#(=|JGyyufKtWYDAeLA;nNDb+0#3m_)46=D7XuvfJ=N-h4lHzjoJ#B{{ALBU05Kg2MccP=Cdz(me=YB%Zpgb!^!YOiRJHO!;pj-xpg zjN`~F<9=%|jtmU;w6hU}QuT#ULO8HptR8fm$`WYlVLMwHhZ$Wb9nsa*Tfpb=yMg6n zZi_k;c9?13*u81M^-Gq((mD^PhS`sD{l}5K@#GWffEUGv^k&v#_}OwSm31`Uo%fzY zWeIZeax;`e=GW!%Wl@36ObZ1qiyU{R?;PIuqvX(V+uJb&gNvhfW?V?YmEptgiU@<} zM?`BCcL*1lR5%)@G)#r!L83J(W^t+dnEmNgYvQ|@S4U6DuO@A@rQk|at1r?<<~cU^ z&AbX+4mWSB3TxjP)ZjN}f694EZ<))-*Gy_nNU%3_AY__#&9Vdr?=&5cdB!q0V_{E% z;Hs#6fo&9@8gZV2Oo+%a5o*kcBhL8f)Z?Pndj&~WSHPQc4#Z2ZQj&M_Es@z z(>(s+GjZs9vs+w3nx#zSuVd;Oi_FO26-ma&_?uc^y^0eWMJdEoOm$$;Fzr9B{%Ph| z(*oR*{(5}(GEfIM>G`lKmC|MX)Mt6gKlai*p~jYi6mAI$5a~Ymq1l)hZjmFt-f%-o zCpeJ)^aCjY#uxHUo#F%mZSABY(c#7lic{y)x!DwGVg?CZZw*fgCiNAL?%qlbGxT*s zz;Nb;rv0eN{7PABo^o0|H1aX??hv3b;HE&37FqdGc-SIVTIQ*UiOEVOvnw2Xm}*>) z{LwPnDC{KZ7W6>y=pvLsMaD23OmKJ;mW8S=WwGeTYR}i#q)Z=&Fs;Qw-yG^I~Q2%JnZtBkqL=mZl(RSkN!gxQ%Yak+Sk~FXRCJ>R`DW%+ z*d^vhcR++9h`5HOMtv#!$Rl~VsIlKfOIN7JL>L>9TRMtDFDh-}>ygYgq6;^8L%2;d z9Ogc>GwVx?8MGQduQ}I1xN7Gyy;m*sqYRA<^Iu`5rY~A`@Y+&tHcLUioLesSQ?Gj9 zoD5l%^v)yX(6shpR|{tSWOOL0xt<7#L?isBPSJ1q6ODY5y7_8rdYVilWylVhS;OXH zEMyt`*wO-tlhzijZ!fBM3!94R5UDkYl5$-4c`c zc|Ns`IsmbGLHPS7p9btiJR>W^&<2av8*IYq(t{@%^D6FGUCLHL&YoPM5h11T`1=iU zXb(%!5zI~xhv_x5Dpe4R4k}x&s4}8)a(iF5_NLYlF5|m)jQAfFC`(C-dKDiQyfO-9 zS}w9BS~KI{#z)B;*BTpPL8&2U4f8&&Av?uz`f5A~Sz{`DUR#Fr4>kvuR@s)jLGS)} z6!lX#BOktQo~_lGn?bh;vbN~lfpj)vVGYk9aJSq1vSbPRgZ+j67+}kP?ptsP6upZh z%Q;mSO$7Dd3eadsq;fi8<2srQ^cI3nm%7u?UN<6b3@b0{|Ksy>eA{h+1hp0Jsye{< zW(JKQC}?dWLUPc_a*ic1>S&Fp2_(s*)PwE0^u0)!yX*~^$T<~Z_G!%`H9utP4QoJQ z*g$a_Kc3ryk-E!GhJjRKuQa`GF!=O(BpEkuYc5+KRttF_dqMz@nD^_BxCmo$nIHYc zMFl^?)(|Q7*@Or7f@wx`!9@>83EOsK-;y~C+2zMYC_0<}aV5)=#4hH|z>4QQ_6?)mqla~SZmKj5waCX)F2y`>yA7& z^Gj`k*7-KmKn0r95)_1^z(0w8|M6KX2$o#hd#@VGSg#t7sIs<+Ya)`eCkt`P z2Bv8YCU<0c=|FgN_x5hHbEa2g;PwOIYcO$E{#W)so?QrH58ZbAFJDsJzD58aDoU5t z*|~}0amU5kj5N**C7PkHmJ0Rs*P%OP^Z0z!ZcH}JIUaU`UC1^ox_aBw+ZvTlQsF1) z>ByVP5%z2`5KX+XWQE8;b3=z`Wq(3+(`YHk{N!Zs;arz@V_nz@+iJQ^&n?LRaaOi( zwC$*8_qi7hOcBP9@!L`Od3W<(;%yodYzE81nDP>s1Uq_MjAfrP z;pj%e@}^6eQ~q)&dr1-|KPHNotManCf-6sM`D=N)yP;P*TD&zL={l2Yh}R^b1wSv| zr#lE%^n;lgKHX}qJG3aQJ=kd^NVta13AhGKdKb4#5do9uVQa_3@|{p6{iU8tGo`bWP{{e=4-)jFJR}dj{w|z~8?@b@ZG%F0F#CR=(aBAp_*(Ry6txS&3je^YweDBw z$$iyXPZ?~%<;Z_qoH#SwAosmlS{=yN`@y`HVDi+* z#HWE`s9Zt){uLq~q{1}fr%-@j|Az_sprkp?;-$@AW{jG2N(vm%Z~NFDP?4_)r96~z$!2%G z>I}P-cOHKB4$ZTN|G@&tP-3F-qa?!)CRb2@fXX0~elN|dICk%OqHM^YZ*rw3;rFk< zhggxFD*9uF^((I^5Yh*LL|_)4??C-`K10@5Kn%!v)1342$}a!*8Dn9B#!8fRYX6dASI+w>k{OJF|4n$BvhqBaI)&N3wMQkD zSC~xZSd~w?xODN9AI7*xk}JC&n4)&8=x4%3K0ZF&CMqe&-QPXyz9f=} zl?J;M5{bR%ViIUHeuObrs!TNbRgO_o>w1= zw0~ycg|R6oDcQ7<8h911?M@sgSVDz&H%V)$?^A@0@I^)IM5+zW`bY_GUoz!NjT13o zfQV?0x~$JXrs*sHbouVhz5&DQW5-LS%kM{WOE(|5+CgSQq^e= zAUZGF_EUF@VxXqNV{l8i26*?qkt~Dyy8YFmu1nKD^ z?f#IK^~PkSWZGDXd3z6EY(!^Q*KQN>Ts2^Gj01SwHjvTNE%Au@q4$H$?r?6eVbR>f z4UIS{lRT>Le_kn-KkBy#J8oQkcbLGV(;l2%TUgRIV*T7~Tos4xUu!pFAF?=-V{$4k z&S4^(QGTo!|!)ElnR4{r@`UDSS| zENc4L6A~fIlwbM#QyHMijJ-;-rXFF|_@+W{OO~VdC7}GJ)8;ht9<+3=p!)Vao>C8B z8^Al6sgzy=Zi!0^+0#)#Az4rNB^KmnDFP+4DyNlso)9)PMI4Z_hV^NGXPe6B=}<4>*Clv(=zkX#bUH- z*%c)!GyYMR%5BgnQQNKAMnHincZUXy-ow#s2jr11oBDGXvBikTZbWsHEMqL-KDa-;mGWZP<;N9oYTIS&^iKf0%Smd(<^o~=u#Y_w-xWoucu z3K=-R`|*~QQ2RONxAS3awr;RWXGjDAukh=iOcP$0=L-bcUA)!Zp>bFAxTCOKy;0_& zQcEq5`Czs)xpP2oDFzdR>vM!`MJ*uq=>IUxJ_aaZnyExrjX zx6O7^;=A4V*Te4jqAxE_`!3TgQyqIBP7e_axBy<=TN)W%+NWW+jJ`biz^U~Zic1!S z_yU8lcltQh12(KR?I?g>y+DA0}uK}lfNxTn}{cCff+420OY+< z;Keo|75P-pD|?la6#Em>yfq3=nsw}xSf<65eLxU)%vNh5)OKOIKV8i__hto=K?*;9 z@${`xjFg8D<1OktyQU6M=iU*0@u7iIL%-r6Ypuza`hDo)Bgs;Aa2h-*PW({bKbEi`8DNRbSVa7Ftu zeV_KaMA{}25OPfJC1mj#)J^Jm3y;74k|DeLHOZ!!-et5g;3lo{`N_T#VoqH)xmhaDI0%2hA~*l{p@TI*t@Zz4YIb{FI_|}f{)l9`KOkB`Uw3h`mf8nc zI+)!ID?}}62qtv3|4ZPEPQX4_Do8la*wWt3%hO(xieb2X=ju*3=(NtByBP53zyz>VBghJw79j(LG{Nb+f3F&6&G#iue%Rthkdn zvzeJ8Yf)DM6RNCm?AUhfyX;@BmHc6GPV2Ra7_3@x`&Yo?y(*ucC%c+UcUbb!By^d* z_M`J~y1(Q4;WA%eMFbelm($Mob?g>dhL1X(xozctaf|;^=}Ov7qv0FT=u2(p7*Xwx#kSrk-F>fIDVXEskdOapJ#fNGKO$%B&sL8 z6zkASmpb%zdD#;Yn^hdf;hfu-AJC6%h#%TEm}~C#h3B{JdF2mB&{(HZXn)|_nBU=; zm_C=I%BF<+=Z+6#Dy?_%)$c8hgSetrl=hKRR_)$^(r~evlI?X_Ii}l39)J^bKuscd zBYL+rl;+eC5L(ysVRz+50M{%P-H(D~U!0%PZ8&328^`@)?^)>?h4+K?f1}X9qS3-X zY5rT9=c?W$HP1`R%3W->JAja>FV6hZM{c@;6claRz4ie>e*!>h1`n%ABrN-5I}hn~ zN{CPk-FjmxSKf;v4${cM)Au)sw`@MhggCD+obr^7HWgHFJhJ^9`ssJtS(O1Y>$JZI zUp1c{DpYv+t?o{#rhTDtLBtE%SGP+T(t#6lOarn2VIp!`i>6_-XS zjW}CAguJj$6!1o{_wG|Oa|?8kZv=U7HI?Rb65|$ZKOJ)ImM$+|-*+ zA9<$!{G{^8h>Lq9w91ej%MEXrG%3~HtAAu5@n`qL6bqGQWK=}RfWsrr|4allC9s6_ z41;PJZkcQ*mlp7(3XQ#`U#IrbBP}psJiTnNTo;}Oq37YdQ@5XS49_V+G?HIGPU6aF zUV#;NFY}WYRRvNlD6UPbpf*ZA;PMF9mYUW&?!mO}_TD~Gi>PBaZY+5E* zhRSUXHpc@pAzU4P_#Mq6aRA5B3ZA{`eag^CjYdg;%}Wyd^k{owJ>I}`o0?mW#^**P zJkIalN9kLLN@I%CVp2W{kAuC_5<~JJF&_^@`DQagH1$0(1{%rLmi@L5bmreuTt1PI zM*R>H9A)tzB8`{j*2g}QZh>YTi5;aPwa}=Zv1TfvW4iW4)8JvP_$=hFrw^sZddr+b z7xLOFpl_b8?}})JST8>ACgZ==|j)+b4Htvwv%pdb#Deg~v=V_R5ybusG+1<{+1Q zr_F3Gw)@;eDFDG+k8(*K$+v6ciHU4dd@$p_Ip`=$K&YkNN!+(DB)XIlEST+{_6*9?? zuOFv{n4LV|aF!7~aM*1`cHOzgqJ0mHt#NZ29!|w-POc&rr5~XNHB^333N>y7m8meq zSB&lC%=qC7SmpxLU4Ej8LY8qw?T|?6hMNZp+Y&OIq|YJA#Whmd@}bm{ln;;3L72~_ zfmi;-=i$}_2yrY7-fhcw2-J{-!jKp#LTt0*g@kq85z9 zT$3F5z1M%)1-)G*V#J=Ncb!!GYDhtuj#jhebBN2YjP?j0wAeVm9-aT&jz+C7pOt&9 zpDq6o)=B~QC(;>}Enh9JdCZsla88S@+tZ=R;y!-1x=6U^e`V|J^6!~QoprNzjxWzm z9;em({Cat;(Xok0C)Fa-sU9g8ox6XKyNompMp5+#eSu_CTiROF?N@iLK6taFd&yhe zpC*30@?KO=E~M@GEc3>37Ls0fP?Dy*vAQomXk2Ubdo7PR=DN;?j~KrzvzwNh=ZDMi z@eylBoxx>tuGi%SB>ZZQgXQ`Ns0->VKn{;XQ#=?7+~o}Pi+eiCOhXrVY`4X8ch4y{ zHeck;O(7Ni2C=kMTC9A{RS)9zfBP74i(+KzFC_}?+z00~#3i|8IhQn?|6Yj#C9*|+ zP`$WgBTl9FZ&inM2MFd+&M8!hRq>=#t>=E^hn*kSz;-Slx(lwWle_7G=B6uSKX?_3pQJ+W zoeTv9r~A(`eSoU$H5_%NZi-L>SC`S7{#J%09mP4u%^3q4jD>Z(WKc*h{VfHIBSYU~T?iDfOmqos>yE$bc^)sBvF-s`#e@tV zy(tb3j#)2De=x|sOC*seqk!>_AsI7^*Ruk3jB=2`^DT_P13(|B9y6sVC=`6urh5Eb z3sfSqU|1_*+Em&MdP+dKR)P&D$Uaz~(8+&UdZxh#v_o_c9Wo?NF(nt9S9+$sm0w-z z%q_GOsn3MR?t*Ds_FT&VS^6wlR82NVIX^R6F5Q9@W)6qzwdLi==w@Dd6^XY~Ti(uM zp(C&_XS}o`l!}*OIQdG~6LafLKgwUvt`SF{lt;U`MIX7ZQ4JEpd^Gwe5D^*Oz`cpS z67T?us%bRqv*Jcyya_<0#QFo>7!jRtH<0p(RWC*(mHm?q5n}8RUUez#!Jr1nAUZd8^0ri)`>&(6yXk{>9 zd&rrj9vqT4q+%v@hQs?!s6$o0B|C&L+J1WQ#(1IaL&^PK(Pki9_+4+3yf#@`!t?U` z5A>fIPz<@ZpjA_}0|YO-^_zfA?lNiLeq6K_E_JbG(wF9SvEsEhRb8IqJghxj>*1H=|KgByok=<3G(~ARezW#oPIq!7Zr8iG3B#C zTw}&DnF1=Dh4y$*N@@p{xj!`TqdvrP;|d60={|(t?!De5?%4+37|w%0H;@7#@k*}+ z9YK>`?1el7=cx{*{+y-<%I+`O8f%1o;X8jY>LmcZKDsgSNK zOCS;pGO~#p_g%#hZ%e{P7EtW-$OR=&Js{<3Tl60q04dpc^2hN-Z55ra_o^lt(=ngRptr~Cms97geR;Pd@qy} z_#4BE7(I_ZyXI?N2@2m~skP^I@)aq9HJj95y3(JLA{tn&ZcxZQD3FaD5sy}fUWr5& zwJd*;!A(0;ujy(Z9nOdHu}-qI$}NKQHLUt+$U9@bQy&GArB4DTPqKG*UHRVxyPmVZ zcg_Rr;%|stN=yp{eC&3KkANAFL+Wur`oK)Kyb@};I=01z3y_nwGOHQB@qyPAMQukR zfr(Dua71t$^5|Cl^a}J(L8>EuYUedcBueC7VTrLyS7xuw92x>%f+A;+j~KTq>A`#y z+t?!6%6{?fYs~?0W2@xH(m@OoZ{04D7y4yZ+MSL?76KgO4qZIR2m(z#eB8!Y8-`d- z7FIQe6lW?Aiv)3!s(r;l*;O!2D~GbKj+H(8^@=Om590rFlhF5%Dh^UW@yk<Z1m=$6FxH^_>~rtii*G8Lx@fCwYj}gSkKPv{ej@+If+m8XG@O653v& z@siPA_HHf{*;ojbJ__5R*Bg)F&y?}W!TK7B`{{bQ66#36ok?&;Q^z{?Ijl&V4)ASo zEq?(|`d~aQ<|WxwcDQ$G73j=zCUJyKBCPUxHONO(kLLl3dE;W2|=XS z33D}y*SIVU+^dp%sl1E->NCxSxQ+>RsqA91`|rfEUn*kmUB_8!U(UFwg9tiNWO3Hi zAAFF?0G`;Fx2y%(;#YCkN9nsz4g1!C*sJ)?(CjM8()!;-SryX_&Hv&8{QooJ`u|eMDg7uq zYV0XeTOl*|cD(gT%Wx)vVD%*?M-9yh5BXXy!lM!8VIHcA`uec+%^OXP41C9&TOiJR zr~#$AinA%fkqFKZ5FsQ(BYHFBWEEvOwF3eB?9wGZLNQGP#qx``q|=LP39R7HwE-l| z8Cp}o1y=LKtM^L7T3^0mHsEeofvImcFjH|cIpn=v;A&XZ>C+J!U z#cE?~s)64H)9F)ZFN*kc!~5}w@U#DP8~4G?yE!j4z`a4zW>?@d_fAy-_}dg~MOo1_ zGD@CPza3Pl-c=`FB?#p3CG)R$fT^t!6_mlz%!lsg1!8}10Ali1_fAbTA~A~w=Q!;T*T^deiG3w z{)Q{bzCk$vyv6`%`}zv*Qh+VN9dq-TBPM_W?`Cw4`vQ7ybaX^Wud-~;S@%_M$-QG_ zb3n9u01|=GATk!rRrrEJG3y}rhpfvy4sqkyfjKN}Vl}WGlE9G{e(KsD=>JJG;IJzh z+O+4Xwb)j}4eP-yHLf8ZQh2A{F)UCnNUyegaebjulXFhJAf49|mu?Y(8$2DL(6s41V=awz_z?tu+ zI0(e@T{oxOmLpl7jysR&nFE}tTuP+?Svg3rp-Bc)kp_;HlXn>OKW#DqN0obIc-8YmE>9}_=pahXB7UZDxr004IZBQ*|=E-(Q>Ymzm(5%&r# z8V51H`BgH3-05Ju0;^7cC)wtib;TVt5%MAQ^;2o!FTN@l^$1UN+f>Zq@|6(~5-P=h z*35rd26UU_AQhM`^d~e9B&NpznGujjXQpO>{O~q5=VRDXr*RnS;NGTmEKkNT$c1ue zvZK!dbwIO==Y*c$GOl)kntb`}!sE7t*V1F*igTCT%~WTD%4O@aC_nY%j<5G$#a?oD z%7FP+49TE`Q|4(E>brn^>?)SSWX9|7G+E3w`PX%O%ddhwt{e!?e|ZH~$WYQdb_-1V z>;WzD@#V}0?gdi{h=-@;w*WYLFhh|w531#Y+*;Va(y%MQ`v4qvFrNJ_bv3+oCx+9y zX1mP=uootPH*-N_3F16yyzj7pNuI&2c3L)W!BxHRQ4E7E(s6#pUsdA>jaZ#1FVu7D zm)8Wq@dQ8(tXBpyJsSh<1@)VpPXLPcfVx0MZ2dt!q;<6Okem4&1g#u8oG)Z^Y^JI_ zG1DN&ycv!yjuSvkzuLZCe{qtVaVKnO>*_QJ#X233Q(!e7*uBV^AK=?qJEdSHVAxJm}EB{=rZ#jxg zJW%;L`_g7+zfi^v4@8V7IL?9`>O83SG}fW|6xh9Xs}a687s&Y5eit0{5N|g-H&O59 zHSy+K3dZixaQ+e?8F^D6#PeisZg!b+9udN(v3bvk+>4X|;S`sBiw5Z$g>j+h`H6mu z!1XcXP@c0QvqWr-p*DD>oS_EWU#6E0*~TYpNTB9&L4`q$B1yk%Fl7YYehVb^F&0g) zY>a#A3+qlg!LbS4d?-63{qL_MdlCeibwM%J0I!aD4U}XAK2-jg)|QMP9CMLQ zBM|lt3N-7A9YR|Kxb3&`SKxvOTPC%ncnqw z01m@gw*g|0Qm%rECPvk|lw=L_$qM^>)A(*eKRvVIU;Wg3aEYw4JT7puv(g)WKaAgD z&t~=;WGGPnP~}?gUO>db@}}4Wm&E>@d+IJUmN&blJ@ap#&XduEV=6?JOJ>Zjh7LwY zoB$xW*3uv^V*c|aIP5{ku}28WMA$MYwpp{F^~!RjV4ZPMyoOBe=^cBy$*on)x2BY> zleNOb>-=ugCSy?%IeEO9YaxI+mT{jWm@|V^Fib4|(FoVYdevINy;GrV1%P~=3Zi_s zN#b9@nKI_pjKWO1jg^<~9QX)Zjs85@Uo(FkaC7_gsrKC}P!~S4yb}eyivydE&=4$% zg|4~8Y}l;E6y?@%1Poe(roQ6Z)OBx@hw93`y*kl><|E>Ivn;2S)C`_5>VxW|mAj`B zAG_%K$dB%tdR zwTtT_vZ?O*^hjw^mW?v-;kM{OqIpP(3&U-R!kU39F3p5&IkW7sO>hbI`k%U3arg`eHIss{E@)5xpM9T4h8 z1gY&24UO~LF^)6FllX9e*#OVHwZO8BK8%ieJjUz&E5z7e_Gl7h{0dz#3GFT8Lau2% zBdEWjoL|vwz|W>Gagq!g2dEFe-#rsw&_)@{Oss`*~Y`(>p7CR0OEm%KawRQHDSTQdD z6o_b!^)sa0CT}mv>1y#0h8TaKQq|7j%vD;cx?)>`CFnn2>|I+wCh8xBUzud7OZ5Cz(nNk*&X- z@g?;}1Xv?LZHQQ`J499{eAIPsKLk=TC%9O-!!Uo)R=eiI)#K8KHkHl!<{>QX*tC7$ zyyxaXS#MQ&1AcK@a>R721lu>yZU6ICY9`POys|dpP>pJL$BB{ifOLXyE4@TJ zkJ$z$J(S^dJM~JiOn;6QnSYpC-Mkzg@ZXqw%cwY_u3az?NRZ$bAV}jbA-H?v&`59y zgy8Np5-eD72o3=ncXtQ`CqQtA0KqM|Ha*4r-EU^@9r-c8W@Rn9AXTSM?K)@6v!A^? zeDBz|Vj(zWO>AQeP~F!!qre_W{uvtEp&b53hg8qI7mE%ob7#IrL_m7Q95=7|qm(|7 z1OIlp&LxT!12lPB#OQ>I2qIdkRSse)<90Iw48~uS$+RRHJP6yqsY*9RY$y$}dG#ai z@^_Icbuc}w8QYxf8)3iPqncAF5SYV~;(B_<%IG_t60MdI|IsRJ&blE9=*(;%50x-v zC~0tO!oMpJD$_PD1DV$2uP9U-q^{d(mOgVmPq>fnFHA#ng9e+e=bqJJUu`!?0}C)l zD5BgHZa)svXis@d{i!9P3sPZo!;HG+s2&vB$#JB}{87Fc^6JFU?oW0ORkMp3mLdbJ z(c{}-<5+>)ZRGpUah~j+SqfvUn@W~_OOAJL_Y3IrHL8a%t<6cMgAeF1C^g1KZ80fW z+0^Zg5UZ07nw{pMaXrJystIw5VUXK_@-q|JCw{UP@so2}i&1#+)YnadEl?TYfNaf& z=~bKYh|SUdMhdh?=5MHF>xbb(*i>t%(1D89bZhF3o=U%Fc5@^e8XK1Q1ay%5PL}80 zZuzO*9JK0E=@;TE_k|IXdfZq_0lhws32+6FzOnU$j=xkSwHULtwFLBUPFSFHsSb& zw?Vy1!x_S?(xxBKgEUONyWw0V>H_;pfOcYx3^qhzj#n~hZ-<~}NYta`4w~m*)x3{< zCWS^5qEkz#2L3<+>-1uaBca4;pQjih2qNKkLWcb7@q`#K(o}!pb<(&%lMA``hKP{@ zAr(FZjVNRcZB7UFVx@J#cM!kug=t3tYfc3V|T9$5NApNGO0jn7THQ z($SvzrU4{5P;_VjuZ7NNPK@C|SJx z;&HFExUTDq4z$F8nyU%vi7-fUA(A)eK$07ZsgC>j=309B6*D=9FU$+5cIhHP4ii;E z2?Zx@pfj&hgm0Aq0fez~_vh=E8!iz)Hf4`P1b6t6b=+K~La*JPI+^)b>69jwh(aQO z{p0=crSD~T?d@i)0d%fO%nf=BX}RKc3QY0vtc++rhHsSzp+s11?Gr6J6!Ls5N@n zWNy+!>QmO@zqbMql@8NXJ?#V;hX05LBwNpa1wC7Z&CC29=P+u$5fuiSG8}I8lFjsn z7RbFrJ^6@H8QX_ih7Hg-ypcHWWg>jiSuA=QVr~CP8MB$mC~k@RX&4WVWa}*-^+*P9 zBnxN9Z3v9*_~{?UTAUDQ+@ev3e3#aG;>C$E;oZB}{B@=<#F#>NiMI#M3?6MQ{_2pA z^5p-(Oyhft$o%(a?{D2>8PQDJ9FGpTeerQXOg{&l zNVDd!NJ~VqplAu>`DF3u?Xc8;GJwF+{jUrnwNRiN1F&PB{!N@zcv%8^)Ia8bG9Ldc z8jIklQ)W0o+)73Sp0n91>1rI|4@4i=2qZ>D3OStX?IC;Ohch=Lp;u z*zIw}L3?+$%>0KunfUG2V)-e%~9Xwmzt8Q=%2{P=WIj|l=Xn+ofEAd@pjXVFTf zyf;Z{c!W0p%t7(INz7|Rhkt&QP%KjMdOr&E zoqIS-nG4B zW7f3q>G&xsqv)0svJ_IQ&H%}~r_;#b(m`3TCS`ri1OCb`xqJH0uSd5xRR*I8{aVai zqLvOs4TKEdG=g2X0FM7(8S_X`tz;Wx66N zaMJ&1Fgi#NJmr69<<%=fw5~Bt>e5U^EqS_pIfNo?T;!&(?)3-!Jr}AIqfDsF=#Xb3 z08QX-qcS6lQYsDza(}JAbiGvN`y>!KGE|f=>BTOsy}ugL#jKxi$zi{_7dCk3q1%5} z{_Cp{rDw+I4pL}sG=vjs5hKk@aukizJsNdih&AgyLr-s`P#I^Nan4%YOL(c z4*|xFb?gs2@?|ah1_y43?6X!C?4xIA_7lD0_7Akr%l)sTm#>>ztIpuosF>UH7vnj# zcSb&ogSJ;}AmcJ?a)aw*@k7oOle*FCrk(=KQJdMuZ>k|gY(^h>y8OEtx||A#h}f=o z)W@uI#6C=k`wmwBs^5oxQMtdtvkmxXp_A_*ogut|=?M>P^gXUmuzk05p_H7zw=jX=2aY)a6udE zR9-^+Y|Ea!No+uJ%Qha-{b`Dfkn zdEV^sjm@-~u3psd8+Ej`+oX&m7avoXPV> zyQ_e2CS?x83Vtb5lvnQIPeDH4GZ&-!9k&Bu79XR#6&-#X$+wHeq&wu62ZWLl~(@oK&s!uZ!F(=4r zW2=nYcj>3)^PFeo+q-4$h&yo0Byi-lSu{yG-i>u^9a^0|P0g^sSQ%I{V?5J8cFAjS zntLr)-NZ@TWBr)3w%BXQaV2F_F(Q5;WjhwY&?z4vajoc&g^J60p&1bSZj+X zmY4PPQv(b7@BKFfReaW20*>(@ zzHu;~k`s@sI-TZ^@zEV8z4&DspLuk^r|?C7U&|?R@9Dx0#Aort0Fn-C%t!bFgQ#Z< z2}FhO(7X$0*TS3it#!i^^Q=#ftK#y!89QXK^_-<*MWVY@ffIY#y0g|E}sCj8OI^-CE0+Ip%%xz3ah-`y20+}ZwGc#Z6GdFZjz z*V49mjBgg+o?c9>abEo|8;@pB>`4`HyM})y|Jxd=^vC;lz=lapdTYCdUca50aniBV}f9~WS`v~8x+16v*j0l4@=(S!{R!oylTecnT z*h=&Co~Xn9OkulgldI^POl{E2ZGAW2MROzl9EVE|pVQ^z&NpfMRY$7ivelV;5A~x` zAwZ*+u1c}w0KB9BG`TJpdfGYNtNG7>t{}|Os@Ou!skl*MH;d8M*+dcO(rqc z_Oc`2%GqFMD4{LSusbN>_rdb97 zHA7W~j+pX~RtL)uiSRLh?wzr)g7UtYfj&HlwEgfw6QCEf!vQdo!XtUcl_N;Q@ZKzK zb8+tWBFuib#$FMz{Xr^3`CkGnu8c)G%lZ41TxiSEp zhnWBlCZ=j`^ZuK0UfbFFu`J>H@sV%rb=1=@S@TuHSi`AjwpRk&yXms`;{aH^bFNoy8VF>?10G$2UtpE1WNcXC_$7-e z4QpjMojBpda5a_{AAteQql1KF7s1`hxjPwYlz{T z*bYXs+kPr!i(JgadNs;7rB@2wxN5l{D?O)Nh-+&5!z5#6+ zk=<80Disl_8SZ=N4jirBZ6l2ChxJb0c26qM#33Q0l`u>p#H|!x)czOiG>#X!HqR2P z;w^C?izFb0$jK_`j#I|%sFK*cv{f{ZW zt!M-LFRp>Mt$Sj#Eo&=R*V=w|3(I?rzB;GFoF67K92#SJcRM5C-a}W7AJ4!DQK{0c zF~<3%rW3dOV#;fcD=(ax`s-s)4HU=AfnE&eAP#CN1~JzXB4Q$4lIuMEyhFGv-2c%l zNX5-vrwpAV6~*d@f8&310W>bpZ0DNfRDX;3QY5-7**ii2A<&WW~SKF)G-i*%S};+_K=~aj;6}Y4ND5 zBp-tqw8R8-;Pzmz^Oxr3mtYmTGSB4QG?oywUVso<-~b>M01XsyFG?D;bb#&vPrMgV zMT*$g?zTf9Nz^Ah-8P46)ciwk#rrEx!0M;9^YSh10e!5dwTQS)9>d8$O5iN}d^g0X!+12f_O^ z{7`Ynfa%LI_Y-~Fot{Y7V-b=UzK4J66lKW0%NzRwXFpXTsS>(314`oBZr+F2nGR|qC?Lu$-5_ydS7&&3v%^eCMswT(7CyAIu zYZLHQw@p!_+Z1o^M$_r4+268!uR;jBS%q5Fx5Ix&j2mwJY%Ma2iL+@u`oOod<5`h~ z84zs?=xh5JaILf2R@3y3k#t;G*B zPwfaUZ8c}WD5X44p~iA+X$D&Jibw|;FAFx0<`DDR5fzQH&kn(HeNW%H{e{uMHx|5a zITGLk&1thJt(v%Dw_#UK+OaClHT_G$nRI*i@Mr<(b5?!hH>gSq0OJ)3JWK6>jv!De z@i7~?*>)O>JYKOPO6k|QeW%`r+2znzIpP~i~YE7wBh%N5M*6R$0zwt5rs zjP{MKAwkU>7DILP5|(8FmUMuL2|ViyY8FgDZAXIC5kav4-&qthiv+#kpnsgV61~{|$keN0= zZDG7(9TcE5PQ%gk(6Rp}max@Ntg?={#e?E}yYnoMTFe!ME2s~nL^(xp%06fBOm@ie z$K{+sna5Fibv0K(Tx3F3j7kphM0e$Gu>XZb0`v)9PEu{XFwav`J>E9uW67rqeUDwB zJptd?R`rKO20rg)fwo0>$H&tRNTuIE7POMr)y_d|=S_~$TQNyePT_SF;eLv>5~yc} zkadEn-vGr`Fe@~#(Qzd=IO~rtmWvrc3#AnJ?PFITpXE9Kp>IxEeKrk96kQ&--M2QK zO!g6T>VM1;3Vgf(atPHR;25`KvVCYKAkptf!|RI$Gw%T4|mpE-Jv!;u6+}wW}W$TiS0xtBFJ?2Mr+;gnK zx4UwLW+HWzxz1L8@{Nne!LJc;OWCoNz@!sOi1!$8h?WHDdyzlqMx^ID%7qxkiDen$ zt24~wGow_ooVN+|kFHqP-|H6}qPoJ;%y)nv84q#ag!{c?8pa2>$6U+d*T>yyJCADS z(}w0)2%~u6N+;P2!j?^&N~^>?i;;4t3#)*yEib*W_$4m}+FS@Xdvegy<8?@iJLxKm&h<_Kq@iol&9q@3y&gV?P>YB)c=%}Oq zJ5zBWE^kk;cJjVH;^dlj5oX%=@e8_YGy-0g8t8h?;&%Vm*M%U0tgOoT!OwfKw`FbG ziGbJS{SHL)F9V&JAh-I@3Woa=qYT0dD*{)0NPfBf27`xe-KSfTbN$BphZ!B#v9%T3 zW!FcjXU^Z3*9y%lhI(g)X%D9wOCdF8p>4XIZE9y5D~#1{$_l6s$PTi7(utNQi=W?3 zT{bYV-syA0ZuYeJHB8FhbBafp9Nvu~IZ%y$5e?YN%FF z(#`ccx_%wu+}iG{8{}K6wH-$=PS%1^34S|QQi-}9HT3@_WgVXd>M}?jXhfj>Uz0<$ z4ET*boG&-@8Nr_2)O7)C~CK5-8UP->Elp0#tZ8Z1PWu%gwbh z8HYG-Uyr-?S?&*-*6gyd_^JswTL&>;_Zm7;(tNHRcZVM)jc}YJ2Z?06m=#o#tBrfQ z`wgHky{Gbfr$<1xQL|H+v1rP;UDyK6tJ}Psfu1BAGS1TyvBDBg(T4?AqsMXDS|4`$ zFO6`720dI6s%||5DUDwCT|-w(s9`gihb8mdD{IC$AMhKhC{~^@!=S zxL(=0&V^sWuRF)%Dcf#8m2DkIH27R!!SUiFlH(eIGKBMvAN#I@pvF2^UQzpTQO!v8 z-V@TwEL?vyn>#ZtP{TUk5}m!{@Z{VK;>CbjE_u^lBG1bC2e#`<2>KJp@daM-D#{sI zg*NXht#$`@nFoL;q*4DiQ;15Eiu41;3TwFJ8?Ym8qc|TdZjbSL!!v%-!mypcVUCzy4H)-tf@B}tiq8OSDRUE5#3;@38MxpOhcgygR+ zFT+49Ws}MAAa2q=FM^{HKh$dZ5|3PjbDEO*;-wT)6y%`?hx@k%$s~BFRRZ-ERwRL!0}zE za;guZgfzz8H=n66w7BE;XTuBzKRwW|@QIt)Et4Qru<2JrhBjJaWBCn${vmFk! z!yEBva0wf8j}n_!-}V&dLOfbPZFWV9R1X!Qrr0DiK=1g!#s`k)Jew-?sG%6RCF-d6+Hr|m@SeLa6 zS@rgBe`dlW{>MdFyPH4pO=r$H!$(Dlg0`Pq8Iv4lc_k2U9KM^`g-QU)y*ZpJ<_OX1 z;Tf6_d9y3H~$+b5kU2DV952%M_SEqmyC4%MJdG(1l-> zjHwB4IX7Mr#OnqGYJ>A9z)LbRob18#K5{2mRO~YtzSUnbO4J|aa@wrPHe}ro(y4HX zZ8f4qJ!Tbjc{n{YWkAWo55F|FjgbirfL z!}t)AR5+B?V@%$)i!ml#uvdf29M4vG6bjb_ya*b;Mo`|rxl-*<;$OSsSaO+@i!s9d zl&Eaz(236UcPU|uB*v*^vOZFp1fZnq6srV|$O*MW+0sgAsazg{Mdv}5Cfgf45Gl(a zGCe691-T9ib#d{L8dlA!s~YI>PbfS@#VDCIYEvvq@_YMeG2~1ULO6*;HQgc97)lR= z^pi4uagO~i#eza5Q;vKe4$V%E!RL%#^fz=pBy2YX z8cN?Tb)siS>`u?{ui539vhpT??*jnIWn$6&u>(HGt~ll8kz;6ZW8$PrXAaWwLwjC@ z@BWCh31b@fUCBWP%_x!}aQSgDt@YT6cz<4!ToJ!FqE~1|u%|9y{+`piVABlzDDGHV zXaW+&&g(Y;uQ!Js-&>bJE$x2#6T{jT_Ppi;rVMBWrFngVdq|Gl<9#6cmaoZaP{BD$ zRm+|_=*%!5P-L**r$$f%j;x6K8`=spR8k^H^PHPe9IcR5k>%p}D+ZXa;4NCgV-gSY$dT|;;P3nl4q+q3+i-~exAca2_fBbR#bPp zt3+DJy&D9547eR!@gLEy<@B+t%zqeSeDZo<9b&PJ976^$9=th;9QxCkLnr@=!P`$A_eX=TD}T2Xu8pnH2jur>)YAOlj*v2`B$8?$1}v_(8(o*-zP| zaav73kGeLMVtJhdD4BlJT_|iBwQMoP*aXzsCW2@;EWQs{Eqg8R!%$kY(Kmn#xh|us z2`H`BkragyF?aoDi8}9(oeN5y#TNMYg=wIzf;yYpbik&d7x;#|$-7!httTV0?M8ly zb9J&V+^FC8js;ZvuQ$#3dz{NO0@ay|?jPsVekG)nK<1XFHUuTley(=Jm|%nw_n|h~>Lq8EPfngu7@9H;nxT3$u{yQ!v3{6rW^%aeu+@ITd{?H_87-n{K zZmGVBina2{LzG13D9>9L`}!+ZTJxb}TlKW6MmeqLSez!6U%e{qH?A88_qObMZH*4uwIjV)OIZR2%4$z8sAQJ13W^{C_^w=#F zzr{bsUZ=2fv`U%$K2A_E;2(-Ry<@m=I)0ZQ}wZP!LIDqT)cP_m7k1+--YaxK0#BeSF-wg&@-J z&eW&E{#L}UCR84^D*ASN-LB73eH^rvrdv0a+UGg$xHR7T-5#98YNYzO{I958WY6N( z_NR%Se5NM@68<0;5=P0Z{LN560D=;L-hBD}Jf1Et8l{IAvOA^Lg`lJ2xL3cTm}m4p z|BD6Gg74oakPZ))(2m}wWCf)8KCbMz9QJZs2LwP{YL25z@Jh~YvKU?E#^YZckqvf+ z_-zZp_C>wcf?eK+wZX<|_4RLJ3g1E}?7Rc^?jbdXvZS-n)b^$eQBq;^azSx*FxCmb zVdwppu($hm*@j1pg+vMx{!T<9pJ=(tW|MJ18J-XP%XOm465r7CXiBc}=C;k1!q|8C z)PcJ+5+EX@M^i`OeFqT$Zrdvmk|hC}0a#K*^z;`&$vc*msy7gDG=+$c>h3-Lix{$0 zGTvH8TqfA>$E%Pgi}e9ai`5P9?RsWT)%dl!M-Fq#7+$IU{xZiTIUIh)Bk2Pu(AR{R zVyjSxzknIm|B8&(v$0Fl<9NYZOuVRHP|l9muf4?X0h<5I%lnJ(?a!3An-!$nt}=t2 zsfbV!{wqPfyHSWGG&`R*@HHJU*I-ri6a{J$V5-A?V>`cHQ3I<(r{zb)6Xw>uMQH%E z&P*EETcOC5yvp1r_8JZ72lN?Q-3{aY~S!}^iDL<>O%)f7e^)FfY;~ zdsz&kc)Ub;SY(SKH>Lm>KO7HO|J)l)9*HR6AGm-dWvKs4k_*sSyEoRdFzQqtHpBQ< zd5j&YV(NtHPCaNH4m$LEf$H1F^xVsq?D1n_pa!Ox^hWg_r(#ygA^R;#;(X02+Abl4Ac170gMntUZE zVaz7uEx*z%qVpahJ`gYwJJqVN!S*BLy>?jo)Ih>Sojsgfab-Tx+ve9cQ+bkmrd4j$ zKqW}Cnx&JpR8TOyqEGs}-nKxr>YE||k-p!!QQ=p?D+ao7$DHKK!^zGzrR3VhhS8#& zG!J{%qOT)uma#Y3l<$s?Yc2Y;>xVwRMy76lywJF}S!{^qI4ZLq zNOiL-G#dCjS(A3vg&6y>bRdzHh&+Zm?$SlA7kfKQD2*PouE8_Yh)3yCVY>=NZ^54(P~MUH$Q%$ z`u>6^(|Vspzo^)FvYu<*+JTV{_6bMdH1rsU(l`jBHXXmy$o!YH)C87 z*?hLcKM;S{`|F-CC)GP=Bk|*91TRyHm(5(`>)p1&c5;6Gqt@63&AP%Fe?Bp0U3HOU z7Cm!OA1z;D58Z1{EwBg?i|)}rfk~vAjNiskvD(!!(OTg1*=ofUV$ai!S@>n!my=BE zxs!;c$LyPXnfr}Nv9xpAOZ3Nz-vKKa4Mx!a6Db{>Xh^YuR;K1{%&=^MKpCoO+We9UNC!jEEaR zLbcAni~<}F;hc6_3#DY00n&M}vNP-ZQ zOqD<7Ks3g539ZjjSdcF05Ih-=mp2e&@iW=C9nKM-Jj1j0u;i&*L#H1&a@i8Y3ZNZz z0FQ%Q;K_3twcAaiUKt=P$;ON50y&9>-9?&YF&ao;6mbgt<(1Or3!PRf7PLH??;Qio zfUG-Jyv&0{PX7>WFD7?YCXw`a#IYhzABY*Q3V^dbHzxftEoM0m zjp2|3T%x|>&3SwL!2%Q}ASbsecxWh1%?3(dc}E@o&9{ZFA)PWC2NZe@x%944(_QI? z!d`fiXX;OImPdKvqsK{T0ctnW=DOMyuzN_r5CZhz9}6gXs^Hx4zP7~GgZnz$Ba+fk}*gqpo5E?7Av&@`6IfI8ERoqXZ}!{_9o-Fp{tE!*xLJ8Y``nr+Y

O+?ToHHJjJZ*4tiMr%IuN{-4T2?we8#CHyTPa)j79$^z zo1I&Tl%}Ka8yQq!kD}LupTj64n;o6+#D?FKuqQ-twgU#6Thv$rnJ$hLkn(>8nsjmO zPwr?Hn=bW9=VR-%<1~1zYXd{D+OsM`CR15CDa_|Gp*ERi=v#xWMNr`Yyw1CB@BX8a zTi5A++1XYYRbh<9?yt17O%jvAJW`(C%~P;&$5rbKER>#4<1rMqPG=u)_cvn^$u?oA z#v=n%DdfkkN*F}!EW%9=$)LM6^u^eV@>x_8a2baYY_VlWF;ncIiOQb~E=@_GPC`npZu-gjgwxk#%EiHmOj|KE61hTf1g(-n`@S* zDzm63U91rPX~lkb7JV4#e4VCt&f~5eExk7ti-J3Yoms+LqY8J7TFg=vGJ^ixHGX-O&bjS%VEK1(tlB+9a$B?BMZhWt$X_|CPnJ(wf$i*kvlY z@Na~!G^MZlHy{V~ZjP`yk6v+54sMqai4Nr`;%~(EyBmzy92oU& zk-XoYttp4BnXdlm;`+5>I*!x-MnmscM&z)-X)pTJfZ$zL?fpu%HfvfwO=H;=k*oD= zu||;hp-0=O;DCFjxNcSU_Z)hyo0voUj^n>NLW|7qQbWcBre&Fv&(4e+NHwHY~-Xjgv|R6U~~D%{K{4=^=y zhUA-Kx%v)66&o|>&0@}5&J|{mwMS1Q{u0!(J7)-T{NbQZ#?;~)7)Xd2x=LIcb#7-g zX4$T?iixG8h|gm5OyBHr4lVHQJlnoep9C%VxikrK5WiO*{>y3}L!e4O*g19o%Q-@X z9;USl+4fp1@k?+L>VA_ltf{E@m;FP`b>=ed%fxa-Fl$CtIbk%bO^j#OGJRMgcE+a5 z?XW_8GtIUabi+gNn;o1=vCo%?UW{Y)jiYdlimI1d>gMn*s}hnLlIz2DMAsHL{`} zN4Gsq8OV|^B`J1@nZUVt>A@$4MDi~%5O964v&ER8sz=-deP_jLXN5O1Ey3dDAF~r6 zZygm}-;}6v;c!uzroK$Yspj#`JAZNhvhlK4N8y4YeUs(34D7Gw@A{@j&22T9myJEA zxtG3S(>7x~(Ql~s^hVD0Z~`&&waPkXyq^(O6tw{IsJJaApBOV7lQkCc{J&*q;x9MH_F{iUFc;<={k02e$ZEh2o4nWeWnBk$K~CZw-EoTPVJMj8~&YJ z`*^*!bz}Vl5EnDPvlbVFNFsAbgdRrKeHwa4G3S}i@cuomSr#?SExzqNs%nSu$-C>+%J>}K zt_PZ}GOc*5VZ`SfUw197-4 zU%2n$y2VI-UoO4A)rGfc(F%t0+RSO5T;6W;WJ8Y(C0GU8naoOP{0G0K-N(G?sdBH0h9S52$3!a zF_pb&B^^l_(KQ-ez$+?q>|9_A5?=Kw6J!KlzkEJNlNEP_Wb41Wd>lTG0Fbss-^*;? zQb!ZL5=_L`#pkU~AJ#?Yxf+@T;$PInj5fXb8FxMd-`GD@jkys;Kc7C)9URxnk?O55 z=vZ7X+`ioz8FAf7@1aU10m4R!M>v+}@!z2gpl&A1ey4OFq=^b)p%ZoM7 z+3=a{quJO*TrM?hgEHGHEFnHL!tk|$cP<|dlmNhNqU}R#3R~t**jX83M_S7_pvkQy z0)GMSuiqulC!9&H2$rnx6o5906o`MZGp^eC86 z9cIaXy8joG-|;Vq*^)VNAz4wJd{K&oauNZUrPKyRc_^4?^&wiGM0j9>^Cr}E>~OSa z{uMa9l=s<>${cNvK708zg8`Bb#EU|OAMVNmm@+DoQ5kW_zkOOXsy;aj6qJFpx#Gtq-b{S1)@ToCEg>XS7HBWVH6=_2-Aw=sb9M`M10zaDM zwYV0#Bxppj_cBCJy4GYEL9mA%%4~w;<(fXOUeVrEd$nC0Y@A9-H9c~QP(oi~FESYx%aDT|o7r0;D z34tPby`4B#lp%WN<-c1f8J zo{ydbrDtujm<#35eA62u@uWDi$}ZR@i8~vL{ZG!n;at>tp-iKS(PCL3*u@+?{%-k4 zpA#1@y<*C@_YKrNJjj< zbVAE!oDeNFBCGi#GXpv)4En`*hS#b6uWfw0=V|U-6g780m3%+rKZFK-R~UDg7L~wZ zl7{tyP;q8uG}jy;lGEA<6do8EpWOn)rg{Bcark2pt`?9R3ATr}z8D)!6$Fexmx5KphxXC0{$}arqq=o}d@b0!bVRpH%4{!IJ+c22JggkL2 z;VM%{?Z#CiRm{F+?|MFAmeea=h0((P{YpqLh3-7Z8O*w)FwXmGX}iz-Rf=U-YdZ{3 z6MD)3q8Ej9egzz-$y2k2PU{jGNAZSQl@tzit3UgYUg!oY-Qt8DPEc>XvPh3F{oB_H|9D^jhJv! z6tYN_hXxz%Rw;~v_IUpn6C3BZC?`{rgg-d=@N7g#@gU(C-xENk`MIXg`&T3dzYiis zs!(HLLrV*-h=gUFox~z_C6Zo{13J`#MJGw4^>tXBL_KziE$_RxA%3PzI&s-XdH12X z&TsNVU;m(l!h~#0)`c@Ps`oH*^$j(reh`~2@DXN6ymN^xEXh@uuYnZ&5@Qy=O9Lv< zJ|5R=YB+6S@eg{b>jN#_&T%{h!_g{q70kiDqnZ8`IA2rpHcPpi7egD&OZV z2~1K6n3ma)!67TUj4CiKmrw0MfH@5VGC*6nUSi*XV`<=ww;|Ca@e;oP)H#y$eN8^_ zKtSH?Iq*><16=g2y{|Jt;xBL>jb%S8FuY4R0A67S?wA8E(%Yvqr02cxfQbR{NUAfD zup;0qf%*gisr-MwJuZY^F{xU@t0STPL$LdyN7NI_EWoUgz;9n0v$@f$ng7MzcRz{F zalwpYXM{1kRC_e{q!<14{|08Jq~gquB&xWgmG5nHEfVw~;$S;I+p4&d4(n}$Hq989 zr#6oyaSyD9pqw5pSvJ_NtrRHg9RbMixN=)#i)R1UN}as#OPq8M&xP6z7X4|VfH{s+ z3NgEe6jsJc8rfgYZ|{ozc#jt4Q?6#}&6S1trYg-{_U4uE*8-w4MXX~)XG$afj@mW^ zr`7TtnHCrNwFkf>fae~xYGazRm>I^H30dKoZfTnlTy#9=eb*%kTW z`}qTLqXUtGa{XeN7T){Ehiw7Ke*k6zo)b;qgmST(7hCvhM~lS4 ze?Oi&EL$}|MK((GrfkH?a|qd(vK5odYbZroIw^$9?@3tbvN4FtJuV|S`xx`YPCrgF zLa!rFejwTE7AQp-Ah5Wu=T68vT?>u67#;4R8z%%uQA+n8$6}`$ZmJgx}izJEZ!WBr|>(`#n?o-Qq!AfFPzLLy!BM2rNv&p^P_}=mMF~Xd&31Tw(Ia z*t7uZ`}584dYr^FAQ`TT4nS(DAYirgRGP^HOEBqKC}9y2xh<>F#y>14V;A-C+E@6_$=fk7Qup|slu7ALmhyl*f{Oo14vow1`T z!$fM~x9_u3y{u<0pr)!g=FqMy4>hP&S-v`MDW8v4&XU`j8d~TiTjE_pZVhEW;w`Qf zc3B*i3Nf3<Q*ef$4L5A?JBujqk7j*EdV21eF%?aCqyxDS+g z2D%K>-WD3vsXe$&P8)zviDe^PyAnDe8ozQMq49XViAK1(*pQ>ddU4_33xb1@|Dhl# z=k#v`K}AKY8^=bDCBgn1FPk(^tE{43r<$fXvZU~^2oqY*y#`8J7Vzp86KxhJezx!D z1((;1%vC45tz{2Y%i!k~Up{tSjd0J2Eao4jHYnk@Yze;e@WIyEVdMdOi{7h7^O?s9 z!f!yWq`$?$-AAzEh6_h-&$&@S=YytWIjbcr3h0$lKc)S)8p#vtfm9BL?wCj*5cK#x zp6gtS^5lELb&!sfBI}~NaWimwi!YuUlo1*=xt^~ud_aBk#FkM1KRtYC83}?SSX8SE z6$UZZPv<=28yp@XD%f|OUQ9nwH*oD@-KD1Bfk!E&#zB;Y3FCHae~U8nCbjG-Wp|70 zW?iC6EyB->=ILGy5N#v&Mzwo1NGRPjjWk9rzmChtp;Ns&$=A$IOsN4I%P}Z7yAL^y zFwxB~Hz9QrVfpbn))$9M@mw;Usq$p~1U#h{)GqXedlU1$245xKI*eH=c3O{`UD&pC zQJ8*_yZq(6mV5Eba#om*l_tv|iB~>nt+pAor_3uLEK?#-V^Klof68-ONnXA`Z0PZH z?0i2YrbJDOkLl{h8B!J%YwFg!yAVJ1Cb$&$qefTwLzUU|Sh{xo*%{diWVB>%b#O?o zQK^%dvxSk!P0;&UtEFpdF7{S+LxuDodXI7B4?B_ZCA;K;P z-F5N$&z!}t&E>Wc&c7$j`+C(UIQ{Uixe%|_2f#qjTpI5Hf8iVzz4Kih#W&`J=st-A z-OWDlFL7ykCe+X=Y0tS=oM5zMO0yZI)2ba?jx3R~J$M8s%MQT5FWk;?3Cn*Qj4y1X zG1pwKMpjNC7e*NapI4#Nix%ZFu1EtwYzxrzyt4jPuHj#S#ciE)j$@PpEO&aJY zb2UEiGA)CMxO6hL(x1PVz7A=7wrT>6ISJ>utD6*H8P`IyUNTQeSenN?4=J)pzxH+5 zb(R~%Clr^zBxt^-Q1bO+m7Ve4TRb=!+M-3rK~jZzE+>rG6D0eJ&JDK==Js42P_Iqr zYp$;Z_B)J@G$2{nm6L_Zt$*dEW~L%EOD9!ng(>E{JR1cBVX@snFauvH&CJO$fqq#L1w{ehT}h@h?A*X6b9ER+88u z)^};81C=V9w;vzOrTfZUdShgN$dNPtiTl&bvLj_{x~~e1TzyVz*huHA-07FNiQQxZ z{g25&BWBE44TAI*49$olbyaT+2OU^`LvY}yuia>2ag8HQ4TY!6A0igYcGdyZz$Tv;u?jrxl+&?tYW++W%I5wi?-Yx+l`o6SB$VTLle|)1 zQOJ=;!5EVlC+MS*&)E)sUCk|%WqCy^U(52_^S9@52w{PJnTgv0BZAWet%+I3o@&Q* zkRo;wiNpK^>EZt2K*G;qSS0R)YAbZT!qc|fQ^(j0Sp<6$hXlvxPj>d!bZrwX?|^7~ zq_?krfH|xD9ovoq+8~Oex!3p!igLQ8Xow)@J5;SYI!q3eJMIk~5qTK+22xJ&E|y7O$6!>14>wmK5`U#X7G%q0|1My- zTDm4T{i;qa`|*WZ@stcnpUrUV;tMfT|0{f~ycCvi=f~f`R4)z3Jwu=k-<1dh^GkA8 zX>GRpDa*(6+p4K_*CSgGpOCR?z~51eu!K3xja0F`g538>@a#@Pq_jkM*ZOcCkf{Ya zD{AbS%b*W8Twy6j^DyVI2oO#-{^)*ao)*mQ30V?#Y9~<>0HyERRyc;HB;f>(a8JoM zQ81PyTjQ}L2}mrjo{Kh7ASrNp2IsMnKETbV_bR-jX6i6}IX_up{x>0F`vy#-#}Gc5 zEa^&yLnvI70oJ#8nu4~SpCvYu)6cXPs&W^ic#GL#4d5r7k8K{|3bANqYq3?te>M0T za8Fqaiy5m*RHGLoI7MXv*KBd1IyR2u%aL=y*yP=FK`lgsUS?2w_ecQfE|iUQP$!(! zQolq~-`Mn!_||uMYQt?YR%GxZvCIkotQUrzSEqA$!yborvbyrr3O9d6BZe*`sOcqB zqg_=Fr3nWGn;S|Hl_cC*dl z$rS0Th0s$2nyhf~wDgG%!_#+Zhd`WCo!&iz{{CHXF(b(kKSSHeG4NHpq65#F#&<<-Dxh8hut6f=Xg}vB{!l*F?o5` z1K>TMMXzo>j#ufp&g}e=W&(x?g55*BF^o>$kDKjG2h=3S;AuL}7jvCAXa_kUmi+*w zJ>q!ZRE#01;y_?3ew8wGqN(-et{mL>YT8iriq-y0IRB+|w%C)I~9f|C9fC3VP5PJ`;)i?YfRYOCQ4Uq0`Q7REuNk$El=hz|p5}WQ zL&oDx!b)=c%;jG7b1RfskdF5K_G#4Iq3?*I4iSas1p!s-fr=vD4taS`Dwsmjz8W9% z5wDoKa~7n^oS~$fOcT4gIB$&>a6gkCOO^#;#xkl=5pGRZ8~YI2ICkwGJ{VFt(q%hh z%;&kxx=hNYr7u;1>x}yosnz~guO*t?J~TsK>>eD?@zb(2S;kx>J$zX!KDFU6(c=q) zRA_J>Q}eSslo+_GKFHFCHTpd4;Fe1{OATT1yPe1z-KL{s2=d? zpbQ+7qx^Nq^Tt4Q6MwLldTWDGasr^vC{ZXT130N{kqsG(P75#w51ed@5e{uP@z?aML#c11zUA#?EXj-EyTxI?A zi>z!^qgAv6`X%u(xkKF54da&TA+Wn&92#PJ~^aSllm`&bA56S?lY#dr&S&~C#3aBzis%ZHy&!(;}br%<9?Kl5` z%VLtPFuBb!<<&m3o4?r34At+Rsw~lEWWSis^_*WHdGrD*GVo!ZI5mYVex7)4ZFqjB zaWaYSG=)L=XnpKt3ZLWjh7d(6(_fOT@6R5}?DA}RK(9OP@^3N72kTyaqD2Pv-{{4> zyL^4wr!M>y{oqUG*_qjfR%C}{L6aPb-O_;VJG!HwgkxstqXTFsW7j&djSBnTNbw6B zcu3#1Ym}C3?vdg~A1U(<$*lX#tp|F{nvO4yNFv1s2B`bhsEw9J?3s7L_s*oNl3{ z!WIYyACvjLt2N^70_w%tPD&$o6q3`!cr8HrA9Ss2s8jL&C!8u)iIW$yJ{J2CG>adL5s=R^>a+?j~$S>P;&P66=ZA8{_isOsOH0G`=Sbsoy3?}vh zAlX}3_vGc$D*Th`KMMfnjTLh6x|x?&GesZP&h|28e2^{w!2iUBaet?fQ8#ScslyAl=M7ZvraY5$(0_NKasnGI_m_ zO*~-oPEi*&4;UzygG&t^Pbcz3o*sXvy8#NAqk760zgw=$OW&MW$c{Gy^20s||D&8Y z-&eZq%Q72Qtv{9G?a|JoU6}JUOf#{G!~?PtyV!T-tvb)#4ym(@jOXe7S@LbDm{wLYSBD_Kz8 z<9r_XDUYeYv+#YZ+;M~PG_MXac2+mX%?Q6}#vW~IPgXBlMt0@C9@%Sxt62S@K?B z+ZgLwOqb}Jqg(EariNbW%_i|MAK4vkH>%%Xn=_mOu~6mKtO#!vzG(uA4AalNi+ZLK znRmk(MRs6IIq5_v7Q+t`c+3JvnpbIE%syQcN5^$M|4QgmYS5I1C$uso-&c{J>Q+pD zUzDA?Kf&}fI`jq4y&KRIT+*1^p63v5-l3|sk`}cuQ>(3*=7N%~fG-;)Vld0};9K(} z3vGEh+?+ES?~~(P8c!^{*jotSk3!=6 zuYTk0&M~WdU5*MAkEd+P=ZBU1ELOl?1eIHZ68U4rY(b9$_%1ISLN$=@mF?{8hRWs1 z>SQnC_zj^aCmSW^>meN7KYcLiP9JNFu27Qa*oJCy;9N_)=%{!>k*oUA zP^&QF!*-K4PREzr>f@J#Fu8aR4x^J%8EV-B8ERhpW5%t8J5BhX-M5Nry4Tcm7d>rT z*bW#K0zVE23-SPI`dg^;P3#UXaP$Ou|4a$3E>sL;8{OXKd@OxZ5;EH`T^ad-f zqJWMj42Y)MnXqEX(*i4lc#B~hk|t&K(_+x|zm!&OwFmf< zG0L;9@+c*+;;pi<9gGibj7`X(y@q%oe4Io%QKS44Aj2xn1oi|U?%LolT}$Vd>0~S3 z$YS09s6sxH?z3j7gJ?xSvQG0-joRm&B`(iTEL;#k=5VIb_)!7&n=IKAL7zh55i7L3 z#2JKWbzpl-xGsq~{@m*j^5dAR3+35V-k!jzjLs1Gu!8|*lJ8WYkAJV<)%p`ak-#GJ zEd~l+wPeKW*@qpfmR&`>qe95{aQZXfYxTw|moh*pkfFh8{Zm&a*>YVWQ_5F?F?~b} zNkT7^I>?x55wVz?>PLOAsnm;b*&|ZA8$25v%U>R?ziQ|`XrlqX$xZqc7}_J04f0R^ zQXDPzk`72hur~|5VFInetMg93l?FN%$Bs4Y3r*^f*>|TQ!mNPL$bF$pr*t##Jyz)5 zUm=u|=(~lgh_h}v5}Kd)d`FgfZ9>156#+TrffTM31eT3V{~=|lA4n(Xdm$0cn>e)M zg&F!yBFiiXY3@6ViMtMJKGw=i!(Nf|ze=NLU`QUkfcwTYUFFswTjyx{pA~RQ8hV`W z_l$%~bLd%iwCdhlYJYMTMoyQ^Yf@!#=4g-SyQV%hhBHWC1wZvZfGF5q(A`tLMZyL< zwDSrU*qttnls|OZ{_yJKRv)9Nafq21i48 zio_s(t0YjFDe_bQH-eG~o%LFy0m~6{A8Ahlzqgj|8kuIvhXw@CS^*8cb~qe}v3*j8 z#8$X!mrgbm7 ztdEq*v63OG`N#dRkz*$wTXy~P4j+VVY5T?c?3?I2V?45ZCs~!GK5qrQ#9()dL!^@& zuMWcZgwRvRH%O+(Wq85{;$L&uNM}a$PlDYd!UAu9d0gQ9`7&pP+KqL_G6sUlHRm~u0+{I-=| zpptk}=vXB?D|CQBt)AL4>$04h=?<(82ZnQ2G&_n>^a6jindOj}S=$S|lBSRkc1MS_ zdB;?H)t7uBRXf^g*4-YzkWyZqQ??GK%TSouK*xQMwJWGL9N{|tq*ID{hTAs~7wIBJ zYe0Y@_z~9Skt6az*ByP|OT{aVJaaIrGQ-w_EsLk=00}CU3v!%q-b423=c^`1p4K#3 zY;PHQ$O2`8dXOXB*{@ExI4i;04Gr#a1-CL zz#UVuU*aX%pSbeB^UZFji7|ZEqk(V>Rcu{;LZC)cpvi5O4|r_9jFd8<_i%j<(~cA? zMCB?;l*>{8!BmQ45Rv6fw)YRWZ=Zad-*qHe56^#LXbR#PyW)%PFXZ zt;c$<>o6UQ!_!qd1i~mM{WW-4izA~}uWmJ-VXr-N>_A^J#lMRroP^;JX0J_MdDZ7) z4Kin8UKX!em#V*qY8`FWN$4M+&JZANakvBzL+YnKlM&^*cu2Pg&X zKB^}7?5oNvI!XwMtl@4bDh54WZ7xwtoC?5-Y7xJM$n2DUE}D6_3w>sMXh|zgm0DVy@tW1|PxD9f=sYc1Xr71+mu1$y zD8l97Icw9gEF*GD)zksxciYj>WU36r0eQ;>lPK^RaFPc%sgPml@E^DSieRkb4kbr9 z*n$E!>bT`ZYmDn&7<|YHXI?hE(My%XAIAFdOrn{B`go>SWx;NvgDg(bJVces4?jV| zaHJsbtW*OJZvkP&ERfUK%ROit!&OhcnZ|c)-CJaryrck2Tw`8hCfuhDPuWVeN2~BX zOV%!>hO>krVcw@%n$(=aR&Q)(N&Sc@e;z)KI*H)fjJ4qDl z8hnY;4Vr*n?gJLPqslTjO1Sb9)52li6ogfYV5QLo;3fE3s_MUo35dgu?dGJ()|nW? zc`f!@_P( zez>~Pi9yTCv=rti+U+nf)QRw%!8hMIX=_sTy|(7TB=j!6X^K<<4xuXb%K2nmLVy%N zq|;iakm|g}^115;??5Orh)@}FN^}&*;taE}&=cB;S7Nu}4?+VqBnNSu%208 zL3E5z#nGokh1S&DA#imWl21(J;d|#<(EFLH!kf4f)(~_Y1G!LdvYL(ij4{13sWg=| zu0OQ1)SELIzDN3FOE5G&>%N6{NAnuKwH!56qN?@q*3!B~mU?n5L}3;q}C4 z!3f*SPVU_s*Yf4P2P&pY)E<{GXTb)0|5NQ(4?;55m$6BYm3L*O^ONX8sNz<3v4xd+ zW2M>%*9Li`azDY_yTxf|NwjPgDcntcP0HC3-A&CaU+pnb^&LMg-bJBPiqpjT#ptI9 zv&p2H3Hru(dWH7Bx=RaHiQfbr_S72Jpk;-qSVKywHQj> z4G)ex1!5$h7*0*}bT)}UoqdWh2vpnV=d(6Lf9=Y#6LvB9*c2T!AK0an5l34CRW0-1 z{}v1Xti#D3>{;_jThe*p=D!_Q9-`pu#5)kIh2}hP@;{Iu}G*bYb37 zd8?U}S}^U5$_m)fet>K&DYU%Sp#K3!QzBJ+_vS996k1&pn6B)p*C?C+7DUrv3j~13 z+TOh@GD7SnaKK_I8haltqs&a*XhQ(uIhsgqv*%#A=j%;jOd3ux9qK*oU(>1zVdwcVFPX?_;UrRO$IVGBE|7@FQ zH=MN=eFJZ7aMIoC3=V2gAh+LCgcHm)BeWWjGew$>fC)J{`osT2iOA#sfkgBl%R+zU;B8#`;RNNvFbeb$^YVK^AC-m4 zkGf`?=H>HTS6K9QzMtB@t!wcZ-%aLjAN{YFAC_6C@`_l}|BwXpOX-m1izFHzssvDi zs>e9;tprLRQu*@w34H_%2p{TRAkFcQY9y*c$_h+vkcnJ+e)akd{SPMaG4Eb8VoIRB z16t6MGnxI{Kc+YoyMqW78}5^y{Q)rj4>+~#LDu{cMo~rcsa!q(3zq54_>9NhbbxG$ z5aR@QlSKXJZY1EYn4Dg7(*JNq-Kx_g%=bM&;9A`+Ni<2Hqz3f=YBN$dVNv$>1n?Ziof4; zZCXAUo2l>O<)33^IGVa>aO!CsH;5)l^{|E(0QrjN`Ka7-CtCg_CO&E}%^xpKKd-QgCKNu}u9cWVZZe~y*(3qSUaUN&8#ljR z>NhMVTMe6CrHGX84Tvs1B9S9_rXGMF-{h)4I#so_!64r;OLsJ|+{fkem0+^&#fR^M zjdeVLK)zph;V9^F_%ZXmy%nS)lVrifuR6AyT`DlNx;CskT5_{m+yHzGnDzX!n17OS-2b|9J2=iaJ*b)6Be<~|14B^rn;yQ zK>JCCG*E+QtcL8Fr^pNKm@ZPa1x)<7rJW{={_vh?nPtRP6WCmvkgEU2Z;%Q!uxT^W5k|h}c{w*LnLhi0SAOhrKZM*gbF4_wcMX&d=9%_qwmo<% zrP)AX%R{>YZ7SYYp%-+Ah_OfXL`MFF!HN)5_}$+`g`p=dR){z1jYSA) zxuhQ+63(k8J`6u*xvf&RXbYX8#vnXYDKU7xb~N4tzo1xiF0Ik@og`$!%IhD1+R*A$ zYl}$hLje8G_w`eqB1tq)l;?9y{V1 zicolN0$-sJwu-8(U%n@}v)_~5LK?hUc$P-=##22_oB#oKHqSfD?$*kuCx-r_`4|Bk zv8vBOHWfw|r#7EQ0Rt2Z3{Wh%8^#-dCdz#2vREw3u(PI7wLP*xq7y0Uzs2fND@X8O zRt||hFVf33P{z&@ETkG~=K2s*>zj9~M2u?!_tPJ7L z`7U|_6gO+qZ@$Tiy=VYhdgXnW51<3}vVnZy9fQk+$N+RMRI`xf{lyvJ8J7brPlL2= zsR+fFCWGS~x~1E)H2EOYBo!+(K@O&^5$dKy!Fx?WzCeT3B?Q6X^%Yn;ss2!HuTyA|0NZ6^rl2RivM}(yP21JBl+f3j102-If`R;dP&aK zBc<<@lcN^dbPE^UPdfh5&q1PLbg0*rk9usrcdoImnOa!rR4>aI^;isacG~9oQrza( zso&f<>aiN(?6gxo6+%Mnl)$w-@gahy8F5zVxYf|0!Cas}?S7hIHO}YMUEAn}4BYu4 zKD^DYtEDFuqO-Cy#n9XyP=tKF)S;ObD5xY&T~(5!f3`Z*oah)T3zA?C3hY!Ltgg;% zBcmDn%5rshBO6_c968k;bEy8*XMx#fxcOyr?V)YzWl(|om&%hvVcTG3cUJ>F@HbaE z#OdIf{kz33x|H?NqJt`GgWvUrs_Z{*+#uV1bgcdEht<@DJKFXS+bQ|DJ2jVHQk%rd zpumu`7v#h2sgJOi!>x{wyT*!WgMzf&Vp-<9Q|BmU)_=pVCd-Im<)~4{u{6E;JpE~t zh$Pn8Fp46_a2a7<8=WnSg=lY#PW8Mf-my%X&KlDIhbx$0hkCmAXfbpz`;h*xhHys@&|Xt}<8d8*&;)L*%A-0{Lw`5cjfu(L|-J&8O;ztUQ5A?K{|P}Z|T zD1TB*Xp0&z(f;_0&yske0N)7v@i<=A;heW5s<{vFL6{j`qD?_^13317{C-8T9FyJ& h`2Y0!|3~k?!ekA;CwAFaBXkY?$Vw?m7Q>9Z{})3&N=yI% literal 0 HcmV?d00001 diff --git a/src/app.rs b/src/app.rs index 8367c5a..cffecce 100644 --- a/src/app.rs +++ b/src/app.rs @@ -1,5 +1,11 @@ use std::{ - collections::BTreeMap, net::SocketAddr, ops::Bound, path::Path, str::FromStr, sync::Arc, + collections::{BTreeMap, HashMap}, + fmt::Write, + net::{IpAddr, SocketAddr}, + ops::Bound, + path::Path, + str::FromStr, + sync::Arc, }; use async_zip::tokio::read::ZipEntryReader; @@ -8,10 +14,11 @@ use axum::{ extract::{Host, Request, State}, http::{Response, Uri}, response::{IntoResponse, Redirect}, - routing::{any, get}, - Router, + routing::{any, get, post}, + Json, RequestExt, Router, }; use futures_lite::AsyncReadExt as LiteAsyncReadExt; +use governor::{Quota, RateLimiter}; use headers::{ContentType, HeaderMapExt}; use http::{HeaderMap, StatusCode}; use serde::Deserialize; @@ -29,7 +36,7 @@ use tower_http::{ }; use crate::{ - artifact_api::ArtifactApi, + artifact_api::{Artifact, ArtifactApi, WorkflowRun}, cache::{Cache, CacheEntry, GetFileResult, GetFileResultFile}, config::Config, error::Error, @@ -52,6 +59,12 @@ struct AppInner { cache: Cache, api: ArtifactApi, viewers: Viewers, + lim_pr_comment: Option< + governor::DefaultKeyedRateLimiter< + IpAddr, + governor::middleware::NoOpMiddleware, + >, + >, } impl Default for App { @@ -65,6 +78,20 @@ struct FileQparams { viewer: Option, } +#[derive(Deserialize)] +struct PrCommentReq { + url: String, + pr: u64, + #[serde(default)] + recreate: bool, + title: Option, + #[serde(default)] + artifact_titles: HashMap, +} + +const DATE_FORMAT: &[time::format_description::FormatItem] = + time::macros::format_description!("[day].[month].[year] [hour]:[minute]:[second]"); + const FAVICON_PATH: &str = "/favicon.ico"; pub(crate) const VERSION: &str = env!("CARGO_PKG_VERSION"); @@ -126,6 +153,7 @@ impl App { .route("/.well-known/api/artifacts", get(Self::get_artifacts)) .route("/.well-known/api/artifact", get(Self::get_artifact)) .route("/.well-known/api/files", get(Self::get_files)) + .route("/.well-known/api/prComment", post(Self::pr_comment)) // Prevent access to the .well-known folder since it enables abuse // (e.g. SSL certificate registration by an attacker) .route("/.well-known/*path", any(|| async { Error::Inaccessible })) @@ -331,8 +359,9 @@ impl App { .query() .and_then(|q| serde_urlencoded::from_str::(q).ok()) { - let query = RunQuery::from_forge_url(¶ms.url, &state.i.cfg.load().site_aliases)?; - let artifacts = state.i.api.list(&query).await?; + let query = + RunQuery::from_forge_url_alias(¶ms.url, &state.i.cfg.load().site_aliases)?; + let artifacts = state.i.api.list(&query, true).await?; if artifacts.is_empty() { Err(Error::NotFound("artifacts".into())) @@ -545,7 +574,7 @@ impl App { .typed_header(headers::ContentLength(content_length)) .typed_header( headers::ContentRange::bytes(range, total_len) - .map_err(|e| Error::Internal(e.to_string().into()))?, + .map_err(|e| Error::Other(e.to_string().into()))?, ) .body(Body::from_stream(ReaderStream::new( bufreader.take(content_length), @@ -566,7 +595,7 @@ impl App { let subdomain = util::get_subdomain(&host, &state.i.cfg.load().root_domain)?; let query = ArtifactQuery::from_subdomain(subdomain, &state.i.cfg.load().site_aliases)?; state.i.cfg.check_filterlist(&query)?; - let artifacts = state.i.api.list(&query.into()).await?; + let artifacts = state.i.api.list(&query.into(), true).await?; Ok(Response::builder().cache().json(&artifacts)?) } @@ -603,6 +632,83 @@ impl App { .json(&files)?) } + /// Create a comment under a workflow's pull request with links to view the artifacts + /// + /// To prevent abuse/spamming, Artifactview will only create a comment if + /// - The workflow is still running + /// - The workflow was triggered by the given pull request + async fn pr_comment( + State(state): State, + request: Request, + ) -> Result { + let ip = util::get_ip_address(&request, state.i.cfg.load().real_ip_header.as_deref())?; + let req = request + .extract::, _>() + .await + .map_err(|e| Error::BadRequest(e.body_text().into()))?; + let query = RunQuery::from_forge_url(&req.url)?; + + if let Some(limiter) = &state.i.lim_pr_comment { + limiter.check_key(&ip).map_err(Error::from)?; + } + + let run = state.i.api.workflow_run(&query).await?; + if !run.from_pr { + return Err( + Error::BadRequest("workflow run not triggered by pull request".into()).into(), + ); + } + if run.done { + return Err(Error::BadRequest("workflow is not running".into()).into()); + } + if let Some(pr_number) = run.pr_number { + if pr_number != req.pr { + return Err(Error::BadRequest( + format!( + "workflow was triggered by pr#{}, expected: {}", + pr_number, req.pr + ) + .into(), + ) + .into()); + } + } else { + let pr = state.i.api.get_pr(query.as_ref(), req.pr).await?; + if run.head_sha != pr.head.sha { + return Ok(ErrorJson::ok("head of pr does not match workflow run")); + } + } + + let artifacts = match state.i.api.list(&query, false).await { + Ok(a) => a, + Err(Error::NotFound(_)) => return Ok(ErrorJson::ok("no artifacts")), + Err(e) => return Err(e.into()), + }; + let old_comment = state.i.api.find_comment(query.as_ref(), req.pr).await?; + let content = pr_comment_text( + &query, + old_comment.as_ref().map(|c| c.body.as_str()), + &run, + &artifacts, + req.title.as_deref(), + &req.artifact_titles, + &state.i.cfg, + ); + + let c_id = state + .i + .api + .add_comment( + query.as_ref(), + req.pr, + &content, + old_comment.map(|c| c.id), + req.recreate, + ) + .await?; + Ok(ErrorJson::ok(format!("created comment #{c_id}"))) + } + fn favicon() -> Result, Error> { Ok(Response::builder() .typed_header(headers::ContentType::from_str("image/x-icon").unwrap()) @@ -642,10 +748,14 @@ impl AppState { let api = ArtifactApi::new(cfg.clone()); Self { i: Arc::new(AppInner { - cfg, cache, api, viewers: Viewers::new(), + lim_pr_comment: cfg + .load() + .limit_artifacts_per_min + .map(|lim| RateLimiter::keyed(Quota::per_minute(lim))), + cfg, }), } } @@ -689,3 +799,175 @@ fn path_components( } path_components } + +/// Build pull request comment text +#[allow(clippy::assigning_clones)] +fn pr_comment_text( + query: &RunQuery, + old_comment: Option<&str>, + run: &WorkflowRun, + artifacts: &[Artifact], + title: Option<&str>, + artifact_titles: &HashMap, + cfg: &Config, +) -> String { + let mut content = format!("### {} ", title.unwrap_or("Latest build artifacts")); + let mut prevln = "- ".to_owned(); + + let mut prev_builds = None; + let mut np_content = None; + if let Some(old_comment) = old_comment { + prev_builds = util::extract_delim(old_comment, "", ""); + } + + let write_commit = |s: &mut String, sha: &str| { + _ = write!( + s, + "[[{}](https://{}/{}/{}/commit/{})]", + &sha[..10], + query.host, + query.user, + query.repo, + sha + ); + }; + + write_commit(&mut content, &run.head_sha); + write_commit(&mut prevln, &run.head_sha); + _ = content.write_str("\n\n"); + + for a in artifacts.iter().filter(|a| !a.expired) { + // Move leading emoji into a prefix variable since including them in the link does not look good + let mut name_pfx = String::new(); + let mut name = artifact_titles.get(&a.name).unwrap_or(&a.name).to_owned(); + if let Some((i, c)) = name + .char_indices() + .find(|(_, c)| !unic_emoji_char::is_emoji(*c)) + { + if i > 0 && c == ' ' { + name[..i + 1].clone_into(&mut name_pfx); + name = name[i + 1..].to_owned(); + } + } + + let url = cfg.url_with_subdomain(&query.subdomain_with_artifact(a.id)); + // Do not process the same run twice + if np_content.as_ref().is_some_and(|c| c.contains(&url)) { + np_content = None; + } + + _ = writeln!( + &mut content, + r#"{}{}
"#, + name_pfx, url, name, + ); + _ = write!( + &mut prevln, + r#" {},"#, + url, a.name + ); + } + + prevln = prevln.trim_matches([' ', ',']).to_owned(); + if let Some(date_started) = &run.date_started { + _ = write!( + &mut prevln, + " ({} UTC)", + date_started + .to_offset(time::UtcOffset::UTC) + .format(&DATE_FORMAT) + .unwrap_or_default() + ); + } + + if np_content.is_some() || prev_builds.is_some() { + _ = write!( + &mut content, + "

\nPrevious builds\n\n" + ); + if let Some(prev_builds) = prev_builds { + _ = writeln!(&mut content, "{prev_builds}"); + } + if let Some(np_content) = np_content { + _ = writeln!(&mut content, "{np_content}"); + } + _ = writeln!(&mut content, "\n
"); + } else { + _ = writeln!(&mut content, ""); + } + + _ = write!(&mut content, "\ngenerated by [Artifactview {VERSION}](https://codeberg.org/ThetaDev/artifactview)"); + content +} + +#[cfg(test)] +mod tests { + use time::macros::datetime; + + use super::*; + + #[test] + fn pr_comment() { + let mut query = RunQuery::from_forge_url( + "https://code.thetadev.de/ThetaDev/test-actions/actions/runs/104", + ) + .unwrap(); + let artifacts: [Artifact; 3] = [ + Artifact { + id: 1, + name: "Hello".to_owned(), + size: 0, + expired: false, + download_url: String::new(), + user_download_url: None, + }, + Artifact { + id: 2, + name: "Test".to_owned(), + size: 0, + expired: false, + download_url: String::new(), + user_download_url: None, + }, + Artifact { + id: 3, + name: "Expired".to_owned(), + size: 0, + expired: true, + download_url: String::new(), + user_download_url: None, + }, + ]; + let mut artifact_titles = HashMap::new(); + artifact_titles.insert("Hello".to_owned(), "๐Ÿ  Hello World ;-)".to_owned()); + let cfg = Config::default(); + + let footer = format!("generated by [Artifactview {VERSION}](https://codeberg.org/ThetaDev/artifactview)"); + + let mut old_comment = None; + for i in 1..=3 { + query.run = i.into(); + let run = WorkflowRun { + head_sha: format!("{i}5eed48a8382513147a949117ef4aa659989d397"), + from_pr: true, + pr_number: None, + date_started: Some(datetime!(2024-06-15 15:30 UTC).replace_hour(i).unwrap()), + done: false, + }; + let comment = pr_comment_text( + &query, + old_comment.as_deref(), + &run, + &artifacts, + None, + &artifact_titles, + &cfg, + ); + let res = comment.replace(&footer, ""); // Remove footer since it depends on the version + insta::assert_snapshot!(format!("pr_comment_{i}"), res); + + old_comment = Some(comment); + } + } +} diff --git a/src/artifact_api.rs b/src/artifact_api.rs index 70885ca..69c6068 100644 --- a/src/artifact_api.rs +++ b/src/artifact_api.rs @@ -1,12 +1,15 @@ //! API-Client to fetch CI artifacts from Github and Forgejo - use std::path::Path; use futures_lite::StreamExt; -use http::header; +use http::{header, Method}; +use once_cell::sync::Lazy; use quick_cache::sync::Cache as QuickCache; +use regex::Regex; use reqwest::{Client, ClientBuilder, IntoUrl, RequestBuilder, Response, Url}; -use serde::{Deserialize, Serialize}; +use secrecy::ExposeSecret; +use serde::{de::DeserializeOwned, Deserialize, Serialize}; +use time::OffsetDateTime; use tokio::{fs::File, io::AsyncWriteExt}; use crate::{ @@ -19,9 +22,10 @@ pub struct ArtifactApi { http: Client, cfg: Config, qc: QuickCache>, + user_ids: QuickCache, } -#[derive(Clone, Serialize, Deserialize)] +#[derive(Debug, Clone, Serialize, Deserialize)] pub struct Artifact { pub id: u64, pub name: String, @@ -35,7 +39,7 @@ pub struct Artifact { pub user_download_url: Option, } -#[derive(Deserialize)] +#[derive(Debug, Deserialize)] struct GithubArtifact { id: u64, name: String, @@ -44,24 +48,24 @@ struct GithubArtifact { archive_download_url: String, } -#[derive(Deserialize)] +#[derive(Debug, Deserialize)] struct ForgejoArtifact { name: String, size: u64, status: ForgejoArtifactStatus, } -#[derive(Deserialize)] +#[derive(Debug, Deserialize)] struct ApiError { message: String, } -#[derive(Deserialize)] +#[derive(Debug, Deserialize)] struct ArtifactsWrap { artifacts: Vec, } -#[derive(Deserialize)] +#[derive(Debug, Deserialize)] #[serde(rename_all = "snake_case")] enum ForgejoArtifactStatus { Completed, @@ -100,6 +104,154 @@ impl ForgejoArtifact { } } +#[derive(Debug)] +pub struct WorkflowRun { + pub head_sha: String, + pub from_pr: bool, + pub pr_number: Option, + pub date_started: Option, + pub done: bool, +} + +#[derive(Debug, Deserialize)] +struct ForgejoWorkflowRun { + state: ForgejoWorkflowState, + logs: ForgejoWorkflowLogs, +} + +#[derive(Debug, Deserialize)] +#[serde(rename_all = "camelCase")] +struct ForgejoWorkflowState { + run: ForgejoWorkflowStateRun, +} + +#[derive(Debug, Deserialize)] +struct ForgejoWorkflowStateRun { + done: bool, + commit: ForgejoWorkflowCommit, +} + +#[derive(Debug, Deserialize)] +struct ForgejoWorkflowCommit { + link: String, + branch: ForgejoWorkflowBranch, +} + +#[derive(Debug, Deserialize)] +struct ForgejoWorkflowBranch { + link: String, +} + +#[derive(Debug, Deserialize)] +#[serde(rename_all = "camelCase")] +struct ForgejoWorkflowLogs { + steps_log: Vec, +} + +#[derive(Debug, Deserialize)] +struct ForgejoWorkflowLogStep { + started: i64, + lines: Vec, +} + +#[derive(Debug, Deserialize)] +struct LogMessage { + message: String, +} + +#[derive(Debug, Deserialize)] +struct IdEntity { + id: u64, +} + +#[derive(Debug, Deserialize)] +pub struct Comment { + pub id: u64, + pub body: String, + user: IdEntity, +} + +#[derive(Debug, Serialize)] +struct CommentBody<'a> { + body: &'a str, +} + +#[derive(Debug, Deserialize)] +pub struct PullRequest { + pub head: Commit, +} + +#[derive(Debug, Deserialize)] +pub struct Commit { + pub sha: String, +} + +const GITHUB_ACCEPT: &str = "application/vnd.github+json"; +const COMMENT_TAG_PATTERN: &str = ""; + +impl TryFrom for WorkflowRun { + type Error = Error; + + fn try_from(value: ForgejoWorkflowRun) -> Result { + static RE_COMMIT_SHA: Lazy = + Lazy::new(|| Regex::new(r#"^/[\w\-\.]+/[\w\-\.]+/commit/([a-f\d]+)$"#).unwrap()); + static RE_PULL_ID: Lazy = + Lazy::new(|| Regex::new(r#"^/[\w\-\.]+/[\w\-\.]+/pulls/(\d+)$"#).unwrap()); + + let from_pr = value + .logs + .steps_log + .first() + .and_then(|l| l.lines.first()) + .map(|l| l.message.contains("be triggered by event: pull_request")) + .unwrap_or(true); + + Ok(Self { + head_sha: RE_COMMIT_SHA + .captures(&value.state.run.commit.link) + .map(|cap| cap[1].to_string()) + .ok_or(Error::Other( + "could not parse workflow run commit sha".into(), + ))?, + from_pr, + pr_number: if from_pr { + RE_PULL_ID + .captures(&value.state.run.commit.branch.link) + .and_then(|cap| cap[1].parse().ok()) + } else { + None + }, + date_started: value + .logs + .steps_log + .first() + .and_then(|l| OffsetDateTime::from_unix_timestamp(l.started).ok()), + done: value.state.run.done, + }) + } +} + +#[derive(Deserialize)] +struct GitHubWorkflowRun { + head_sha: String, + event: String, + conclusion: Option, + #[serde(with = "time::serde::rfc3339::option")] + run_started_at: Option, +} + +impl From for WorkflowRun { + fn from(value: GitHubWorkflowRun) -> Self { + Self { + head_sha: value.head_sha, + from_pr: value.event == "pull_request", + pr_number: None, + date_started: value.run_started_at, + done: value.conclusion.is_some(), + } + } +} + impl ArtifactApi { pub fn new(cfg: Config) -> Self { Self { @@ -112,26 +264,30 @@ impl ArtifactApi { .build() .unwrap(), qc: QuickCache::new(cfg.load().mem_cache_size), + user_ids: QuickCache::new(50), cfg, } } - pub async fn list(&self, query: &RunQuery) -> Result> { + pub async fn list(&self, query: &RunQuery, cached: bool) -> Result> { let cache_key = query.cache_key(); - self.qc - .get_or_insert_async(&cache_key, async { - let res = if query.is_github() { - self.list_github(query.as_ref()).await - } else { - self.list_forgejo(query.as_ref()).await - }; - if res.as_ref().is_ok_and(|v| v.is_empty()) { - Err(Error::NotFound("artifact".into())) - } else { - res - } - }) - .await + let fut = async { + let res = if query.is_github() { + self.list_github(query.as_ref()).await + } else { + self.list_forgejo(query.as_ref()).await + }; + if res.as_ref().is_ok_and(|v| v.is_empty()) { + Err(Error::NotFound("artifact".into())) + } else { + res + } + }; + if cached { + self.qc.get_or_insert_async(&cache_key, fut).await + } else { + fut.await + } } pub async fn fetch(&self, query: &ArtifactQuery) -> Result { @@ -177,7 +333,7 @@ impl ArtifactApi { let url = Url::parse(&artifact.download_url)?; let req = if url.domain() == Some("api.github.com") { - self.get_github(url) + self.get_github_any(url) } else { self.http.get(url) }; @@ -212,8 +368,7 @@ impl ArtifactApi { ); let resp = self - .http - .get(url) + .get_forgejo(url) .send() .await? .error_for_status()? @@ -236,10 +391,8 @@ impl ArtifactApi { query.user, query.repo, query.run ); - let resp = Self::handle_github_error(self.get_github(url).send().await?) - .await? - .json::>() - .await?; + let resp = + Self::send_api_req::>(self.get_github(url)).await?; Ok(resp .artifacts @@ -254,14 +407,12 @@ impl ArtifactApi { query.user, query.repo, query.artifact ); - let artifact = Self::handle_github_error(self.get_github(url).send().await?) - .await? - .json::() - .await?; + let artifact = Self::send_api_req::(self.get_github(url)).await?; Ok(artifact.into_artifact(query.as_ref())) } - async fn handle_github_error(resp: Response) -> Result { + async fn send_api_req_empty(req: RequestBuilder) -> Result { + let resp = req.send().await?; if let Err(e) = resp.error_for_status_ref() { let status = resp.status(); let msg = resp.json::().await.ok(); @@ -274,21 +425,330 @@ impl ArtifactApi { } } - fn get_github(&self, url: U) -> RequestBuilder { + async fn send_api_req(req: RequestBuilder) -> Result { + Ok(Self::send_api_req_empty(req).await?.json().await?) + } + + fn get_github_any(&self, url: U) -> RequestBuilder { let mut builder = self.http.get(url); if let Some(github_token) = &self.cfg.load().github_token { - builder = builder.header(header::AUTHORIZATION, format!("Bearer {github_token}")); + builder = builder.header( + header::AUTHORIZATION, + format!("Bearer {}", github_token.expose_secret()), + ); } builder } + + fn get_github(&self, url: U) -> RequestBuilder { + self.get_github_any(url) + .header(header::ACCEPT, GITHUB_ACCEPT) + } + + /// Authorized GitHub request + fn req_github(&self, method: Method, url: U) -> Result { + Ok(self + .http + .request(method, url) + .header(header::ACCEPT, GITHUB_ACCEPT) + .header(header::CONTENT_TYPE, GITHUB_ACCEPT) + .header( + header::AUTHORIZATION, + format!( + "Bearer {}", + self.cfg + .load() + .github_token + .as_ref() + .map(ExposeSecret::expose_secret) + .ok_or(Error::Other("GitHub token required".into()))? + ), + )) + } + + fn get_forgejo(&self, url: U) -> RequestBuilder { + self.http + .get(url) + .header(header::ACCEPT, mime::APPLICATION_JSON.essence_str()) + } + + /// Authorized Forgejo request + fn req_forgejo(&self, method: Method, url: U) -> Result { + let u = url.into_url()?; + let host = u.host_str().ok_or(Error::InvalidUrl)?; + let token = self + .cfg + .load() + .forgejo_tokens + .get(host) + .ok_or_else(|| Error::Other(format!("Forgejo token for {host} required").into()))? + .expose_secret(); + Ok(self + .http + .request(method, u) + .header(header::ACCEPT, mime::APPLICATION_JSON.essence_str()) + .header(header::CONTENT_TYPE, mime::APPLICATION_JSON.essence_str()) + .header(header::AUTHORIZATION, format!("token {token}"))) + } + + pub async fn workflow_run(&self, query: &RunQuery) -> Result { + if query.is_github() { + self.workflow_run_github(query).await + } else { + self.workflow_run_forgejo(query).await + } + } + + async fn workflow_run_forgejo(&self, query: &RunQuery) -> Result { + // Since the workflow needs to be fetched with a POST request, we need a CSRF token + let resp = self + .http + .get(format!("https://{}", query.host)) + .send() + .await? + .error_for_status()?; + let mut i_like_gitea = None; + let mut csrf = None; + for (k, v) in resp + .headers() + .get_all(header::SET_COOKIE) + .into_iter() + .filter_map(|v| v.to_str().ok()) + .filter_map(|v| v.split(';').next()) + .filter_map(|v| v.split_once('=')) + { + match k { + "i_like_gitea" => i_like_gitea = Some(v), + "_csrf" => csrf = Some(v), + _ => {} + } + } + let i_like_gitea = + i_like_gitea.ok_or(Error::Other("missing header: i_like_gitea".into()))?; + let csrf = csrf.ok_or(Error::Other("missing header: _csrf".into()))?; + + let resp = self + .http + .post(format!( + "https://{}/{}/{}/actions/runs/{}/jobs/0", + query.host, query.user, query.repo, query.run + )) + .header(header::CONTENT_TYPE, mime::APPLICATION_JSON.essence_str()) + .header(header::COOKIE, format!("i_like_gitea={i_like_gitea}")) + .header("x-csrf-token", csrf) + .body(r#"{"logCursors":[{"step":0,"cursor":null,"expanded":true}]}"#) + .send() + .await? + .error_for_status()?; + let run: WorkflowRun = resp.json::().await?.try_into()?; + Ok(run) + } + + async fn workflow_run_github(&self, query: &RunQuery) -> Result { + let run = Self::send_api_req::(self.get_github(format!( + "https://api.github.com/repos/{}/{}/actions/runs/{}", + query.user, query.repo, query.run + ))) + .await?; + Ok(run.into()) + } + + pub async fn add_comment( + &self, + query: QueryRef<'_>, + issue_id: u64, + content: &str, + old_comment_id: Option, + recreate: bool, + ) -> Result { + let body = format!("{COMMENT_TAG_PATTERN}\n{content}"); + if query.is_github() { + self.add_comment_github(query, issue_id, &body, old_comment_id, recreate) + .await + } else { + self.add_comment_forgejo(query, issue_id, &body, old_comment_id, recreate) + .await + } + } + + async fn add_comment_forgejo( + &self, + query: QueryRef<'_>, + issue_id: u64, + body: &str, + old_comment_id: Option, + recreate: bool, + ) -> Result { + if let Some(old_comment_id) = old_comment_id { + let url = format!( + "https://{}/api/v1/repos/{}/{}/issues/comments/{}", + query.host, query.user, query.repo, old_comment_id + ); + if recreate { + Self::send_api_req_empty(self.req_forgejo(Method::DELETE, url)?).await?; + } else { + Self::send_api_req_empty( + self.req_forgejo(Method::PATCH, url)? + .json(&CommentBody { body }), + ) + .await?; + return Ok(old_comment_id); + } + } + + let new_c = Self::send_api_req::( + self.req_forgejo( + Method::POST, + format!( + "https://{}/api/v1/repos/{}/{}/issues/{}/comments", + query.host, query.user, query.repo, issue_id + ), + )? + .json(&CommentBody { body }), + ) + .await?; + Ok(new_c.id) + } + + async fn add_comment_github( + &self, + query: QueryRef<'_>, + issue_id: u64, + body: &str, + old_comment_id: Option, + recreate: bool, + ) -> Result { + if let Some(old_comment_id) = old_comment_id { + let url = format!( + "https://api.github.com/repos/{}/{}/issues/{}/comments/{}", + query.user, query.repo, issue_id, old_comment_id + ); + if recreate { + Self::send_api_req_empty(self.req_github(Method::DELETE, url)?).await?; + } else { + Self::send_api_req_empty( + self.req_github(Method::PATCH, url)? + .json(&CommentBody { body }), + ) + .await?; + return Ok(old_comment_id); + } + } + + let new_c = Self::send_api_req::( + self.req_github( + Method::POST, + format!( + "https://api.github.com/repos/{}/{}/issues/{}/comments", + query.user, query.repo, issue_id + ), + )? + .json(&CommentBody { body }), + ) + .await?; + Ok(new_c.id) + } + + pub async fn find_comment( + &self, + query: QueryRef<'_>, + issue_id: u64, + ) -> Result> { + let user_id = self.get_user_id(query).await?; + if query.is_github() { + self.find_comment_github(query, issue_id, user_id).await + } else { + self.find_comment_forgejo(query, issue_id, user_id).await + } + } + + async fn find_comment_forgejo( + &self, + query: QueryRef<'_>, + issue_id: u64, + user_id: u64, + ) -> Result> { + let comments = Self::send_api_req::>(self.get_forgejo(format!( + "https://{}/api/v1/repos/{}/{}/issues/{}/comments", + query.host, query.user, query.repo, issue_id + ))) + .await?; + + Ok(comments + .into_iter() + .find(|c| c.user.id == user_id && c.body.starts_with(COMMENT_TAG_PATTERN))) + } + + async fn find_comment_github( + &self, + query: QueryRef<'_>, + issue_id: u64, + user_id: u64, + ) -> Result> { + for page in 1..=5 { + let comments = Self::send_api_req::>(self.get_github(format!( + "https://api.github.com/repos/{}/{}/issues/{}/comments?page={}", + query.user, query.repo, issue_id, page + ))) + .await?; + if let Some(comment) = comments + .into_iter() + .find(|c| c.user.id == user_id && c.body.starts_with(COMMENT_TAG_PATTERN)) + { + return Ok(Some(comment)); + } + } + Ok(None) + } + + pub async fn get_pr(&self, query: QueryRef<'_>, pr_id: u64) -> Result { + let req = if query.is_github() { + self.get_github(format!( + "https://api.github.com/repos/{}/{}/pulls/{}", + query.user, query.repo, pr_id + )) + } else { + self.get_forgejo(format!( + "https://{}/api/v1/repos/{}/{}/pulls/{}", + query.host, query.user, query.repo, pr_id + )) + }; + Self::send_api_req(req).await + } + + async fn get_user_id(&self, query: QueryRef<'_>) -> Result { + self.user_ids + .get_or_insert_async(query.host, async { + let user = + if query.is_github() { + Self::send_api_req::( + self.req_github(Method::GET, "https://api.github.com/user")?, + ) + .await? + } else { + Self::send_api_req::(self.req_forgejo( + Method::GET, + format!("https://{}/api/v1/user", query.host), + )?) + .await? + }; + Ok::<_, Error>(user.id) + }) + .await + } } #[cfg(test)] mod tests { use std::collections::HashMap; - use crate::{config::Config, query::ArtifactQuery}; + use time::macros::datetime; + + use crate::{ + config::Config, + query::{ArtifactQuery, RunQuery}, + }; use super::ArtifactApi; @@ -321,4 +781,31 @@ mod tests { assert_eq!(res.id, 1440556464); assert_eq!(res.size, 334); } + + #[tokio::test] + #[ignore] + async fn workflow_run_forgejo() { + let query = + RunQuery::from_forge_url("https://codeberg.org/forgejo/forgejo/actions/runs/20471") + .unwrap(); + let api = ArtifactApi::new(Config::default()); + let res = api.workflow_run(&query).await.unwrap(); + assert_eq!(res.head_sha, "03581511024aca9b56bc6083565bdcebeacb9d05"); + assert!(res.from_pr); + assert_eq!(res.date_started, Some(datetime!(2024-06-21 9:13:23 UTC))); + } + + #[tokio::test] + #[ignore] + async fn workflow_run_github() { + let query = + RunQuery::from_forge_url("https://github.com/orhun/git-cliff/actions/runs/9588266559") + .unwrap(); + let api = ArtifactApi::new(Config::default()); + let res = api.workflow_run(&query).await.unwrap(); + dbg!(&res); + assert_eq!(res.head_sha, "0500cb2c5c5ec225e109584236940ee068be2372"); + assert!(res.from_pr); + assert_eq!(res.date_started, Some(datetime!(2024-06-21 9:13:23 UTC))); + } } diff --git a/src/cache.rs b/src/cache.rs index 737e514..f349558 100644 --- a/src/cache.rs +++ b/src/cache.rs @@ -166,10 +166,10 @@ impl Cache { let metadata = tokio::fs::metadata(&zip_path).await?; let modified = metadata .modified() - .map_err(|_| Error::Internal("no file modified time".into()))?; + .map_err(|_| Error::Other("no file modified time".into()))?; let accessed = metadata .accessed() - .map_err(|_| Error::Internal("no file accessed time".into()))?; + .map_err(|_| Error::Other("no file accessed time".into()))?; if modified != entry.last_modified { tracing::info!("cached file {zip_path:?} changed"); entry = Arc::new( @@ -182,7 +182,7 @@ impl Cache { let now = SystemTime::now(); if now .duration_since(accessed) - .map_err(|e| Error::Internal(e.to_string().into()))? + .map_err(|e| Error::Other(e.to_string().into()))? > Duration::from_secs(1800) { let file = std::fs::File::open(&zip_path)?; @@ -215,10 +215,10 @@ impl Cache { .metadata() .await? .accessed() - .map_err(|_| Error::Internal("no file accessed time".into()))?; + .map_err(|_| Error::Other("no file accessed time".into()))?; if now .duration_since(accessed) - .map_err(|e| Error::Internal(e.to_string().into()))? + .map_err(|e| Error::Other(e.to_string().into()))? > max_age { let path = entry.path(); @@ -289,7 +289,7 @@ impl CacheEntry { name, last_modified: meta .modified() - .map_err(|_| Error::Internal("no file modified time".into()))?, + .map_err(|_| Error::Other("no file modified time".into()))?, }) } diff --git a/src/config.rs b/src/config.rs index 0c524f3..cbc2e66 100644 --- a/src/config.rs +++ b/src/config.rs @@ -5,11 +5,12 @@ use std::{ sync::Arc, }; +use secrecy::Secret; use serde::Deserialize; use crate::{ error::{Error, Result}, - query::{ArtifactQuery, QueryFilterList}, + query::{Query, QueryFilterList}, }; #[derive(Clone)] @@ -48,7 +49,9 @@ pub struct ConfigData { /// GitHub API token for downloading GitHub artifacts /// /// Using a fine-grained token with public read permissions is recommended. - pub github_token: Option, + pub github_token: Option>, + /// Forgejo/Gitea API tokens by host + pub forgejo_tokens: HashMap>, /// Number of artifact indexes to keep in memory pub mem_cache_size: usize, /// Get the client IP address from a HTTP request header @@ -61,6 +64,8 @@ pub struct ConfigData { pub real_ip_header: Option, /// Limit the amount of downloaded artifacts per IP address and minute pub limit_artifacts_per_min: Option, + /// Limit the amount of PR comment API requests per IP address and minute + pub limit_pr_comments_per_min: Option, /// List of sites/users/repos that can NOT be accessed pub repo_blacklist: QueryFilterList, /// List of sites/users/repos that can ONLY be accessed @@ -89,9 +94,11 @@ impl Default for ConfigData { max_age_h: NonZeroU32::new(12).unwrap(), zip_timeout_ms: Some(NonZeroU32::new(1000).unwrap()), github_token: None, + forgejo_tokens: HashMap::new(), mem_cache_size: 50, real_ip_header: None, limit_artifacts_per_min: Some(NonZeroU32::new(5).unwrap()), + limit_pr_comments_per_min: Some(NonZeroU32::new(5).unwrap()), repo_blacklist: QueryFilterList::default(), repo_whitelist: QueryFilterList::default(), suggested_sites: vec![ @@ -124,7 +131,7 @@ impl ConfigData { impl Config { pub fn new() -> Result { let data = - envy::from_env::().map_err(|e| Error::Internal(e.to_string().into()))?; + envy::from_env::().map_err(|e| Error::Other(e.to_string().into()))?; Self::from_data(data) } @@ -173,7 +180,7 @@ impl Config { .unwrap_or("codeberg.org") } - pub fn check_filterlist(&self, query: &ArtifactQuery) -> Result<()> { + pub fn check_filterlist(&self, query: &Q) -> Result<()> { if !self.i.data.repo_blacklist.passes(query, true) { Err(Error::Forbidden("repository is blacklisted".into())) } else if !self.i.data.repo_whitelist.passes(query, false) { diff --git a/src/error.rs b/src/error.rs index 8d3097f..0c6d30a 100644 --- a/src/error.rs +++ b/src/error.rs @@ -20,8 +20,8 @@ pub enum Error { Io(#[from] std::io::Error), #[error("Zip: {0}")] Zip(#[from] async_zip::error::ZipError), - #[error("Internal error: {0}")] - Internal(Cow<'static, str>), + #[error("Error: {0}")] + Other(Cow<'static, str>), #[error("Invalid request: {0}")] BadRequest(Cow<'static, str>), @@ -58,13 +58,13 @@ impl From for Error { impl From for Error { fn from(value: std::num::TryFromIntError) -> Self { - Self::Internal(value.to_string().into()) + Self::Other(value.to_string().into()) } } impl From for Error { fn from(value: url::ParseError) -> Self { - Self::Internal(value.to_string().into()) + Self::Other(value.to_string().into()) } } diff --git a/src/query.rs b/src/query.rs index ddf206c..8060f11 100644 --- a/src/query.rs +++ b/src/query.rs @@ -148,7 +148,11 @@ impl ArtifactQuery { } impl RunQuery { - pub fn from_forge_url(url: &str, aliases: &HashMap) -> Result { + pub fn from_forge_url(url: &str) -> Result { + Self::from_forge_url_alias(url, &HashMap::new()) + } + + pub fn from_forge_url_alias(url: &str, aliases: &HashMap) -> Result { let (host, mut path_segs) = util::parse_url(url)?; let user = path_segs @@ -331,12 +335,12 @@ impl FromStr for QueryFilter { if let Some(user) = &user { if !RE_REPO_NAME.is_match(user) { - return Err(Error::Internal("invalid username".into())); + return Err(Error::Other("invalid username".into())); } } if let Some(repo) = &repo { if !RE_REPO_NAME.is_match(repo) { - return Err(Error::Internal("invalid repository name".into())); + return Err(Error::Other("invalid repository name".into())); } } @@ -370,7 +374,7 @@ impl FromStr for QueryFilterList { } impl QueryFilterList { - pub fn passes(&self, query: &ArtifactQuery, blacklist: bool) -> bool { + pub fn passes(&self, query: &Q, blacklist: bool) -> bool { if self.0.is_empty() { true } else { diff --git a/src/snapshots/artifactview__app__tests__pr_comment_1.snap b/src/snapshots/artifactview__app__tests__pr_comment_1.snap new file mode 100644 index 0000000..d86a280 --- /dev/null +++ b/src/snapshots/artifactview__app__tests__pr_comment_1.snap @@ -0,0 +1,9 @@ +--- +source: src/app.rs +expression: res +--- +### Latest build artifacts [[15eed48a83](https://code.thetadev.de/thetadev/test-actions/commit/15eed48a8382513147a949117ef4aa659989d397)] + +๐Ÿ  Hello World ;-)
+Test
+ diff --git a/src/snapshots/artifactview__app__tests__pr_comment_2.snap b/src/snapshots/artifactview__app__tests__pr_comment_2.snap new file mode 100644 index 0000000..8d54b0d --- /dev/null +++ b/src/snapshots/artifactview__app__tests__pr_comment_2.snap @@ -0,0 +1,14 @@ +--- +source: src/app.rs +expression: res +--- +### Latest build artifacts [[25eed48a83](https://code.thetadev.de/thetadev/test-actions/commit/25eed48a8382513147a949117ef4aa659989d397)] + +๐Ÿ  Hello World ;-)
+Test
+
+Previous builds + +- [[15eed48a83](https://code.thetadev.de/thetadev/test-actions/commit/15eed48a8382513147a949117ef4aa659989d397)] Hello, Test (15.06.2024 01:30:00 UTC) + +
diff --git a/src/snapshots/artifactview__app__tests__pr_comment_3.snap b/src/snapshots/artifactview__app__tests__pr_comment_3.snap new file mode 100644 index 0000000..9cfbd08 --- /dev/null +++ b/src/snapshots/artifactview__app__tests__pr_comment_3.snap @@ -0,0 +1,15 @@ +--- +source: src/app.rs +expression: res +--- +### Latest build artifacts [[35eed48a83](https://code.thetadev.de/thetadev/test-actions/commit/35eed48a8382513147a949117ef4aa659989d397)] + +๐Ÿ  Hello World ;-)
+Test
+
+Previous builds + +- [[15eed48a83](https://code.thetadev.de/thetadev/test-actions/commit/15eed48a8382513147a949117ef4aa659989d397)] Hello, Test (15.06.2024 01:30:00 UTC) +- [[25eed48a83](https://code.thetadev.de/thetadev/test-actions/commit/25eed48a8382513147a949117ef4aa659989d397)] Hello, Test (15.06.2024 02:30:00 UTC) + +
diff --git a/src/util.rs b/src/util.rs index 5ce1238..bdd198c 100644 --- a/src/util.rs +++ b/src/util.rs @@ -194,7 +194,7 @@ pub fn get_ip_address(request: &Request, real_ip_header: Option<&str>) -> Result let socket_addr = request .extensions() .get::>() - .ok_or(Error::Internal("could get request ip address".into()))? + .ok_or(Error::Other("could get request ip address".into()))? .0; Ok(socket_addr.ip()) } @@ -263,6 +263,15 @@ pub struct ErrorJson { msg: String, } +impl ErrorJson { + pub fn ok>(msg: S) -> Self { + Self { + status: 200, + msg: msg.into(), + } + } +} + impl From for ErrorJson { fn from(value: Error) -> Self { Self { @@ -284,6 +293,15 @@ impl IntoResponse for ErrorJson { } } +pub fn extract_delim<'a>(s: &'a str, start: &str, end: &str) -> Option<&'a str> { + if let Some(np) = s.find(start) { + if let Some(np_end) = s[np + start.len()..].find(end) { + return Some(s[np + start.len()..np + start.len() + np_end].trim()); + } + } + None +} + #[cfg(test)] pub(crate) mod tests { use std::path::{Path, PathBuf}; diff --git a/tests/testfiles/giteaWorkflowRun.json b/tests/testfiles/giteaWorkflowRun.json new file mode 100644 index 0000000..023f85b --- /dev/null +++ b/tests/testfiles/giteaWorkflowRun.json @@ -0,0 +1,320 @@ +{ + "state": { + "run": { + "link": "/ThetaDev/test-actions/actions/runs/92", + "title": "Update README.md", + "status": "success", + "canCancel": false, + "canApprove": false, + "canRerun": true, + "canDeleteArtifact": true, + "done": true, + "jobs": [ + { + "id": 377, + "name": "Test", + "status": "success", + "canRerun": true, + "duration": "2s" + } + ], + "commit": { + "localeCommit": "Commit", + "localePushedBy": "pushed by", + "localeWorkflow": "Workflow", + "shortSHA": "6185409d45", + "link": "/ThetaDev/test-actions/commit/6185409d457e0a7833ee122811b138a950273229", + "pusher": { "displayName": "ThetaDev", "link": "/ThetaDev" }, + "branch": { "name": "#3", "link": "/ThetaDev/test-actions/pulls/3" } + } + }, + "currentJob": { + "title": "Test", + "detail": "Success", + "steps": [ + { + "summary": "Set up job", + "duration": "1s", + "status": "success" + }, + { "summary": "Test", "duration": "0s", "status": "success" }, + { + "summary": "Comment PR", + "duration": "1s", + "status": "success" + }, + { + "summary": "Complete job", + "duration": "0s", + "status": "success" + } + ] + } + }, + "logs": { + "stepsLog": [ + { + "step": 0, + "cursor": 51, + "lines": [ + { + "index": 1, + "message": "ocloud(version:v3.4.1) received task 431 of job 377, be triggered by event: pull_request", + "timestamp": 1718902104.1911685 + }, + { + "index": 2, + "message": "workflow prepared", + "timestamp": 1718902104.1916893 + }, + { + "index": 3, + "message": "evaluating expression 'success()'", + "timestamp": 1718902104.1919434 + }, + { + "index": 4, + "message": "expression 'success()' evaluated to 'true'", + "timestamp": 1718902104.1920443 + }, + { + "index": 5, + "message": "๐Ÿš€ Start image=thetadev256/cimaster:latest", + "timestamp": 1718902104.1920674 + }, + { + "index": 6, + "message": " ๐Ÿณ docker pull image=thetadev256/cimaster:latest platform= username= forcePull=true", + "timestamp": 1718902104.203115 + }, + { + "index": 7, + "message": " ๐Ÿณ docker pull thetadev256/cimaster:latest", + "timestamp": 1718902104.2031355 + }, + { + "index": 8, + "message": "pulling image 'docker.io/thetadev256/cimaster:latest' ()", + "timestamp": 1718902104.2031558 + }, + { + "index": 9, + "message": "Pulling from thetadev256/cimaster :: latest", + "timestamp": 1718902105.179988 + }, + { + "index": 10, + "message": "Digest: sha256:260659581e2900354877f31d5fec14db1c40999ad085a90a1a27c44b9cab8c48 :: ", + "timestamp": 1718902105.1935806 + }, + { + "index": 11, + "message": "Status: Image is up to date for thetadev256/cimaster:latest :: ", + "timestamp": 1718902105.1936345 + }, + { + "index": 12, + "message": "[{host 26303131f98bfa59ece2ca2dc1742040c8d125e22f1c07de603bd235bccf1b84 2024-04-02 20:48:57.065188715 +0000 UTC local host false {default map[] []} false false false {} false map[] map[] map[] [] map[]} {GITEA-ACTIONS-TASK-375_WORKFLOW-Build-and-push-cimaster-image_JOB-build-build-network 59ca72b83dbd990bda7af5e760fdb0e31010b855ca7e15df1a471fda8908aa47 2024-05-30 20:56:22.698163954 +0000 UTC local bridge false {default map[] [{172.24.0.0/16 172.24.0.1 map[]}]} false false false {} false map[] map[] map[] [] map[]} {none 627a84562dca9a81bd4a1fe570919035f1d608382d2b66b6b8559756d7aa2a6c 2024-04-02 20:48:57.050063369 +0000 UTC local null false {default map[] []} false false false {} false map[] map[] map[] [] map[]} {bridge 9b05952ef8d41f6a92bbc3c7f85c9fd5602e941b9e8e3cbcf84716de27d77aa9 2024-06-20 09:15:48.433095842 +0000 UTC local bridge false {default map[] [{172.17.0.0/16 172.17.0.1 map[]}]} false false false {} false map[] map[com.docker.network.bridge.default_bridge:true com.docker.network.bridge.enable_icc:true com.docker.network.bridge.enable_ip_masquerade:true com.docker.network.bridge.host_binding_ipv4:0.0.0.0 com.docker.network.bridge.name:docker0 com.docker.network.driver.mtu:1500] map[] [] map[]}]", + "timestamp": 1718902105.203977 + }, + { + "index": 13, + "message": " ๐Ÿณ docker create image=thetadev256/cimaster:latest platform= entrypoint=[\"tail\" \"-f\" \"/dev/null\"] cmd=[] network=\"GITEA-ACTIONS-TASK-431_WORKFLOW-Rust-test_JOB-Test-Test-network\"", + "timestamp": 1718902105.2669988 + }, + { + "index": 14, + "message": "Common container.Config ==\u003e \u0026{Hostname: Domainname: User: AttachStdin:false AttachStdout:false AttachStderr:false ExposedPorts:map[] Tty:false OpenStdin:false StdinOnce:false Env:[RUNNER_TOOL_CACHE=/opt/hostedtoolcache RUNNER_OS=Linux RUNNER_ARCH=ARM64 RUNNER_TEMP=/tmp LANG=C.UTF-8] Cmd:[] Healthcheck:\u003cnil\u003e ArgsEscaped:false Image:thetadev256/cimaster:latest Volumes:map[] WorkingDir:/workspace/ThetaDev/test-actions Entrypoint:[] NetworkDisabled:false MacAddress: OnBuild:[] Labels:map[] StopSignal: StopTimeout:\u003cnil\u003e Shell:[]}", + "timestamp": 1718902105.2674763 + }, + { + "index": 15, + "message": "Common container.HostConfig ==\u003e \u0026{Binds:[] ContainerIDFile: LogConfig:{Type: Config:map[]} NetworkMode:GITEA-ACTIONS-TASK-431_WORKFLOW-Rust-test_JOB-Test-Test-network PortBindings:map[] RestartPolicy:{Name: MaximumRetryCount:0} AutoRemove:true VolumeDriver: VolumesFrom:[] ConsoleSize:[0 0] Annotations:map[] CapAdd:[] CapDrop:[] CgroupnsMode: DNS:[] DNSOptions:[] DNSSearch:[] ExtraHosts:[] GroupAdd:[] IpcMode: Cgroup: Links:[] OomScoreAdj:0 PidMode: Privileged:false PublishAllPorts:false ReadonlyRootfs:false SecurityOpt:[] StorageOpt:map[] Tmpfs:map[] UTSMode: UsernsMode: ShmSize:0 Sysctls:map[] Runtime: Isolation: Resources:{CPUShares:0 Memory:0 NanoCPUs:0 CgroupParent: BlkioWeight:0 BlkioWeightDevice:[] BlkioDeviceReadBps:[] BlkioDeviceWriteBps:[] BlkioDeviceReadIOps:[] BlkioDeviceWriteIOps:[] CPUPeriod:0 CPUQuota:0 CPURealtimePeriod:0 CPURealtimeRuntime:0 CpusetCpus: CpusetMems: Devices:[] DeviceCgroupRules:[] DeviceRequests:[] KernelMemory:0 KernelMemoryTCP:0 MemoryReservation:0 MemorySwap:0 MemorySwappiness:\u003cnil\u003e OomKillDisable:\u003cnil\u003e PidsLimit:\u003cnil\u003e Ulimits:[] CPUCount:0 CPUPercent:0 IOMaximumIOps:0 IOMaximumBandwidth:0} Mounts:[{Type:volume Source:GITEA-ACTIONS-TASK-431_WORKFLOW-Rust-test_JOB-Test-env Target:/var/run/act ReadOnly:false Consistency: BindOptions:\u003cnil\u003e VolumeOptions:\u003cnil\u003e TmpfsOptions:\u003cnil\u003e ClusterOptions:\u003cnil\u003e} {Type:volume Source:GITEA-ACTIONS-TASK-431_WORKFLOW-Rust-test_JOB-Test Target:/workspace/ThetaDev/test-actions ReadOnly:false Consistency: BindOptions:\u003cnil\u003e VolumeOptions:\u003cnil\u003e TmpfsOptions:\u003cnil\u003e ClusterOptions:\u003cnil\u003e} {Type:volume Source:act-toolcache Target:/opt/hostedtoolcache ReadOnly:false Consistency: BindOptions:\u003cnil\u003e VolumeOptions:\u003cnil\u003e TmpfsOptions:\u003cnil\u003e ClusterOptions:\u003cnil\u003e}] MaskedPaths:[] ReadonlyPaths:[] Init:\u003cnil\u003e}", + "timestamp": 1718902105.2731254 + }, + { + "index": 16, + "message": "input.NetworkAliases ==\u003e [Test]", + "timestamp": 1718902105.2733588 + }, + { + "index": 17, + "message": "Created container name=GITEA-ACTIONS-TASK-431_WORKFLOW-Rust-test_JOB-Test id=953c4349622d86e68aa9b0d25b341f0ff4b36d87d5ffbae957d9efd72c3f6d64 from image thetadev256/cimaster:latest (platform: )", + "timestamp": 1718902105.3252785 + }, + { + "index": 18, + "message": "ENV ==\u003e [RUNNER_TOOL_CACHE=/opt/hostedtoolcache RUNNER_OS=Linux RUNNER_ARCH=ARM64 RUNNER_TEMP=/tmp LANG=C.UTF-8]", + "timestamp": 1718902105.3253257 + }, + { + "index": 19, + "message": " ๐Ÿณ docker run image=thetadev256/cimaster:latest platform= entrypoint=[\"tail\" \"-f\" \"/dev/null\"] cmd=[] network=\"GITEA-ACTIONS-TASK-431_WORKFLOW-Rust-test_JOB-Test-Test-network\"", + "timestamp": 1718902105.3253412 + }, + { + "index": 20, + "message": "Starting container: 953c4349622d86e68aa9b0d25b341f0ff4b36d87d5ffbae957d9efd72c3f6d64", + "timestamp": 1718902105.3253546 + }, + { + "index": 21, + "message": "Started container: 953c4349622d86e68aa9b0d25b341f0ff4b36d87d5ffbae957d9efd72c3f6d64", + "timestamp": 1718902105.5463858 + }, + { + "index": 22, + "message": " ๐Ÿณ docker exec cmd=[chown -R 1000:1000 /workspace/ThetaDev/test-actions] user=0 workdir=", + "timestamp": 1718902105.6031785 + }, + { + "index": 23, + "message": "Exec command '[chown -R 1000:1000 /workspace/ThetaDev/test-actions]'", + "timestamp": 1718902105.6032245 + }, + { + "index": 24, + "message": "Working directory '/workspace/ThetaDev/test-actions'", + "timestamp": 1718902105.6032348 + }, + { + "index": 25, + "message": "Writing entry to tarball workflow/event.json len:8795", + "timestamp": 1718902105.6331673 + }, + { + "index": 26, + "message": "Writing entry to tarball workflow/envs.txt len:0", + "timestamp": 1718902105.6332214 + }, + { + "index": 27, + "message": "Extracting content to '/var/run/act/'", + "timestamp": 1718902105.6332443 + }, + { + "index": 28, + "message": " โ˜ git clone 'https://code.thetadev.de/actions/comment-pull-request' # ref=v1", + "timestamp": 1718902105.6492677 + }, + { + "index": 29, + "message": " cloning https://code.thetadev.de/actions/comment-pull-request to /data/.cache/act/https---code.thetadev.de-actions-comment-pull-request@v1", + "timestamp": 1718902105.6493008 + }, + { + "index": 30, + "message": "Cloned https://code.thetadev.de/actions/comment-pull-request to /data/.cache/act/https---code.thetadev.de-actions-comment-pull-request@v1", + "timestamp": 1718902105.6817598 + }, + { + "index": 31, + "message": "Checked out v1", + "timestamp": 1718902105.7090926 + }, + { + "index": 32, + "message": "Read action \u0026{Comment Pull Request Comments a pull request with the provided message map[GITHUB_TOKEN:{Github token of the repository (automatically created by Github) false ${{ github.token }}} comment_tag:{A tag on your comment that will be used to identify a comment in case of replacement. false } create_if_not_exists:{Whether a comment should be created even if comment_tag is not found. false true} filePath:{Path of the file that should be commented false } message:{Message that should be printed in the pull request false } pr_number:{Manual pull request number false } reactions:{You can set some reactions on your comments through the `reactions` input. false } recreate:{Delete and recreate the comment instead of updating it false false}] map[] {node20 map[] act/index.js always() always() [] []} {blue message-circle}} from 'Unknown'", + "timestamp": 1718902105.709367 + }, + { + "index": 33, + "message": "setupEnv =\u003e map[ACT:true ACTIONS_CACHE_URL:http://192.168.96.3:44491/ ACTIONS_RESULTS_URL:https://code.thetadev.de ACTIONS_RUNTIME_TOKEN:*** ACTIONS_RUNTIME_URL:https://code.thetadev.de/api/actions_pipeline/ CI:true GITEA_ACTIONS:true GITEA_ACTIONS_RUNNER_VERSION:v3.4.1 GITHUB_ACTION:0 GITHUB_ACTIONS:true GITHUB_ACTION_PATH: GITHUB_ACTION_REF: GITHUB_ACTION_REPOSITORY: GITHUB_ACTOR:ThetaDev GITHUB_API_URL:https://code.thetadev.de/api/v1 GITHUB_BASE_REF:main GITHUB_EVENT_NAME:pull_request GITHUB_EVENT_PATH:/var/run/act/workflow/event.json GITHUB_GRAPHQL_URL: GITHUB_HEAD_REF:thetadev-patch-2 GITHUB_JOB:Test GITHUB_REF:refs/pull/3/head GITHUB_REF_NAME:3 GITHUB_REF_TYPE: GITHUB_REPOSITORY:ThetaDev/test-actions GITHUB_REPOSITORY_OWNER:ThetaDev GITHUB_RETENTION_DAYS: GITHUB_RUN_ID:292 GITHUB_RUN_NUMBER:92 GITHUB_SERVER_URL:https://code.thetadev.de GITHUB_SHA:6185409d457e0a7833ee122811b138a950273229 GITHUB_TOKEN:*** GITHUB_WORKFLOW:Rust test GITHUB_WORKSPACE:/workspace/ThetaDev/test-actions ImageOS:cimasterlatest JOB_CONTAINER_NAME:GITEA-ACTIONS-TASK-431_WORKFLOW-Rust-test_JOB-Test RUNNER_PERFLOG:/dev/null RUNNER_TRACKING_ID:]", + "timestamp": 1718902105.7244232 + }, + { + "index": 34, + "message": "evaluating expression ''", + "timestamp": 1718902105.7316134 + }, + { + "index": 35, + "message": "expression '' evaluated to 'true'", + "timestamp": 1718902105.7316737 + }, + { + "index": 36, + "message": "โญ Run Main Test", + "timestamp": 1718902105.7316883 + }, + { + "index": 37, + "message": "Writing entry to tarball workflow/outputcmd.txt len:0", + "timestamp": 1718902105.7317095 + }, + { + "index": 38, + "message": "Writing entry to tarball workflow/statecmd.txt len:0", + "timestamp": 1718902105.7317333 + }, + { + "index": 39, + "message": "Writing entry to tarball workflow/pathcmd.txt len:0", + "timestamp": 1718902105.7317476 + }, + { + "index": 40, + "message": "Writing entry to tarball workflow/envs.txt len:0", + "timestamp": 1718902105.7317617 + }, + { + "index": 41, + "message": "Writing entry to tarball workflow/SUMMARY.md len:0", + "timestamp": 1718902105.7317736 + }, + { + "index": 42, + "message": "Extracting content to '/var/run/act'", + "timestamp": 1718902105.731786 + }, + { + "index": 43, + "message": "expression 'echo \"${{ secrets.FORGEJO_CI_TOKEN }}\"\\n' rewritten to 'format('echo \"{0}\"\\n', secrets.FORGEJO_CI_TOKEN)'", + "timestamp": 1718902105.754891 + }, + { + "index": 44, + "message": "evaluating expression 'format('echo \"{0}\"\\n', secrets.FORGEJO_CI_TOKEN)'", + "timestamp": 1718902105.7549253 + }, + { + "index": 45, + "message": "expression 'format('echo \"{0}\"\\n', secrets.FORGEJO_CI_TOKEN)' evaluated to '%!t(string=echo \"***\"\\n)'", + "timestamp": 1718902105.7549586 + }, + { + "index": 46, + "message": "Wrote command \\n\\necho \"***\"\\n\\n\\n to 'workflow/0'", + "timestamp": 1718902105.754978 + }, + { + "index": 47, + "message": "Writing entry to tarball workflow/0 len:50", + "timestamp": 1718902105.755002 + }, + { + "index": 48, + "message": "Extracting content to '/var/run/act'", + "timestamp": 1718902105.755024 + }, + { + "index": 49, + "message": " ๐Ÿณ docker exec cmd=[bash --noprofile --norc -e -o pipefail /var/run/act/workflow/0] user= workdir=", + "timestamp": 1718902105.7571557 + }, + { + "index": 50, + "message": "Exec command '[bash --noprofile --norc -e -o pipefail /var/run/act/workflow/0]'", + "timestamp": 1718902105.7571852 + }, + { + "index": 51, + "message": "Working directory '/workspace/ThetaDev/test-actions'", + "timestamp": 1718902105.7572272 + } + ], + "started": 1718902104 + } + ] + } +} diff --git a/tests/testfiles/githubWorkflowRun.json b/tests/testfiles/githubWorkflowRun.json new file mode 100644 index 0000000..fbdb46e --- /dev/null +++ b/tests/testfiles/githubWorkflowRun.json @@ -0,0 +1,220 @@ +{ + "id": 9598566319, + "name": "db-tests", + "node_id": "WFR_kwLOBFIx288AAAACPB5_rw", + "head_branch": "fix-ui-tab", + "head_sha": "7ae95457156ea964402747ae263d5a2a7de48883", + "path": ".github/workflows/pull-db-tests.yml", + "display_title": "WIP: Fix tab performance", + "run_number": 20434, + "event": "pull_request", + "status": "completed", + "conclusion": "success", + "workflow_id": 56971384, + "check_suite_id": 25125296548, + "check_suite_node_id": "CS_kwDOBFIx288AAAAF2ZWZpA", + "url": "https://api.github.com/repos/go-gitea/gitea/actions/runs/9598566319", + "html_url": "https://github.com/go-gitea/gitea/actions/runs/9598566319", + "pull_requests": [], + "created_at": "2024-06-20T13:41:06Z", + "updated_at": "2024-06-20T14:10:02Z", + "actor": { + "login": "wxiaoguang", + "id": 2114189, + "node_id": "MDQ6VXNlcjIxMTQxODk=", + "avatar_url": "https://avatars.githubusercontent.com/u/2114189?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/wxiaoguang", + "html_url": "https://github.com/wxiaoguang", + "followers_url": "https://api.github.com/users/wxiaoguang/followers", + "following_url": "https://api.github.com/users/wxiaoguang/following{/other_user}", + "gists_url": "https://api.github.com/users/wxiaoguang/gists{/gist_id}", + "starred_url": "https://api.github.com/users/wxiaoguang/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/wxiaoguang/subscriptions", + "organizations_url": "https://api.github.com/users/wxiaoguang/orgs", + "repos_url": "https://api.github.com/users/wxiaoguang/repos", + "events_url": "https://api.github.com/users/wxiaoguang/events{/privacy}", + "received_events_url": "https://api.github.com/users/wxiaoguang/received_events", + "type": "User", + "site_admin": false + }, + "run_attempt": 1, + "referenced_workflows": [ + { + "path": "go-gitea/gitea/.github/workflows/files-changed.yml@d8d6749d313098583fc1d527ce8a4aafb81ca12d", + "sha": "d8d6749d313098583fc1d527ce8a4aafb81ca12d", + "ref": "refs/pull/31437/merge" + } + ], + "run_started_at": "2024-06-20T13:41:06Z", + "triggering_actor": { + "login": "wxiaoguang", + "id": 2114189, + "node_id": "MDQ6VXNlcjIxMTQxODk=", + "avatar_url": "https://avatars.githubusercontent.com/u/2114189?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/wxiaoguang", + "html_url": "https://github.com/wxiaoguang", + "followers_url": "https://api.github.com/users/wxiaoguang/followers", + "following_url": "https://api.github.com/users/wxiaoguang/following{/other_user}", + "gists_url": "https://api.github.com/users/wxiaoguang/gists{/gist_id}", + "starred_url": "https://api.github.com/users/wxiaoguang/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/wxiaoguang/subscriptions", + "organizations_url": "https://api.github.com/users/wxiaoguang/orgs", + "repos_url": "https://api.github.com/users/wxiaoguang/repos", + "events_url": "https://api.github.com/users/wxiaoguang/events{/privacy}", + "received_events_url": "https://api.github.com/users/wxiaoguang/received_events", + "type": "User", + "site_admin": false + }, + "jobs_url": "https://api.github.com/repos/go-gitea/gitea/actions/runs/9598566319/jobs", + "logs_url": "https://api.github.com/repos/go-gitea/gitea/actions/runs/9598566319/logs", + "check_suite_url": "https://api.github.com/repos/go-gitea/gitea/check-suites/25125296548", + "artifacts_url": "https://api.github.com/repos/go-gitea/gitea/actions/runs/9598566319/artifacts", + "cancel_url": "https://api.github.com/repos/go-gitea/gitea/actions/runs/9598566319/cancel", + "rerun_url": "https://api.github.com/repos/go-gitea/gitea/actions/runs/9598566319/rerun", + "previous_attempt_url": null, + "workflow_url": "https://api.github.com/repos/go-gitea/gitea/actions/workflows/56971384", + "head_commit": { + "id": "7ae95457156ea964402747ae263d5a2a7de48883", + "tree_id": "edb45bf6711cdcff1ee0347e330a0bd5b89996ec", + "message": "fix", + "timestamp": "2024-06-20T13:40:55Z", + "author": { "name": "wxiaoguang", "email": "wxiaoguang@gmail.com" }, + "committer": { "name": "wxiaoguang", "email": "wxiaoguang@gmail.com" } + }, + "repository": { + "id": 72495579, + "node_id": "MDEwOlJlcG9zaXRvcnk3MjQ5NTU3OQ==", + "name": "gitea", + "full_name": "go-gitea/gitea", + "private": false, + "owner": { + "login": "go-gitea", + "id": 12724356, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjEyNzI0MzU2", + "avatar_url": "https://avatars.githubusercontent.com/u/12724356?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/go-gitea", + "html_url": "https://github.com/go-gitea", + "followers_url": "https://api.github.com/users/go-gitea/followers", + "following_url": "https://api.github.com/users/go-gitea/following{/other_user}", + "gists_url": "https://api.github.com/users/go-gitea/gists{/gist_id}", + "starred_url": "https://api.github.com/users/go-gitea/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/go-gitea/subscriptions", + "organizations_url": "https://api.github.com/users/go-gitea/orgs", + "repos_url": "https://api.github.com/users/go-gitea/repos", + "events_url": "https://api.github.com/users/go-gitea/events{/privacy}", + "received_events_url": "https://api.github.com/users/go-gitea/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/go-gitea/gitea", + "description": "Git with a cup of tea! Painless self-hosted all-in-one software development service, including Git hosting, code review, team collaboration, package registry and CI/CD", + "fork": false, + "url": "https://api.github.com/repos/go-gitea/gitea", + "forks_url": "https://api.github.com/repos/go-gitea/gitea/forks", + "keys_url": "https://api.github.com/repos/go-gitea/gitea/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/go-gitea/gitea/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/go-gitea/gitea/teams", + "hooks_url": "https://api.github.com/repos/go-gitea/gitea/hooks", + "issue_events_url": "https://api.github.com/repos/go-gitea/gitea/issues/events{/number}", + "events_url": "https://api.github.com/repos/go-gitea/gitea/events", + "assignees_url": "https://api.github.com/repos/go-gitea/gitea/assignees{/user}", + "branches_url": "https://api.github.com/repos/go-gitea/gitea/branches{/branch}", + "tags_url": "https://api.github.com/repos/go-gitea/gitea/tags", + "blobs_url": "https://api.github.com/repos/go-gitea/gitea/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/go-gitea/gitea/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/go-gitea/gitea/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/go-gitea/gitea/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/go-gitea/gitea/statuses/{sha}", + "languages_url": "https://api.github.com/repos/go-gitea/gitea/languages", + "stargazers_url": "https://api.github.com/repos/go-gitea/gitea/stargazers", + "contributors_url": "https://api.github.com/repos/go-gitea/gitea/contributors", + "subscribers_url": "https://api.github.com/repos/go-gitea/gitea/subscribers", + "subscription_url": "https://api.github.com/repos/go-gitea/gitea/subscription", + "commits_url": "https://api.github.com/repos/go-gitea/gitea/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/go-gitea/gitea/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/go-gitea/gitea/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/go-gitea/gitea/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/go-gitea/gitea/contents/{+path}", + "compare_url": "https://api.github.com/repos/go-gitea/gitea/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/go-gitea/gitea/merges", + "archive_url": "https://api.github.com/repos/go-gitea/gitea/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/go-gitea/gitea/downloads", + "issues_url": "https://api.github.com/repos/go-gitea/gitea/issues{/number}", + "pulls_url": "https://api.github.com/repos/go-gitea/gitea/pulls{/number}", + "milestones_url": "https://api.github.com/repos/go-gitea/gitea/milestones{/number}", + "notifications_url": "https://api.github.com/repos/go-gitea/gitea/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/go-gitea/gitea/labels{/name}", + "releases_url": "https://api.github.com/repos/go-gitea/gitea/releases{/id}", + "deployments_url": "https://api.github.com/repos/go-gitea/gitea/deployments" + }, + "head_repository": { + "id": 398521154, + "node_id": "MDEwOlJlcG9zaXRvcnkzOTg1MjExNTQ=", + "name": "gitea", + "full_name": "wxiaoguang/gitea", + "private": false, + "owner": { + "login": "wxiaoguang", + "id": 2114189, + "node_id": "MDQ6VXNlcjIxMTQxODk=", + "avatar_url": "https://avatars.githubusercontent.com/u/2114189?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/wxiaoguang", + "html_url": "https://github.com/wxiaoguang", + "followers_url": "https://api.github.com/users/wxiaoguang/followers", + "following_url": "https://api.github.com/users/wxiaoguang/following{/other_user}", + "gists_url": "https://api.github.com/users/wxiaoguang/gists{/gist_id}", + "starred_url": "https://api.github.com/users/wxiaoguang/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/wxiaoguang/subscriptions", + "organizations_url": "https://api.github.com/users/wxiaoguang/orgs", + "repos_url": "https://api.github.com/users/wxiaoguang/repos", + "events_url": "https://api.github.com/users/wxiaoguang/events{/privacy}", + "received_events_url": "https://api.github.com/users/wxiaoguang/received_events", + "type": "User", + "site_admin": false + }, + "html_url": "https://github.com/wxiaoguang/gitea", + "description": "Git with a cup of tea, painless self-hosted git service", + "fork": true, + "url": "https://api.github.com/repos/wxiaoguang/gitea", + "forks_url": "https://api.github.com/repos/wxiaoguang/gitea/forks", + "keys_url": "https://api.github.com/repos/wxiaoguang/gitea/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/wxiaoguang/gitea/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/wxiaoguang/gitea/teams", + "hooks_url": "https://api.github.com/repos/wxiaoguang/gitea/hooks", + "issue_events_url": "https://api.github.com/repos/wxiaoguang/gitea/issues/events{/number}", + "events_url": "https://api.github.com/repos/wxiaoguang/gitea/events", + "assignees_url": "https://api.github.com/repos/wxiaoguang/gitea/assignees{/user}", + "branches_url": "https://api.github.com/repos/wxiaoguang/gitea/branches{/branch}", + "tags_url": "https://api.github.com/repos/wxiaoguang/gitea/tags", + "blobs_url": "https://api.github.com/repos/wxiaoguang/gitea/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/wxiaoguang/gitea/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/wxiaoguang/gitea/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/wxiaoguang/gitea/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/wxiaoguang/gitea/statuses/{sha}", + "languages_url": "https://api.github.com/repos/wxiaoguang/gitea/languages", + "stargazers_url": "https://api.github.com/repos/wxiaoguang/gitea/stargazers", + "contributors_url": "https://api.github.com/repos/wxiaoguang/gitea/contributors", + "subscribers_url": "https://api.github.com/repos/wxiaoguang/gitea/subscribers", + "subscription_url": "https://api.github.com/repos/wxiaoguang/gitea/subscription", + "commits_url": "https://api.github.com/repos/wxiaoguang/gitea/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/wxiaoguang/gitea/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/wxiaoguang/gitea/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/wxiaoguang/gitea/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/wxiaoguang/gitea/contents/{+path}", + "compare_url": "https://api.github.com/repos/wxiaoguang/gitea/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/wxiaoguang/gitea/merges", + "archive_url": "https://api.github.com/repos/wxiaoguang/gitea/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/wxiaoguang/gitea/downloads", + "issues_url": "https://api.github.com/repos/wxiaoguang/gitea/issues{/number}", + "pulls_url": "https://api.github.com/repos/wxiaoguang/gitea/pulls{/number}", + "milestones_url": "https://api.github.com/repos/wxiaoguang/gitea/milestones{/number}", + "notifications_url": "https://api.github.com/repos/wxiaoguang/gitea/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/wxiaoguang/gitea/labels{/name}", + "releases_url": "https://api.github.com/repos/wxiaoguang/gitea/releases{/id}", + "deployments_url": "https://api.github.com/repos/wxiaoguang/gitea/deployments" + } +} From 23b81014266728e3db1cb200a5cf46a212baed72 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sat, 22 Jun 2024 05:17:18 +0200 Subject: [PATCH 012/221] feat: add url parameter to /artifacts API --- Cargo.toml | 1 + src/app.rs | 20 ++++++++++++++++---- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index b4cbbc2..fdd21b8 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -25,6 +25,7 @@ axum = { version = "0.7.5", default-features = false, features = [ "http1", "http2", "json", + "query", "tokio", "tracing", ] } diff --git a/src/app.rs b/src/app.rs index cffecce..243a207 100644 --- a/src/app.rs +++ b/src/app.rs @@ -11,7 +11,7 @@ use std::{ use async_zip::tokio::read::ZipEntryReader; use axum::{ body::Body, - extract::{Host, Request, State}, + extract::{Host, Query as XQuery, Request, State}, http::{Response, Uri}, response::{IntoResponse, Redirect}, routing::{any, get, post}, @@ -78,6 +78,11 @@ struct FileQparams { viewer: Option, } +#[derive(Deserialize)] +struct UrlQuery { + url: Option, +} + #[derive(Deserialize)] struct PrCommentReq { url: String, @@ -591,11 +596,18 @@ impl App { async fn get_artifacts( State(state): State, Host(host): Host, + url_query: XQuery, ) -> Result, ErrorJson> { - let subdomain = util::get_subdomain(&host, &state.i.cfg.load().root_domain)?; - let query = ArtifactQuery::from_subdomain(subdomain, &state.i.cfg.load().site_aliases)?; + let query = match &url_query.url { + Some(url) => RunQuery::from_forge_url(url)?, + None => { + let subdomain = util::get_subdomain(&host, &state.i.cfg.load().root_domain)?; + ArtifactQuery::from_subdomain(subdomain, &state.i.cfg.load().site_aliases)?.into() + } + }; + state.i.cfg.check_filterlist(&query)?; - let artifacts = state.i.api.list(&query.into(), true).await?; + let artifacts = state.i.api.list(&query, true).await?; Ok(Response::builder().cache().json(&artifacts)?) } From 0d14ef61420874d19f8d6b1f51e484c6ba07b4e4 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sat, 22 Jun 2024 05:18:07 +0200 Subject: [PATCH 013/221] update README --- README.md | 190 +++++++++++++++++++++++++----- resources/screenshotPrComment.png | Bin 0 -> 20309 bytes 2 files changed, 159 insertions(+), 31 deletions(-) create mode 100644 resources/screenshotPrComment.png diff --git a/README.md b/README.md index d3458fd..2b9b2c8 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Artifactview -View CI build artifacts from Forgejo/Github using your web browser! +View CI build artifacts from Forgejo/GitHub using your web browser! Forgejo and GitHub's CI systems allow you to upload files and directories as [artifacts](https://github.com/actions/upload-artifact). These can be downloaded as zip @@ -69,12 +69,112 @@ You can install the Greasemonkey userscript from the link at the bottom of the h The script adds a "View artifact" link with an eye icon next to every CI artifact on both GitHub and Forgejo. -Additionally there is a custom GitHub/Forgejo action that automatically creates a comment -under each pull request with the preview links of all artifacts created by the latest -CI run. This way every collaborator to your project has easy access to the preview. +If you want to give every collaborator to your project easy access to previews, you can +use Artifactview to automatically create a pull request comments with links to the +artifacts. + +![Pull request comment](./resources/screenshotPrComment.png) + +To accomplish that, simply add this step to your CI workflow (after uploading the +artifacts). ```yaml -TODO: showcase action +- name: ๐Ÿ”— Artifactview PR comment + if: ${{ always() && github.event_name == 'pull_request' }} + run: | + curl -X POST https://av.thetadev.de/.well-known/api/prComment -H "Content-Type: application/json" --data "{\"url\": \"$GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID\", pr: ${{ github.event.number }}}" +``` + +## API + +Artifactview does have a HTTP API to access data about the CI artifacts. To make the API +available to every site without interfering with any paths from the artifacts, the +endpoints are located within the reserved `/.well-known/api` directory. + +### Get list of artifacts of a CI run + +`GET /.well-known/api/artifacts?url=` + +`GET -------.example.com/.well-known/api/artifacts` + +**Response** + +**Note:** the difference between `download_url` and `user_download_url` is that the +first one is used by the API client and the second one is shown to the user. +`user_download_url` is only set for GitHub artifacts. Forgejo does not have different +download URLs since it does not require authentication to download artifacts. + +```json +[ + { + "id": 1, + "name": "Example", + "size": 1523222, + "expired": false, + "download_url": "https://codeberg.org/thetadev/artifactview/actions/runs/28/artifacts/Example", + "user_download_url": null + } +] +``` + +### Get metadata of the current artifact + +`GET -------.example.com/.well-known/api/artifact` + +**Response** + +```json +{ + "id": 1, + "name": "Example", + "size": 1523222, + "expired": false, + "download_url": "https://codeberg.org/thetadev/artifactview/actions/runs/28/artifacts/Example", + "user_download_url": null +} +``` + +### Get all files from the artifact + +`GET -------.example.com/.well-known/api/files` + +**Response** + +```json +[ + { "name": "example.rs", "size": 406, "crc32": "2013120c" }, + { "name": "README.md", "size": 13060, "crc32": "61c692f0" } +] +``` + +### Create a pull request comment + +`POST /.well-known/api/prComment` + +Artifactview can create a comment under a pull request containing links to view the +artifacts. This way everyone looking at a project can easily access the artifact +previews. + +To use this feature, you need to setup an access token with the permission to create +comments for every code forge you want to use (more details in the section +[Access tokens](#access-tokens)). + +To prevent abuse and spamming, this endpoint is rate-limited and Artifactview will only +create comments after it verified that the workflow matches the given pull request and +the worflow is still running. + +| JSON parameter | Description | +| ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `url` (string) โ• | CI workflow URL
Example: https://codeberg.org/ThetaDev/artifactview/actions/runs/31 | +| `pr` (int) โ• | Pull request number | +| `recreate` (bool) | If set to true, the pull request comment will be deleted and recreated if it already exists. If set to false or omitted, the comment will be edited instead. | +| `title` (string) | Comment title (default: "Latest build artifacts") | +| `artifact_titles` (map) | Set custom titles for your artifacts.
Example: `{"Hello": "๐Ÿ  Hello World ;-)"}` | + +**Response** + +```json +{ "status": 200, "msg": "created comment #2183634497" } ``` ## Setup @@ -120,27 +220,55 @@ networks: Artifactview is configured using environment variables. -| Variable | Default | Description | -| ------------------------- | ----------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `PORT` | 3000 | HTTP port | -| `CACHE_DIR` | /tmp/artifactview | Temporary directory where to store the artifacts | -| `ROOT_DOMAIN` | localhost:3000 | Public hostname+port number under which artifactview is accessible. If this is configured incorrectly, artifactview will show the error message "host does not end with configured ROOT_DOMAIN" | -| `RUST_LOG` | info | Logging level | -| `NO_HTTPS` | false | Set to True if the website is served without HTTPS (used if testing artifactview without an ) | -| `MAX_ARTIFACT_SIZE` | 100000000 (100 MB) | Maximum size of the artifact zip file to be downloaded | -| `MAX_FILE_SIZE` | 100000000 (100 MB) | Maximum contained file size to be served | -| `MAX_FILE_COUNT` | 10000 | Maximum amount of files within a zip file | -| `MAX_AGE_H` | 12 | Maximum age in hours after which cached artifacts are deleted | -| `ZIP_TIMEOUT_MS` | 1000 | Maximum time in milliseconds for reading the index of a zip file. If this takes too long, the zip file is most likely excessively large or malicious (zip bomb) | -| `GITHUB_TOKEN` | - | GitHub API token for downloading artifacts. Using a fine-grained token with public read permissions is recommended | -| `MEM_CACHE_SIZE` | 50 | Artifactview keeps artifact metadata as well as the zip file indexes in memory to improve performance. The amount of cached items is adjustable. | -| `REAL_IP_HEADER` | - | Get the client IP address from a HTTP request header
If Artifactview is exposed to the network directly, this option has to be unset. If you are using a reverse proxy the proxy needs to be configured to send the actual client IP as a request header.
For most proxies this header is `x-forwarded-for`. | -| `LIMIT_ARTIFACTS_PER_MIN` | 5 | Limit the amount of downloaded artifacts per IP address and minute | -| `REPO_BLACKLIST` | - | List of sites/users/repos that can NOT be accessed. The blacklist takes precedence over the whitelist (repos included in both lists cannot be accessed)
Example: `github.com/evil-corp/world-destruction;codeberg.org/blackhat;example.org` | -| `REPO_WHITELIST` | - | List of sites/users/repos that can ONLY be accessed. If the whitelist is empty, it will be ignored and any repository can be accessed. Uses the same syntax as `REPO_BLACKLIST`. | -| `SITE_ALIASES` | - | Aliases for sites to make URLs shorter
Example: `gh => github.com;cb => codeberg.org` | -| `SUGGESTED_SITES` | codeberg.org; github.com; gitea.com | List of suggested code forges (host only, without https://, separated by `;`). If repo_whitelist is empty, this value is used for the matched sites in the userscript. The first value is used in the placeholder URL on the home page. | -| `VIEWER_MAX_SIZE` | 500000 | Maximum file size to be displayed using the viewer | +Note that some variables contain lists and maps of values. Lists need to have their +values separated with semicolons. Maps use an arrow `=>` between key and value, with +pairs separated by semicolons. + +Example list: `foo;bar`, example map: `foo=>f1;bar=>b1` + +| Variable | Default | Description | +| --------------------------- | ----------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `PORT` | 3000 | HTTP port | +| `CACHE_DIR` | /tmp/artifactview | Temporary directory where to store the artifacts | +| `ROOT_DOMAIN` | localhost:3000 | Public hostname+port number under which artifactview is accessible. If this is configured incorrectly, artifactview will show the error message "host does not end with configured ROOT_DOMAIN" | +| `RUST_LOG` | info | Logging level | +| `NO_HTTPS` | false | Set to True if the website is served without HTTPS (used if testing artifactview without an ) | +| `MAX_ARTIFACT_SIZE` | 100000000 (100 MB) | Maximum size of the artifact zip file to be downloaded | +| `MAX_FILE_SIZE` | 100000000 (100 MB) | Maximum contained file size to be served | +| `MAX_FILE_COUNT` | 10000 | Maximum amount of files within a zip file | +| `MAX_AGE_H` | 12 | Maximum age in hours after which cached artifacts are deleted | +| `ZIP_TIMEOUT_MS` | 1000 | Maximum time in milliseconds for reading the index of a zip file. If this takes too long, the zip file is most likely excessively large or malicious (zip bomb) | +| `GITHUB_TOKEN` | - | GitHub API token for downloading artifacts and creating PR comments. Using a fine-grained token with public read permissions is recommended | +| `FORGEJO_TOKENS` | - | Forgejo API tokens for creating PR comments
Example: `codeberg.org=>fc010f65348468d05e570806275528c936ce93a4` | +| `MEM_CACHE_SIZE` | 50 | Artifactview keeps artifact metadata as well as the zip file indexes in memory to improve performance. The amount of cached items is adjustable. | +| `REAL_IP_HEADER` | - | Get the client IP address from a HTTP request header
If Artifactview is exposed to the network directly, this option has to be unset. If you are using a reverse proxy the proxy needs to be configured to send the actual client IP as a request header.
For most proxies this header is `x-forwarded-for`. | +| `LIMIT_ARTIFACTS_PER_MIN` | 5 | Limit the amount of downloaded artifacts per IP address and minute to prevent excessive resource usage. | +| `LIMIT_PR_COMMENTS_PER_MIN` | 5 | Limit the amount of pull request comment requests per IP address and minute to prevent spamming. | +| `REPO_BLACKLIST` | - | List of sites/users/repos that can NOT be accessed. The blacklist takes precedence over the whitelist (repos included in both lists cannot be accessed)
Example: `github.com/evil-corp/world-destruction;codeberg.org/blackhat;example.org` | +| `REPO_WHITELIST` | - | List of sites/users/repos that can ONLY be accessed. If the whitelist is empty, it will be ignored and any repository can be accessed. Uses the same syntax as `REPO_BLACKLIST`. | +| `SITE_ALIASES` | - | Aliases for sites to make URLs shorter
Example: `gh => github.com;cb => codeberg.org` | +| `SUGGESTED_SITES` | codeberg.org; github.com; gitea.com | List of suggested code forges (host only, without https://, separated by `;`). If repo_whitelist is empty, this value is used for the matched sites in the userscript. The first value is used in the placeholder URL on the home page. | +| `VIEWER_MAX_SIZE` | 500000 | Maximum file size to be displayed using the viewer | + +### Access tokens + +GitHub does not allow downloading artifacts for public repositories for unauthenticated +users. So you need to setup an access token to use Artifactview with GitHub. These are +the permissions that need to be enabled: + +- Repository access: All repositories +- Repository permissions: Pull requests (Read and write) + +Forgejo does not require access tokens to download artifacts on public repositories, so +you only need to create a token if you want to use the `prComment`-API. In this case, +the token needs the following permissions: + +- Repository and Organization Access: Public only +- issue: Read and write +- user: Read (for determining own user ID) + +Note that if you are using Artifactview to create pull request comments, it is +recommended to create a second bot account instead of using your main account. ## Technical details @@ -154,8 +282,8 @@ Example: `https://github-com--theta-dev--example-project--4-11.example.com` The reason for using subdomains instead of URL paths is that many websites expect to be served from a separate subdomain and access resources using absolute paths. Using URLs like `example.com/github.com/theta-dev/example-project/4/11/path/to/file` would make the -application easier to host, but it would not be possible to simply preview a -React/Vue/Svelte web project. +application easier to host, but it would not be possible to preview a React/Vue/Svelte +web project. Since domains only allow letters, numbers and dashes but repository names allow dots and underscores, these escape sequences are used to access repositories with special @@ -187,7 +315,7 @@ website (like `.well-known/acme-challenge` for issuing TLS certificates), Artifa will serve no files from the `.well-known` folder. There is a configurable limit for both the maximum downloaded artifact size and the -maximum size of individual files to be served (100MB by default). Additionally there is +maximum size of individual files to be served (100 MB by default). Additionally there is a configurable timeout for the zip file indexing operation. These measures should -protect the server againt denial-of-service attacks like overfilling the server drive or -uploading zip bombs. +protect the server against denial-of-service attacks like overfilling the server drive +or uploading zip bombs. diff --git a/resources/screenshotPrComment.png b/resources/screenshotPrComment.png new file mode 100644 index 0000000000000000000000000000000000000000..68fcc669089ef1541031953e1bea7b38c4954512 GIT binary patch literal 20309 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
    u7hRNq)1BfNwLN=)2P}cR|oG7Pt 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 VNH5OI$Qxh3w=#POt~2#|@ego*FJS-x literal 0 HcmV?d00001 From c7ba9b25b3fac64e9677f09040aca9a9209e24a8 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sat, 22 Jun 2024 05:29:47 +0200 Subject: [PATCH 014/221] chore(release): release artifactview v0.4.0 --- CHANGELOG.md | 8 ++++++++ Cargo.lock | 2 +- Cargo.toml | 2 +- Justfile | 2 +- 4 files changed, 11 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f5bf17a..4ded0bd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. +## [v0.4.0](https://codeberg.org/ThetaDev/artifactview/compare/v0.3.1..v0.4.0) - 2024-06-22 + +### ๐Ÿš€ Features + +- Create PR comments - ([d0cdbf5](https://codeberg.org/ThetaDev/artifactview/commit/d0cdbf55a3a278ce21cab11885170e9f4a6d4094)) +- Add url parameter to /artifacts API - ([23b8101](https://codeberg.org/ThetaDev/artifactview/commit/23b81014266728e3db1cb200a5cf46a212baed72)) + + ## [v0.3.1](https://codeberg.org/ThetaDev/artifactview/compare/v0.3.0..v0.3.1) - 2024-06-19 ### ๐Ÿ› Bug Fixes diff --git a/Cargo.lock b/Cargo.lock index b444204..53d7dbd 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -141,7 +141,7 @@ dependencies = [ [[package]] name = "artifactview" -version = "0.3.1" +version = "0.4.0" dependencies = [ "async_zip", "axum", diff --git a/Cargo.toml b/Cargo.toml index fdd21b8..c8e32bc 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "artifactview" -version = "0.3.1" +version = "0.4.0" edition = "2021" authors = ["ThetaDev "] license = "MIT" diff --git a/Justfile b/Justfile index 29c63ca..14695cb 100644 --- a/Justfile +++ b/Justfile @@ -25,7 +25,7 @@ release: eval "git-cliff $CLIFF_ARGS --output '$CHANGELOG'" fi - git add "$CHANGELOG" + git add . git commit -m "chore(release): release $CRATE v$VERSION" awk 'BEGIN{RS="(^|\n)## [^\n]+\n*"} NR==2 { print }' "$CHANGELOG" | git tag -as -F - --cleanup whitespace "$TAG" From cd3167356944a9bebc22546d0321c2e963d7ac85 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sat, 22 Jun 2024 05:53:48 +0200 Subject: [PATCH 015/221] ci: add Artifactview PR comment --- .forgejo/workflows/ci.yaml | 4 ++++ README.md | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/.forgejo/workflows/ci.yaml b/.forgejo/workflows/ci.yaml index bc39c3d..2742fbb 100644 --- a/.forgejo/workflows/ci.yaml +++ b/.forgejo/workflows/ci.yaml @@ -25,6 +25,10 @@ jobs: with: name: test path: target/nextest/ci/junit.xml + - name: ๐Ÿ”— Artifactview PR comment + if: ${{ always() && github.event_name == 'pull_request' }} + run: | + curl -X POST https://av.thetadev.de/.well-known/api/prComment -H "Content-Type: application/json" --data "{\"url\": \"$GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID\", \"pr\": ${{ github.event.number }}, \"artifact_titles\": {\"test\":\"๐Ÿงช Test report\"}}" release: runs-on: cimaster-latest diff --git a/README.md b/README.md index 2b9b2c8..dad9513 100644 --- a/README.md +++ b/README.md @@ -82,7 +82,7 @@ artifacts). - name: ๐Ÿ”— Artifactview PR comment if: ${{ always() && github.event_name == 'pull_request' }} run: | - curl -X POST https://av.thetadev.de/.well-known/api/prComment -H "Content-Type: application/json" --data "{\"url\": \"$GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID\", pr: ${{ github.event.number }}}" + curl -X POST https://av.thetadev.de/.well-known/api/prComment -H "Content-Type: application/json" --data "{\"url\": \"$GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID\", \"pr\": ${{ github.event.number }}}" ``` ## API From 0f573de3e4c77644f99d38c633bf18fb7591b091 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sat, 22 Jun 2024 05:57:59 +0200 Subject: [PATCH 016/221] ci: split workflow into CI and Release --- .forgejo/workflows/ci.yaml | 49 ++----------------------------- .forgejo/workflows/release.yaml | 51 +++++++++++++++++++++++++++++++++ 2 files changed, 53 insertions(+), 47 deletions(-) create mode 100644 .forgejo/workflows/release.yaml diff --git a/.forgejo/workflows/ci.yaml b/.forgejo/workflows/ci.yaml index 2742fbb..f6848f4 100644 --- a/.forgejo/workflows/ci.yaml +++ b/.forgejo/workflows/ci.yaml @@ -1,6 +1,8 @@ name: CI on: push: + branches: + - "main" pull_request: jobs: @@ -29,50 +31,3 @@ jobs: if: ${{ always() && github.event_name == 'pull_request' }} run: | curl -X POST https://av.thetadev.de/.well-known/api/prComment -H "Content-Type: application/json" --data "{\"url\": \"$GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID\", \"pr\": ${{ github.event.number }}, \"artifact_titles\": {\"test\":\"๐Ÿงช Test report\"}}" - - release: - runs-on: cimaster-latest - needs: test - if: ${{ startsWith(github.ref, 'refs/tags/v') }} - steps: - - name: ๐Ÿ‘๏ธ Checkout repository - uses: actions/checkout@v4 - - - name: โš’๏ธ Build application - run: | - PKG_CONFIG_SYSROOT_DIR=/usr/x86_64-linux-gnu cargo build --release --target x86_64-unknown-linux-gnu - PKG_CONFIG_SYSROOT_DIR=/usr/aarch64-linux-gnu cargo build --release --target aarch64-unknown-linux-gnu - - name: ๐Ÿ‹ Build docker image - uses: https://code.thetadev.de/ThetaDev/action-kaniko@v1 - with: - image: thetadev256/artifactview - username: thetadev256 - password: ${{ secrets.DOCKER_TOKEN }} - tag: ${{ github.ref_name }} - tag_with_latest: ${{ startsWith(github.ref, 'refs/tags/v') }} - platforms: "linux/amd64,linux/arm64" - - - name: Prepare release - if: ${{ startsWith(github.ref, 'refs/tags/v') }} - run: | - mkdir dist - tar -cJf dist/artifactview-x86_64-${{ github.ref_name }}.tar.xz -C target/x86_64-unknown-linux-gnu/release artifactview - tar -cJf dist/artifactview-aarch64-${{ github.ref_name }}.tar.xz -C target/aarch64-unknown-linux-gnu/release artifactview - - { - echo 'CHANGELOG<> "$GITHUB_ENV" - - - name: ๐ŸŽ‰ Publish release - if: ${{ startsWith(github.ref, 'refs/tags/v') }} - uses: https://gitea.com/actions/release-action@main - with: - title: "artifactview ${{ github.ref_name }}" - body: "${{ env.CHANGELOG }}" - files: dist/* - - - name: ๐Ÿš€ Deploy to server - run: | - curl -s -H "Authorization: Bearer ${{ secrets.THETADEV_DE_WATCHTOWER_TOKEN }}" https://watchtower.thetadev.de/v1/update diff --git a/.forgejo/workflows/release.yaml b/.forgejo/workflows/release.yaml new file mode 100644 index 0000000..0b3409a --- /dev/null +++ b/.forgejo/workflows/release.yaml @@ -0,0 +1,51 @@ +name: Release +on: + push: + tags: + - "v*" + +jobs: + release: + runs-on: cimaster-latest + steps: + - name: ๐Ÿ‘๏ธ Checkout repository + uses: actions/checkout@v4 + + - name: โš’๏ธ Build application + run: | + PKG_CONFIG_SYSROOT_DIR=/usr/x86_64-linux-gnu cargo build --release --target x86_64-unknown-linux-gnu + PKG_CONFIG_SYSROOT_DIR=/usr/aarch64-linux-gnu cargo build --release --target aarch64-unknown-linux-gnu + - name: ๐Ÿ‹ Build docker image + uses: https://code.thetadev.de/ThetaDev/action-kaniko@v1 + with: + image: thetadev256/artifactview + username: thetadev256 + password: ${{ secrets.DOCKER_TOKEN }} + tag: ${{ github.ref_name }} + tag_with_latest: ${{ startsWith(github.ref, 'refs/tags/v') }} + platforms: "linux/amd64,linux/arm64" + + - name: Prepare release + if: ${{ startsWith(github.ref, 'refs/tags/v') }} + run: | + mkdir dist + tar -cJf dist/artifactview-x86_64-${{ github.ref_name }}.tar.xz -C target/x86_64-unknown-linux-gnu/release artifactview + tar -cJf dist/artifactview-aarch64-${{ github.ref_name }}.tar.xz -C target/aarch64-unknown-linux-gnu/release artifactview + + { + echo 'CHANGELOG<> "$GITHUB_ENV" + + - name: ๐ŸŽ‰ Publish release + if: ${{ startsWith(github.ref, 'refs/tags/v') }} + uses: https://gitea.com/actions/release-action@main + with: + title: "artifactview ${{ github.ref_name }}" + body: "${{ env.CHANGELOG }}" + files: dist/* + + - name: ๐Ÿš€ Deploy to server + run: | + curl -s -H "Authorization: Bearer ${{ secrets.THETADEV_DE_WATCHTOWER_TOKEN }}" https://watchtower.thetadev.de/v1/update From 5f3160e331ca9bc7ba6e55a2fb3c364a775af75f Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sat, 22 Jun 2024 06:13:54 +0200 Subject: [PATCH 017/221] ci: curl: fail on error --- .forgejo/workflows/ci.yaml | 2 +- .forgejo/workflows/release.yaml | 2 +- README.md | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.forgejo/workflows/ci.yaml b/.forgejo/workflows/ci.yaml index f6848f4..d4edb00 100644 --- a/.forgejo/workflows/ci.yaml +++ b/.forgejo/workflows/ci.yaml @@ -30,4 +30,4 @@ jobs: - name: ๐Ÿ”— Artifactview PR comment if: ${{ always() && github.event_name == 'pull_request' }} run: | - curl -X POST https://av.thetadev.de/.well-known/api/prComment -H "Content-Type: application/json" --data "{\"url\": \"$GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID\", \"pr\": ${{ github.event.number }}, \"artifact_titles\": {\"test\":\"๐Ÿงช Test report\"}}" + curl -SsL --fail-with-body -X POST https://av.thetadev.de/.well-known/api/prComment -H "Content-Type: application/json" --data "{\"url\": \"$GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID\", \"pr\": ${{ github.event.number }}, \"artifact_titles\": {\"test\":\"๐Ÿงช Test report\"}}" diff --git a/.forgejo/workflows/release.yaml b/.forgejo/workflows/release.yaml index 0b3409a..daccbc4 100644 --- a/.forgejo/workflows/release.yaml +++ b/.forgejo/workflows/release.yaml @@ -48,4 +48,4 @@ jobs: - name: ๐Ÿš€ Deploy to server run: | - curl -s -H "Authorization: Bearer ${{ secrets.THETADEV_DE_WATCHTOWER_TOKEN }}" https://watchtower.thetadev.de/v1/update + curl -SsL --fail-with-body -H "Authorization: Bearer ${{ secrets.THETADEV_DE_WATCHTOWER_TOKEN }}" https://watchtower.thetadev.de/v1/update diff --git a/README.md b/README.md index dad9513..bc88649 100644 --- a/README.md +++ b/README.md @@ -82,7 +82,7 @@ artifacts). - name: ๐Ÿ”— Artifactview PR comment if: ${{ always() && github.event_name == 'pull_request' }} run: | - curl -X POST https://av.thetadev.de/.well-known/api/prComment -H "Content-Type: application/json" --data "{\"url\": \"$GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID\", \"pr\": ${{ github.event.number }}}" + curl -SsL --fail-with-body -X POST https://av.thetadev.de/.well-known/api/prComment -H "Content-Type: application/json" --data "{\"url\": \"$GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID\", \"pr\": ${{ github.event.number }}}" ``` ## API From 220c3767e098982d2d4625eb0f24c36a2a98ea6b Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sat, 22 Jun 2024 04:57:21 +0000 Subject: [PATCH 018/221] ci: fix requesting PR comment Reviewed-on: https://codeberg.org/ThetaDev/artifactview/pulls/1 Co-authored-by: ThetaDev Co-committed-by: ThetaDev --- .forgejo/workflows/ci.yaml | 4 ++- Cargo.lock | 54 +++++++++++++++++++------------------- README.md | 2 +- 3 files changed, 31 insertions(+), 29 deletions(-) diff --git a/.forgejo/workflows/ci.yaml b/.forgejo/workflows/ci.yaml index d4edb00..a3da3bf 100644 --- a/.forgejo/workflows/ci.yaml +++ b/.forgejo/workflows/ci.yaml @@ -30,4 +30,6 @@ jobs: - name: ๐Ÿ”— Artifactview PR comment if: ${{ always() && github.event_name == 'pull_request' }} run: | - curl -SsL --fail-with-body -X POST https://av.thetadev.de/.well-known/api/prComment -H "Content-Type: application/json" --data "{\"url\": \"$GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID\", \"pr\": ${{ github.event.number }}, \"artifact_titles\": {\"test\":\"๐Ÿงช Test report\"}}" + echo "Run: $GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_NUMBER" + echo "Pull: ${{ github.event.number }}" + curl -SsL --fail-with-body -w "\n" -X POST https://av.thetadev.de/.well-known/api/prComment -H "Content-Type: application/json" --data "{\"url\": \"$GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_NUMBER\", \"pr\": ${{ github.event.number }}, \"artifact_titles\": {\"test\":\"๐Ÿงช Test report\"}}" diff --git a/Cargo.lock b/Cargo.lock index 53d7dbd..c3e17ad 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -219,7 +219,7 @@ checksum = "c6fa2087f2753a7da8cc1c0dbfcf89579dd57458e36769de5ac750b4671737ca" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.67", ] [[package]] @@ -653,7 +653,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331" dependencies = [ "quote", - "syn 2.0.66", + "syn 2.0.67", ] [[package]] @@ -677,7 +677,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.66", + "syn 2.0.67", ] [[package]] @@ -688,7 +688,7 @@ checksum = "733cabb43482b1a1b53eee8583c2b9e8684d592215ea83efd305dd31bc2f0178" dependencies = [ "darling_core", "quote", - "syn 2.0.66", + "syn 2.0.67", ] [[package]] @@ -738,7 +738,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.67", ] [[package]] @@ -748,7 +748,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "206868b8242f27cecce124c19fd88157fbd0dd334df2587f36417bafbc85097b" dependencies = [ "derive_builder_core", - "syn 2.0.66", + "syn 2.0.67", ] [[package]] @@ -761,7 +761,7 @@ dependencies = [ "proc-macro2", "quote", "rustc_version", - "syn 2.0.66", + "syn 2.0.67", ] [[package]] @@ -997,7 +997,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.67", ] [[package]] @@ -1455,9 +1455,9 @@ dependencies = [ [[package]] name = "lazy_static" -version = "1.4.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" @@ -1721,7 +1721,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.67", ] [[package]] @@ -1871,7 +1871,7 @@ dependencies = [ "phf_shared 0.11.2", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.67", ] [[package]] @@ -1909,7 +1909,7 @@ checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.67", ] [[package]] @@ -1985,9 +1985,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.85" +version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22244ce15aa966053a896d1accb3a6e68469b97c7f33f284b99f0d576879fc23" +checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" dependencies = [ "unicode-ident", ] @@ -2299,7 +2299,7 @@ dependencies = [ "regex", "relative-path", "rustc_version", - "syn 2.0.66", + "syn 2.0.67", "unicode-ident", ] @@ -2568,7 +2568,7 @@ checksum = "500cbc0ebeb6f46627f50f3f5811ccf6bf00643be300b4c3eabc0ef55dc5b5ba" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.67", ] [[package]] @@ -2764,9 +2764,9 @@ checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" [[package]] name = "subtle" -version = "2.5.0" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" +checksum = "0d0208408ba0c3df17ed26eb06992cb1a1268d41b2c0e12e65203fbe3972cee5" [[package]] name = "syn" @@ -2781,9 +2781,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.66" +version = "2.0.67" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c42f3f41a2de00b01c0aaad383c5a45241efc8b2d1eda5661812fda5f3cdcff5" +checksum = "ff8655ed1d86f3af4ee3fd3263786bc14245ad17c4c7e85ba7187fb3ae028c90" dependencies = [ "proc-macro2", "quote", @@ -2868,7 +2868,7 @@ checksum = "46c3384250002a6d5af4d114f2845d37b57521033f30d5c3f46c4d70e1197533" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.67", ] [[package]] @@ -2954,7 +2954,7 @@ checksum = "5f5ae998a069d4b5aba8ee9dad856af7d520c3699e6159b185c2acd48155d39a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.67", ] [[package]] @@ -3083,7 +3083,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.67", ] [[package]] @@ -3364,7 +3364,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.67", "wasm-bindgen-shared", ] @@ -3398,7 +3398,7 @@ checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.67", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -3772,7 +3772,7 @@ checksum = "15e934569e47891f7d9411f1a451d947a60e000ab3bd24fbb970f000387d1b3b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.67", ] [[package]] diff --git a/README.md b/README.md index bc88649..f12acff 100644 --- a/README.md +++ b/README.md @@ -82,7 +82,7 @@ artifacts). - name: ๐Ÿ”— Artifactview PR comment if: ${{ always() && github.event_name == 'pull_request' }} run: | - curl -SsL --fail-with-body -X POST https://av.thetadev.de/.well-known/api/prComment -H "Content-Type: application/json" --data "{\"url\": \"$GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID\", \"pr\": ${{ github.event.number }}}" + curl -SsL --fail-with-body -w "\n" -X POST https://av.thetadev.de/.well-known/api/prComment -H "Content-Type: application/json" --data "{\"url\": \"$GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_NUMBER\", \"pr\": ${{ github.event.number }}}" ``` ## API From f94cdcbd1fec5474145e845a8673470a174bf6f5 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sat, 22 Jun 2024 06:59:15 +0200 Subject: [PATCH 019/221] fix: return correct status code on API errors --- src/util.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/util.rs b/src/util.rs index bdd198c..4fa6dba 100644 --- a/src/util.rs +++ b/src/util.rs @@ -289,7 +289,7 @@ impl From for ErrorJson { impl IntoResponse for ErrorJson { fn into_response(self) -> Response { - Response::builder().json(&self).unwrap() + Response::builder().status(self.status).json(&self).unwrap() } } From 6ae7520111469b04764115ccb5eeb3b756a4572e Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sat, 22 Jun 2024 16:25:47 +0200 Subject: [PATCH 020/221] feat: improved PR comment format, add `artifact_paths` parameter --- README.md | 1 + src/app.rs | 157 ++++++++++++------ ...rtifactview__app__tests__pr_comment_1.snap | 6 +- ...rtifactview__app__tests__pr_comment_2.snap | 8 +- ...rtifactview__app__tests__pr_comment_3.snap | 10 +- 5 files changed, 119 insertions(+), 63 deletions(-) diff --git a/README.md b/README.md index f12acff..1e7e6cc 100644 --- a/README.md +++ b/README.md @@ -170,6 +170,7 @@ the worflow is still running. | `recreate` (bool) | If set to true, the pull request comment will be deleted and recreated if it already exists. If set to false or omitted, the comment will be edited instead. | | `title` (string) | Comment title (default: "Latest build artifacts") | | `artifact_titles` (map) | Set custom titles for your artifacts.
    Example: `{"Hello": "๐Ÿ  Hello World ;-)"}` | +| `artifact_paths` (map) | Set custom paths for your artifacts if you want the links to point to a specific file (e.g. a test report).
    Example: `{"Test": "/junit.xml?viewer=1"}` | **Response** diff --git a/src/app.rs b/src/app.rs index 243a207..b34ae4e 100644 --- a/src/app.rs +++ b/src/app.rs @@ -1,4 +1,5 @@ use std::{ + borrow::Cow, collections::{BTreeMap, HashMap}, fmt::Write, net::{IpAddr, SocketAddr}, @@ -85,13 +86,27 @@ struct UrlQuery { #[derive(Deserialize)] struct PrCommentReq { + /// Workflow run URL url: String, + /// Pull request number pr: u64, + /// If set to true, it will delete the previous PR comment and create a new one instead + /// of updating it #[serde(default)] recreate: bool, + /// Comment title + /// + /// Default: "๐Ÿ‘๏ธ Latest build artifacts" title: Option, + /// Map of custom artifact titles #[serde(default)] artifact_titles: HashMap, + /// Map of custom artifact paths + /// + /// If you want the artifact links in the comment to point to a specific file in the + /// artifact (e.g. a test report), you can set a custom path for the artifact + #[serde(default)] + artifact_paths: HashMap, } const DATE_FORMAT: &[time::format_description::FormatItem] = @@ -671,13 +686,13 @@ impl App { ); } if run.done { - return Err(Error::BadRequest("workflow is not running".into()).into()); + return Err(Error::BadRequest("workflow run is not running".into()).into()); } if let Some(pr_number) = run.pr_number { if pr_number != req.pr { return Err(Error::BadRequest( format!( - "workflow was triggered by pr#{}, expected: {}", + "workflow run was triggered by pr#{}, expected: {}", pr_number, req.pr ) .into(), @@ -697,15 +712,16 @@ impl App { Err(e) => return Err(e.into()), }; let old_comment = state.i.api.find_comment(query.as_ref(), req.pr).await?; - let content = pr_comment_text( - &query, - old_comment.as_ref().map(|c| c.body.as_str()), - &run, - &artifacts, - req.title.as_deref(), - &req.artifact_titles, - &state.i.cfg, - ); + let content = pr_comment_text(PrCommentTextParams { + query: &query, + old_comment: old_comment.as_ref().map(|c| c.body.as_str()), + run: &run, + artifacts: &artifacts, + title: req.title.as_deref(), + artifact_titles: &req.artifact_titles, + artifact_paths: &req.artifact_paths, + cfg: &state.i.cfg, + }); let c_id = state .i @@ -738,7 +754,7 @@ impl App { .typed_header(headers::ContentType::from(mime::TEXT_CSS)) .cache_immutable(); - // Dont serve compressed stylesheets in debug mode to allow live changes + // Don't serve compressed stylesheets in debug mode to allow live changes #[cfg(not(debug_assertions))] if util::accepts_gzip(hdrs) { return Ok(resp @@ -812,23 +828,27 @@ fn path_components( path_components } +struct PrCommentTextParams<'a> { + query: &'a RunQuery, + old_comment: Option<&'a str>, + run: &'a WorkflowRun, + artifacts: &'a [Artifact], + title: Option<&'a str>, + artifact_titles: &'a HashMap, + artifact_paths: &'a HashMap, + cfg: &'a Config, +} + /// Build pull request comment text #[allow(clippy::assigning_clones)] -fn pr_comment_text( - query: &RunQuery, - old_comment: Option<&str>, - run: &WorkflowRun, - artifacts: &[Artifact], - title: Option<&str>, - artifact_titles: &HashMap, - cfg: &Config, -) -> String { - let mut content = format!("### {} ", title.unwrap_or("Latest build artifacts")); +fn pr_comment_text(p: PrCommentTextParams) -> String { + let query = p.query; + let mut content = "### ".to_owned(); let mut prevln = "- ".to_owned(); let mut prev_builds = None; let mut np_content = None; - if let Some(old_comment) = old_comment { + if let Some(old_comment) = p.old_comment { prev_builds = util::extract_delim(old_comment, "", ""); } @@ -836,7 +856,7 @@ fn pr_comment_text( let write_commit = |s: &mut String, sha: &str| { _ = write!( s, - "[[{}](https://{}/{}/{}/commit/{})]", + "[{}](https://{}/{}/{}/commit/{})", &sha[..10], query.host, query.user, @@ -845,44 +865,75 @@ fn pr_comment_text( ); }; - write_commit(&mut content, &run.head_sha); - write_commit(&mut prevln, &run.head_sha); - _ = content.write_str("\n\n"); - - for a in artifacts.iter().filter(|a| !a.expired) { + let write_link_icon = |s: &mut String, title: &str, href: &str| { // Move leading emoji into a prefix variable since including them in the link does not look good - let mut name_pfx = String::new(); - let mut name = artifact_titles.get(&a.name).unwrap_or(&a.name).to_owned(); - if let Some((i, c)) = name + let mut title_pfx = String::new(); + let mut title = Cow::Borrowed(title); + if let Some((i, c)) = title .char_indices() - .find(|(_, c)| !unic_emoji_char::is_emoji(*c)) + // Some emoji use variation selectors that are not included in is_emoji + .find(|(_, c)| !unic_emoji_char::is_emoji(*c) && !('\u{fe00}'..='\u{fe0f}').contains(c)) { if i > 0 && c == ' ' { - name[..i + 1].clone_into(&mut name_pfx); - name = name[i + 1..].to_owned(); + title[..i + 1].clone_into(&mut title_pfx); + title = title[i + 1..].to_owned().into(); } } - let url = cfg.url_with_subdomain(&query.subdomain_with_artifact(a.id)); + _ = write!( + s, + r#"{title_pfx}{title}"#, + ); + }; + + // Comment title + let run_url = query.forge_url(); + let artifacts_url = format!("{}/?url={}", p.cfg.main_url(), run_url); + write_link_icon( + &mut content, + p.title.unwrap_or("๐Ÿ‘๏ธ Latest build artifacts"), + &artifacts_url, + ); + _ = write!(&mut content, " (Run [#{}]({}), ", query.run, run_url); + write_commit(&mut content, &p.run.head_sha); + _ = content.write_str(")\n\n"); + + // Previous run line + _ = write!(&mut prevln, "[#{}]({}) [", query.run, run_url); + write_commit(&mut prevln, &p.run.head_sha); + _ = write!(&mut prevln, "] [Artifacts]({artifacts_url}): "); + + for a in p.artifacts.iter().filter(|a| !a.expired) { + let mut url = p + .cfg + .url_with_subdomain(&query.subdomain_with_artifact(a.id)); // Do not process the same run twice if np_content.as_ref().is_some_and(|c| c.contains(&url)) { np_content = None; } - _ = writeln!( + if let Some(path) = p.artifact_paths.get(&a.name) { + url += path; + } + + write_link_icon( &mut content, - r#"{}{}
    "#, - name_pfx, url, name, + p.artifact_titles.get(&a.name).unwrap_or(&a.name), + &url, ); + _ = content.write_str("
    \n"); _ = write!( &mut prevln, - r#" {},"#, + r#" `{}`,"#, url, a.name ); } - prevln = prevln.trim_matches([' ', ',']).to_owned(); - if let Some(date_started) = &run.date_started { + if prevln.ends_with(',') { + prevln.pop(); + } + + if let Some(date_started) = &p.run.date_started { _ = write!( &mut prevln, " ({} UTC)", @@ -953,6 +1004,9 @@ mod tests { ]; let mut artifact_titles = HashMap::new(); artifact_titles.insert("Hello".to_owned(), "๐Ÿ  Hello World ;-)".to_owned()); + let mut artifact_paths = HashMap::new(); + artifact_paths.insert("Test".to_owned(), "/junit.xml?viewer=1".to_owned()); + let cfg = Config::default(); let footer = format!("generated by [Artifactview {VERSION}](https://codeberg.org/ThetaDev/artifactview)"); @@ -967,15 +1021,16 @@ mod tests { date_started: Some(datetime!(2024-06-15 15:30 UTC).replace_hour(i).unwrap()), done: false, }; - let comment = pr_comment_text( - &query, - old_comment.as_deref(), - &run, - &artifacts, - None, - &artifact_titles, - &cfg, - ); + let comment = pr_comment_text(PrCommentTextParams { + query: &query, + old_comment: old_comment.as_deref(), + run: &run, + artifacts: &artifacts, + title: None, + artifact_titles: &artifact_titles, + artifact_paths: &artifact_paths, + cfg: &cfg, + }); let res = comment.replace(&footer, ""); // Remove footer since it depends on the version insta::assert_snapshot!(format!("pr_comment_{i}"), res); diff --git a/src/snapshots/artifactview__app__tests__pr_comment_1.snap b/src/snapshots/artifactview__app__tests__pr_comment_1.snap index d86a280..ab54b32 100644 --- a/src/snapshots/artifactview__app__tests__pr_comment_1.snap +++ b/src/snapshots/artifactview__app__tests__pr_comment_1.snap @@ -2,8 +2,8 @@ source: src/app.rs expression: res --- -### Latest build artifacts [[15eed48a83](https://code.thetadev.de/thetadev/test-actions/commit/15eed48a8382513147a949117ef4aa659989d397)] +### ๐Ÿ‘๏ธ Latest build artifacts (Run [#1](https://code.thetadev.de/thetadev/test-actions/actions/runs/1), [15eed48a83](https://code.thetadev.de/thetadev/test-actions/commit/15eed48a8382513147a949117ef4aa659989d397)) ๐Ÿ  Hello World ;-)
    -Test
    - +Test
    + diff --git a/src/snapshots/artifactview__app__tests__pr_comment_2.snap b/src/snapshots/artifactview__app__tests__pr_comment_2.snap index 8d54b0d..fd29a42 100644 --- a/src/snapshots/artifactview__app__tests__pr_comment_2.snap +++ b/src/snapshots/artifactview__app__tests__pr_comment_2.snap @@ -2,13 +2,13 @@ source: src/app.rs expression: res --- -### Latest build artifacts [[25eed48a83](https://code.thetadev.de/thetadev/test-actions/commit/25eed48a8382513147a949117ef4aa659989d397)] +### ๐Ÿ‘๏ธ Latest build artifacts (Run [#2](https://code.thetadev.de/thetadev/test-actions/actions/runs/2), [25eed48a83](https://code.thetadev.de/thetadev/test-actions/commit/25eed48a8382513147a949117ef4aa659989d397)) ๐Ÿ  Hello World ;-)
    -Test
    +Test
    Previous builds -- [[15eed48a83](https://code.thetadev.de/thetadev/test-actions/commit/15eed48a8382513147a949117ef4aa659989d397)] Hello, Test (15.06.2024 01:30:00 UTC) - +- [#1](https://code.thetadev.de/thetadev/test-actions/actions/runs/1) [[15eed48a83](https://code.thetadev.de/thetadev/test-actions/commit/15eed48a8382513147a949117ef4aa659989d397)] [Artifacts](https://localhost:3000/?url=https://code.thetadev.de/thetadev/test-actions/actions/runs/1): `Hello`, `Test` (15.06.2024 01:30:00 UTC) +
    diff --git a/src/snapshots/artifactview__app__tests__pr_comment_3.snap b/src/snapshots/artifactview__app__tests__pr_comment_3.snap index 9cfbd08..0fad38f 100644 --- a/src/snapshots/artifactview__app__tests__pr_comment_3.snap +++ b/src/snapshots/artifactview__app__tests__pr_comment_3.snap @@ -2,14 +2,14 @@ source: src/app.rs expression: res --- -### Latest build artifacts [[35eed48a83](https://code.thetadev.de/thetadev/test-actions/commit/35eed48a8382513147a949117ef4aa659989d397)] +### ๐Ÿ‘๏ธ Latest build artifacts (Run [#3](https://code.thetadev.de/thetadev/test-actions/actions/runs/3), [35eed48a83](https://code.thetadev.de/thetadev/test-actions/commit/35eed48a8382513147a949117ef4aa659989d397)) ๐Ÿ  Hello World ;-)
    -Test
    +Test
    Previous builds -- [[15eed48a83](https://code.thetadev.de/thetadev/test-actions/commit/15eed48a8382513147a949117ef4aa659989d397)] Hello, Test (15.06.2024 01:30:00 UTC) -- [[25eed48a83](https://code.thetadev.de/thetadev/test-actions/commit/25eed48a8382513147a949117ef4aa659989d397)] Hello, Test (15.06.2024 02:30:00 UTC) - +- [#1](https://code.thetadev.de/thetadev/test-actions/actions/runs/1) [[15eed48a83](https://code.thetadev.de/thetadev/test-actions/commit/15eed48a8382513147a949117ef4aa659989d397)] [Artifacts](https://localhost:3000/?url=https://code.thetadev.de/thetadev/test-actions/actions/runs/1): `Hello`, `Test` (15.06.2024 01:30:00 UTC) +- [#2](https://code.thetadev.de/thetadev/test-actions/actions/runs/2) [[25eed48a83](https://code.thetadev.de/thetadev/test-actions/commit/25eed48a8382513147a949117ef4aa659989d397)] [Artifacts](https://localhost:3000/?url=https://code.thetadev.de/thetadev/test-actions/actions/runs/2): `Hello`, `Test` (15.06.2024 02:30:00 UTC) +
    From 14bceaa2c6a9c67a681abe053ea22b9f62646503 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sat, 22 Jun 2024 16:29:53 +0200 Subject: [PATCH 021/221] chore(release): release artifactview v0.4.1 --- CHANGELOG.md | 11 +++++++++++ Cargo.lock | 2 +- Cargo.toml | 2 +- 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4ded0bd..c4bfedf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,17 @@ All notable changes to this project will be documented in this file. +## [v0.4.1](https://codeberg.org/ThetaDev/artifactview/compare/v0.4.0..v0.4.1) - 2024-06-22 + +### ๐Ÿš€ Features + +- Improved PR comment format, add `artifact_paths` parameter - ([6ae7520](https://codeberg.org/ThetaDev/artifactview/commit/6ae7520111469b04764115ccb5eeb3b756a4572e)) + +### ๐Ÿ› Bug Fixes + +- Return correct status code on API errors - ([f94cdcb](https://codeberg.org/ThetaDev/artifactview/commit/f94cdcbd1fec5474145e845a8673470a174bf6f5)) + + ## [v0.4.0](https://codeberg.org/ThetaDev/artifactview/compare/v0.3.1..v0.4.0) - 2024-06-22 ### ๐Ÿš€ Features diff --git a/Cargo.lock b/Cargo.lock index c3e17ad..c778b5d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -141,7 +141,7 @@ dependencies = [ [[package]] name = "artifactview" -version = "0.4.0" +version = "0.4.1" dependencies = [ "async_zip", "axum", diff --git a/Cargo.toml b/Cargo.toml index c8e32bc..480de16 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "artifactview" -version = "0.4.0" +version = "0.4.1" edition = "2021" authors = ["ThetaDev "] license = "MIT" From 746f29fd2064b3b2f88af8f7dd056428b356373f Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sat, 22 Jun 2024 16:35:53 +0200 Subject: [PATCH 022/221] ci: artifactview pr comment: add artifact_paths --- .forgejo/workflows/ci.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.forgejo/workflows/ci.yaml b/.forgejo/workflows/ci.yaml index a3da3bf..e2e258e 100644 --- a/.forgejo/workflows/ci.yaml +++ b/.forgejo/workflows/ci.yaml @@ -32,4 +32,4 @@ jobs: run: | echo "Run: $GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_NUMBER" echo "Pull: ${{ github.event.number }}" - curl -SsL --fail-with-body -w "\n" -X POST https://av.thetadev.de/.well-known/api/prComment -H "Content-Type: application/json" --data "{\"url\": \"$GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_NUMBER\", \"pr\": ${{ github.event.number }}, \"artifact_titles\": {\"test\":\"๐Ÿงช Test report\"}}" + curl -SsL --fail-with-body -w "\n" -X POST https://av.thetadev.de/.well-known/api/prComment -H "Content-Type: application/json" --data "{\"url\": \"$GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_NUMBER\", \"pr\": ${{ github.event.number }}, \"artifact_titles\": {\"test\":\"๐Ÿงช Test report\"}, \"artifact_paths\": {\"test\":\"/junit.xml?viewer=1\"}}" From 1e36edf49978e8ba24a85d4663ff3ebaf9642a29 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sat, 22 Jun 2024 16:57:32 +0200 Subject: [PATCH 023/221] fix: PR comment emoji prefix detection --- Cargo.lock | 42 ------------------------------------------ Cargo.toml | 1 - src/app.rs | 16 +--------------- src/util.rs | 24 ++++++++++++++++++++++++ 4 files changed, 25 insertions(+), 58 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index c778b5d..a0bb6b0 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -187,7 +187,6 @@ dependencies = [ "tower-http", "tracing", "tracing-subscriber", - "unic-emoji-char", "url", "yarte", "yarte_helpers", @@ -3145,47 +3144,6 @@ version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" -[[package]] -name = "unic-char-property" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8c57a407d9b6fa02b4795eb81c5b6652060a15a7903ea981f3d723e6c0be221" -dependencies = [ - "unic-char-range", -] - -[[package]] -name = "unic-char-range" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0398022d5f700414f6b899e10b8348231abf9173fa93144cbc1a43b9793c1fbc" - -[[package]] -name = "unic-common" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80d7ff825a6a654ee85a63e80f92f054f904f21e7d12da4e22f9834a4aaa35bc" - -[[package]] -name = "unic-emoji-char" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b07221e68897210270a38bde4babb655869637af0f69407f96053a34f76494d" -dependencies = [ - "unic-char-property", - "unic-char-range", - "unic-ucd-version", -] - -[[package]] -name = "unic-ucd-version" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96bd2f2237fe450fcd0a1d2f5f4e91711124f7857ba2e964247776ebeeb7b0c4" -dependencies = [ - "unic-common", -] - [[package]] name = "unicase" version = "2.7.0" diff --git a/Cargo.toml b/Cargo.toml index 480de16..b19413e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -73,7 +73,6 @@ tokio-util = { version = "0.7.11", features = ["io"] } tower-http = { version = "0.5.2", features = ["trace", "set-header"] } tracing = "0.1.40" tracing-subscriber = "0.3.18" -unic-emoji-char = "0.9.0" url = "2.5.0" yarte = { version = "0.15.7", features = ["json"] } diff --git a/src/app.rs b/src/app.rs index b34ae4e..ea76c4d 100644 --- a/src/app.rs +++ b/src/app.rs @@ -1,5 +1,4 @@ use std::{ - borrow::Cow, collections::{BTreeMap, HashMap}, fmt::Write, net::{IpAddr, SocketAddr}, @@ -866,20 +865,7 @@ fn pr_comment_text(p: PrCommentTextParams) -> String { }; let write_link_icon = |s: &mut String, title: &str, href: &str| { - // Move leading emoji into a prefix variable since including them in the link does not look good - let mut title_pfx = String::new(); - let mut title = Cow::Borrowed(title); - if let Some((i, c)) = title - .char_indices() - // Some emoji use variation selectors that are not included in is_emoji - .find(|(_, c)| !unic_emoji_char::is_emoji(*c) && !('\u{fe00}'..='\u{fe0f}').contains(c)) - { - if i > 0 && c == ' ' { - title[..i + 1].clone_into(&mut title_pfx); - title = title[i + 1..].to_owned().into(); - } - } - + let (title_pfx, title) = util::split_icon_prefix(title); _ = write!( s, r#"{title_pfx}{title}"#, diff --git a/src/util.rs b/src/util.rs index 4fa6dba..d5d43c0 100644 --- a/src/util.rs +++ b/src/util.rs @@ -302,6 +302,18 @@ pub fn extract_delim<'a>(s: &'a str, start: &str, end: &str) -> Option<&'a str> None } +pub fn split_icon_prefix(s: &str) -> (&str, &str) { + if let Some((i, c)) = s + .char_indices() + .find(|(_, c)| c.is_ascii() || c.is_alphanumeric()) + { + if i > 0 && c == ' ' && s.get(i + 1..).is_some() { + return (&s[..i + 1], &s[i + 1..]); + } + } + ("", s) +} + #[cfg(test)] pub(crate) mod tests { use std::path::{Path, PathBuf}; @@ -390,4 +402,16 @@ pub(crate) mod tests { let res = super::filename_ext(filename); assert_eq!(res, expect); } + + #[rstest] + #[case("๐Ÿงช Test", ("๐Ÿงช ", "Test"))] + #[case("๐Ÿงช๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘ฆ Test", ("๐Ÿงช๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘ฆ ", "Test"))] + #[case("๐Ÿงช ๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘ฆ Test", ("๐Ÿงช ", "๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘ฆ Test"))] + #[case("", ("", ""))] + #[case("Test", ("", "Test"))] + #[case("้‹ๅ‘ฝ Test", ("", "้‹ๅ‘ฝ Test"))] + fn split_icon_prefix(#[case] s: &str, #[case] expect: (&str, &str)) { + let res = super::split_icon_prefix(s); + assert_eq!(res, expect); + } } From 09e7c1d8bdfe082a26cb4e6483072c0221c304d5 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sat, 22 Jun 2024 17:17:36 +0200 Subject: [PATCH 024/221] chore(release): release artifactview v0.4.2 --- CHANGELOG.md | 7 +++++++ Cargo.lock | 2 +- Cargo.toml | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c4bfedf..f1c8c5d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,13 @@ All notable changes to this project will be documented in this file. +## [v0.4.2](https://codeberg.org/ThetaDev/artifactview/compare/v0.4.1..v0.4.2) - 2024-06-22 + +### ๐Ÿ› Bug Fixes + +- PR comment emoji prefix detection - ([1e36edf](https://codeberg.org/ThetaDev/artifactview/commit/1e36edf49978e8ba24a85d4663ff3ebaf9642a29)) + + ## [v0.4.1](https://codeberg.org/ThetaDev/artifactview/compare/v0.4.0..v0.4.1) - 2024-06-22 ### ๐Ÿš€ Features diff --git a/Cargo.lock b/Cargo.lock index a0bb6b0..4fe8603 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -141,7 +141,7 @@ dependencies = [ [[package]] name = "artifactview" -version = "0.4.1" +version = "0.4.2" dependencies = [ "async_zip", "axum", diff --git a/Cargo.toml b/Cargo.toml index b19413e..8490e04 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "artifactview" -version = "0.4.1" +version = "0.4.2" edition = "2021" authors = ["ThetaDev "] license = "MIT" From d8c3ab4f36727f118b31683db87d287d9945ee14 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sat, 22 Jun 2024 18:34:09 +0200 Subject: [PATCH 025/221] fix: 404 error on GitHub comment creation --- README.md | 19 +++++++++++++------ src/artifact_api.rs | 18 ++++++++++++------ 2 files changed, 25 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index 1e7e6cc..c486622 100644 --- a/README.md +++ b/README.md @@ -76,13 +76,19 @@ artifacts. ![Pull request comment](./resources/screenshotPrComment.png) To accomplish that, simply add this step to your CI workflow (after uploading the -artifacts). +artifacts). Note that the workflow URL has to be built differently on GitHub and +Forgejo, so this solution is sadly not cross-forge compatible. ```yaml -- name: ๐Ÿ”— Artifactview PR comment +- name: ๐Ÿ”— Artifactview PR comment (Forgejo) if: ${{ always() && github.event_name == 'pull_request' }} run: | curl -SsL --fail-with-body -w "\n" -X POST https://av.thetadev.de/.well-known/api/prComment -H "Content-Type: application/json" --data "{\"url\": \"$GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_NUMBER\", \"pr\": ${{ github.event.number }}}" + +- name: ๐Ÿ”— Artifactview PR comment (GitHub) + if: ${{ always() && github.event_name == 'pull_request' }} + run: | + curl -SsL --fail-with-body -w "\n" -X POST https://av.thetadev.de/.well-known/api/prComment -H "Content-Type: application/json" --data "{\"url\": \"$GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID\", \"pr\": ${{ github.event.number }}}" ``` ## API @@ -254,11 +260,12 @@ Example list: `foo;bar`, example map: `foo=>f1;bar=>b1` ### Access tokens GitHub does not allow downloading artifacts for public repositories for unauthenticated -users. So you need to setup an access token to use Artifactview with GitHub. These are -the permissions that need to be enabled: +users. So you need to setup an access token to use Artifactview with GitHub. -- Repository access: All repositories -- Repository permissions: Pull requests (Read and write) +If you are not using the `prComment` feature, you can use a fine-grained access token +with the "Public repositories (read-only)" permission. If you want to create pull +request comments, you have to use a classic token with the "public_repo" scope enabled +(the fine-grained tokens did not work in my test). Forgejo does not require access tokens to download artifacts on public repositories, so you only need to create a token if you want to use the `prComment`-API. In this case, diff --git a/src/artifact_api.rs b/src/artifact_api.rs index 69c6068..e0edb52 100644 --- a/src/artifact_api.rs +++ b/src/artifact_api.rs @@ -269,6 +269,7 @@ impl ArtifactApi { } } + #[tracing::instrument(level = "error", skip_all)] pub async fn list(&self, query: &RunQuery, cached: bool) -> Result> { let cache_key = query.cache_key(); let fut = async { @@ -290,6 +291,7 @@ impl ArtifactApi { } } + #[tracing::instrument(level = "error", skip_all)] pub async fn fetch(&self, query: &ArtifactQuery) -> Result { if query.is_github() { self.fetch_github(query).await @@ -305,6 +307,7 @@ impl ArtifactApi { } } + #[tracing::instrument(level = "error", skip_all)] pub async fn download(&self, artifact: &Artifact, path: &Path) -> Result<()> { if artifact.expired { return Err(Error::Expired); @@ -416,10 +419,9 @@ impl ArtifactApi { if let Err(e) = resp.error_for_status_ref() { let status = resp.status(); let msg = resp.json::().await.ok(); - Err(Error::HttpClient( - msg.map(|msg| msg.message).unwrap_or(e.to_string()).into(), - status, - )) + let msg_str = msg.map(|msg| msg.message).unwrap_or(e.to_string()).into(); + tracing::error!("API error: {msg_str}"); + Err(Error::HttpClient(msg_str, status)) } else { Ok(resp) } @@ -492,6 +494,7 @@ impl ArtifactApi { .header(header::AUTHORIZATION, format!("token {token}"))) } + #[tracing::instrument(level = "error", skip_all)] pub async fn workflow_run(&self, query: &RunQuery) -> Result { if query.is_github() { self.workflow_run_github(query).await @@ -554,6 +557,7 @@ impl ArtifactApi { Ok(run.into()) } + #[tracing::instrument(level = "error", skip_all)] pub async fn add_comment( &self, query: QueryRef<'_>, @@ -621,8 +625,8 @@ impl ArtifactApi { ) -> Result { if let Some(old_comment_id) = old_comment_id { let url = format!( - "https://api.github.com/repos/{}/{}/issues/{}/comments/{}", - query.user, query.repo, issue_id, old_comment_id + "https://api.github.com/repos/{}/{}/issues/comments/{}", + query.user, query.repo, old_comment_id ); if recreate { Self::send_api_req_empty(self.req_github(Method::DELETE, url)?).await?; @@ -650,6 +654,7 @@ impl ArtifactApi { Ok(new_c.id) } + #[tracing::instrument(level = "error", skip_all)] pub async fn find_comment( &self, query: QueryRef<'_>, @@ -702,6 +707,7 @@ impl ArtifactApi { Ok(None) } + #[tracing::instrument(level = "error", skip_all)] pub async fn get_pr(&self, query: QueryRef<'_>, pr_id: u64) -> Result { let req = if query.is_github() { self.get_github(format!( From bdc847f5d0bdde596b0b7ee31913d7fd4a474501 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sat, 22 Jun 2024 18:34:55 +0200 Subject: [PATCH 026/221] chore(release): release artifactview v0.4.3 --- CHANGELOG.md | 7 +++++++ Cargo.lock | 2 +- Cargo.toml | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f1c8c5d..8ab8fad 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,13 @@ All notable changes to this project will be documented in this file. +## [v0.4.3](https://codeberg.org/ThetaDev/artifactview/compare/v0.4.2..v0.4.3) - 2024-06-22 + +### ๐Ÿ› Bug Fixes + +- 404 error on GitHub comment creation - ([d8c3ab4](https://codeberg.org/ThetaDev/artifactview/commit/d8c3ab4f36727f118b31683db87d287d9945ee14)) + + ## [v0.4.2](https://codeberg.org/ThetaDev/artifactview/compare/v0.4.1..v0.4.2) - 2024-06-22 ### ๐Ÿ› Bug Fixes diff --git a/Cargo.lock b/Cargo.lock index 4fe8603..c9226a6 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -141,7 +141,7 @@ dependencies = [ [[package]] name = "artifactview" -version = "0.4.2" +version = "0.4.3" dependencies = [ "async_zip", "axum", diff --git a/Cargo.toml b/Cargo.toml index 8490e04..4dc070c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "artifactview" -version = "0.4.2" +version = "0.4.3" edition = "2021" authors = ["ThetaDev "] license = "MIT" From 3690b0244cf47d0d73511f5f69f5d12abe0f1837 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sat, 22 Jun 2024 18:47:49 +0200 Subject: [PATCH 027/221] fix: use forge aliases for PR comment links --- src/app.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app.rs b/src/app.rs index ea76c4d..cc05ad6 100644 --- a/src/app.rs +++ b/src/app.rs @@ -672,7 +672,7 @@ impl App { .extract::, _>() .await .map_err(|e| Error::BadRequest(e.body_text().into()))?; - let query = RunQuery::from_forge_url(&req.url)?; + let query = RunQuery::from_forge_url_alias(&req.url, &state.i.cfg.load().site_aliases)?; if let Some(limiter) = &state.i.lim_pr_comment { limiter.check_key(&ip).map_err(Error::from)?; From 0516abb8fddccaf02e261107cd68c39ce560b568 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sat, 22 Jun 2024 18:48:35 +0200 Subject: [PATCH 028/221] chore(release): release artifactview v0.4.4 --- CHANGELOG.md | 7 +++++++ Cargo.lock | 2 +- Cargo.toml | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8ab8fad..2d77011 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,13 @@ All notable changes to this project will be documented in this file. +## [v0.4.4](https://codeberg.org/ThetaDev/artifactview/compare/v0.4.3..v0.4.4) - 2024-06-22 + +### ๐Ÿ› Bug Fixes + +- Use forge aliases for PR comment links - ([3690b02](https://codeberg.org/ThetaDev/artifactview/commit/3690b0244cf47d0d73511f5f69f5d12abe0f1837)) + + ## [v0.4.3](https://codeberg.org/ThetaDev/artifactview/compare/v0.4.2..v0.4.3) - 2024-06-22 ### ๐Ÿ› Bug Fixes diff --git a/Cargo.lock b/Cargo.lock index c9226a6..6e0c455 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -141,7 +141,7 @@ dependencies = [ [[package]] name = "artifactview" -version = "0.4.3" +version = "0.4.4" dependencies = [ "async_zip", "axum", diff --git a/Cargo.toml b/Cargo.toml index 4dc070c..dc1a8fb 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "artifactview" -version = "0.4.3" +version = "0.4.4" edition = "2021" authors = ["ThetaDev "] license = "MIT" From 39f0019455cc23f1b8c39b77d2aaa5af278731a9 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sat, 22 Jun 2024 19:27:45 +0200 Subject: [PATCH 029/221] docs: make example CI step compatible with GitHub+Forgejo --- .forgejo/workflows/ci.yaml | 4 +++- README.md | 13 ++++--------- 2 files changed, 7 insertions(+), 10 deletions(-) diff --git a/.forgejo/workflows/ci.yaml b/.forgejo/workflows/ci.yaml index e2e258e..0276410 100644 --- a/.forgejo/workflows/ci.yaml +++ b/.forgejo/workflows/ci.yaml @@ -32,4 +32,6 @@ jobs: run: | echo "Run: $GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_NUMBER" echo "Pull: ${{ github.event.number }}" - curl -SsL --fail-with-body -w "\n" -X POST https://av.thetadev.de/.well-known/api/prComment -H "Content-Type: application/json" --data "{\"url\": \"$GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_NUMBER\", \"pr\": ${{ github.event.number }}, \"artifact_titles\": {\"test\":\"๐Ÿงช Test report\"}, \"artifact_paths\": {\"test\":\"/junit.xml?viewer=1\"}}" + + if [[ "$GITEA_ACTIONS" == "true" ]]; then RUN_NUMBER="$GITHUB_RUN_NUMBER"; else RUN_NUMBER="$GITHUB_RUN_ID"; fi + curl -SsL --fail-with-body -w "\n" -X POST https://av.thetadev.de/.well-known/api/prComment -H "Content-Type: application/json" --data "{\"url\": \"$GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$RUN_NUMBER\", \"pr\": ${{ github.event.number }}, \"artifact_titles\": {\"test\":\"๐Ÿงช Test report\"}, \"artifact_paths\": {\"test\":\"/junit.xml?viewer=1\"}}" diff --git a/README.md b/README.md index c486622..92df5e0 100644 --- a/README.md +++ b/README.md @@ -76,19 +76,14 @@ artifacts. ![Pull request comment](./resources/screenshotPrComment.png) To accomplish that, simply add this step to your CI workflow (after uploading the -artifacts). Note that the workflow URL has to be built differently on GitHub and -Forgejo, so this solution is sadly not cross-forge compatible. +artifacts). ```yaml -- name: ๐Ÿ”— Artifactview PR comment (Forgejo) +- name: ๐Ÿ”— Artifactview PR comment if: ${{ always() && github.event_name == 'pull_request' }} run: | - curl -SsL --fail-with-body -w "\n" -X POST https://av.thetadev.de/.well-known/api/prComment -H "Content-Type: application/json" --data "{\"url\": \"$GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_NUMBER\", \"pr\": ${{ github.event.number }}}" - -- name: ๐Ÿ”— Artifactview PR comment (GitHub) - if: ${{ always() && github.event_name == 'pull_request' }} - run: | - curl -SsL --fail-with-body -w "\n" -X POST https://av.thetadev.de/.well-known/api/prComment -H "Content-Type: application/json" --data "{\"url\": \"$GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID\", \"pr\": ${{ github.event.number }}}" + if [[ "$GITEA_ACTIONS" == "true" ]]; then RUN_NUMBER="$GITHUB_RUN_NUMBER"; else RUN_NUMBER="$GITHUB_RUN_ID"; fi + curl -SsL --fail-with-body -w "\n" -X POST https://av.thetadev.de/.well-known/api/prComment -H "Content-Type: application/json" --data "{\"url\": \"$GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$RUN_NUMBER\", \"pr\": ${{ github.event.number }}}" ``` ## API From f0c7881d57a6df80cc51e8e0925f6ca2fb05176b Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sat, 22 Jun 2024 19:52:49 +0200 Subject: [PATCH 030/221] ci: update Artifactview PR comment step --- .forgejo/workflows/ci.yaml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.forgejo/workflows/ci.yaml b/.forgejo/workflows/ci.yaml index 0276410..1da8c3b 100644 --- a/.forgejo/workflows/ci.yaml +++ b/.forgejo/workflows/ci.yaml @@ -30,8 +30,9 @@ jobs: - name: ๐Ÿ”— Artifactview PR comment if: ${{ always() && github.event_name == 'pull_request' }} run: | - echo "Run: $GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_NUMBER" + if [[ "$GITEA_ACTIONS" == "true" ]]; then RUN_NUMBER="$GITHUB_RUN_NUMBER"; else RUN_NUMBER="$GITHUB_RUN_ID"; fi + echo "Run: $GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$RUN_NUMBER" echo "Pull: ${{ github.event.number }}" - if [[ "$GITEA_ACTIONS" == "true" ]]; then RUN_NUMBER="$GITHUB_RUN_NUMBER"; else RUN_NUMBER="$GITHUB_RUN_ID"; fi - curl -SsL --fail-with-body -w "\n" -X POST https://av.thetadev.de/.well-known/api/prComment -H "Content-Type: application/json" --data "{\"url\": \"$GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$RUN_NUMBER\", \"pr\": ${{ github.event.number }}, \"artifact_titles\": {\"test\":\"๐Ÿงช Test report\"}, \"artifact_paths\": {\"test\":\"/junit.xml?viewer=1\"}}" + curl -SsL --fail-with-body -w "\n" -X POST https://av.thetadev.de/.well-known/api/prComment -H "Content-Type: application/json" \ + --data '{"url": "'"$GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$RUN_NUMBER"'", "pr": ${{ github.event.number }}, "artifact_titles": {"test":"๐Ÿงช Test report"}, "artifact_paths": {"test":"/junit.xml?viewer=1"}}' From 40ae3a7f557c63a0bb2abcd595218c8ec1095fe7 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sat, 22 Jun 2024 20:38:09 +0200 Subject: [PATCH 031/221] docs: update README --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 92df5e0..83e1e27 100644 --- a/README.md +++ b/README.md @@ -70,8 +70,7 @@ The script adds a "View artifact" link with an eye icon next to every CI artifac both GitHub and Forgejo. If you want to give every collaborator to your project easy access to previews, you can -use Artifactview to automatically create a pull request comments with links to the -artifacts. +automatically create a comment with links to the artifacts under every pull request. ![Pull request comment](./resources/screenshotPrComment.png) @@ -83,7 +82,8 @@ artifacts). if: ${{ always() && github.event_name == 'pull_request' }} run: | if [[ "$GITEA_ACTIONS" == "true" ]]; then RUN_NUMBER="$GITHUB_RUN_NUMBER"; else RUN_NUMBER="$GITHUB_RUN_ID"; fi - curl -SsL --fail-with-body -w "\n" -X POST https://av.thetadev.de/.well-known/api/prComment -H "Content-Type: application/json" --data "{\"url\": \"$GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$RUN_NUMBER\", \"pr\": ${{ github.event.number }}}" + curl -SsL --fail-with-body -w "\n" -X POST https://av.thetadev.de/.well-known/api/prComment -H "Content-Type: application/json" \ + --data '{"url": "'"$GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$RUN_NUMBER"'", "pr": ${{ github.event.number }}}' ``` ## API From 3ef67f52c81cd1865e82c59b405c79019eefc183 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sat, 22 Jun 2024 20:51:42 +0200 Subject: [PATCH 032/221] ci: add DockerHub README updater --- .forgejo/workflows/docker-readme.yaml | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 .forgejo/workflows/docker-readme.yaml diff --git a/.forgejo/workflows/docker-readme.yaml b/.forgejo/workflows/docker-readme.yaml new file mode 100644 index 0000000..05e4984 --- /dev/null +++ b/.forgejo/workflows/docker-readme.yaml @@ -0,0 +1,23 @@ +name: DockerHub README +on: + push: + branches: + - main + paths: + - "README.md" + - ".forgejo/workflows/docker-readme.yaml" + +jobs: + update: + runs-on: cimaster-latest + steps: + - name: ๐Ÿ‘๏ธ Checkout repository + uses: actions/checkout@v4 + + - name: Docker Hub Description + uses: https://github.com/peter-evans/dockerhub-description@v4 + with: + username: thetadev256 + password: ${{ secrets.DOCKERHUB_PASSWORD }} + repository: thetadev256/artifactview + enable-url-completion: true From 02fab65125dec799691655583e411990944605c9 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Thu, 27 Jun 2024 18:48:05 +0200 Subject: [PATCH 033/221] ci: add renovate --- .forgejo/workflows/renovate.yaml | 62 ++++++++++++++++++++++++++++++++ README.md | 3 +- renovate.json | 15 ++++++++ 3 files changed, 79 insertions(+), 1 deletion(-) create mode 100644 .forgejo/workflows/renovate.yaml create mode 100644 renovate.json diff --git a/.forgejo/workflows/renovate.yaml b/.forgejo/workflows/renovate.yaml new file mode 100644 index 0000000..837138e --- /dev/null +++ b/.forgejo/workflows/renovate.yaml @@ -0,0 +1,62 @@ +name: renovate + +on: + push: + branches: ["main"] + paths: + - ".forgejo/workflows/renovate.yaml" + - "renovate.json" + schedule: + - cron: "0 0 * * *" + +env: + RENOVATE_REPOSITORIES: ${{ github.repository }} + +jobs: + renovate: + runs-on: docker + container: + image: renovate/renovate:latest + + steps: + - name: Load renovate repo cache + uses: actions/cache/restore@v4 + with: + path: | + .tmp/cache/renovate/repository + .tmp/cache/renovate/renovate-cache-sqlite + .tmp/osv + key: repo-cache-${{ github.run_id }} + restore-keys: | + repo-cache- + + - name: Run renovate + run: renovate + env: + LOG_LEVEL: debug + RENOVATE_BASE_DIR: ${{ github.workspace }}/.tmp + RENOVATE_ENDPOINT: ${{ github.server_url }} + RENOVATE_PLATFORM: gitea + RENOVATE_REPOSITORY_CACHE: 'enabled' + RENOVATE_TOKEN: ${{ secrets.FORGEJO_CI_BOT_TOKEN }} + GITHUB_COM_TOKEN: ${{ secrets.GH_PUBLIC_TOKEN }} + RENOVATE_GIT_AUTHOR: 'Renovate Bot ' + + RENOVATE_X_SQLITE_PACKAGE_CACHE: true + + GIT_AUTHOR_NAME: 'Renovate Bot' + GIT_AUTHOR_EMAIL: 'forgejo-renovate-action@forgejo.org' + GIT_COMMITTER_NAME: 'Renovate Bot' + GIT_COMMITTER_EMAIL: 'forgejo-renovate-action@forgejo.org' + + OSV_OFFLINE_ROOT_DIR: ${{ github.workspace }}/.tmp/osv + + - name: Save renovate repo cache + if: always() && env.RENOVATE_DRY_RUN != 'full' + uses: actions/cache/save@v4 + with: + path: | + .tmp/cache/renovate/repository + .tmp/cache/renovate/renovate-cache-sqlite + .tmp/osv + key: repo-cache-${{ github.run_id }} diff --git a/README.md b/README.md index 83e1e27..6748c8a 100644 --- a/README.md +++ b/README.md @@ -22,7 +22,8 @@ teammates. - ๐Ÿ‘๏ธ Viewer for Markdown, syntax-highlighted code and JUnit test reports - ๐Ÿต Greasemonkey userscript to automatically add a "View artifact" button to GitHub/Gitea/Forgejo -- ๐Ÿฆ€ Fast and efficient, only extracts files from zip archive if necessary +- ๐Ÿฆ€ Fast and efficient, only extracts files from zip archive if the client does not support gzip +- ๐Ÿ”— Automatically creates pull request comments with links to all build artifacts ## How to use diff --git a/renovate.json b/renovate.json new file mode 100644 index 0000000..4a55492 --- /dev/null +++ b/renovate.json @@ -0,0 +1,15 @@ +{ + "$schema": "https://docs.renovatebot.com/renovate-schema.json", + "extends": [ + "config:best-practices", + ":approveMajorUpdates", + ":maintainLockFilesWeekly", + "schedule:daily" + ], + "semanticCommits": "enabled", + "automergeStrategy": "squash", + "osvVulnerabilityAlerts": true, + "labels": ["dependency-upgrade"], + "enabledManagers": ["cargo"], + "prHourlyLimit": 5 +} From a7a9b137a7089a477d9bc58936b8657f3f153e70 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Thu, 27 Jun 2024 19:26:08 +0200 Subject: [PATCH 034/221] ci: renovate: disable approval --- renovate.json | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/renovate.json b/renovate.json index 4a55492..77f9902 100644 --- a/renovate.json +++ b/renovate.json @@ -2,9 +2,7 @@ "$schema": "https://docs.renovatebot.com/renovate-schema.json", "extends": [ "config:best-practices", - ":approveMajorUpdates", - ":maintainLockFilesWeekly", - "schedule:daily" + ":maintainLockFilesWeekly" ], "semanticCommits": "enabled", "automergeStrategy": "squash", From fc3b5a1530985012ff8364a8fa676626e7544eaf Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Thu, 27 Jun 2024 17:49:09 +0000 Subject: [PATCH 035/221] fix(deps): update rust crate serde_json to v1.0.118 (#5) Reviewed-on: https://codeberg.org/ThetaDev/artifactview/pulls/5 Co-authored-by: ThetaBot Co-committed-by: ThetaBot --- Cargo.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 6e0c455..054c738 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2572,9 +2572,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.117" +version = "1.0.118" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "455182ea6142b14f93f4bc5320a2b31c1f266b66a4a5c858b013302a5d8cbfc3" +checksum = "d947f6b3163d8857ea16c4fa0dd4840d52f3041039a85decd46867eb1abef2e4" dependencies = [ "itoa", "ryu", From 797fc0c04c2a51811a24cfc431496e6e5dbf0bea Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Thu, 27 Jun 2024 17:49:23 +0000 Subject: [PATCH 036/221] chore(deps): update rust crate proptest to v1.5.0 (#6) Reviewed-on: https://codeberg.org/ThetaDev/artifactview/pulls/6 Co-authored-by: ThetaBot Co-committed-by: ThetaBot --- Cargo.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 054c738..960d43b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1993,9 +1993,9 @@ dependencies = [ [[package]] name = "proptest" -version = "1.4.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31b476131c3c86cb68032fdc5cb6d5a1045e3e42d96b69fa599fd77701e1f5bf" +checksum = "b4c2511913b88df1637da85cc8d96ec8e43a3f8bb8ccb71ee1ac240d6f3df58d" dependencies = [ "bit-set", "bit-vec", From cec3aa3fc02e6a871d9c221f61c3f2d8828f9f63 Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Thu, 27 Jun 2024 17:49:39 +0000 Subject: [PATCH 037/221] chore(deps): update rust crate rstest to 0.21.0 (#7) Reviewed-on: https://codeberg.org/ThetaDev/artifactview/pulls/7 Co-authored-by: ThetaBot Co-committed-by: ThetaBot --- Cargo.lock | 44 ++++---------------------------------------- Cargo.toml | 2 +- 2 files changed, 5 insertions(+), 41 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 960d43b..e038590 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1973,15 +1973,6 @@ dependencies = [ "syn 1.0.109", ] -[[package]] -name = "proc-macro-crate" -version = "3.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d37c51ca738a55da99dc0c4a34860fd675453b8b36209178c2249bb13651284" -dependencies = [ - "toml_edit", -] - [[package]] name = "proc-macro2" version = "1.0.86" @@ -2276,9 +2267,9 @@ dependencies = [ [[package]] name = "rstest" -version = "0.20.0" +version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "27059f51958c5f8496a6f79511e7c0ac396dd815dc8894e9b6e2efb5779cf6f0" +checksum = "9afd55a67069d6e434a95161415f5beeada95a01c7b815508a82dcb0e1593682" dependencies = [ "rstest_macros", "rustc_version", @@ -2286,13 +2277,12 @@ dependencies = [ [[package]] name = "rstest_macros" -version = "0.20.0" +version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6132d64df104c0b3ea7a6ad7766a43f587bd773a4a9cf4cd59296d426afaf3a" +checksum = "4165dfae59a39dd41d8dec720d3cbfbc71f69744efb480a3920f5d4e0cc6798d" dependencies = [ "cfg-if", "glob", - "proc-macro-crate", "proc-macro2", "quote", "regex", @@ -3000,23 +2990,6 @@ dependencies = [ "serde", ] -[[package]] -name = "toml_datetime" -version = "0.6.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4badfd56924ae69bcc9039335b2e017639ce3f9b001c393c1b2d1ef846ce2cbf" - -[[package]] -name = "toml_edit" -version = "0.21.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1" -dependencies = [ - "indexmap", - "toml_datetime", - "winnow", -] - [[package]] name = "tower" version = "0.4.13" @@ -3578,15 +3551,6 @@ version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0" -[[package]] -name = "winnow" -version = "0.5.40" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" -dependencies = [ - "memchr", -] - [[package]] name = "winreg" version = "0.52.0" diff --git a/Cargo.toml b/Cargo.toml index dc1a8fb..e169deb 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -85,7 +85,7 @@ flate2 = "1.0.30" httpdate = "1.0.3" insta = { version = "1.39.0", features = ["json"] } proptest = "1.4.0" -rstest = { version = "0.20.0", default-features = false } +rstest = { version = "0.21.0", default-features = false } scraper = "0.19.0" temp_testdir = "0.2.3" From 595a9d0f4115faf5056653406b6d05bf671dc2b3 Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Thu, 27 Jun 2024 17:50:03 +0000 Subject: [PATCH 038/221] fix(deps): update rust crate quick-xml to 0.34.0 (#8) Reviewed-on: https://codeberg.org/ThetaDev/artifactview/pulls/8 Co-authored-by: ThetaBot Co-committed-by: ThetaBot --- Cargo.lock | 4 ++-- crates/junit-parser/Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index e038590..92a4263 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2025,9 +2025,9 @@ checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" [[package]] name = "quick-xml" -version = "0.32.0" +version = "0.34.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d3a6e5838b60e0e8fa7a43f22ade549a37d61f8bdbe636d0d7816191de969c2" +checksum = "6f24d770aeca0eacb81ac29dfbc55ebcc09312fdd1f8bbecdc7e4a84e000e3b4" dependencies = [ "memchr", ] diff --git a/crates/junit-parser/Cargo.toml b/crates/junit-parser/Cargo.toml index ddd48a4..38c0093 100644 --- a/crates/junit-parser/Cargo.toml +++ b/crates/junit-parser/Cargo.toml @@ -7,7 +7,7 @@ license = "BSD-2-Clause" repository = "https://github.com/borisfaure/junit-parser" [dependencies] -quick-xml = { version = "0.32.0", features = ["escape-html"] } +quick-xml = { version = "0.34.0", features = ["escape-html"] } thiserror = "1.0.61" time = { version = "0.3.36", features = ["parsing", "serde-well-known"] } serde = { version = "1.0", features = ["derive"] } From 94191f878d774bef165cca850fcdf00fde16d662 Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Sun, 30 Jun 2024 14:19:29 +0000 Subject: [PATCH 039/221] fix(deps): update rust crate mime_guess to v2.0.5 (#10) Reviewed-on: https://codeberg.org/ThetaDev/artifactview/pulls/10 Co-authored-by: ThetaBot Co-committed-by: ThetaBot --- Cargo.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 92a4263..492667b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1555,9 +1555,9 @@ checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" [[package]] name = "mime_guess" -version = "2.0.4" +version = "2.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4192263c238a5f0d0c6bfd21f336a313a4ce1c450542449ca191bb657b4642ef" +checksum = "f7c44f8e672c00fe5308fa235f821cb4198414e1c77935c1ab6948d3fd78550e" dependencies = [ "mime", "unicase", From 7ebe8815462f3e704a79af038b9b1850ed4677ed Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Sun, 30 Jun 2024 14:24:58 +0000 Subject: [PATCH 040/221] fix(deps): update rust crate quick-xml to 0.35.0 (#11) Reviewed-on: https://codeberg.org/ThetaDev/artifactview/pulls/11 Co-authored-by: ThetaBot Co-committed-by: ThetaBot --- Cargo.lock | 4 ++-- crates/junit-parser/Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 492667b..0d61cb3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2025,9 +2025,9 @@ checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" [[package]] name = "quick-xml" -version = "0.34.0" +version = "0.35.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f24d770aeca0eacb81ac29dfbc55ebcc09312fdd1f8bbecdc7e4a84e000e3b4" +checksum = "86e446ed58cef1bbfe847bc2fda0e2e4ea9f0e57b90c507d4781292590d72a4e" dependencies = [ "memchr", ] diff --git a/crates/junit-parser/Cargo.toml b/crates/junit-parser/Cargo.toml index 38c0093..c18d2b9 100644 --- a/crates/junit-parser/Cargo.toml +++ b/crates/junit-parser/Cargo.toml @@ -7,7 +7,7 @@ license = "BSD-2-Clause" repository = "https://github.com/borisfaure/junit-parser" [dependencies] -quick-xml = { version = "0.34.0", features = ["escape-html"] } +quick-xml = { version = "0.35.0", features = ["escape-html"] } thiserror = "1.0.61" time = { version = "0.3.36", features = ["parsing", "serde-well-known"] } serde = { version = "1.0", features = ["derive"] } From 2525022df76b3c16951983c14a55fa9617114a8e Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Mon, 1 Jul 2024 02:39:38 +0000 Subject: [PATCH 041/221] fix(deps): update rust crate serde_json to v1.0.119 (#12) Reviewed-on: https://codeberg.org/ThetaDev/artifactview/pulls/12 Co-authored-by: ThetaBot Co-committed-by: ThetaBot --- Cargo.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 0d61cb3..689dada 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2562,9 +2562,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.118" +version = "1.0.119" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d947f6b3163d8857ea16c4fa0dd4840d52f3041039a85decd46867eb1abef2e4" +checksum = "e8eddb61f0697cc3989c5d64b452f5488e2b8a60fd7d5076a3045076ffef8cb0" dependencies = [ "itoa", "ryu", From 9767167661e22775614cea7b888a19ee16c17d65 Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Mon, 1 Jul 2024 02:40:12 +0000 Subject: [PATCH 042/221] chore(deps): lock file maintenance (#13) Reviewed-on: https://codeberg.org/ThetaDev/artifactview/pulls/13 Co-authored-by: ThetaBot Co-committed-by: ThetaBot --- Cargo.lock | 82 +++++++++++++++++++++++++++--------------------------- 1 file changed, 41 insertions(+), 41 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 689dada..dfa49fa 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -218,7 +218,7 @@ checksum = "c6fa2087f2753a7da8cc1c0dbfcf89579dd57458e36769de5ac750b4671737ca" dependencies = [ "proc-macro2", "quote", - "syn 2.0.67", + "syn 2.0.68", ] [[package]] @@ -427,9 +427,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.5.0" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1" +checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" [[package]] name = "block-buffer" @@ -487,9 +487,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.0.99" +version = "1.0.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96c51067fd44124faa7f870b4b1c969379ad32b2ba805aa959430ceaa384f695" +checksum = "2755ff20a1d93490d26ba33a6f092a38a508398a5320df5d4b3014fcccce9410" dependencies = [ "jobserver", "libc", @@ -652,7 +652,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331" dependencies = [ "quote", - "syn 2.0.67", + "syn 2.0.68", ] [[package]] @@ -676,7 +676,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.67", + "syn 2.0.68", ] [[package]] @@ -687,7 +687,7 @@ checksum = "733cabb43482b1a1b53eee8583c2b9e8684d592215ea83efd305dd31bc2f0178" dependencies = [ "darling_core", "quote", - "syn 2.0.67", + "syn 2.0.68", ] [[package]] @@ -737,7 +737,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.67", + "syn 2.0.68", ] [[package]] @@ -747,7 +747,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "206868b8242f27cecce124c19fd88157fbd0dd334df2587f36417bafbc85097b" dependencies = [ "derive_builder_core", - "syn 2.0.67", + "syn 2.0.68", ] [[package]] @@ -760,7 +760,7 @@ dependencies = [ "proc-macro2", "quote", "rustc_version", - "syn 2.0.67", + "syn 2.0.68", ] [[package]] @@ -996,7 +996,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.67", + "syn 2.0.68", ] [[package]] @@ -1494,9 +1494,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.21" +version = "0.4.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" +checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" [[package]] name = "lzma-sys" @@ -1662,9 +1662,9 @@ dependencies = [ [[package]] name = "object" -version = "0.36.0" +version = "0.36.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "576dfe1fc8f9df304abb159d767a29d0476f7750fbf8aa7ad07816004a207434" +checksum = "081b846d1d56ddfc18fdf1a922e4f6e07a11768ea1b92dec44e42b72712ccfce" dependencies = [ "memchr", ] @@ -1703,7 +1703,7 @@ version = "0.10.64" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "95a0481286a310808298130d22dd1fef0fa571e05a8f44ec801801e84b216b1f" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "cfg-if", "foreign-types", "libc", @@ -1720,7 +1720,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.67", + "syn 2.0.68", ] [[package]] @@ -1870,7 +1870,7 @@ dependencies = [ "phf_shared 0.11.2", "proc-macro2", "quote", - "syn 2.0.67", + "syn 2.0.68", ] [[package]] @@ -1908,7 +1908,7 @@ checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" dependencies = [ "proc-macro2", "quote", - "syn 2.0.67", + "syn 2.0.68", ] [[package]] @@ -1990,7 +1990,7 @@ checksum = "b4c2511913b88df1637da85cc8d96ec8e43a3f8bb8ccb71ee1ac240d6f3df58d" dependencies = [ "bit-set", "bit-vec", - "bitflags 2.5.0", + "bitflags 2.6.0", "lazy_static", "num-traits", "rand", @@ -2145,7 +2145,7 @@ version = "11.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e29830cbb1290e404f24c73af91c5d8d631ce7e128691e9477556b540cd01ecd" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", ] [[package]] @@ -2154,7 +2154,7 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c82cf8cff14456045f55ec4241383baeff27af886adb72ffb2162f99911de0fd" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", ] [[package]] @@ -2288,7 +2288,7 @@ dependencies = [ "regex", "relative-path", "rustc_version", - "syn 2.0.67", + "syn 2.0.68", "unicode-ident", ] @@ -2335,7 +2335,7 @@ version = "0.38.34" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "errno", "libc", "linux-raw-sys", @@ -2476,7 +2476,7 @@ version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c627723fd09706bacdb5cf41499e95098555af3c3c29d014dc3c458ef6be11c0" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "core-foundation", "core-foundation-sys", "libc", @@ -2499,7 +2499,7 @@ version = "0.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4eb30575f3638fc8f6815f448d50cb1a2e255b0897985c8c59f4d37b72a07b06" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "cssparser", "derive_more", "fxhash", @@ -2557,7 +2557,7 @@ checksum = "500cbc0ebeb6f46627f50f3f5811ccf6bf00643be300b4c3eabc0ef55dc5b5ba" dependencies = [ "proc-macro2", "quote", - "syn 2.0.67", + "syn 2.0.68", ] [[package]] @@ -2753,9 +2753,9 @@ checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" [[package]] name = "subtle" -version = "2.6.0" +version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d0208408ba0c3df17ed26eb06992cb1a1268d41b2c0e12e65203fbe3972cee5" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" [[package]] name = "syn" @@ -2770,9 +2770,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.67" +version = "2.0.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff8655ed1d86f3af4ee3fd3263786bc14245ad17c4c7e85ba7187fb3ae028c90" +checksum = "901fa70d88b9d6c98022e23b4136f9f3e54e4662c3bc1bd1d84a42a9a0f0c1e9" dependencies = [ "proc-macro2", "quote", @@ -2857,7 +2857,7 @@ checksum = "46c3384250002a6d5af4d114f2845d37b57521033f30d5c3f46c4d70e1197533" dependencies = [ "proc-macro2", "quote", - "syn 2.0.67", + "syn 2.0.68", ] [[package]] @@ -2903,9 +2903,9 @@ dependencies = [ [[package]] name = "tinyvec" -version = "1.6.0" +version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +checksum = "c55115c6fbe2d2bef26eb09ad74bde02d8255476fc0c7b515ef09fbb35742d82" dependencies = [ "tinyvec_macros", ] @@ -2943,7 +2943,7 @@ checksum = "5f5ae998a069d4b5aba8ee9dad856af7d520c3699e6159b185c2acd48155d39a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.67", + "syn 2.0.68", ] [[package]] @@ -3012,7 +3012,7 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e9cd434a998747dd2c4276bc96ee2e0c7a2eadf3cae88e52be55a05fa9053f5" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "bytes", "http 1.1.0", "http-body", @@ -3055,7 +3055,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.67", + "syn 2.0.68", ] [[package]] @@ -3295,7 +3295,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.67", + "syn 2.0.68", "wasm-bindgen-shared", ] @@ -3329,7 +3329,7 @@ checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.67", + "syn 2.0.68", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -3694,7 +3694,7 @@ checksum = "15e934569e47891f7d9411f1a451d947a60e000ab3bd24fbb970f000387d1b3b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.67", + "syn 2.0.68", ] [[package]] From 7d2c68630ec6e75061c050a4c8b035edb472d150 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Tue, 2 Jul 2024 01:27:42 +0200 Subject: [PATCH 043/221] fix: swap crc and size column (#3) --- templates/listing.hbs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/templates/listing.hbs b/templates/listing.hbs index 94874e5..c035266 100644 --- a/templates/listing.hbs +++ b/templates/listing.hbs @@ -22,10 +22,10 @@ Name  ↓  + CRC32 Size  ↓  - CRC32 @@ -45,8 +45,8 @@ {{name}} - {{#if is_dir}}—{{else}}{{size}}{{/if}} {{#if is_dir}}—{{else}}{{crc32}}{{/if}} + {{#if is_dir}}—{{else}}{{size}}{{/if}} {{/each}} From 197eeea75baa8ba44d27ec46c5f552028052869b Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Tue, 2 Jul 2024 01:49:25 +0200 Subject: [PATCH 044/221] feat: update PR comment format - removed eye emoji from title - moved metadata to subtitle - add current run date - use newtab links for all AV links --- src/app.rs | 39 ++++++++++--------- ...rtifactview__app__tests__pr_comment_1.snap | 6 ++- ...rtifactview__app__tests__pr_comment_2.snap | 8 ++-- ...rtifactview__app__tests__pr_comment_3.snap | 10 +++-- tests/tests.rs | 2 +- 5 files changed, 36 insertions(+), 29 deletions(-) diff --git a/src/app.rs b/src/app.rs index cc05ad6..a3a15c9 100644 --- a/src/app.rs +++ b/src/app.rs @@ -844,6 +844,11 @@ fn pr_comment_text(p: PrCommentTextParams) -> String { let query = p.query; let mut content = "### ".to_owned(); let mut prevln = "- ".to_owned(); + let a_opts = r#"target="_blank" rel="noopener noreferrer""#; + let date_started = p + .run + .date_started + .and_then(|d| d.to_offset(time::UtcOffset::UTC).format(&DATE_FORMAT).ok()); let mut prev_builds = None; let mut np_content = None; @@ -866,10 +871,7 @@ fn pr_comment_text(p: PrCommentTextParams) -> String { let write_link_icon = |s: &mut String, title: &str, href: &str| { let (title_pfx, title) = util::split_icon_prefix(title); - _ = write!( - s, - r#"{title_pfx}{title}"#, - ); + _ = write!(s, r#"{title_pfx}{title}"#,); }; // Comment title @@ -877,17 +879,23 @@ fn pr_comment_text(p: PrCommentTextParams) -> String { let artifacts_url = format!("{}/?url={}", p.cfg.main_url(), run_url); write_link_icon( &mut content, - p.title.unwrap_or("๐Ÿ‘๏ธ Latest build artifacts"), + p.title.unwrap_or("Latest build artifacts"), &artifacts_url, ); - _ = write!(&mut content, " (Run [#{}]({}), ", query.run, run_url); + _ = write!(&mut content, "\n\n Run [#{}]({}) ยท ", query.run, run_url); write_commit(&mut content, &p.run.head_sha); - _ = content.write_str(")\n\n"); + if let Some(date_started) = &date_started { + _ = write!(&mut content, " ยท {} UTC", date_started); + } + _ = content.write_str("\n\n"); // Previous run line _ = write!(&mut prevln, "[#{}]({}) [", query.run, run_url); write_commit(&mut prevln, &p.run.head_sha); - _ = write!(&mut prevln, "] [Artifacts]({artifacts_url}): "); + _ = write!( + &mut prevln, + "] Artifacts: " + ); for a in p.artifacts.iter().filter(|a| !a.expired) { let mut url = p @@ -910,8 +918,8 @@ fn pr_comment_text(p: PrCommentTextParams) -> String { _ = content.write_str("
    \n"); _ = write!( &mut prevln, - r#" `{}`,"#, - url, a.name + r#" `{}`,"#, + a.name ); } @@ -919,15 +927,8 @@ fn pr_comment_text(p: PrCommentTextParams) -> String { prevln.pop(); } - if let Some(date_started) = &p.run.date_started { - _ = write!( - &mut prevln, - " ({} UTC)", - date_started - .to_offset(time::UtcOffset::UTC) - .format(&DATE_FORMAT) - .unwrap_or_default() - ); + if let Some(date_started) = &date_started { + _ = write!(&mut prevln, " ({} UTC)", date_started); } if np_content.is_some() || prev_builds.is_some() { diff --git a/src/snapshots/artifactview__app__tests__pr_comment_1.snap b/src/snapshots/artifactview__app__tests__pr_comment_1.snap index ab54b32..6491c49 100644 --- a/src/snapshots/artifactview__app__tests__pr_comment_1.snap +++ b/src/snapshots/artifactview__app__tests__pr_comment_1.snap @@ -2,8 +2,10 @@ source: src/app.rs expression: res --- -### ๐Ÿ‘๏ธ Latest build artifacts (Run [#1](https://code.thetadev.de/thetadev/test-actions/actions/runs/1), [15eed48a83](https://code.thetadev.de/thetadev/test-actions/commit/15eed48a8382513147a949117ef4aa659989d397)) +### Latest build artifacts + + Run [#1](https://code.thetadev.de/thetadev/test-actions/actions/runs/1) ยท [15eed48a83](https://code.thetadev.de/thetadev/test-actions/commit/15eed48a8382513147a949117ef4aa659989d397) ยท 15.06.2024 01:30:00 UTC ๐Ÿ  Hello World ;-)
    Test
    - + diff --git a/src/snapshots/artifactview__app__tests__pr_comment_2.snap b/src/snapshots/artifactview__app__tests__pr_comment_2.snap index fd29a42..3046f07 100644 --- a/src/snapshots/artifactview__app__tests__pr_comment_2.snap +++ b/src/snapshots/artifactview__app__tests__pr_comment_2.snap @@ -2,13 +2,15 @@ source: src/app.rs expression: res --- -### ๐Ÿ‘๏ธ Latest build artifacts (Run [#2](https://code.thetadev.de/thetadev/test-actions/actions/runs/2), [25eed48a83](https://code.thetadev.de/thetadev/test-actions/commit/25eed48a8382513147a949117ef4aa659989d397)) +### Latest build artifacts + + Run [#2](https://code.thetadev.de/thetadev/test-actions/actions/runs/2) ยท [25eed48a83](https://code.thetadev.de/thetadev/test-actions/commit/25eed48a8382513147a949117ef4aa659989d397) ยท 15.06.2024 02:30:00 UTC ๐Ÿ  Hello World ;-)
    Test
    Previous builds -- [#1](https://code.thetadev.de/thetadev/test-actions/actions/runs/1) [[15eed48a83](https://code.thetadev.de/thetadev/test-actions/commit/15eed48a8382513147a949117ef4aa659989d397)] [Artifacts](https://localhost:3000/?url=https://code.thetadev.de/thetadev/test-actions/actions/runs/1): `Hello`, `Test` (15.06.2024 01:30:00 UTC) - +- [#1](https://code.thetadev.de/thetadev/test-actions/actions/runs/1) [[15eed48a83](https://code.thetadev.de/thetadev/test-actions/commit/15eed48a8382513147a949117ef4aa659989d397)] Artifacts: `Hello`, `Test` (15.06.2024 01:30:00 UTC) +
    diff --git a/src/snapshots/artifactview__app__tests__pr_comment_3.snap b/src/snapshots/artifactview__app__tests__pr_comment_3.snap index 0fad38f..02b7544 100644 --- a/src/snapshots/artifactview__app__tests__pr_comment_3.snap +++ b/src/snapshots/artifactview__app__tests__pr_comment_3.snap @@ -2,14 +2,16 @@ source: src/app.rs expression: res --- -### ๐Ÿ‘๏ธ Latest build artifacts (Run [#3](https://code.thetadev.de/thetadev/test-actions/actions/runs/3), [35eed48a83](https://code.thetadev.de/thetadev/test-actions/commit/35eed48a8382513147a949117ef4aa659989d397)) +### Latest build artifacts + + Run [#3](https://code.thetadev.de/thetadev/test-actions/actions/runs/3) ยท [35eed48a83](https://code.thetadev.de/thetadev/test-actions/commit/35eed48a8382513147a949117ef4aa659989d397) ยท 15.06.2024 03:30:00 UTC ๐Ÿ  Hello World ;-)
    Test
    Previous builds -- [#1](https://code.thetadev.de/thetadev/test-actions/actions/runs/1) [[15eed48a83](https://code.thetadev.de/thetadev/test-actions/commit/15eed48a8382513147a949117ef4aa659989d397)] [Artifacts](https://localhost:3000/?url=https://code.thetadev.de/thetadev/test-actions/actions/runs/1): `Hello`, `Test` (15.06.2024 01:30:00 UTC) -- [#2](https://code.thetadev.de/thetadev/test-actions/actions/runs/2) [[25eed48a83](https://code.thetadev.de/thetadev/test-actions/commit/25eed48a8382513147a949117ef4aa659989d397)] [Artifacts](https://localhost:3000/?url=https://code.thetadev.de/thetadev/test-actions/actions/runs/2): `Hello`, `Test` (15.06.2024 02:30:00 UTC) - +- [#1](https://code.thetadev.de/thetadev/test-actions/actions/runs/1) [[15eed48a83](https://code.thetadev.de/thetadev/test-actions/commit/15eed48a8382513147a949117ef4aa659989d397)] Artifacts: `Hello`, `Test` (15.06.2024 01:30:00 UTC) +- [#2](https://code.thetadev.de/thetadev/test-actions/actions/runs/2) [[25eed48a83](https://code.thetadev.de/thetadev/test-actions/commit/25eed48a8382513147a949117ef4aa659989d397)] Artifacts: `Hello`, `Test` (15.06.2024 02:30:00 UTC) +
    diff --git a/tests/tests.rs b/tests/tests.rs index bc305c0..006082c 100644 --- a/tests/tests.rs +++ b/tests/tests.rs @@ -242,8 +242,8 @@ fn parse_listing(doc: &Html) -> Vec { FileEntry { name, - size: parts.next().expect("size"), crc32: parts.next().expect("crc32"), + size: parts.next().expect("size"), } }) .collect() From 97c61aaf9b7bfa175bebdd54266d96fe9ddc2464 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Tue, 2 Jul 2024 01:55:58 +0200 Subject: [PATCH 045/221] chore(release): release artifactview v0.4.5 --- CHANGELOG.md | 27 +++++++++++++++++++++++++++ Cargo.lock | 2 +- Cargo.toml | 2 +- 3 files changed, 29 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2d77011..92c865e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,33 @@ All notable changes to this project will be documented in this file. +## [v0.4.5](https://codeberg.org/ThetaDev/artifactview/compare/v0.4.4..v0.4.5) - 2024-07-01 + +### ๐Ÿš€ Features + +- Update PR comment format - ([197eeea](https://codeberg.org/ThetaDev/artifactview/commit/197eeea75baa8ba44d27ec46c5f552028052869b)) + +### ๐Ÿ› Bug Fixes + +- *(deps)* Update rust crate serde_json to v1.0.118 (#5) - ([fc3b5a1](https://codeberg.org/ThetaDev/artifactview/commit/fc3b5a1530985012ff8364a8fa676626e7544eaf)) +- *(deps)* Update rust crate quick-xml to 0.34.0 (#8) - ([595a9d0](https://codeberg.org/ThetaDev/artifactview/commit/595a9d0f4115faf5056653406b6d05bf671dc2b3)) +- *(deps)* Update rust crate mime_guess to v2.0.5 (#10) - ([94191f8](https://codeberg.org/ThetaDev/artifactview/commit/94191f878d774bef165cca850fcdf00fde16d662)) +- *(deps)* Update rust crate quick-xml to 0.35.0 (#11) - ([7ebe881](https://codeberg.org/ThetaDev/artifactview/commit/7ebe8815462f3e704a79af038b9b1850ed4677ed)) +- *(deps)* Update rust crate serde_json to v1.0.119 (#12) - ([2525022](https://codeberg.org/ThetaDev/artifactview/commit/2525022df76b3c16951983c14a55fa9617114a8e)) +- Swap crc and size column (#3) - ([7d2c686](https://codeberg.org/ThetaDev/artifactview/commit/7d2c68630ec6e75061c050a4c8b035edb472d150)) + +### ๐Ÿ“š Documentation + +- Make example CI step compatible with GitHub+Forgejo - ([39f0019](https://codeberg.org/ThetaDev/artifactview/commit/39f0019455cc23f1b8c39b77d2aaa5af278731a9)) +- Update README - ([40ae3a7](https://codeberg.org/ThetaDev/artifactview/commit/40ae3a7f557c63a0bb2abcd595218c8ec1095fe7)) + +### โš™๏ธ Miscellaneous Tasks + +- *(deps)* Update rust crate proptest to v1.5.0 (#6) - ([797fc0c](https://codeberg.org/ThetaDev/artifactview/commit/797fc0c04c2a51811a24cfc431496e6e5dbf0bea)) +- *(deps)* Update rust crate rstest to 0.21.0 (#7) - ([cec3aa3](https://codeberg.org/ThetaDev/artifactview/commit/cec3aa3fc02e6a871d9c221f61c3f2d8828f9f63)) +- *(deps)* Lock file maintenance (#13) - ([9767167](https://codeberg.org/ThetaDev/artifactview/commit/9767167661e22775614cea7b888a19ee16c17d65)) + + ## [v0.4.4](https://codeberg.org/ThetaDev/artifactview/compare/v0.4.3..v0.4.4) - 2024-06-22 ### ๐Ÿ› Bug Fixes diff --git a/Cargo.lock b/Cargo.lock index dfa49fa..f192ab1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -141,7 +141,7 @@ dependencies = [ [[package]] name = "artifactview" -version = "0.4.4" +version = "0.4.5" dependencies = [ "async_zip", "axum", diff --git a/Cargo.toml b/Cargo.toml index e169deb..be55158 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "artifactview" -version = "0.4.4" +version = "0.4.5" edition = "2021" authors = ["ThetaDev "] license = "MIT" From 06f9c278a857a272580ee1c4f8e58078556accda Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Tue, 2 Jul 2024 00:15:01 +0000 Subject: [PATCH 046/221] fix(deps): update rust crate serde_json to v1.0.120 (#14) Reviewed-on: https://codeberg.org/ThetaDev/artifactview/pulls/14 Co-authored-by: ThetaBot Co-committed-by: ThetaBot --- Cargo.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index f192ab1..09955f8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2562,9 +2562,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.119" +version = "1.0.120" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8eddb61f0697cc3989c5d64b452f5488e2b8a60fd7d5076a3045076ffef8cb0" +checksum = "4e0d21c9a8cae1235ad58a00c11cb40d4b1e5c784f1ef2c537876ed6ffd8b7c5" dependencies = [ "itoa", "ryu", From c06fb2291369f0d17bdc34faed47d9ec39ea9bc0 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Thu, 4 Jul 2024 11:49:38 +0200 Subject: [PATCH 047/221] ci: renovate: enable automerge --- renovate.json | 1 + 1 file changed, 1 insertion(+) diff --git a/renovate.json b/renovate.json index 77f9902..41e5265 100644 --- a/renovate.json +++ b/renovate.json @@ -5,6 +5,7 @@ ":maintainLockFilesWeekly" ], "semanticCommits": "enabled", + "automerge": true, "automergeStrategy": "squash", "osvVulnerabilityAlerts": true, "labels": ["dependency-upgrade"], From 2e0626667e5fc344df9870cd8c924b9dd60886bb Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Thu, 4 Jul 2024 09:55:41 +0000 Subject: [PATCH 048/221] fix(deps): update rust crate quick_cache to 0.6.0 (#15) --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 09955f8..2483224 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2034,9 +2034,9 @@ dependencies = [ [[package]] name = "quick_cache" -version = "0.5.1" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "347e1a588d1de074eeb3c00eadff93db4db65aeb62aee852b1efd0949fe65b6c" +checksum = "3e00e03be638aaab399c951dba6bea0161f99f26df0ccab4ab0fc6eb9535bd48" dependencies = [ "ahash", "equivalent", diff --git a/Cargo.toml b/Cargo.toml index be55158..e80f6c4 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -46,7 +46,7 @@ once_cell = "1.19.0" path_macro = "1.0.0" percent-encoding = "2.3.1" pin-project = "1.1.5" -quick_cache = "0.5.1" +quick_cache = "0.6.0" rand = "0.8.5" regex = "1.10.4" reqwest = { version = "0.12.4", default-features = false, features = [ From 13213861ba0ea30504caa50da2a99af567876e5c Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Sun, 7 Jul 2024 14:46:42 +0000 Subject: [PATCH 049/221] fix(deps): update rust crate serde to v1.0.204 (#16) --- Cargo.lock | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 2483224..29fdd69 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2520,9 +2520,9 @@ checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" [[package]] name = "serde" -version = "1.0.203" +version = "1.0.204" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7253ab4de971e72fb7be983802300c30b5a7f0c2e56fab8abfc6a214307c0094" +checksum = "bc76f558e0cbb2a839d37354c575f1dc3fdc6546b5be373ba43d95f231bf7c12" dependencies = [ "serde_derive", ] @@ -2551,9 +2551,9 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.203" +version = "1.0.204" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "500cbc0ebeb6f46627f50f3f5811ccf6bf00643be300b4c3eabc0ef55dc5b5ba" +checksum = "e0cd7e117be63d3c3678776753929474f3b04a43a080c744d6b0ae2a8c28e222" dependencies = [ "proc-macro2", "quote", From a88f1ba91c054fdb267f0edef10aacf14a909694 Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Sun, 7 Jul 2024 14:47:05 +0000 Subject: [PATCH 050/221] chore(deps): update rust crate axum-test to v15.3.0 (#17) --- Cargo.lock | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 29fdd69..65aca50 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -335,9 +335,9 @@ dependencies = [ [[package]] name = "axum-test" -version = "15.2.0" +version = "15.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0882240a5cff2c0af7b01a684cb4048629841ccbd20305948e12ddc25f1c36c2" +checksum = "2cd2b6c11bc5e65ec121543c5049b7e07be9e7b5a515df79d01f74a72c6a15f0" dependencies = [ "anyhow", "auto-future", @@ -345,7 +345,6 @@ dependencies = [ "bytes", "cookie", "http 1.1.0", - "http-body", "http-body-util", "hyper", "hyper-util", From f41a92243c91086d5d774410b1452303fad64ccf Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Mon, 8 Jul 2024 00:07:06 +0000 Subject: [PATCH 051/221] chore(deps): lock file maintenance (#18) --- Cargo.lock | 154 ++++++++++++++++++++++++++--------------------------- 1 file changed, 77 insertions(+), 77 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 65aca50..debd4fe 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -206,19 +206,19 @@ dependencies = [ "memchr", "pin-project-lite", "xz2", - "zstd 0.13.1", - "zstd-safe 7.1.0", + "zstd 0.13.2", + "zstd-safe 7.2.0", ] [[package]] name = "async-trait" -version = "0.1.80" +version = "0.1.81" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6fa2087f2753a7da8cc1c0dbfcf89579dd57458e36769de5ac750b4671737ca" +checksum = "6e0c28dcc82d7c8ead5cb13beb15405b57b8546e93215673ff8ca0349a028107" dependencies = [ "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.69", ] [[package]] @@ -486,9 +486,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.0.103" +version = "1.0.105" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2755ff20a1d93490d26ba33a6f092a38a508398a5320df5d4b3014fcccce9410" +checksum = "5208975e568d83b6b05cc0a063c8e7e9acc2b43bee6da15616a5b73e109d7437" dependencies = [ "jobserver", "libc", @@ -512,7 +512,7 @@ dependencies = [ "js-sys", "num-traits", "wasm-bindgen", - "windows-targets 0.52.5", + "windows-targets 0.52.6", ] [[package]] @@ -651,7 +651,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331" dependencies = [ "quote", - "syn 2.0.68", + "syn 2.0.69", ] [[package]] @@ -675,7 +675,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.68", + "syn 2.0.69", ] [[package]] @@ -686,7 +686,7 @@ checksum = "733cabb43482b1a1b53eee8583c2b9e8684d592215ea83efd305dd31bc2f0178" dependencies = [ "darling_core", "quote", - "syn 2.0.68", + "syn 2.0.69", ] [[package]] @@ -736,7 +736,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.69", ] [[package]] @@ -746,7 +746,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "206868b8242f27cecce124c19fd88157fbd0dd334df2587f36417bafbc85097b" dependencies = [ "derive_builder_core", - "syn 2.0.68", + "syn 2.0.69", ] [[package]] @@ -759,7 +759,7 @@ dependencies = [ "proc-macro2", "quote", "rustc_version", - "syn 2.0.68", + "syn 2.0.69", ] [[package]] @@ -995,7 +995,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.69", ] [[package]] @@ -1257,9 +1257,9 @@ checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" [[package]] name = "hyper" -version = "1.3.1" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe575dd17d0862a9a33781c8c4696a55c320909004a67a00fb286ba8b1bc496d" +checksum = "c4fe55fb7a772d59a5ff1dfbff4fe0258d19b89fec4b233e75d35d5d2316badc" dependencies = [ "bytes", "futures-channel", @@ -1313,9 +1313,9 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b875924a60b96e5d7b9ae7b066540b1dd1cbd90d1828f54c92e02a283351c56" +checksum = "3ab92f4f49ee4fb4f997c784b7a2e0fa70050211e0b6a287f898c3c9785ca956" dependencies = [ "bytes", "futures-channel", @@ -1719,7 +1719,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.69", ] [[package]] @@ -1772,7 +1772,7 @@ dependencies = [ "libc", "redox_syscall", "smallvec 1.13.2", - "windows-targets 0.52.5", + "windows-targets 0.52.6", ] [[package]] @@ -1869,7 +1869,7 @@ dependencies = [ "phf_shared 0.11.2", "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.69", ] [[package]] @@ -1907,7 +1907,7 @@ checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" dependencies = [ "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.69", ] [[package]] @@ -2287,7 +2287,7 @@ dependencies = [ "regex", "relative-path", "rustc_version", - "syn 2.0.68", + "syn 2.0.69", "unicode-ident", ] @@ -2357,9 +2357,9 @@ dependencies = [ [[package]] name = "rustls-native-certs" -version = "0.7.0" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f1fb85efa936c42c6d5fc28d2629bb51e4b2f4b8a5211e297d599cc5a093792" +checksum = "a88d6d420651b496bdd98684116959239430022a115c1240e6c3993be0b15fba" dependencies = [ "openssl-probe", "rustls-pemfile", @@ -2386,9 +2386,9 @@ checksum = "976295e77ce332211c0d24d92c0e83e50f5c5f046d11082cea19f3df13a3562d" [[package]] name = "rustls-webpki" -version = "0.102.4" +version = "0.102.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff448f7e92e913c4b7d4c6d8e4540a1724b319b4152b8aef6d4cf8339712b33e" +checksum = "f9a6fccd794a42c2c105b513a2f62bc3fd8f3ba57a4593677ceb0bd035164d78" dependencies = [ "ring", "rustls-pki-types", @@ -2556,7 +2556,7 @@ checksum = "e0cd7e117be63d3c3678776753929474f3b04a43a080c744d6b0ae2a8c28e222" dependencies = [ "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.69", ] [[package]] @@ -2769,9 +2769,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.68" +version = "2.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "901fa70d88b9d6c98022e23b4136f9f3e54e4662c3bc1bd1d84a42a9a0f0c1e9" +checksum = "201fcda3845c23e8212cd466bfebf0bd20694490fc0356ae8e428e0824a915a6" dependencies = [ "proc-macro2", "quote", @@ -2856,7 +2856,7 @@ checksum = "46c3384250002a6d5af4d114f2845d37b57521033f30d5c3f46c4d70e1197533" dependencies = [ "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.69", ] [[package]] @@ -2902,9 +2902,9 @@ dependencies = [ [[package]] name = "tinyvec" -version = "1.6.1" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c55115c6fbe2d2bef26eb09ad74bde02d8255476fc0c7b515ef09fbb35742d82" +checksum = "ce6b6a2fb3a985e99cebfaefa9faa3024743da73304ca1c683a36429613d3d22" dependencies = [ "tinyvec_macros", ] @@ -2942,7 +2942,7 @@ checksum = "5f5ae998a069d4b5aba8ee9dad856af7d520c3699e6159b185c2acd48155d39a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.69", ] [[package]] @@ -3054,7 +3054,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.69", ] [[package]] @@ -3294,7 +3294,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.69", "wasm-bindgen-shared", ] @@ -3328,7 +3328,7 @@ checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.69", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -3408,7 +3408,7 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" dependencies = [ - "windows-targets 0.52.5", + "windows-targets 0.52.6", ] [[package]] @@ -3426,7 +3426,7 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" dependencies = [ - "windows-targets 0.52.5", + "windows-targets 0.52.6", ] [[package]] @@ -3446,18 +3446,18 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" dependencies = [ - "windows_aarch64_gnullvm 0.52.5", - "windows_aarch64_msvc 0.52.5", - "windows_i686_gnu 0.52.5", + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", "windows_i686_gnullvm", - "windows_i686_msvc 0.52.5", - "windows_x86_64_gnu 0.52.5", - "windows_x86_64_gnullvm 0.52.5", - "windows_x86_64_msvc 0.52.5", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", ] [[package]] @@ -3468,9 +3468,9 @@ checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" [[package]] name = "windows_aarch64_gnullvm" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" [[package]] name = "windows_aarch64_msvc" @@ -3480,9 +3480,9 @@ checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" [[package]] name = "windows_aarch64_msvc" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" [[package]] name = "windows_i686_gnu" @@ -3492,15 +3492,15 @@ checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" [[package]] name = "windows_i686_gnu" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88ba073cf16d5372720ec942a8ccbf61626074c6d4dd2e745299726ce8b89670" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" [[package]] name = "windows_i686_gnullvm" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" [[package]] name = "windows_i686_msvc" @@ -3510,9 +3510,9 @@ checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" [[package]] name = "windows_i686_msvc" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" [[package]] name = "windows_x86_64_gnu" @@ -3522,9 +3522,9 @@ checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" [[package]] name = "windows_x86_64_gnu" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" [[package]] name = "windows_x86_64_gnullvm" @@ -3534,9 +3534,9 @@ checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" [[package]] name = "windows_x86_64_gnullvm" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" [[package]] name = "windows_x86_64_msvc" @@ -3546,9 +3546,9 @@ checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] name = "windows_x86_64_msvc" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "winreg" @@ -3678,22 +3678,22 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.7.34" +version = "0.7.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae87e3fcd617500e5d106f0380cf7b77f3c6092aae37191433159dda23cfb087" +checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.7.34" +version = "0.7.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15e934569e47891f7d9411f1a451d947a60e000ab3bd24fbb970f000387d1b3b" +checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.69", ] [[package]] @@ -3733,11 +3733,11 @@ dependencies = [ [[package]] name = "zstd" -version = "0.13.1" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d789b1514203a1120ad2429eae43a7bd32b90976a7bb8a05f7ec02fa88cc23a" +checksum = "fcf2b778a664581e31e389454a7072dab1647606d44f7feea22cd5abb9c9f3f9" dependencies = [ - "zstd-safe 7.1.0", + "zstd-safe 7.2.0", ] [[package]] @@ -3752,18 +3752,18 @@ dependencies = [ [[package]] name = "zstd-safe" -version = "7.1.0" +version = "7.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cd99b45c6bc03a018c8b8a86025678c87e55526064e38f9df301989dce7ec0a" +checksum = "fa556e971e7b568dc775c136fc9de8c779b1c2fc3a63defaafadffdbd3181afa" dependencies = [ "zstd-sys", ] [[package]] name = "zstd-sys" -version = "2.0.11+zstd.1.5.6" +version = "2.0.12+zstd.1.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75652c55c0b6f3e6f12eb786fe1bc960396bf05a1eb3bf1f3691c3610ac2e6d4" +checksum = "0a4e40c320c3cb459d9a9ff6de98cff88f4751ee9275d140e2be94a2b74e4c13" dependencies = [ "cc", "pkg-config", From 5f94794d24f300762da2ab162f4336508b516eda Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Tue, 9 Jul 2024 00:05:36 +0000 Subject: [PATCH 052/221] fix(deps): update rust crate quick-xml to 0.36.0 (#19) --- Cargo.lock | 4 ++-- crates/junit-parser/Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index debd4fe..921aaba 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2024,9 +2024,9 @@ checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" [[package]] name = "quick-xml" -version = "0.35.0" +version = "0.36.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86e446ed58cef1bbfe847bc2fda0e2e4ea9f0e57b90c507d4781292590d72a4e" +checksum = "4091e032efecb09d7b1f711f487b85ab925632a842627e3200fb088382cde32c" dependencies = [ "memchr", ] diff --git a/crates/junit-parser/Cargo.toml b/crates/junit-parser/Cargo.toml index c18d2b9..9cc1683 100644 --- a/crates/junit-parser/Cargo.toml +++ b/crates/junit-parser/Cargo.toml @@ -7,7 +7,7 @@ license = "BSD-2-Clause" repository = "https://github.com/borisfaure/junit-parser" [dependencies] -quick-xml = { version = "0.35.0", features = ["escape-html"] } +quick-xml = { version = "0.36.0", features = ["escape-html"] } thiserror = "1.0.61" time = { version = "0.3.36", features = ["parsing", "serde-well-known"] } serde = { version = "1.0", features = ["derive"] } From c9db0567916e500017034d6a99eb48a25a1671e0 Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Thu, 25 Jul 2024 19:42:49 +0000 Subject: [PATCH 053/221] chore(deps): update rust crate env_logger to v0.11.5 (#20) --- Cargo.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 921aaba..5ea641c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -836,9 +836,9 @@ dependencies = [ [[package]] name = "env_logger" -version = "0.11.3" +version = "0.11.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38b35839ba51819680ba087cd351788c9a3c476841207e0b8cee0b04722343b9" +checksum = "e13fa619b91fb2381732789fc5de83b45675e882f66623b7d8cb4f643017018d" dependencies = [ "anstream", "anstyle", From 1a5c056204b488e36ef95145b05a674c661a2154 Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Thu, 25 Jul 2024 19:43:56 +0000 Subject: [PATCH 054/221] chore(deps): update rust crate scraper to v0.19.1 (#21) --- Cargo.lock | 30 ++++++++++++++++++++---------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 5ea641c..5917570 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1171,16 +1171,16 @@ dependencies = [ [[package]] name = "html5ever" -version = "0.26.0" +version = "0.27.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bea68cab48b8459f17cf1c944c67ddc572d272d9f2b274140f223ecb1da4a3b7" +checksum = "c13771afe0e6e846f1e67d038d4cb29998a6779f93c809212e4e9c32efd244d4" dependencies = [ "log", "mac", "markup5ever", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.69", ] [[package]] @@ -1516,13 +1516,13 @@ checksum = "c41e0c4fef86961ac6d6f8a82609f55f31b05e4fce149ac5710e439df7619ba4" [[package]] name = "markup5ever" -version = "0.11.0" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a2629bb1404f3d34c2e921f21fd34ba00b206124c81f65c50b43b6aaefeb016" +checksum = "16ce3abbeba692c8b8441d036ef91aea6df8da2c6b6e21c7e14d3c18e526be45" dependencies = [ "log", - "phf 0.10.1", - "phf_codegen", + "phf 0.11.2", + "phf_codegen 0.11.2", "string_cache", "string_cache_codegen", "tendril", @@ -1839,6 +1839,16 @@ dependencies = [ "phf_shared 0.10.0", ] +[[package]] +name = "phf_codegen" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8d39688d359e6b34654d328e262234662d16cc0f60ec8dcbe5e718709342a5a" +dependencies = [ + "phf_generator 0.11.2", + "phf_shared 0.11.2", +] + [[package]] name = "phf_generator" version = "0.10.0" @@ -2445,9 +2455,9 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "scraper" -version = "0.19.0" +version = "0.19.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b80b33679ff7a0ea53d37f3b39de77ea0c75b12c5805ac43ec0c33b3051af1b" +checksum = "761fb705fdf625482d2ed91d3f0559dcfeab2798fe2771c69560a774865d0802" dependencies = [ "ahash", "cssparser", @@ -2505,7 +2515,7 @@ dependencies = [ "log", "new_debug_unreachable", "phf 0.10.1", - "phf_codegen", + "phf_codegen 0.10.0", "precomputed-hash", "servo_arc", "smallvec 1.13.2", From 88c635cbad535eb902ea54a314e8511965a792b4 Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Thu, 25 Jul 2024 19:45:19 +0000 Subject: [PATCH 055/221] fix(deps): update rust crate async-compression to v0.4.12 (#22) --- Cargo.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 5917570..b039841 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -194,9 +194,9 @@ dependencies = [ [[package]] name = "async-compression" -version = "0.4.11" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd066d0b4ef8ecb03a55319dc13aa6910616d0f44008a045bb1835af830abff5" +checksum = "fec134f64e2bc57411226dfc4e52dec859ddfc7e711fc5e07b612584f000e4aa" dependencies = [ "bzip2", "deflate64", From c5c9f85e4baec58dcc2001ac3a7f005c7f501557 Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Thu, 25 Jul 2024 19:48:23 +0000 Subject: [PATCH 056/221] fix(deps): update rust crate quick-xml to v0.36.1 (#23) --- Cargo.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index b039841..cf2a3d7 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2034,9 +2034,9 @@ checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" [[package]] name = "quick-xml" -version = "0.36.0" +version = "0.36.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4091e032efecb09d7b1f711f487b85ab925632a842627e3200fb088382cde32c" +checksum = "96a05e2e8efddfa51a84ca47cec303fac86c8541b686d37cac5efc0e094417bc" dependencies = [ "memchr", ] From a5d49733fd84ba37e8c258f191bf79f4affb86f9 Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Thu, 25 Jul 2024 19:48:54 +0000 Subject: [PATCH 057/221] fix(deps): update rust crate quick_cache to v0.6.2 (#24) --- Cargo.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index cf2a3d7..ad138fa 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2043,9 +2043,9 @@ dependencies = [ [[package]] name = "quick_cache" -version = "0.6.0" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e00e03be638aaab399c951dba6bea0161f99f26df0ccab4ab0fc6eb9535bd48" +checksum = "ec932c60e6faf77dc6601ea149a23d821598b019b450bb1d98fe89c0301c0b61" dependencies = [ "ahash", "equivalent", From b67b1730b1e9c06b4ff99774c37c71391f48f93a Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Fri, 26 Jul 2024 00:04:38 +0000 Subject: [PATCH 058/221] fix(deps): update rust crate thiserror to v1.0.63 (#25) --- Cargo.lock | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index ad138fa..4550add 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2851,18 +2851,18 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.61" +version = "1.0.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c546c80d6be4bc6a00c0f01730c08df82eaa7a7a61f11d656526506112cc1709" +checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.61" +version = "1.0.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46c3384250002a6d5af4d114f2845d37b57521033f30d5c3f46c4d70e1197533" +checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" dependencies = [ "proc-macro2", "quote", From 057a365a0ecafe00fa84e53c736272f5db26f0f1 Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Fri, 26 Jul 2024 00:06:51 +0000 Subject: [PATCH 059/221] chore(deps): update rust crate tokio to v1.39.1 (#26) --- Cargo.lock | 28 +++++++++------------------- 1 file changed, 9 insertions(+), 19 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 4550add..b89cf3e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1573,13 +1573,14 @@ dependencies = [ [[package]] name = "mio" -version = "0.8.11" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" +checksum = "4569e456d394deccd22ce1c1913e6ea0e54519f577285001215d33557431afe4" dependencies = [ + "hermit-abi", "libc", "wasi", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] @@ -1649,16 +1650,6 @@ dependencies = [ "libm", ] -[[package]] -name = "num_cpus" -version = "1.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" -dependencies = [ - "hermit-abi", - "libc", -] - [[package]] name = "object" version = "0.36.1" @@ -2927,28 +2918,27 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.38.0" +version = "1.39.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba4f4a02a7a80d6f274636f0aa95c7e383b912d41fe721a31f29e29698585a4a" +checksum = "d040ac2b29ab03b09d4129c2f5bbd012a3ac2f79d38ff506a4bf8dd34b0eac8a" dependencies = [ "backtrace", "bytes", "libc", "mio", - "num_cpus", "parking_lot", "pin-project-lite", "signal-hook-registry", "socket2", "tokio-macros", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] name = "tokio-macros" -version = "2.3.0" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f5ae998a069d4b5aba8ee9dad856af7d520c3699e6159b185c2acd48155d39a" +checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" dependencies = [ "proc-macro2", "quote", From 642930d397efa106267bd2aff8c413ab4173a5c6 Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Fri, 26 Jul 2024 00:07:16 +0000 Subject: [PATCH 060/221] fix(deps): update rust crate comrak to 0.26.0 (#27) --- Cargo.lock | 15 +++++++++++++-- Cargo.toml | 2 +- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index b89cf3e..74ea52f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -484,6 +484,16 @@ dependencies = [ "pkg-config", ] +[[package]] +name = "caseless" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "808dab3318747be122cb31d36de18d4d1c81277a76f8332a02b81a3d73463d7f" +dependencies = [ + "regex", + "unicode-normalization", +] + [[package]] name = "cc" version = "1.0.105" @@ -533,10 +543,11 @@ checksum = "0b6a852b24ab71dffc585bcb46eaf7959d175cb865a7152e35b348d1b2960422" [[package]] name = "comrak" -version = "0.24.1" +version = "0.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a972c8ec1be8065f7b597b5f7f5b3be535db780280644aebdcd1966decf58dc" +checksum = "395ab67843c57df5a4ee29d610740828dbc928cc64ecf0f2a1d5cd0e98e107a9" dependencies = [ + "caseless", "derive_builder", "entities", "memchr", diff --git a/Cargo.toml b/Cargo.toml index e80f6c4..8786e45 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -30,7 +30,7 @@ axum = { version = "0.7.5", default-features = false, features = [ "tracing", ] } axum-extra = { version = "0.9.3", features = ["typed-header"] } -comrak = { version = "0.24.1", default-features = false } +comrak = { version = "0.26.0", default-features = false } dotenvy = "0.15.7" envy = { path = "crates/envy" } flate2 = "1.0.30" From 3ae7f8813e19818098a6b67d0c6770db8a79defe Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Sun, 28 Jul 2024 00:07:04 +0000 Subject: [PATCH 061/221] chore(deps): update rust crate tokio to v1.39.2 (#28) --- Cargo.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 74ea52f..90f9b35 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2929,9 +2929,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.39.1" +version = "1.39.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d040ac2b29ab03b09d4129c2f5bbd012a3ac2f79d38ff506a4bf8dd34b0eac8a" +checksum = "daa4fb1bc778bd6f04cbfc4bb2d06a7396a8f299dc33ea1900cedaa316f467b1" dependencies = [ "backtrace", "bytes", From a7160fadde6c95c6c03c90c5d2301738c8e559c2 Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Sun, 28 Jul 2024 16:07:27 +0000 Subject: [PATCH 062/221] chore(deps): update rust crate zip to v2 (#9) Reviewed-on: https://codeberg.org/ThetaDev/artifactview/pulls/9 Co-authored-by: ThetaBot Co-committed-by: ThetaBot --- Cargo.lock | 338 ++++++++++-------- crates/async_zip/Cargo.toml | 2 +- crates/async_zip/src/tests/read/zip64/mod.rs | 2 +- crates/async_zip/src/tests/write/zip64/mod.rs | 2 +- 4 files changed, 199 insertions(+), 145 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 90f9b35..7824092 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -77,9 +77,9 @@ dependencies = [ [[package]] name = "anstream" -version = "0.6.14" +version = "0.6.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "418c75fa768af9c03be99d17643f93f79bbba589895012a80e3452a19ddda15b" +checksum = "64e15c1ab1f89faffbf04a634d5e1962e9074f2741eef6d97f3c4e322426d526" dependencies = [ "anstyle", "anstyle-parse", @@ -92,33 +92,33 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.7" +version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "038dfcf04a5feb68e9c60b21c9625a54c2c0616e79b72b0fd87075a056ae1d1b" +checksum = "1bec1de6f59aedf83baf9ff929c98f2ad654b97c9510f4e70cf6f661d49fd5b1" [[package]] name = "anstyle-parse" -version = "0.2.4" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c03a11a9034d92058ceb6ee011ce58af4a9bf61491aa7e1e59ecd24bd40d22d4" +checksum = "eb47de1e80c2b463c735db5b217a0ddc39d612e7ac9e2e96a5aed1f57616c1cb" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.1.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad186efb764318d35165f1758e7dcef3b10628e26d41a44bc5550652e6804391" +checksum = "6d36fc52c7f6c869915e99412912f22093507da8d9e942ceaf66fe4b7c14422a" dependencies = [ "windows-sys 0.52.0", ] [[package]] name = "anstyle-wincon" -version = "3.0.3" +version = "3.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61a38449feb7068f52bb06c12759005cf459ee52bb4adc1d5a7c4322d716fb19" +checksum = "5bf74e1b6e971609db8ca7a9ce79fd5768ab6ae46441c572e46cf596f59e57f8" dependencies = [ "anstyle", "windows-sys 0.52.0", @@ -130,6 +130,15 @@ version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da" +[[package]] +name = "arbitrary" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d5a26814d8dcb93b0e5a0ff3c6d80a8843bafb21b39e8e18a6f05471870e110" +dependencies = [ + "derive_arbitrary", +] + [[package]] name = "array-init" version = "0.0.4" @@ -206,8 +215,8 @@ dependencies = [ "memchr", "pin-project-lite", "xz2", - "zstd 0.13.2", - "zstd-safe 7.2.0", + "zstd", + "zstd-safe", ] [[package]] @@ -218,7 +227,7 @@ checksum = "6e0c28dcc82d7c8ead5cb13beb15405b57b8546e93215673ff8ca0349a028107" dependencies = [ "proc-macro2", "quote", - "syn 2.0.69", + "syn 2.0.72", ] [[package]] @@ -388,12 +397,6 @@ version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" -[[package]] -name = "base64ct" -version = "1.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" - [[package]] name = "bincode" version = "1.3.3" @@ -459,9 +462,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.6.0" +version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9" +checksum = "a12916984aab3fa6e39d655a33e09c0071eb36d6ab3aea5c2d78551f1df6d952" [[package]] name = "bzip2" @@ -496,13 +499,12 @@ dependencies = [ [[package]] name = "cc" -version = "1.0.105" +version = "1.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5208975e568d83b6b05cc0a063c8e7e9acc2b43bee6da15616a5b73e109d7437" +checksum = "2aba8f4e9906c7ce3c73463f62a7f0c65183ada1a2d47e397cc8810827f9694f" dependencies = [ "jobserver", "libc", - "once_cell", ] [[package]] @@ -537,9 +539,9 @@ dependencies = [ [[package]] name = "colorchoice" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b6a852b24ab71dffc585bcb46eaf7959d175cb865a7152e35b348d1b2960422" +checksum = "d3fd119d74b830634cea2a0f58bbd0d54540518a14397557951e79340abc28c0" [[package]] name = "comrak" @@ -572,9 +574,9 @@ dependencies = [ [[package]] name = "constant_time_eq" -version = "0.1.5" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" +checksum = "f7144d30dcf0fafbce74250a3963025d8d52177934239851c917d29f1df280c2" [[package]] name = "convert_case" @@ -617,6 +619,21 @@ dependencies = [ "libc", ] +[[package]] +name = "crc" +version = "3.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69e6e4d7b33a94f0991c26729976b10ebde1d34c3ee82408fb536164fa10d636" +dependencies = [ + "crc-catalog", +] + +[[package]] +name = "crc-catalog" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5" + [[package]] name = "crc32fast" version = "1.4.2" @@ -662,14 +679,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331" dependencies = [ "quote", - "syn 2.0.69", + "syn 2.0.72", ] [[package]] name = "darling" -version = "0.20.9" +version = "0.20.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83b2eb4d90d12bdda5ed17de686c2acb4c57914f8f921b8da7e112b5a36f3fe1" +checksum = "6f63b86c8a8826a49b8c21f08a2d07338eec8d900540f8630dc76284be802989" dependencies = [ "darling_core", "darling_macro", @@ -677,27 +694,27 @@ dependencies = [ [[package]] name = "darling_core" -version = "0.20.9" +version = "0.20.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "622687fe0bac72a04e5599029151f5796111b90f1baaa9b544d807a5e31cd120" +checksum = "95133861a8032aaea082871032f5815eb9e98cef03fa916ab4500513994df9e5" dependencies = [ "fnv", "ident_case", "proc-macro2", "quote", "strsim", - "syn 2.0.69", + "syn 2.0.72", ] [[package]] name = "darling_macro" -version = "0.20.9" +version = "0.20.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "733cabb43482b1a1b53eee8583c2b9e8684d592215ea83efd305dd31bc2f0178" +checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" dependencies = [ "darling_core", "quote", - "syn 2.0.69", + "syn 2.0.72", ] [[package]] @@ -715,9 +732,9 @@ dependencies = [ [[package]] name = "deflate64" -version = "0.1.8" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83ace6c86376be0b6cdcf3fb41882e81d94b31587573d1cfa9d01cd06bba210d" +checksum = "da692b8d1080ea3045efaab14434d40468c3d8657e42abddfffca87b428f4c1b" [[package]] name = "deranged" @@ -729,6 +746,17 @@ dependencies = [ "serde", ] +[[package]] +name = "derive_arbitrary" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67e77553c4162a157adbf834ebae5b415acbecbeafc7a74b0e886657506a7611" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.72", +] + [[package]] name = "derive_builder" version = "0.20.0" @@ -747,7 +775,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.69", + "syn 2.0.72", ] [[package]] @@ -757,7 +785,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "206868b8242f27cecce124c19fd88157fbd0dd334df2587f36417bafbc85097b" dependencies = [ "derive_builder_core", - "syn 2.0.69", + "syn 2.0.72", ] [[package]] @@ -770,7 +798,7 @@ dependencies = [ "proc-macro2", "quote", "rustc_version", - "syn 2.0.69", + "syn 2.0.72", ] [[package]] @@ -796,6 +824,17 @@ dependencies = [ "subtle", ] +[[package]] +name = "displaydoc" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.72", +] + [[package]] name = "dotenvy" version = "0.15.7" @@ -837,9 +876,9 @@ checksum = "b5320ae4c3782150d900b79807611a59a99fc9a1d61d686faafc24b93fc8d7ca" [[package]] name = "env_filter" -version = "0.1.0" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a009aa4810eb158359dda09d0c87378e4bbb89b5a801f016885a4707ba24f7ea" +checksum = "4f2c92ceda6ceec50f43169f9ee8424fe2db276791afde7b2cd8bc084cb376ab" dependencies = [ "log", "regex", @@ -1006,7 +1045,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.69", + "syn 2.0.72", ] [[package]] @@ -1191,7 +1230,7 @@ dependencies = [ "markup5ever", "proc-macro2", "quote", - "syn 2.0.69", + "syn 2.0.72", ] [[package]] @@ -1218,9 +1257,9 @@ dependencies = [ [[package]] name = "http-body" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cac85db508abc24a2e48553ba12a996e87244a0395ce011e62b37158745d643" +checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" dependencies = [ "bytes", "http 1.1.0", @@ -1268,9 +1307,9 @@ checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" [[package]] name = "hyper" -version = "1.4.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4fe55fb7a772d59a5ff1dfbff4fe0258d19b89fec4b233e75d35d5d2316badc" +checksum = "50dfd22e0e76d0f662d429a5f80fcaf3855009297eab6a0a9f8543834744ba05" dependencies = [ "bytes", "futures-channel", @@ -1421,9 +1460,9 @@ checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" [[package]] name = "is_terminal_polyfill" -version = "1.70.0" +version = "1.70.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8478577c03552c21db0e2724ffb8986a5ce7af88107e6be5d2ee6e158c12800" +checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" [[package]] name = "itoa" @@ -1433,9 +1472,9 @@ checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" [[package]] name = "jobserver" -version = "0.1.31" +version = "0.1.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2b099aaa34a9751c5bf0878add70444e1ed2dd73f347be99003d4577277de6e" +checksum = "48d1dbcbbeb6a7fec7e059840aa538bd62aaccf972c7346c4d9d2059312853d0" dependencies = [ "libc", ] @@ -1502,12 +1541,28 @@ dependencies = [ "scopeguard", ] +[[package]] +name = "lockfree-object-pool" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9374ef4228402d4b7e403e5838cb880d9ee663314b0a900d5a6aabf0c213552e" + [[package]] name = "log" version = "0.4.22" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" +[[package]] +name = "lzma-rs" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "297e814c836ae64db86b36cf2a557ba54368d03f6afcd7d947c266692f71115e" +dependencies = [ + "byteorder", + "crc", +] + [[package]] name = "lzma-sys" version = "0.1.20" @@ -1663,9 +1718,9 @@ dependencies = [ [[package]] name = "object" -version = "0.36.1" +version = "0.36.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "081b846d1d56ddfc18fdf1a922e4f6e07a11768ea1b92dec44e42b72712ccfce" +checksum = "3f203fa8daa7bb185f760ae12bd8e097f63d17041dcdcaf675ac54cdf863170e" dependencies = [ "memchr", ] @@ -1700,9 +1755,9 @@ dependencies = [ [[package]] name = "openssl" -version = "0.10.64" +version = "0.10.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95a0481286a310808298130d22dd1fef0fa571e05a8f44ec801801e84b216b1f" +checksum = "9529f4786b70a3e8c61e11179af17ab6188ad8d0ded78c5529441ed39d4bd9c1" dependencies = [ "bitflags 2.6.0", "cfg-if", @@ -1721,7 +1776,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.69", + "syn 2.0.72", ] [[package]] @@ -1732,9 +1787,9 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "openssl-sys" -version = "0.9.102" +version = "0.9.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c597637d56fbc83893a35eb0dd04b2b8e7a50c91e64e9493e398b5df4fb45fa2" +checksum = "7f9e8deee91df40a943c71b917e5874b951d32a802526c85721ce3b776c929d6" dependencies = [ "cc", "libc", @@ -1777,17 +1832,6 @@ dependencies = [ "windows-targets 0.52.6", ] -[[package]] -name = "password-hash" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7676374caaee8a325c9e7a2ae557f216c5563a171d6997b0ef8a65af35147700" -dependencies = [ - "base64ct", - "rand_core", - "subtle", -] - [[package]] name = "path_macro" version = "1.0.0" @@ -1796,14 +1840,12 @@ checksum = "a6e819bbd49d5939f682638fa54826bf1650abddcd65d000923de8ad63cc7d15" [[package]] name = "pbkdf2" -version = "0.11.0" +version = "0.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83a0692ec44e4cf1ef28ca317f14f8f07da2d95ec3fa01f86e4467b725e60917" +checksum = "f8ed6a7761f76e3b9f92dfb0a60a6a6477c61024b775147ff0973a02653abaf2" dependencies = [ "digest", "hmac", - "password-hash", - "sha2", ] [[package]] @@ -1881,7 +1923,7 @@ dependencies = [ "phf_shared 0.11.2", "proc-macro2", "quote", - "syn 2.0.69", + "syn 2.0.72", ] [[package]] @@ -1919,7 +1961,7 @@ checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" dependencies = [ "proc-macro2", "quote", - "syn 2.0.69", + "syn 2.0.72", ] [[package]] @@ -1942,9 +1984,9 @@ checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" [[package]] name = "portable-atomic" -version = "1.6.0" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7170ef9988bc169ba16dd36a7fa041e5c4cbeb6a35b76d4c03daded371eae7c0" +checksum = "da544ee218f0d287a911e9c99a39a8c9bc8fcad3cb8db5959940044ecfc67265" [[package]] name = "powerfmt" @@ -2091,14 +2133,13 @@ dependencies = [ [[package]] name = "quinn-udp" -version = "0.5.2" +version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9096629c45860fc7fb143e125eb826b5e721e10be3263160c7d60ca832cf8c46" +checksum = "8bffec3605b73c6f1754535084a85229fa8a30f86014e6c81aeec4abb68b0285" dependencies = [ "libc", "once_cell", "socket2", - "tracing", "windows-sys 0.52.0", ] @@ -2152,18 +2193,18 @@ dependencies = [ [[package]] name = "raw-cpuid" -version = "11.0.2" +version = "11.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e29830cbb1290e404f24c73af91c5d8d631ce7e128691e9477556b540cd01ecd" +checksum = "cb9ee317cfe3fbd54b36a511efc1edd42e216903c9cd575e686dd68a2ba90d8d" dependencies = [ "bitflags 2.6.0", ] [[package]] name = "redox_syscall" -version = "0.5.2" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c82cf8cff14456045f55ec4241383baeff27af886adb72ffb2162f99911de0fd" +checksum = "2a908a6e00f1fdd0dfd9c0eb08ce85126f6d8bbda50017e74bc4a4b7d4a926a4" dependencies = [ "bitflags 2.6.0", ] @@ -2299,7 +2340,7 @@ dependencies = [ "regex", "relative-path", "rustc_version", - "syn 2.0.69", + "syn 2.0.72", "unicode-ident", ] @@ -2355,9 +2396,9 @@ dependencies = [ [[package]] name = "rustls" -version = "0.23.10" +version = "0.23.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05cff451f60db80f490f3c182b77c35260baace73209e9cdbbe526bfe3a4d402" +checksum = "c58f8c84392efc0a126acce10fa59ff7b3d2ac06ab451a33f2741989b806b044" dependencies = [ "once_cell", "ring", @@ -2398,9 +2439,9 @@ checksum = "976295e77ce332211c0d24d92c0e83e50f5c5f046d11082cea19f3df13a3562d" [[package]] name = "rustls-webpki" -version = "0.102.5" +version = "0.102.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9a6fccd794a42c2c105b513a2f62bc3fd8f3ba57a4593677ceb0bd035164d78" +checksum = "8e6b52d4fda176fd835fdc55a835d4a89b8499cad995885a21149d5ad62f852e" dependencies = [ "ring", "rustls-pki-types", @@ -2483,9 +2524,9 @@ dependencies = [ [[package]] name = "security-framework" -version = "2.11.0" +version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c627723fd09706bacdb5cf41499e95098555af3c3c29d014dc3c458ef6be11c0" +checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" dependencies = [ "bitflags 2.6.0", "core-foundation", @@ -2496,9 +2537,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.11.0" +version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "317936bbbd05227752583946b9e66d7ce3b489f84e11a94a510b4437fef407d7" +checksum = "75da29fe9b9b08fe9d6b22b5b4bcbc75d8db3aa31e639aa56bb62e9d46bfceaf" dependencies = [ "core-foundation-sys", "libc", @@ -2568,7 +2609,7 @@ checksum = "e0cd7e117be63d3c3678776753929474f3b04a43a080c744d6b0ae2a8c28e222" dependencies = [ "proc-macro2", "quote", - "syn 2.0.69", + "syn 2.0.72", ] [[package]] @@ -2624,17 +2665,6 @@ dependencies = [ "digest", ] -[[package]] -name = "sha2" -version = "0.10.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest", -] - [[package]] name = "sharded-slab" version = "0.1.7" @@ -2654,10 +2684,16 @@ dependencies = [ ] [[package]] -name = "similar" -version = "2.5.0" +name = "simd-adler32" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa42c91313f1d05da9b26f267f931cf178d4aba455b4c4622dd7355eb80c6640" +checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" + +[[package]] +name = "similar" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1de1d4f81173b03af4c0cbed3c898f6bff5b870e4a7f5d6f4057d62a7a4b686e" [[package]] name = "siphasher" @@ -2781,9 +2817,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.69" +version = "2.0.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "201fcda3845c23e8212cd466bfebf0bd20694490fc0356ae8e428e0824a915a6" +checksum = "dc4b9b9bf2add8093d3f2c0204471e951b2285580335de42f9d2534f3ae7a8af" dependencies = [ "proc-macro2", "quote", @@ -2868,7 +2904,7 @@ checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" dependencies = [ "proc-macro2", "quote", - "syn 2.0.69", + "syn 2.0.72", ] [[package]] @@ -2914,9 +2950,9 @@ dependencies = [ [[package]] name = "tinyvec" -version = "1.7.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce6b6a2fb3a985e99cebfaefa9faa3024743da73304ca1c683a36429613d3d22" +checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938" dependencies = [ "tinyvec_macros", ] @@ -2953,7 +2989,7 @@ checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" dependencies = [ "proc-macro2", "quote", - "syn 2.0.69", + "syn 2.0.72", ] [[package]] @@ -3065,7 +3101,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.69", + "syn 2.0.72", ] [[package]] @@ -3246,9 +3282,9 @@ checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" [[package]] name = "version_check" -version = "0.9.4" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" [[package]] name = "wait-timeout" @@ -3305,7 +3341,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.69", + "syn 2.0.72", "wasm-bindgen-shared", ] @@ -3339,7 +3375,7 @@ checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.69", + "syn 2.0.72", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -3704,7 +3740,7 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.69", + "syn 2.0.72", ] [[package]] @@ -3712,34 +3748,62 @@ name = "zeroize" version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" +dependencies = [ + "zeroize_derive", +] + +[[package]] +name = "zeroize_derive" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.72", +] [[package]] name = "zip" -version = "0.6.6" +version = "2.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "760394e246e4c28189f19d488c058bf16f564016aefac5d32bb1f3b51d5e9261" +checksum = "b895748a3ebcb69b9d38dcfdf21760859a4b0d0b0015277640c2ef4c69640e6f" dependencies = [ "aes", - "byteorder", + "arbitrary", "bzip2", "constant_time_eq", "crc32fast", "crossbeam-utils", + "deflate64", + "displaydoc", "flate2", "hmac", + "indexmap", + "lzma-rs", + "memchr", "pbkdf2", + "rand", "sha1", + "thiserror", "time", - "zstd 0.11.2+zstd.1.5.2", + "zeroize", + "zopfli", + "zstd", ] [[package]] -name = "zstd" -version = "0.11.2+zstd.1.5.2" +name = "zopfli" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20cc960326ece64f010d2d2107537f26dc589a6573a316bd5b1dba685fa5fde4" +checksum = "e5019f391bac5cf252e93bbcc53d039ffd62c7bfb7c150414d61369afe57e946" dependencies = [ - "zstd-safe 5.0.2+zstd.1.5.2", + "bumpalo", + "crc32fast", + "lockfree-object-pool", + "log", + "once_cell", + "simd-adler32", ] [[package]] @@ -3748,17 +3812,7 @@ version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fcf2b778a664581e31e389454a7072dab1647606d44f7feea22cd5abb9c9f3f9" dependencies = [ - "zstd-safe 7.2.0", -] - -[[package]] -name = "zstd-safe" -version = "5.0.2+zstd.1.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d2a5585e04f9eea4b2a3d1eca508c4dee9592a89ef6f450c11719da0726f4db" -dependencies = [ - "libc", - "zstd-sys", + "zstd-safe", ] [[package]] diff --git a/crates/async_zip/Cargo.toml b/crates/async_zip/Cargo.toml index 2f32d76..b5d3193 100644 --- a/crates/async_zip/Cargo.toml +++ b/crates/async_zip/Cargo.toml @@ -49,7 +49,7 @@ tokio-util = { version = "0.7", features = ["compat"], optional = true } tokio = { version = "1", features = ["full"] } tokio-util = { version = "0.7", features = ["compat"] } env_logger = "0.11.2" -zip = "0.6.3" +zip = "2.1.5" # shared across multiple examples # anyhow = "1" diff --git a/crates/async_zip/src/tests/read/zip64/mod.rs b/crates/async_zip/src/tests/read/zip64/mod.rs index 758d410..c1b88c2 100644 --- a/crates/async_zip/src/tests/read/zip64/mod.rs +++ b/crates/async_zip/src/tests/read/zip64/mod.rs @@ -70,7 +70,7 @@ fn generate_zip64many_zip() -> std::path::PathBuf { let zip_file = std::fs::File::create(&path).unwrap(); let mut zip = zip::ZipWriter::new(zip_file); - let options = FileOptions::default().compression_method(zip::CompressionMethod::Stored); + let options = FileOptions::<()>::default().compression_method(zip::CompressionMethod::Stored); for i in 0..2_u32.pow(16) + 1 { zip.start_file(format!("{i}.txt"), options).unwrap(); diff --git a/crates/async_zip/src/tests/write/zip64/mod.rs b/crates/async_zip/src/tests/write/zip64/mod.rs index 01f3211..35e26ff 100644 --- a/crates/async_zip/src/tests/write/zip64/mod.rs +++ b/crates/async_zip/src/tests/write/zip64/mod.rs @@ -36,7 +36,7 @@ async fn test_write_zip64_file() { let cursor = std::io::Cursor::new(buffer); let mut zip = zip::read::ZipArchive::new(cursor).unwrap(); let mut file1 = zip.by_name("file1").unwrap(); - assert_eq!(file1.extra_data(), &[] as &[u8]); + assert_eq!(file1.extra_data(), Some(&[] as &[u8])); let mut buffer = Vec::new(); file1.read_to_end(&mut buffer).unwrap(); assert_eq!(buffer.as_slice(), &[0, 0, 0, 0]); From 60e6e6216ffcc1be9a06c02e3bd6f56ea1376919 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sun, 28 Jul 2024 22:38:02 +0200 Subject: [PATCH 063/221] chore(release): release artifactview v0.4.6 --- CHANGELOG.md | 25 +++++++++++++++++++++++++ Cargo.lock | 2 +- Cargo.toml | 2 +- 3 files changed, 27 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 92c865e..515575b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,31 @@ All notable changes to this project will be documented in this file. +## [v0.4.6](https://codeberg.org/ThetaDev/artifactview/compare/v0.4.5..v0.4.6) - 2024-07-28 + +### ๐Ÿ› Bug Fixes + +- *(deps)* Update rust crate serde_json to v1.0.120 (#14) - ([06f9c27](https://codeberg.org/ThetaDev/artifactview/commit/06f9c278a857a272580ee1c4f8e58078556accda)) +- *(deps)* Update rust crate quick_cache to 0.6.0 (#15) - ([2e06266](https://codeberg.org/ThetaDev/artifactview/commit/2e0626667e5fc344df9870cd8c924b9dd60886bb)) +- *(deps)* Update rust crate serde to v1.0.204 (#16) - ([1321386](https://codeberg.org/ThetaDev/artifactview/commit/13213861ba0ea30504caa50da2a99af567876e5c)) +- *(deps)* Update rust crate quick-xml to 0.36.0 (#19) - ([5f94794](https://codeberg.org/ThetaDev/artifactview/commit/5f94794d24f300762da2ab162f4336508b516eda)) +- *(deps)* Update rust crate async-compression to v0.4.12 (#22) - ([88c635c](https://codeberg.org/ThetaDev/artifactview/commit/88c635cbad535eb902ea54a314e8511965a792b4)) +- *(deps)* Update rust crate quick-xml to v0.36.1 (#23) - ([c5c9f85](https://codeberg.org/ThetaDev/artifactview/commit/c5c9f85e4baec58dcc2001ac3a7f005c7f501557)) +- *(deps)* Update rust crate quick_cache to v0.6.2 (#24) - ([a5d4973](https://codeberg.org/ThetaDev/artifactview/commit/a5d49733fd84ba37e8c258f191bf79f4affb86f9)) +- *(deps)* Update rust crate thiserror to v1.0.63 (#25) - ([b67b173](https://codeberg.org/ThetaDev/artifactview/commit/b67b1730b1e9c06b4ff99774c37c71391f48f93a)) +- *(deps)* Update rust crate comrak to 0.26.0 (#27) - ([642930d](https://codeberg.org/ThetaDev/artifactview/commit/642930d397efa106267bd2aff8c413ab4173a5c6)) + +### โš™๏ธ Miscellaneous Tasks + +- *(deps)* Update rust crate axum-test to v15.3.0 (#17) - ([a88f1ba](https://codeberg.org/ThetaDev/artifactview/commit/a88f1ba91c054fdb267f0edef10aacf14a909694)) +- *(deps)* Lock file maintenance (#18) - ([f41a922](https://codeberg.org/ThetaDev/artifactview/commit/f41a92243c91086d5d774410b1452303fad64ccf)) +- *(deps)* Update rust crate env_logger to v0.11.5 (#20) - ([c9db056](https://codeberg.org/ThetaDev/artifactview/commit/c9db0567916e500017034d6a99eb48a25a1671e0)) +- *(deps)* Update rust crate scraper to v0.19.1 (#21) - ([1a5c056](https://codeberg.org/ThetaDev/artifactview/commit/1a5c056204b488e36ef95145b05a674c661a2154)) +- *(deps)* Update rust crate tokio to v1.39.1 (#26) - ([057a365](https://codeberg.org/ThetaDev/artifactview/commit/057a365a0ecafe00fa84e53c736272f5db26f0f1)) +- *(deps)* Update rust crate tokio to v1.39.2 (#28) - ([3ae7f88](https://codeberg.org/ThetaDev/artifactview/commit/3ae7f8813e19818098a6b67d0c6770db8a79defe)) +- *(deps)* Update rust crate zip to v2 (#9) - ([a7160fa](https://codeberg.org/ThetaDev/artifactview/commit/a7160fadde6c95c6c03c90c5d2301738c8e559c2)) + + ## [v0.4.5](https://codeberg.org/ThetaDev/artifactview/compare/v0.4.4..v0.4.5) - 2024-07-01 ### ๐Ÿš€ Features diff --git a/Cargo.lock b/Cargo.lock index 7824092..5af94e6 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -150,7 +150,7 @@ dependencies = [ [[package]] name = "artifactview" -version = "0.4.5" +version = "0.4.6" dependencies = [ "async_zip", "axum", diff --git a/Cargo.toml b/Cargo.toml index 8786e45..c76500d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "artifactview" -version = "0.4.5" +version = "0.4.6" edition = "2021" authors = ["ThetaDev "] license = "MIT" From df805bfe8394dd148ded1d4d3af901eb97593885 Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Mon, 29 Jul 2024 00:08:22 +0000 Subject: [PATCH 064/221] fix(deps): update rust crate serde_json to v1.0.121 (#29) --- Cargo.lock | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 5af94e6..1789fa2 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2614,11 +2614,12 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.120" +version = "1.0.121" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e0d21c9a8cae1235ad58a00c11cb40d4b1e5c784f1ef2c537876ed6ffd8b7c5" +checksum = "4ab380d7d9f22ef3f21ad3e6c1ebe8e4fc7a2000ccba2e4d71fc96f15b2cb609" dependencies = [ "itoa", + "memchr", "ryu", "serde", ] From 756a86eda1119970deac36017821d3a687614a08 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Wed, 31 Jul 2024 14:14:34 +0200 Subject: [PATCH 065/221] ci: add dispatch trigger to renovate, disable lockfile maintenance --- .forgejo/workflows/renovate.yaml | 1 + renovate.json | 3 +-- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.forgejo/workflows/renovate.yaml b/.forgejo/workflows/renovate.yaml index 837138e..e91c636 100644 --- a/.forgejo/workflows/renovate.yaml +++ b/.forgejo/workflows/renovate.yaml @@ -8,6 +8,7 @@ on: - "renovate.json" schedule: - cron: "0 0 * * *" + workflow_dispatch: env: RENOVATE_REPOSITORIES: ${{ github.repository }} diff --git a/renovate.json b/renovate.json index 41e5265..3ff20b1 100644 --- a/renovate.json +++ b/renovate.json @@ -1,8 +1,7 @@ { "$schema": "https://docs.renovatebot.com/renovate-schema.json", "extends": [ - "config:best-practices", - ":maintainLockFilesWeekly" + "config:best-practices" ], "semanticCommits": "enabled", "automerge": true, From 7e0aaa8362005b56526ed5a6114f473893a5cf46 Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Wed, 31 Jul 2024 12:21:02 +0000 Subject: [PATCH 066/221] chore(deps): update rust crate zip to v2.1.6 (#31) --- Cargo.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 1789fa2..3911fd7 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3766,9 +3766,9 @@ dependencies = [ [[package]] name = "zip" -version = "2.1.5" +version = "2.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b895748a3ebcb69b9d38dcfdf21760859a4b0d0b0015277640c2ef4c69640e6f" +checksum = "40dd8c92efc296286ce1fbd16657c5dbefff44f1b4ca01cc5f517d8b7b3d3e2e" dependencies = [ "aes", "arbitrary", From 83ae356b90f9cb5926ddd77bd049e5cec0e4a206 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Wed, 31 Jul 2024 15:52:32 +0200 Subject: [PATCH 067/221] ci: renovate: set log level to info --- .forgejo/workflows/renovate.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.forgejo/workflows/renovate.yaml b/.forgejo/workflows/renovate.yaml index e91c636..666efca 100644 --- a/.forgejo/workflows/renovate.yaml +++ b/.forgejo/workflows/renovate.yaml @@ -34,7 +34,7 @@ jobs: - name: Run renovate run: renovate env: - LOG_LEVEL: debug + LOG_LEVEL: info RENOVATE_BASE_DIR: ${{ github.workspace }}/.tmp RENOVATE_ENDPOINT: ${{ github.server_url }} RENOVATE_PLATFORM: gitea From db67487abdfc15fe55854fcb233e0bb876b603b3 Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Fri, 2 Aug 2024 00:05:30 +0000 Subject: [PATCH 068/221] fix(deps): update rust crate serde_json to v1.0.122 (#32) --- Cargo.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 3911fd7..4ba6e1a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2614,9 +2614,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.121" +version = "1.0.122" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ab380d7d9f22ef3f21ad3e6c1ebe8e4fc7a2000ccba2e4d71fc96f15b2cb609" +checksum = "784b6203951c57ff748476b126ccb5e8e2959a5c19e5c617ab1956be3dbc68da" dependencies = [ "itoa", "memchr", From 7c2a97666d98d4959affbb8ece93c4ba162a760d Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Sat, 3 Aug 2024 00:05:46 +0000 Subject: [PATCH 069/221] fix(deps): update rust crate regex to v1.10.6 (#33) --- Cargo.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 4ba6e1a..e1ac743 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2211,9 +2211,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.10.5" +version = "1.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b91213439dad192326a0d7c6ee3955910425f441d7038e0d6933b0aec5c4517f" +checksum = "4219d74c6b67a3654a9fbebc4b419e22126d13d2f3c4a07ee0cb61ff79a79619" dependencies = [ "aho-corasick", "memchr", From 01e6a9c8ad1f7c7dd5307a02a4a2b3c381aeacd6 Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Sun, 4 Aug 2024 00:06:05 +0000 Subject: [PATCH 070/221] chore(deps): update rust crate flate2 to v1.0.31 (#34) --- Cargo.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index e1ac743..2d4ce4b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -928,9 +928,9 @@ checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a" [[package]] name = "flate2" -version = "1.0.30" +version = "1.0.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f54427cfd1c7829e2a139fcefea601bf088ebca651d2bf53ebc600eac295dae" +checksum = "7f211bbe8e69bbd0cfdea405084f128ae8b4aaa6b0b522fc8f2b009084797920" dependencies = [ "crc32fast", "miniz_oxide", From b9d0a29741138a4dd7b758417b003c9bddc35f3e Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Mon, 5 Aug 2024 00:04:58 +0000 Subject: [PATCH 071/221] chore(deps): update rust crate rstest to 0.22.0 (#35) --- Cargo.lock | 8 ++++---- Cargo.toml | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 2d4ce4b..a2c09f2 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2319,9 +2319,9 @@ dependencies = [ [[package]] name = "rstest" -version = "0.21.0" +version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9afd55a67069d6e434a95161415f5beeada95a01c7b815508a82dcb0e1593682" +checksum = "7b423f0e62bdd61734b67cd21ff50871dfaeb9cc74f869dcd6af974fbcb19936" dependencies = [ "rstest_macros", "rustc_version", @@ -2329,9 +2329,9 @@ dependencies = [ [[package]] name = "rstest_macros" -version = "0.21.0" +version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4165dfae59a39dd41d8dec720d3cbfbc71f69744efb480a3920f5d4e0cc6798d" +checksum = "c5e1711e7d14f74b12a58411c542185ef7fb7f2e7f8ee6e2940a883628522b42" dependencies = [ "cfg-if", "glob", diff --git a/Cargo.toml b/Cargo.toml index c76500d..5b03abd 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -85,7 +85,7 @@ flate2 = "1.0.30" httpdate = "1.0.3" insta = { version = "1.39.0", features = ["json"] } proptest = "1.4.0" -rstest = { version = "0.21.0", default-features = false } +rstest = { version = "0.22.0", default-features = false } scraper = "0.19.0" temp_testdir = "0.2.3" From ca174a3aa21d0466930c2aa3291c2ecbed2ac31f Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Tue, 6 Aug 2024 00:07:38 +0000 Subject: [PATCH 072/221] chore(deps): update rust crate scraper to 0.20.0 (#36) --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index a2c09f2..ab30653 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2498,9 +2498,9 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "scraper" -version = "0.19.1" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "761fb705fdf625482d2ed91d3f0559dcfeab2798fe2771c69560a774865d0802" +checksum = "b90460b31bfe1fc07be8262e42c665ad97118d4585869de9345a84d501a9eaf0" dependencies = [ "ahash", "cssparser", diff --git a/Cargo.toml b/Cargo.toml index 5b03abd..d9870cc 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -86,7 +86,7 @@ httpdate = "1.0.3" insta = { version = "1.39.0", features = ["json"] } proptest = "1.4.0" rstest = { version = "0.22.0", default-features = false } -scraper = "0.19.0" +scraper = "0.20.0" temp_testdir = "0.2.3" [workspace] From 6b7d107387ff3e52e62e4ed19c64e63f8048c478 Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Tue, 6 Aug 2024 00:08:05 +0000 Subject: [PATCH 073/221] fix(deps): update rust crate serde-env to 0.2.0 (#37) --- Cargo.lock | 5 ++--- Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index ab30653..de4489e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2581,12 +2581,11 @@ dependencies = [ [[package]] name = "serde-env" -version = "0.1.1" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c68119a0846249fd6f4b38561b4b4727dbc4fd9fea074f1253bca7d50440ce58" +checksum = "d13536c0c431652192b75c7d5afa83dedae98f91d7e687ff30a009e9d15284fb" dependencies = [ "anyhow", - "log", "serde", ] diff --git a/Cargo.toml b/Cargo.toml index d9870cc..be0c1df 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -55,7 +55,7 @@ reqwest = { version = "0.12.4", default-features = false, features = [ ] } secrecy = { version = "0.8.0", features = ["serde"] } serde = { version = "1.0.203", features = ["derive"] } -serde-env = "0.1.1" +serde-env = "0.2.0" serde-hex = "0.1.0" serde_json = "1.0.117" serde_urlencoded = "0.7.1" From f9698b5a7f9c7f3748d4d7aa38f7dc4c0f5f2029 Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Fri, 9 Aug 2024 00:07:20 +0000 Subject: [PATCH 074/221] fix(deps): update rust crate serde to v1.0.205 (#38) --- Cargo.lock | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index de4489e..64441d4 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2572,9 +2572,9 @@ checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" [[package]] name = "serde" -version = "1.0.204" +version = "1.0.205" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc76f558e0cbb2a839d37354c575f1dc3fdc6546b5be373ba43d95f231bf7c12" +checksum = "e33aedb1a7135da52b7c21791455563facbbcc43d0f0f66165b42c21b3dfb150" dependencies = [ "serde_derive", ] @@ -2602,9 +2602,9 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.204" +version = "1.0.205" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0cd7e117be63d3c3678776753929474f3b04a43a080c744d6b0ae2a8c28e222" +checksum = "692d6f5ac90220161d6774db30c662202721e64aed9058d2c394f451261420c1" dependencies = [ "proc-macro2", "quote", From ed86f30cf4a736eeb4a3d471e81b8e7f7344b53b Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Mon, 12 Aug 2024 00:07:38 +0000 Subject: [PATCH 075/221] fix(deps): update rust crate serde to v1.0.206 (#39) --- Cargo.lock | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 64441d4..d7bac38 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2572,9 +2572,9 @@ checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" [[package]] name = "serde" -version = "1.0.205" +version = "1.0.206" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e33aedb1a7135da52b7c21791455563facbbcc43d0f0f66165b42c21b3dfb150" +checksum = "5b3e4cd94123dd520a128bcd11e34d9e9e423e7e3e50425cb1b4b1e3549d0284" dependencies = [ "serde_derive", ] @@ -2602,9 +2602,9 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.205" +version = "1.0.206" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "692d6f5ac90220161d6774db30c662202721e64aed9058d2c394f451261420c1" +checksum = "fabfb6138d2383ea8208cf98ccf69cdfb1aff4088460681d84189aa259762f97" dependencies = [ "proc-macro2", "quote", From cc6a4959983205ae2f40d81c9a40c8514165c0bb Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Mon, 12 Aug 2024 00:08:32 +0000 Subject: [PATCH 076/221] fix(deps): update rust crate serde_json to v1.0.124 (#40) --- Cargo.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index d7bac38..495666f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2613,9 +2613,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.122" +version = "1.0.124" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "784b6203951c57ff748476b126ccb5e8e2959a5c19e5c617ab1956be3dbc68da" +checksum = "66ad62847a56b3dba58cc891acd13884b9c61138d330c0d7b6181713d4fce38d" dependencies = [ "itoa", "memchr", From 0c2b39a68a1adb567a1582f0c1b9e024fda9ed53 Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Tue, 13 Aug 2024 00:06:46 +0000 Subject: [PATCH 077/221] fix(deps): update rust crate serde to v1.0.207 (#41) --- Cargo.lock | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 495666f..cb81914 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2572,9 +2572,9 @@ checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" [[package]] name = "serde" -version = "1.0.206" +version = "1.0.207" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b3e4cd94123dd520a128bcd11e34d9e9e423e7e3e50425cb1b4b1e3549d0284" +checksum = "5665e14a49a4ea1b91029ba7d3bca9f299e1f7cfa194388ccc20f14743e784f2" dependencies = [ "serde_derive", ] @@ -2602,9 +2602,9 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.206" +version = "1.0.207" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fabfb6138d2383ea8208cf98ccf69cdfb1aff4088460681d84189aa259762f97" +checksum = "6aea2634c86b0e8ef2cfdc0c340baede54ec27b1e46febd7f80dffb2aa44a00e" dependencies = [ "proc-macro2", "quote", From 24171c9800aa52270c203e5a5fc40f520b6ac74c Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Fri, 16 Aug 2024 00:09:32 +0000 Subject: [PATCH 078/221] chore(deps): update rust crate axum-test to v15.3.1 (#42) --- Cargo.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index cb81914..8a7fdcd 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -344,9 +344,9 @@ dependencies = [ [[package]] name = "axum-test" -version = "15.3.0" +version = "15.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2cd2b6c11bc5e65ec121543c5049b7e07be9e7b5a515df79d01f74a72c6a15f0" +checksum = "f07085d2d15feb2fa8b5a347ed637af4fceb44966e709f0f3f1c2b930ee2a710" dependencies = [ "anyhow", "auto-future", From 8073e90f685d80565db81e23769841c16c2af261 Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Fri, 16 Aug 2024 00:13:16 +0000 Subject: [PATCH 079/221] fix(deps): update rust crate serde to v1.0.208 (#43) --- Cargo.lock | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 8a7fdcd..0985f20 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2572,9 +2572,9 @@ checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" [[package]] name = "serde" -version = "1.0.207" +version = "1.0.208" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5665e14a49a4ea1b91029ba7d3bca9f299e1f7cfa194388ccc20f14743e784f2" +checksum = "cff085d2cb684faa248efb494c39b68e522822ac0de72ccf08109abde717cfb2" dependencies = [ "serde_derive", ] @@ -2602,9 +2602,9 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.207" +version = "1.0.208" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6aea2634c86b0e8ef2cfdc0c340baede54ec27b1e46febd7f80dffb2aa44a00e" +checksum = "24008e81ff7613ed8e5ba0cfaf24e2c2f1e5b8a0495711e44fcd4882fca62bcf" dependencies = [ "proc-macro2", "quote", From 4b3639aea7beed4ebc421fdfe26823be164d5c1c Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Sat, 17 Aug 2024 00:06:55 +0000 Subject: [PATCH 080/221] fix(deps): update rust crate serde_json to v1.0.125 (#44) --- Cargo.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 0985f20..cb6ad79 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2613,9 +2613,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.124" +version = "1.0.125" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66ad62847a56b3dba58cc891acd13884b9c61138d330c0d7b6181713d4fce38d" +checksum = "83c8e735a073ccf5be70aa8066aa984eaf2fa000db6c8d0100ae605b366d31ed" dependencies = [ "itoa", "memchr", From 63978d79f9c3e276e59d7f3a558cec5f8f88e17e Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Sun, 18 Aug 2024 00:09:57 +0000 Subject: [PATCH 081/221] chore(deps): update rust crate tokio to v1.39.3 (#45) --- Cargo.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index cb6ad79..bf41148 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2965,9 +2965,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.39.2" +version = "1.39.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "daa4fb1bc778bd6f04cbfc4bb2d06a7396a8f299dc33ea1900cedaa316f467b1" +checksum = "9babc99b9923bfa4804bd74722ff02c0381021eafa4db9949217e3be8e84fff5" dependencies = [ "backtrace", "bytes", From 3cef3175767170824f604fcccdc912bf09745bf9 Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Tue, 20 Aug 2024 00:06:54 +0000 Subject: [PATCH 082/221] fix(deps): update rust crate comrak to 0.27.0 (#46) --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index bf41148..6c40a9d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -545,9 +545,9 @@ checksum = "d3fd119d74b830634cea2a0f58bbd0d54540518a14397557951e79340abc28c0" [[package]] name = "comrak" -version = "0.26.0" +version = "0.27.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "395ab67843c57df5a4ee29d610740828dbc928cc64ecf0f2a1d5cd0e98e107a9" +checksum = "2d061c6d53fe98c25efda0d91b7f6b4b4020a51dad78a3eac5028710aa26f8e7" dependencies = [ "caseless", "derive_builder", diff --git a/Cargo.toml b/Cargo.toml index be0c1df..21a4e7a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -30,7 +30,7 @@ axum = { version = "0.7.5", default-features = false, features = [ "tracing", ] } axum-extra = { version = "0.9.3", features = ["typed-header"] } -comrak = { version = "0.26.0", default-features = false } +comrak = { version = "0.27.0", default-features = false } dotenvy = "0.15.7" envy = { path = "crates/envy" } flate2 = "1.0.30" From a88a3c6103e776a4d10b3f7e6e9a37a2c672cfba Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Fri, 6 Sep 2024 00:08:50 +0000 Subject: [PATCH 083/221] fix(deps): update rust crate comrak to 0.28.0 (#47) --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 6c40a9d..5e62286 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -545,9 +545,9 @@ checksum = "d3fd119d74b830634cea2a0f58bbd0d54540518a14397557951e79340abc28c0" [[package]] name = "comrak" -version = "0.27.0" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d061c6d53fe98c25efda0d91b7f6b4b4020a51dad78a3eac5028710aa26f8e7" +checksum = "c93ab3577cca16b4a1d80a88c2e0cd8b6e969e51696f0bbb0d1dcb0157109832" dependencies = [ "caseless", "derive_builder", diff --git a/Cargo.toml b/Cargo.toml index 21a4e7a..6ae814e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -30,7 +30,7 @@ axum = { version = "0.7.5", default-features = false, features = [ "tracing", ] } axum-extra = { version = "0.9.3", features = ["typed-header"] } -comrak = { version = "0.27.0", default-features = false } +comrak = { version = "0.28.0", default-features = false } dotenvy = "0.15.7" envy = { path = "crates/envy" } flate2 = "1.0.30" From 980e5968eaa909c9d7a72d78156d3465c4599abe Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Thu, 12 Sep 2024 00:10:14 +0000 Subject: [PATCH 084/221] chore(deps): update rust crate flate2 to v1.0.33 (#48) --- Cargo.lock | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 5e62286..cb19962 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -17,6 +17,12 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" +[[package]] +name = "adler2" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" + [[package]] name = "aes" version = "0.8.4" @@ -380,7 +386,7 @@ dependencies = [ "cc", "cfg-if", "libc", - "miniz_oxide", + "miniz_oxide 0.7.4", "object", "rustc-demangle", ] @@ -928,12 +934,12 @@ checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a" [[package]] name = "flate2" -version = "1.0.31" +version = "1.0.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f211bbe8e69bbd0cfdea405084f128ae8b4aaa6b0b522fc8f2b009084797920" +checksum = "324a1be68054ef05ad64b861cc9eaf1d623d2d8cb25b4bf2cb9cdd902b4bf253" dependencies = [ "crc32fast", - "miniz_oxide", + "miniz_oxide 0.8.0", ] [[package]] @@ -1637,6 +1643,15 @@ dependencies = [ "adler", ] +[[package]] +name = "miniz_oxide" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1" +dependencies = [ + "adler2", +] + [[package]] name = "mio" version = "1.0.1" From 78179fd73791c47cd3a60a37e704472109b50c15 Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Thu, 12 Sep 2024 00:11:49 +0000 Subject: [PATCH 085/221] chore(deps): update rust crate tokio-util to v0.7.12 (#49) --- Cargo.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index cb19962..032cddf 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3030,9 +3030,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.11" +version = "0.7.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cf6b47b3771c49ac75ad09a6162f53ad4b8088b76ac60e8ec1455b31a189fe1" +checksum = "61e7c3654c13bcd040d4a03abee2c75b1d14a37b423cf5a813ceae1cc903ec6a" dependencies = [ "bytes", "futures-core", From 73959c00f2c54b682c3db8640ca12319ce4ee37d Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Thu, 12 Sep 2024 00:13:25 +0000 Subject: [PATCH 086/221] fix(deps): update rust crate quick_cache to v0.6.6 (#50) --- Cargo.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 032cddf..d74f592 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2102,9 +2102,9 @@ dependencies = [ [[package]] name = "quick_cache" -version = "0.6.2" +version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec932c60e6faf77dc6601ea149a23d821598b019b450bb1d98fe89c0301c0b61" +checksum = "2ec0b6fed0a0ff01fa82d0c8982389375dd59c72dae84d4f8a15b1a894c273f7" dependencies = [ "ahash", "equivalent", From 22d5626bf025783a127cd99faa0052778e0253b1 Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Thu, 12 Sep 2024 00:15:01 +0000 Subject: [PATCH 087/221] fix(deps): update rust crate reqwest to v0.12.7 (#51) --- Cargo.lock | 153 +++++++++++++++++++---------------------------------- 1 file changed, 55 insertions(+), 98 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index d74f592..77ea155 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -117,7 +117,7 @@ version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6d36fc52c7f6c869915e99412912f22093507da8d9e942ceaf66fe4b7c14422a" dependencies = [ - "windows-sys 0.52.0", + "windows-sys", ] [[package]] @@ -127,7 +127,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5bf74e1b6e971609db8ca7a9ce79fd5768ab6ae46441c572e46cf596f59e57f8" dependencies = [ "anstyle", - "windows-sys 0.52.0", + "windows-sys", ] [[package]] @@ -530,7 +530,7 @@ dependencies = [ "js-sys", "num-traits", "wasm-bindgen", - "windows-targets 0.52.6", + "windows-targets", ] [[package]] @@ -575,7 +575,7 @@ dependencies = [ "encode_unicode", "lazy_static", "libc", - "windows-sys 0.52.0", + "windows-sys", ] [[package]] @@ -923,7 +923,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" dependencies = [ "libc", - "windows-sys 0.52.0", + "windows-sys", ] [[package]] @@ -1661,7 +1661,7 @@ dependencies = [ "hermit-abi", "libc", "wasi", - "windows-sys 0.52.0", + "windows-sys", ] [[package]] @@ -1844,7 +1844,7 @@ dependencies = [ "libc", "redox_syscall", "smallvec 1.13.2", - "windows-targets 0.52.6", + "windows-targets", ] [[package]] @@ -2155,7 +2155,7 @@ dependencies = [ "libc", "once_cell", "socket2", - "windows-sys 0.52.0", + "windows-sys", ] [[package]] @@ -2261,9 +2261,9 @@ checksum = "ba39f3699c378cd8970968dcbff9c43159ea4cfbd88d43c00b22f2ef10a435d2" [[package]] name = "reqwest" -version = "0.12.5" +version = "0.12.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7d6d2a27d57148378eb5e111173f4276ad26340ecc5c49a4a2152167a2d6a37" +checksum = "f8f4955649ef5c38cc7f9e8aa41761d48fb9677197daea9984dc54f56aad5e63" dependencies = [ "base64 0.22.1", "bytes", @@ -2304,7 +2304,7 @@ dependencies = [ "wasm-streams", "web-sys", "webpki-roots", - "winreg", + "windows-registry", ] [[package]] @@ -2329,7 +2329,7 @@ dependencies = [ "libc", "spin", "untrusted", - "windows-sys 0.52.0", + "windows-sys", ] [[package]] @@ -2406,7 +2406,7 @@ dependencies = [ "errno", "libc", "linux-raw-sys", - "windows-sys 0.52.0", + "windows-sys", ] [[package]] @@ -2502,7 +2502,7 @@ version = "0.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fbc91545643bcf3a0bbb6569265615222618bdf33ce4ffbbd13c4bbd4c093534" dependencies = [ - "windows-sys 0.52.0", + "windows-sys", ] [[package]] @@ -2757,7 +2757,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" dependencies = [ "libc", - "windows-sys 0.52.0", + "windows-sys", ] [[package]] @@ -2852,6 +2852,9 @@ name = "sync_wrapper" version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a7065abeca94b6a8a577f9bd45aa0867a2238b74e8eb67cf10d492bc39351394" +dependencies = [ + "futures-core", +] [[package]] name = "syntect" @@ -2888,7 +2891,7 @@ dependencies = [ "cfg-if", "fastrand", "rustix", - "windows-sys 0.52.0", + "windows-sys", ] [[package]] @@ -2993,7 +2996,7 @@ dependencies = [ "signal-hook-registry", "socket2", "tokio-macros", - "windows-sys 0.52.0", + "windows-sys", ] [[package]] @@ -3455,7 +3458,7 @@ version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4d4cc384e1e73b93bafa6fb4f1df8c41695c8a91cf9c4c64358067d15a7b6c6b" dependencies = [ - "windows-sys 0.52.0", + "windows-sys", ] [[package]] @@ -3470,16 +3473,37 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" dependencies = [ - "windows-targets 0.52.6", + "windows-targets", ] [[package]] -name = "windows-sys" -version = "0.48.0" +name = "windows-registry" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +checksum = "e400001bb720a623c1c69032f8e3e4cf09984deec740f007dd2b03ec864804b0" dependencies = [ - "windows-targets 0.48.5", + "windows-result", + "windows-strings", + "windows-targets", +] + +[[package]] +name = "windows-result" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-strings" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" +dependencies = [ + "windows-result", + "windows-targets", ] [[package]] @@ -3488,22 +3512,7 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" dependencies = [ - "windows-targets 0.52.6", -] - -[[package]] -name = "windows-targets" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" -dependencies = [ - "windows_aarch64_gnullvm 0.48.5", - "windows_aarch64_msvc 0.48.5", - "windows_i686_gnu 0.48.5", - "windows_i686_msvc 0.48.5", - "windows_x86_64_gnu 0.48.5", - "windows_x86_64_gnullvm 0.48.5", - "windows_x86_64_msvc 0.48.5", + "windows-targets", ] [[package]] @@ -3512,46 +3521,28 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" dependencies = [ - "windows_aarch64_gnullvm 0.52.6", - "windows_aarch64_msvc 0.52.6", - "windows_i686_gnu 0.52.6", + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", "windows_i686_gnullvm", - "windows_i686_msvc 0.52.6", - "windows_x86_64_gnu 0.52.6", - "windows_x86_64_gnullvm 0.52.6", - "windows_x86_64_msvc 0.52.6", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", ] -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" - [[package]] name = "windows_aarch64_gnullvm" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" -[[package]] -name = "windows_aarch64_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" - [[package]] name = "windows_aarch64_msvc" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" -[[package]] -name = "windows_i686_gnu" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" - [[package]] name = "windows_i686_gnu" version = "0.52.6" @@ -3564,64 +3555,30 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" -[[package]] -name = "windows_i686_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" - [[package]] name = "windows_i686_msvc" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" -[[package]] -name = "windows_x86_64_gnu" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" - [[package]] name = "windows_x86_64_gnu" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" - [[package]] name = "windows_x86_64_gnullvm" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" -[[package]] -name = "windows_x86_64_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" - [[package]] name = "windows_x86_64_msvc" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" -[[package]] -name = "winreg" -version = "0.52.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a277a57398d4bfa075df44f501a17cfdf8542d224f0d36095a2adc7aee4ef0a5" -dependencies = [ - "cfg-if", - "windows-sys 0.48.0", -] - [[package]] name = "xz2" version = "0.1.7" From f8c9d6f7cb475f4642f5e4f11108c4d053cc8c7e Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Thu, 12 Sep 2024 00:17:03 +0000 Subject: [PATCH 088/221] fix(deps): update rust crate serde to v1.0.210 (#52) --- Cargo.lock | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 77ea155..6f6d659 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2587,9 +2587,9 @@ checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" [[package]] name = "serde" -version = "1.0.208" +version = "1.0.210" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cff085d2cb684faa248efb494c39b68e522822ac0de72ccf08109abde717cfb2" +checksum = "c8e3592472072e6e22e0a54d5904d9febf8508f65fb8552499a1abc7d1078c3a" dependencies = [ "serde_derive", ] @@ -2617,9 +2617,9 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.208" +version = "1.0.210" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24008e81ff7613ed8e5ba0cfaf24e2c2f1e5b8a0495711e44fcd4882fca62bcf" +checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f" dependencies = [ "proc-macro2", "quote", From 03597d10e58eca8a56e4708971cac1750e7707f4 Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Fri, 13 Sep 2024 00:07:38 +0000 Subject: [PATCH 089/221] chore(deps): update rust crate insta to v1.40.0 (#54) --- Cargo.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 6f6d659..5114e99 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1447,9 +1447,9 @@ dependencies = [ [[package]] name = "insta" -version = "1.39.0" +version = "1.40.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "810ae6042d48e2c9e9215043563a58a80b877bc863228a74cf10c49d4620a6f5" +checksum = "6593a41c7a73841868772495db7dc1e8ecab43bb5c0b6da2059246c4b506ab60" dependencies = [ "console", "lazy_static", From 97b9610f308c8ad0a083f6522c8b661c4b2c1e4f Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Fri, 13 Sep 2024 00:09:44 +0000 Subject: [PATCH 090/221] chore(deps): update rust crate tokio to v1.40.0 (#55) --- Cargo.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 5114e99..c970bb1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2983,9 +2983,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.39.3" +version = "1.40.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9babc99b9923bfa4804bd74722ff02c0381021eafa4db9949217e3be8e84fff5" +checksum = "e2b070231665d27ad9ec9b8df639893f46727666c6767db40317fbe920a5d998" dependencies = [ "backtrace", "bytes", From 3f719ac939612722b82b8bad2744b4570ff40df7 Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Fri, 13 Sep 2024 00:10:07 +0000 Subject: [PATCH 091/221] chore(deps): update rust crate zip to v2.2.0 (#56) --- Cargo.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index c970bb1..9ea8018 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3737,9 +3737,9 @@ dependencies = [ [[package]] name = "zip" -version = "2.1.6" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40dd8c92efc296286ce1fbd16657c5dbefff44f1b4ca01cc5f517d8b7b3d3e2e" +checksum = "dc5e4288ea4057ae23afc69a4472434a87a2495cafce6632fd1c4ec9f5cf3494" dependencies = [ "aes", "arbitrary", From f8a95c82e4a627d10906330327e94cd829d6f4c8 Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Sat, 14 Sep 2024 00:09:26 +0000 Subject: [PATCH 092/221] chore(deps): update rust crate once_cell to v1.20.0 (#58) --- Cargo.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 9ea8018..1bb1fce 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1742,9 +1742,9 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.19.0" +version = "1.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" +checksum = "33ea5043e58958ee56f3e15a90aee535795cd7dfd319846288d93c5b57d85cbe" [[package]] name = "onig" From a48e23beceefc1b4c51910dc7114ab62abfd189c Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Sun, 15 Sep 2024 00:07:25 +0000 Subject: [PATCH 093/221] fix(deps): update rust crate serde_json to v1.0.128 (#57) --- Cargo.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 1bb1fce..8ba0486 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2628,9 +2628,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.125" +version = "1.0.128" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83c8e735a073ccf5be70aa8066aa984eaf2fa000db6c8d0100ae605b366d31ed" +checksum = "6ff5456707a1de34e7e37f2a6fd3d3f808c318259cbd01ab6377795054b483d8" dependencies = [ "itoa", "memchr", From 4eb2b22a8f1c2b1b28f72303d364708d04790eca Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Mon, 16 Sep 2024 00:06:09 +0000 Subject: [PATCH 094/221] fix(deps): update rust crate quick_cache to v0.6.9 (#59) --- Cargo.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 8ba0486..9cfec3f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2102,9 +2102,9 @@ dependencies = [ [[package]] name = "quick_cache" -version = "0.6.6" +version = "0.6.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ec0b6fed0a0ff01fa82d0c8982389375dd59c72dae84d4f8a15b1a894c273f7" +checksum = "7d7c94f8935a9df96bb6380e8592c70edf497a643f94bd23b2f76b399385dbf4" dependencies = [ "ahash", "equivalent", From 1d03f5b4b09596a68893126d8b177226b62fb38a Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Fri, 20 Sep 2024 00:06:32 +0000 Subject: [PATCH 095/221] fix(deps): update rust crate tower-http to 0.6.0 (#61) --- Cargo.lock | 9 ++++----- Cargo.toml | 2 +- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 9cfec3f..1574575 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3072,15 +3072,14 @@ dependencies = [ [[package]] name = "tower-http" -version = "0.5.2" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e9cd434a998747dd2c4276bc96ee2e0c7a2eadf3cae88e52be55a05fa9053f5" +checksum = "41515cc9e193536d93fd0dbbea0c73819c08eca76e0b30909a325c3ec90985bb" dependencies = [ "bitflags 2.6.0", "bytes", "http 1.1.0", "http-body", - "http-body-util", "pin-project-lite", "tower-layer", "tower-service", @@ -3089,9 +3088,9 @@ dependencies = [ [[package]] name = "tower-layer" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c20c8dbed6283a09604c3e69b4b7eeb54e298b8a600d4d5ecb5ad39de609f1d0" +checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" [[package]] name = "tower-service" diff --git a/Cargo.toml b/Cargo.toml index 6ae814e..4e2abbc 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -70,7 +70,7 @@ thiserror = "1.0.61" time = { version = "0.3.36", features = ["serde-human-readable", "macros"] } tokio = { version = "1.37.0", features = ["macros", "fs", "rt-multi-thread"] } tokio-util = { version = "0.7.11", features = ["io"] } -tower-http = { version = "0.5.2", features = ["trace", "set-header"] } +tower-http = { version = "0.6.0", features = ["trace", "set-header"] } tracing = "0.1.40" tracing-subscriber = "0.3.18" url = "2.5.0" From 61f65e54db431b3e94d21188920ae88233c44d3b Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Sat, 21 Sep 2024 00:08:12 +0000 Subject: [PATCH 096/221] fix(deps): update rust crate axum to v0.7.6 (#62) --- Cargo.lock | 38 +++++++++++++++++++++++++++----------- 1 file changed, 27 insertions(+), 11 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 1574575..de68d89 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -272,9 +272,9 @@ checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "axum" -version = "0.7.5" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a6c9af12842a67734c9a2e355436e5d03b22383ed60cf13cd0c18fbfe3dcbcf" +checksum = "8f43644eed690f5374f1af436ecd6aea01cd201f6fbdf0178adaf6907afb2cec" dependencies = [ "async-trait", "axum-core", @@ -298,7 +298,7 @@ dependencies = [ "serde_urlencoded", "sync_wrapper 1.0.1", "tokio", - "tower", + "tower 0.5.1", "tower-layer", "tower-service", "tracing", @@ -306,9 +306,9 @@ dependencies = [ [[package]] name = "axum-core" -version = "0.4.3" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a15c63fd72d41492dc4f497196f5da1fb04fb7529e631d73630d1b491e47a2e3" +checksum = "5e6b8ba012a258d63c9adfa28b9ddcf66149da6f986c5b5452e629d5ee64bf00" dependencies = [ "async-trait", "bytes", @@ -319,7 +319,7 @@ dependencies = [ "mime", "pin-project-lite", "rustversion", - "sync_wrapper 0.1.2", + "sync_wrapper 1.0.1", "tower-layer", "tower-service", "tracing", @@ -342,7 +342,7 @@ dependencies = [ "mime", "pin-project-lite", "serde", - "tower", + "tower 0.4.13", "tower-layer", "tower-service", "tracing", @@ -372,7 +372,7 @@ dependencies = [ "serde_urlencoded", "smallvec 1.13.2", "tokio", - "tower", + "tower 0.4.13", "url", ] @@ -1382,7 +1382,7 @@ dependencies = [ "pin-project-lite", "socket2", "tokio", - "tower", + "tower 0.4.13", "tower-service", "tracing", ] @@ -3070,6 +3070,22 @@ dependencies = [ "tracing", ] +[[package]] +name = "tower" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2873938d487c3cfb9aed7546dc9f2711d867c9f90c46b889989a2cb84eba6b4f" +dependencies = [ + "futures-core", + "futures-util", + "pin-project-lite", + "sync_wrapper 0.1.2", + "tokio", + "tower-layer", + "tower-service", + "tracing", +] + [[package]] name = "tower-http" version = "0.6.0" @@ -3094,9 +3110,9 @@ checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" [[package]] name = "tower-service" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" +checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" [[package]] name = "tracing" From de4459f646444a949c390394524f284a1944a0da Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Sat, 21 Sep 2024 00:12:52 +0000 Subject: [PATCH 097/221] fix(deps): update rust crate quick-xml to v0.36.2 (#64) --- Cargo.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index de68d89..cba9637 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2093,9 +2093,9 @@ checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" [[package]] name = "quick-xml" -version = "0.36.1" +version = "0.36.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96a05e2e8efddfa51a84ca47cec303fac86c8541b686d37cac5efc0e094417bc" +checksum = "f7649a7b4df05aed9ea7ec6f628c67c9953a43869b8bc50929569b2999d443fe" dependencies = [ "memchr", ] From 6619ef60e44832dd8839bcaf82d43707965b772a Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Sun, 22 Sep 2024 00:07:36 +0000 Subject: [PATCH 098/221] fix(deps): update rust crate axum-extra to v0.9.4 (#63) --- Cargo.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index cba9637..78934ed 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -327,9 +327,9 @@ dependencies = [ [[package]] name = "axum-extra" -version = "0.9.3" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0be6ea09c9b96cb5076af0de2e383bd2bc0c18f827cf1967bdd353e0b910d733" +checksum = "73c3220b188aea709cf1b6c5f9b01c3bd936bb08bd2b5184a12b35ac8131b1f9" dependencies = [ "axum", "axum-core", @@ -342,7 +342,7 @@ dependencies = [ "mime", "pin-project-lite", "serde", - "tower 0.4.13", + "tower 0.5.1", "tower-layer", "tower-service", "tracing", From 7a92941452b0e2f59e0ceda49a378f0ef43784cb Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Sun, 22 Sep 2024 00:09:25 +0000 Subject: [PATCH 099/221] chore(deps): update rust crate axum-test to v15.7.1 (#53) --- Cargo.lock | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 78934ed..76e59a5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -350,9 +350,9 @@ dependencies = [ [[package]] name = "axum-test" -version = "15.3.1" +version = "15.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f07085d2d15feb2fa8b5a347ed637af4fceb44966e709f0f3f1c2b930ee2a710" +checksum = "05de9a36258224d347fb3c474737dee7543fe4c7ccebabd472d9151f730f5dcd" dependencies = [ "anyhow", "auto-future", @@ -372,7 +372,7 @@ dependencies = [ "serde_urlencoded", "smallvec 1.13.2", "tokio", - "tower 0.4.13", + "tower 0.5.1", "url", ] @@ -468,9 +468,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.6.1" +version = "1.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a12916984aab3fa6e39d655a33e09c0071eb36d6ab3aea5c2d78551f1df6d952" +checksum = "428d9aa8fbc0670b7b8d6030a7fadd0f86151cae55e4dbbece15f3780a3dfaf3" [[package]] name = "bzip2" @@ -3067,7 +3067,6 @@ dependencies = [ "tokio", "tower-layer", "tower-service", - "tracing", ] [[package]] From 82ca6dd6bff9d8cb87a349cc8edb46f42a9721fc Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Mon, 23 Sep 2024 00:08:01 +0000 Subject: [PATCH 100/221] chore(deps): update rust crate axum-test to v15.7.3 (#65) --- Cargo.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 76e59a5..25025c3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -350,9 +350,9 @@ dependencies = [ [[package]] name = "axum-test" -version = "15.7.1" +version = "15.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05de9a36258224d347fb3c474737dee7543fe4c7ccebabd472d9151f730f5dcd" +checksum = "f0c97bb6939ddcf3a94450a46839b57efc010dacd4ab9e462026ffbbf4e48492" dependencies = [ "anyhow", "auto-future", From 923f97f8e9d0855ff97685496221a180018ae686 Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Mon, 23 Sep 2024 00:09:35 +0000 Subject: [PATCH 101/221] fix(deps): update rust crate thiserror to v1.0.64 (#66) --- Cargo.lock | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 25025c3..de321e5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2907,18 +2907,18 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.63" +version = "1.0.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724" +checksum = "d50af8abc119fb8bb6dbabcfa89656f46f84aa0ac7688088608076ad2b459a84" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.63" +version = "1.0.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" +checksum = "08904e7672f5eb876eaaf87e0ce17857500934f4981c4a0ab2b4aa98baac7fc3" dependencies = [ "proc-macro2", "quote", From ca0734d47072d555ba07b2f512975b9379305a58 Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Tue, 24 Sep 2024 00:10:54 +0000 Subject: [PATCH 102/221] fix(deps): update rust crate tower-http to v0.6.1 (#68) --- Cargo.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index de321e5..e09c90a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3087,9 +3087,9 @@ dependencies = [ [[package]] name = "tower-http" -version = "0.6.0" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41515cc9e193536d93fd0dbbea0c73819c08eca76e0b30909a325c3ec90985bb" +checksum = "8437150ab6bbc8c5f0f519e3d5ed4aa883a83dd4cdd3d1b21f9482936046cb97" dependencies = [ "bitflags 2.6.0", "bytes", From dbcee4945c0be57534bdd2d7d98d85767e0cf92c Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Tue, 24 Sep 2024 09:32:09 +0000 Subject: [PATCH 103/221] chore(deps): update rust crate axum-test to v16 (#69) --- Cargo.lock | 15 +++++++++++++-- Cargo.toml | 2 +- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index e09c90a..55f51fe 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -207,6 +207,16 @@ dependencies = [ "yarte_helpers", ] +[[package]] +name = "assert-json-diff" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47e4f2b81832e72834d7518d8487a0396a28cc408186a2e8854c0f98011faf12" +dependencies = [ + "serde", + "serde_json", +] + [[package]] name = "async-compression" version = "0.4.12" @@ -350,11 +360,12 @@ dependencies = [ [[package]] name = "axum-test" -version = "15.7.3" +version = "16.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0c97bb6939ddcf3a94450a46839b57efc010dacd4ab9e462026ffbbf4e48492" +checksum = "7dcd0a5e654fa2bae63e6101a776d8984bf641e2841e8ad307007b6e9b99c61f" dependencies = [ "anyhow", + "assert-json-diff", "auto-future", "axum", "bytes", diff --git a/Cargo.toml b/Cargo.toml index 4e2abbc..4a83122 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -80,7 +80,7 @@ yarte = { version = "0.15.7", features = ["json"] } yarte_helpers = "0.15.8" [dev-dependencies] -axum-test = "15.0.1" +axum-test = "16.0.0" flate2 = "1.0.30" httpdate = "1.0.3" insta = { version = "1.39.0", features = ["json"] } From 72d0cde37075220cc6a938840ad30781ecdcbaa7 Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Tue, 24 Sep 2024 23:40:30 +0000 Subject: [PATCH 104/221] fix(deps): update rust crate secrecy to 0.10.0 (#60) --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- src/config.rs | 6 +++--- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 55f51fe..e4bf921 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2540,9 +2540,9 @@ dependencies = [ [[package]] name = "secrecy" -version = "0.8.0" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9bd1c54ea06cfd2f6b63219704de0b9b4f72dcc2b8fdef820be6cd799780e91e" +checksum = "ba079fa568d52545cd70b334b2ce6f88f62b8fc2bda9290f48a0578388a49331" dependencies = [ "serde", "zeroize", diff --git a/Cargo.toml b/Cargo.toml index 4a83122..139589e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -53,7 +53,7 @@ reqwest = { version = "0.12.4", default-features = false, features = [ "json", "stream", ] } -secrecy = { version = "0.8.0", features = ["serde"] } +secrecy = { version = "0.10.0", features = ["serde"] } serde = { version = "1.0.203", features = ["derive"] } serde-env = "0.2.0" serde-hex = "0.1.0" diff --git a/src/config.rs b/src/config.rs index cbc2e66..050a89b 100644 --- a/src/config.rs +++ b/src/config.rs @@ -5,7 +5,7 @@ use std::{ sync::Arc, }; -use secrecy::Secret; +use secrecy::SecretString; use serde::Deserialize; use crate::{ @@ -49,9 +49,9 @@ pub struct ConfigData { /// GitHub API token for downloading GitHub artifacts /// /// Using a fine-grained token with public read permissions is recommended. - pub github_token: Option>, + pub github_token: Option, /// Forgejo/Gitea API tokens by host - pub forgejo_tokens: HashMap>, + pub forgejo_tokens: HashMap, /// Number of artifact indexes to keep in memory pub mem_cache_size: usize, /// Get the client IP address from a HTTP request header From 89d22496d7e8bbfc48024c0d76a3918de603be0d Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Wed, 25 Sep 2024 01:41:43 +0200 Subject: [PATCH 105/221] ci: use chore commit msg for all dependency updates --- renovate.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/renovate.json b/renovate.json index 3ff20b1..db12518 100644 --- a/renovate.json +++ b/renovate.json @@ -1,9 +1,9 @@ { "$schema": "https://docs.renovatebot.com/renovate-schema.json", "extends": [ - "config:best-practices" + "config:best-practices", + ":semanticCommitTypeAll(chore)" ], - "semanticCommits": "enabled", "automerge": true, "automergeStrategy": "squash", "osvVulnerabilityAlerts": true, From 6f3544e3d8051697053cad5a751df6a1b4bc658b Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Fri, 27 Sep 2024 00:06:09 +0000 Subject: [PATCH 106/221] chore(deps): update rust crate flate2 to v1.0.34 (#70) --- Cargo.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index e4bf921..b3a3633 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -945,9 +945,9 @@ checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a" [[package]] name = "flate2" -version = "1.0.33" +version = "1.0.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "324a1be68054ef05ad64b861cc9eaf1d623d2d8cb25b4bf2cb9cdd902b4bf253" +checksum = "a1b589b4dc103969ad3cf85c950899926ec64300a1a46d76c03a6072957036f0" dependencies = [ "crc32fast", "miniz_oxide 0.8.0", From 01c494c2773dc67f922beed7e84aa2ff59fb575f Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Sat, 28 Sep 2024 00:05:59 +0000 Subject: [PATCH 107/221] chore(deps): update rust crate axum to v0.7.7 (#71) --- Cargo.lock | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index b3a3633..2f0adc1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -282,9 +282,9 @@ checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "axum" -version = "0.7.6" +version = "0.7.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f43644eed690f5374f1af436ecd6aea01cd201f6fbdf0178adaf6907afb2cec" +checksum = "504e3947307ac8326a5437504c517c4b56716c9d98fac0028c2acc7ca47d70ae" dependencies = [ "async-trait", "axum-core", @@ -316,9 +316,9 @@ dependencies = [ [[package]] name = "axum-core" -version = "0.4.4" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e6b8ba012a258d63c9adfa28b9ddcf66149da6f986c5b5452e629d5ee64bf00" +checksum = "09f2bd6146b97ae3359fa0cc6d6b376d9539582c7b4220f041a33ec24c226199" dependencies = [ "async-trait", "bytes", From 23675124bdb15e01f037a6380f97f4d2921a34eb Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Sat, 28 Sep 2024 00:06:56 +0000 Subject: [PATCH 108/221] chore(deps): update rust crate axum-test to v16.0.1 (#72) --- Cargo.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 2f0adc1..2d13cb8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -360,9 +360,9 @@ dependencies = [ [[package]] name = "axum-test" -version = "16.0.0" +version = "16.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7dcd0a5e654fa2bae63e6101a776d8984bf641e2841e8ad307007b6e9b99c61f" +checksum = "12c0f9630ccb2d9c9f877bbcbea0406f7d438254062f7f76c0c00a1c1a38cfd5" dependencies = [ "anyhow", "assert-json-diff", From 484f1136469f5459b1d464944621e9db450d2f6a Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Mon, 30 Sep 2024 00:12:38 +0000 Subject: [PATCH 109/221] chore(deps): update rust crate once_cell to v1.20.1 (#73) --- Cargo.lock | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 2d13cb8..2eba2e4 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1753,9 +1753,12 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.20.0" +version = "1.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33ea5043e58958ee56f3e15a90aee535795cd7dfd319846288d93c5b57d85cbe" +checksum = "82881c4be219ab5faaf2ad5e5e5ecdff8c66bd7402ca3160975c93b24961afd1" +dependencies = [ + "portable-atomic", +] [[package]] name = "onig" From 2ed0cdc4a372c0a40de2ddc70a14b658a3619eec Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Mon, 30 Sep 2024 00:14:26 +0000 Subject: [PATCH 110/221] chore(deps): update rust crate axum-test to v16.1.0 (#74) --- Cargo.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 2eba2e4..8b64280 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -360,9 +360,9 @@ dependencies = [ [[package]] name = "axum-test" -version = "16.0.1" +version = "16.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12c0f9630ccb2d9c9f877bbcbea0406f7d438254062f7f76c0c00a1c1a38cfd5" +checksum = "020db7902508b764267eb61f5972129b3d5b6037632523af76ca8eb40504f89a" dependencies = [ "anyhow", "assert-json-diff", From e436f77c3e4969d83c42d45201c15f0375d90ad0 Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Mon, 30 Sep 2024 00:16:09 +0000 Subject: [PATCH 111/221] chore(deps): update rust crate regex to v1.11.0 (#75) --- Cargo.lock | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 8b64280..6a40c8a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2240,9 +2240,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.10.6" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4219d74c6b67a3654a9fbebc4b419e22126d13d2f3c4a07ee0cb61ff79a79619" +checksum = "38200e5ee88914975b69f657f0801b6f6dccafd44fd9326302a4aaeecfacb1d8" dependencies = [ "aho-corasick", "memchr", @@ -2252,9 +2252,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.7" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df" +checksum = "368758f23274712b504848e9d5a6f010445cc8b87a7cdb4d7cbee666c1288da3" dependencies = [ "aho-corasick", "memchr", @@ -2263,9 +2263,9 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.8.4" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b" +checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" [[package]] name = "relative-path" From 7c684eb5657eda84668bf3a1aadf38f1e4ac51db Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Mon, 30 Sep 2024 00:20:03 +0000 Subject: [PATCH 112/221] chore(deps): update rust crate rstest to 0.23.0 (#76) --- Cargo.lock | 70 +++++++++++++++++++++++++++--------------------------- Cargo.toml | 2 +- 2 files changed, 36 insertions(+), 36 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 6a40c8a..ddd4a93 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -243,7 +243,7 @@ checksum = "6e0c28dcc82d7c8ead5cb13beb15405b57b8546e93215673ff8ca0349a028107" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.79", ] [[package]] @@ -696,7 +696,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331" dependencies = [ "quote", - "syn 2.0.72", + "syn 2.0.79", ] [[package]] @@ -720,7 +720,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.72", + "syn 2.0.79", ] [[package]] @@ -731,7 +731,7 @@ checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" dependencies = [ "darling_core", "quote", - "syn 2.0.72", + "syn 2.0.79", ] [[package]] @@ -771,7 +771,7 @@ checksum = "67e77553c4162a157adbf834ebae5b415acbecbeafc7a74b0e886657506a7611" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.79", ] [[package]] @@ -792,7 +792,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.79", ] [[package]] @@ -802,7 +802,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "206868b8242f27cecce124c19fd88157fbd0dd334df2587f36417bafbc85097b" dependencies = [ "derive_builder_core", - "syn 2.0.72", + "syn 2.0.79", ] [[package]] @@ -815,7 +815,7 @@ dependencies = [ "proc-macro2", "quote", "rustc_version", - "syn 2.0.72", + "syn 2.0.79", ] [[package]] @@ -849,7 +849,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.79", ] [[package]] @@ -1062,7 +1062,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.79", ] [[package]] @@ -1247,7 +1247,7 @@ dependencies = [ "markup5ever", "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.79", ] [[package]] @@ -1805,7 +1805,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.79", ] [[package]] @@ -1952,7 +1952,7 @@ dependencies = [ "phf_shared 0.11.2", "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.79", ] [[package]] @@ -1990,7 +1990,7 @@ checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.79", ] [[package]] @@ -2174,9 +2174,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.36" +version = "1.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" +checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" dependencies = [ "proc-macro2", ] @@ -2348,9 +2348,9 @@ dependencies = [ [[package]] name = "rstest" -version = "0.22.0" +version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b423f0e62bdd61734b67cd21ff50871dfaeb9cc74f869dcd6af974fbcb19936" +checksum = "0a2c585be59b6b5dd66a9d2084aa1d8bd52fbdb806eafdeffb52791147862035" dependencies = [ "rstest_macros", "rustc_version", @@ -2358,9 +2358,9 @@ dependencies = [ [[package]] name = "rstest_macros" -version = "0.22.0" +version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5e1711e7d14f74b12a58411c542185ef7fb7f2e7f8ee6e2940a883628522b42" +checksum = "825ea780781b15345a146be27eaefb05085e337e869bff01b4306a4fd4a9ad5a" dependencies = [ "cfg-if", "glob", @@ -2369,7 +2369,7 @@ dependencies = [ "regex", "relative-path", "rustc_version", - "syn 2.0.72", + "syn 2.0.79", "unicode-ident", ] @@ -2403,9 +2403,9 @@ checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" [[package]] name = "rustc_version" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" dependencies = [ "semver", ] @@ -2637,7 +2637,7 @@ checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.79", ] [[package]] @@ -2846,9 +2846,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.72" +version = "2.0.79" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc4b9b9bf2add8093d3f2c0204471e951b2285580335de42f9d2534f3ae7a8af" +checksum = "89132cd0bf050864e1d38dc3bbc07a0eb8e7530af26344d3d2bbbef83499f590" dependencies = [ "proc-macro2", "quote", @@ -2936,7 +2936,7 @@ checksum = "08904e7672f5eb876eaaf87e0ce17857500934f4981c4a0ab2b4aa98baac7fc3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.79", ] [[package]] @@ -3021,7 +3021,7 @@ checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.79", ] [[package]] @@ -3147,7 +3147,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.79", ] [[package]] @@ -3226,9 +3226,9 @@ checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" [[package]] name = "unicode-ident" -version = "1.0.12" +version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" +checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe" [[package]] name = "unicode-normalization" @@ -3387,7 +3387,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.79", "wasm-bindgen-shared", ] @@ -3421,7 +3421,7 @@ checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.79", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -3740,7 +3740,7 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.79", ] [[package]] @@ -3760,7 +3760,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.79", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index 139589e..8f77e38 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -85,7 +85,7 @@ flate2 = "1.0.30" httpdate = "1.0.3" insta = { version = "1.39.0", features = ["json"] } proptest = "1.4.0" -rstest = { version = "0.22.0", default-features = false } +rstest = { version = "0.23.0", default-features = false } scraper = "0.20.0" temp_testdir = "0.2.3" From a3f028f2ad11d3e599bf20d1f92679bf8b8dafc4 Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Tue, 1 Oct 2024 00:06:13 +0000 Subject: [PATCH 113/221] chore(deps): update rust crate reqwest to v0.12.8 (#77) --- Cargo.lock | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index ddd4a93..addad30 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1354,7 +1354,7 @@ dependencies = [ "hyper", "hyper-util", "rustls", - "rustls-native-certs", + "rustls-native-certs 0.7.1", "rustls-pki-types", "tokio", "tokio-rustls", @@ -2275,9 +2275,9 @@ checksum = "ba39f3699c378cd8970968dcbff9c43159ea4cfbd88d43c00b22f2ef10a435d2" [[package]] name = "reqwest" -version = "0.12.7" +version = "0.12.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8f4955649ef5c38cc7f9e8aa41761d48fb9677197daea9984dc54f56aad5e63" +checksum = "f713147fbe92361e52392c73b8c9e48c04c6625bce969ef54dc901e58e042a7b" dependencies = [ "base64 0.22.1", "bytes", @@ -2300,7 +2300,7 @@ dependencies = [ "pin-project-lite", "quinn", "rustls", - "rustls-native-certs", + "rustls-native-certs 0.8.0", "rustls-pemfile", "rustls-pki-types", "serde", @@ -2450,6 +2450,19 @@ dependencies = [ "security-framework", ] +[[package]] +name = "rustls-native-certs" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcaf18a4f2be7326cd874a5fa579fae794320a0f388d365dca7e480e55f83f8a" +dependencies = [ + "openssl-probe", + "rustls-pemfile", + "rustls-pki-types", + "schannel", + "security-framework", +] + [[package]] name = "rustls-pemfile" version = "2.1.2" From 7cefbd4a67e5636f046177f35fce14fff6300cb4 Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Thu, 3 Oct 2024 00:05:16 +0000 Subject: [PATCH 114/221] chore(deps): update rust crate async-compression to v0.4.13 (#78) --- Cargo.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index addad30..a2bfb09 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -219,9 +219,9 @@ dependencies = [ [[package]] name = "async-compression" -version = "0.4.12" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fec134f64e2bc57411226dfc4e52dec859ddfc7e711fc5e07b612584f000e4aa" +checksum = "7e614738943d3f68c628ae3dbce7c3daffb196665f82f8c8ea6b65de73c79429" dependencies = [ "bzip2", "deflate64", From 8309901a8c658cdf948889df57b731147d77c949 Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Sun, 6 Oct 2024 00:08:33 +0000 Subject: [PATCH 115/221] chore(deps): update rust crate once_cell to v1.20.2 (#79) --- Cargo.lock | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index a2bfb09..1689449 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1753,12 +1753,9 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.20.1" +version = "1.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82881c4be219ab5faaf2ad5e5e5ecdff8c66bd7402ca3160975c93b24961afd1" -dependencies = [ - "portable-atomic", -] +checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" [[package]] name = "onig" From 6ca7088b9c7ecd001df52f9cb35e86301c231bbb Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Sun, 6 Oct 2024 00:10:22 +0000 Subject: [PATCH 116/221] chore(deps): update rust crate pin-project to v1.1.6 (#80) --- Cargo.lock | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 1689449..508ac20 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1972,18 +1972,18 @@ dependencies = [ [[package]] name = "pin-project" -version = "1.1.5" +version = "1.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3" +checksum = "baf123a161dde1e524adf36f90bc5d8d3462824a9c43553ad07a8183161189ec" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.5" +version = "1.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" +checksum = "a4502d8515ca9f32f1fb543d987f63d95a14934883db45bdb48060b6b69257f8" dependencies = [ "proc-macro2", "quote", From e63baec2490e069953f63d158f9af212f154055b Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Mon, 7 Oct 2024 00:05:44 +0000 Subject: [PATCH 117/221] chore(deps): update rust crate axum-test to v16.2.0 (#81) --- Cargo.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 508ac20..7ff6e20 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -360,9 +360,9 @@ dependencies = [ [[package]] name = "axum-test" -version = "16.1.0" +version = "16.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "020db7902508b764267eb61f5972129b3d5b6037632523af76ca8eb40504f89a" +checksum = "3254184de359bbae2a8ca10b050870a7a4f1c8332a2c27d53f360b9835bb3911" dependencies = [ "anyhow", "assert-json-diff", From a2dc40f4443cb3c3d1c7cf2b9e7178777c4b73e7 Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Thu, 10 Oct 2024 00:05:25 +0000 Subject: [PATCH 118/221] chore(deps): update rust crate secrecy to v0.10.3 (#82) --- Cargo.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 7ff6e20..01d5c40 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2553,9 +2553,9 @@ dependencies = [ [[package]] name = "secrecy" -version = "0.10.2" +version = "0.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba079fa568d52545cd70b334b2ce6f88f62b8fc2bda9290f48a0578388a49331" +checksum = "e891af845473308773346dc847b2c23ee78fe442e0472ac50e22a18a93d3ae5a" dependencies = [ "serde", "zeroize", From 51f098f4ada63ddc550774a60a81eb3d55697b44 Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Fri, 11 Oct 2024 00:08:06 +0000 Subject: [PATCH 119/221] chore(deps): update rust crate async-compression to v0.4.14 (#83) --- Cargo.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 01d5c40..63eb98b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -219,9 +219,9 @@ dependencies = [ [[package]] name = "async-compression" -version = "0.4.13" +version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e614738943d3f68c628ae3dbce7c3daffb196665f82f8c8ea6b65de73c79429" +checksum = "998282f8f49ccd6116b0ed8a4de0fbd3151697920e7c7533416d6e25e76434a7" dependencies = [ "bzip2", "deflate64", From 5da4074bb9e87c9d17ed70669b6e47a3d57b1e8f Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Fri, 11 Oct 2024 00:08:45 +0000 Subject: [PATCH 120/221] chore(deps): update rust crate comrak to 0.29.0 (#84) --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 63eb98b..d9a14fb 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -562,9 +562,9 @@ checksum = "d3fd119d74b830634cea2a0f58bbd0d54540518a14397557951e79340abc28c0" [[package]] name = "comrak" -version = "0.28.0" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c93ab3577cca16b4a1d80a88c2e0cd8b6e969e51696f0bbb0d1dcb0157109832" +checksum = "d8c32ff8b21372fab0e9ecc4e42536055702dc5faa418362bffd1544f9d12637" dependencies = [ "caseless", "derive_builder", diff --git a/Cargo.toml b/Cargo.toml index 8f77e38..32e61d2 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -30,7 +30,7 @@ axum = { version = "0.7.5", default-features = false, features = [ "tracing", ] } axum-extra = { version = "0.9.3", features = ["typed-header"] } -comrak = { version = "0.28.0", default-features = false } +comrak = { version = "0.29.0", default-features = false } dotenvy = "0.15.7" envy = { path = "crates/envy" } flate2 = "1.0.30" From 68fec141550c329adefae7002d235e7451fee149 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sat, 12 Oct 2024 21:22:14 +0200 Subject: [PATCH 121/221] chore(release): release artifactview v0.4.7 --- CHANGELOG.md | 63 ++++++++++++++++++++++++++++++++++++++++++++++++++++ Cargo.lock | 2 +- Cargo.toml | 2 +- 3 files changed, 65 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 515575b..1bd4e61 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,69 @@ All notable changes to this project will be documented in this file. +## [v0.4.7](https://codeberg.org/ThetaDev/artifactview/compare/v0.4.6..v0.4.7) - 2024-10-12 + +### ๐Ÿ› Bug Fixes + +- *(deps)* Update rust crate serde_json to v1.0.121 (#29) - ([df805bf](https://codeberg.org/ThetaDev/artifactview/commit/df805bfe8394dd148ded1d4d3af901eb97593885)) +- *(deps)* Update rust crate serde_json to v1.0.122 (#32) - ([db67487](https://codeberg.org/ThetaDev/artifactview/commit/db67487abdfc15fe55854fcb233e0bb876b603b3)) +- *(deps)* Update rust crate regex to v1.10.6 (#33) - ([7c2a976](https://codeberg.org/ThetaDev/artifactview/commit/7c2a97666d98d4959affbb8ece93c4ba162a760d)) +- *(deps)* Update rust crate serde-env to 0.2.0 (#37) - ([6b7d107](https://codeberg.org/ThetaDev/artifactview/commit/6b7d107387ff3e52e62e4ed19c64e63f8048c478)) +- *(deps)* Update rust crate serde to v1.0.205 (#38) - ([f9698b5](https://codeberg.org/ThetaDev/artifactview/commit/f9698b5a7f9c7f3748d4d7aa38f7dc4c0f5f2029)) +- *(deps)* Update rust crate serde to v1.0.206 (#39) - ([ed86f30](https://codeberg.org/ThetaDev/artifactview/commit/ed86f30cf4a736eeb4a3d471e81b8e7f7344b53b)) +- *(deps)* Update rust crate serde_json to v1.0.124 (#40) - ([cc6a495](https://codeberg.org/ThetaDev/artifactview/commit/cc6a4959983205ae2f40d81c9a40c8514165c0bb)) +- *(deps)* Update rust crate serde to v1.0.207 (#41) - ([0c2b39a](https://codeberg.org/ThetaDev/artifactview/commit/0c2b39a68a1adb567a1582f0c1b9e024fda9ed53)) +- *(deps)* Update rust crate serde to v1.0.208 (#43) - ([8073e90](https://codeberg.org/ThetaDev/artifactview/commit/8073e90f685d80565db81e23769841c16c2af261)) +- *(deps)* Update rust crate serde_json to v1.0.125 (#44) - ([4b3639a](https://codeberg.org/ThetaDev/artifactview/commit/4b3639aea7beed4ebc421fdfe26823be164d5c1c)) +- *(deps)* Update rust crate comrak to 0.27.0 (#46) - ([3cef317](https://codeberg.org/ThetaDev/artifactview/commit/3cef3175767170824f604fcccdc912bf09745bf9)) +- *(deps)* Update rust crate comrak to 0.28.0 (#47) - ([a88a3c6](https://codeberg.org/ThetaDev/artifactview/commit/a88a3c6103e776a4d10b3f7e6e9a37a2c672cfba)) +- *(deps)* Update rust crate quick_cache to v0.6.6 (#50) - ([73959c0](https://codeberg.org/ThetaDev/artifactview/commit/73959c00f2c54b682c3db8640ca12319ce4ee37d)) +- *(deps)* Update rust crate reqwest to v0.12.7 (#51) - ([22d5626](https://codeberg.org/ThetaDev/artifactview/commit/22d5626bf025783a127cd99faa0052778e0253b1)) +- *(deps)* Update rust crate serde to v1.0.210 (#52) - ([f8c9d6f](https://codeberg.org/ThetaDev/artifactview/commit/f8c9d6f7cb475f4642f5e4f11108c4d053cc8c7e)) +- *(deps)* Update rust crate serde_json to v1.0.128 (#57) - ([a48e23b](https://codeberg.org/ThetaDev/artifactview/commit/a48e23beceefc1b4c51910dc7114ab62abfd189c)) +- *(deps)* Update rust crate quick_cache to v0.6.9 (#59) - ([4eb2b22](https://codeberg.org/ThetaDev/artifactview/commit/4eb2b22a8f1c2b1b28f72303d364708d04790eca)) +- *(deps)* Update rust crate tower-http to 0.6.0 (#61) - ([1d03f5b](https://codeberg.org/ThetaDev/artifactview/commit/1d03f5b4b09596a68893126d8b177226b62fb38a)) +- *(deps)* Update rust crate axum to v0.7.6 (#62) - ([61f65e5](https://codeberg.org/ThetaDev/artifactview/commit/61f65e54db431b3e94d21188920ae88233c44d3b)) +- *(deps)* Update rust crate quick-xml to v0.36.2 (#64) - ([de4459f](https://codeberg.org/ThetaDev/artifactview/commit/de4459f646444a949c390394524f284a1944a0da)) +- *(deps)* Update rust crate axum-extra to v0.9.4 (#63) - ([6619ef6](https://codeberg.org/ThetaDev/artifactview/commit/6619ef60e44832dd8839bcaf82d43707965b772a)) +- *(deps)* Update rust crate thiserror to v1.0.64 (#66) - ([923f97f](https://codeberg.org/ThetaDev/artifactview/commit/923f97f8e9d0855ff97685496221a180018ae686)) +- *(deps)* Update rust crate tower-http to v0.6.1 (#68) - ([ca0734d](https://codeberg.org/ThetaDev/artifactview/commit/ca0734d47072d555ba07b2f512975b9379305a58)) +- *(deps)* Update rust crate secrecy to 0.10.0 (#60) - ([72d0cde](https://codeberg.org/ThetaDev/artifactview/commit/72d0cde37075220cc6a938840ad30781ecdcbaa7)) + +### โš™๏ธ Miscellaneous Tasks + +- *(deps)* Update rust crate zip to v2.1.6 (#31) - ([7e0aaa8](https://codeberg.org/ThetaDev/artifactview/commit/7e0aaa8362005b56526ed5a6114f473893a5cf46)) +- *(deps)* Update rust crate flate2 to v1.0.31 (#34) - ([01e6a9c](https://codeberg.org/ThetaDev/artifactview/commit/01e6a9c8ad1f7c7dd5307a02a4a2b3c381aeacd6)) +- *(deps)* Update rust crate rstest to 0.22.0 (#35) - ([b9d0a29](https://codeberg.org/ThetaDev/artifactview/commit/b9d0a29741138a4dd7b758417b003c9bddc35f3e)) +- *(deps)* Update rust crate scraper to 0.20.0 (#36) - ([ca174a3](https://codeberg.org/ThetaDev/artifactview/commit/ca174a3aa21d0466930c2aa3291c2ecbed2ac31f)) +- *(deps)* Update rust crate axum-test to v15.3.1 (#42) - ([24171c9](https://codeberg.org/ThetaDev/artifactview/commit/24171c9800aa52270c203e5a5fc40f520b6ac74c)) +- *(deps)* Update rust crate tokio to v1.39.3 (#45) - ([63978d7](https://codeberg.org/ThetaDev/artifactview/commit/63978d79f9c3e276e59d7f3a558cec5f8f88e17e)) +- *(deps)* Update rust crate flate2 to v1.0.33 (#48) - ([980e596](https://codeberg.org/ThetaDev/artifactview/commit/980e5968eaa909c9d7a72d78156d3465c4599abe)) +- *(deps)* Update rust crate tokio-util to v0.7.12 (#49) - ([78179fd](https://codeberg.org/ThetaDev/artifactview/commit/78179fd73791c47cd3a60a37e704472109b50c15)) +- *(deps)* Update rust crate insta to v1.40.0 (#54) - ([03597d1](https://codeberg.org/ThetaDev/artifactview/commit/03597d10e58eca8a56e4708971cac1750e7707f4)) +- *(deps)* Update rust crate tokio to v1.40.0 (#55) - ([97b9610](https://codeberg.org/ThetaDev/artifactview/commit/97b9610f308c8ad0a083f6522c8b661c4b2c1e4f)) +- *(deps)* Update rust crate zip to v2.2.0 (#56) - ([3f719ac](https://codeberg.org/ThetaDev/artifactview/commit/3f719ac939612722b82b8bad2744b4570ff40df7)) +- *(deps)* Update rust crate once_cell to v1.20.0 (#58) - ([f8a95c8](https://codeberg.org/ThetaDev/artifactview/commit/f8a95c82e4a627d10906330327e94cd829d6f4c8)) +- *(deps)* Update rust crate axum-test to v15.7.1 (#53) - ([7a92941](https://codeberg.org/ThetaDev/artifactview/commit/7a92941452b0e2f59e0ceda49a378f0ef43784cb)) +- *(deps)* Update rust crate axum-test to v15.7.3 (#65) - ([82ca6dd](https://codeberg.org/ThetaDev/artifactview/commit/82ca6dd6bff9d8cb87a349cc8edb46f42a9721fc)) +- *(deps)* Update rust crate axum-test to v16 (#69) - ([dbcee49](https://codeberg.org/ThetaDev/artifactview/commit/dbcee4945c0be57534bdd2d7d98d85767e0cf92c)) +- *(deps)* Update rust crate flate2 to v1.0.34 (#70) - ([6f3544e](https://codeberg.org/ThetaDev/artifactview/commit/6f3544e3d8051697053cad5a751df6a1b4bc658b)) +- *(deps)* Update rust crate axum to v0.7.7 (#71) - ([01c494c](https://codeberg.org/ThetaDev/artifactview/commit/01c494c2773dc67f922beed7e84aa2ff59fb575f)) +- *(deps)* Update rust crate axum-test to v16.0.1 (#72) - ([2367512](https://codeberg.org/ThetaDev/artifactview/commit/23675124bdb15e01f037a6380f97f4d2921a34eb)) +- *(deps)* Update rust crate once_cell to v1.20.1 (#73) - ([484f113](https://codeberg.org/ThetaDev/artifactview/commit/484f1136469f5459b1d464944621e9db450d2f6a)) +- *(deps)* Update rust crate axum-test to v16.1.0 (#74) - ([2ed0cdc](https://codeberg.org/ThetaDev/artifactview/commit/2ed0cdc4a372c0a40de2ddc70a14b658a3619eec)) +- *(deps)* Update rust crate regex to v1.11.0 (#75) - ([e436f77](https://codeberg.org/ThetaDev/artifactview/commit/e436f77c3e4969d83c42d45201c15f0375d90ad0)) +- *(deps)* Update rust crate rstest to 0.23.0 (#76) - ([7c684eb](https://codeberg.org/ThetaDev/artifactview/commit/7c684eb5657eda84668bf3a1aadf38f1e4ac51db)) +- *(deps)* Update rust crate reqwest to v0.12.8 (#77) - ([a3f028f](https://codeberg.org/ThetaDev/artifactview/commit/a3f028f2ad11d3e599bf20d1f92679bf8b8dafc4)) +- *(deps)* Update rust crate async-compression to v0.4.13 (#78) - ([7cefbd4](https://codeberg.org/ThetaDev/artifactview/commit/7cefbd4a67e5636f046177f35fce14fff6300cb4)) +- *(deps)* Update rust crate once_cell to v1.20.2 (#79) - ([8309901](https://codeberg.org/ThetaDev/artifactview/commit/8309901a8c658cdf948889df57b731147d77c949)) +- *(deps)* Update rust crate pin-project to v1.1.6 (#80) - ([6ca7088](https://codeberg.org/ThetaDev/artifactview/commit/6ca7088b9c7ecd001df52f9cb35e86301c231bbb)) +- *(deps)* Update rust crate axum-test to v16.2.0 (#81) - ([e63baec](https://codeberg.org/ThetaDev/artifactview/commit/e63baec2490e069953f63d158f9af212f154055b)) +- *(deps)* Update rust crate secrecy to v0.10.3 (#82) - ([a2dc40f](https://codeberg.org/ThetaDev/artifactview/commit/a2dc40f4443cb3c3d1c7cf2b9e7178777c4b73e7)) +- *(deps)* Update rust crate async-compression to v0.4.14 (#83) - ([51f098f](https://codeberg.org/ThetaDev/artifactview/commit/51f098f4ada63ddc550774a60a81eb3d55697b44)) +- *(deps)* Update rust crate comrak to 0.29.0 (#84) - ([5da4074](https://codeberg.org/ThetaDev/artifactview/commit/5da4074bb9e87c9d17ed70669b6e47a3d57b1e8f)) + + ## [v0.4.6](https://codeberg.org/ThetaDev/artifactview/compare/v0.4.5..v0.4.6) - 2024-07-28 ### ๐Ÿ› Bug Fixes diff --git a/Cargo.lock b/Cargo.lock index d9a14fb..8d8c1fb 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -156,7 +156,7 @@ dependencies = [ [[package]] name = "artifactview" -version = "0.4.6" +version = "0.4.7" dependencies = [ "async_zip", "axum", diff --git a/Cargo.toml b/Cargo.toml index 32e61d2..45be181 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "artifactview" -version = "0.4.6" +version = "0.4.7" edition = "2021" authors = ["ThetaDev "] license = "MIT" From 4f4716cdd86c317ede2b381d375ef8e736aee240 Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Mon, 14 Oct 2024 00:07:06 +0000 Subject: [PATCH 122/221] chore(deps): update rust crate async-compression to v0.4.15 (#85) --- Cargo.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 8d8c1fb..69537f4 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -219,9 +219,9 @@ dependencies = [ [[package]] name = "async-compression" -version = "0.4.14" +version = "0.4.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "998282f8f49ccd6116b0ed8a4de0fbd3151697920e7c7533416d6e25e76434a7" +checksum = "e26a9844c659a2a293d239c7910b752f8487fe122c6c8bd1659bf85a6507c302" dependencies = [ "bzip2", "deflate64", From 9592da3d6e2c2223174fcc459e94f29bf5067ead Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Thu, 17 Oct 2024 00:07:01 +0000 Subject: [PATCH 123/221] chore(deps): update rust crate async-compression to v0.4.16 (#86) --- Cargo.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 69537f4..226cd7a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -219,9 +219,9 @@ dependencies = [ [[package]] name = "async-compression" -version = "0.4.15" +version = "0.4.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e26a9844c659a2a293d239c7910b752f8487fe122c6c8bd1659bf85a6507c302" +checksum = "103db485efc3e41214fe4fda9f3dbeae2eb9082f48fd236e6095627a9422066e" dependencies = [ "bzip2", "deflate64", From 2e46d3795089ef7b2739db4d216f4db99f792071 Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Fri, 18 Oct 2024 00:06:01 +0000 Subject: [PATCH 124/221] chore(deps): update rust crate serde_json to v1.0.129 (#87) --- Cargo.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 226cd7a..bd7958a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2652,9 +2652,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.128" +version = "1.0.129" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ff5456707a1de34e7e37f2a6fd3d3f808c318259cbd01ab6377795054b483d8" +checksum = "6dbcf9b78a125ee667ae19388837dd12294b858d101fdd393cb9d5501ef09eb2" dependencies = [ "itoa", "memchr", From 992f9954414af550fce90c9c7424ab0da2296875 Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Sat, 19 Oct 2024 00:07:03 +0000 Subject: [PATCH 125/221] chore(deps): update rust crate serde_json to v1.0.131 (#88) --- Cargo.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index bd7958a..fb2f3e4 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2652,9 +2652,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.129" +version = "1.0.131" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6dbcf9b78a125ee667ae19388837dd12294b858d101fdd393cb9d5501ef09eb2" +checksum = "67d42a0bd4ac281beff598909bb56a86acaf979b84483e1c79c10dcaf98f8cf3" dependencies = [ "itoa", "memchr", From f1d9897e832b5cdb99fd81edcb38d27bd6b445f8 Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Sun, 20 Oct 2024 00:11:20 +0000 Subject: [PATCH 126/221] chore(deps): update rust crate governor to v0.6.4 (#89) --- Cargo.lock | 59 +++++++++++++++--------------------------------------- 1 file changed, 16 insertions(+), 43 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index fb2f3e4..3d27bce 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -993,21 +993,6 @@ dependencies = [ "new_debug_unreachable", ] -[[package]] -name = "futures" -version = "0.3.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" -dependencies = [ - "futures-channel", - "futures-core", - "futures-executor", - "futures-io", - "futures-sink", - "futures-task", - "futures-util", -] - [[package]] name = "futures-channel" version = "0.3.30" @@ -1015,31 +1000,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" dependencies = [ "futures-core", - "futures-sink", ] [[package]] name = "futures-core" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" - -[[package]] -name = "futures-executor" -version = "0.3.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d" -dependencies = [ - "futures-core", - "futures-task", - "futures-util", -] +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" [[package]] name = "futures-io" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" +checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" [[package]] name = "futures-lite" @@ -1056,9 +1029,9 @@ dependencies = [ [[package]] name = "futures-macro" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" +checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", @@ -1067,15 +1040,15 @@ dependencies = [ [[package]] name = "futures-sink" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" [[package]] name = "futures-task" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" [[package]] name = "futures-timer" @@ -1085,11 +1058,10 @@ checksum = "f288b0a4f20f9a56b5d1da57e2227c661b7b16168e2f72365f57b63326e29b24" [[package]] name = "futures-util" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" dependencies = [ - "futures-channel", "futures-core", "futures-io", "futures-macro", @@ -1154,14 +1126,15 @@ checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" [[package]] name = "governor" -version = "0.6.3" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68a7f542ee6b35af73b06abc0dad1c1bae89964e4e253bc4b587b91c9637867b" +checksum = "7a7ecdc5898f6a43e08a7e2c9e2266beb98fd4dfbf2634182540fbb715245093" dependencies = [ "cfg-if", "dashmap", - "futures", + "futures-sink", "futures-timer", + "futures-util", "no-std-compat", "nonzero_ext", "parking_lot", From 600d18d05b356c641a32b93b2407a1f23e2370c4 Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Sun, 20 Oct 2024 00:11:49 +0000 Subject: [PATCH 127/221] chore(deps): update rust crate serde_json to v1.0.132 (#90) --- Cargo.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 3d27bce..b2b5dd1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2625,9 +2625,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.131" +version = "1.0.132" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67d42a0bd4ac281beff598909bb56a86acaf979b84483e1c79c10dcaf98f8cf3" +checksum = "d726bfaff4b320266d395898905d0eba0345aae23b54aee3a737e260fd46db03" dependencies = [ "itoa", "memchr", From 0b3c0325a50cd456cb9b62f97e916f0760785a3c Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Mon, 21 Oct 2024 00:05:23 +0000 Subject: [PATCH 128/221] chore(deps): update rust crate async-compression to v0.4.17 (#91) --- Cargo.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index b2b5dd1..334b2f7 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -219,9 +219,9 @@ dependencies = [ [[package]] name = "async-compression" -version = "0.4.16" +version = "0.4.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "103db485efc3e41214fe4fda9f3dbeae2eb9082f48fd236e6095627a9422066e" +checksum = "0cb8f1d480b0ea3783ab015936d2a55c87e219676f0c0b7dec61494043f21857" dependencies = [ "bzip2", "deflate64", From cbd304c84195983596156a95c26d65a89e93df8a Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Tue, 22 Oct 2024 00:06:37 +0000 Subject: [PATCH 129/221] chore(deps): update rust crate governor to 0.7.0 (#92) --- Cargo.lock | 9 +++++---- Cargo.toml | 2 +- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 334b2f7..252f750 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -736,11 +736,12 @@ dependencies = [ [[package]] name = "dashmap" -version = "5.5.3" +version = "6.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856" +checksum = "5041cc499144891f3790297212f32a74fb938e5136a14943f338ef9e0ae276cf" dependencies = [ "cfg-if", + "crossbeam-utils", "hashbrown", "lock_api", "once_cell", @@ -1126,9 +1127,9 @@ checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" [[package]] name = "governor" -version = "0.6.4" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a7ecdc5898f6a43e08a7e2c9e2266beb98fd4dfbf2634182540fbb715245093" +checksum = "0746aa765db78b521451ef74221663b57ba595bf83f75d0ce23cc09447c8139f" dependencies = [ "cfg-if", "dashmap", diff --git a/Cargo.toml b/Cargo.toml index 45be181..eab8325 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -35,7 +35,7 @@ dotenvy = "0.15.7" envy = { path = "crates/envy" } flate2 = "1.0.30" futures-lite = "2.3.0" -governor = "0.6.3" +governor = "0.7.0" headers = "0.4.0" http = "1.1.0" humansize = "2.1.3" From 2df196a2e666e8186d9ff66e885123c8a48c743c Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Wed, 23 Oct 2024 00:08:38 +0000 Subject: [PATCH 130/221] chore(deps): update rust crate thiserror to v1.0.65 (#94) --- Cargo.lock | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 252f750..127d745 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2905,18 +2905,18 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.64" +version = "1.0.65" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d50af8abc119fb8bb6dbabcfa89656f46f84aa0ac7688088608076ad2b459a84" +checksum = "5d11abd9594d9b38965ef50805c5e469ca9cc6f197f883f717e0269a3057b3d5" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.64" +version = "1.0.65" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08904e7672f5eb876eaaf87e0ce17857500934f4981c4a0ab2b4aa98baac7fc3" +checksum = "ae71770322cbd277e69d762a16c444af02aa0575ac0d174f0b9562d3b37f8602" dependencies = [ "proc-macro2", "quote", From e5b9105da1fb0c63584cc409b5dd98c1fe045f9b Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Wed, 23 Oct 2024 00:10:39 +0000 Subject: [PATCH 131/221] chore(deps): update rust crate serde to v1.0.213 (#93) --- Cargo.lock | 58 +++++++++++++++++++++++++++--------------------------- 1 file changed, 29 insertions(+), 29 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 127d745..9e08e4f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -243,7 +243,7 @@ checksum = "6e0c28dcc82d7c8ead5cb13beb15405b57b8546e93215673ff8ca0349a028107" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.82", ] [[package]] @@ -696,7 +696,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331" dependencies = [ "quote", - "syn 2.0.79", + "syn 2.0.82", ] [[package]] @@ -720,7 +720,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.79", + "syn 2.0.82", ] [[package]] @@ -731,7 +731,7 @@ checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" dependencies = [ "darling_core", "quote", - "syn 2.0.79", + "syn 2.0.82", ] [[package]] @@ -772,7 +772,7 @@ checksum = "67e77553c4162a157adbf834ebae5b415acbecbeafc7a74b0e886657506a7611" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.82", ] [[package]] @@ -793,7 +793,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.82", ] [[package]] @@ -803,7 +803,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "206868b8242f27cecce124c19fd88157fbd0dd334df2587f36417bafbc85097b" dependencies = [ "derive_builder_core", - "syn 2.0.79", + "syn 2.0.82", ] [[package]] @@ -816,7 +816,7 @@ dependencies = [ "proc-macro2", "quote", "rustc_version", - "syn 2.0.79", + "syn 2.0.82", ] [[package]] @@ -850,7 +850,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.82", ] [[package]] @@ -1036,7 +1036,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.82", ] [[package]] @@ -1221,7 +1221,7 @@ dependencies = [ "markup5ever", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.82", ] [[package]] @@ -1776,7 +1776,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.82", ] [[package]] @@ -1923,7 +1923,7 @@ dependencies = [ "phf_shared 0.11.2", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.82", ] [[package]] @@ -1961,7 +1961,7 @@ checksum = "a4502d8515ca9f32f1fb543d987f63d95a14934883db45bdb48060b6b69257f8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.82", ] [[package]] @@ -2340,7 +2340,7 @@ dependencies = [ "regex", "relative-path", "rustc_version", - "syn 2.0.79", + "syn 2.0.82", "unicode-ident", ] @@ -2585,9 +2585,9 @@ checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" [[package]] name = "serde" -version = "1.0.210" +version = "1.0.213" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8e3592472072e6e22e0a54d5904d9febf8508f65fb8552499a1abc7d1078c3a" +checksum = "3ea7893ff5e2466df8d720bb615088341b295f849602c6956047f8f80f0e9bc1" dependencies = [ "serde_derive", ] @@ -2615,13 +2615,13 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.210" +version = "1.0.213" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f" +checksum = "7e85ad2009c50b58e87caa8cd6dac16bdf511bbfb7af6c33df902396aa480fa5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.82", ] [[package]] @@ -2830,9 +2830,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.79" +version = "2.0.82" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89132cd0bf050864e1d38dc3bbc07a0eb8e7530af26344d3d2bbbef83499f590" +checksum = "83540f837a8afc019423a8edb95b52a8effe46957ee402287f4292fae35be021" dependencies = [ "proc-macro2", "quote", @@ -2920,7 +2920,7 @@ checksum = "ae71770322cbd277e69d762a16c444af02aa0575ac0d174f0b9562d3b37f8602" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.82", ] [[package]] @@ -3005,7 +3005,7 @@ checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.82", ] [[package]] @@ -3131,7 +3131,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.82", ] [[package]] @@ -3371,7 +3371,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.82", "wasm-bindgen-shared", ] @@ -3405,7 +3405,7 @@ checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.82", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -3724,7 +3724,7 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.82", ] [[package]] @@ -3744,7 +3744,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.82", ] [[package]] From 1dc4fe225c01f237f6a698fced7eff72cfb8ee85 Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Wed, 23 Oct 2024 00:11:14 +0000 Subject: [PATCH 132/221] chore(deps): update rust crate tokio to v1.41.0 (#95) --- Cargo.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 9e08e4f..4a9cbed 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2981,9 +2981,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.40.0" +version = "1.41.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2b070231665d27ad9ec9b8df639893f46727666c6767db40317fbe920a5d998" +checksum = "145f3413504347a2be84393cc8a7d2fb4d863b375909ea59f2158261aa258bbb" dependencies = [ "backtrace", "bytes", From c82bccca9098281fa42ded5d5527eadb3cbcce88 Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Fri, 25 Oct 2024 00:09:28 +0000 Subject: [PATCH 133/221] chore(deps): update rust crate pin-project to v1.1.7 (#96) --- Cargo.lock | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 4a9cbed..4bd6d05 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1946,18 +1946,18 @@ dependencies = [ [[package]] name = "pin-project" -version = "1.1.6" +version = "1.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf123a161dde1e524adf36f90bc5d8d3462824a9c43553ad07a8183161189ec" +checksum = "be57f64e946e500c8ee36ef6331845d40a93055567ec57e8fae13efd33759b95" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.6" +version = "1.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4502d8515ca9f32f1fb543d987f63d95a14934883db45bdb48060b6b69257f8" +checksum = "3c0f5fad0874fc7abcd4d750e76917eaebbecaa2c20bde22e1dbeeba8beb758c" dependencies = [ "proc-macro2", "quote", From 613815aa1ebc01643e117ca9fafcb37bfe7d29d7 Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Fri, 25 Oct 2024 00:10:06 +0000 Subject: [PATCH 134/221] chore(deps): update rust crate regex to v1.11.1 (#97) --- Cargo.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 4bd6d05..8c3f9fa 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2211,9 +2211,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.11.0" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38200e5ee88914975b69f657f0801b6f6dccafd44fd9326302a4aaeecfacb1d8" +checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" dependencies = [ "aho-corasick", "memchr", From b2070ec460e45eeb9997885bd7cf54913f9f4183 Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Sat, 26 Oct 2024 00:05:23 +0000 Subject: [PATCH 135/221] chore(deps): update rust crate axum-test to v16.3.0 (#98) --- Cargo.lock | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 8c3f9fa..813742a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -360,15 +360,16 @@ dependencies = [ [[package]] name = "axum-test" -version = "16.2.0" +version = "16.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3254184de359bbae2a8ca10b050870a7a4f1c8332a2c27d53f360b9835bb3911" +checksum = "d6ba5211f2e0b77d1cbe1e1c7c826edc20fb1f69720a7fdb1d2a25289c98978e" dependencies = [ "anyhow", "assert-json-diff", "auto-future", "axum", "bytes", + "bytesize", "cookie", "http 1.1.0", "http-body-util", @@ -483,6 +484,12 @@ version = "1.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "428d9aa8fbc0670b7b8d6030a7fadd0f86151cae55e4dbbece15f3780a3dfaf3" +[[package]] +name = "bytesize" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3e368af43e418a04d52505cf3dbc23dda4e3407ae2fa99fd0e4f308ce546acc" + [[package]] name = "bzip2" version = "0.4.4" From 5aec8d677f089ff5092fe78655170d52e544baeb Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Mon, 28 Oct 2024 00:09:33 +0000 Subject: [PATCH 136/221] chore(deps): update rust crate insta to v1.41.0 (#99) --- Cargo.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 813742a..41c7087 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1439,9 +1439,9 @@ dependencies = [ [[package]] name = "insta" -version = "1.40.0" +version = "1.41.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6593a41c7a73841868772495db7dc1e8ecab43bb5c0b6da2059246c4b506ab60" +checksum = "a1f72d3e19488cf7d8ea52d2fc0f8754fc933398b337cd3cbdb28aaeb35159ef" dependencies = [ "console", "lazy_static", From 72e20d413e80b86d49ea0b275ce6aece99d75314 Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Mon, 28 Oct 2024 00:12:01 +0000 Subject: [PATCH 137/221] chore(deps): update rust crate quick-xml to 0.37.0 (#100) --- Cargo.lock | 4 ++-- crates/junit-parser/Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 41c7087..37adf19 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2085,9 +2085,9 @@ checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" [[package]] name = "quick-xml" -version = "0.36.2" +version = "0.37.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7649a7b4df05aed9ea7ec6f628c67c9953a43869b8bc50929569b2999d443fe" +checksum = "ffbfb3ddf5364c9cfcd65549a1e7b801d0e8d1b14c1a1590a6408aa93cfbfa84" dependencies = [ "memchr", ] diff --git a/crates/junit-parser/Cargo.toml b/crates/junit-parser/Cargo.toml index 9cc1683..10bea44 100644 --- a/crates/junit-parser/Cargo.toml +++ b/crates/junit-parser/Cargo.toml @@ -7,7 +7,7 @@ license = "BSD-2-Clause" repository = "https://github.com/borisfaure/junit-parser" [dependencies] -quick-xml = { version = "0.36.0", features = ["escape-html"] } +quick-xml = { version = "0.37.0", features = ["escape-html"] } thiserror = "1.0.61" time = { version = "0.3.36", features = ["parsing", "serde-well-known"] } serde = { version = "1.0", features = ["derive"] } From d45e8e63c9ce4067a05839643581b9f42e4048ec Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Tue, 29 Oct 2024 00:08:14 +0000 Subject: [PATCH 138/221] chore(deps): update rust crate reqwest to v0.12.9 (#101) --- Cargo.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 37adf19..68d451c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2253,9 +2253,9 @@ checksum = "ba39f3699c378cd8970968dcbff9c43159ea4cfbd88d43c00b22f2ef10a435d2" [[package]] name = "reqwest" -version = "0.12.8" +version = "0.12.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f713147fbe92361e52392c73b8c9e48c04c6625bce969ef54dc901e58e042a7b" +checksum = "a77c62af46e79de0a562e1a9849205ffcb7fc1238876e9bd743357570e04046f" dependencies = [ "base64 0.22.1", "bytes", From 2a1ebd7b854ca82cceb768202e4d9ee984007311 Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Tue, 29 Oct 2024 00:10:55 +0000 Subject: [PATCH 139/221] chore(deps): update rust crate serde to v1.0.214 (#102) --- Cargo.lock | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 68d451c..b23ce86 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2592,9 +2592,9 @@ checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" [[package]] name = "serde" -version = "1.0.213" +version = "1.0.214" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ea7893ff5e2466df8d720bb615088341b295f849602c6956047f8f80f0e9bc1" +checksum = "f55c3193aca71c12ad7890f1785d2b73e1b9f63a0bbc353c08ef26fe03fc56b5" dependencies = [ "serde_derive", ] @@ -2622,9 +2622,9 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.213" +version = "1.0.214" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e85ad2009c50b58e87caa8cd6dac16bdf511bbfb7af6c33df902396aa480fa5" +checksum = "de523f781f095e28fa605cdce0f8307e451cc0fd14e2eb4cd2e98a355b147766" dependencies = [ "proc-macro2", "quote", From 3bda06357809e68c0804aa425e625893af1bbde2 Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Thu, 31 Oct 2024 00:06:56 +0000 Subject: [PATCH 140/221] chore(deps): update rust crate futures-lite to v2.4.0 (#103) --- Cargo.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index b23ce86..f7bdff0 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1024,9 +1024,9 @@ checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" [[package]] name = "futures-lite" -version = "2.3.0" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52527eb5074e35e9339c6b4e8d12600c7128b68fb25dcb9fa9dec18f7c25f3a5" +checksum = "3f1fa2f9765705486b33fd2acf1577f8ec449c2ba1f318ae5447697b7c08d210" dependencies = [ "fastrand", "futures-core", From a406bffabeeb2627cd5ef74f3520add6eb0a8d6c Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Fri, 1 Nov 2024 00:08:30 +0000 Subject: [PATCH 141/221] chore(deps): update rust crate insta to v1.41.1 (#104) --- Cargo.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index f7bdff0..9d9ceef 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1439,9 +1439,9 @@ dependencies = [ [[package]] name = "insta" -version = "1.41.0" +version = "1.41.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1f72d3e19488cf7d8ea52d2fc0f8754fc933398b337cd3cbdb28aaeb35159ef" +checksum = "7e9ffc4d4892617c50a928c52b2961cb5174b6fc6ebf252b2fac9d21955c48b8" dependencies = [ "console", "lazy_static", From 8f89fc9953370c4325c63762e4451d37a1a4a64a Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Fri, 1 Nov 2024 00:12:17 +0000 Subject: [PATCH 142/221] chore(deps): update rust crate thiserror to v1.0.66 (#105) --- Cargo.lock | 58 +++++++++++++++++++++++++++--------------------------- 1 file changed, 29 insertions(+), 29 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 9d9ceef..18f1c4e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -243,7 +243,7 @@ checksum = "6e0c28dcc82d7c8ead5cb13beb15405b57b8546e93215673ff8ca0349a028107" dependencies = [ "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.86", ] [[package]] @@ -703,7 +703,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331" dependencies = [ "quote", - "syn 2.0.82", + "syn 2.0.86", ] [[package]] @@ -727,7 +727,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.82", + "syn 2.0.86", ] [[package]] @@ -738,7 +738,7 @@ checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" dependencies = [ "darling_core", "quote", - "syn 2.0.82", + "syn 2.0.86", ] [[package]] @@ -779,7 +779,7 @@ checksum = "67e77553c4162a157adbf834ebae5b415acbecbeafc7a74b0e886657506a7611" dependencies = [ "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.86", ] [[package]] @@ -800,7 +800,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.86", ] [[package]] @@ -810,7 +810,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "206868b8242f27cecce124c19fd88157fbd0dd334df2587f36417bafbc85097b" dependencies = [ "derive_builder_core", - "syn 2.0.82", + "syn 2.0.86", ] [[package]] @@ -823,7 +823,7 @@ dependencies = [ "proc-macro2", "quote", "rustc_version", - "syn 2.0.82", + "syn 2.0.86", ] [[package]] @@ -857,7 +857,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.86", ] [[package]] @@ -1043,7 +1043,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.86", ] [[package]] @@ -1228,7 +1228,7 @@ dependencies = [ "markup5ever", "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.86", ] [[package]] @@ -1783,7 +1783,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.86", ] [[package]] @@ -1930,7 +1930,7 @@ dependencies = [ "phf_shared 0.11.2", "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.86", ] [[package]] @@ -1968,7 +1968,7 @@ checksum = "3c0f5fad0874fc7abcd4d750e76917eaebbecaa2c20bde22e1dbeeba8beb758c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.86", ] [[package]] @@ -2347,7 +2347,7 @@ dependencies = [ "regex", "relative-path", "rustc_version", - "syn 2.0.82", + "syn 2.0.86", "unicode-ident", ] @@ -2628,7 +2628,7 @@ checksum = "de523f781f095e28fa605cdce0f8307e451cc0fd14e2eb4cd2e98a355b147766" dependencies = [ "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.86", ] [[package]] @@ -2837,9 +2837,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.82" +version = "2.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83540f837a8afc019423a8edb95b52a8effe46957ee402287f4292fae35be021" +checksum = "e89275301d38033efb81a6e60e3497e734dfcc62571f2854bf4b16690398824c" dependencies = [ "proc-macro2", "quote", @@ -2912,22 +2912,22 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.65" +version = "1.0.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d11abd9594d9b38965ef50805c5e469ca9cc6f197f883f717e0269a3057b3d5" +checksum = "5d171f59dbaa811dbbb1aee1e73db92ec2b122911a48e1390dfe327a821ddede" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.65" +version = "1.0.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae71770322cbd277e69d762a16c444af02aa0575ac0d174f0b9562d3b37f8602" +checksum = "b08be0f17bd307950653ce45db00cd31200d82b624b36e181337d9c7d92765b5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.86", ] [[package]] @@ -3012,7 +3012,7 @@ checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" dependencies = [ "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.86", ] [[package]] @@ -3138,7 +3138,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.86", ] [[package]] @@ -3378,7 +3378,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.86", "wasm-bindgen-shared", ] @@ -3412,7 +3412,7 @@ checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.86", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -3731,7 +3731,7 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.86", ] [[package]] @@ -3751,7 +3751,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.86", ] [[package]] From 1f00bbfac53521cf0f76cf6fc4bf23e7a5e10562 Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Fri, 1 Nov 2024 00:12:30 +0000 Subject: [PATCH 143/221] chore(deps): update rust crate scraper to 0.21.0 (#106) --- Cargo.lock | 59 ++++++++++++++++++------------------------------------ Cargo.toml | 2 +- 2 files changed, 21 insertions(+), 40 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 18f1c4e..5ce8734 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -685,14 +685,14 @@ dependencies = [ [[package]] name = "cssparser" -version = "0.31.2" +version = "0.34.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b3df4f93e5fbbe73ec01ec8d3f68bba73107993a5b1e7519273c32db9b0d5be" +checksum = "b7c66d1cd8ed61bf80b38432613a7a2f09401ab8d0501110655f8b341484a3e3" dependencies = [ "cssparser-macros", "dtoa-short", "itoa", - "phf 0.11.2", + "phf", "smallvec 1.13.2", ] @@ -883,9 +883,9 @@ dependencies = [ [[package]] name = "ego-tree" -version = "0.6.2" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a68a4904193147e0a8dec3314640e6db742afd5f6e634f428a6af230d9b3591" +checksum = "7c6ba7d4eec39eaa9ab24d44a0e73a7949a1095a8b3f3abb11eddf27dbb56a53" [[package]] name = "encode_unicode" @@ -1219,9 +1219,9 @@ dependencies = [ [[package]] name = "html5ever" -version = "0.27.0" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c13771afe0e6e846f1e67d038d4cb29998a6779f93c809212e4e9c32efd244d4" +checksum = "2e15626aaf9c351bc696217cbe29cb9b5e86c43f8a46b5e2f5c6c5cf7cb904ce" dependencies = [ "log", "mac", @@ -1580,13 +1580,13 @@ checksum = "c41e0c4fef86961ac6d6f8a82609f55f31b05e4fce149ac5710e439df7619ba4" [[package]] name = "markup5ever" -version = "0.12.1" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16ce3abbeba692c8b8441d036ef91aea6df8da2c6b6e21c7e14d3c18e526be45" +checksum = "82c88c6129bd24319e62a0359cb6b958fa7e8be6e19bb1663bc396b90883aca5" dependencies = [ "log", - "phf 0.11.2", - "phf_codegen 0.11.2", + "phf", + "phf_codegen", "string_cache", "string_cache_codegen", "tendril", @@ -1861,15 +1861,6 @@ version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" -[[package]] -name = "phf" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fabbf1ead8a5bcbc20f5f8b939ee3f5b0f6f281b6ad3468b84656b658b455259" -dependencies = [ - "phf_shared 0.10.0", -] - [[package]] name = "phf" version = "0.11.2" @@ -1880,16 +1871,6 @@ dependencies = [ "phf_shared 0.11.2", ] -[[package]] -name = "phf_codegen" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fb1c3a8bc4dd4e5cfce29b44ffc14bedd2ee294559a294e2a4d4c9e9a6a13cd" -dependencies = [ - "phf_generator 0.10.0", - "phf_shared 0.10.0", -] - [[package]] name = "phf_codegen" version = "0.11.2" @@ -2518,16 +2499,16 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "scraper" -version = "0.20.0" +version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b90460b31bfe1fc07be8262e42c665ad97118d4585869de9345a84d501a9eaf0" +checksum = "b0e749d29b2064585327af5038a5a8eb73aeebad4a3472e83531a436563f7208" dependencies = [ "ahash", "cssparser", "ego-tree", "getopts", "html5ever", - "once_cell", + "precomputed-hash", "selectors", "tendril", ] @@ -2567,9 +2548,9 @@ dependencies = [ [[package]] name = "selectors" -version = "0.25.0" +version = "0.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4eb30575f3638fc8f6815f448d50cb1a2e255b0897985c8c59f4d37b72a07b06" +checksum = "fd568a4c9bb598e291a08244a5c1f5a8a6650bee243b5b0f8dbb3d9cc1d87fe8" dependencies = [ "bitflags 2.6.0", "cssparser", @@ -2577,8 +2558,8 @@ dependencies = [ "fxhash", "log", "new_debug_unreachable", - "phf 0.10.1", - "phf_codegen 0.10.0", + "phf", + "phf_codegen", "precomputed-hash", "servo_arc", "smallvec 1.13.2", @@ -2667,9 +2648,9 @@ dependencies = [ [[package]] name = "servo_arc" -version = "0.3.0" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d036d71a959e00c77a63538b90a6c2390969f9772b096ea837205c6bd0491a44" +checksum = "ae65c4249478a2647db249fb43e23cec56a2c8974a427e7bd8cb5a1d0964921a" dependencies = [ "stable_deref_trait", ] diff --git a/Cargo.toml b/Cargo.toml index eab8325..ba1b1c9 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -86,7 +86,7 @@ httpdate = "1.0.3" insta = { version = "1.39.0", features = ["json"] } proptest = "1.4.0" rstest = { version = "0.23.0", default-features = false } -scraper = "0.20.0" +scraper = "0.21.0" temp_testdir = "0.2.3" [workspace] From 39a76eaa334d3f57e30e3ba95eb781dfa7aee1ee Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Mon, 4 Nov 2024 00:09:10 +0000 Subject: [PATCH 144/221] chore(deps): update rust crate thiserror to v1.0.67 (#107) --- Cargo.lock | 58 +++++++++++++++++++++++++++--------------------------- 1 file changed, 29 insertions(+), 29 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 5ce8734..984c9ff 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -243,7 +243,7 @@ checksum = "6e0c28dcc82d7c8ead5cb13beb15405b57b8546e93215673ff8ca0349a028107" dependencies = [ "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.87", ] [[package]] @@ -703,7 +703,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331" dependencies = [ "quote", - "syn 2.0.86", + "syn 2.0.87", ] [[package]] @@ -727,7 +727,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.86", + "syn 2.0.87", ] [[package]] @@ -738,7 +738,7 @@ checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" dependencies = [ "darling_core", "quote", - "syn 2.0.86", + "syn 2.0.87", ] [[package]] @@ -779,7 +779,7 @@ checksum = "67e77553c4162a157adbf834ebae5b415acbecbeafc7a74b0e886657506a7611" dependencies = [ "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.87", ] [[package]] @@ -800,7 +800,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.87", ] [[package]] @@ -810,7 +810,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "206868b8242f27cecce124c19fd88157fbd0dd334df2587f36417bafbc85097b" dependencies = [ "derive_builder_core", - "syn 2.0.86", + "syn 2.0.87", ] [[package]] @@ -823,7 +823,7 @@ dependencies = [ "proc-macro2", "quote", "rustc_version", - "syn 2.0.86", + "syn 2.0.87", ] [[package]] @@ -857,7 +857,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.87", ] [[package]] @@ -1043,7 +1043,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.87", ] [[package]] @@ -1228,7 +1228,7 @@ dependencies = [ "markup5ever", "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.87", ] [[package]] @@ -1783,7 +1783,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.87", ] [[package]] @@ -1911,7 +1911,7 @@ dependencies = [ "phf_shared 0.11.2", "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.87", ] [[package]] @@ -1949,7 +1949,7 @@ checksum = "3c0f5fad0874fc7abcd4d750e76917eaebbecaa2c20bde22e1dbeeba8beb758c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.87", ] [[package]] @@ -2328,7 +2328,7 @@ dependencies = [ "regex", "relative-path", "rustc_version", - "syn 2.0.86", + "syn 2.0.87", "unicode-ident", ] @@ -2609,7 +2609,7 @@ checksum = "de523f781f095e28fa605cdce0f8307e451cc0fd14e2eb4cd2e98a355b147766" dependencies = [ "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.87", ] [[package]] @@ -2818,9 +2818,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.86" +version = "2.0.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e89275301d38033efb81a6e60e3497e734dfcc62571f2854bf4b16690398824c" +checksum = "25aa4ce346d03a6dcd68dd8b4010bcb74e54e62c90c573f394c46eae99aba32d" dependencies = [ "proc-macro2", "quote", @@ -2893,22 +2893,22 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.66" +version = "1.0.67" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d171f59dbaa811dbbb1aee1e73db92ec2b122911a48e1390dfe327a821ddede" +checksum = "3b3c6efbfc763e64eb85c11c25320f0737cb7364c4b6336db90aa9ebe27a0bbd" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.66" +version = "1.0.67" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b08be0f17bd307950653ce45db00cd31200d82b624b36e181337d9c7d92765b5" +checksum = "b607164372e89797d78b8e23a6d67d5d1038c1c65efd52e1389ef8b77caba2a6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.87", ] [[package]] @@ -2993,7 +2993,7 @@ checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" dependencies = [ "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.87", ] [[package]] @@ -3119,7 +3119,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.87", ] [[package]] @@ -3359,7 +3359,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.87", "wasm-bindgen-shared", ] @@ -3393,7 +3393,7 @@ checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.87", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -3712,7 +3712,7 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.87", ] [[package]] @@ -3732,7 +3732,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.87", ] [[package]] From a48af07d936a77977d602649fe579941b2cd2630 Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Thu, 7 Nov 2024 00:11:03 +0000 Subject: [PATCH 145/221] chore(deps): update rust crate thiserror to v1.0.68 (#108) --- Cargo.lock | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 984c9ff..8e25d8f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2893,18 +2893,18 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.67" +version = "1.0.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b3c6efbfc763e64eb85c11c25320f0737cb7364c4b6336db90aa9ebe27a0bbd" +checksum = "02dd99dc800bbb97186339685293e1cc5d9df1f8fae2d0aecd9ff1c77efea892" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.67" +version = "1.0.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b607164372e89797d78b8e23a6d67d5d1038c1c65efd52e1389ef8b77caba2a6" +checksum = "a7c61ec9a6f64d2793d8a45faba21efbe3ced62a886d44c36a009b2b519b4c7e" dependencies = [ "proc-macro2", "quote", From 44cc0c10103eb8fc10ddcc17e559479fadcbe4f1 Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Thu, 7 Nov 2024 00:17:37 +0000 Subject: [PATCH 146/221] chore(deps): update rust crate url to v2.5.3 (#109) --- Cargo.lock | 265 ++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 253 insertions(+), 12 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 8e25d8f..a927051 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1402,6 +1402,124 @@ dependencies = [ "cc", ] +[[package]] +name = "icu_collections" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locid" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_locid_transform" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01d11ac35de8e40fdeda00d9e1e9d92525f3f9d887cdd7aa81d727596788b54e" +dependencies = [ + "displaydoc", + "icu_locid", + "icu_locid_transform_data", + "icu_provider", + "tinystr", + "zerovec", +] + +[[package]] +name = "icu_locid_transform_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdc8ff3388f852bede6b579ad4e978ab004f139284d7b28715f773507b946f6e" + +[[package]] +name = "icu_normalizer" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec 1.13.2", + "utf16_iter", + "utf8_iter", + "write16", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8cafbf7aa791e9b22bec55a167906f9e1215fd475cd22adfcf660e03e989516" + +[[package]] +name = "icu_properties" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93d6020766cfc6302c15dbbc9c8778c37e62c14427cb7f6e601d849e092aeef5" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_locid_transform", + "icu_properties_data", + "icu_provider", + "tinystr", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67a8effbc3dd3e4ba1afa8ad918d5684b8868b3b26500753effea8d2eed19569" + +[[package]] +name = "icu_provider" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9" +dependencies = [ + "displaydoc", + "icu_locid", + "icu_provider_macros", + "stable_deref_trait", + "tinystr", + "writeable", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_provider_macros" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", +] + [[package]] name = "ident_case" version = "1.0.1" @@ -1410,12 +1528,23 @@ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] name = "idna" -version = "0.5.0" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" +checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" dependencies = [ - "unicode-bidi", - "unicode-normalization", + "idna_adapter", + "smallvec 1.13.2", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "daca1df1c957320b2cf139ac61e7bd64fed304c5040df000a745aa1de3b4ef71" +dependencies = [ + "icu_normalizer", + "icu_properties", ] [[package]] @@ -1529,6 +1658,12 @@ version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" +[[package]] +name = "litemap" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "643cb0b8d4fcc284004d5fd0d67ccf61dfffadb7f75e1e71bc420f4688a3a704" + [[package]] name = "lock_api" version = "0.4.12" @@ -2842,6 +2977,17 @@ dependencies = [ "futures-core", ] +[[package]] +name = "synstructure" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", +] + [[package]] name = "syntect" version = "5.2.0" @@ -2952,6 +3098,16 @@ dependencies = [ "time-core", ] +[[package]] +name = "tinystr" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f" +dependencies = [ + "displaydoc", + "zerovec", +] + [[package]] name = "tinyvec" version = "1.8.0" @@ -3190,12 +3346,6 @@ dependencies = [ "version_check", ] -[[package]] -name = "unicode-bidi" -version = "0.3.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" - [[package]] name = "unicode-ident" version = "1.0.13" @@ -3237,9 +3387,9 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "url" -version = "2.5.2" +version = "2.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" +checksum = "8d157f1b96d14500ffdc1f10ba712e780825526c03d9a49b4d0324b0d9113ada" dependencies = [ "form_urlencoded", "idna", @@ -3252,6 +3402,18 @@ version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" +[[package]] +name = "utf16_iter" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246" + +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + [[package]] name = "utf8parse" version = "0.2.2" @@ -3579,6 +3741,18 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" +[[package]] +name = "write16" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936" + +[[package]] +name = "writeable" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" + [[package]] name = "xz2" version = "0.1.7" @@ -3695,6 +3869,30 @@ dependencies = [ "yarte_helpers", ] +[[package]] +name = "yoke" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c5b1314b079b0930c31e3af543d8ee1757b1951ae1e1565ec704403a7240ca5" +dependencies = [ + "serde", + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28cc31741b18cb6f1d5ff12f5b7523e3d6eb0852bbbad19d73905511d9849b95" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", + "synstructure", +] + [[package]] name = "zerocopy" version = "0.7.35" @@ -3715,6 +3913,27 @@ dependencies = [ "syn 2.0.87", ] +[[package]] +name = "zerofrom" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91ec111ce797d0e0784a1116d0ddcdbea84322cd79e5d5ad173daeba4f93ab55" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ea7b4a3637ea8669cedf0f1fd5c286a17f3de97b8dd5a70a6c167a1730e63a5" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", + "synstructure", +] + [[package]] name = "zeroize" version = "1.8.1" @@ -3735,6 +3954,28 @@ dependencies = [ "syn 2.0.87", ] +[[package]] +name = "zerovec" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa2b893d79df23bfb12d5461018d408ea19dfafe76c2c7ef6d4eba614f8ff079" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", +] + [[package]] name = "zip" version = "2.2.0" From dd809ce3f322fe8dafadeb802be7fcf905aa2f02 Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Fri, 8 Nov 2024 00:11:55 +0000 Subject: [PATCH 147/221] chore(deps): update rust crate tokio to v1.41.1 (#111) --- Cargo.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index a927051..6bfd110 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3125,9 +3125,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.41.0" +version = "1.41.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "145f3413504347a2be84393cc8a7d2fb4d863b375909ea59f2158261aa258bbb" +checksum = "22cfb5bee7a6a52939ca9224d6ac897bb669134078daa8735560897f69de4d33" dependencies = [ "backtrace", "bytes", From 8cb636ccc9c93800e6e98522de5c38bb05e76fdb Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Fri, 8 Nov 2024 00:13:06 +0000 Subject: [PATCH 148/221] chore(deps): update rust crate thiserror to v2 (#110) --- Cargo.toml | 2 +- crates/async_zip/Cargo.toml | 2 +- crates/junit-parser/Cargo.toml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index ba1b1c9..0c6beae 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -66,7 +66,7 @@ syntect = { version = "5.2.0", default-features = false, features = [ "html", "regex-onig", ] } -thiserror = "1.0.61" +thiserror = "2.0.0" time = { version = "0.3.36", features = ["serde-human-readable", "macros"] } tokio = { version = "1.37.0", features = ["macros", "fs", "rt-multi-thread"] } tokio-util = { version = "0.7.11", features = ["io"] } diff --git a/crates/async_zip/Cargo.toml b/crates/async_zip/Cargo.toml index b5d3193..5b04105 100644 --- a/crates/async_zip/Cargo.toml +++ b/crates/async_zip/Cargo.toml @@ -37,7 +37,7 @@ rustdoc-args = ["--cfg", "docsrs"] crc32fast = "1" futures-lite = { version = "2.1.0", default-features = false, features = ["std"] } pin-project = "1" -thiserror = "1" +thiserror = "2" async-compression = { version = "0.4.2", default-features = false, features = ["futures-io"], optional = true } chrono = { version = "0.4", default-features = false, features = ["clock"], optional = true } diff --git a/crates/junit-parser/Cargo.toml b/crates/junit-parser/Cargo.toml index 10bea44..290cda5 100644 --- a/crates/junit-parser/Cargo.toml +++ b/crates/junit-parser/Cargo.toml @@ -8,7 +8,7 @@ repository = "https://github.com/borisfaure/junit-parser" [dependencies] quick-xml = { version = "0.37.0", features = ["escape-html"] } -thiserror = "1.0.61" +thiserror = "2.0.0" time = { version = "0.3.36", features = ["parsing", "serde-well-known"] } serde = { version = "1.0", features = ["derive"] } From c05eb562a9d10945ee534ef50208aeb004023c51 Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Sat, 9 Nov 2024 00:07:38 +0000 Subject: [PATCH 149/221] chore(deps): update rust crate futures-lite to v2.5.0 (#112) --- Cargo.lock | 44 ++++++++++++++++++++++++++++++++------------ 1 file changed, 32 insertions(+), 12 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 6bfd110..2075c88 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -195,7 +195,7 @@ dependencies = [ "serde_urlencoded", "syntect", "temp_testdir", - "thiserror", + "thiserror 2.0.1", "time", "tokio", "tokio-util", @@ -256,7 +256,7 @@ dependencies = [ "env_logger", "futures-lite", "pin-project", - "thiserror", + "thiserror 2.0.1", "tokio", "tokio-util", "zip", @@ -1024,9 +1024,9 @@ checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" [[package]] name = "futures-lite" -version = "2.4.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f1fa2f9765705486b33fd2acf1577f8ec449c2ba1f318ae5447697b7c08d210" +checksum = "cef40d21ae2c515b51041df9ed313ed21e572df340ea58a922a0aefe7e8891a1" dependencies = [ "fastrand", "futures-core", @@ -1624,7 +1624,7 @@ dependencies = [ "path_macro", "quick-xml", "serde", - "thiserror", + "thiserror 2.0.1", "time", ] @@ -2232,7 +2232,7 @@ dependencies = [ "quinn-udp", "rustc-hash", "rustls", - "thiserror", + "thiserror 1.0.68", "tokio", "tracing", ] @@ -2249,7 +2249,7 @@ dependencies = [ "rustc-hash", "rustls", "slab", - "thiserror", + "thiserror 1.0.68", "tinyvec", "tracing", ] @@ -2422,7 +2422,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9838134a2bfaa8e1f40738fcc972ac799de6e0e06b5157acb95fc2b05a0ea283" dependencies = [ "lazy_static", - "thiserror", + "thiserror 1.0.68", ] [[package]] @@ -2480,7 +2480,7 @@ dependencies = [ "mime", "mime_guess", "rand", - "thiserror", + "thiserror 1.0.68", ] [[package]] @@ -3004,7 +3004,7 @@ dependencies = [ "serde", "serde_derive", "serde_json", - "thiserror", + "thiserror 1.0.68", "walkdir", ] @@ -3043,7 +3043,16 @@ version = "1.0.68" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "02dd99dc800bbb97186339685293e1cc5d9df1f8fae2d0aecd9ff1c77efea892" dependencies = [ - "thiserror-impl", + "thiserror-impl 1.0.68", +] + +[[package]] +name = "thiserror" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07c1e40dd48a282ae8edc36c732cbc219144b87fb6a4c7316d611c6b1f06ec0c" +dependencies = [ + "thiserror-impl 2.0.1", ] [[package]] @@ -3057,6 +3066,17 @@ dependencies = [ "syn 2.0.87", ] +[[package]] +name = "thiserror-impl" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "874aa7e446f1da8d9c3a5c95b1c5eb41d800045252121dc7f8e0ba370cee55f5" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", +] + [[package]] name = "thread_local" version = "1.1.8" @@ -3998,7 +4018,7 @@ dependencies = [ "pbkdf2", "rand", "sha1", - "thiserror", + "thiserror 1.0.68", "time", "zeroize", "zopfli", From a695cef57d5c73492d806958290bb37bd9613125 Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Mon, 11 Nov 2024 00:09:54 +0000 Subject: [PATCH 150/221] chore(deps): update rust crate thiserror to v2.0.3 (#113) --- Cargo.lock | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 2075c88..d36b7e2 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -195,7 +195,7 @@ dependencies = [ "serde_urlencoded", "syntect", "temp_testdir", - "thiserror 2.0.1", + "thiserror 2.0.3", "time", "tokio", "tokio-util", @@ -256,7 +256,7 @@ dependencies = [ "env_logger", "futures-lite", "pin-project", - "thiserror 2.0.1", + "thiserror 2.0.3", "tokio", "tokio-util", "zip", @@ -1624,7 +1624,7 @@ dependencies = [ "path_macro", "quick-xml", "serde", - "thiserror 2.0.1", + "thiserror 2.0.3", "time", ] @@ -3048,11 +3048,11 @@ dependencies = [ [[package]] name = "thiserror" -version = "2.0.1" +version = "2.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07c1e40dd48a282ae8edc36c732cbc219144b87fb6a4c7316d611c6b1f06ec0c" +checksum = "c006c85c7651b3cf2ada4584faa36773bd07bac24acfb39f3c431b36d7e667aa" dependencies = [ - "thiserror-impl 2.0.1", + "thiserror-impl 2.0.3", ] [[package]] @@ -3068,9 +3068,9 @@ dependencies = [ [[package]] name = "thiserror-impl" -version = "2.0.1" +version = "2.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "874aa7e446f1da8d9c3a5c95b1c5eb41d800045252121dc7f8e0ba370cee55f5" +checksum = "f077553d607adc1caf65430528a576c757a71ed73944b66ebb58ef2bbd243568" dependencies = [ "proc-macro2", "quote", From 34975924b1e1c3d5367346a1e0274a435496091f Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Tue, 12 Nov 2024 00:10:38 +0000 Subject: [PATCH 151/221] chore(deps): update rust crate serde to v1.0.215 (#114) --- Cargo.lock | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index d36b7e2..8558107 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2708,9 +2708,9 @@ checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" [[package]] name = "serde" -version = "1.0.214" +version = "1.0.215" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f55c3193aca71c12ad7890f1785d2b73e1b9f63a0bbc353c08ef26fe03fc56b5" +checksum = "6513c1ad0b11a9376da888e3e0baa0077f1aed55c17f50e7b2397136129fb88f" dependencies = [ "serde_derive", ] @@ -2738,9 +2738,9 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.214" +version = "1.0.215" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de523f781f095e28fa605cdce0f8307e451cc0fd14e2eb4cd2e98a355b147766" +checksum = "ad1e866f866923f252f05c889987993144fb74e722403468a4ebd70c3cd756c0" dependencies = [ "proc-macro2", "quote", From 0b9498c541c0188fd7c82a99b2f778251b831df3 Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Fri, 15 Nov 2024 00:08:33 +0000 Subject: [PATCH 152/221] chore(deps): update rust crate flate2 to v1.0.35 (#115) --- Cargo.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 8558107..f11d7b5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -953,9 +953,9 @@ checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a" [[package]] name = "flate2" -version = "1.0.34" +version = "1.0.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1b589b4dc103969ad3cf85c950899926ec64300a1a46d76c03a6072957036f0" +checksum = "c936bfdafb507ebbf50b8074c54fa31c5be9a1e7e5f467dd659697041407d07c" dependencies = [ "crc32fast", "miniz_oxide 0.8.0", From 79623d9bc2d40e43374c4a2934d6bbac1235bae7 Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Sat, 16 Nov 2024 00:12:52 +0000 Subject: [PATCH 153/221] chore(deps): update rust crate axum to v0.7.8 (#116) --- Cargo.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index f11d7b5..5d60f0e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -282,9 +282,9 @@ checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "axum" -version = "0.7.7" +version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "504e3947307ac8326a5437504c517c4b56716c9d98fac0028c2acc7ca47d70ae" +checksum = "49c41b948da08fb481a94546cd874843adc1142278b0af4badf9b1b78599d68d" dependencies = [ "async-trait", "axum-core", From b35cfe3f4fe402943ee3238b671c18449c5437ba Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Sat, 16 Nov 2024 00:12:58 +0000 Subject: [PATCH 154/221] chore(deps): update rust crate axum-extra to v0.9.5 (#117) --- Cargo.lock | 33 ++++++++++++++++++++++++++++++--- 1 file changed, 30 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 5d60f0e..a8e2dcd 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -337,25 +337,26 @@ dependencies = [ [[package]] name = "axum-extra" -version = "0.9.4" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73c3220b188aea709cf1b6c5f9b01c3bd936bb08bd2b5184a12b35ac8131b1f9" +checksum = "37634d71e9f3c35cfb1c30c87c7cba500d55892f04c2dbe6a99383c664b820b0" dependencies = [ "axum", "axum-core", "bytes", + "fastrand", "futures-util", "headers", "http 1.1.0", "http-body", "http-body-util", "mime", + "multer", "pin-project-lite", "serde", "tower 0.5.1", "tower-layer", "tower-service", - "tracing", ] [[package]] @@ -893,6 +894,15 @@ version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" +[[package]] +name = "encoding_rs" +version = "0.8.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" +dependencies = [ + "cfg-if", +] + [[package]] name = "entities" version = "1.0.1" @@ -1791,6 +1801,23 @@ dependencies = [ "windows-sys", ] +[[package]] +name = "multer" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83e87776546dc87511aa5ee218730c92b666d7264ab6ed41f9d215af9cd5224b" +dependencies = [ + "bytes", + "encoding_rs", + "futures-util", + "http 1.1.0", + "httparse", + "memchr", + "mime", + "spin", + "version_check", +] + [[package]] name = "native-tls" version = "0.2.12" From e37000143e752b4bc496797de2410be33d3adf2b Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Sat, 16 Nov 2024 00:21:04 +0000 Subject: [PATCH 155/221] chore(deps): update rust crate axum-test to v16.4.0 (#118) --- Cargo.lock | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index a8e2dcd..7bb53cc 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -361,9 +361,9 @@ dependencies = [ [[package]] name = "axum-test" -version = "16.3.0" +version = "16.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6ba5211f2e0b77d1cbe1e1c7c826edc20fb1f69720a7fdb1d2a25289c98978e" +checksum = "017cbca2776229a7100ebee44e065fcf5baccea6fc4cb9e5bea8328d83863a03" dependencies = [ "anyhow", "assert-json-diff", @@ -481,9 +481,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.7.2" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "428d9aa8fbc0670b7b8d6030a7fadd0f86151cae55e4dbbece15f3780a3dfaf3" +checksum = "9ac0150caa2ae65ca5bd83f25c7de183dea78d4d366469f148435e2acfbad0da" [[package]] name = "bytesize" @@ -1315,9 +1315,9 @@ checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" [[package]] name = "hyper" -version = "1.4.1" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50dfd22e0e76d0f662d429a5f80fcaf3855009297eab6a0a9f8543834744ba05" +checksum = "bbbff0a806a4728c99295b254c8838933b5b082d75e3cb70c8dab21fdfbcfa9a" dependencies = [ "bytes", "futures-channel", From cab58d284e6b9f2e6b730d9b3f6d648d0955832d Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Sun, 17 Nov 2024 00:10:16 +0000 Subject: [PATCH 156/221] chore(deps): update rust crate axum to v0.7.9 (#119) --- Cargo.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 7bb53cc..6df3e77 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -282,9 +282,9 @@ checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "axum" -version = "0.7.8" +version = "0.7.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49c41b948da08fb481a94546cd874843adc1142278b0af4badf9b1b78599d68d" +checksum = "edca88bc138befd0323b20752846e6587272d3b03b0343c8ea28a6f819e6e71f" dependencies = [ "async-trait", "axum-core", From dffcd16a60b456e9ed547b2a01342df3585e607f Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Mon, 18 Nov 2024 00:13:37 +0000 Subject: [PATCH 157/221] chore(deps): update rust crate quick-xml to v0.37.1 (#121) --- Cargo.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 6df3e77..a12916a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2228,9 +2228,9 @@ checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" [[package]] name = "quick-xml" -version = "0.37.0" +version = "0.37.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffbfb3ddf5364c9cfcd65549a1e7b801d0e8d1b14c1a1590a6408aa93cfbfa84" +checksum = "f22f29bdff3987b4d8632ef95fd6424ec7e4e0a57e2f4fc63e489e75357f6a03" dependencies = [ "memchr", ] From 4cf0084e24969d15149468de42cf6ed15e1169f5 Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Mon, 18 Nov 2024 00:13:43 +0000 Subject: [PATCH 158/221] chore(deps): update rust crate axum-extra to v0.9.6 (#120) --- Cargo.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index a12916a..a086c38 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -337,9 +337,9 @@ dependencies = [ [[package]] name = "axum-extra" -version = "0.9.5" +version = "0.9.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37634d71e9f3c35cfb1c30c87c7cba500d55892f04c2dbe6a99383c664b820b0" +checksum = "c794b30c904f0a1c2fb7740f7df7f7972dfaa14ef6f57cb6178dc63e5dca2f04" dependencies = [ "axum", "axum-core", From 52316093cdad4ceca274e4c65035842e0413892e Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Mon, 18 Nov 2024 00:20:36 +0000 Subject: [PATCH 159/221] chore(deps): update rust crate serde_json to v1.0.133 (#122) --- Cargo.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index a086c38..216b249 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2776,9 +2776,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.132" +version = "1.0.133" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d726bfaff4b320266d395898905d0eba0345aae23b54aee3a737e260fd46db03" +checksum = "c7fceb2473b9166b2294ef05efcb65a3db80803f0b03ef86a5fc88a2b85ee377" dependencies = [ "itoa", "memchr", From 8158497a73367fb2280d48350e3afa868c006d65 Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Tue, 19 Nov 2024 00:05:22 +0000 Subject: [PATCH 160/221] chore(deps): update rust crate tower-http to v0.6.2 (#123) --- Cargo.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 216b249..9c17040 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3276,9 +3276,9 @@ dependencies = [ [[package]] name = "tower-http" -version = "0.6.1" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8437150ab6bbc8c5f0f519e3d5ed4aa883a83dd4cdd3d1b21f9482936046cb97" +checksum = "403fa3b783d4b626a8ad51d766ab03cb6d2dbfc46b1c5d4448395e6628dc9697" dependencies = [ "bitflags 2.6.0", "bytes", From 81c852126ca45172bd00f75a5007263fefb5967b Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Fri, 22 Nov 2024 00:05:19 +0000 Subject: [PATCH 161/221] chore(deps): update rust crate zip to v2.2.1 (#124) --- Cargo.lock | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 9c17040..6677278 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -599,9 +599,9 @@ dependencies = [ [[package]] name = "constant_time_eq" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7144d30dcf0fafbce74250a3963025d8d52177934239851c917d29f1df280c2" +checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6" [[package]] name = "convert_case" @@ -4025,9 +4025,9 @@ dependencies = [ [[package]] name = "zip" -version = "2.2.0" +version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc5e4288ea4057ae23afc69a4472434a87a2495cafce6632fd1c4ec9f5cf3494" +checksum = "99d52293fc86ea7cf13971b3bb81eb21683636e7ae24c729cdaf1b7c4157a352" dependencies = [ "aes", "arbitrary", @@ -4045,7 +4045,7 @@ dependencies = [ "pbkdf2", "rand", "sha1", - "thiserror 1.0.68", + "thiserror 2.0.3", "time", "zeroize", "zopfli", From c99dfa809175e84261245b2680a964b95d81b4e3 Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Sat, 23 Nov 2024 00:05:58 +0000 Subject: [PATCH 162/221] chore(deps): update rust crate url to v2.5.4 (#125) --- Cargo.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 6677278..541b100 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3434,9 +3434,9 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "url" -version = "2.5.3" +version = "2.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d157f1b96d14500ffdc1f10ba712e780825526c03d9a49b4d0324b0d9113ada" +checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" dependencies = [ "form_urlencoded", "idna", From 389dd6f536b9044a8b9675c3ad34fa218028d154 Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Sat, 23 Nov 2024 00:10:14 +0000 Subject: [PATCH 163/221] chore(deps): update rust crate comrak to 0.30.0 (#126) --- Cargo.lock | 80 ++++++++++++++++++++++++++++-------------------------- Cargo.toml | 2 +- 2 files changed, 43 insertions(+), 39 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 541b100..ac0adf8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -461,6 +461,31 @@ dependencies = [ "generic-array", ] +[[package]] +name = "bon" +version = "3.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a636f83af97c6946f3f5cf5c268ec02375bf5efd371110292dfd57961f57a509" +dependencies = [ + "bon-macros", + "rustversion", +] + +[[package]] +name = "bon-macros" +version = "3.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7eaf1bfaa5b8d512abfd36d0c432591fef139d3de9ee54f1f839ea109d70d33" +dependencies = [ + "darling", + "ident_case", + "prettyplease 0.2.25", + "proc-macro2", + "quote", + "rustversion", + "syn 2.0.87", +] + [[package]] name = "buf-min" version = "0.7.1" @@ -570,12 +595,12 @@ checksum = "d3fd119d74b830634cea2a0f58bbd0d54540518a14397557951e79340abc28c0" [[package]] name = "comrak" -version = "0.29.0" +version = "0.30.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8c32ff8b21372fab0e9ecc4e42536055702dc5faa418362bffd1544f9d12637" +checksum = "949f8e6b02ebac005a8be2df9ec0876cafc83fdb9c510796c37f0fadf92dcd0e" dependencies = [ + "bon", "caseless", - "derive_builder", "entities", "memchr", "once_cell", @@ -783,37 +808,6 @@ dependencies = [ "syn 2.0.87", ] -[[package]] -name = "derive_builder" -version = "0.20.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0350b5cb0331628a5916d6c5c0b72e97393b8b6b03b47a9284f4e7f5a405ffd7" -dependencies = [ - "derive_builder_macro", -] - -[[package]] -name = "derive_builder_core" -version = "0.20.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d48cda787f839151732d396ac69e3473923d54312c070ee21e9effcaa8ca0b1d" -dependencies = [ - "darling", - "proc-macro2", - "quote", - "syn 2.0.87", -] - -[[package]] -name = "derive_builder_macro" -version = "0.20.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "206868b8242f27cecce124c19fd88157fbd0dd334df2587f36417bafbc85097b" -dependencies = [ - "derive_builder_core", - "syn 2.0.87", -] - [[package]] name = "derive_more" version = "0.99.18" @@ -2177,10 +2171,20 @@ dependencies = [ ] [[package]] -name = "proc-macro2" -version = "1.0.86" +name = "prettyplease" +version = "0.2.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" +checksum = "64d1ec885c64d0457d564db4ec299b2dae3f9c02808b8ad9c3a089c591b18033" +dependencies = [ + "proc-macro2", + "syn 2.0.87", +] + +[[package]] +name = "proc-macro2" +version = "1.0.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37d3544b3f2748c54e147655edb5025752e2303145b5aefb3c3ea2c78b973bb0" dependencies = [ "unicode-ident", ] @@ -3874,7 +3878,7 @@ dependencies = [ "chrono", "dtoa", "itoa", - "prettyplease", + "prettyplease 0.1.25", "ryu", "serde", "serde_json", diff --git a/Cargo.toml b/Cargo.toml index 0c6beae..5c34888 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -30,7 +30,7 @@ axum = { version = "0.7.5", default-features = false, features = [ "tracing", ] } axum-extra = { version = "0.9.3", features = ["typed-header"] } -comrak = { version = "0.29.0", default-features = false } +comrak = { version = "0.30.0", default-features = false } dotenvy = "0.15.7" envy = { path = "crates/envy" } flate2 = "1.0.30" From 05f20f44ac4910e600f318d656d376d52fd6b131 Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Mon, 25 Nov 2024 14:26:33 +0000 Subject: [PATCH 164/221] chore(deps): update rust crate async-compression to v0.4.18 (#127) --- Cargo.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index ac0adf8..3026691 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -219,9 +219,9 @@ dependencies = [ [[package]] name = "async-compression" -version = "0.4.17" +version = "0.4.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0cb8f1d480b0ea3783ab015936d2a55c87e219676f0c0b7dec61494043f21857" +checksum = "df895a515f70646414f4b45c0b79082783b80552b373a68283012928df56f522" dependencies = [ "bzip2", "deflate64", From 5fd14aada8f310fdeb0b2dc33a15de0b195ebc81 Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Wed, 27 Nov 2024 00:05:38 +0000 Subject: [PATCH 165/221] chore(deps): update rust crate comrak to 0.31.0 (#128) --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 3026691..ede3ce1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -595,9 +595,9 @@ checksum = "d3fd119d74b830634cea2a0f58bbd0d54540518a14397557951e79340abc28c0" [[package]] name = "comrak" -version = "0.30.0" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "949f8e6b02ebac005a8be2df9ec0876cafc83fdb9c510796c37f0fadf92dcd0e" +checksum = "453dcb42e33f7b474d7e0db12e0b8d82802c88f35cf5a1d8c297d0dfcecb154f" dependencies = [ "bon", "caseless", diff --git a/Cargo.toml b/Cargo.toml index 5c34888..8413fcd 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -30,7 +30,7 @@ axum = { version = "0.7.5", default-features = false, features = [ "tracing", ] } axum-extra = { version = "0.9.3", features = ["typed-header"] } -comrak = { version = "0.30.0", default-features = false } +comrak = { version = "0.31.0", default-features = false } dotenvy = "0.15.7" envy = { path = "crates/envy" } flate2 = "1.0.30" From ab3479f0d1b3a30413df654cc9f2e7a52081b542 Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Thu, 28 Nov 2024 00:07:18 +0000 Subject: [PATCH 166/221] chore(deps): update rust crate tracing to v0.1.41 (#129) --- Cargo.lock | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index ede3ce1..07ee54c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3308,9 +3308,9 @@ checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" [[package]] name = "tracing" -version = "0.1.40" +version = "0.1.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" dependencies = [ "log", "pin-project-lite", @@ -3320,9 +3320,9 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.27" +version = "0.1.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" +checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" dependencies = [ "proc-macro2", "quote", @@ -3331,9 +3331,9 @@ dependencies = [ [[package]] name = "tracing-core" -version = "0.1.32" +version = "0.1.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" +checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" dependencies = [ "once_cell", "valuable", From 1f9847b3edd73c1e905feb88087ee4325364ddda Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Sat, 30 Nov 2024 00:07:41 +0000 Subject: [PATCH 167/221] chore(deps): update rust crate tracing-subscriber to v0.3.19 (#130) --- Cargo.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 07ee54c..ae5ac08 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3352,9 +3352,9 @@ dependencies = [ [[package]] name = "tracing-subscriber" -version = "0.3.18" +version = "0.3.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" +checksum = "e8189decb5ac0fa7bc8b96b7cb9b2701d60d48805aca84a238004d665fcc4008" dependencies = [ "nu-ansi-term", "sharded-slab", From e20f6fb92e86751222d2c5143ee384cdbea1159d Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sun, 1 Dec 2024 22:36:52 +0100 Subject: [PATCH 168/221] fix: lifetime-related lints --- crates/async_zip/src/base/read/io/entry.rs | 6 +++--- crates/async_zip/src/base/read/io/owned.rs | 6 +++--- crates/async_zip/src/base/write/compressed_writer.rs | 2 +- crates/async_zip/src/base/write/entry_stream.rs | 2 +- crates/envy/src/lib.rs | 10 +++++----- src/query.rs | 6 +++--- 6 files changed, 16 insertions(+), 16 deletions(-) diff --git a/crates/async_zip/src/base/read/io/entry.rs b/crates/async_zip/src/base/read/io/entry.rs index 64e81c6..1657bb1 100644 --- a/crates/async_zip/src/base/read/io/entry.rs +++ b/crates/async_zip/src/base/read/io/entry.rs @@ -51,7 +51,7 @@ where } } -impl<'a, R, E> AsyncRead for ZipEntryReader<'a, R, E> +impl AsyncRead for ZipEntryReader<'_, R, E> where R: AsyncBufRead + Unpin, { @@ -60,7 +60,7 @@ where } } -impl<'a, R, E> ZipEntryReader<'a, R, E> +impl ZipEntryReader<'_, R, E> where R: AsyncBufRead + Unpin, { @@ -118,7 +118,7 @@ enum OwnedEntry<'a> { Borrow(&'a ZipEntry), } -impl<'a> OwnedEntry<'a> { +impl OwnedEntry<'_> { pub fn entry(&self) -> &'_ ZipEntry { match self { OwnedEntry::Owned(entry) => entry, diff --git a/crates/async_zip/src/base/read/io/owned.rs b/crates/async_zip/src/base/read/io/owned.rs index 371ffab..4e336d0 100644 --- a/crates/async_zip/src/base/read/io/owned.rs +++ b/crates/async_zip/src/base/read/io/owned.rs @@ -17,7 +17,7 @@ pub(crate) enum OwnedReader<'a, R> { Borrow(#[pin] &'a mut R), } -impl<'a, R> OwnedReader<'a, R> +impl OwnedReader<'_, R> where R: AsyncBufRead + Unpin, { @@ -30,7 +30,7 @@ where } } -impl<'a, R> AsyncBufRead for OwnedReader<'a, R> +impl AsyncBufRead for OwnedReader<'_, R> where R: AsyncBufRead + Unpin, { @@ -49,7 +49,7 @@ where } } -impl<'a, R> AsyncRead for OwnedReader<'a, R> +impl AsyncRead for OwnedReader<'_, R> where R: AsyncBufRead + Unpin, { diff --git a/crates/async_zip/src/base/write/compressed_writer.rs b/crates/async_zip/src/base/write/compressed_writer.rs index 3b71421..f24b4c3 100644 --- a/crates/async_zip/src/base/write/compressed_writer.rs +++ b/crates/async_zip/src/base/write/compressed_writer.rs @@ -64,7 +64,7 @@ impl<'b, W: AsyncWrite + Unpin> CompressedAsyncWriter<'b, W> { } } -impl<'b, W: AsyncWrite + Unpin> AsyncWrite for CompressedAsyncWriter<'b, W> { +impl AsyncWrite for CompressedAsyncWriter<'_, W> { fn poll_write(mut self: Pin<&mut Self>, cx: &mut Context, buf: &[u8]) -> Poll> { match *self { CompressedAsyncWriter::Stored(ref mut inner) => Pin::new(inner).poll_write(cx, buf), diff --git a/crates/async_zip/src/base/write/entry_stream.rs b/crates/async_zip/src/base/write/entry_stream.rs index cc41f0e..5f30aa2 100644 --- a/crates/async_zip/src/base/write/entry_stream.rs +++ b/crates/async_zip/src/base/write/entry_stream.rs @@ -251,7 +251,7 @@ impl<'b, W: AsyncWrite + Unpin> EntryStreamWriter<'b, W> { } } -impl<'a, W: AsyncWrite + Unpin> AsyncWrite for EntryStreamWriter<'a, W> { +impl AsyncWrite for EntryStreamWriter<'_, W> { fn poll_write(mut self: Pin<&mut Self>, cx: &mut Context, buf: &[u8]) -> Poll> { let poll = Pin::new(&mut self.writer).poll_write(cx, buf); diff --git a/crates/envy/src/lib.rs b/crates/envy/src/lib.rs index 3f00ae4..b9d8d7f 100644 --- a/crates/envy/src/lib.rs +++ b/crates/envy/src/lib.rs @@ -77,7 +77,7 @@ where struct Val(String, String); -impl<'de> IntoDeserializer<'de, Error> for Val { +impl IntoDeserializer<'_, Error> for Val { type Deserializer = Self; fn into_deserializer(self) -> Self::Deserializer { @@ -87,7 +87,7 @@ impl<'de> IntoDeserializer<'de, Error> for Val { struct VarName(String); -impl<'de> IntoDeserializer<'de, Error> for VarName { +impl IntoDeserializer<'_, Error> for VarName { type Deserializer = Self; fn into_deserializer(self) -> Self::Deserializer { @@ -248,7 +248,7 @@ struct Deserializer<'de, Iter: Iterator> { inner: MapDeserializer<'de, Vars, Error>, } -impl<'de, Iter: Iterator> Deserializer<'de, Iter> { +impl> Deserializer<'_, Iter> { fn new(vars: Iter) -> Self { Deserializer { inner: MapDeserializer::new(Vars(vars)), @@ -308,7 +308,7 @@ where /// These types are created with with the [prefixed](fn.prefixed.html) module function pub struct Prefixed<'a>(Cow<'a, str>); -impl<'a> Prefixed<'a> { +impl Prefixed<'_> { /// Deserializes a type based on prefixed env variables pub fn from_env(&self) -> Result where @@ -390,7 +390,7 @@ impl<'a> SplitEscaped<'a> { } } -impl<'a> Iterator for SplitEscaped<'a> { +impl Iterator for SplitEscaped<'_> { type Item = String; fn next(&mut self) -> Option { diff --git a/src/query.rs b/src/query.rs index 8060f11..51106cd 100644 --- a/src/query.rs +++ b/src/query.rs @@ -164,8 +164,8 @@ impl RunQuery { .ok_or(Error::BadRequest("no repository".into()))? .to_ascii_lowercase(); - if !path_segs.next().is_some_and(|s| s == "actions") - || !path_segs.next().is_some_and(|s| s == "runs") + if path_segs.next().is_none_or(|s| s != "actions") + || path_segs.next().is_none_or(|s| s != "runs") { return Err(Error::BadRequest("invalid Actions URL".into())); } @@ -402,7 +402,7 @@ impl<'de> Deserialize<'de> for QueryFilterList { { struct QueryFilterListVisitor; - impl<'de> Visitor<'de> for QueryFilterListVisitor { + impl Visitor<'_> for QueryFilterListVisitor { type Value = QueryFilterList; fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result { From e9d122639022d3b5b68b4626e00442a81acf85f5 Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Wed, 4 Dec 2024 00:06:17 +0000 Subject: [PATCH 169/221] chore(deps): update rust crate thiserror to v2.0.4 (#131) --- Cargo.lock | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index ae5ac08..9fcecd9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1,6 +1,6 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. -version = 3 +version = 4 [[package]] name = "addr2line" @@ -195,7 +195,7 @@ dependencies = [ "serde_urlencoded", "syntect", "temp_testdir", - "thiserror 2.0.3", + "thiserror 2.0.4", "time", "tokio", "tokio-util", @@ -256,7 +256,7 @@ dependencies = [ "env_logger", "futures-lite", "pin-project", - "thiserror 2.0.3", + "thiserror 2.0.4", "tokio", "tokio-util", "zip", @@ -1628,7 +1628,7 @@ dependencies = [ "path_macro", "quick-xml", "serde", - "thiserror 2.0.3", + "thiserror 2.0.4", "time", ] @@ -3079,11 +3079,11 @@ dependencies = [ [[package]] name = "thiserror" -version = "2.0.3" +version = "2.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c006c85c7651b3cf2ada4584faa36773bd07bac24acfb39f3c431b36d7e667aa" +checksum = "2f49a1853cf82743e3b7950f77e0f4d622ca36cf4317cba00c767838bac8d490" dependencies = [ - "thiserror-impl 2.0.3", + "thiserror-impl 2.0.4", ] [[package]] @@ -3099,9 +3099,9 @@ dependencies = [ [[package]] name = "thiserror-impl" -version = "2.0.3" +version = "2.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f077553d607adc1caf65430528a576c757a71ed73944b66ebb58ef2bbd243568" +checksum = "8381894bb3efe0c4acac3ded651301ceee58a15d47c2e34885ed1908ad667061" dependencies = [ "proc-macro2", "quote", @@ -4049,7 +4049,7 @@ dependencies = [ "pbkdf2", "rand", "sha1", - "thiserror 2.0.3", + "thiserror 2.0.4", "time", "zeroize", "zopfli", From 6fc7263f5996abefdb71fd5ecae277ec707cbdd9 Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Wed, 4 Dec 2024 00:07:46 +0000 Subject: [PATCH 170/221] chore(deps): update rust crate time to v0.3.37 (#132) --- Cargo.lock | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 9fcecd9..32744a1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3120,9 +3120,9 @@ dependencies = [ [[package]] name = "time" -version = "0.3.36" +version = "0.3.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885" +checksum = "35e7868883861bd0e56d9ac6efcaaca0d6d5d82a2a7ec8209ff492c07cf37b21" dependencies = [ "deranged", "itoa", @@ -3141,9 +3141,9 @@ checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" [[package]] name = "time-macros" -version = "0.2.18" +version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf" +checksum = "2834e6017e3e5e4b9834939793b282bc03b37a3336245fa820e35e233e2a85de" dependencies = [ "num-conv", "time-core", From 5f517ae6c784e4fbc99ca69650d85621e90f776c Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Wed, 4 Dec 2024 00:10:00 +0000 Subject: [PATCH 171/221] chore(deps): update rust crate http to v1.2.0 (#133) --- Cargo.lock | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 32744a1..895e884 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -169,7 +169,7 @@ dependencies = [ "futures-lite", "governor", "headers", - "http 1.1.0", + "http 1.2.0", "httpdate", "humansize", "insta", @@ -290,7 +290,7 @@ dependencies = [ "axum-core", "bytes", "futures-util", - "http 1.1.0", + "http 1.2.0", "http-body", "http-body-util", "hyper", @@ -323,7 +323,7 @@ dependencies = [ "async-trait", "bytes", "futures-util", - "http 1.1.0", + "http 1.2.0", "http-body", "http-body-util", "mime", @@ -347,7 +347,7 @@ dependencies = [ "fastrand", "futures-util", "headers", - "http 1.1.0", + "http 1.2.0", "http-body", "http-body-util", "mime", @@ -372,7 +372,7 @@ dependencies = [ "bytes", "bytesize", "cookie", - "http 1.1.0", + "http 1.2.0", "http-body-util", "hyper", "hyper-util", @@ -1168,7 +1168,7 @@ dependencies = [ "fnv", "futures-core", "futures-sink", - "http 1.1.0", + "http 1.2.0", "indexmap", "slab", "tokio", @@ -1191,7 +1191,7 @@ dependencies = [ "base64 0.21.7", "bytes", "headers-core", - "http 1.1.0", + "http 1.2.0", "httpdate", "mime", "sha1", @@ -1203,7 +1203,7 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "54b4a22553d4242c49fddb9ba998a99962b5cc6f22cb5a3482bec22522403ce4" dependencies = [ - "http 1.1.0", + "http 1.2.0", ] [[package]] @@ -1248,9 +1248,9 @@ dependencies = [ [[package]] name = "http" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21b9ddb458710bc376481b842f5da65cdf31522de232c1ca8146abce2a358258" +checksum = "f16ca2af56261c99fba8bac40a10251ce8188205a4c448fbb745a2e4daa76fea" dependencies = [ "bytes", "fnv", @@ -1264,7 +1264,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" dependencies = [ "bytes", - "http 1.1.0", + "http 1.2.0", ] [[package]] @@ -1275,7 +1275,7 @@ checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f" dependencies = [ "bytes", "futures-util", - "http 1.1.0", + "http 1.2.0", "http-body", "pin-project-lite", ] @@ -1317,7 +1317,7 @@ dependencies = [ "futures-channel", "futures-util", "h2", - "http 1.1.0", + "http 1.2.0", "http-body", "httparse", "httpdate", @@ -1335,7 +1335,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5ee4be2c948921a1a5320b629c4193916ed787a7f7f293fd3f7f5a6c9de74155" dependencies = [ "futures-util", - "http 1.1.0", + "http 1.2.0", "hyper", "hyper-util", "rustls", @@ -1372,7 +1372,7 @@ dependencies = [ "bytes", "futures-channel", "futures-util", - "http 1.1.0", + "http 1.2.0", "http-body", "hyper", "pin-project-lite", @@ -1804,7 +1804,7 @@ dependencies = [ "bytes", "encoding_rs", "futures-util", - "http 1.1.0", + "http 1.2.0", "httparse", "memchr", "mime", @@ -2408,7 +2408,7 @@ dependencies = [ "bytes", "futures-core", "futures-util", - "http 1.1.0", + "http 1.2.0", "http-body", "http-body-util", "hyper", @@ -3286,7 +3286,7 @@ checksum = "403fa3b783d4b626a8ad51d766ab03cb6d2dbfc46b1c5d4448395e6628dc9697" dependencies = [ "bitflags 2.6.0", "bytes", - "http 1.1.0", + "http 1.2.0", "http-body", "pin-project-lite", "tower-layer", From b15c4b009a268cd4227846f166131aad5628f87d Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Wed, 4 Dec 2024 00:11:09 +0000 Subject: [PATCH 172/221] chore(deps): update rust crate tokio to v1.42.0 (#134) --- Cargo.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 895e884..4a80f59 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3176,9 +3176,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.41.1" +version = "1.42.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22cfb5bee7a6a52939ca9224d6ac897bb669134078daa8735560897f69de4d33" +checksum = "5cec9b21b0450273377fc97bd4c33a8acffc8c996c987a7c5b319a0083707551" dependencies = [ "backtrace", "bytes", From f43f06c33462c15a8a752493f14c86d9dbde0e8d Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Thu, 5 Dec 2024 00:05:51 +0000 Subject: [PATCH 173/221] chore(deps): update rust crate tokio-util to v0.7.13 (#135) --- Cargo.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 4a80f59..cc0cbe3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3226,9 +3226,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.12" +version = "0.7.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61e7c3654c13bcd040d4a03abee2c75b1d14a37b423cf5a813ceae1cc903ec6a" +checksum = "d7fcaa8d55a2bdd6b83ace262b016eca0d79ee02818c5c1bcdf0305114081078" dependencies = [ "bytes", "futures-core", From 94c589c20936c8e56be3147fd01e51d8b25e617f Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Sun, 8 Dec 2024 00:07:27 +0000 Subject: [PATCH 174/221] chore(deps): update rust crate thiserror to v2.0.5 (#136) --- Cargo.lock | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index cc0cbe3..7537cd3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -195,7 +195,7 @@ dependencies = [ "serde_urlencoded", "syntect", "temp_testdir", - "thiserror 2.0.4", + "thiserror 2.0.5", "time", "tokio", "tokio-util", @@ -256,7 +256,7 @@ dependencies = [ "env_logger", "futures-lite", "pin-project", - "thiserror 2.0.4", + "thiserror 2.0.5", "tokio", "tokio-util", "zip", @@ -1628,7 +1628,7 @@ dependencies = [ "path_macro", "quick-xml", "serde", - "thiserror 2.0.4", + "thiserror 2.0.5", "time", ] @@ -3079,11 +3079,11 @@ dependencies = [ [[package]] name = "thiserror" -version = "2.0.4" +version = "2.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f49a1853cf82743e3b7950f77e0f4d622ca36cf4317cba00c767838bac8d490" +checksum = "643caef17e3128658ff44d85923ef2d28af81bb71e0d67bbfe1d76f19a73e053" dependencies = [ - "thiserror-impl 2.0.4", + "thiserror-impl 2.0.5", ] [[package]] @@ -3099,9 +3099,9 @@ dependencies = [ [[package]] name = "thiserror-impl" -version = "2.0.4" +version = "2.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8381894bb3efe0c4acac3ded651301ceee58a15d47c2e34885ed1908ad667061" +checksum = "995d0bbc9995d1f19d28b7215a9352b0fc3cd3a2d2ec95c2cadc485cdedbcdde" dependencies = [ "proc-macro2", "quote", @@ -4049,7 +4049,7 @@ dependencies = [ "pbkdf2", "rand", "sha1", - "thiserror 2.0.4", + "thiserror 2.0.5", "time", "zeroize", "zopfli", From 5e83ab510614db696a7245ad5027c717b3493cab Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Mon, 9 Dec 2024 00:06:11 +0000 Subject: [PATCH 175/221] chore(deps): update rust crate thiserror to v2.0.6 (#137) --- Cargo.lock | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 7537cd3..704e148 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -195,7 +195,7 @@ dependencies = [ "serde_urlencoded", "syntect", "temp_testdir", - "thiserror 2.0.5", + "thiserror 2.0.6", "time", "tokio", "tokio-util", @@ -256,7 +256,7 @@ dependencies = [ "env_logger", "futures-lite", "pin-project", - "thiserror 2.0.5", + "thiserror 2.0.6", "tokio", "tokio-util", "zip", @@ -1628,7 +1628,7 @@ dependencies = [ "path_macro", "quick-xml", "serde", - "thiserror 2.0.5", + "thiserror 2.0.6", "time", ] @@ -3079,11 +3079,11 @@ dependencies = [ [[package]] name = "thiserror" -version = "2.0.5" +version = "2.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "643caef17e3128658ff44d85923ef2d28af81bb71e0d67bbfe1d76f19a73e053" +checksum = "8fec2a1820ebd077e2b90c4df007bebf344cd394098a13c563957d0afc83ea47" dependencies = [ - "thiserror-impl 2.0.5", + "thiserror-impl 2.0.6", ] [[package]] @@ -3099,9 +3099,9 @@ dependencies = [ [[package]] name = "thiserror-impl" -version = "2.0.5" +version = "2.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "995d0bbc9995d1f19d28b7215a9352b0fc3cd3a2d2ec95c2cadc485cdedbcdde" +checksum = "d65750cab40f4ff1929fb1ba509e9914eb756131cef4210da8d5d700d26f6312" dependencies = [ "proc-macro2", "quote", @@ -4049,7 +4049,7 @@ dependencies = [ "pbkdf2", "rand", "sha1", - "thiserror 2.0.5", + "thiserror 2.0.6", "time", "zeroize", "zopfli", From 8e9c5aad48378c2fa1a1d3d370b96de2fca5dd86 Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Tue, 10 Dec 2024 00:05:45 +0000 Subject: [PATCH 176/221] chore(deps): update rust crate chrono to v0.4.39 (#138) --- Cargo.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 704e148..11b70ee 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -565,9 +565,9 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "chrono" -version = "0.4.38" +version = "0.4.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" +checksum = "7e36cc9d416881d2e24f9a963be5fb1cd90966419ac844274161d10488b3e825" dependencies = [ "android-tzdata", "iana-time-zone", From b24136ec597d2b4c579176a6a7845878549478bb Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Wed, 11 Dec 2024 00:09:17 +0000 Subject: [PATCH 177/221] chore(deps): update rust crate governor to 0.8.0 (#139) --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 11b70ee..04dc7ab 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1138,9 +1138,9 @@ checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" [[package]] name = "governor" -version = "0.7.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0746aa765db78b521451ef74221663b57ba595bf83f75d0ce23cc09447c8139f" +checksum = "842dc78579ce01e6a1576ad896edc92fca002dd60c9c3746b7fc2bec6fb429d0" dependencies = [ "cfg-if", "dashmap", diff --git a/Cargo.toml b/Cargo.toml index 8413fcd..842ee32 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -35,7 +35,7 @@ dotenvy = "0.15.7" envy = { path = "crates/envy" } flate2 = "1.0.30" futures-lite = "2.3.0" -governor = "0.7.0" +governor = "0.8.0" headers = "0.4.0" http = "1.1.0" humansize = "2.1.3" From f48c57021505091b22c36bd49bd4527e652b8d78 Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Wed, 11 Dec 2024 00:10:02 +0000 Subject: [PATCH 178/221] chore(deps): update rust crate scraper to 0.22.0 (#140) --- Cargo.lock | 9 ++++----- Cargo.toml | 2 +- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 04dc7ab..64aee14 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -878,9 +878,9 @@ dependencies = [ [[package]] name = "ego-tree" -version = "0.9.0" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c6ba7d4eec39eaa9ab24d44a0e73a7949a1095a8b3f3abb11eddf27dbb56a53" +checksum = "b2972feb8dffe7bc8c5463b1dacda1b0dfbed3710e50f977d965429692d74cd8" [[package]] name = "encode_unicode" @@ -2665,11 +2665,10 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "scraper" -version = "0.21.0" +version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0e749d29b2064585327af5038a5a8eb73aeebad4a3472e83531a436563f7208" +checksum = "cc3d051b884f40e309de6c149734eab57aa8cc1347992710dc80bcc1c2194c15" dependencies = [ - "ahash", "cssparser", "ego-tree", "getopts", diff --git a/Cargo.toml b/Cargo.toml index 842ee32..031690f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -86,7 +86,7 @@ httpdate = "1.0.3" insta = { version = "1.39.0", features = ["json"] } proptest = "1.4.0" rstest = { version = "0.23.0", default-features = false } -scraper = "0.21.0" +scraper = "0.22.0" temp_testdir = "0.2.3" [workspace] From 7d9827f9fc52aa88f19efa371e36877723328248 Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Thu, 12 Dec 2024 00:07:07 +0000 Subject: [PATCH 179/221] chore(deps): update rust crate serde to v1.0.216 (#141) --- Cargo.lock | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 64aee14..759606c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2738,9 +2738,9 @@ checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" [[package]] name = "serde" -version = "1.0.215" +version = "1.0.216" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6513c1ad0b11a9376da888e3e0baa0077f1aed55c17f50e7b2397136129fb88f" +checksum = "0b9781016e935a97e8beecf0c933758c97a5520d32930e460142b4cd80c6338e" dependencies = [ "serde_derive", ] @@ -2768,9 +2768,9 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.215" +version = "1.0.216" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad1e866f866923f252f05c889987993144fb74e722403468a4ebd70c3cd756c0" +checksum = "46f859dbbf73865c6627ed570e78961cd3ac92407a2d117204c49232485da55e" dependencies = [ "proc-macro2", "quote", From 1e26d04b068f9c2e0a65a3dbcc43f66d118a6043 Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Sat, 14 Dec 2024 00:06:11 +0000 Subject: [PATCH 180/221] chore(deps): update rust crate thiserror to v2.0.7 (#142) --- Cargo.lock | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 759606c..e1513de 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -195,7 +195,7 @@ dependencies = [ "serde_urlencoded", "syntect", "temp_testdir", - "thiserror 2.0.6", + "thiserror 2.0.7", "time", "tokio", "tokio-util", @@ -256,7 +256,7 @@ dependencies = [ "env_logger", "futures-lite", "pin-project", - "thiserror 2.0.6", + "thiserror 2.0.7", "tokio", "tokio-util", "zip", @@ -1628,7 +1628,7 @@ dependencies = [ "path_macro", "quick-xml", "serde", - "thiserror 2.0.6", + "thiserror 2.0.7", "time", ] @@ -3078,11 +3078,11 @@ dependencies = [ [[package]] name = "thiserror" -version = "2.0.6" +version = "2.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fec2a1820ebd077e2b90c4df007bebf344cd394098a13c563957d0afc83ea47" +checksum = "93605438cbd668185516ab499d589afb7ee1859ea3d5fc8f6b0755e1c7443767" dependencies = [ - "thiserror-impl 2.0.6", + "thiserror-impl 2.0.7", ] [[package]] @@ -3098,9 +3098,9 @@ dependencies = [ [[package]] name = "thiserror-impl" -version = "2.0.6" +version = "2.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d65750cab40f4ff1929fb1ba509e9914eb756131cef4210da8d5d700d26f6312" +checksum = "e1d8749b4531af2117677a5fcd12b1348a3fe2b81e36e61ffeac5c4aa3273e36" dependencies = [ "proc-macro2", "quote", @@ -4048,7 +4048,7 @@ dependencies = [ "pbkdf2", "rand", "sha1", - "thiserror 2.0.6", + "thiserror 2.0.7", "time", "zeroize", "zopfli", From 3244de48fc2691898599ab20f2baa888db9f3c82 Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Sun, 15 Dec 2024 00:08:20 +0000 Subject: [PATCH 181/221] chore(deps): update rust crate axum-test to v16.4.1 (#143) --- Cargo.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index e1513de..5fc3181 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -361,9 +361,9 @@ dependencies = [ [[package]] name = "axum-test" -version = "16.4.0" +version = "16.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "017cbca2776229a7100ebee44e065fcf5baccea6fc4cb9e5bea8328d83863a03" +checksum = "63e3a443d2608936a02a222da7b746eb412fede7225b3030b64fe9be99eab8dc" dependencies = [ "anyhow", "assert-json-diff", From 98ba21e7979bfbdd06fb46da8e45f97f71dc2c99 Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Tue, 17 Dec 2024 00:08:37 +0000 Subject: [PATCH 182/221] chore(deps): update rust crate zip to v2.2.2 (#144) --- Cargo.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 5fc3181..8336bba 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4028,9 +4028,9 @@ dependencies = [ [[package]] name = "zip" -version = "2.2.1" +version = "2.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99d52293fc86ea7cf13971b3bb81eb21683636e7ae24c729cdaf1b7c4157a352" +checksum = "ae9c1ea7b3a5e1f4b922ff856a129881167511563dc219869afe3787fc0c1a45" dependencies = [ "aes", "arbitrary", From d28f9790b825b2af749e3fcd07718faa91c2a942 Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Tue, 17 Dec 2024 00:11:32 +0000 Subject: [PATCH 183/221] chore(deps): update rust crate proptest to v1.6.0 (#145) --- Cargo.lock | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 8336bba..8269475 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -427,18 +427,18 @@ dependencies = [ [[package]] name = "bit-set" -version = "0.5.3" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1" +checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3" dependencies = [ "bit-vec", ] [[package]] name = "bit-vec" -version = "0.6.3" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" +checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" [[package]] name = "bitflags" @@ -1876,7 +1876,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" dependencies = [ "autocfg", - "libm", ] [[package]] @@ -2191,9 +2190,9 @@ dependencies = [ [[package]] name = "proptest" -version = "1.5.0" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4c2511913b88df1637da85cc8d96ec8e43a3f8bb8ccb71ee1ac240d6f3df58d" +checksum = "14cae93065090804185d3b75f0bf93b8eeda30c7a9b4a33d3bdb3988d6229e50" dependencies = [ "bit-set", "bit-vec", From f6b0e06dc1a39311c4473e0f4c3c5742a352e00f Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Wed, 18 Dec 2024 00:05:19 +0000 Subject: [PATCH 184/221] chore(deps): update rust crate comrak to 0.32.0 (#146) --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 8269475..d62e4e0 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -595,9 +595,9 @@ checksum = "d3fd119d74b830634cea2a0f58bbd0d54540518a14397557951e79340abc28c0" [[package]] name = "comrak" -version = "0.31.0" +version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "453dcb42e33f7b474d7e0db12e0b8d82802c88f35cf5a1d8c297d0dfcecb154f" +checksum = "48ae8f3e7e3f3d424cbb33354fc36943d507327d210aa5794b0192f4be726c6d" dependencies = [ "bon", "caseless", diff --git a/Cargo.toml b/Cargo.toml index 031690f..68d5ce9 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -30,7 +30,7 @@ axum = { version = "0.7.5", default-features = false, features = [ "tracing", ] } axum-extra = { version = "0.9.3", features = ["typed-header"] } -comrak = { version = "0.31.0", default-features = false } +comrak = { version = "0.32.0", default-features = false } dotenvy = "0.15.7" envy = { path = "crates/envy" } flate2 = "1.0.30" From e87b71cc0df91f0ee71a88a3bd0127d4f8c74eea Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Thu, 19 Dec 2024 00:08:18 +0000 Subject: [PATCH 185/221] chore(deps): update rust crate thiserror to v2.0.8 (#147) --- Cargo.lock | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index d62e4e0..84a3440 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -195,7 +195,7 @@ dependencies = [ "serde_urlencoded", "syntect", "temp_testdir", - "thiserror 2.0.7", + "thiserror 2.0.8", "time", "tokio", "tokio-util", @@ -256,7 +256,7 @@ dependencies = [ "env_logger", "futures-lite", "pin-project", - "thiserror 2.0.7", + "thiserror 2.0.8", "tokio", "tokio-util", "zip", @@ -1628,7 +1628,7 @@ dependencies = [ "path_macro", "quick-xml", "serde", - "thiserror 2.0.7", + "thiserror 2.0.8", "time", ] @@ -3077,11 +3077,11 @@ dependencies = [ [[package]] name = "thiserror" -version = "2.0.7" +version = "2.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93605438cbd668185516ab499d589afb7ee1859ea3d5fc8f6b0755e1c7443767" +checksum = "08f5383f3e0071702bf93ab5ee99b52d26936be9dedd9413067cbdcddcb6141a" dependencies = [ - "thiserror-impl 2.0.7", + "thiserror-impl 2.0.8", ] [[package]] @@ -3097,9 +3097,9 @@ dependencies = [ [[package]] name = "thiserror-impl" -version = "2.0.7" +version = "2.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1d8749b4531af2117677a5fcd12b1348a3fe2b81e36e61ffeac5c4aa3273e36" +checksum = "f2f357fcec90b3caef6623a099691be676d033b40a058ac95d2a6ade6fa0c943" dependencies = [ "proc-macro2", "quote", @@ -4047,7 +4047,7 @@ dependencies = [ "pbkdf2", "rand", "sha1", - "thiserror 2.0.7", + "thiserror 2.0.8", "time", "zeroize", "zopfli", From 8e295a96decd532fdd854ee8950a68d496c1617d Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Sat, 21 Dec 2024 00:06:37 +0000 Subject: [PATCH 186/221] chore(deps): update rust crate env_logger to v0.11.6 (#148) --- Cargo.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 84a3440..a1f0f4e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -915,9 +915,9 @@ dependencies = [ [[package]] name = "env_logger" -version = "0.11.5" +version = "0.11.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e13fa619b91fb2381732789fc5de83b45675e882f66623b7d8cb4f643017018d" +checksum = "dcaee3d8e3cfc3fd92428d477bc97fc29ec8716d180c0d74c643bb26166660e0" dependencies = [ "anstream", "anstyle", From c90116c9bac801e57062a462bd7a08a5fd6389b2 Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Sun, 22 Dec 2024 00:10:52 +0000 Subject: [PATCH 187/221] chore(deps): update rust crate serde_json to v1.0.134 (#149) --- Cargo.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index a1f0f4e..0be8082 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2778,9 +2778,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.133" +version = "1.0.134" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7fceb2473b9166b2294ef05efcb65a3db80803f0b03ef86a5fc88a2b85ee377" +checksum = "d00f4175c42ee48b15416f6193a959ba3a0d67fc699a0db9ad12df9f83991c7d" dependencies = [ "itoa", "memchr", From 2a2a8e0b310b4ddcf15f20b1189bf768499f6b75 Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Sun, 22 Dec 2024 00:11:38 +0000 Subject: [PATCH 188/221] chore(deps): update rust crate thiserror to v2.0.9 (#150) --- Cargo.lock | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 0be8082..191743a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -195,7 +195,7 @@ dependencies = [ "serde_urlencoded", "syntect", "temp_testdir", - "thiserror 2.0.8", + "thiserror 2.0.9", "time", "tokio", "tokio-util", @@ -256,7 +256,7 @@ dependencies = [ "env_logger", "futures-lite", "pin-project", - "thiserror 2.0.8", + "thiserror 2.0.9", "tokio", "tokio-util", "zip", @@ -1628,7 +1628,7 @@ dependencies = [ "path_macro", "quick-xml", "serde", - "thiserror 2.0.8", + "thiserror 2.0.9", "time", ] @@ -3077,11 +3077,11 @@ dependencies = [ [[package]] name = "thiserror" -version = "2.0.8" +version = "2.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08f5383f3e0071702bf93ab5ee99b52d26936be9dedd9413067cbdcddcb6141a" +checksum = "f072643fd0190df67a8bab670c20ef5d8737177d6ac6b2e9a236cb096206b2cc" dependencies = [ - "thiserror-impl 2.0.8", + "thiserror-impl 2.0.9", ] [[package]] @@ -3097,9 +3097,9 @@ dependencies = [ [[package]] name = "thiserror-impl" -version = "2.0.8" +version = "2.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2f357fcec90b3caef6623a099691be676d033b40a058ac95d2a6ade6fa0c943" +checksum = "7b50fa271071aae2e6ee85f842e2e28ba8cd2c5fb67f11fcb1fd70b276f9e7d4" dependencies = [ "proc-macro2", "quote", @@ -4047,7 +4047,7 @@ dependencies = [ "pbkdf2", "rand", "sha1", - "thiserror 2.0.8", + "thiserror 2.0.9", "time", "zeroize", "zopfli", From abe8f92ab8cdee926ca1ad4faf280427a9439e0e Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Sat, 28 Dec 2024 00:07:10 +0000 Subject: [PATCH 189/221] chore(deps): update rust crate serde to v1.0.217 (#151) --- Cargo.lock | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 191743a..a4c4e81 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2737,9 +2737,9 @@ checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" [[package]] name = "serde" -version = "1.0.216" +version = "1.0.217" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b9781016e935a97e8beecf0c933758c97a5520d32930e460142b4cd80c6338e" +checksum = "02fc4265df13d6fa1d00ecff087228cc0a2b5f3c0e87e258d8b94a156e984c70" dependencies = [ "serde_derive", ] @@ -2767,9 +2767,9 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.216" +version = "1.0.217" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46f859dbbf73865c6627ed570e78961cd3ac92407a2d117204c49232485da55e" +checksum = "5a9bf7cf98d04a2b28aead066b7496853d4779c9cc183c440dbac457641e19a0" dependencies = [ "proc-macro2", "quote", From d7787899593d60243c1efa6dd036fc44e9c51868 Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Mon, 30 Dec 2024 00:08:33 +0000 Subject: [PATCH 190/221] chore(deps): update rust crate quick-xml to v0.37.2 (#152) --- Cargo.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index a4c4e81..3586449 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2231,9 +2231,9 @@ checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" [[package]] name = "quick-xml" -version = "0.37.1" +version = "0.37.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f22f29bdff3987b4d8632ef95fd6424ec7e4e0a57e2f4fc63e489e75357f6a03" +checksum = "165859e9e55f79d67b96c5d96f4e88b6f2695a1972849c15a6a3f5c59fc2c003" dependencies = [ "memchr", ] From 55621fbbea51aed2234e43fa4b5ed61524ca1805 Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Thu, 2 Jan 2025 00:09:25 +0000 Subject: [PATCH 191/221] chore(deps): update rust crate axum-extra to 0.10.0 (#154) --- Cargo.lock | 121 +++++++++++++++++++++++++++++++---------------------- Cargo.toml | 2 +- 2 files changed, 71 insertions(+), 52 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 3586449..e1b0518 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -159,7 +159,7 @@ name = "artifactview" version = "0.4.7" dependencies = [ "async_zip", - "axum", + "axum 0.7.9", "axum-extra", "axum-test", "comrak", @@ -287,7 +287,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "edca88bc138befd0323b20752846e6587272d3b03b0343c8ea28a6f819e6e71f" dependencies = [ "async-trait", - "axum-core", + "axum-core 0.4.5", "bytes", "futures-util", "http 1.2.0", @@ -296,7 +296,7 @@ dependencies = [ "hyper", "hyper-util", "itoa", - "matchit", + "matchit 0.7.3", "memchr", "mime", "percent-encoding", @@ -306,9 +306,36 @@ dependencies = [ "serde_json", "serde_path_to_error", "serde_urlencoded", - "sync_wrapper 1.0.1", + "sync_wrapper", "tokio", - "tower 0.5.1", + "tower 0.5.2", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "axum" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d6fd624c75e18b3b4c6b9caf42b1afe24437daaee904069137d8bab077be8b8" +dependencies = [ + "axum-core 0.5.0", + "bytes", + "futures-util", + "http 1.2.0", + "http-body", + "http-body-util", + "itoa", + "matchit 0.8.4", + "memchr", + "mime", + "percent-encoding", + "pin-project-lite", + "rustversion", + "serde", + "sync_wrapper", + "tower 0.5.2", "tower-layer", "tower-service", "tracing", @@ -329,7 +356,27 @@ dependencies = [ "mime", "pin-project-lite", "rustversion", - "sync_wrapper 1.0.1", + "sync_wrapper", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "axum-core" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df1362f362fd16024ae199c1970ce98f9661bf5ef94b9808fee734bc3698b733" +dependencies = [ + "bytes", + "futures-util", + "http 1.2.0", + "http-body", + "http-body-util", + "mime", + "pin-project-lite", + "rustversion", + "sync_wrapper", "tower-layer", "tower-service", "tracing", @@ -337,24 +384,22 @@ dependencies = [ [[package]] name = "axum-extra" -version = "0.9.6" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c794b30c904f0a1c2fb7740f7df7f7972dfaa14ef6f57cb6178dc63e5dca2f04" +checksum = "460fc6f625a1f7705c6cf62d0d070794e94668988b1c38111baeec177c715f7b" dependencies = [ - "axum", - "axum-core", + "axum 0.8.1", + "axum-core 0.5.0", "bytes", - "fastrand", "futures-util", "headers", "http 1.2.0", "http-body", "http-body-util", "mime", - "multer", "pin-project-lite", "serde", - "tower 0.5.1", + "tower 0.5.2", "tower-layer", "tower-service", ] @@ -368,7 +413,7 @@ dependencies = [ "anyhow", "assert-json-diff", "auto-future", - "axum", + "axum 0.7.9", "bytes", "bytesize", "cookie", @@ -385,7 +430,7 @@ dependencies = [ "serde_urlencoded", "smallvec 1.13.2", "tokio", - "tower 0.5.1", + "tower 0.5.2", "url", ] @@ -888,15 +933,6 @@ version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" -[[package]] -name = "encoding_rs" -version = "0.8.35" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" -dependencies = [ - "cfg-if", -] - [[package]] name = "entities" version = "1.0.1" @@ -1737,6 +1773,12 @@ version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94" +[[package]] +name = "matchit" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47e1ffaa40ddd1f3ed91f717a33c8c0ee23fff369e3aa8772b9605cc1d22f4c3" + [[package]] name = "maybe-uninit" version = "2.0.0" @@ -1795,23 +1837,6 @@ dependencies = [ "windows-sys", ] -[[package]] -name = "multer" -version = "3.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83e87776546dc87511aa5ee218730c92b666d7264ab6ed41f9d215af9cd5224b" -dependencies = [ - "bytes", - "encoding_rs", - "futures-util", - "http 1.2.0", - "httparse", - "memchr", - "mime", - "spin", - "version_check", -] - [[package]] name = "native-tls" version = "0.2.12" @@ -2430,7 +2455,7 @@ dependencies = [ "serde", "serde_json", "serde_urlencoded", - "sync_wrapper 1.0.1", + "sync_wrapper", "tokio", "tokio-native-tls", "tokio-rustls", @@ -2991,12 +3016,6 @@ dependencies = [ "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.1" @@ -3262,14 +3281,14 @@ dependencies = [ [[package]] name = "tower" -version = "0.5.1" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2873938d487c3cfb9aed7546dc9f2711d867c9f90c46b889989a2cb84eba6b4f" +checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9" dependencies = [ "futures-core", "futures-util", "pin-project-lite", - "sync_wrapper 0.1.2", + "sync_wrapper", "tokio", "tower-layer", "tower-service", diff --git a/Cargo.toml b/Cargo.toml index 68d5ce9..5a6c03f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -29,7 +29,7 @@ axum = { version = "0.7.5", default-features = false, features = [ "tokio", "tracing", ] } -axum-extra = { version = "0.9.3", features = ["typed-header"] } +axum-extra = { version = "0.10.0", features = ["typed-header"] } comrak = { version = "0.32.0", default-features = false } dotenvy = "0.15.7" envy = { path = "crates/envy" } From b3cc2b53dc032d2821748895c983dde49c56eb65 Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Thu, 2 Jan 2025 00:13:56 +0000 Subject: [PATCH 192/221] chore(deps): update rust crate rstest to 0.24.0 (#155) --- Cargo.lock | 8 ++++---- Cargo.toml | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index e1b0518..5cae462 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2497,9 +2497,9 @@ dependencies = [ [[package]] name = "rstest" -version = "0.23.0" +version = "0.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a2c585be59b6b5dd66a9d2084aa1d8bd52fbdb806eafdeffb52791147862035" +checksum = "03e905296805ab93e13c1ec3a03f4b6c4f35e9498a3d5fa96dc626d22c03cd89" dependencies = [ "rstest_macros", "rustc_version", @@ -2507,9 +2507,9 @@ dependencies = [ [[package]] name = "rstest_macros" -version = "0.23.0" +version = "0.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "825ea780781b15345a146be27eaefb05085e337e869bff01b4306a4fd4a9ad5a" +checksum = "ef0053bbffce09062bee4bcc499b0fbe7a57b879f1efe088d6d8d4c7adcdef9b" dependencies = [ "cfg-if", "glob", diff --git a/Cargo.toml b/Cargo.toml index 5a6c03f..a617881 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -85,7 +85,7 @@ flate2 = "1.0.30" httpdate = "1.0.3" insta = { version = "1.39.0", features = ["json"] } proptest = "1.4.0" -rstest = { version = "0.23.0", default-features = false } +rstest = { version = "0.24.0", default-features = false } scraper = "0.22.0" temp_testdir = "0.2.3" From cd73f4828f67d31dee356cb98a1ac45354e0e728 Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Fri, 3 Jan 2025 00:07:06 +0000 Subject: [PATCH 193/221] chore(deps): update rust crate reqwest to v0.12.12 (#156) --- Cargo.lock | 33 +++++++++------------------------ 1 file changed, 9 insertions(+), 24 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 5cae462..88addb5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -308,7 +308,7 @@ dependencies = [ "serde_urlencoded", "sync_wrapper", "tokio", - "tower 0.5.2", + "tower", "tower-layer", "tower-service", "tracing", @@ -335,7 +335,7 @@ dependencies = [ "rustversion", "serde", "sync_wrapper", - "tower 0.5.2", + "tower", "tower-layer", "tower-service", "tracing", @@ -399,7 +399,7 @@ dependencies = [ "mime", "pin-project-lite", "serde", - "tower 0.5.2", + "tower", "tower-layer", "tower-service", ] @@ -430,7 +430,7 @@ dependencies = [ "serde_urlencoded", "smallvec 1.13.2", "tokio", - "tower 0.5.2", + "tower", "url", ] @@ -1401,9 +1401,9 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.6" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ab92f4f49ee4fb4f997c784b7a2e0fa70050211e0b6a287f898c3c9785ca956" +checksum = "df2dcfbe0677734ab2f3ffa7fa7bfd4706bfdc1ef393f2ee30184aed67e631b4" dependencies = [ "bytes", "futures-channel", @@ -1414,7 +1414,6 @@ dependencies = [ "pin-project-lite", "socket2", "tokio", - "tower 0.4.13", "tower-service", "tracing", ] @@ -2424,9 +2423,9 @@ checksum = "ba39f3699c378cd8970968dcbff9c43159ea4cfbd88d43c00b22f2ef10a435d2" [[package]] name = "reqwest" -version = "0.12.9" +version = "0.12.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a77c62af46e79de0a562e1a9849205ffcb7fc1238876e9bd743357570e04046f" +checksum = "43e734407157c3c2034e0258f5e4473ddb361b1e85f95a66690d67264d7cd1da" dependencies = [ "base64 0.22.1", "bytes", @@ -2460,6 +2459,7 @@ dependencies = [ "tokio-native-tls", "tokio-rustls", "tokio-util", + "tower", "tower-service", "url", "wasm-bindgen", @@ -3264,21 +3264,6 @@ dependencies = [ "serde", ] -[[package]] -name = "tower" -version = "0.4.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" -dependencies = [ - "futures-core", - "futures-util", - "pin-project", - "pin-project-lite", - "tokio", - "tower-layer", - "tower-service", -] - [[package]] name = "tower" version = "0.5.2" From 1ce03ca19f4032d5e88c8efbe83b98c45d98247d Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Sun, 5 Jan 2025 00:07:35 +0000 Subject: [PATCH 194/221] chore(deps): update rust crate comrak to 0.33.0 (#158) --- Cargo.lock | 91 ++---------------------------------------------------- Cargo.toml | 2 +- 2 files changed, 4 insertions(+), 89 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 88addb5..eda2e8e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -506,31 +506,6 @@ dependencies = [ "generic-array", ] -[[package]] -name = "bon" -version = "3.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a636f83af97c6946f3f5cf5c268ec02375bf5efd371110292dfd57961f57a509" -dependencies = [ - "bon-macros", - "rustversion", -] - -[[package]] -name = "bon-macros" -version = "3.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7eaf1bfaa5b8d512abfd36d0c432591fef139d3de9ee54f1f839ea109d70d33" -dependencies = [ - "darling", - "ident_case", - "prettyplease 0.2.25", - "proc-macro2", - "quote", - "rustversion", - "syn 2.0.87", -] - [[package]] name = "buf-min" version = "0.7.1" @@ -640,16 +615,13 @@ checksum = "d3fd119d74b830634cea2a0f58bbd0d54540518a14397557951e79340abc28c0" [[package]] name = "comrak" -version = "0.32.0" +version = "0.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48ae8f3e7e3f3d424cbb33354fc36943d507327d210aa5794b0192f4be726c6d" +checksum = "39bff2cbb80102771ca62bd2375bc6f6611dc1493373440b23aa08a155538708" dependencies = [ - "bon", "caseless", "entities", "memchr", - "once_cell", - "regex", "slug", "typed-arena", "unicode_categories", @@ -777,41 +749,6 @@ dependencies = [ "syn 2.0.87", ] -[[package]] -name = "darling" -version = "0.20.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f63b86c8a8826a49b8c21f08a2d07338eec8d900540f8630dc76284be802989" -dependencies = [ - "darling_core", - "darling_macro", -] - -[[package]] -name = "darling_core" -version = "0.20.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95133861a8032aaea082871032f5815eb9e98cef03fa916ab4500513994df9e5" -dependencies = [ - "fnv", - "ident_case", - "proc-macro2", - "quote", - "strsim", - "syn 2.0.87", -] - -[[package]] -name = "darling_macro" -version = "0.20.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" -dependencies = [ - "darling_core", - "quote", - "syn 2.0.87", -] - [[package]] name = "dashmap" version = "6.1.0" @@ -1559,12 +1496,6 @@ dependencies = [ "syn 2.0.87", ] -[[package]] -name = "ident_case" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" - [[package]] name = "idna" version = "1.0.3" @@ -2193,16 +2124,6 @@ dependencies = [ "syn 1.0.109", ] -[[package]] -name = "prettyplease" -version = "0.2.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64d1ec885c64d0457d564db4ec299b2dae3f9c02808b8ad9c3a089c591b18033" -dependencies = [ - "proc-macro2", - "syn 2.0.87", -] - [[package]] name = "proc-macro2" version = "1.0.92" @@ -2982,12 +2903,6 @@ dependencies = [ "quote", ] -[[package]] -name = "strsim" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" - [[package]] name = "subtle" version = "2.6.1" @@ -3880,7 +3795,7 @@ dependencies = [ "chrono", "dtoa", "itoa", - "prettyplease 0.1.25", + "prettyplease", "ryu", "serde", "serde_json", diff --git a/Cargo.toml b/Cargo.toml index a617881..17aea1a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -30,7 +30,7 @@ axum = { version = "0.7.5", default-features = false, features = [ "tracing", ] } axum-extra = { version = "0.10.0", features = ["typed-header"] } -comrak = { version = "0.32.0", default-features = false } +comrak = { version = "0.33.0", default-features = false } dotenvy = "0.15.7" envy = { path = "crates/envy" } flate2 = "1.0.30" From 5b138fae112d47a08b0940d61bd403047a8567fa Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Mon, 6 Jan 2025 00:09:27 +0000 Subject: [PATCH 195/221] chore(deps): update rust crate insta to v1.42.0 (#159) --- Cargo.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index eda2e8e..a5cf629 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1538,13 +1538,13 @@ dependencies = [ [[package]] name = "insta" -version = "1.41.1" +version = "1.42.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e9ffc4d4892617c50a928c52b2961cb5174b6fc6ebf252b2fac9d21955c48b8" +checksum = "6513e4067e16e69ed1db5ab56048ed65db32d10ba5fc1217f5393f8f17d8b5a5" dependencies = [ "console", - "lazy_static", "linked-hash-map", + "once_cell", "serde", "similar", ] From 13ee5cc2456180bfdc47a2d9e3a0dfe9a2dacd7d Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Tue, 7 Jan 2025 00:09:12 +0000 Subject: [PATCH 196/221] chore(deps): update rust crate pin-project to v1.1.8 (#161) --- Cargo.lock | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index a5cf629..e390a87 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2044,18 +2044,18 @@ dependencies = [ [[package]] name = "pin-project" -version = "1.1.7" +version = "1.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be57f64e946e500c8ee36ef6331845d40a93055567ec57e8fae13efd33759b95" +checksum = "1e2ec53ad785f4d35dac0adea7f7dc6f1bb277ad84a680c7afefeae05d1f5916" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.7" +version = "1.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c0f5fad0874fc7abcd4d750e76917eaebbecaa2c20bde22e1dbeeba8beb758c" +checksum = "d56a66c0c55993aa927429d0f8a0abfd74f084e4d9c192cffed01e418d83eefb" dependencies = [ "proc-macro2", "quote", From 8417ea34a0808d2ba25194021bbe38538ce52ddf Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Wed, 8 Jan 2025 21:51:18 +0000 Subject: [PATCH 197/221] chore(deps): update rust crate serde_json to v1.0.135 (#162) --- Cargo.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index e390a87..8fd72c5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2724,9 +2724,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.134" +version = "1.0.135" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d00f4175c42ee48b15416f6193a959ba3a0d67fc699a0db9ad12df9f83991c7d" +checksum = "2b0d7ba2887406110130a978386c4e1befb98c674b4fba677954e4db976630d9" dependencies = [ "itoa", "memchr", From c2ee6cd84933e7cb2167b4cd34ec47f926105e59 Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Thu, 9 Jan 2025 00:07:12 +0000 Subject: [PATCH 198/221] chore(deps): update rust crate thiserror to v2.0.10 (#163) --- Cargo.lock | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 8fd72c5..e753ff9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -195,7 +195,7 @@ dependencies = [ "serde_urlencoded", "syntect", "temp_testdir", - "thiserror 2.0.9", + "thiserror 2.0.10", "time", "tokio", "tokio-util", @@ -256,7 +256,7 @@ dependencies = [ "env_logger", "futures-lite", "pin-project", - "thiserror 2.0.9", + "thiserror 2.0.10", "tokio", "tokio-util", "zip", @@ -1594,7 +1594,7 @@ dependencies = [ "path_macro", "quick-xml", "serde", - "thiserror 2.0.9", + "thiserror 2.0.10", "time", ] @@ -3011,11 +3011,11 @@ dependencies = [ [[package]] name = "thiserror" -version = "2.0.9" +version = "2.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f072643fd0190df67a8bab670c20ef5d8737177d6ac6b2e9a236cb096206b2cc" +checksum = "a3ac7f54ca534db81081ef1c1e7f6ea8a3ef428d2fc069097c079443d24124d3" dependencies = [ - "thiserror-impl 2.0.9", + "thiserror-impl 2.0.10", ] [[package]] @@ -3031,9 +3031,9 @@ dependencies = [ [[package]] name = "thiserror-impl" -version = "2.0.9" +version = "2.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b50fa271071aae2e6ee85f842e2e28ba8cd2c5fb67f11fcb1fd70b276f9e7d4" +checksum = "9e9465d30713b56a37ede7185763c3492a91be2f5fa68d958c44e41ab9248beb" dependencies = [ "proc-macro2", "quote", @@ -3966,7 +3966,7 @@ dependencies = [ "pbkdf2", "rand", "sha1", - "thiserror 2.0.9", + "thiserror 2.0.10", "time", "zeroize", "zopfli", From db790e0811e9a67a63dc4708ca928efbcff1eb49 Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Thu, 9 Jan 2025 00:15:54 +0000 Subject: [PATCH 199/221] chore(deps): update rust crate tokio to v1.43.0 (#164) --- Cargo.lock | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index e753ff9..8dfc663 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1606,9 +1606,9 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.155" +version = "0.2.169" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c" +checksum = "b5aba8db14291edd000dfcc4d620c7ebfb122c613afb886ca8803fa4e128a20a" [[package]] name = "libm" @@ -3108,9 +3108,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.42.0" +version = "1.43.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cec9b21b0450273377fc97bd4c33a8acffc8c996c987a7c5b319a0083707551" +checksum = "3d61fa4ffa3de412bfea335c6ecff681de2b609ba3c77ef3e00e521813a9ed9e" dependencies = [ "backtrace", "bytes", @@ -3126,9 +3126,9 @@ dependencies = [ [[package]] name = "tokio-macros" -version = "2.4.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" +checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" dependencies = [ "proc-macro2", "quote", From db0a4fd5d48842ff48a375d241139ad91796422b Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Sat, 11 Jan 2025 00:05:42 +0000 Subject: [PATCH 200/221] chore(deps): update rust crate thiserror to v2.0.11 (#165) --- Cargo.lock | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 8dfc663..b735171 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -195,7 +195,7 @@ dependencies = [ "serde_urlencoded", "syntect", "temp_testdir", - "thiserror 2.0.10", + "thiserror 2.0.11", "time", "tokio", "tokio-util", @@ -256,7 +256,7 @@ dependencies = [ "env_logger", "futures-lite", "pin-project", - "thiserror 2.0.10", + "thiserror 2.0.11", "tokio", "tokio-util", "zip", @@ -1594,7 +1594,7 @@ dependencies = [ "path_macro", "quick-xml", "serde", - "thiserror 2.0.10", + "thiserror 2.0.11", "time", ] @@ -3011,11 +3011,11 @@ dependencies = [ [[package]] name = "thiserror" -version = "2.0.10" +version = "2.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3ac7f54ca534db81081ef1c1e7f6ea8a3ef428d2fc069097c079443d24124d3" +checksum = "d452f284b73e6d76dd36758a0c8684b1d5be31f92b89d07fd5822175732206fc" dependencies = [ - "thiserror-impl 2.0.10", + "thiserror-impl 2.0.11", ] [[package]] @@ -3031,9 +3031,9 @@ dependencies = [ [[package]] name = "thiserror-impl" -version = "2.0.10" +version = "2.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e9465d30713b56a37ede7185763c3492a91be2f5fa68d958c44e41ab9248beb" +checksum = "26afc1baea8a989337eeb52b6e72a039780ce45c3edfcc9c5b9d112feeb173c2" dependencies = [ "proc-macro2", "quote", @@ -3966,7 +3966,7 @@ dependencies = [ "pbkdf2", "rand", "sha1", - "thiserror 2.0.10", + "thiserror 2.0.11", "time", "zeroize", "zopfli", From c9a6d6786f763825874520776653b311bc7bd5d8 Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Mon, 13 Jan 2025 00:08:46 +0000 Subject: [PATCH 201/221] chore(deps): update rust crate futures-lite to v2.6.0 (#166) --- Cargo.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index b735171..21cc439 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1001,9 +1001,9 @@ checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" [[package]] name = "futures-lite" -version = "2.5.0" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cef40d21ae2c515b51041df9ed313ed21e572df340ea58a922a0aefe7e8891a1" +checksum = "f5edaec856126859abb19ed65f39e90fea3a9574b9707f13539acf4abf7eb532" dependencies = [ "fastrand", "futures-core", From 558ce7daa8fbedac507f2d6e01961896eb8daac0 Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Mon, 20 Jan 2025 00:06:07 +0000 Subject: [PATCH 202/221] chore(deps): update rust crate serde_json to v1.0.137 (#167) --- Cargo.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 21cc439..1c5c0e9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2724,9 +2724,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.135" +version = "1.0.137" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b0d7ba2887406110130a978386c4e1befb98c674b4fba677954e4db976630d9" +checksum = "930cfb6e6abf99298aaad7d29abbef7a9999a9a8806a40088f55f0dcec03146b" dependencies = [ "itoa", "memchr", From a88977af942d275422670984ddbefa53f8d61e13 Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Wed, 22 Jan 2025 00:07:42 +0000 Subject: [PATCH 203/221] chore(deps): update rust crate comrak to 0.34.0 (#168) --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 1c5c0e9..a368631 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -615,9 +615,9 @@ checksum = "d3fd119d74b830634cea2a0f58bbd0d54540518a14397557951e79340abc28c0" [[package]] name = "comrak" -version = "0.33.0" +version = "0.34.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39bff2cbb80102771ca62bd2375bc6f6611dc1493373440b23aa08a155538708" +checksum = "1664eb8abab93a9c09d1e85df10b4de6af0b4c738f267750b211a77a771447fe" dependencies = [ "caseless", "entities", diff --git a/Cargo.toml b/Cargo.toml index 17aea1a..ca1935c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -30,7 +30,7 @@ axum = { version = "0.7.5", default-features = false, features = [ "tracing", ] } axum-extra = { version = "0.10.0", features = ["typed-header"] } -comrak = { version = "0.33.0", default-features = false } +comrak = { version = "0.34.0", default-features = false } dotenvy = "0.15.7" envy = { path = "crates/envy" } flate2 = "1.0.30" From 4042ded5aee3763c293ffd264cb2428eb4266845 Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Sat, 25 Jan 2025 00:06:04 +0000 Subject: [PATCH 204/221] chore(deps): update rust crate comrak to 0.35.0 (#169) --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index a368631..5d163c9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -615,9 +615,9 @@ checksum = "d3fd119d74b830634cea2a0f58bbd0d54540518a14397557951e79340abc28c0" [[package]] name = "comrak" -version = "0.34.0" +version = "0.35.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1664eb8abab93a9c09d1e85df10b4de6af0b4c738f267750b211a77a771447fe" +checksum = "52602e10393cfaaf8accaf707f2da743dc22cbe700a343ff8dbc9e5e04bc6b74" dependencies = [ "caseless", "entities", diff --git a/Cargo.toml b/Cargo.toml index ca1935c..1114f27 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -30,7 +30,7 @@ axum = { version = "0.7.5", default-features = false, features = [ "tracing", ] } axum-extra = { version = "0.10.0", features = ["typed-header"] } -comrak = { version = "0.34.0", default-features = false } +comrak = { version = "0.35.0", default-features = false } dotenvy = "0.15.7" envy = { path = "crates/envy" } flate2 = "1.0.30" From 0c49fe751a833ca684bfc39d19e2f1eb7ea269f5 Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Sun, 26 Jan 2025 00:09:48 +0000 Subject: [PATCH 205/221] chore(deps): update rust crate insta to v1.42.1 (#170) --- Cargo.lock | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 5d163c9..8110744 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1538,13 +1538,14 @@ dependencies = [ [[package]] name = "insta" -version = "1.42.0" +version = "1.42.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6513e4067e16e69ed1db5ab56048ed65db32d10ba5fc1217f5393f8f17d8b5a5" +checksum = "71c1b125e30d93896b365e156c33dadfffab45ee8400afcbba4752f59de08a86" dependencies = [ "console", "linked-hash-map", "once_cell", + "pin-project", "serde", "similar", ] From 2c2893da218737572e3943e2b72f7cec4ca6798f Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Sun, 26 Jan 2025 15:10:44 +0000 Subject: [PATCH 206/221] chore(deps): update rust crate axum to 0.8.0 (#157) --- Cargo.lock | 87 +++++++----------------------------------------------- Cargo.toml | 4 +-- src/app.rs | 5 ++-- 3 files changed, 16 insertions(+), 80 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 8110744..3c574c2 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -159,7 +159,7 @@ name = "artifactview" version = "0.4.7" dependencies = [ "async_zip", - "axum 0.7.9", + "axum", "axum-extra", "axum-test", "comrak", @@ -235,17 +235,6 @@ dependencies = [ "zstd-safe", ] -[[package]] -name = "async-trait" -version = "0.1.81" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e0c28dcc82d7c8ead5cb13beb15405b57b8546e93215673ff8ca0349a028107" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.87", -] - [[package]] name = "async_zip" version = "0.0.17" @@ -282,13 +271,13 @@ checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "axum" -version = "0.7.9" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edca88bc138befd0323b20752846e6587272d3b03b0343c8ea28a6f819e6e71f" +checksum = "6d6fd624c75e18b3b4c6b9caf42b1afe24437daaee904069137d8bab077be8b8" dependencies = [ - "async-trait", - "axum-core 0.4.5", + "axum-core", "bytes", + "form_urlencoded", "futures-util", "http 1.2.0", "http-body", @@ -296,7 +285,7 @@ dependencies = [ "hyper", "hyper-util", "itoa", - "matchit 0.7.3", + "matchit", "memchr", "mime", "percent-encoding", @@ -314,54 +303,6 @@ dependencies = [ "tracing", ] -[[package]] -name = "axum" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d6fd624c75e18b3b4c6b9caf42b1afe24437daaee904069137d8bab077be8b8" -dependencies = [ - "axum-core 0.5.0", - "bytes", - "futures-util", - "http 1.2.0", - "http-body", - "http-body-util", - "itoa", - "matchit 0.8.4", - "memchr", - "mime", - "percent-encoding", - "pin-project-lite", - "rustversion", - "serde", - "sync_wrapper", - "tower", - "tower-layer", - "tower-service", - "tracing", -] - -[[package]] -name = "axum-core" -version = "0.4.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09f2bd6146b97ae3359fa0cc6d6b376d9539582c7b4220f041a33ec24c226199" -dependencies = [ - "async-trait", - "bytes", - "futures-util", - "http 1.2.0", - "http-body", - "http-body-util", - "mime", - "pin-project-lite", - "rustversion", - "sync_wrapper", - "tower-layer", - "tower-service", - "tracing", -] - [[package]] name = "axum-core" version = "0.5.0" @@ -388,8 +329,8 @@ version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "460fc6f625a1f7705c6cf62d0d070794e94668988b1c38111baeec177c715f7b" dependencies = [ - "axum 0.8.1", - "axum-core 0.5.0", + "axum", + "axum-core", "bytes", "futures-util", "headers", @@ -406,14 +347,14 @@ dependencies = [ [[package]] name = "axum-test" -version = "16.4.1" +version = "17.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63e3a443d2608936a02a222da7b746eb412fede7225b3030b64fe9be99eab8dc" +checksum = "375ec4f6db373ce6d696839249203c57049aefe1213cfa77bb2e12e10ed43d08" dependencies = [ "anyhow", "assert-json-diff", "auto-future", - "axum 0.7.9", + "axum", "bytes", "bytesize", "cookie", @@ -1698,12 +1639,6 @@ dependencies = [ "tendril", ] -[[package]] -name = "matchit" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94" - [[package]] name = "matchit" version = "0.8.4" diff --git a/Cargo.toml b/Cargo.toml index 1114f27..9c1e914 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -21,7 +21,7 @@ async_zip = { path = "crates/async_zip", features = [ "tokio-fs", "deflate", ] } -axum = { version = "0.7.5", default-features = false, features = [ +axum = { version = "0.8.0", default-features = false, features = [ "http1", "http2", "json", @@ -80,7 +80,7 @@ yarte = { version = "0.15.7", features = ["json"] } yarte_helpers = "0.15.8" [dev-dependencies] -axum-test = "16.0.0" +axum-test = "17.0.0" flate2 = "1.0.30" httpdate = "1.0.3" insta = { version = "1.39.0", features = ["json"] } diff --git a/src/app.rs b/src/app.rs index a3a15c9..85e446f 100644 --- a/src/app.rs +++ b/src/app.rs @@ -11,12 +11,13 @@ use std::{ use async_zip::tokio::read::ZipEntryReader; use axum::{ body::Body, - extract::{Host, Query as XQuery, Request, State}, + extract::{Query as XQuery, Request, State}, http::{Response, Uri}, response::{IntoResponse, Redirect}, routing::{any, get, post}, Json, RequestExt, Router, }; +use axum_extra::extract::Host; use futures_lite::AsyncReadExt as LiteAsyncReadExt; use governor::{Quota, RateLimiter}; use headers::{ContentType, HeaderMapExt}; @@ -175,7 +176,7 @@ impl App { .route("/.well-known/api/prComment", post(Self::pr_comment)) // Prevent access to the .well-known folder since it enables abuse // (e.g. SSL certificate registration by an attacker) - .route("/.well-known/*path", any(|| async { Error::Inaccessible })) + .route("/.well-known/{*path}", any(|| async { Error::Inaccessible })) // Serve artifact pages .route("/", get(Self::get_page)) .fallback(get(Self::get_page)) From 9a270df19e0a6ebca1cdfbcd07211c0a3e9cc9d1 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sun, 26 Jan 2025 16:12:56 +0100 Subject: [PATCH 207/221] chore(release): release artifactview v0.4.8 --- CHANGELOG.md | 94 ++++++++++++++++++++++++++++++++++++++++++++++++++++ Cargo.lock | 2 +- Cargo.toml | 2 +- 3 files changed, 96 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1bd4e61..36447ab 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,100 @@ All notable changes to this project will be documented in this file. +## [v0.4.8](https://codeberg.org/ThetaDev/artifactview/compare/v0.4.7..v0.4.8) - 2025-01-26 + +### ๐Ÿ› Bug Fixes + +- Lifetime-related lints - ([e20f6fb](https://codeberg.org/ThetaDev/artifactview/commit/e20f6fb92e86751222d2c5143ee384cdbea1159d)) + +### โš™๏ธ Miscellaneous Tasks + +- *(deps)* Update rust crate async-compression to v0.4.15 (#85) - ([4f4716c](https://codeberg.org/ThetaDev/artifactview/commit/4f4716cdd86c317ede2b381d375ef8e736aee240)) +- *(deps)* Update rust crate async-compression to v0.4.16 (#86) - ([9592da3](https://codeberg.org/ThetaDev/artifactview/commit/9592da3d6e2c2223174fcc459e94f29bf5067ead)) +- *(deps)* Update rust crate serde_json to v1.0.129 (#87) - ([2e46d37](https://codeberg.org/ThetaDev/artifactview/commit/2e46d3795089ef7b2739db4d216f4db99f792071)) +- *(deps)* Update rust crate serde_json to v1.0.131 (#88) - ([992f995](https://codeberg.org/ThetaDev/artifactview/commit/992f9954414af550fce90c9c7424ab0da2296875)) +- *(deps)* Update rust crate governor to v0.6.4 (#89) - ([f1d9897](https://codeberg.org/ThetaDev/artifactview/commit/f1d9897e832b5cdb99fd81edcb38d27bd6b445f8)) +- *(deps)* Update rust crate serde_json to v1.0.132 (#90) - ([600d18d](https://codeberg.org/ThetaDev/artifactview/commit/600d18d05b356c641a32b93b2407a1f23e2370c4)) +- *(deps)* Update rust crate async-compression to v0.4.17 (#91) - ([0b3c032](https://codeberg.org/ThetaDev/artifactview/commit/0b3c0325a50cd456cb9b62f97e916f0760785a3c)) +- *(deps)* Update rust crate governor to 0.7.0 (#92) - ([cbd304c](https://codeberg.org/ThetaDev/artifactview/commit/cbd304c84195983596156a95c26d65a89e93df8a)) +- *(deps)* Update rust crate thiserror to v1.0.65 (#94) - ([2df196a](https://codeberg.org/ThetaDev/artifactview/commit/2df196a2e666e8186d9ff66e885123c8a48c743c)) +- *(deps)* Update rust crate serde to v1.0.213 (#93) - ([e5b9105](https://codeberg.org/ThetaDev/artifactview/commit/e5b9105da1fb0c63584cc409b5dd98c1fe045f9b)) +- *(deps)* Update rust crate tokio to v1.41.0 (#95) - ([1dc4fe2](https://codeberg.org/ThetaDev/artifactview/commit/1dc4fe225c01f237f6a698fced7eff72cfb8ee85)) +- *(deps)* Update rust crate pin-project to v1.1.7 (#96) - ([c82bccc](https://codeberg.org/ThetaDev/artifactview/commit/c82bccca9098281fa42ded5d5527eadb3cbcce88)) +- *(deps)* Update rust crate regex to v1.11.1 (#97) - ([613815a](https://codeberg.org/ThetaDev/artifactview/commit/613815aa1ebc01643e117ca9fafcb37bfe7d29d7)) +- *(deps)* Update rust crate axum-test to v16.3.0 (#98) - ([b2070ec](https://codeberg.org/ThetaDev/artifactview/commit/b2070ec460e45eeb9997885bd7cf54913f9f4183)) +- *(deps)* Update rust crate insta to v1.41.0 (#99) - ([5aec8d6](https://codeberg.org/ThetaDev/artifactview/commit/5aec8d677f089ff5092fe78655170d52e544baeb)) +- *(deps)* Update rust crate quick-xml to 0.37.0 (#100) - ([72e20d4](https://codeberg.org/ThetaDev/artifactview/commit/72e20d413e80b86d49ea0b275ce6aece99d75314)) +- *(deps)* Update rust crate reqwest to v0.12.9 (#101) - ([d45e8e6](https://codeberg.org/ThetaDev/artifactview/commit/d45e8e63c9ce4067a05839643581b9f42e4048ec)) +- *(deps)* Update rust crate serde to v1.0.214 (#102) - ([2a1ebd7](https://codeberg.org/ThetaDev/artifactview/commit/2a1ebd7b854ca82cceb768202e4d9ee984007311)) +- *(deps)* Update rust crate futures-lite to v2.4.0 (#103) - ([3bda063](https://codeberg.org/ThetaDev/artifactview/commit/3bda06357809e68c0804aa425e625893af1bbde2)) +- *(deps)* Update rust crate insta to v1.41.1 (#104) - ([a406bff](https://codeberg.org/ThetaDev/artifactview/commit/a406bffabeeb2627cd5ef74f3520add6eb0a8d6c)) +- *(deps)* Update rust crate thiserror to v1.0.66 (#105) - ([8f89fc9](https://codeberg.org/ThetaDev/artifactview/commit/8f89fc9953370c4325c63762e4451d37a1a4a64a)) +- *(deps)* Update rust crate scraper to 0.21.0 (#106) - ([1f00bbf](https://codeberg.org/ThetaDev/artifactview/commit/1f00bbfac53521cf0f76cf6fc4bf23e7a5e10562)) +- *(deps)* Update rust crate thiserror to v1.0.67 (#107) - ([39a76ea](https://codeberg.org/ThetaDev/artifactview/commit/39a76eaa334d3f57e30e3ba95eb781dfa7aee1ee)) +- *(deps)* Update rust crate thiserror to v1.0.68 (#108) - ([a48af07](https://codeberg.org/ThetaDev/artifactview/commit/a48af07d936a77977d602649fe579941b2cd2630)) +- *(deps)* Update rust crate url to v2.5.3 (#109) - ([44cc0c1](https://codeberg.org/ThetaDev/artifactview/commit/44cc0c10103eb8fc10ddcc17e559479fadcbe4f1)) +- *(deps)* Update rust crate tokio to v1.41.1 (#111) - ([dd809ce](https://codeberg.org/ThetaDev/artifactview/commit/dd809ce3f322fe8dafadeb802be7fcf905aa2f02)) +- *(deps)* Update rust crate thiserror to v2 (#110) - ([8cb636c](https://codeberg.org/ThetaDev/artifactview/commit/8cb636ccc9c93800e6e98522de5c38bb05e76fdb)) +- *(deps)* Update rust crate futures-lite to v2.5.0 (#112) - ([c05eb56](https://codeberg.org/ThetaDev/artifactview/commit/c05eb562a9d10945ee534ef50208aeb004023c51)) +- *(deps)* Update rust crate thiserror to v2.0.3 (#113) - ([a695cef](https://codeberg.org/ThetaDev/artifactview/commit/a695cef57d5c73492d806958290bb37bd9613125)) +- *(deps)* Update rust crate serde to v1.0.215 (#114) - ([3497592](https://codeberg.org/ThetaDev/artifactview/commit/34975924b1e1c3d5367346a1e0274a435496091f)) +- *(deps)* Update rust crate flate2 to v1.0.35 (#115) - ([0b9498c](https://codeberg.org/ThetaDev/artifactview/commit/0b9498c541c0188fd7c82a99b2f778251b831df3)) +- *(deps)* Update rust crate axum to v0.7.8 (#116) - ([79623d9](https://codeberg.org/ThetaDev/artifactview/commit/79623d9bc2d40e43374c4a2934d6bbac1235bae7)) +- *(deps)* Update rust crate axum-extra to v0.9.5 (#117) - ([b35cfe3](https://codeberg.org/ThetaDev/artifactview/commit/b35cfe3f4fe402943ee3238b671c18449c5437ba)) +- *(deps)* Update rust crate axum-test to v16.4.0 (#118) - ([e370001](https://codeberg.org/ThetaDev/artifactview/commit/e37000143e752b4bc496797de2410be33d3adf2b)) +- *(deps)* Update rust crate axum to v0.7.9 (#119) - ([cab58d2](https://codeberg.org/ThetaDev/artifactview/commit/cab58d284e6b9f2e6b730d9b3f6d648d0955832d)) +- *(deps)* Update rust crate quick-xml to v0.37.1 (#121) - ([dffcd16](https://codeberg.org/ThetaDev/artifactview/commit/dffcd16a60b456e9ed547b2a01342df3585e607f)) +- *(deps)* Update rust crate axum-extra to v0.9.6 (#120) - ([4cf0084](https://codeberg.org/ThetaDev/artifactview/commit/4cf0084e24969d15149468de42cf6ed15e1169f5)) +- *(deps)* Update rust crate serde_json to v1.0.133 (#122) - ([5231609](https://codeberg.org/ThetaDev/artifactview/commit/52316093cdad4ceca274e4c65035842e0413892e)) +- *(deps)* Update rust crate tower-http to v0.6.2 (#123) - ([8158497](https://codeberg.org/ThetaDev/artifactview/commit/8158497a73367fb2280d48350e3afa868c006d65)) +- *(deps)* Update rust crate zip to v2.2.1 (#124) - ([81c8521](https://codeberg.org/ThetaDev/artifactview/commit/81c852126ca45172bd00f75a5007263fefb5967b)) +- *(deps)* Update rust crate url to v2.5.4 (#125) - ([c99dfa8](https://codeberg.org/ThetaDev/artifactview/commit/c99dfa809175e84261245b2680a964b95d81b4e3)) +- *(deps)* Update rust crate comrak to 0.30.0 (#126) - ([389dd6f](https://codeberg.org/ThetaDev/artifactview/commit/389dd6f536b9044a8b9675c3ad34fa218028d154)) +- *(deps)* Update rust crate async-compression to v0.4.18 (#127) - ([05f20f4](https://codeberg.org/ThetaDev/artifactview/commit/05f20f44ac4910e600f318d656d376d52fd6b131)) +- *(deps)* Update rust crate comrak to 0.31.0 (#128) - ([5fd14aa](https://codeberg.org/ThetaDev/artifactview/commit/5fd14aada8f310fdeb0b2dc33a15de0b195ebc81)) +- *(deps)* Update rust crate tracing to v0.1.41 (#129) - ([ab3479f](https://codeberg.org/ThetaDev/artifactview/commit/ab3479f0d1b3a30413df654cc9f2e7a52081b542)) +- *(deps)* Update rust crate tracing-subscriber to v0.3.19 (#130) - ([1f9847b](https://codeberg.org/ThetaDev/artifactview/commit/1f9847b3edd73c1e905feb88087ee4325364ddda)) +- *(deps)* Update rust crate thiserror to v2.0.4 (#131) - ([e9d1226](https://codeberg.org/ThetaDev/artifactview/commit/e9d122639022d3b5b68b4626e00442a81acf85f5)) +- *(deps)* Update rust crate time to v0.3.37 (#132) - ([6fc7263](https://codeberg.org/ThetaDev/artifactview/commit/6fc7263f5996abefdb71fd5ecae277ec707cbdd9)) +- *(deps)* Update rust crate http to v1.2.0 (#133) - ([5f517ae](https://codeberg.org/ThetaDev/artifactview/commit/5f517ae6c784e4fbc99ca69650d85621e90f776c)) +- *(deps)* Update rust crate tokio to v1.42.0 (#134) - ([b15c4b0](https://codeberg.org/ThetaDev/artifactview/commit/b15c4b009a268cd4227846f166131aad5628f87d)) +- *(deps)* Update rust crate tokio-util to v0.7.13 (#135) - ([f43f06c](https://codeberg.org/ThetaDev/artifactview/commit/f43f06c33462c15a8a752493f14c86d9dbde0e8d)) +- *(deps)* Update rust crate thiserror to v2.0.5 (#136) - ([94c589c](https://codeberg.org/ThetaDev/artifactview/commit/94c589c20936c8e56be3147fd01e51d8b25e617f)) +- *(deps)* Update rust crate thiserror to v2.0.6 (#137) - ([5e83ab5](https://codeberg.org/ThetaDev/artifactview/commit/5e83ab510614db696a7245ad5027c717b3493cab)) +- *(deps)* Update rust crate chrono to v0.4.39 (#138) - ([8e9c5aa](https://codeberg.org/ThetaDev/artifactview/commit/8e9c5aad48378c2fa1a1d3d370b96de2fca5dd86)) +- *(deps)* Update rust crate governor to 0.8.0 (#139) - ([b24136e](https://codeberg.org/ThetaDev/artifactview/commit/b24136ec597d2b4c579176a6a7845878549478bb)) +- *(deps)* Update rust crate scraper to 0.22.0 (#140) - ([f48c570](https://codeberg.org/ThetaDev/artifactview/commit/f48c57021505091b22c36bd49bd4527e652b8d78)) +- *(deps)* Update rust crate serde to v1.0.216 (#141) - ([7d9827f](https://codeberg.org/ThetaDev/artifactview/commit/7d9827f9fc52aa88f19efa371e36877723328248)) +- *(deps)* Update rust crate thiserror to v2.0.7 (#142) - ([1e26d04](https://codeberg.org/ThetaDev/artifactview/commit/1e26d04b068f9c2e0a65a3dbcc43f66d118a6043)) +- *(deps)* Update rust crate axum-test to v16.4.1 (#143) - ([3244de4](https://codeberg.org/ThetaDev/artifactview/commit/3244de48fc2691898599ab20f2baa888db9f3c82)) +- *(deps)* Update rust crate zip to v2.2.2 (#144) - ([98ba21e](https://codeberg.org/ThetaDev/artifactview/commit/98ba21e7979bfbdd06fb46da8e45f97f71dc2c99)) +- *(deps)* Update rust crate proptest to v1.6.0 (#145) - ([d28f979](https://codeberg.org/ThetaDev/artifactview/commit/d28f9790b825b2af749e3fcd07718faa91c2a942)) +- *(deps)* Update rust crate comrak to 0.32.0 (#146) - ([f6b0e06](https://codeberg.org/ThetaDev/artifactview/commit/f6b0e06dc1a39311c4473e0f4c3c5742a352e00f)) +- *(deps)* Update rust crate thiserror to v2.0.8 (#147) - ([e87b71c](https://codeberg.org/ThetaDev/artifactview/commit/e87b71cc0df91f0ee71a88a3bd0127d4f8c74eea)) +- *(deps)* Update rust crate env_logger to v0.11.6 (#148) - ([8e295a9](https://codeberg.org/ThetaDev/artifactview/commit/8e295a96decd532fdd854ee8950a68d496c1617d)) +- *(deps)* Update rust crate serde_json to v1.0.134 (#149) - ([c90116c](https://codeberg.org/ThetaDev/artifactview/commit/c90116c9bac801e57062a462bd7a08a5fd6389b2)) +- *(deps)* Update rust crate thiserror to v2.0.9 (#150) - ([2a2a8e0](https://codeberg.org/ThetaDev/artifactview/commit/2a2a8e0b310b4ddcf15f20b1189bf768499f6b75)) +- *(deps)* Update rust crate serde to v1.0.217 (#151) - ([abe8f92](https://codeberg.org/ThetaDev/artifactview/commit/abe8f92ab8cdee926ca1ad4faf280427a9439e0e)) +- *(deps)* Update rust crate quick-xml to v0.37.2 (#152) - ([d778789](https://codeberg.org/ThetaDev/artifactview/commit/d7787899593d60243c1efa6dd036fc44e9c51868)) +- *(deps)* Update rust crate axum-extra to 0.10.0 (#154) - ([55621fb](https://codeberg.org/ThetaDev/artifactview/commit/55621fbbea51aed2234e43fa4b5ed61524ca1805)) +- *(deps)* Update rust crate rstest to 0.24.0 (#155) - ([b3cc2b5](https://codeberg.org/ThetaDev/artifactview/commit/b3cc2b53dc032d2821748895c983dde49c56eb65)) +- *(deps)* Update rust crate reqwest to v0.12.12 (#156) - ([cd73f48](https://codeberg.org/ThetaDev/artifactview/commit/cd73f4828f67d31dee356cb98a1ac45354e0e728)) +- *(deps)* Update rust crate comrak to 0.33.0 (#158) - ([1ce03ca](https://codeberg.org/ThetaDev/artifactview/commit/1ce03ca19f4032d5e88c8efbe83b98c45d98247d)) +- *(deps)* Update rust crate insta to v1.42.0 (#159) - ([5b138fa](https://codeberg.org/ThetaDev/artifactview/commit/5b138fae112d47a08b0940d61bd403047a8567fa)) +- *(deps)* Update rust crate pin-project to v1.1.8 (#161) - ([13ee5cc](https://codeberg.org/ThetaDev/artifactview/commit/13ee5cc2456180bfdc47a2d9e3a0dfe9a2dacd7d)) +- *(deps)* Update rust crate serde_json to v1.0.135 (#162) - ([8417ea3](https://codeberg.org/ThetaDev/artifactview/commit/8417ea34a0808d2ba25194021bbe38538ce52ddf)) +- *(deps)* Update rust crate thiserror to v2.0.10 (#163) - ([c2ee6cd](https://codeberg.org/ThetaDev/artifactview/commit/c2ee6cd84933e7cb2167b4cd34ec47f926105e59)) +- *(deps)* Update rust crate tokio to v1.43.0 (#164) - ([db790e0](https://codeberg.org/ThetaDev/artifactview/commit/db790e0811e9a67a63dc4708ca928efbcff1eb49)) +- *(deps)* Update rust crate thiserror to v2.0.11 (#165) - ([db0a4fd](https://codeberg.org/ThetaDev/artifactview/commit/db0a4fd5d48842ff48a375d241139ad91796422b)) +- *(deps)* Update rust crate futures-lite to v2.6.0 (#166) - ([c9a6d67](https://codeberg.org/ThetaDev/artifactview/commit/c9a6d6786f763825874520776653b311bc7bd5d8)) +- *(deps)* Update rust crate serde_json to v1.0.137 (#167) - ([558ce7d](https://codeberg.org/ThetaDev/artifactview/commit/558ce7daa8fbedac507f2d6e01961896eb8daac0)) +- *(deps)* Update rust crate comrak to 0.34.0 (#168) - ([a88977a](https://codeberg.org/ThetaDev/artifactview/commit/a88977af942d275422670984ddbefa53f8d61e13)) +- *(deps)* Update rust crate comrak to 0.35.0 (#169) - ([4042ded](https://codeberg.org/ThetaDev/artifactview/commit/4042ded5aee3763c293ffd264cb2428eb4266845)) +- *(deps)* Update rust crate insta to v1.42.1 (#170) - ([0c49fe7](https://codeberg.org/ThetaDev/artifactview/commit/0c49fe751a833ca684bfc39d19e2f1eb7ea269f5)) +- *(deps)* Update rust crate axum to 0.8.0 (#157) - ([2c2893d](https://codeberg.org/ThetaDev/artifactview/commit/2c2893da218737572e3943e2b72f7cec4ca6798f)) + + ## [v0.4.7](https://codeberg.org/ThetaDev/artifactview/compare/v0.4.6..v0.4.7) - 2024-10-12 ### ๐Ÿ› Bug Fixes diff --git a/Cargo.lock b/Cargo.lock index 3c574c2..79c3ffa 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -156,7 +156,7 @@ dependencies = [ [[package]] name = "artifactview" -version = "0.4.7" +version = "0.4.8" dependencies = [ "async_zip", "axum", diff --git a/Cargo.toml b/Cargo.toml index 9c1e914..a5581a2 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "artifactview" -version = "0.4.7" +version = "0.4.8" edition = "2021" authors = ["ThetaDev "] license = "MIT" From dfa1ab54e8fd72113ed25d0a4a7f368db27fb2d0 Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Tue, 28 Jan 2025 22:43:23 +0000 Subject: [PATCH 208/221] chore(deps): update rust crate axum-test to v17.2.0 (#171) Reviewed-on: https://codeberg.org/ThetaDev/artifactview/pulls/171 Co-authored-by: ThetaBot Co-committed-by: ThetaBot --- Cargo.lock | 186 ++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 128 insertions(+), 58 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 79c3ffa..a0c69e6 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -41,10 +41,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" dependencies = [ "cfg-if", - "getrandom", + "getrandom 0.2.15", "once_cell", "version_check", - "zerocopy", + "zerocopy 0.7.35", ] [[package]] @@ -169,7 +169,7 @@ dependencies = [ "futures-lite", "governor", "headers", - "http 1.2.0", + "http", "httpdate", "humansize", "insta", @@ -182,7 +182,7 @@ dependencies = [ "pin-project", "proptest", "quick_cache", - "rand", + "rand 0.8.5", "regex", "reqwest", "rstest", @@ -279,7 +279,7 @@ dependencies = [ "bytes", "form_urlencoded", "futures-util", - "http 1.2.0", + "http", "http-body", "http-body-util", "hyper", @@ -311,7 +311,7 @@ checksum = "df1362f362fd16024ae199c1970ce98f9661bf5ef94b9808fee734bc3698b733" dependencies = [ "bytes", "futures-util", - "http 1.2.0", + "http", "http-body", "http-body-util", "mime", @@ -334,7 +334,7 @@ dependencies = [ "bytes", "futures-util", "headers", - "http 1.2.0", + "http", "http-body", "http-body-util", "mime", @@ -347,9 +347,9 @@ dependencies = [ [[package]] name = "axum-test" -version = "17.1.0" +version = "17.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "375ec4f6db373ce6d696839249203c57049aefe1213cfa77bb2e12e10ed43d08" +checksum = "317c1f4ecc1e68e0ad5decb78478421055c963ce215e736ed97463fa609cd196" dependencies = [ "anyhow", "assert-json-diff", @@ -358,7 +358,7 @@ dependencies = [ "bytes", "bytesize", "cookie", - "http 1.2.0", + "http", "http-body-util", "hyper", "hyper-util", @@ -467,9 +467,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.8.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ac0150caa2ae65ca5bd83f25c7de183dea78d4d366469f148435e2acfbad0da" +checksum = "325918d6fe32f23b19878fe4b34794ae41fc19ddbe53b10571a4874d44ffd39b" [[package]] name = "bytesize" @@ -1035,7 +1035,19 @@ checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" dependencies = [ "cfg-if", "libc", - "wasi", + "wasi 0.11.0+wasi-snapshot-preview1", +] + +[[package]] +name = "getrandom" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71393ecc86efbf00e4ca13953979ba8b94cfe549a4b74cc26d8b62f4d8feac2b" +dependencies = [ + "cfg-if", + "libc", + "wasi 0.13.3+wasi-0.2.2", + "windows-targets", ] [[package]] @@ -1066,7 +1078,7 @@ dependencies = [ "parking_lot", "portable-atomic", "quanta", - "rand", + "rand 0.8.5", "smallvec 1.13.2", "spinning_top", ] @@ -1082,7 +1094,7 @@ dependencies = [ "fnv", "futures-core", "futures-sink", - "http 1.2.0", + "http", "indexmap", "slab", "tokio", @@ -1105,7 +1117,7 @@ dependencies = [ "base64 0.21.7", "bytes", "headers-core", - "http 1.2.0", + "http", "httpdate", "mime", "sha1", @@ -1117,7 +1129,7 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "54b4a22553d4242c49fddb9ba998a99962b5cc6f22cb5a3482bec22522403ce4" dependencies = [ - "http 1.2.0", + "http", ] [[package]] @@ -1149,17 +1161,6 @@ dependencies = [ "syn 2.0.87", ] -[[package]] -name = "http" -version = "0.2.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" -dependencies = [ - "bytes", - "fnv", - "itoa", -] - [[package]] name = "http" version = "1.2.0" @@ -1178,7 +1179,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" dependencies = [ "bytes", - "http 1.2.0", + "http", ] [[package]] @@ -1189,7 +1190,7 @@ checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f" dependencies = [ "bytes", "futures-util", - "http 1.2.0", + "http", "http-body", "pin-project-lite", ] @@ -1231,7 +1232,7 @@ dependencies = [ "futures-channel", "futures-util", "h2", - "http 1.2.0", + "http", "http-body", "httparse", "httpdate", @@ -1249,7 +1250,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5ee4be2c948921a1a5320b629c4193916ed787a7f7f293fd3f7f5a6c9de74155" dependencies = [ "futures-util", - "http 1.2.0", + "http", "hyper", "hyper-util", "rustls", @@ -1286,7 +1287,7 @@ dependencies = [ "bytes", "futures-channel", "futures-util", - "http 1.2.0", + "http", "http-body", "hyper", "pin-project-lite", @@ -1699,7 +1700,7 @@ checksum = "4569e456d394deccd22ce1c1913e6ea0e54519f577285001215d33557431afe4" dependencies = [ "hermit-abi", "libc", - "wasi", + "wasi 0.11.0+wasi-snapshot-preview1", "windows-sys", ] @@ -1934,7 +1935,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5d5285893bb5eb82e6aaf5d59ee909a06a16737a8970984dd7746ba9283498d6" dependencies = [ "phf_shared 0.10.0", - "rand", + "rand 0.8.5", ] [[package]] @@ -1944,7 +1945,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "48e4cc64c2ad9ebe670cb8fd69dd50ae301650392e81c05f9bfcb2d5bdbc24b0" dependencies = [ "phf_shared 0.11.2", - "rand", + "rand 0.8.5", ] [[package]] @@ -2080,8 +2081,8 @@ dependencies = [ "bitflags 2.6.0", "lazy_static", "num-traits", - "rand", - "rand_chacha", + "rand 0.8.5", + "rand_chacha 0.3.1", "rand_xorshift", "regex-syntax", "rusty-fork", @@ -2099,7 +2100,7 @@ dependencies = [ "libc", "once_cell", "raw-cpuid", - "wasi", + "wasi 0.11.0+wasi-snapshot-preview1", "web-sys", "winapi", ] @@ -2155,7 +2156,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ddf517c03a109db8100448a4be38d498df8a210a99fe0e1b9eaf39e78c640efe" dependencies = [ "bytes", - "rand", + "rand 0.8.5", "ring", "rustc-hash", "rustls", @@ -2193,8 +2194,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" dependencies = [ "libc", - "rand_chacha", - "rand_core", + "rand_chacha 0.3.1", + "rand_core 0.6.4", +] + +[[package]] +name = "rand" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3779b94aeb87e8bd4e834cee3650289ee9e0d5677f976ecdb6d219e5f4f6cd94" +dependencies = [ + "rand_chacha 0.9.0", + "rand_core 0.9.0", + "zerocopy 0.8.14", ] [[package]] @@ -2204,7 +2216,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" dependencies = [ "ppv-lite86", - "rand_core", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_chacha" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" +dependencies = [ + "ppv-lite86", + "rand_core 0.9.0", ] [[package]] @@ -2213,7 +2235,17 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom", + "getrandom 0.2.15", +] + +[[package]] +name = "rand_core" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b08f3c9802962f7e1b25113931d94f43ed9725bebc59db9d0c3e9a23b67e15ff" +dependencies = [ + "getrandom 0.3.0", + "zerocopy 0.8.14", ] [[package]] @@ -2222,7 +2254,7 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d25bf25ec5ae4a3f1b92f929810509a2f53d7dca2f50b794ff57e3face536c8f" dependencies = [ - "rand_core", + "rand_core 0.6.4", ] [[package]] @@ -2288,7 +2320,7 @@ dependencies = [ "bytes", "futures-core", "futures-util", - "http 1.2.0", + "http", "http-body", "http-body-util", "hyper", @@ -2329,12 +2361,12 @@ dependencies = [ [[package]] name = "reserve-port" -version = "2.0.1" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9838134a2bfaa8e1f40738fcc972ac799de6e0e06b5157acb95fc2b05a0ea283" +checksum = "359fc315ed556eb0e42ce74e76f4b1cd807b50fa6307f3de4e51f92dbe86e2d5" dependencies = [ "lazy_static", - "thiserror 1.0.68", + "thiserror 2.0.11", ] [[package]] @@ -2345,7 +2377,7 @@ checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" dependencies = [ "cc", "cfg-if", - "getrandom", + "getrandom 0.2.15", "libc", "spin", "untrusted", @@ -2381,18 +2413,18 @@ dependencies = [ [[package]] name = "rust-multipart-rfc7578_2" -version = "0.6.1" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03b748410c0afdef2ebbe3685a6a862e2ee937127cdaae623336a459451c8d57" +checksum = "bc4bb9e7c9abe5fa5f30c2d8f8fefb9e0080a2c1e3c2e567318d2907054b35d3" dependencies = [ "bytes", "futures-core", "futures-util", - "http 0.2.12", + "http", "mime", "mime_guess", - "rand", - "thiserror 1.0.68", + "rand 0.9.0", + "thiserror 2.0.11", ] [[package]] @@ -3139,7 +3171,7 @@ checksum = "403fa3b783d4b626a8ad51d766ab03cb6d2dbfc46b1c5d4448395e6628dc9697" dependencies = [ "bitflags 2.6.0", "bytes", - "http 1.2.0", + "http", "http-body", "pin-project-lite", "tower-layer", @@ -3404,6 +3436,15 @@ version = "0.11.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +[[package]] +name = "wasi" +version = "0.13.3+wasi-0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26816d2e1a4a36a2940b96c5296ce403917633dff8f3440e9b236ed6f6bacad2" +dependencies = [ + "wit-bindgen-rt", +] + [[package]] name = "wasm-bindgen" version = "0.2.92" @@ -3645,6 +3686,15 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" +[[package]] +name = "wit-bindgen-rt" +version = "0.33.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3268f3d866458b787f390cf61f4bbb563b922d091359f9608842999eaee3943c" +dependencies = [ + "bitflags 2.6.0", +] + [[package]] name = "write16" version = "1.0.0" @@ -3803,7 +3853,16 @@ version = "0.7.35" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" dependencies = [ - "zerocopy-derive", + "zerocopy-derive 0.7.35", +] + +[[package]] +name = "zerocopy" +version = "0.8.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a367f292d93d4eab890745e75a778da40909cab4d6ff8173693812f79c4a2468" +dependencies = [ + "zerocopy-derive 0.8.14", ] [[package]] @@ -3817,6 +3876,17 @@ dependencies = [ "syn 2.0.87", ] +[[package]] +name = "zerocopy-derive" +version = "0.8.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3931cb58c62c13adec22e38686b559c86a30565e16ad6e8510a337cedc611e1" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", +] + [[package]] name = "zerofrom" version = "0.1.4" @@ -3900,7 +3970,7 @@ dependencies = [ "lzma-rs", "memchr", "pbkdf2", - "rand", + "rand 0.8.5", "sha1", "thiserror 2.0.11", "time", From de2e2fc7b174b2cbe8440c3a17d8002d6edbba73 Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Tue, 28 Jan 2025 22:52:21 +0000 Subject: [PATCH 209/221] chore(deps): update rust crate serde_json to v1.0.138 (#173) Reviewed-on: https://codeberg.org/ThetaDev/artifactview/pulls/173 Co-authored-by: ThetaBot Co-committed-by: ThetaBot --- Cargo.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index a0c69e6..d4c3f3f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2692,9 +2692,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.137" +version = "1.0.138" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "930cfb6e6abf99298aaad7d29abbef7a9999a9a8806a40088f55f0dcec03146b" +checksum = "d434192e7da787e94a6ea7e9670b26a036d0ca41e0b7efb2676dd32bae872949" dependencies = [ "itoa", "memchr", From aeebe74ddd07e1d8323f495a5065b8a9f06c2bc9 Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Sat, 1 Feb 2025 00:01:20 +0000 Subject: [PATCH 210/221] chore(deps): pin dependencies (#174) --- Cargo.lock | 233 +++++++++++---------------------- Cargo.toml | 16 +-- crates/async_zip/Cargo.toml | 8 +- crates/envy/Cargo.toml | 2 +- crates/junit-parser/Cargo.toml | 6 +- 5 files changed, 90 insertions(+), 175 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index d4c3f3f..290a76b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -17,12 +17,6 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" -[[package]] -name = "adler2" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" - [[package]] name = "aes" version = "0.8.4" @@ -41,10 +35,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" dependencies = [ "cfg-if", - "getrandom 0.2.15", + "getrandom", "once_cell", "version_check", - "zerocopy 0.7.35", + "zerocopy", ] [[package]] @@ -169,7 +163,7 @@ dependencies = [ "futures-lite", "governor", "headers", - "http", + "http 1.2.0", "httpdate", "humansize", "insta", @@ -182,7 +176,7 @@ dependencies = [ "pin-project", "proptest", "quick_cache", - "rand 0.8.5", + "rand", "regex", "reqwest", "rstest", @@ -279,7 +273,7 @@ dependencies = [ "bytes", "form_urlencoded", "futures-util", - "http", + "http 1.2.0", "http-body", "http-body-util", "hyper", @@ -311,7 +305,7 @@ checksum = "df1362f362fd16024ae199c1970ce98f9661bf5ef94b9808fee734bc3698b733" dependencies = [ "bytes", "futures-util", - "http", + "http 1.2.0", "http-body", "http-body-util", "mime", @@ -334,7 +328,7 @@ dependencies = [ "bytes", "futures-util", "headers", - "http", + "http 1.2.0", "http-body", "http-body-util", "mime", @@ -347,9 +341,9 @@ dependencies = [ [[package]] name = "axum-test" -version = "17.2.0" +version = "17.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "317c1f4ecc1e68e0ad5decb78478421055c963ce215e736ed97463fa609cd196" +checksum = "be210d44dd70e9297f91a8bb3bd2223d3f7194bf0319cb0c44297d074d35291d" dependencies = [ "anyhow", "assert-json-diff", @@ -358,7 +352,7 @@ dependencies = [ "bytes", "bytesize", "cookie", - "http", + "http 1.2.0", "http-body-util", "hyper", "hyper-util", @@ -385,7 +379,7 @@ dependencies = [ "cc", "cfg-if", "libc", - "miniz_oxide 0.7.4", + "miniz_oxide", "object", "rustc-demangle", ] @@ -413,18 +407,18 @@ dependencies = [ [[package]] name = "bit-set" -version = "0.8.0" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3" +checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1" dependencies = [ "bit-vec", ] [[package]] name = "bit-vec" -version = "0.8.0" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" +checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" [[package]] name = "bitflags" @@ -829,9 +823,9 @@ dependencies = [ [[package]] name = "env_logger" -version = "0.11.6" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcaee3d8e3cfc3fd92428d477bc97fc29ec8716d180c0d74c643bb26166660e0" +checksum = "6c012a26a7f605efc424dd53697843a72be7dc86ad2d01f7814337794a12231d" dependencies = [ "anstream", "anstyle", @@ -871,12 +865,12 @@ checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a" [[package]] name = "flate2" -version = "1.0.35" +version = "1.0.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c936bfdafb507ebbf50b8074c54fa31c5be9a1e7e5f467dd659697041407d07c" +checksum = "5f54427cfd1c7829e2a139fcefea601bf088ebca651d2bf53ebc600eac295dae" dependencies = [ "crc32fast", - "miniz_oxide 0.8.0", + "miniz_oxide", ] [[package]] @@ -1035,19 +1029,7 @@ checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" dependencies = [ "cfg-if", "libc", - "wasi 0.11.0+wasi-snapshot-preview1", -] - -[[package]] -name = "getrandom" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71393ecc86efbf00e4ca13953979ba8b94cfe549a4b74cc26d8b62f4d8feac2b" -dependencies = [ - "cfg-if", - "libc", - "wasi 0.13.3+wasi-0.2.2", - "windows-targets", + "wasi", ] [[package]] @@ -1078,7 +1060,7 @@ dependencies = [ "parking_lot", "portable-atomic", "quanta", - "rand 0.8.5", + "rand", "smallvec 1.13.2", "spinning_top", ] @@ -1094,7 +1076,7 @@ dependencies = [ "fnv", "futures-core", "futures-sink", - "http", + "http 1.2.0", "indexmap", "slab", "tokio", @@ -1117,7 +1099,7 @@ dependencies = [ "base64 0.21.7", "bytes", "headers-core", - "http", + "http 1.2.0", "httpdate", "mime", "sha1", @@ -1129,7 +1111,7 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "54b4a22553d4242c49fddb9ba998a99962b5cc6f22cb5a3482bec22522403ce4" dependencies = [ - "http", + "http 1.2.0", ] [[package]] @@ -1161,6 +1143,17 @@ dependencies = [ "syn 2.0.87", ] +[[package]] +name = "http" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + [[package]] name = "http" version = "1.2.0" @@ -1179,7 +1172,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" dependencies = [ "bytes", - "http", + "http 1.2.0", ] [[package]] @@ -1190,7 +1183,7 @@ checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f" dependencies = [ "bytes", "futures-util", - "http", + "http 1.2.0", "http-body", "pin-project-lite", ] @@ -1232,7 +1225,7 @@ dependencies = [ "futures-channel", "futures-util", "h2", - "http", + "http 1.2.0", "http-body", "httparse", "httpdate", @@ -1250,7 +1243,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5ee4be2c948921a1a5320b629c4193916ed787a7f7f293fd3f7f5a6c9de74155" dependencies = [ "futures-util", - "http", + "http 1.2.0", "hyper", "hyper-util", "rustls", @@ -1287,7 +1280,7 @@ dependencies = [ "bytes", "futures-channel", "futures-util", - "http", + "http 1.2.0", "http-body", "hyper", "pin-project-lite", @@ -1480,14 +1473,13 @@ dependencies = [ [[package]] name = "insta" -version = "1.42.1" +version = "1.39.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71c1b125e30d93896b365e156c33dadfffab45ee8400afcbba4752f59de08a86" +checksum = "810ae6042d48e2c9e9215043563a58a80b877bc863228a74cf10c49d4620a6f5" dependencies = [ "console", + "lazy_static", "linked-hash-map", - "once_cell", - "pin-project", "serde", "similar", ] @@ -1683,15 +1675,6 @@ dependencies = [ "adler", ] -[[package]] -name = "miniz_oxide" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1" -dependencies = [ - "adler2", -] - [[package]] name = "mio" version = "1.0.1" @@ -1700,7 +1683,7 @@ checksum = "4569e456d394deccd22ce1c1913e6ea0e54519f577285001215d33557431afe4" dependencies = [ "hermit-abi", "libc", - "wasi 0.11.0+wasi-snapshot-preview1", + "wasi", "windows-sys", ] @@ -1768,6 +1751,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" dependencies = [ "autocfg", + "libm", ] [[package]] @@ -1781,9 +1765,9 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.20.2" +version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" +checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" [[package]] name = "onig" @@ -1935,7 +1919,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5d5285893bb5eb82e6aaf5d59ee909a06a16737a8970984dd7746ba9283498d6" dependencies = [ "phf_shared 0.10.0", - "rand 0.8.5", + "rand", ] [[package]] @@ -1945,7 +1929,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "48e4cc64c2ad9ebe670cb8fd69dd50ae301650392e81c05f9bfcb2d5bdbc24b0" dependencies = [ "phf_shared 0.11.2", - "rand 0.8.5", + "rand", ] [[package]] @@ -2072,17 +2056,17 @@ dependencies = [ [[package]] name = "proptest" -version = "1.6.0" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14cae93065090804185d3b75f0bf93b8eeda30c7a9b4a33d3bdb3988d6229e50" +checksum = "31b476131c3c86cb68032fdc5cb6d5a1045e3e42d96b69fa599fd77701e1f5bf" dependencies = [ "bit-set", "bit-vec", "bitflags 2.6.0", "lazy_static", "num-traits", - "rand 0.8.5", - "rand_chacha 0.3.1", + "rand", + "rand_chacha", "rand_xorshift", "regex-syntax", "rusty-fork", @@ -2100,7 +2084,7 @@ dependencies = [ "libc", "once_cell", "raw-cpuid", - "wasi 0.11.0+wasi-snapshot-preview1", + "wasi", "web-sys", "winapi", ] @@ -2156,7 +2140,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ddf517c03a109db8100448a4be38d498df8a210a99fe0e1b9eaf39e78c640efe" dependencies = [ "bytes", - "rand 0.8.5", + "rand", "ring", "rustc-hash", "rustls", @@ -2194,19 +2178,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" dependencies = [ "libc", - "rand_chacha 0.3.1", - "rand_core 0.6.4", -] - -[[package]] -name = "rand" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3779b94aeb87e8bd4e834cee3650289ee9e0d5677f976ecdb6d219e5f4f6cd94" -dependencies = [ - "rand_chacha 0.9.0", - "rand_core 0.9.0", - "zerocopy 0.8.14", + "rand_chacha", + "rand_core", ] [[package]] @@ -2216,17 +2189,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" dependencies = [ "ppv-lite86", - "rand_core 0.6.4", -] - -[[package]] -name = "rand_chacha" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" -dependencies = [ - "ppv-lite86", - "rand_core 0.9.0", + "rand_core", ] [[package]] @@ -2235,17 +2198,7 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom 0.2.15", -] - -[[package]] -name = "rand_core" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b08f3c9802962f7e1b25113931d94f43ed9725bebc59db9d0c3e9a23b67e15ff" -dependencies = [ - "getrandom 0.3.0", - "zerocopy 0.8.14", + "getrandom", ] [[package]] @@ -2254,7 +2207,7 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d25bf25ec5ae4a3f1b92f929810509a2f53d7dca2f50b794ff57e3face536c8f" dependencies = [ - "rand_core 0.6.4", + "rand_core", ] [[package]] @@ -2320,7 +2273,7 @@ dependencies = [ "bytes", "futures-core", "futures-util", - "http", + "http 1.2.0", "http-body", "http-body-util", "hyper", @@ -2377,7 +2330,7 @@ checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" dependencies = [ "cc", "cfg-if", - "getrandom 0.2.15", + "getrandom", "libc", "spin", "untrusted", @@ -2413,18 +2366,18 @@ dependencies = [ [[package]] name = "rust-multipart-rfc7578_2" -version = "0.7.0" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc4bb9e7c9abe5fa5f30c2d8f8fefb9e0080a2c1e3c2e567318d2907054b35d3" +checksum = "03b748410c0afdef2ebbe3685a6a862e2ee937127cdaae623336a459451c8d57" dependencies = [ "bytes", "futures-core", "futures-util", - "http", + "http 0.2.12", "mime", "mime_guess", - "rand 0.9.0", - "thiserror 2.0.11", + "rand", + "thiserror 1.0.68", ] [[package]] @@ -3171,7 +3124,7 @@ checksum = "403fa3b783d4b626a8ad51d766ab03cb6d2dbfc46b1c5d4448395e6628dc9697" dependencies = [ "bitflags 2.6.0", "bytes", - "http", + "http 1.2.0", "http-body", "pin-project-lite", "tower-layer", @@ -3436,15 +3389,6 @@ version = "0.11.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" -[[package]] -name = "wasi" -version = "0.13.3+wasi-0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26816d2e1a4a36a2940b96c5296ce403917633dff8f3440e9b236ed6f6bacad2" -dependencies = [ - "wit-bindgen-rt", -] - [[package]] name = "wasm-bindgen" version = "0.2.92" @@ -3686,15 +3630,6 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" -[[package]] -name = "wit-bindgen-rt" -version = "0.33.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3268f3d866458b787f390cf61f4bbb563b922d091359f9608842999eaee3943c" -dependencies = [ - "bitflags 2.6.0", -] - [[package]] name = "write16" version = "1.0.0" @@ -3853,16 +3788,7 @@ version = "0.7.35" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" dependencies = [ - "zerocopy-derive 0.7.35", -] - -[[package]] -name = "zerocopy" -version = "0.8.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a367f292d93d4eab890745e75a778da40909cab4d6ff8173693812f79c4a2468" -dependencies = [ - "zerocopy-derive 0.8.14", + "zerocopy-derive", ] [[package]] @@ -3876,17 +3802,6 @@ dependencies = [ "syn 2.0.87", ] -[[package]] -name = "zerocopy-derive" -version = "0.8.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3931cb58c62c13adec22e38686b559c86a30565e16ad6e8510a337cedc611e1" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.87", -] - [[package]] name = "zerofrom" version = "0.1.4" @@ -3952,9 +3867,9 @@ dependencies = [ [[package]] name = "zip" -version = "2.2.2" +version = "2.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae9c1ea7b3a5e1f4b922ff856a129881167511563dc219869afe3787fc0c1a45" +checksum = "b895748a3ebcb69b9d38dcfdf21760859a4b0d0b0015277640c2ef4c69640e6f" dependencies = [ "aes", "arbitrary", @@ -3970,9 +3885,9 @@ dependencies = [ "lzma-rs", "memchr", "pbkdf2", - "rand 0.8.5", + "rand", "sha1", - "thiserror 2.0.11", + "thiserror 1.0.68", "time", "zeroize", "zopfli", diff --git a/Cargo.toml b/Cargo.toml index a5581a2..7325fb5 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -80,14 +80,14 @@ yarte = { version = "0.15.7", features = ["json"] } yarte_helpers = "0.15.8" [dev-dependencies] -axum-test = "17.0.0" -flate2 = "1.0.30" -httpdate = "1.0.3" -insta = { version = "1.39.0", features = ["json"] } -proptest = "1.4.0" -rstest = { version = "0.24.0", default-features = false } -scraper = "0.22.0" -temp_testdir = "0.2.3" +axum-test = "=17.0.0" +flate2 = "=1.0.30" +httpdate = "=1.0.3" +insta = { version = "=1.39.0", features = ["json"] } +proptest = "=1.4.0" +rstest = { version = "=0.24.0", default-features = false } +scraper = "=0.22.0" +temp_testdir = "=0.2.3" [workspace] members = [".", "crates/*"] diff --git a/crates/async_zip/Cargo.toml b/crates/async_zip/Cargo.toml index 5b04105..79bb31a 100644 --- a/crates/async_zip/Cargo.toml +++ b/crates/async_zip/Cargo.toml @@ -46,10 +46,10 @@ tokio-util = { version = "0.7", features = ["compat"], optional = true } [dev-dependencies] # tests -tokio = { version = "1", features = ["full"] } -tokio-util = { version = "0.7", features = ["compat"] } -env_logger = "0.11.2" -zip = "2.1.5" +tokio = { version = "=1.43.0", features = ["full"] } +tokio-util = { version = "=0.7.13", features = ["compat"] } +env_logger = "=0.11.2" +zip = "=2.1.5" # shared across multiple examples # anyhow = "1" diff --git a/crates/envy/Cargo.toml b/crates/envy/Cargo.toml index 531d999..bebf0ed 100644 --- a/crates/envy/Cargo.toml +++ b/crates/envy/Cargo.toml @@ -18,4 +18,4 @@ categories = [ serde = "1.0" [dev-dependencies] -serde = { version = "1.0", features = ["derive"] } +serde = { version = "=1.0.217", features = ["derive"] } diff --git a/crates/junit-parser/Cargo.toml b/crates/junit-parser/Cargo.toml index 290cda5..a4e759b 100644 --- a/crates/junit-parser/Cargo.toml +++ b/crates/junit-parser/Cargo.toml @@ -13,6 +13,6 @@ time = { version = "0.3.36", features = ["parsing", "serde-well-known"] } serde = { version = "1.0", features = ["derive"] } [dev-dependencies] -insta = { version = "1.39.0", features = ["json"] } -once_cell = "1.19.0" -path_macro = "1.0.0" +insta = { version = "=1.39.0", features = ["json"] } +once_cell = "=1.19.0" +path_macro = "=1.0.0" From a970d8cea779690e150ddbcc416d26a2efe4a606 Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Sun, 2 Feb 2025 00:02:51 +0000 Subject: [PATCH 211/221] chore(deps): update rust crate env_logger to v0.11.6 (#175) --- Cargo.lock | 4 ++-- crates/async_zip/Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 290a76b..832e38a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -823,9 +823,9 @@ dependencies = [ [[package]] name = "env_logger" -version = "0.11.2" +version = "0.11.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c012a26a7f605efc424dd53697843a72be7dc86ad2d01f7814337794a12231d" +checksum = "dcaee3d8e3cfc3fd92428d477bc97fc29ec8716d180c0d74c643bb26166660e0" dependencies = [ "anstream", "anstyle", diff --git a/crates/async_zip/Cargo.toml b/crates/async_zip/Cargo.toml index 79bb31a..282cae0 100644 --- a/crates/async_zip/Cargo.toml +++ b/crates/async_zip/Cargo.toml @@ -48,7 +48,7 @@ tokio-util = { version = "0.7", features = ["compat"], optional = true } # tests tokio = { version = "=1.43.0", features = ["full"] } tokio-util = { version = "=0.7.13", features = ["compat"] } -env_logger = "=0.11.2" +env_logger = "=0.11.6" zip = "=2.1.5" # shared across multiple examples From 97852ced9557b354642a703117b2a853e8f0c626 Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Sun, 2 Feb 2025 15:50:22 +0000 Subject: [PATCH 212/221] chore(deps): update rust crate zip to v2.2.2 (#181) Reviewed-on: https://codeberg.org/ThetaDev/artifactview/pulls/181 Co-authored-by: ThetaBot Co-committed-by: ThetaBot --- Cargo.lock | 6 +++--- crates/async_zip/Cargo.toml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 832e38a..2203dd2 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3867,9 +3867,9 @@ dependencies = [ [[package]] name = "zip" -version = "2.1.5" +version = "2.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b895748a3ebcb69b9d38dcfdf21760859a4b0d0b0015277640c2ef4c69640e6f" +checksum = "ae9c1ea7b3a5e1f4b922ff856a129881167511563dc219869afe3787fc0c1a45" dependencies = [ "aes", "arbitrary", @@ -3887,7 +3887,7 @@ dependencies = [ "pbkdf2", "rand", "sha1", - "thiserror 1.0.68", + "thiserror 2.0.11", "time", "zeroize", "zopfli", diff --git a/crates/async_zip/Cargo.toml b/crates/async_zip/Cargo.toml index 282cae0..d442746 100644 --- a/crates/async_zip/Cargo.toml +++ b/crates/async_zip/Cargo.toml @@ -49,7 +49,7 @@ tokio-util = { version = "0.7", features = ["compat"], optional = true } tokio = { version = "=1.43.0", features = ["full"] } tokio-util = { version = "=0.7.13", features = ["compat"] } env_logger = "=0.11.6" -zip = "=2.1.5" +zip = "=2.2.2" # shared across multiple examples # anyhow = "1" From f58439aa1a48236d7fea3f002695ddb6e6f2cce3 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sun, 2 Feb 2025 16:55:52 +0100 Subject: [PATCH 213/221] Revert "chore(deps): pin dependencies (#174)" This reverts commit aeebe74ddd07e1d8323f495a5065b8a9f06c2bc9. --- Cargo.lock | 223 +++++++++++++++++++++++---------- Cargo.toml | 16 +-- crates/async_zip/Cargo.toml | 8 +- crates/envy/Cargo.toml | 2 +- crates/junit-parser/Cargo.toml | 6 +- 5 files changed, 170 insertions(+), 85 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 2203dd2..d4c3f3f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -17,6 +17,12 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" +[[package]] +name = "adler2" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" + [[package]] name = "aes" version = "0.8.4" @@ -35,10 +41,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" dependencies = [ "cfg-if", - "getrandom", + "getrandom 0.2.15", "once_cell", "version_check", - "zerocopy", + "zerocopy 0.7.35", ] [[package]] @@ -163,7 +169,7 @@ dependencies = [ "futures-lite", "governor", "headers", - "http 1.2.0", + "http", "httpdate", "humansize", "insta", @@ -176,7 +182,7 @@ dependencies = [ "pin-project", "proptest", "quick_cache", - "rand", + "rand 0.8.5", "regex", "reqwest", "rstest", @@ -273,7 +279,7 @@ dependencies = [ "bytes", "form_urlencoded", "futures-util", - "http 1.2.0", + "http", "http-body", "http-body-util", "hyper", @@ -305,7 +311,7 @@ checksum = "df1362f362fd16024ae199c1970ce98f9661bf5ef94b9808fee734bc3698b733" dependencies = [ "bytes", "futures-util", - "http 1.2.0", + "http", "http-body", "http-body-util", "mime", @@ -328,7 +334,7 @@ dependencies = [ "bytes", "futures-util", "headers", - "http 1.2.0", + "http", "http-body", "http-body-util", "mime", @@ -341,9 +347,9 @@ dependencies = [ [[package]] name = "axum-test" -version = "17.0.0" +version = "17.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be210d44dd70e9297f91a8bb3bd2223d3f7194bf0319cb0c44297d074d35291d" +checksum = "317c1f4ecc1e68e0ad5decb78478421055c963ce215e736ed97463fa609cd196" dependencies = [ "anyhow", "assert-json-diff", @@ -352,7 +358,7 @@ dependencies = [ "bytes", "bytesize", "cookie", - "http 1.2.0", + "http", "http-body-util", "hyper", "hyper-util", @@ -379,7 +385,7 @@ dependencies = [ "cc", "cfg-if", "libc", - "miniz_oxide", + "miniz_oxide 0.7.4", "object", "rustc-demangle", ] @@ -407,18 +413,18 @@ dependencies = [ [[package]] name = "bit-set" -version = "0.5.3" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1" +checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3" dependencies = [ "bit-vec", ] [[package]] name = "bit-vec" -version = "0.6.3" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" +checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" [[package]] name = "bitflags" @@ -865,12 +871,12 @@ checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a" [[package]] name = "flate2" -version = "1.0.30" +version = "1.0.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f54427cfd1c7829e2a139fcefea601bf088ebca651d2bf53ebc600eac295dae" +checksum = "c936bfdafb507ebbf50b8074c54fa31c5be9a1e7e5f467dd659697041407d07c" dependencies = [ "crc32fast", - "miniz_oxide", + "miniz_oxide 0.8.0", ] [[package]] @@ -1029,7 +1035,19 @@ checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" dependencies = [ "cfg-if", "libc", - "wasi", + "wasi 0.11.0+wasi-snapshot-preview1", +] + +[[package]] +name = "getrandom" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71393ecc86efbf00e4ca13953979ba8b94cfe549a4b74cc26d8b62f4d8feac2b" +dependencies = [ + "cfg-if", + "libc", + "wasi 0.13.3+wasi-0.2.2", + "windows-targets", ] [[package]] @@ -1060,7 +1078,7 @@ dependencies = [ "parking_lot", "portable-atomic", "quanta", - "rand", + "rand 0.8.5", "smallvec 1.13.2", "spinning_top", ] @@ -1076,7 +1094,7 @@ dependencies = [ "fnv", "futures-core", "futures-sink", - "http 1.2.0", + "http", "indexmap", "slab", "tokio", @@ -1099,7 +1117,7 @@ dependencies = [ "base64 0.21.7", "bytes", "headers-core", - "http 1.2.0", + "http", "httpdate", "mime", "sha1", @@ -1111,7 +1129,7 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "54b4a22553d4242c49fddb9ba998a99962b5cc6f22cb5a3482bec22522403ce4" dependencies = [ - "http 1.2.0", + "http", ] [[package]] @@ -1143,17 +1161,6 @@ dependencies = [ "syn 2.0.87", ] -[[package]] -name = "http" -version = "0.2.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" -dependencies = [ - "bytes", - "fnv", - "itoa", -] - [[package]] name = "http" version = "1.2.0" @@ -1172,7 +1179,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" dependencies = [ "bytes", - "http 1.2.0", + "http", ] [[package]] @@ -1183,7 +1190,7 @@ checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f" dependencies = [ "bytes", "futures-util", - "http 1.2.0", + "http", "http-body", "pin-project-lite", ] @@ -1225,7 +1232,7 @@ dependencies = [ "futures-channel", "futures-util", "h2", - "http 1.2.0", + "http", "http-body", "httparse", "httpdate", @@ -1243,7 +1250,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5ee4be2c948921a1a5320b629c4193916ed787a7f7f293fd3f7f5a6c9de74155" dependencies = [ "futures-util", - "http 1.2.0", + "http", "hyper", "hyper-util", "rustls", @@ -1280,7 +1287,7 @@ dependencies = [ "bytes", "futures-channel", "futures-util", - "http 1.2.0", + "http", "http-body", "hyper", "pin-project-lite", @@ -1473,13 +1480,14 @@ dependencies = [ [[package]] name = "insta" -version = "1.39.0" +version = "1.42.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "810ae6042d48e2c9e9215043563a58a80b877bc863228a74cf10c49d4620a6f5" +checksum = "71c1b125e30d93896b365e156c33dadfffab45ee8400afcbba4752f59de08a86" dependencies = [ "console", - "lazy_static", "linked-hash-map", + "once_cell", + "pin-project", "serde", "similar", ] @@ -1675,6 +1683,15 @@ dependencies = [ "adler", ] +[[package]] +name = "miniz_oxide" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1" +dependencies = [ + "adler2", +] + [[package]] name = "mio" version = "1.0.1" @@ -1683,7 +1700,7 @@ checksum = "4569e456d394deccd22ce1c1913e6ea0e54519f577285001215d33557431afe4" dependencies = [ "hermit-abi", "libc", - "wasi", + "wasi 0.11.0+wasi-snapshot-preview1", "windows-sys", ] @@ -1751,7 +1768,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" dependencies = [ "autocfg", - "libm", ] [[package]] @@ -1765,9 +1781,9 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.19.0" +version = "1.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" +checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" [[package]] name = "onig" @@ -1919,7 +1935,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5d5285893bb5eb82e6aaf5d59ee909a06a16737a8970984dd7746ba9283498d6" dependencies = [ "phf_shared 0.10.0", - "rand", + "rand 0.8.5", ] [[package]] @@ -1929,7 +1945,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "48e4cc64c2ad9ebe670cb8fd69dd50ae301650392e81c05f9bfcb2d5bdbc24b0" dependencies = [ "phf_shared 0.11.2", - "rand", + "rand 0.8.5", ] [[package]] @@ -2056,17 +2072,17 @@ dependencies = [ [[package]] name = "proptest" -version = "1.4.0" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31b476131c3c86cb68032fdc5cb6d5a1045e3e42d96b69fa599fd77701e1f5bf" +checksum = "14cae93065090804185d3b75f0bf93b8eeda30c7a9b4a33d3bdb3988d6229e50" dependencies = [ "bit-set", "bit-vec", "bitflags 2.6.0", "lazy_static", "num-traits", - "rand", - "rand_chacha", + "rand 0.8.5", + "rand_chacha 0.3.1", "rand_xorshift", "regex-syntax", "rusty-fork", @@ -2084,7 +2100,7 @@ dependencies = [ "libc", "once_cell", "raw-cpuid", - "wasi", + "wasi 0.11.0+wasi-snapshot-preview1", "web-sys", "winapi", ] @@ -2140,7 +2156,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ddf517c03a109db8100448a4be38d498df8a210a99fe0e1b9eaf39e78c640efe" dependencies = [ "bytes", - "rand", + "rand 0.8.5", "ring", "rustc-hash", "rustls", @@ -2178,8 +2194,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" dependencies = [ "libc", - "rand_chacha", - "rand_core", + "rand_chacha 0.3.1", + "rand_core 0.6.4", +] + +[[package]] +name = "rand" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3779b94aeb87e8bd4e834cee3650289ee9e0d5677f976ecdb6d219e5f4f6cd94" +dependencies = [ + "rand_chacha 0.9.0", + "rand_core 0.9.0", + "zerocopy 0.8.14", ] [[package]] @@ -2189,7 +2216,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" dependencies = [ "ppv-lite86", - "rand_core", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_chacha" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" +dependencies = [ + "ppv-lite86", + "rand_core 0.9.0", ] [[package]] @@ -2198,7 +2235,17 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom", + "getrandom 0.2.15", +] + +[[package]] +name = "rand_core" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b08f3c9802962f7e1b25113931d94f43ed9725bebc59db9d0c3e9a23b67e15ff" +dependencies = [ + "getrandom 0.3.0", + "zerocopy 0.8.14", ] [[package]] @@ -2207,7 +2254,7 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d25bf25ec5ae4a3f1b92f929810509a2f53d7dca2f50b794ff57e3face536c8f" dependencies = [ - "rand_core", + "rand_core 0.6.4", ] [[package]] @@ -2273,7 +2320,7 @@ dependencies = [ "bytes", "futures-core", "futures-util", - "http 1.2.0", + "http", "http-body", "http-body-util", "hyper", @@ -2330,7 +2377,7 @@ checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" dependencies = [ "cc", "cfg-if", - "getrandom", + "getrandom 0.2.15", "libc", "spin", "untrusted", @@ -2366,18 +2413,18 @@ dependencies = [ [[package]] name = "rust-multipart-rfc7578_2" -version = "0.6.1" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03b748410c0afdef2ebbe3685a6a862e2ee937127cdaae623336a459451c8d57" +checksum = "bc4bb9e7c9abe5fa5f30c2d8f8fefb9e0080a2c1e3c2e567318d2907054b35d3" dependencies = [ "bytes", "futures-core", "futures-util", - "http 0.2.12", + "http", "mime", "mime_guess", - "rand", - "thiserror 1.0.68", + "rand 0.9.0", + "thiserror 2.0.11", ] [[package]] @@ -3124,7 +3171,7 @@ checksum = "403fa3b783d4b626a8ad51d766ab03cb6d2dbfc46b1c5d4448395e6628dc9697" dependencies = [ "bitflags 2.6.0", "bytes", - "http 1.2.0", + "http", "http-body", "pin-project-lite", "tower-layer", @@ -3389,6 +3436,15 @@ version = "0.11.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +[[package]] +name = "wasi" +version = "0.13.3+wasi-0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26816d2e1a4a36a2940b96c5296ce403917633dff8f3440e9b236ed6f6bacad2" +dependencies = [ + "wit-bindgen-rt", +] + [[package]] name = "wasm-bindgen" version = "0.2.92" @@ -3630,6 +3686,15 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" +[[package]] +name = "wit-bindgen-rt" +version = "0.33.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3268f3d866458b787f390cf61f4bbb563b922d091359f9608842999eaee3943c" +dependencies = [ + "bitflags 2.6.0", +] + [[package]] name = "write16" version = "1.0.0" @@ -3788,7 +3853,16 @@ version = "0.7.35" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" dependencies = [ - "zerocopy-derive", + "zerocopy-derive 0.7.35", +] + +[[package]] +name = "zerocopy" +version = "0.8.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a367f292d93d4eab890745e75a778da40909cab4d6ff8173693812f79c4a2468" +dependencies = [ + "zerocopy-derive 0.8.14", ] [[package]] @@ -3802,6 +3876,17 @@ dependencies = [ "syn 2.0.87", ] +[[package]] +name = "zerocopy-derive" +version = "0.8.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3931cb58c62c13adec22e38686b559c86a30565e16ad6e8510a337cedc611e1" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", +] + [[package]] name = "zerofrom" version = "0.1.4" @@ -3885,7 +3970,7 @@ dependencies = [ "lzma-rs", "memchr", "pbkdf2", - "rand", + "rand 0.8.5", "sha1", "thiserror 2.0.11", "time", diff --git a/Cargo.toml b/Cargo.toml index 7325fb5..a5581a2 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -80,14 +80,14 @@ yarte = { version = "0.15.7", features = ["json"] } yarte_helpers = "0.15.8" [dev-dependencies] -axum-test = "=17.0.0" -flate2 = "=1.0.30" -httpdate = "=1.0.3" -insta = { version = "=1.39.0", features = ["json"] } -proptest = "=1.4.0" -rstest = { version = "=0.24.0", default-features = false } -scraper = "=0.22.0" -temp_testdir = "=0.2.3" +axum-test = "17.0.0" +flate2 = "1.0.30" +httpdate = "1.0.3" +insta = { version = "1.39.0", features = ["json"] } +proptest = "1.4.0" +rstest = { version = "0.24.0", default-features = false } +scraper = "0.22.0" +temp_testdir = "0.2.3" [workspace] members = [".", "crates/*"] diff --git a/crates/async_zip/Cargo.toml b/crates/async_zip/Cargo.toml index d442746..bb672fc 100644 --- a/crates/async_zip/Cargo.toml +++ b/crates/async_zip/Cargo.toml @@ -46,10 +46,10 @@ tokio-util = { version = "0.7", features = ["compat"], optional = true } [dev-dependencies] # tests -tokio = { version = "=1.43.0", features = ["full"] } -tokio-util = { version = "=0.7.13", features = ["compat"] } -env_logger = "=0.11.6" -zip = "=2.2.2" +tokio = { version = "1", features = ["full"] } +tokio-util = { version = "0.7", features = ["compat"] } +env_logger = "0.11.2" +zip = "2.2.2" # shared across multiple examples # anyhow = "1" diff --git a/crates/envy/Cargo.toml b/crates/envy/Cargo.toml index bebf0ed..531d999 100644 --- a/crates/envy/Cargo.toml +++ b/crates/envy/Cargo.toml @@ -18,4 +18,4 @@ categories = [ serde = "1.0" [dev-dependencies] -serde = { version = "=1.0.217", features = ["derive"] } +serde = { version = "1.0", features = ["derive"] } diff --git a/crates/junit-parser/Cargo.toml b/crates/junit-parser/Cargo.toml index a4e759b..290cda5 100644 --- a/crates/junit-parser/Cargo.toml +++ b/crates/junit-parser/Cargo.toml @@ -13,6 +13,6 @@ time = { version = "0.3.36", features = ["parsing", "serde-well-known"] } serde = { version = "1.0", features = ["derive"] } [dev-dependencies] -insta = { version = "=1.39.0", features = ["json"] } -once_cell = "=1.19.0" -path_macro = "=1.0.0" +insta = { version = "1.39.0", features = ["json"] } +once_cell = "1.19.0" +path_macro = "1.0.0" From ca9bc34d39868c7776cf0aba0cc7a442f1f1b33d Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sun, 2 Feb 2025 16:56:43 +0100 Subject: [PATCH 214/221] ci: renovate: preserveSemverRanges --- renovate.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/renovate.json b/renovate.json index db12518..5169721 100644 --- a/renovate.json +++ b/renovate.json @@ -2,7 +2,8 @@ "$schema": "https://docs.renovatebot.com/renovate-schema.json", "extends": [ "config:best-practices", - ":semanticCommitTypeAll(chore)" + ":semanticCommitTypeAll(chore)", + ":preserveSemverRanges" ], "automerge": true, "automergeStrategy": "squash", From d561fcf730cf476e3323d73f61f91d33325369f8 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Mon, 3 Feb 2025 03:28:33 +0100 Subject: [PATCH 215/221] ci: use renovate v39 --- .forgejo/workflows/renovate.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.forgejo/workflows/renovate.yaml b/.forgejo/workflows/renovate.yaml index 666efca..3bada59 100644 --- a/.forgejo/workflows/renovate.yaml +++ b/.forgejo/workflows/renovate.yaml @@ -17,7 +17,7 @@ jobs: renovate: runs-on: docker container: - image: renovate/renovate:latest + image: renovate/renovate:39 steps: - name: Load renovate repo cache From d2253e857ee36aee83447a89ee1b5707bf22cb07 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sat, 22 Feb 2025 23:00:28 +0000 Subject: [PATCH 216/221] ci: disable renovate --- .forgejo/workflows/{renovate.yaml => renovate.yaml.bak} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename .forgejo/workflows/{renovate.yaml => renovate.yaml.bak} (100%) diff --git a/.forgejo/workflows/renovate.yaml b/.forgejo/workflows/renovate.yaml.bak similarity index 100% rename from .forgejo/workflows/renovate.yaml rename to .forgejo/workflows/renovate.yaml.bak From 1367ed9ff1dd3e2ca142fab14c1846a2a6b46423 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sun, 20 Jul 2025 18:26:59 +0200 Subject: [PATCH 217/221] chore: update dependencies --- Cargo.lock | 1708 ++++++++++++++++++++++++++++------------------------ Cargo.toml | 10 +- 2 files changed, 917 insertions(+), 801 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index d4c3f3f..cc2fa4a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,24 +4,18 @@ version = 4 [[package]] name = "addr2line" -version = "0.22.0" +version = "0.24.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e4503c46a5c0c7844e948c9a4d6acd9f50cccb4de1c48eb9e291ea17470c678" +checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" dependencies = [ "gimli", ] -[[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.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" [[package]] name = "aes" @@ -36,15 +30,15 @@ dependencies = [ [[package]] name = "ahash" -version = "0.8.11" +version = "0.8.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" +checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75" dependencies = [ "cfg-if", - "getrandom 0.2.15", + "getrandom 0.3.3", "once_cell", "version_check", - "zerocopy 0.7.35", + "zerocopy", ] [[package]] @@ -56,6 +50,12 @@ dependencies = [ "memchr", ] +[[package]] +name = "allocator-api2" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" + [[package]] name = "android-tzdata" version = "0.1.1" @@ -77,15 +77,15 @@ version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ccaf7e9dfbb6ab22c82e473cd1a8a7bd313c19a5b7e40970f3d89ef5a5c9e81e" dependencies = [ - "unicode-width", + "unicode-width 0.1.14", "yansi-term", ] [[package]] name = "anstream" -version = "0.6.15" +version = "0.6.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64e15c1ab1f89faffbf04a634d5e1962e9074f2741eef6d97f3c4e322426d526" +checksum = "301af1932e46185686725e0fad2f8f2aa7da69dd70bf6ecc44d6b703844a3933" dependencies = [ "anstyle", "anstyle-parse", @@ -98,49 +98,50 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.8" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bec1de6f59aedf83baf9ff929c98f2ad654b97c9510f4e70cf6f661d49fd5b1" +checksum = "862ed96ca487e809f1c8e5a8447f6ee2cf102f846893800b20cebdf541fc6bbd" [[package]] name = "anstyle-parse" -version = "0.2.5" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb47de1e80c2b463c735db5b217a0ddc39d612e7ac9e2e96a5aed1f57616c1cb" +checksum = "4e7644824f0aa2c7b9384579234ef10eb7efb6a0deb83f9630a49594dd9c15c2" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.1.1" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d36fc52c7f6c869915e99412912f22093507da8d9e942ceaf66fe4b7c14422a" +checksum = "6c8bdeb6047d8983be085bab0ba1472e6dc604e7041dbf6fcd5e71523014fae9" dependencies = [ - "windows-sys", + "windows-sys 0.59.0", ] [[package]] name = "anstyle-wincon" -version = "3.0.4" +version = "3.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bf74e1b6e971609db8ca7a9ce79fd5768ab6ae46441c572e46cf596f59e57f8" +checksum = "403f75924867bb1033c59fbf0797484329750cfbe3c4325cd33127941fabc882" dependencies = [ "anstyle", - "windows-sys", + "once_cell_polyfill", + "windows-sys 0.59.0", ] [[package]] name = "anyhow" -version = "1.0.86" +version = "1.0.98" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da" +checksum = "e16d2d3311acee920a9eb8d33b8cbc1787ce4a264e85f964c2404b969bdcd487" [[package]] name = "arbitrary" -version = "1.3.2" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d5a26814d8dcb93b0e5a0ff3c6d80a8843bafb21b39e8e18a6f05471870e110" +checksum = "dde20b3d026af13f561bdd0f15edf01fc734f0dafcedbaf42bba506a9517f223" dependencies = [ "derive_arbitrary", ] @@ -182,7 +183,7 @@ dependencies = [ "pin-project", "proptest", "quick_cache", - "rand 0.8.5", + "rand 0.9.1", "regex", "reqwest", "rstest", @@ -195,7 +196,7 @@ dependencies = [ "serde_urlencoded", "syntect", "temp_testdir", - "thiserror 2.0.11", + "thiserror 2.0.12", "time", "tokio", "tokio-util", @@ -219,9 +220,9 @@ dependencies = [ [[package]] name = "async-compression" -version = "0.4.18" +version = "0.4.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df895a515f70646414f4b45c0b79082783b80552b373a68283012928df56f522" +checksum = "06575e6a9673580f52661c92107baabffbf41e2141373441cbcdc47cb733003c" dependencies = [ "bzip2", "deflate64", @@ -245,7 +246,7 @@ dependencies = [ "env_logger", "futures-lite", "pin-project", - "thiserror 2.0.11", + "thiserror 2.0.12", "tokio", "tokio-util", "zip", @@ -265,15 +266,15 @@ checksum = "3c1e7e457ea78e524f48639f551fd79703ac3f2237f5ecccdf4708f8a75ad373" [[package]] name = "autocfg" -version = "1.3.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" +checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" [[package]] name = "axum" -version = "0.8.1" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d6fd624c75e18b3b4c6b9caf42b1afe24437daaee904069137d8bab077be8b8" +checksum = "021e862c184ae977658b36c4500f7feac3221ca5da43e3f25bd04ab6c79a29b5" dependencies = [ "axum-core", "bytes", @@ -305,12 +306,12 @@ dependencies = [ [[package]] name = "axum-core" -version = "0.5.0" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df1362f362fd16024ae199c1970ce98f9661bf5ef94b9808fee734bc3698b733" +checksum = "68464cd0412f486726fb3373129ef5d2993f90c34bc2bc1c1e9943b2f4fc7ca6" dependencies = [ "bytes", - "futures-util", + "futures-core", "http", "http-body", "http-body-util", @@ -325,9 +326,9 @@ dependencies = [ [[package]] name = "axum-extra" -version = "0.10.0" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "460fc6f625a1f7705c6cf62d0d070794e94668988b1c38111baeec177c715f7b" +checksum = "45bf463831f5131b7d3c756525b305d40f1185b688565648a92e1392ca35713d" dependencies = [ "axum", "axum-core", @@ -339,6 +340,7 @@ dependencies = [ "http-body-util", "mime", "pin-project-lite", + "rustversion", "serde", "tower", "tower-layer", @@ -347,9 +349,9 @@ dependencies = [ [[package]] name = "axum-test" -version = "17.2.0" +version = "17.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "317c1f4ecc1e68e0ad5decb78478421055c963ce215e736ed97463fa609cd196" +checksum = "0eb1dfb84bd48bad8e4aa1acb82ed24c2bb5e855b659959b4e03b4dca118fcac" dependencies = [ "anyhow", "assert-json-diff", @@ -369,7 +371,7 @@ dependencies = [ "serde", "serde_json", "serde_urlencoded", - "smallvec 1.13.2", + "smallvec 1.15.1", "tokio", "tower", "url", @@ -377,25 +379,19 @@ dependencies = [ [[package]] name = "backtrace" -version = "0.3.73" +version = "0.3.75" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cc23269a4f8976d0a4d2e7109211a419fe30e8d88d677cd60b6bc79c5732e0a" +checksum = "6806a6321ec58106fea15becdad98371e28d92ccbc7c8f1b3b6dd724fe8f1002" dependencies = [ "addr2line", - "cc", "cfg-if", "libc", - "miniz_oxide 0.7.4", + "miniz_oxide", "object", "rustc-demangle", + "windows-targets 0.52.6", ] -[[package]] -name = "base64" -version = "0.21.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" - [[package]] name = "base64" version = "0.22.1" @@ -434,9 +430,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.6.0" +version = "2.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" +checksum = "1b8e56985ec62d17e9c1001dc89c88ecd7dc08e47eba5ec7c29c7b5eeecde967" [[package]] name = "block-buffer" @@ -455,9 +451,9 @@ checksum = "22d5698cf6842742ed64805705798f8b351fff53fa546fd45c52184bee58dc90" [[package]] name = "bumpalo" -version = "3.16.0" +version = "3.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" +checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43" [[package]] name = "byteorder" @@ -467,75 +463,79 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.9.0" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "325918d6fe32f23b19878fe4b34794ae41fc19ddbe53b10571a4874d44ffd39b" +checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" [[package]] name = "bytesize" -version = "1.3.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3e368af43e418a04d52505cf3dbc23dda4e3407ae2fa99fd0e4f308ce546acc" +checksum = "a3c8f83209414aacf0eeae3cf730b18d6981697fba62f200fcfb92b9f082acba" [[package]] name = "bzip2" -version = "0.4.4" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bdb116a6ef3f6c3698828873ad02c3014b3c85cadb88496095628e3ef1e347f8" +checksum = "49ecfb22d906f800d4fe833b6282cf4dc1c298f5057ca0b5445e5c209735ca47" dependencies = [ "bzip2-sys", - "libc", ] [[package]] name = "bzip2-sys" -version = "0.1.11+1.0.8" +version = "0.1.13+1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "736a955f3fa7875102d57c82b8cac37ec45224a07fd32d58f9f7a186b6cd4cdc" +checksum = "225bff33b2141874fe80d71e07d6eec4f85c5c216453dd96388240f96e1acc14" dependencies = [ "cc", - "libc", "pkg-config", ] [[package]] name = "caseless" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "808dab3318747be122cb31d36de18d4d1c81277a76f8332a02b81a3d73463d7f" +checksum = "8b6fd507454086c8edfd769ca6ada439193cdb209c7681712ef6275cccbfe5d8" dependencies = [ - "regex", "unicode-normalization", ] [[package]] name = "cc" -version = "1.1.6" +version = "1.2.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2aba8f4e9906c7ce3c73463f62a7f0c65183ada1a2d47e397cc8810827f9694f" +checksum = "deec109607ca693028562ed836a5f1c4b8bd77755c4e132fc5ce11b0b6211ae7" dependencies = [ "jobserver", "libc", + "shlex", ] [[package]] name = "cfg-if" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +checksum = "9555578bc9e57714c812a1f84e4fc5b4d21fcb063490c624de019f7464c91268" + +[[package]] +name = "cfg_aliases" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" [[package]] name = "chrono" -version = "0.4.39" +version = "0.4.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e36cc9d416881d2e24f9a963be5fb1cd90966419ac844274161d10488b3e825" +checksum = "c469d952047f47f91b68d1cba3f10d63c11d73e4636f24f08daf0278abf01c4d" dependencies = [ "android-tzdata", "iana-time-zone", "js-sys", "num-traits", "wasm-bindgen", - "windows-targets", + "windows-link", ] [[package]] @@ -550,15 +550,15 @@ dependencies = [ [[package]] name = "colorchoice" -version = "1.0.2" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3fd119d74b830634cea2a0f58bbd0d54540518a14397557951e79340abc28c0" +checksum = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75" [[package]] name = "comrak" -version = "0.35.0" +version = "0.40.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52602e10393cfaaf8accaf707f2da743dc22cbe700a343ff8dbc9e5e04bc6b74" +checksum = "32c3278f396e5707769a68bc0943e9b8f84a172836b173827810918279621747" dependencies = [ "caseless", "entities", @@ -570,14 +570,14 @@ dependencies = [ [[package]] name = "console" -version = "0.15.8" +version = "0.15.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e1f83fc076bd6dd27517eacdf25fef6c4dfe5f1d7448bafaaf3a26f13b5e4eb" +checksum = "054ccb5b10f9f2cbf51eb355ca1d05c2d279ce1804688d0db74b4733a5aeafd8" dependencies = [ "encode_unicode", - "lazy_static", "libc", - "windows-sys", + "once_cell", + "windows-sys 0.59.0", ] [[package]] @@ -613,25 +613,35 @@ dependencies = [ ] [[package]] -name = "core-foundation-sys" -version = "0.8.6" +name = "core-foundation" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" +checksum = "b2a6cd9ae233e7f62ba4e9353e81a88df7fc8a5987b8d445b4d90c879bd156f6" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" [[package]] name = "cpufeatures" -version = "0.2.12" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" dependencies = [ "libc", ] [[package]] name = "crc" -version = "3.2.1" +version = "3.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69e6e4d7b33a94f0991c26729976b10ebde1d34c3ee82408fb536164fa10d636" +checksum = "9710d3b3739c2e349eb44fe848ad0b7c8cb1e42bd87ee49371df2f7acaf3e675" dependencies = [ "crc-catalog", ] @@ -644,18 +654,18 @@ checksum = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5" [[package]] name = "crc32fast" -version = "1.4.2" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" +checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" dependencies = [ "cfg-if", ] [[package]] name = "crossbeam-utils" -version = "0.8.20" +version = "0.8.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" +checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" [[package]] name = "crypto-common" @@ -677,7 +687,7 @@ dependencies = [ "dtoa-short", "itoa", "phf", - "smallvec 1.13.2", + "smallvec 1.15.1", ] [[package]] @@ -687,7 +697,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331" dependencies = [ "quote", - "syn 2.0.87", + "syn 2.0.104", ] [[package]] @@ -698,7 +708,7 @@ checksum = "5041cc499144891f3790297212f32a74fb938e5136a14943f338ef9e0ae276cf" dependencies = [ "cfg-if", "crossbeam-utils", - "hashbrown", + "hashbrown 0.14.5", "lock_api", "once_cell", "parking_lot_core", @@ -712,9 +722,9 @@ checksum = "da692b8d1080ea3045efaab14434d40468c3d8657e42abddfffca87b428f4c1b" [[package]] name = "deranged" -version = "0.3.11" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" +checksum = "9c9e6a11ca8224451684bc0d7d5a7adbf8f2fd6887261a1cfc3c0432f9d4068e" dependencies = [ "powerfmt", "serde", @@ -722,33 +732,33 @@ dependencies = [ [[package]] name = "derive_arbitrary" -version = "1.3.2" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67e77553c4162a157adbf834ebae5b415acbecbeafc7a74b0e886657506a7611" +checksum = "30542c1ad912e0e3d22a1935c290e12e8a29d704a420177a31faad4a601a0800" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.104", ] [[package]] name = "derive_more" -version = "0.99.18" +version = "0.99.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f33878137e4dafd7fa914ad4e259e18a4e8e532b9617a2d0150262bf53abfce" +checksum = "6edb4b64a43d977b8e99788fe3a04d483834fba1215a7e02caa415b626497f7f" dependencies = [ "convert_case", "proc-macro2", "quote", "rustc_version", - "syn 2.0.87", + "syn 2.0.104", ] [[package]] name = "deunicode" -version = "1.6.0" +version = "1.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "339544cc9e2c4dc3fc7149fd630c5f22263a4fdf18a98afd0075784968b5cf00" +checksum = "abd57806937c9cc163efc8ea3910e00a62e2aeb0b8119f1793a978088f8f6b04" [[package]] name = "diff" @@ -775,7 +785,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.104", ] [[package]] @@ -786,9 +796,9 @@ checksum = "1aaf95b3e5c8f23aa320147307562d361db0ae0d51242340f558153b4eb2439b" [[package]] name = "dtoa" -version = "1.0.9" +version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcbb2bf8e87535c23f7a8a321e364ce21462d0ff10cb6407820e8e96dfff6653" +checksum = "d6add3b8cff394282be81f3fc1a0605db594ed69890078ca6e2cab1c408bcf04" [[package]] name = "dtoa-short" @@ -807,9 +817,9 @@ checksum = "b2972feb8dffe7bc8c5463b1dacda1b0dfbed3710e50f977d965429692d74cd8" [[package]] name = "encode_unicode" -version = "0.3.6" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" +checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0" [[package]] name = "entities" @@ -819,9 +829,9 @@ checksum = "b5320ae4c3782150d900b79807611a59a99fc9a1d61d686faafc24b93fc8d7ca" [[package]] name = "env_filter" -version = "0.1.2" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f2c92ceda6ceec50f43169f9ee8424fe2db276791afde7b2cd8bc084cb376ab" +checksum = "186e05a59d4c50738528153b83b0b0194d3a29507dfec16eccd4b342903397d0" dependencies = [ "log", "regex", @@ -829,14 +839,14 @@ dependencies = [ [[package]] name = "env_logger" -version = "0.11.6" +version = "0.11.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcaee3d8e3cfc3fd92428d477bc97fc29ec8716d180c0d74c643bb26166660e0" +checksum = "13c863f0904021b108aa8b2f55046443e6b1ebde8fd4a15c399893aae4fa069f" dependencies = [ "anstream", "anstyle", "env_filter", - "humantime", + "jiff", "log", ] @@ -849,34 +859,34 @@ dependencies = [ [[package]] name = "equivalent" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "errno" -version = "0.3.9" +version = "0.3.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" +checksum = "778e2ac28f6c47af28e4907f13ffd1e1ddbd400980a9abd7c8df189bf578a5ad" dependencies = [ "libc", - "windows-sys", + "windows-sys 0.60.2", ] [[package]] name = "fastrand" -version = "2.1.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a" +checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" [[package]] name = "flate2" -version = "1.0.35" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c936bfdafb507ebbf50b8074c54fa31c5be9a1e7e5f467dd659697041407d07c" +checksum = "4a3d7db9596fecd151c5f638c0ee5d5bd487b6e0ea232e5dc96d5250f6f94b1d" dependencies = [ "crc32fast", - "miniz_oxide 0.8.0", + "miniz_oxide", ] [[package]] @@ -885,6 +895,12 @@ version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" +[[package]] +name = "foldhash" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" + [[package]] name = "foreign-types" version = "0.3.2" @@ -921,9 +937,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" dependencies = [ "futures-core", ] @@ -961,7 +977,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.104", ] [[package]] @@ -1020,74 +1036,80 @@ dependencies = [ [[package]] name = "getopts" -version = "0.2.21" +version = "0.2.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14dbbfd5c71d70241ecf9e6f13737f7b5ce823821063188d7e46c41d371eebd5" +checksum = "cba6ae63eb948698e300f645f87c70f76630d505f23b8907cf1e193ee85048c1" dependencies = [ - "unicode-width", + "unicode-width 0.2.1", ] [[package]] name = "getrandom" -version = "0.2.15" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" +checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" dependencies = [ "cfg-if", + "js-sys", "libc", - "wasi 0.11.0+wasi-snapshot-preview1", + "wasi 0.11.1+wasi-snapshot-preview1", + "wasm-bindgen", ] [[package]] name = "getrandom" -version = "0.3.0" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71393ecc86efbf00e4ca13953979ba8b94cfe549a4b74cc26d8b62f4d8feac2b" +checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" dependencies = [ "cfg-if", + "js-sys", "libc", - "wasi 0.13.3+wasi-0.2.2", - "windows-targets", + "r-efi", + "wasi 0.14.2+wasi-0.2.4", + "wasm-bindgen", ] [[package]] name = "gimli" -version = "0.29.0" +version = "0.31.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40ecd4077b5ae9fd2e9e169b102c6c330d0605168eb0e8bf79952b256dbefffd" +checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" [[package]] name = "glob" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" +checksum = "a8d1add55171497b4705a648c6b583acafb01d58050a51727785f0b2c8e0a2b2" [[package]] name = "governor" -version = "0.8.0" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "842dc78579ce01e6a1576ad896edc92fca002dd60c9c3746b7fc2bec6fb429d0" +checksum = "3cbe789d04bf14543f03c4b60cd494148aa79438c8440ae7d81a7778147745c3" dependencies = [ "cfg-if", "dashmap", "futures-sink", "futures-timer", "futures-util", - "no-std-compat", + "getrandom 0.3.3", + "hashbrown 0.15.4", "nonzero_ext", "parking_lot", "portable-atomic", "quanta", - "rand 0.8.5", - "smallvec 1.13.2", + "rand 0.9.1", + "smallvec 1.15.1", "spinning_top", + "web-time", ] [[package]] name = "h2" -version = "0.4.5" +version = "0.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa82e28a107a8cc405f0839610bdc9b15f1e25ec7d696aa5cf173edbcb1486ab" +checksum = "17da50a276f1e01e0ba6c029e47b7100754904ee8a278f886546e98575380785" dependencies = [ "atomic-waker", "bytes", @@ -1109,12 +1131,23 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" [[package]] -name = "headers" -version = "0.4.0" +name = "hashbrown" +version = "0.15.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "322106e6bd0cba2d5ead589ddb8150a13d7c4217cf80d7c4f682ca994ccc6aa9" +checksum = "5971ac85611da7067dbfcabef3c70ebb5606018acd9e2a3903a0da507521e0d5" dependencies = [ - "base64 0.21.7", + "allocator-api2", + "equivalent", + "foldhash", +] + +[[package]] +name = "headers" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3314d5adb5d94bcdf56771f2e50dbbc80bb4bdf88967526706205ac9eff24eb" +dependencies = [ + "base64", "bytes", "headers-core", "http", @@ -1132,12 +1165,6 @@ dependencies = [ "http", ] -[[package]] -name = "hermit-abi" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" - [[package]] name = "hmac" version = "0.12.1" @@ -1149,23 +1176,21 @@ dependencies = [ [[package]] name = "html5ever" -version = "0.29.0" +version = "0.29.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e15626aaf9c351bc696217cbe29cb9b5e86c43f8a46b5e2f5c6c5cf7cb904ce" +checksum = "3b7410cae13cbc75623c98ac4cbfd1f0bedddf3227afc24f370cf0f50a44a11c" dependencies = [ "log", "mac", "markup5ever", - "proc-macro2", - "quote", - "syn 2.0.87", + "match_token", ] [[package]] name = "http" -version = "1.2.0" +version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f16ca2af56261c99fba8bac40a10251ce8188205a4c448fbb745a2e4daa76fea" +checksum = "f4a85d31aea989eead29a3aaf9e1115a180df8282431156e533de47660892565" dependencies = [ "bytes", "fnv", @@ -1184,12 +1209,12 @@ dependencies = [ [[package]] name = "http-body-util" -version = "0.1.2" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f" +checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" dependencies = [ "bytes", - "futures-util", + "futures-core", "http", "http-body", "pin-project-lite", @@ -1197,9 +1222,9 @@ dependencies = [ [[package]] name = "httparse" -version = "1.9.4" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fcc0b4a115bf80b728eb8ea024ad5bd707b615bfed49e0665b6e0f86fd082d9" +checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" [[package]] name = "httpdate" @@ -1216,17 +1241,11 @@ dependencies = [ "libm", ] -[[package]] -name = "humantime" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" - [[package]] name = "hyper" -version = "1.5.0" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbbff0a806a4728c99295b254c8838933b5b082d75e3cb70c8dab21fdfbcfa9a" +checksum = "cc2b571658e38e0c01b1fdca3bbbe93c00d3d71693ff2770043f8c29bc7d6f80" dependencies = [ "bytes", "futures-channel", @@ -1238,23 +1257,22 @@ dependencies = [ "httpdate", "itoa", "pin-project-lite", - "smallvec 1.13.2", + "smallvec 1.15.1", "tokio", "want", ] [[package]] name = "hyper-rustls" -version = "0.27.2" +version = "0.27.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ee4be2c948921a1a5320b629c4193916ed787a7f7f293fd3f7f5a6c9de74155" +checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58" dependencies = [ - "futures-util", "http", "hyper", "hyper-util", "rustls", - "rustls-native-certs 0.7.1", + "rustls-native-certs", "rustls-pki-types", "tokio", "tokio-rustls", @@ -1280,16 +1298,21 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.10" +version = "0.1.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df2dcfbe0677734ab2f3ffa7fa7bfd4706bfdc1ef393f2ee30184aed67e631b4" +checksum = "7f66d5bd4c6f02bf0542fad85d626775bab9258cf795a4256dcaf3161114d1df" dependencies = [ + "base64", "bytes", "futures-channel", + "futures-core", "futures-util", "http", "http-body", "hyper", + "ipnet", + "libc", + "percent-encoding", "pin-project-lite", "socket2", "tokio", @@ -1299,14 +1322,15 @@ dependencies = [ [[package]] name = "iana-time-zone" -version = "0.1.60" +version = "0.1.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141" +checksum = "b0c919e5debc312ad217002b8048a17b7d83f80703865bbfcfebb0458b0b27d8" dependencies = [ "android_system_properties", "core-foundation-sys", "iana-time-zone-haiku", "js-sys", + "log", "wasm-bindgen", "windows-core", ] @@ -1322,21 +1346,22 @@ dependencies = [ [[package]] name = "icu_collections" -version = "1.5.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526" +checksum = "200072f5d0e3614556f94a9930d5dc3e0662a652823904c3a75dc3b0af7fee47" dependencies = [ "displaydoc", + "potential_utf", "yoke", "zerofrom", "zerovec", ] [[package]] -name = "icu_locid" -version = "1.5.0" +name = "icu_locale_core" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637" +checksum = "0cde2700ccaed3872079a65fb1a78f6c0a36c91570f28755dda67bc8f7d9f00a" dependencies = [ "displaydoc", "litemap", @@ -1345,99 +1370,66 @@ dependencies = [ "zerovec", ] -[[package]] -name = "icu_locid_transform" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01d11ac35de8e40fdeda00d9e1e9d92525f3f9d887cdd7aa81d727596788b54e" -dependencies = [ - "displaydoc", - "icu_locid", - "icu_locid_transform_data", - "icu_provider", - "tinystr", - "zerovec", -] - -[[package]] -name = "icu_locid_transform_data" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdc8ff3388f852bede6b579ad4e978ab004f139284d7b28715f773507b946f6e" - [[package]] name = "icu_normalizer" -version = "1.5.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f" +checksum = "436880e8e18df4d7bbc06d58432329d6458cc84531f7ac5f024e93deadb37979" dependencies = [ "displaydoc", "icu_collections", "icu_normalizer_data", "icu_properties", "icu_provider", - "smallvec 1.13.2", - "utf16_iter", - "utf8_iter", - "write16", + "smallvec 1.15.1", "zerovec", ] [[package]] name = "icu_normalizer_data" -version = "1.5.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8cafbf7aa791e9b22bec55a167906f9e1215fd475cd22adfcf660e03e989516" +checksum = "00210d6893afc98edb752b664b8890f0ef174c8adbb8d0be9710fa66fbbf72d3" [[package]] name = "icu_properties" -version = "1.5.1" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93d6020766cfc6302c15dbbc9c8778c37e62c14427cb7f6e601d849e092aeef5" +checksum = "016c619c1eeb94efb86809b015c58f479963de65bdb6253345c1a1276f22e32b" dependencies = [ "displaydoc", "icu_collections", - "icu_locid_transform", + "icu_locale_core", "icu_properties_data", "icu_provider", - "tinystr", + "potential_utf", + "zerotrie", "zerovec", ] [[package]] name = "icu_properties_data" -version = "1.5.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67a8effbc3dd3e4ba1afa8ad918d5684b8868b3b26500753effea8d2eed19569" +checksum = "298459143998310acd25ffe6810ed544932242d3f07083eee1084d83a71bd632" [[package]] name = "icu_provider" -version = "1.5.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9" +checksum = "03c80da27b5f4187909049ee2d72f276f0d9f99a42c306bd0131ecfe04d8e5af" dependencies = [ "displaydoc", - "icu_locid", - "icu_provider_macros", + "icu_locale_core", "stable_deref_trait", "tinystr", "writeable", "yoke", "zerofrom", + "zerotrie", "zerovec", ] -[[package]] -name = "icu_provider_macros" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.87", -] - [[package]] name = "idna" version = "1.0.3" @@ -1445,15 +1437,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" dependencies = [ "idna_adapter", - "smallvec 1.13.2", + "smallvec 1.15.1", "utf8_iter", ] [[package]] name = "idna_adapter" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "daca1df1c957320b2cf139ac61e7bd64fed304c5040df000a745aa1de3b4ef71" +checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" dependencies = [ "icu_normalizer", "icu_properties", @@ -1461,42 +1453,61 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.2.6" +version = "2.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" +checksum = "fe4cd85333e22411419a0bcae1297d25e58c9443848b11dc6a86fefe8c78a661" dependencies = [ "equivalent", - "hashbrown", + "hashbrown 0.15.4", ] [[package]] name = "inout" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5" +checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01" dependencies = [ "generic-array", ] [[package]] name = "insta" -version = "1.42.1" +version = "1.43.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71c1b125e30d93896b365e156c33dadfffab45ee8400afcbba4752f59de08a86" +checksum = "154934ea70c58054b556dd430b99a98c2a7ff5309ac9891597e339b5c28f4371" dependencies = [ "console", - "linked-hash-map", "once_cell", - "pin-project", "serde", "similar", ] [[package]] -name = "ipnet" -version = "2.9.0" +name = "io-uring" +version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" +checksum = "b86e202f00093dcba4275d4636b93ef9dd75d025ae560d2521b45ea28ab49013" +dependencies = [ + "bitflags 2.9.1", + "cfg-if", + "libc", +] + +[[package]] +name = "ipnet" +version = "2.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" + +[[package]] +name = "iri-string" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbc5ebe9c3a1a7a5127f920a418f7585e9e758e911d0466ed004f393b0e380b2" +dependencies = [ + "memchr", + "serde", +] [[package]] name = "is_terminal_polyfill" @@ -1506,25 +1517,51 @@ checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" [[package]] name = "itoa" -version = "1.0.11" +version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" +checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" + +[[package]] +name = "jiff" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be1f93b8b1eb69c77f24bbb0afdf66f54b632ee39af40ca21c4365a1d7347e49" +dependencies = [ + "jiff-static", + "log", + "portable-atomic", + "portable-atomic-util", + "serde", +] + +[[package]] +name = "jiff-static" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03343451ff899767262ec32146f6d559dd759fdadf42ff0e227c7c48f72594b4" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] [[package]] name = "jobserver" -version = "0.1.32" +version = "0.1.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48d1dbcbbeb6a7fec7e059840aa538bd62aaccf972c7346c4d9d2059312853d0" +checksum = "38f262f097c174adebe41eb73d66ae9c06b2844fb0da69969647bbddd9b0538a" dependencies = [ + "getrandom 0.3.3", "libc", ] [[package]] name = "js-sys" -version = "0.3.69" +version = "0.3.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d" +checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" dependencies = [ + "once_cell", "wasm-bindgen", ] @@ -1537,7 +1574,7 @@ dependencies = [ "path_macro", "quick-xml", "serde", - "thiserror 2.0.11", + "thiserror 2.0.12", "time", ] @@ -1549,55 +1586,49 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.169" +version = "0.2.174" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5aba8db14291edd000dfcc4d620c7ebfb122c613afb886ca8803fa4e128a20a" +checksum = "1171693293099992e19cddea4e8b849964e9846f4acee11b3948bcc337be8776" [[package]] name = "libm" -version = "0.2.8" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" - -[[package]] -name = "linked-hash-map" -version = "0.5.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" +checksum = "f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de" [[package]] name = "linux-raw-sys" -version = "0.4.14" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" +checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12" [[package]] name = "litemap" -version = "0.7.3" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "643cb0b8d4fcc284004d5fd0d67ccf61dfffadb7f75e1e71bc420f4688a3a704" +checksum = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956" [[package]] name = "lock_api" -version = "0.4.12" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" +checksum = "96936507f153605bddfcda068dd804796c84324ed2510809e5b2a624c81da765" dependencies = [ "autocfg", "scopeguard", ] [[package]] -name = "lockfree-object-pool" -version = "0.1.6" +name = "log" +version = "0.4.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9374ef4228402d4b7e403e5838cb880d9ee663314b0a900d5a6aabf0c213552e" +checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" [[package]] -name = "log" -version = "0.4.22" +name = "lru-slab" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" +checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154" [[package]] name = "lzma-rs" @@ -1628,9 +1659,9 @@ checksum = "c41e0c4fef86961ac6d6f8a82609f55f31b05e4fce149ac5710e439df7619ba4" [[package]] name = "markup5ever" -version = "0.14.0" +version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82c88c6129bd24319e62a0359cb6b958fa7e8be6e19bb1663bc396b90883aca5" +checksum = "c7a7213d12e1864c0f002f52c2923d4556935a43dec5e71355c2760e0f6e7a18" dependencies = [ "log", "phf", @@ -1640,6 +1671,17 @@ dependencies = [ "tendril", ] +[[package]] +name = "match_token" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88a9689d8d44bf9964484516275f5cd4c9b59457a6940c1d5d0ecbb94510a36b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + [[package]] name = "matchit" version = "0.8.4" @@ -1654,9 +1696,9 @@ checksum = "60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00" [[package]] name = "memchr" -version = "2.7.4" +version = "2.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" +checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0" [[package]] name = "mime" @@ -1676,39 +1718,29 @@ dependencies = [ [[package]] name = "miniz_oxide" -version = "0.7.4" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8a240ddb74feaf34a79a7add65a741f3167852fba007066dcac1ca548d89c08" -dependencies = [ - "adler", -] - -[[package]] -name = "miniz_oxide" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1" +checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" dependencies = [ "adler2", ] [[package]] name = "mio" -version = "1.0.1" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4569e456d394deccd22ce1c1913e6ea0e54519f577285001215d33557431afe4" +checksum = "78bed444cc8a2160f01cbcf811ef18cac863ad68ae8ca62092e8db51d51c761c" dependencies = [ - "hermit-abi", "libc", - "wasi 0.11.0+wasi-snapshot-preview1", - "windows-sys", + "wasi 0.11.1+wasi-snapshot-preview1", + "windows-sys 0.59.0", ] [[package]] name = "native-tls" -version = "0.2.12" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8614eb2c83d59d1c8cc974dd3f920198647674a0a035e1af1fa58707e317466" +checksum = "87de3442987e9dbec73158d5c715e7ad9072fda936bb03d19d7fa10e00520f0e" dependencies = [ "libc", "log", @@ -1716,7 +1748,7 @@ dependencies = [ "openssl-probe", "openssl-sys", "schannel", - "security-framework", + "security-framework 2.11.1", "security-framework-sys", "tempfile", ] @@ -1727,12 +1759,6 @@ version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" -[[package]] -name = "no-std-compat" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b93853da6d84c2e3c7d730d6473e8817692dd89be387eb01b94d7f108ecb5b8c" - [[package]] name = "nodrop" version = "0.1.14" @@ -1772,26 +1798,32 @@ dependencies = [ [[package]] name = "object" -version = "0.36.2" +version = "0.36.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f203fa8daa7bb185f760ae12bd8e097f63d17041dcdcaf675ac54cdf863170e" +checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" dependencies = [ "memchr", ] [[package]] name = "once_cell" -version = "1.20.2" +version = "1.21.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" + +[[package]] +name = "once_cell_polyfill" +version = "1.70.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4895175b425cb1f87721b59f0f286c2092bd4af812243672510e1ac53e2e0ad" [[package]] name = "onig" -version = "6.4.0" +version = "6.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c4b31c8722ad9171c6d77d3557db078cab2bd50afcc9d09c8b315c59df8ca4f" +checksum = "336b9c63443aceef14bea841b899035ae3abe89b7c486aaf4c5bd8aafedac3f0" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.9.1", "libc", "once_cell", "onig_sys", @@ -1799,9 +1831,9 @@ dependencies = [ [[package]] name = "onig_sys" -version = "69.8.1" +version = "69.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b829e3d7e9cc74c7e315ee8edb185bf4190da5acde74afd7fc59c35b1f086e7" +checksum = "c7f86c6eef3d6df15f23bcfb6af487cbd2fed4e5581d58d5bf1f5f8b7f6727dc" dependencies = [ "cc", "pkg-config", @@ -1809,11 +1841,11 @@ dependencies = [ [[package]] name = "openssl" -version = "0.10.66" +version = "0.10.73" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9529f4786b70a3e8c61e11179af17ab6188ad8d0ded78c5529441ed39d4bd9c1" +checksum = "8505734d46c8ab1e19a1dce3aef597ad87dcb4c37e7188231769bd6bd51cebf8" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.9.1", "cfg-if", "foreign-types", "libc", @@ -1830,20 +1862,20 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.104", ] [[package]] name = "openssl-probe" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" +checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" [[package]] name = "openssl-sys" -version = "0.9.103" +version = "0.9.109" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f9e8deee91df40a943c71b917e5874b951d32a802526c85721ce3b776c929d6" +checksum = "90096e2e47630d78b7d1c20952dc621f957103f8bc2c8359ec81290d75238571" dependencies = [ "cc", "libc", @@ -1859,15 +1891,15 @@ checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" [[package]] name = "parking" -version = "2.2.0" +version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb813b8af86854136c6922af0598d719255ecb2179515e6e7730d468f05c9cae" +checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" [[package]] name = "parking_lot" -version = "0.12.3" +version = "0.12.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" +checksum = "70d58bf43669b5795d1576d0641cfb6fbb2057bf629506267a92807158584a13" dependencies = [ "lock_api", "parking_lot_core", @@ -1875,15 +1907,15 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.10" +version = "0.9.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" +checksum = "bc838d2a56b5b1a6c25f55575dfc605fabb63bb2365f6c2353ef9159aa69e4a5" dependencies = [ "cfg-if", "libc", "redox_syscall", - "smallvec 1.13.2", - "windows-targets", + "smallvec 1.15.1", + "windows-targets 0.52.6", ] [[package]] @@ -1910,100 +1942,81 @@ checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "phf" -version = "0.11.2" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ade2d8b8f33c7333b51bcf0428d37e217e9f32192ae4772156f65063b8ce03dc" +checksum = "1fd6780a80ae0c52cc120a26a1a42c1ae51b247a253e4e06113d23d2c2edd078" dependencies = [ "phf_macros", - "phf_shared 0.11.2", + "phf_shared", ] [[package]] name = "phf_codegen" -version = "0.11.2" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8d39688d359e6b34654d328e262234662d16cc0f60ec8dcbe5e718709342a5a" +checksum = "aef8048c789fa5e851558d709946d6d79a8ff88c0440c587967f8e94bfb1216a" dependencies = [ - "phf_generator 0.11.2", - "phf_shared 0.11.2", + "phf_generator", + "phf_shared", ] [[package]] name = "phf_generator" -version = "0.10.0" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d5285893bb5eb82e6aaf5d59ee909a06a16737a8970984dd7746ba9283498d6" +checksum = "3c80231409c20246a13fddb31776fb942c38553c51e871f8cbd687a4cfb5843d" dependencies = [ - "phf_shared 0.10.0", - "rand 0.8.5", -] - -[[package]] -name = "phf_generator" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48e4cc64c2ad9ebe670cb8fd69dd50ae301650392e81c05f9bfcb2d5bdbc24b0" -dependencies = [ - "phf_shared 0.11.2", + "phf_shared", "rand 0.8.5", ] [[package]] name = "phf_macros" -version = "0.11.2" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3444646e286606587e49f3bcf1679b8cef1dc2c5ecc29ddacaffc305180d464b" +checksum = "f84ac04429c13a7ff43785d75ad27569f2951ce0ffd30a3321230db2fc727216" dependencies = [ - "phf_generator 0.11.2", - "phf_shared 0.11.2", + "phf_generator", + "phf_shared", "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.104", ] [[package]] name = "phf_shared" -version = "0.10.0" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6796ad771acdc0123d2a88dc428b5e38ef24456743ddb1744ed628f9815c096" -dependencies = [ - "siphasher", -] - -[[package]] -name = "phf_shared" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90fcb95eef784c2ac79119d1dd819e162b5da872ce6f3c3abe1e8ca1c082f72b" +checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5" dependencies = [ "siphasher", ] [[package]] name = "pin-project" -version = "1.1.8" +version = "1.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e2ec53ad785f4d35dac0adea7f7dc6f1bb277ad84a680c7afefeae05d1f5916" +checksum = "677f1add503faace112b9f1373e43e9e054bfdd22ff1a63c1bc485eaec6a6a8a" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.8" +version = "1.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d56a66c0c55993aa927429d0f8a0abfd74f084e4d9c192cffed01e418d83eefb" +checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.104", ] [[package]] name = "pin-project-lite" -version = "0.2.14" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" [[package]] name = "pin-utils" @@ -2013,15 +2026,33 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] name = "pkg-config" -version = "0.3.30" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" +checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" [[package]] name = "portable-atomic" -version = "1.7.0" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da544ee218f0d287a911e9c99a39a8c9bc8fcad3cb8db5959940044ecfc67265" +checksum = "f84267b20a16ea918e43c6a88433c2d54fa145c92a811b5b047ccbe153674483" + +[[package]] +name = "portable-atomic-util" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8a2f0d8d040d7848a709caf78912debcc3f33ee4b3cac47d73d1e1069e83507" +dependencies = [ + "portable-atomic", +] + +[[package]] +name = "potential_utf" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5a7c30837279ca13e7c867e9e40053bc68740f988cb07f7ca6df43cc734b585" +dependencies = [ + "zerovec", +] [[package]] name = "powerfmt" @@ -2031,9 +2062,12 @@ checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" [[package]] name = "ppv-lite86" -version = "0.2.17" +version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" +dependencies = [ + "zerocopy", +] [[package]] name = "precomputed-hash" @@ -2043,9 +2077,9 @@ checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" [[package]] name = "pretty_assertions" -version = "1.4.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af7cee1a6c8a5b9208b3cb1061f10c0cb689087b3d8ce85fb9d2dd7a29b6ba66" +checksum = "3ae130e2f271fbc2ac3a40fb1d07180839cdbbe443c7a27e1e3c13c5cac0116d" dependencies = [ "diff", "yansi", @@ -2063,26 +2097,26 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.92" +version = "1.0.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37d3544b3f2748c54e147655edb5025752e2303145b5aefb3c3ea2c78b973bb0" +checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778" dependencies = [ "unicode-ident", ] [[package]] name = "proptest" -version = "1.6.0" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14cae93065090804185d3b75f0bf93b8eeda30c7a9b4a33d3bdb3988d6229e50" +checksum = "6fcdab19deb5195a31cf7726a210015ff1496ba1464fd42cb4f537b8b01b471f" dependencies = [ "bit-set", "bit-vec", - "bitflags 2.6.0", + "bitflags 2.9.1", "lazy_static", "num-traits", - "rand 0.8.5", - "rand_chacha 0.3.1", + "rand 0.9.1", + "rand_chacha", "rand_xorshift", "regex-syntax", "rusty-fork", @@ -2092,15 +2126,15 @@ dependencies = [ [[package]] name = "quanta" -version = "0.12.3" +version = "0.12.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e5167a477619228a0b284fac2674e3c388cba90631d7b7de620e6f1fcd08da5" +checksum = "f3ab5a9d756f0d97bdc89019bd2e4ea098cf9cde50ee7564dde6b81ccc8f06c7" dependencies = [ "crossbeam-utils", "libc", "once_cell", "raw-cpuid", - "wasi 0.11.0+wasi-snapshot-preview1", + "wasi 0.11.1+wasi-snapshot-preview1", "web-sys", "winapi", ] @@ -2113,110 +2147,112 @@ checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" [[package]] name = "quick-xml" -version = "0.37.2" +version = "0.37.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "165859e9e55f79d67b96c5d96f4e88b6f2695a1972849c15a6a3f5c59fc2c003" +checksum = "331e97a1af0bf59823e6eadffe373d7b27f485be8748f71471c662c1f269b7fb" dependencies = [ "memchr", ] [[package]] name = "quick_cache" -version = "0.6.9" +version = "0.6.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d7c94f8935a9df96bb6380e8592c70edf497a643f94bd23b2f76b399385dbf4" +checksum = "6b450dad8382b1b95061d5ca1eb792081fb082adf48c678791fe917509596d5f" dependencies = [ "ahash", "equivalent", - "hashbrown", + "hashbrown 0.15.4", "parking_lot", ] [[package]] name = "quinn" -version = "0.11.2" +version = "0.11.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4ceeeeabace7857413798eb1ffa1e9c905a9946a57d81fb69b4b71c4d8eb3ad" +checksum = "626214629cda6781b6dc1d316ba307189c85ba657213ce642d9c77670f8202c8" dependencies = [ "bytes", + "cfg_aliases", "pin-project-lite", "quinn-proto", "quinn-udp", "rustc-hash", "rustls", - "thiserror 1.0.68", + "socket2", + "thiserror 2.0.12", "tokio", "tracing", + "web-time", ] [[package]] name = "quinn-proto" -version = "0.11.3" +version = "0.11.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddf517c03a109db8100448a4be38d498df8a210a99fe0e1b9eaf39e78c640efe" +checksum = "49df843a9161c85bb8aae55f101bc0bac8bcafd637a620d9122fd7e0b2f7422e" dependencies = [ "bytes", - "rand 0.8.5", + "getrandom 0.3.3", + "lru-slab", + "rand 0.9.1", "ring", "rustc-hash", "rustls", + "rustls-pki-types", "slab", - "thiserror 1.0.68", + "thiserror 2.0.12", "tinyvec", "tracing", + "web-time", ] [[package]] name = "quinn-udp" -version = "0.5.4" +version = "0.5.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bffec3605b73c6f1754535084a85229fa8a30f86014e6c81aeec4abb68b0285" +checksum = "fcebb1209ee276352ef14ff8732e24cc2b02bbac986cd74a4c81bcb2f9881970" dependencies = [ + "cfg_aliases", "libc", "once_cell", "socket2", - "windows-sys", + "tracing", + "windows-sys 0.59.0", ] [[package]] name = "quote" -version = "1.0.37" +version = "1.0.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" +checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" dependencies = [ "proc-macro2", ] +[[package]] +name = "r-efi" +version = "5.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" + [[package]] name = "rand" version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" dependencies = [ - "libc", - "rand_chacha 0.3.1", "rand_core 0.6.4", ] [[package]] name = "rand" -version = "0.9.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3779b94aeb87e8bd4e834cee3650289ee9e0d5677f976ecdb6d219e5f4f6cd94" +checksum = "9fbfd9d094a40bf3ae768db9361049ace4c0e04a4fd6b359518bd7b73a73dd97" dependencies = [ - "rand_chacha 0.9.0", - "rand_core 0.9.0", - "zerocopy 0.8.14", -] - -[[package]] -name = "rand_chacha" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" -dependencies = [ - "ppv-lite86", - "rand_core 0.6.4", + "rand_chacha", + "rand_core 0.9.3", ] [[package]] @@ -2226,7 +2262,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" dependencies = [ "ppv-lite86", - "rand_core 0.9.0", + "rand_core 0.9.3", ] [[package]] @@ -2234,45 +2270,41 @@ name = "rand_core" version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" -dependencies = [ - "getrandom 0.2.15", -] [[package]] name = "rand_core" -version = "0.9.0" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b08f3c9802962f7e1b25113931d94f43ed9725bebc59db9d0c3e9a23b67e15ff" +checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" dependencies = [ - "getrandom 0.3.0", - "zerocopy 0.8.14", + "getrandom 0.3.3", ] [[package]] name = "rand_xorshift" -version = "0.3.0" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d25bf25ec5ae4a3f1b92f929810509a2f53d7dca2f50b794ff57e3face536c8f" +checksum = "513962919efc330f829edb2535844d1b912b0fbe2ca165d613e4e8788bb05a5a" dependencies = [ - "rand_core 0.6.4", + "rand_core 0.9.3", ] [[package]] name = "raw-cpuid" -version = "11.1.0" +version = "11.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb9ee317cfe3fbd54b36a511efc1edd42e216903c9cd575e686dd68a2ba90d8d" +checksum = "c6df7ab838ed27997ba19a4664507e6f82b41fe6e20be42929332156e5e85146" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.9.1", ] [[package]] name = "redox_syscall" -version = "0.5.3" +version = "0.5.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a908a6e00f1fdd0dfd9c0eb08ce85126f6d8bbda50017e74bc4a4b7d4a926a4" +checksum = "de3a5d9f0aba1dbcec1cc47f0ff94a4b778fe55bca98a6dfa92e4e094e57b1c4" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.9.1", ] [[package]] @@ -2289,9 +2321,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.8" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "368758f23274712b504848e9d5a6f010445cc8b87a7cdb4d7cbee666c1288da3" +checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" dependencies = [ "aho-corasick", "memchr", @@ -2312,11 +2344,11 @@ checksum = "ba39f3699c378cd8970968dcbff9c43159ea4cfbd88d43c00b22f2ef10a435d2" [[package]] name = "reqwest" -version = "0.12.12" +version = "0.12.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43e734407157c3c2034e0258f5e4473ddb361b1e85f95a66690d67264d7cd1da" +checksum = "cbc931937e6ca3a06e3b6c0aa7841849b160a90351d6ab467a8b9b9959767531" dependencies = [ - "base64 0.22.1", + "base64", "bytes", "futures-core", "futures-util", @@ -2327,18 +2359,14 @@ dependencies = [ "hyper-rustls", "hyper-tls", "hyper-util", - "ipnet", "js-sys", "log", - "mime", "native-tls", - "once_cell", "percent-encoding", "pin-project-lite", "quinn", "rustls", - "rustls-native-certs 0.8.0", - "rustls-pemfile", + "rustls-native-certs", "rustls-pki-types", "serde", "serde_json", @@ -2349,6 +2377,7 @@ dependencies = [ "tokio-rustls", "tokio-util", "tower", + "tower-http", "tower-service", "url", "wasm-bindgen", @@ -2356,39 +2385,36 @@ dependencies = [ "wasm-streams", "web-sys", "webpki-roots", - "windows-registry", ] [[package]] name = "reserve-port" -version = "2.1.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "359fc315ed556eb0e42ce74e76f4b1cd807b50fa6307f3de4e51f92dbe86e2d5" +checksum = "21918d6644020c6f6ef1993242989bf6d4952d2e025617744f184c02df51c356" dependencies = [ - "lazy_static", - "thiserror 2.0.11", + "thiserror 2.0.12", ] [[package]] name = "ring" -version = "0.17.8" +version = "0.17.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" +checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" dependencies = [ "cc", "cfg-if", - "getrandom 0.2.15", + "getrandom 0.2.16", "libc", - "spin", "untrusted", - "windows-sys", + "windows-sys 0.52.0", ] [[package]] name = "rstest" -version = "0.24.0" +version = "0.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03e905296805ab93e13c1ec3a03f4b6c4f35e9498a3d5fa96dc626d22c03cd89" +checksum = "6fc39292f8613e913f7df8fa892b8944ceb47c247b78e1b1ae2f09e019be789d" dependencies = [ "rstest_macros", "rustc_version", @@ -2396,9 +2422,9 @@ dependencies = [ [[package]] name = "rstest_macros" -version = "0.24.0" +version = "0.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef0053bbffce09062bee4bcc499b0fbe7a57b879f1efe088d6d8d4c7adcdef9b" +checksum = "1f168d99749d307be9de54d23fd226628d99768225ef08f6ffb52e0182a27746" dependencies = [ "cfg-if", "glob", @@ -2407,37 +2433,36 @@ dependencies = [ "regex", "relative-path", "rustc_version", - "syn 2.0.87", + "syn 2.0.104", "unicode-ident", ] [[package]] name = "rust-multipart-rfc7578_2" -version = "0.7.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc4bb9e7c9abe5fa5f30c2d8f8fefb9e0080a2c1e3c2e567318d2907054b35d3" +checksum = "c839d037155ebc06a571e305af66ff9fd9063a6e662447051737e1ac75beea41" dependencies = [ "bytes", "futures-core", "futures-util", "http", "mime", - "mime_guess", - "rand 0.9.0", - "thiserror 2.0.11", + "rand 0.9.1", + "thiserror 2.0.12", ] [[package]] name = "rustc-demangle" -version = "0.1.24" +version = "0.1.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" +checksum = "989e6739f80c4ad5b13e0fd7fe89531180375b18520cc8c82080e4dc4035b84f" [[package]] name = "rustc-hash" -version = "1.1.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" +checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" [[package]] name = "rustc_version" @@ -2450,22 +2475,22 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.34" +version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" +checksum = "11181fbabf243db407ef8df94a6ce0b2f9a733bd8be4ad02b4eda9602296cac8" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.9.1", "errno", "libc", "linux-raw-sys", - "windows-sys", + "windows-sys 0.60.2", ] [[package]] name = "rustls" -version = "0.23.12" +version = "0.23.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c58f8c84392efc0a126acce10fa59ff7b3d2ac06ab451a33f2741989b806b044" +checksum = "2491382039b29b9b11ff08b76ff6c97cf287671dbb74f0be44bda389fffe9bd1" dependencies = [ "once_cell", "ring", @@ -2477,51 +2502,31 @@ dependencies = [ [[package]] name = "rustls-native-certs" -version = "0.7.1" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a88d6d420651b496bdd98684116959239430022a115c1240e6c3993be0b15fba" +checksum = "7fcff2dd52b58a8d98a70243663a0d234c4e2b79235637849d15913394a247d3" dependencies = [ "openssl-probe", - "rustls-pemfile", "rustls-pki-types", "schannel", - "security-framework", -] - -[[package]] -name = "rustls-native-certs" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcaf18a4f2be7326cd874a5fa579fae794320a0f388d365dca7e480e55f83f8a" -dependencies = [ - "openssl-probe", - "rustls-pemfile", - "rustls-pki-types", - "schannel", - "security-framework", -] - -[[package]] -name = "rustls-pemfile" -version = "2.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29993a25686778eb88d4189742cd713c9bce943bc54251a33509dc63cbacf73d" -dependencies = [ - "base64 0.22.1", - "rustls-pki-types", + "security-framework 3.2.0", ] [[package]] name = "rustls-pki-types" -version = "1.7.0" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "976295e77ce332211c0d24d92c0e83e50f5c5f046d11082cea19f3df13a3562d" +checksum = "229a4a4c221013e7e1f1a043678c5cc39fe5171437c88fb47151a21e6f5b5c79" +dependencies = [ + "web-time", + "zeroize", +] [[package]] name = "rustls-webpki" -version = "0.102.6" +version = "0.103.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e6b52d4fda176fd835fdc55a835d4a89b8499cad995885a21149d5ad62f852e" +checksum = "0a17884ae0c1b773f1ccd2bd4a8c72f16da897310a98b0e84bf349ad5ead92fc" dependencies = [ "ring", "rustls-pki-types", @@ -2530,9 +2535,9 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.17" +version = "1.0.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6" +checksum = "8a0d197bd2c9dc6e53b84da9556a69ba4cdfab8619eb41a8bd1cc2027a0f6b1d" [[package]] name = "rusty-fork" @@ -2548,9 +2553,9 @@ dependencies = [ [[package]] name = "ryu" -version = "1.0.18" +version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" +checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" [[package]] name = "same-file" @@ -2563,11 +2568,11 @@ dependencies = [ [[package]] name = "schannel" -version = "0.1.23" +version = "0.1.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbc91545643bcf3a0bbb6569265615222618bdf33ce4ffbbd13c4bbd4c093534" +checksum = "1f29ebaa345f945cec9fbbc532eb307f0fdad8161f281b6369539c8d84876b3d" dependencies = [ - "windows-sys", + "windows-sys 0.59.0", ] [[package]] @@ -2578,9 +2583,9 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "scraper" -version = "0.22.0" +version = "0.23.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc3d051b884f40e309de6c149734eab57aa8cc1347992710dc80bcc1c2194c15" +checksum = "527e65d9d888567588db4c12da1087598d0f6f8b346cc2c5abc91f05fc2dffe2" dependencies = [ "cssparser", "ego-tree", @@ -2607,8 +2612,21 @@ version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" dependencies = [ - "bitflags 2.6.0", - "core-foundation", + "bitflags 2.9.1", + "core-foundation 0.9.4", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework" +version = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "271720403f46ca04f7ba6f55d438f8bd878d6b8ca0a1046e8228c4145bcbb316" +dependencies = [ + "bitflags 2.9.1", + "core-foundation 0.10.1", "core-foundation-sys", "libc", "security-framework-sys", @@ -2616,9 +2634,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.11.1" +version = "2.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75da29fe9b9b08fe9d6b22b5b4bcbc75d8db3aa31e639aa56bb62e9d46bfceaf" +checksum = "49db231d56a190491cb4aeda9527f1ad45345af50b0851622a7adb8c03b01c32" dependencies = [ "core-foundation-sys", "libc", @@ -2630,7 +2648,7 @@ version = "0.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fd568a4c9bb598e291a08244a5c1f5a8a6650bee243b5b0f8dbb3d9cc1d87fe8" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.9.1", "cssparser", "derive_more", "fxhash", @@ -2640,20 +2658,20 @@ dependencies = [ "phf_codegen", "precomputed-hash", "servo_arc", - "smallvec 1.13.2", + "smallvec 1.15.1", ] [[package]] name = "semver" -version = "1.0.23" +version = "1.0.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" +checksum = "56e6fa9c48d24d85fb3de5ad847117517440f6beceb7798af16b4a87d616b8d0" [[package]] name = "serde" -version = "1.0.217" +version = "1.0.219" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02fc4265df13d6fa1d00ecff087228cc0a2b5f3c0e87e258d8b94a156e984c70" +checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" dependencies = [ "serde_derive", ] @@ -2681,20 +2699,20 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.217" +version = "1.0.219" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a9bf7cf98d04a2b28aead066b7496853d4779c9cc183c440dbac457641e19a0" +checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.104", ] [[package]] name = "serde_json" -version = "1.0.138" +version = "1.0.141" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d434192e7da787e94a6ea7e9670b26a036d0ca41e0b7efb2676dd32bae872949" +checksum = "30b9eff21ebe718216c6ec64e1d9ac57087aad11efc64e32002bce4a0d4c03d3" dependencies = [ "itoa", "memchr", @@ -2704,9 +2722,9 @@ dependencies = [ [[package]] name = "serde_path_to_error" -version = "0.1.16" +version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af99884400da37c88f5e9146b7f1fd0fbcae8f6eec4e9da38b67d05486f814a6" +checksum = "59fab13f937fa393d08645bf3a84bdfe86e296747b506ada67bb15f10f218b2a" dependencies = [ "itoa", "serde", @@ -2726,9 +2744,9 @@ dependencies = [ [[package]] name = "servo_arc" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae65c4249478a2647db249fb43e23cec56a2c8974a427e7bd8cb5a1d0964921a" +checksum = "204ea332803bd95a0b60388590d59cf6468ec9becf626e2451f1d26a1d972de4" dependencies = [ "stable_deref_trait", ] @@ -2754,10 +2772,16 @@ dependencies = [ ] [[package]] -name = "signal-hook-registry" -version = "1.4.2" +name = "shlex" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "signal-hook-registry" +version = "1.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9203b8055f63a2a00e2f593bb0510367fe707d7ff1e5c872de2f537b339e5410" dependencies = [ "libc", ] @@ -2770,30 +2794,27 @@ checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" [[package]] name = "similar" -version = "2.6.0" +version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1de1d4f81173b03af4c0cbed3c898f6bff5b870e4a7f5d6f4057d62a7a4b686e" +checksum = "bbbb5d9659141646ae647b42fe094daf6c6192d1620870b449d9557f748b2daa" [[package]] name = "siphasher" -version = "0.3.11" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" +checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d" [[package]] name = "slab" -version = "0.4.9" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" -dependencies = [ - "autocfg", -] +checksum = "04dc19736151f35336d325007ac991178d504a119863a2fcb3758cdb5e52c50d" [[package]] name = "slug" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3bd94acec9c8da640005f8e135a39fc0372e74535e6b368b7a04b875f784c8c4" +checksum = "882a80f72ee45de3cc9a5afeb2da0331d58df69e4e7d8eeb5d3c7784ae67e724" dependencies = [ "deunicode", "wasm-bindgen", @@ -2810,26 +2831,20 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.2" +version = "1.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" +checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" [[package]] name = "socket2" -version = "0.5.7" +version = "0.5.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" +checksum = "e22376abed350d73dd1cd119b57ffccad95b4e585a7cda43e286245ce23c0678" dependencies = [ "libc", - "windows-sys", + "windows-sys 0.52.0", ] -[[package]] -name = "spin" -version = "0.9.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" - [[package]] name = "spinning_top" version = "0.3.0" @@ -2847,26 +2862,25 @@ checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" [[package]] name = "string_cache" -version = "0.8.7" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f91138e76242f575eb1d3b38b4f1362f10d3a43f47d182a5b359af488a02293b" +checksum = "bf776ba3fa74f83bf4b63c3dcbbf82173db2632ed8452cb2d891d33f459de70f" dependencies = [ "new_debug_unreachable", - "once_cell", "parking_lot", - "phf_shared 0.10.0", + "phf_shared", "precomputed-hash", "serde", ] [[package]] name = "string_cache_codegen" -version = "0.5.2" +version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6bb30289b722be4ff74a408c3cc27edeaad656e06cb1fe8fa9231fa59c728988" +checksum = "c711928715f1fe0fe509c53b43e993a9a557babc2d0a3567d0a3006f1ac931a0" dependencies = [ - "phf_generator 0.10.0", - "phf_shared 0.10.0", + "phf_generator", + "phf_shared", "proc-macro2", "quote", ] @@ -2890,9 +2904,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.87" +version = "2.0.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25aa4ce346d03a6dcd68dd8b4010bcb74e54e62c90c573f394c46eae99aba32d" +checksum = "17b6f705963418cdb9927482fa304bc562ece2fdd4f616084c50b7023b435a40" dependencies = [ "proc-macro2", "quote", @@ -2901,22 +2915,22 @@ dependencies = [ [[package]] name = "sync_wrapper" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7065abeca94b6a8a577f9bd45aa0867a2238b74e8eb67cf10d492bc39351394" +checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" dependencies = [ "futures-core", ] [[package]] name = "synstructure" -version = "0.13.1" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" +checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.104", ] [[package]] @@ -2935,7 +2949,7 @@ dependencies = [ "serde", "serde_derive", "serde_json", - "thiserror 1.0.68", + "thiserror 1.0.69", "walkdir", ] @@ -2947,14 +2961,15 @@ checksum = "921f1e9c427802414907a48b21a6504ff6b3a15a1a3cf37e699590949ad9befc" [[package]] name = "tempfile" -version = "3.10.1" +version = "3.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1" +checksum = "e8a64e3985349f2441a1a9ef0b853f869006c3855f2cda6862a94d26ebb9d6a1" dependencies = [ - "cfg-if", "fastrand", + "getrandom 0.3.3", + "once_cell", "rustix", - "windows-sys", + "windows-sys 0.59.0", ] [[package]] @@ -2970,59 +2985,58 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.68" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02dd99dc800bbb97186339685293e1cc5d9df1f8fae2d0aecd9ff1c77efea892" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" dependencies = [ - "thiserror-impl 1.0.68", + "thiserror-impl 1.0.69", ] [[package]] name = "thiserror" -version = "2.0.11" +version = "2.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d452f284b73e6d76dd36758a0c8684b1d5be31f92b89d07fd5822175732206fc" +checksum = "567b8a2dae586314f7be2a752ec7474332959c6460e02bde30d702a66d488708" dependencies = [ - "thiserror-impl 2.0.11", + "thiserror-impl 2.0.12", ] [[package]] name = "thiserror-impl" -version = "1.0.68" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7c61ec9a6f64d2793d8a45faba21efbe3ced62a886d44c36a009b2b519b4c7e" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.104", ] [[package]] name = "thiserror-impl" -version = "2.0.11" +version = "2.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26afc1baea8a989337eeb52b6e72a039780ce45c3edfcc9c5b9d112feeb173c2" +checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.104", ] [[package]] name = "thread_local" -version = "1.1.8" +version = "1.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" +checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185" dependencies = [ "cfg-if", - "once_cell", ] [[package]] name = "time" -version = "0.3.37" +version = "0.3.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35e7868883861bd0e56d9ac6efcaaca0d6d5d82a2a7ec8209ff492c07cf37b21" +checksum = "8a7619e19bc266e0f9c5e6686659d394bc57973859340060a69221e57dbc0c40" dependencies = [ "deranged", "itoa", @@ -3035,15 +3049,15 @@ dependencies = [ [[package]] name = "time-core" -version = "0.1.2" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" +checksum = "c9e9a38711f559d9e3ce1cdb06dd7c5b8ea546bc90052da6d06bb76da74bb07c" [[package]] name = "time-macros" -version = "0.2.19" +version = "0.2.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2834e6017e3e5e4b9834939793b282bc03b37a3336245fa820e35e233e2a85de" +checksum = "3526739392ec93fd8b359c8e98514cb3e8e021beb4e5f597b00a0221f8ed8a49" dependencies = [ "num-conv", "time-core", @@ -3051,9 +3065,9 @@ dependencies = [ [[package]] name = "tinystr" -version = "0.7.6" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f" +checksum = "5d4f6d1145dcb577acf783d4e601bc1d76a13337bb54e6233add580b07344c8b" dependencies = [ "displaydoc", "zerovec", @@ -3061,9 +3075,9 @@ dependencies = [ [[package]] name = "tinyvec" -version = "1.8.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938" +checksum = "09b3661f17e86524eccd4371ab0429194e0d7c008abb45f7a7495b1719463c71" dependencies = [ "tinyvec_macros", ] @@ -3076,20 +3090,22 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.43.0" +version = "1.46.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d61fa4ffa3de412bfea335c6ecff681de2b609ba3c77ef3e00e521813a9ed9e" +checksum = "0cc3a2344dafbe23a245241fe8b09735b521110d30fcefbbd5feb1797ca35d17" dependencies = [ "backtrace", "bytes", + "io-uring", "libc", "mio", "parking_lot", "pin-project-lite", "signal-hook-registry", + "slab", "socket2", "tokio-macros", - "windows-sys", + "windows-sys 0.52.0", ] [[package]] @@ -3100,7 +3116,7 @@ checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.104", ] [[package]] @@ -3115,20 +3131,19 @@ dependencies = [ [[package]] name = "tokio-rustls" -version = "0.26.0" +version = "0.26.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c7bc40d0e5a97695bb96e27995cd3a08538541b0a846f65bba7a359f36700d4" +checksum = "8e727b36a1a0e8b74c376ac2211e40c2c8af09fb4013c60d910495810f008e9b" dependencies = [ "rustls", - "rustls-pki-types", "tokio", ] [[package]] name = "tokio-util" -version = "0.7.13" +version = "0.7.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7fcaa8d55a2bdd6b83ace262b016eca0d79ee02818c5c1bcdf0305114081078" +checksum = "66a539a9ad6d5d281510d5bd368c973d636c02dbf8a67300bfb6b950696ad7df" dependencies = [ "bytes", "futures-core", @@ -3165,15 +3180,18 @@ dependencies = [ [[package]] name = "tower-http" -version = "0.6.2" +version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "403fa3b783d4b626a8ad51d766ab03cb6d2dbfc46b1c5d4448395e6628dc9697" +checksum = "adc82fd73de2a9722ac5da747f12383d2bfdb93591ee6c58486e0097890f05f2" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.9.1", "bytes", + "futures-util", "http", "http-body", + "iri-string", "pin-project-lite", + "tower", "tower-layer", "tower-service", "tracing", @@ -3205,20 +3223,20 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.28" +version = "0.1.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" +checksum = "81383ab64e72a7a8b8e13130c49e3dab29def6d0c7d76a03087b3cf71c5c6903" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.104", ] [[package]] name = "tracing-core" -version = "0.1.33" +version = "0.1.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" +checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678" dependencies = [ "once_cell", "valuable", @@ -3243,7 +3261,7 @@ checksum = "e8189decb5ac0fa7bc8b96b7cb9b2701d60d48805aca84a238004d665fcc4008" dependencies = [ "nu-ansi-term", "sharded-slab", - "smallvec 1.13.2", + "smallvec 1.15.1", "thread_local", "tracing-core", "tracing-log", @@ -3263,9 +3281,9 @@ checksum = "6af6ae20167a9ece4bcb41af5b80f8a1f1df981f6391189ce00fd257af04126a" [[package]] name = "typenum" -version = "1.17.0" +version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" +checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" [[package]] name = "unarray" @@ -3275,39 +3293,42 @@ checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" [[package]] name = "unicase" -version = "2.7.0" +version = "2.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7d2d4dafb69621809a81864c9c1b864479e1235c0dd4e199924b9742439ed89" -dependencies = [ - "version_check", -] +checksum = "75b844d17643ee918803943289730bec8aac480150456169e647ed0b576ba539" [[package]] name = "unicode-ident" -version = "1.0.13" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe" +checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" [[package]] name = "unicode-normalization" -version = "0.1.23" +version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5" +checksum = "5033c97c4262335cded6d6fc3e5c18ab755e1a3dc96376350f3d8e9f009ad956" dependencies = [ "tinyvec", ] [[package]] name = "unicode-width" -version = "0.1.13" +version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0336d538f7abc86d282a4189614dfaa90810dfc2c6f6427eaf88e16311dd225d" +checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" + +[[package]] +name = "unicode-width" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a1a07cc7db3810833284e8d372ccdc6da29741639ecc70c9ec107df0fa6154c" [[package]] name = "unicode-xid" -version = "0.2.4" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" +checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" [[package]] name = "unicode_categories" @@ -3338,12 +3359,6 @@ version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" -[[package]] -name = "utf16_iter" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246" - [[package]] name = "utf8_iter" version = "1.0.4" @@ -3386,9 +3401,9 @@ dependencies = [ [[package]] name = "valuable" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" +checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" [[package]] name = "vcpkg" @@ -3404,9 +3419,9 @@ checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" [[package]] name = "wait-timeout" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f200f5b12eb75f8c1ed65abd4b2db8a6e1b138a20de009dacee265a2498f3f6" +checksum = "09ac3b126d3914f9849036f826e054cbabdc8519970b8998ddaf3b5bd3c65f11" dependencies = [ "libc", ] @@ -3432,61 +3447,63 @@ dependencies = [ [[package]] name = "wasi" -version = "0.11.0+wasi-snapshot-preview1" +version = "0.11.1+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] name = "wasi" -version = "0.13.3+wasi-0.2.2" +version = "0.14.2+wasi-0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26816d2e1a4a36a2940b96c5296ce403917633dff8f3440e9b236ed6f6bacad2" +checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3" dependencies = [ "wit-bindgen-rt", ] [[package]] name = "wasm-bindgen" -version = "0.2.92" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" +checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" dependencies = [ "cfg-if", + "once_cell", + "rustversion", "wasm-bindgen-macro", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.92" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da" +checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" dependencies = [ "bumpalo", "log", - "once_cell", "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.104", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.42" +version = "0.4.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76bc14366121efc8dbb487ab05bcc9d346b3b5ec0eaa76e46594cabbe51762c0" +checksum = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61" dependencies = [ "cfg-if", "js-sys", + "once_cell", "wasm-bindgen", "web-sys", ] [[package]] name = "wasm-bindgen-macro" -version = "0.2.92" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" +checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -3494,28 +3511,31 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.92" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" +checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.104", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.92" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" +checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" +dependencies = [ + "unicode-ident", +] [[package]] name = "wasm-streams" -version = "0.4.0" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b65dc4c90b63b118468cf747d8bf3566c1913ef60be765b5730ead9e0a3ba129" +checksum = "15053d8d85c7eccdbefef60f06769760a563c7f0a9d6902a13d35c7800b0ad65" dependencies = [ "futures-util", "js-sys", @@ -3526,9 +3546,19 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.69" +version = "0.3.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77afa9a11836342370f4817622a2f0f418b134426d91a82dfb48f532d2ec13ef" +checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "web-time" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" dependencies = [ "js-sys", "wasm-bindgen", @@ -3536,9 +3566,9 @@ dependencies = [ [[package]] name = "webpki-roots" -version = "0.26.3" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd7c23921eeb1713a4e851530e9b9756e4fb0e89978582942612524cf09f01cd" +checksum = "7e8983c3ab33d6fb807cfcdad2491c4ea8cbc8ed839181c7dfd9c67c83e261b2" dependencies = [ "rustls-pki-types", ] @@ -3561,11 +3591,11 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.8" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d4cc384e1e73b93bafa6fb4f1df8c41695c8a91cf9c4c64358067d15a7b6c6b" +checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" dependencies = [ - "windows-sys", + "windows-sys 0.59.0", ] [[package]] @@ -3576,41 +3606,61 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "windows-core" -version = "0.52.0" +version = "0.61.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" +checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3" dependencies = [ - "windows-targets", + "windows-implement", + "windows-interface", + "windows-link", + "windows-result", + "windows-strings", ] [[package]] -name = "windows-registry" -version = "0.2.0" +name = "windows-implement" +version = "0.60.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e400001bb720a623c1c69032f8e3e4cf09984deec740f007dd2b03ec864804b0" +checksum = "a47fddd13af08290e67f4acabf4b459f647552718f683a7b415d290ac744a836" dependencies = [ - "windows-result", - "windows-strings", - "windows-targets", + "proc-macro2", + "quote", + "syn 2.0.104", ] +[[package]] +name = "windows-interface" +version = "0.59.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd9211b69f8dcdfa817bfd14bf1c97c9188afa36f4750130fcdf3f400eca9fa8" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "windows-link" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" + [[package]] name = "windows-result" -version = "0.2.0" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e" +checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" dependencies = [ - "windows-targets", + "windows-link", ] [[package]] name = "windows-strings" -version = "0.1.0" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" +checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57" dependencies = [ - "windows-result", - "windows-targets", + "windows-link", ] [[package]] @@ -3619,7 +3669,25 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" dependencies = [ - "windows-targets", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" +dependencies = [ + "windows-targets 0.53.2", ] [[package]] @@ -3628,14 +3696,30 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" dependencies = [ - "windows_aarch64_gnullvm", - "windows_aarch64_msvc", - "windows_i686_gnu", - "windows_i686_gnullvm", - "windows_i686_msvc", - "windows_x86_64_gnu", - "windows_x86_64_gnullvm", - "windows_x86_64_msvc", + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm 0.52.6", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", +] + +[[package]] +name = "windows-targets" +version = "0.53.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c66f69fcc9ce11da9966ddb31a40968cad001c5bedeb5c2b82ede4253ab48aef" +dependencies = [ + "windows_aarch64_gnullvm 0.53.0", + "windows_aarch64_msvc 0.53.0", + "windows_i686_gnu 0.53.0", + "windows_i686_gnullvm 0.53.0", + "windows_i686_msvc 0.53.0", + "windows_x86_64_gnu 0.53.0", + "windows_x86_64_gnullvm 0.53.0", + "windows_x86_64_msvc 0.53.0", ] [[package]] @@ -3644,42 +3728,84 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764" + [[package]] name = "windows_aarch64_msvc" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" +[[package]] +name = "windows_aarch64_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c" + [[package]] name = "windows_i686_gnu" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" +[[package]] +name = "windows_i686_gnu" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1dc67659d35f387f5f6c479dc4e28f1d4bb90ddd1a5d3da2e5d97b42d6272c3" + [[package]] name = "windows_i686_gnullvm" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" +[[package]] +name = "windows_i686_gnullvm" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11" + [[package]] name = "windows_i686_msvc" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" +[[package]] +name = "windows_i686_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d" + [[package]] name = "windows_x86_64_gnu" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" +[[package]] +name = "windows_x86_64_gnu" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba" + [[package]] name = "windows_x86_64_gnullvm" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57" + [[package]] name = "windows_x86_64_msvc" version = "0.52.6" @@ -3687,25 +3813,25 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] -name = "wit-bindgen-rt" -version = "0.33.0" +name = "windows_x86_64_msvc" +version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3268f3d866458b787f390cf61f4bbb563b922d091359f9608842999eaee3943c" +checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486" + +[[package]] +name = "wit-bindgen-rt" +version = "0.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.9.1", ] -[[package]] -name = "write16" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936" - [[package]] name = "writeable" -version = "0.5.5" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" +checksum = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb" [[package]] name = "xz2" @@ -3718,9 +3844,9 @@ dependencies = [ [[package]] name = "yansi" -version = "0.5.1" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09041cd90cf85f7f8b2df60c646f853b7f535ce68f85244eb6731cf89fa498ec" +checksum = "cfe53a6657fd280eaa890a3bc59152892ffa3e30101319d168b781ed6529b049" [[package]] name = "yansi-term" @@ -3825,9 +3951,9 @@ dependencies = [ [[package]] name = "yoke" -version = "0.7.4" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c5b1314b079b0930c31e3af543d8ee1757b1951ae1e1565ec704403a7240ca5" +checksum = "5f41bb01b8226ef4bfd589436a297c53d118f65921786300e427be8d487695cc" dependencies = [ "serde", "stable_deref_trait", @@ -3837,74 +3963,54 @@ dependencies = [ [[package]] name = "yoke-derive" -version = "0.7.4" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28cc31741b18cb6f1d5ff12f5b7523e3d6eb0852bbbad19d73905511d9849b95" +checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.104", "synstructure", ] [[package]] name = "zerocopy" -version = "0.7.35" +version = "0.8.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" +checksum = "1039dd0d3c310cf05de012d8a39ff557cb0d23087fd44cad61df08fc31907a2f" dependencies = [ - "zerocopy-derive 0.7.35", -] - -[[package]] -name = "zerocopy" -version = "0.8.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a367f292d93d4eab890745e75a778da40909cab4d6ff8173693812f79c4a2468" -dependencies = [ - "zerocopy-derive 0.8.14", + "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.7.35" +version = "0.8.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" +checksum = "9ecf5b4cc5364572d7f4c329661bcc82724222973f2cab6f050a4e5c22f75181" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", -] - -[[package]] -name = "zerocopy-derive" -version = "0.8.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3931cb58c62c13adec22e38686b559c86a30565e16ad6e8510a337cedc611e1" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.87", + "syn 2.0.104", ] [[package]] name = "zerofrom" -version = "0.1.4" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91ec111ce797d0e0784a1116d0ddcdbea84322cd79e5d5ad173daeba4f93ab55" +checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" dependencies = [ "zerofrom-derive", ] [[package]] name = "zerofrom-derive" -version = "0.1.4" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ea7b4a3637ea8669cedf0f1fd5c286a17f3de97b8dd5a70a6c167a1730e63a5" +checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.104", "synstructure", ] @@ -3925,14 +4031,25 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.104", +] + +[[package]] +name = "zerotrie" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36f0bbd478583f79edad978b407914f61b2972f5af6fa089686016be8f9af595" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", ] [[package]] name = "zerovec" -version = "0.10.4" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa2b893d79df23bfb12d5461018d408ea19dfafe76c2c7ef6d4eba614f8ff079" +checksum = "4a05eb080e015ba39cc9e23bbe5e7fb04d5fb040350f99f34e338d5fdd294428" dependencies = [ "yoke", "zerofrom", @@ -3941,20 +4058,20 @@ dependencies = [ [[package]] name = "zerovec-derive" -version = "0.10.3" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" +checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.104", ] [[package]] name = "zip" -version = "2.2.2" +version = "2.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae9c1ea7b3a5e1f4b922ff856a129881167511563dc219869afe3787fc0c1a45" +checksum = "fabe6324e908f85a1c52063ce7aa26b68dcb7eb6dbc83a2d148403c9bc3eba50" dependencies = [ "aes", "arbitrary", @@ -3965,15 +4082,16 @@ dependencies = [ "deflate64", "displaydoc", "flate2", + "getrandom 0.3.3", "hmac", "indexmap", "lzma-rs", "memchr", "pbkdf2", - "rand 0.8.5", "sha1", - "thiserror 2.0.11", + "thiserror 2.0.12", "time", + "xz2", "zeroize", "zopfli", "zstd", @@ -3981,41 +4099,39 @@ dependencies = [ [[package]] name = "zopfli" -version = "0.8.1" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5019f391bac5cf252e93bbcc53d039ffd62c7bfb7c150414d61369afe57e946" +checksum = "edfc5ee405f504cd4984ecc6f14d02d55cfda60fa4b689434ef4102aae150cd7" dependencies = [ "bumpalo", "crc32fast", - "lockfree-object-pool", "log", - "once_cell", "simd-adler32", ] [[package]] name = "zstd" -version = "0.13.2" +version = "0.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcf2b778a664581e31e389454a7072dab1647606d44f7feea22cd5abb9c9f3f9" +checksum = "e91ee311a569c327171651566e07972200e76fcfe2242a4fa446149a3881c08a" dependencies = [ "zstd-safe", ] [[package]] name = "zstd-safe" -version = "7.2.0" +version = "7.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa556e971e7b568dc775c136fc9de8c779b1c2fc3a63defaafadffdbd3181afa" +checksum = "8f49c4d5f0abb602a93fb8736af2a4f4dd9512e36f7f570d66e65ff867ed3b9d" dependencies = [ "zstd-sys", ] [[package]] name = "zstd-sys" -version = "2.0.12+zstd.1.5.6" +version = "2.0.15+zstd.1.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a4e40c320c3cb459d9a9ff6de98cff88f4751ee9275d140e2be94a2b74e4c13" +checksum = "eb81183ddd97d0c74cedf1d50d85c8d08c1b8b68ee863bdee9e706eedba1a237" dependencies = [ "cc", "pkg-config", diff --git a/Cargo.toml b/Cargo.toml index a5581a2..8d52320 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -30,12 +30,12 @@ axum = { version = "0.8.0", default-features = false, features = [ "tracing", ] } axum-extra = { version = "0.10.0", features = ["typed-header"] } -comrak = { version = "0.35.0", default-features = false } +comrak = { version = "0.40.0", default-features = false } dotenvy = "0.15.7" envy = { path = "crates/envy" } flate2 = "1.0.30" futures-lite = "2.3.0" -governor = "0.8.0" +governor = "0.10.0" headers = "0.4.0" http = "1.1.0" humansize = "2.1.3" @@ -47,7 +47,7 @@ path_macro = "1.0.0" percent-encoding = "2.3.1" pin-project = "1.1.5" quick_cache = "0.6.0" -rand = "0.8.5" +rand = "0.9.0" regex = "1.10.4" reqwest = { version = "0.12.4", default-features = false, features = [ "json", @@ -85,8 +85,8 @@ flate2 = "1.0.30" httpdate = "1.0.3" insta = { version = "1.39.0", features = ["json"] } proptest = "1.4.0" -rstest = { version = "0.24.0", default-features = false } -scraper = "0.22.0" +rstest = { version = "0.25.0", default-features = false } +scraper = "0.23.0" temp_testdir = "0.2.3" [workspace] From e13bfa2765b2bef0370efb01ba828cdf9a0da7b3 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sun, 20 Jul 2025 19:56:25 +0200 Subject: [PATCH 218/221] chore: update release workflow to use Buildkit --- .forgejo/workflows/release.yaml | 32 ++++++++++++++++++++++++++------ Dockerfile | 3 --- 2 files changed, 26 insertions(+), 9 deletions(-) diff --git a/.forgejo/workflows/release.yaml b/.forgejo/workflows/release.yaml index daccbc4..dd04dcb 100644 --- a/.forgejo/workflows/release.yaml +++ b/.forgejo/workflows/release.yaml @@ -15,15 +15,35 @@ jobs: run: | PKG_CONFIG_SYSROOT_DIR=/usr/x86_64-linux-gnu cargo build --release --target x86_64-unknown-linux-gnu PKG_CONFIG_SYSROOT_DIR=/usr/aarch64-linux-gnu cargo build --release --target aarch64-unknown-linux-gnu - - name: ๐Ÿ‹ Build docker image - uses: https://code.thetadev.de/ThetaDev/action-kaniko@v1 + + - name: Setup Docker Buildx + uses: https://github.com/docker/setup-buildx-action@v3 + + - name: Login to Container Registry + uses: https://github.com/docker/login-action@v3 with: - image: thetadev256/artifactview username: thetadev256 password: ${{ secrets.DOCKER_TOKEN }} - tag: ${{ github.ref_name }} - tag_with_latest: ${{ startsWith(github.ref, 'refs/tags/v') }} - platforms: "linux/amd64,linux/arm64" + + - name: Docker meta + id: meta + uses: https://github.com/docker/metadata-action@v5 + with: + images: | + thetadev256/artifactview + tags: | + type=semver,pattern=v{{version}} + type=semver,pattern=v{{major}}.{{minor}} + type=semver,pattern=v{{major}} + + - name: ๐Ÿ‹ Build docker image + uses: https://github.com/docker/build-push-action@v6 + with: + push: true + tags: ${{ steps.meta.outputs.tags }} + annotations: ${{ steps.meta.outputs.annotations }} + platforms: linux/amd64,linux/arm64 + file: Dockerfile - name: Prepare release if: ${{ startsWith(github.ref, 'refs/tags/v') }} diff --git a/Dockerfile b/Dockerfile index aa7a01a..9fc13e0 100644 --- a/Dockerfile +++ b/Dockerfile @@ -8,6 +8,3 @@ COPY target/${TARGETARCH_ALT}-unknown-linux-gnu/release/artifactview /usr/bin/ar EXPOSE 3000 ENTRYPOINT ["dumb-init", "artifactview"] - -LABEL repository="https://codeberg.org/ThetaDev/action-kaniko" \ - maintainer="ThetaDev " From 43e15ca849be79905af0c517507bc3bdd0e995bb Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sun, 20 Jul 2025 20:00:20 +0200 Subject: [PATCH 219/221] chore: fix clippy lints --- crates/async_zip/src/tests/write/zip64/mod.rs | 2 +- crates/envy/src/error.rs | 6 +++--- crates/envy/src/lib.rs | 4 ++-- src/app.rs | 6 +++--- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/crates/async_zip/src/tests/write/zip64/mod.rs b/crates/async_zip/src/tests/write/zip64/mod.rs index 35e26ff..4b46e6c 100644 --- a/crates/async_zip/src/tests/write/zip64/mod.rs +++ b/crates/async_zip/src/tests/write/zip64/mod.rs @@ -74,7 +74,7 @@ async fn test_write_large_zip64_file() { assert_eq!(zip64.compressed_size.unwrap(), BATCHED_FILE_SIZE as u64); assert_eq!(zip64.uncompressed_size.unwrap(), BATCHED_FILE_SIZE as u64); } - e => panic!("Expected a Zip64 extended field, got {:?}", e), + e => panic!("Expected a Zip64 extended field, got {e:?}"), } assert_eq!(cd_entry.header.uncompressed_size, NON_ZIP64_MAX_SIZE); assert_eq!(cd_entry.header.compressed_size, NON_ZIP64_MAX_SIZE); diff --git a/crates/envy/src/error.rs b/crates/envy/src/error.rs index 3d0fec1..243bf73 100644 --- a/crates/envy/src/error.rs +++ b/crates/envy/src/error.rs @@ -15,15 +15,15 @@ impl StdError for Error {} impl fmt::Display for Error { fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result { match self { - Error::MissingValue(field) => write!(fmt, "missing value for {}", &field), - Error::Custom(ref msg) => write!(fmt, "{}", msg), + Error::MissingValue(field) => write!(fmt, "missing value for {field}"), + Error::Custom(ref msg) => write!(fmt, "{msg}"), } } } impl SerdeError for Error { fn custom(msg: T) -> Self { - Error::Custom(format!("{}", msg)) + Error::Custom(format!("{msg}")) } fn missing_field(field: &'static str) -> Error { diff --git a/crates/envy/src/lib.rs b/crates/envy/src/lib.rs index b9d8d7f..18f51e4 100644 --- a/crates/envy/src/lib.rs +++ b/crates/envy/src/lib.rs @@ -492,7 +492,7 @@ mod tests { newtype: CustomNewType(42) } ), - Err(e) => panic!("{:#?}", e), + Err(e) => panic!("{e:#?}"), } } @@ -564,7 +564,7 @@ mod tests { newtype: CustomNewType(42) } ), - Err(e) => panic!("{:#?}", e), + Err(e) => panic!("{e:#?}"), } } diff --git a/src/app.rs b/src/app.rs index 85e446f..31c1bce 100644 --- a/src/app.rs +++ b/src/app.rs @@ -809,7 +809,7 @@ fn path_components( let mut path_components = vec![ LinkItem { name: query.shortid(), - url: format!("{}/?url={}", main_url, run_url), + url: format!("{main_url}/?url={run_url}"), }, LinkItem { name: entry_name.to_owned(), @@ -886,7 +886,7 @@ fn pr_comment_text(p: PrCommentTextParams) -> String { _ = write!(&mut content, "\n\n Run [#{}]({}) ยท ", query.run, run_url); write_commit(&mut content, &p.run.head_sha); if let Some(date_started) = &date_started { - _ = write!(&mut content, " ยท {} UTC", date_started); + _ = write!(&mut content, " ยท {date_started} UTC"); } _ = content.write_str("\n\n"); @@ -929,7 +929,7 @@ fn pr_comment_text(p: PrCommentTextParams) -> String { } if let Some(date_started) = &date_started { - _ = write!(&mut prevln, " ({} UTC)", date_started); + _ = write!(&mut prevln, " ({date_started} UTC)"); } if np_content.is_some() || prev_builds.is_some() { From c911af085eb4e434f9976a9573d19e8c05985d3c Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sun, 20 Jul 2025 20:21:00 +0200 Subject: [PATCH 220/221] fix: TARGETARCH argument Buildkit workflow --- .forgejo/workflows/release.yaml | 4 ++++ Dockerfile | 4 ++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/.forgejo/workflows/release.yaml b/.forgejo/workflows/release.yaml index dd04dcb..ec2484d 100644 --- a/.forgejo/workflows/release.yaml +++ b/.forgejo/workflows/release.yaml @@ -16,6 +16,9 @@ jobs: PKG_CONFIG_SYSROOT_DIR=/usr/x86_64-linux-gnu cargo build --release --target x86_64-unknown-linux-gnu PKG_CONFIG_SYSROOT_DIR=/usr/aarch64-linux-gnu cargo build --release --target aarch64-unknown-linux-gnu + ln -s ./x86_64-unknown-linux-gnu target/amd64 + ln -s ./aarch64-unknown-linux-gnu target/arm64 + - name: Setup Docker Buildx uses: https://github.com/docker/setup-buildx-action@v3 @@ -43,6 +46,7 @@ jobs: tags: ${{ steps.meta.outputs.tags }} annotations: ${{ steps.meta.outputs.annotations }} platforms: linux/amd64,linux/arm64 + context: "." file: Dockerfile - name: Prepare release diff --git a/Dockerfile b/Dockerfile index 9fc13e0..a6b958a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,10 +1,10 @@ FROM debian:bookworm-slim -ARG TARGETARCH_ALT +ARG TARGETARCH RUN apt-get update && apt-get install -y libssl3 ca-certificates dumb-init && apt-get clean -COPY target/${TARGETARCH_ALT}-unknown-linux-gnu/release/artifactview /usr/bin/artifactview +COPY target/${TARGETARCH}/release/artifactview /usr/bin/artifactview EXPOSE 3000 ENTRYPOINT ["dumb-init", "artifactview"] From 643cda268386fdfdc3a3a714be4f37970b4d0d19 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sun, 20 Jul 2025 20:59:22 +0200 Subject: [PATCH 221/221] chore(release): release artifactview v0.4.9 --- CHANGELOG.md | 18 ++++++++++++++++++ Cargo.lock | 2 +- Cargo.toml | 2 +- 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 36447ab..56b521c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,24 @@ All notable changes to this project will be documented in this file. +## [v0.4.9](https://codeberg.org/ThetaDev/artifactview/compare/v0.4.8..v0.4.9) - 2025-07-20 + +### ๐Ÿ› Bug Fixes + +- TARGETARCH argument Buildkit workflow - ([c911af0](https://codeberg.org/ThetaDev/artifactview/commit/c911af085eb4e434f9976a9573d19e8c05985d3c)) + +### โš™๏ธ Miscellaneous Tasks + +- *(deps)* Update rust crate axum-test to v17.2.0 (#171) - ([dfa1ab5](https://codeberg.org/ThetaDev/artifactview/commit/dfa1ab54e8fd72113ed25d0a4a7f368db27fb2d0)) +- *(deps)* Update rust crate serde_json to v1.0.138 (#173) - ([de2e2fc](https://codeberg.org/ThetaDev/artifactview/commit/de2e2fc7b174b2cbe8440c3a17d8002d6edbba73)) +- *(deps)* Pin dependencies (#174) - ([aeebe74](https://codeberg.org/ThetaDev/artifactview/commit/aeebe74ddd07e1d8323f495a5065b8a9f06c2bc9)) +- *(deps)* Update rust crate env_logger to v0.11.6 (#175) - ([a970d8c](https://codeberg.org/ThetaDev/artifactview/commit/a970d8cea779690e150ddbcc416d26a2efe4a606)) +- *(deps)* Update rust crate zip to v2.2.2 (#181) - ([97852ce](https://codeberg.org/ThetaDev/artifactview/commit/97852ced9557b354642a703117b2a853e8f0c626)) +- Update dependencies - ([1367ed9](https://codeberg.org/ThetaDev/artifactview/commit/1367ed9ff1dd3e2ca142fab14c1846a2a6b46423)) +- Update release workflow to use Buildkit - ([e13bfa2](https://codeberg.org/ThetaDev/artifactview/commit/e13bfa2765b2bef0370efb01ba828cdf9a0da7b3)) +- Fix clippy lints - ([43e15ca](https://codeberg.org/ThetaDev/artifactview/commit/43e15ca849be79905af0c517507bc3bdd0e995bb)) + + ## [v0.4.8](https://codeberg.org/ThetaDev/artifactview/compare/v0.4.7..v0.4.8) - 2025-01-26 ### ๐Ÿ› Bug Fixes diff --git a/Cargo.lock b/Cargo.lock index cc2fa4a..b3f604c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -157,7 +157,7 @@ dependencies = [ [[package]] name = "artifactview" -version = "0.4.8" +version = "0.4.9" dependencies = [ "async_zip", "axum", diff --git a/Cargo.toml b/Cargo.toml index 8d52320..904e578 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "artifactview" -version = "0.4.8" +version = "0.4.9" edition = "2021" authors = ["ThetaDev "] license = "MIT"