From 43cfc1747cc9fb1f82fbe7a2d4b4dc9f12f84ed9 Mon Sep 17 00:00:00 2001 From: Aumetra Weisman Date: Sat, 16 Mar 2024 21:16:39 +0100 Subject: [PATCH] Easier testability via `testcontainers` (#499) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * factor out s3 client into own crate * add alternate testability by using testcontainers * comment out services in ci to test * use ip * unused deps * debug * update * logtracer * Enable API in actions * remove tracing for tests * fix local runs * rm host auth * remove empty execstart * unset variables * use nextest * alphabetically sort * up * yarn up * flake.lock: Update Flake lock file updates: • Updated input 'devenv': 'github:cachix/devenv/4eccee9a19ad9be42a7859211b456b281d704313' (2024-03-05) → 'github:cachix/devenv/6c0bad0045f1e1802f769f7890f6a59504825f4d' (2024-03-11) • Updated input 'flake-utils': 'github:numtide/flake-utils/d465f4819400de7c8d874d50b982301f28a84605' (2024-02-28) → 'github:numtide/flake-utils/b1d9ab70662946ef0850d488da1c9019f3a9752a' (2024-03-11) • Updated input 'nixpkgs': 'github:nixos/nixpkgs/b8697e57f10292a6165a20f03d2f42920dfaf973' (2024-03-03) → 'github:nixos/nixpkgs/d691274a972b3165335d261cc4671335f5c67de9' (2024-03-14) • Updated input 'rust-overlay': 'github:oxalica/rust-overlay/e86c0fb5d3a22a5f30d7f64ecad88643fe26449d' (2024-03-05) → 'github:oxalica/rust-overlay/7ff8e9a04ac7777a3446788cb4018b452157ab8a' (2024-03-15) * remove commented out lines * add minio test harness * add s3 test * add serial_test annotation * error out on no success * better error message * add body * change bucket name * abstract into shared function * use quick-xml to encode * multipart? * fix typo * set content-length * simplify line * set content length * aggregate etags * use stream utils instead of external counter * send abort request on error * rename future * add from impl --- .github/workflows/rust.yml | 30 +- Cargo.lock | 706 ++++++++++-------- Cargo.toml | 1 + crates/kitsune-activitypub/Cargo.toml | 6 +- crates/kitsune-cache/Cargo.toml | 4 +- crates/kitsune-captcha/Cargo.toml | 4 +- crates/kitsune-config/Cargo.toml | 2 +- crates/kitsune-core/Cargo.toml | 2 +- crates/kitsune-db/Cargo.toml | 4 +- crates/kitsune-email/Cargo.toml | 6 +- crates/kitsune-embed/Cargo.toml | 4 +- crates/kitsune-federation-filter/Cargo.toml | 2 +- crates/kitsune-http-client/Cargo.toml | 2 +- crates/kitsune-http-client/src/lib.rs | 1 - crates/kitsune-jobs/Cargo.toml | 2 +- crates/kitsune-language/Cargo.toml | 2 +- crates/kitsune-mastodon/Cargo.toml | 4 +- crates/kitsune-messaging/Cargo.toml | 4 +- crates/kitsune-messaging/src/lib.rs | 2 - crates/kitsune-messaging/src/redis.rs | 8 +- crates/kitsune-messaging/src/util.rs | 9 - crates/kitsune-observability/Cargo.toml | 4 +- crates/kitsune-oidc/Cargo.toml | 4 +- crates/kitsune-s3/Cargo.toml | 24 + crates/kitsune-s3/LICENSE-AGPL-3.0 | 1 + crates/kitsune-s3/src/lib.rs | 300 ++++++++ crates/kitsune-scss-compiler/Cargo.toml | 2 +- crates/kitsune-search/Cargo.toml | 8 +- crates/kitsune-service/Cargo.toml | 8 +- crates/kitsune-storage/Cargo.toml | 3 +- crates/kitsune-storage/src/s3.rs | 94 +-- crates/kitsune-test/Cargo.toml | 14 +- crates/kitsune-test/src/container.rs | 53 ++ crates/kitsune-test/src/lib.rs | 95 ++- crates/kitsune-test/src/resource.rs | 64 ++ crates/kitsune-type/Cargo.toml | 2 +- crates/kitsune-wasm-mrf/Cargo.toml | 8 +- .../kitsune-wasm-mrf/example-mrf/Cargo.toml | 2 +- crates/kitsune-webfinger/Cargo.toml | 4 +- flake.lock | 24 +- kitsune-cli/Cargo.toml | 4 +- kitsune-fe/package.json | 26 +- kitsune-fe/yarn.lock | 617 +++++++-------- kitsune-job-runner/Cargo.toml | 4 +- kitsune/Cargo.toml | 18 +- lib/athena/Cargo.toml | 6 +- lib/blowocking/Cargo.toml | 2 +- lib/cursiv/Cargo.toml | 2 +- lib/http-signatures/Cargo.toml | 2 +- lib/mrf-manifest/Cargo.toml | 2 +- lib/mrf-tool/Cargo.toml | 2 +- lib/speedy-uuid/Cargo.toml | 8 +- lib/tower-http-digest/Cargo.toml | 2 +- xtask/Cargo.toml | 2 +- 54 files changed, 1287 insertions(+), 929 deletions(-) delete mode 100644 crates/kitsune-messaging/src/util.rs create mode 100644 crates/kitsune-s3/Cargo.toml create mode 120000 crates/kitsune-s3/LICENSE-AGPL-3.0 create mode 100644 crates/kitsune-s3/src/lib.rs create mode 100644 crates/kitsune-test/src/container.rs create mode 100644 crates/kitsune-test/src/resource.rs diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index 34fb44d82..4c8b67d1f 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -10,6 +10,7 @@ on: env: CARGO_TERM_COLOR: always + RUST_LOG: "debug" RUSTFLAGS: "-C debuginfo=0" jobs: @@ -37,36 +38,11 @@ jobs: test: name: Test runs-on: ubuntu-latest - services: - postgres: - image: postgres - ports: - - 5432:5432 - env: - POSTGRES_USER: postgres - POSTGRES_PASSWORD: postgres - POSTGRES_DB: test_db - options: >- - --health-cmd pg_isready - --health-interval 10s - --health-timeout 5s - --health-retries 5 - redis: - image: redis - ports: - - 6379:6379 - options: >- - --health-cmd "redis-cli ping" - --health-interval 10s - --health-timeout 5s - --health-retries 5 steps: - uses: actions/checkout@v4 - uses: DeterminateSystems/nix-installer-action@v4 - uses: DeterminateSystems/magic-nix-cache-action@main - uses: Swatinem/rust-cache@v2 - uses: rui314/setup-mold@v1 - - run: nix develop --impure --command bash -c "unset LD_LIBRARY_PATH && cargo test --all-features -- --show-output" - env: - DATABASE_URL: "postgres://postgres:postgres@localhost/test_db" - REDIS_URL: "redis://localhost" + - uses: taiki-e/install-action@nextest + - run: nix develop --impure --command bash -c "unset DATABASE_URL LD_LIBRARY_PATH REDIS_URL && cargo nextest run --all-features" diff --git a/Cargo.lock b/Cargo.lock index 86e819d44..3c8590d2a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -179,9 +179,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.80" +version = "1.0.81" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ad32ce52e4161730f7098c077cd2ed6229b5804ccf99e5366be1ab72a98b4e1" +checksum = "0952808a6c2afd1aa8947271f3a60f1a6763c7b912d210184c5149b5cf147247" [[package]] name = "arbitrary" @@ -345,9 +345,9 @@ dependencies = [ [[package]] name = "async-graphql" -version = "7.0.2" +version = "7.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ba89a35adbed833e0d21db467093a087c3a07b497626009eae02cb36f060567" +checksum = "261fa27d5bff5afdf7beff291b3bc73f99d1529804c70e51b0fbc51e70b1c6a9" dependencies = [ "async-graphql-derive", "async-graphql-parser", @@ -381,9 +381,9 @@ dependencies = [ [[package]] name = "async-graphql-axum" -version = "7.0.2" +version = "7.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74cb0d91622015797c94dbb862580ba5e89bfd4b9066ad7d8d9ac8e1ca5ab6f8" +checksum = "93605d26b9da33b4cf6541906a9eb9e74396f1accbbc0f066e06f3b0869b84fc" dependencies = [ "async-graphql", "async-trait", @@ -399,26 +399,26 @@ dependencies = [ [[package]] name = "async-graphql-derive" -version = "7.0.2" +version = "7.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9547f7f22688f022ea8001bdd57a1fce8996045dcb959b1730a79bafd366a9d9" +checksum = "3188809947798ea6db736715a60cf645ba3b87ea031c710130e1476b48e45967" dependencies = [ "Inflector", "async-graphql-parser", - "darling", + "darling 0.20.8", "proc-macro-crate", "proc-macro2", "quote", - "strum 0.25.0", + "strum", "syn 2.0.52", "thiserror", ] [[package]] name = "async-graphql-parser" -version = "7.0.2" +version = "7.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a8e3d4cc5074c46adfee619b5b6cf817943332f772ed5930ed78871f7dbbac6" +checksum = "d4e65a0b83027f35b2a5d9728a098bc66ac394caa8191d2c65ed9eb2985cf3d8" dependencies = [ "async-graphql-value", "pest", @@ -428,9 +428,9 @@ dependencies = [ [[package]] name = "async-graphql-value" -version = "7.0.2" +version = "7.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53ff1287a1283ea772b4099dd556ba4577d35f069ea4a93f337a525beefcfacf" +checksum = "68e40849c29a39012d38bff87bfed431f1ed6c53fbec493294c1045d61a7ae75" dependencies = [ "bytes", "indexmap 2.2.5", @@ -726,7 +726,7 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "00c055ee2d014ae5981ce1016374e8213682aa14d9bf40e48ab48b5f3ef20eaa" dependencies = [ - "heck", + "heck 0.4.1", "proc-macro2", "quote", "syn 2.0.52", @@ -792,9 +792,9 @@ checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" [[package]] name = "basic-toml" -version = "0.1.8" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2db21524cad41c5591204d22d75e1970a2d1f71060214ca931dc7d5afe2c14e5" +checksum = "823388e228f614e9558c6804262db37960ec8821856535f5c3f59913140558f8" dependencies = [ "serde", ] @@ -907,9 +907,9 @@ dependencies = [ [[package]] name = "blake3" -version = "1.5.0" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0231f06152bf547e9c2b5194f247cd97aacf6dcd8b15d8e5ec0663f64580da87" +checksum = "30cca6d3674597c30ddf2c587bf8d9d65c9a84d2326d941cc79c9842dfe0ef52" dependencies = [ "arrayref", "arrayvec", @@ -954,6 +954,16 @@ dependencies = [ "tracing", ] +[[package]] +name = "bollard-stubs" +version = "1.42.0-rc.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed59b5c00048f48d7af971b71f800fdf23e858844a6f9e4d32ca72e9399e7864" +dependencies = [ + "serde", + "serde_with 1.14.0", +] + [[package]] name = "brotli" version = "3.4.0" @@ -1249,9 +1259,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.2" +version = "4.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b230ab84b0ffdf890d5a10abdbc8b83ae1c4918275daea1ab8801f71536b2651" +checksum = "949626d00e063efc93b6dca932419ceb5432f99769911c0b995f7e884c778813" dependencies = [ "clap_builder", "clap_derive", @@ -1272,11 +1282,11 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.0" +version = "4.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "307bc0538d5f0f83b8248db3087aa92fe504e4691294d0c96c0eabc33f47ba47" +checksum = "90239a040c80f5e14809ca132ddc4176ab33d5e17e49691793296e3fcb34d72f" dependencies = [ - "heck", + "heck 0.5.0", "proc-macro2", "quote", "syn 2.0.52", @@ -1291,7 +1301,7 @@ checksum = "98cc8fbded0c607b7ba9dd60cd98df59af97e84d24e49c8557331cfc26d301ce" [[package]] name = "client-sdk-common" version = "0.1.0" -source = "git+https://github.com/Lantern-chat/client-sdk-rs#27e8019054c8b93bad674b9419c53802f8775842" +source = "git+https://github.com/Lantern-chat/client-sdk-rs#a7b9db9d3794dfea50ad543769ec8396d6743114" dependencies = [ "bitflags_serde_shim", "rkyv", @@ -1341,6 +1351,21 @@ dependencies = [ "crossbeam-utils", ] +[[package]] +name = "conquer-once" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d008a441c0f269f36ca13712528069a86a3e60dffee1d98b976eb3b0b2160b4" +dependencies = [ + "conquer-util", +] + +[[package]] +name = "conquer-util" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e763eef8846b13b380f37dfecda401770b0ca4e56e95170237bd7c25c7db3582" + [[package]] name = "console" version = "0.15.8" @@ -1443,18 +1468,18 @@ dependencies = [ [[package]] name = "cranelift-bforest" -version = "0.105.2" +version = "0.105.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9515fcc42b6cb5137f76b84c1a6f819782d0cf12473d145d3bc5cd67eedc8bc2" +checksum = "16d5521e2abca66bbb1ddeecbb6f6965c79160352ae1579b39f8c86183895c24" dependencies = [ "cranelift-entity", ] [[package]] name = "cranelift-codegen" -version = "0.105.2" +version = "0.105.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ad827c6071bfe6d22de1bc331296a29f9ddc506ff926d8415b435ec6a6efce0" +checksum = "ef40a4338a47506e832ac3e53f7f1375bc59351f049a8379ff736dd02565bd95" dependencies = [ "bumpalo", "cranelift-bforest", @@ -1473,33 +1498,33 @@ dependencies = [ [[package]] name = "cranelift-codegen-meta" -version = "0.105.2" +version = "0.105.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10e6b36237a9ca2ce2fb4cc7741d418a080afa1327402138412ef85d5367bef1" +checksum = "d24cd5d85985c070f73dfca07521d09086362d1590105ba44b0932bf33513b61" dependencies = [ "cranelift-codegen-shared", ] [[package]] name = "cranelift-codegen-shared" -version = "0.105.2" +version = "0.105.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c36bf4bfb86898a94ccfa773a1f86e8a5346b1983ff72059bdd2db4600325251" +checksum = "e0584c4363e3aa0a3c7cb98a778fbd5326a3709f117849a727da081d4051726c" [[package]] name = "cranelift-control" -version = "0.105.2" +version = "0.105.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cbf36560e7a6bd1409ca91e7b43b2cc7ed8429f343d7605eadf9046e8fac0d0" +checksum = "f25ecede098c6553fdba362a8e4c9ecb8d40138363bff47f9712db75be7f0571" dependencies = [ "arbitrary", ] [[package]] name = "cranelift-entity" -version = "0.105.2" +version = "0.105.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a71e11061a75b1184c09bea97c026a88f08b59ade96a7bb1f259d4ea0df2e942" +checksum = "6ea081a42f25dc4c5b248b87efdd87dcd3842a1050a37524ec5391e6172058cb" dependencies = [ "serde", "serde_derive", @@ -1507,9 +1532,9 @@ dependencies = [ [[package]] name = "cranelift-frontend" -version = "0.105.2" +version = "0.105.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af5d4da63143ee3485c7bcedde0a818727d737d1083484a0ceedb8950c89e495" +checksum = "9796e712f5af797e247784f7518e6b0a83a8907d73d51526982d86ecb3a58b68" dependencies = [ "cranelift-codegen", "log", @@ -1519,15 +1544,15 @@ dependencies = [ [[package]] name = "cranelift-isle" -version = "0.105.2" +version = "0.105.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "457a9832b089e26f5eea70dcf49bed8ec6edafed630ce7c83161f24d46ab8085" +checksum = "f4a66ccad5782f15c80e9dd5af0df4acfe6e3eee98e8f7354a2e5c8ec3104bdd" [[package]] name = "cranelift-native" -version = "0.105.2" +version = "0.105.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b490d579df1ce365e1ea359e24ed86d82289fa785153327c2f6a69a59a731e4" +checksum = "285e80df1d9b79ded9775b285df68b920a277b84f88a7228d2f5bc31fcdc58eb" dependencies = [ "cranelift-codegen", "libc", @@ -1536,9 +1561,9 @@ dependencies = [ [[package]] name = "cranelift-wasm" -version = "0.105.2" +version = "0.105.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8cd747ed7f9a461dda9c388415392f6bb95d1a6ef3b7694d17e0817eb74b7798" +checksum = "4135b0ab01fd16aa8f8821196e9e2fe15953552ccaef8ba5153be0ced04ef757" dependencies = [ "cranelift-codegen", "cranelift-entity", @@ -1709,7 +1734,7 @@ dependencies = [ "openssl-probe", "openssl-sys", "schannel", - "socket2 0.5.6", + "socket2", "windows-sys 0.52.0", ] @@ -1775,14 +1800,38 @@ dependencies = [ "syn 2.0.52", ] +[[package]] +name = "darling" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a01d95850c592940db9b8194bc39f4bc0e89dee5c4265e4b1807c34a9aba453c" +dependencies = [ + "darling_core 0.13.4", + "darling_macro 0.13.4", +] + [[package]] name = "darling" version = "0.20.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "54e36fcd13ed84ffdfda6f5be89b31287cbb80c439841fe69e04841435464391" dependencies = [ - "darling_core", - "darling_macro", + "darling_core 0.20.8", + "darling_macro 0.20.8", +] + +[[package]] +name = "darling_core" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "859d65a907b6852c9361e3185c862aae7fafd2887876799fa55f5f99dc40d610" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim 0.10.0", + "syn 1.0.109", ] [[package]] @@ -1799,13 +1848,24 @@ dependencies = [ "syn 2.0.52", ] +[[package]] +name = "darling_macro" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c972679f83bdf9c42bd905396b6c3588a843a17f0f16dfcfa3e2c5d57441835" +dependencies = [ + "darling_core 0.13.4", + "quote", + "syn 1.0.109", +] + [[package]] name = "darling_macro" version = "0.20.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a668eda54683121533a393014d8692171709ff57a7d61f187b6e782719f8933f" dependencies = [ - "darling_core", + "darling_core 0.20.8", "quote", "syn 2.0.52", ] @@ -1865,7 +1925,7 @@ version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d48cda787f839151732d396ac69e3473923d54312c070ee21e9effcaa8ca0b1d" dependencies = [ - "darling", + "darling 0.20.8", "proc-macro2", "quote", "syn 2.0.52", @@ -1916,9 +1976,9 @@ dependencies = [ [[package]] name = "diesel" -version = "2.1.4" +version = "2.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62c6fcf842f17f8c78ecf7c81d75c5ce84436b41ee07e03f490fbb5f5a8731d8" +checksum = "03fc05c17098f21b89bc7d98fe1dd3cce2c11c2ad8e145f2a44fe08ed28eb559" dependencies = [ "bitflags 2.4.2", "byteorder", @@ -1944,9 +2004,9 @@ dependencies = [ [[package]] name = "diesel_derives" -version = "2.1.2" +version = "2.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef8337737574f55a468005a83499da720f20c65586241ffea339db9ecdfd2b44" +checksum = "5d02eecb814ae714ffe61ddc2db2dd03e6c49a42e269b5001355500d431cce0c" dependencies = [ "diesel_table_macro_syntax", "proc-macro2", @@ -2637,9 +2697,9 @@ dependencies = [ [[package]] name = "h2" -version = "0.3.24" +version = "0.3.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb2c4422095b67ee78da96fbb51a4cc413b3b25883c7717ff7ca1ab31022c9c9" +checksum = "4fbd2820c5e49886948654ab546d0688ff24530286bdcf8fca3cefb16d4618eb" dependencies = [ "bytes", "fnv", @@ -2656,9 +2716,9 @@ dependencies = [ [[package]] name = "h2" -version = "0.4.2" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31d030e59af851932b72ceebadf4a2b5986dba4c3b99dd2493f8273a0f151943" +checksum = "51ee2dd2e4f378392eeff5d51618cd9a63166a2513846bbc55f21cfacd9199d4" dependencies = [ "bytes", "fnv", @@ -2754,6 +2814,12 @@ dependencies = [ "unicode-segmentation", ] +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + [[package]] name = "hermit-abi" version = "0.3.9" @@ -2864,12 +2930,12 @@ dependencies = [ [[package]] name = "http-body-util" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41cb79eb393015dadd30fc252023adb0b2400a0caee0fa2a077e6e21a551e840" +checksum = "0475f8b2ac86659c21b64320d5d653f9efe42acd2a4e560073ec61a155a34f1d" dependencies = [ "bytes", - "futures-util", + "futures-core", "http 1.1.0", "http-body 1.0.0", "pin-project-lite", @@ -2906,7 +2972,7 @@ dependencies = [ "miette", "pkcs8", "proptest", - "ring 0.17.8", + "ring", "scoped-futures", "thiserror", "tick-tock-mock", @@ -2945,14 +3011,14 @@ dependencies = [ "futures-channel", "futures-core", "futures-util", - "h2 0.3.24", + "h2 0.3.25", "http 0.2.12", "http-body 0.4.6", "httparse", "httpdate", "itoa 1.0.10", "pin-project-lite", - "socket2 0.5.6", + "socket2", "tokio", "tower-service", "tracing", @@ -2968,7 +3034,7 @@ dependencies = [ "bytes", "futures-channel", "futures-util", - "h2 0.4.2", + "h2 0.4.3", "http 1.1.0", "http-body 1.0.0", "httparse", @@ -2991,11 +3057,11 @@ dependencies = [ "hyper 1.2.0", "hyper-util", "log", - "rustls 0.22.2", - "rustls-native-certs 0.7.0", + "rustls", + "rustls-native-certs", "rustls-pki-types", "tokio", - "tokio-rustls 0.25.0", + "tokio-rustls", "tower-service", ] @@ -3024,7 +3090,7 @@ dependencies = [ "http-body 1.0.0", "hyper 1.2.0", "pin-project-lite", - "socket2 0.5.6", + "socket2", "tokio", "tower", "tower-service", @@ -3301,12 +3367,13 @@ dependencies = [ [[package]] name = "jsonwebtoken" -version = "8.3.0" +version = "9.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6971da4d9c3aa03c3d8f3ff0f4155b534aad021292003895a469716b2a230378" +checksum = "5c7ea04a7c5c055c175f189b6dc6ba036fd62306b58c66c9f6389036c503a3f4" dependencies = [ "base64 0.21.7", - "ring 0.16.20", + "js-sys", + "ring", "serde", "serde_json", ] @@ -3399,7 +3466,7 @@ dependencies = [ "simd-json", "simdutf8", "speedy-uuid", - "strum 0.26.1", + "strum", "tempfile", "thiserror", "time", @@ -3492,7 +3559,7 @@ dependencies = [ "serde", "serde_urlencoded", "simd-json", - "strum 0.26.1", + "strum", "thiserror", "typed-builder", ] @@ -3525,7 +3592,7 @@ dependencies = [ "serde", "smol_str", "tokio", - "toml 0.8.10", + "toml 0.8.11", ] [[package]] @@ -3562,8 +3629,8 @@ dependencies = [ "miette", "num-derive", "num-traits", - "rustls 0.22.2", - "rustls-native-certs 0.7.0", + "rustls", + "rustls-native-certs", "serde", "serial_test", "simd-json", @@ -3821,6 +3888,23 @@ dependencies = [ "url", ] +[[package]] +name = "kitsune-s3" +version = "0.0.1-pre.5" +dependencies = [ + "bytes", + "futures-util", + "http 1.1.0", + "kitsune-http-client", + "kitsune-test", + "quick-xml 0.31.0", + "rusty-s3", + "serde", + "serial_test", + "tokio", + "typed-builder", +] + [[package]] name = "kitsune-scss-compiler" version = "0.0.1-pre.5" @@ -3848,7 +3932,7 @@ dependencies = [ "miette", "serde", "speedy-uuid", - "strum 0.26.1", + "strum", "thiserror", "tracing", "typed-builder", @@ -3928,8 +4012,7 @@ dependencies = [ "bytes", "derive_more 1.0.0-beta.6", "futures-util", - "http 1.1.0", - "kitsune-http-client", + "kitsune-s3", "rusty-s3", "tempfile", "tokio", @@ -3949,10 +4032,14 @@ dependencies = [ "isolang", "kitsune-config", "kitsune-db", + "kitsune-s3", "multiplex-pool", "pin-project-lite", "redis", + "rusty-s3", "scoped-futures", + "testcontainers", + "testcontainers-modules", ] [[package]] @@ -3966,7 +4053,7 @@ dependencies = [ "simd-json", "smol_str", "speedy-uuid", - "strum 0.26.1", + "strum", "utoipa", ] @@ -4089,11 +4176,11 @@ dependencies = [ "nom", "percent-encoding", "quoted_printable", - "rustls 0.22.2", - "rustls-pemfile 2.1.1", - "socket2 0.5.6", + "rustls", + "rustls-pemfile", + "socket2", "tokio", - "tokio-rustls 0.25.0", + "tokio-rustls", "tracing", "url", "webpki-roots", @@ -4296,9 +4383,9 @@ dependencies = [ [[package]] name = "lol_html" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10662f7aad081ec900fd735be33076da75e0389400277dc3734e2b0aa02bb115" +checksum = "a4629ff9c2deeb7aad9b2d0f379fc41937a02f3b739f007732c46af40339dee5" dependencies = [ "bitflags 2.4.2", "cfg-if", @@ -4309,7 +4396,6 @@ dependencies = [ "lazycell", "memchr", "mime", - "safemem", "selectors 0.22.0", "thiserror", ] @@ -4390,21 +4476,22 @@ dependencies = [ [[package]] name = "meilisearch-index-setting-macro" -version = "0.24.3" +version = "0.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1f2124b55b9cb28e6a08b28854f4e834a51333cbdc2f72935f401efa686c13c" +checksum = "498e40a5e8be8cfc405bf4c99a093bca32df2e7ea21e041269aa906cfca673a4" dependencies = [ "convert_case 0.6.0", "proc-macro2", "quote", - "syn 1.0.109", + "structmeta", + "syn 2.0.52", ] [[package]] name = "meilisearch-sdk" -version = "0.24.3" +version = "0.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2257ea8ed24b079c21570f473e58cccc3de23b46cee331fc513fccdc3f1ae5a1" +checksum = "8977e156332d73545daea1187af11599a953f37b9fd22677d98a04cb965ed55e" dependencies = [ "async-trait", "either", @@ -4490,9 +4577,9 @@ dependencies = [ [[package]] name = "metrics-util" -version = "0.16.2" +version = "0.16.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ece71ab046dcf45604e573329966ec1db5ff4b81cfa170a924ff4c959ab5451a" +checksum = "8b07a5eb561b8cbc16be2d216faf7757f9baf3bfb94dbb0fae3df8387a5bb47f" dependencies = [ "aho-corasick", "crossbeam-epoch", @@ -4674,11 +4761,12 @@ dependencies = [ [[package]] name = "mrml" -version = "3.0.4" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11090cceb14c2eaf9d10c1503937b3a53323f322c475f409c1e51a0d86949a8d" +checksum = "70b2e3b2ec6b01dcced4bdc6f446c85d9a48cf7c995e357b3b086ec9ab310211" dependencies = [ "indexmap 2.2.5", + "itertools 0.12.1", "mrml-macros", "rustc-hash", "thiserror", @@ -4737,9 +4825,9 @@ checksum = "6a51313c5820b0b02bd422f4b44776fbf47961755c74ce64afc73bfad10226c3" [[package]] name = "new_debug_unreachable" -version = "1.0.4" +version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4a24736216ec316047a1fc4252e27dabb04218aa4a3f37c6e7ddbf1f9782b54" +checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" [[package]] name = "nibble_vec" @@ -4961,7 +5049,7 @@ dependencies = [ "serde_json", "serde_path_to_error", "serde_plain", - "serde_with", + "serde_with 3.7.0", "sha2", "subtle", "thiserror", @@ -5689,9 +5777,9 @@ checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068" [[package]] name = "proc-macro2" -version = "1.0.78" +version = "1.0.79" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae" +checksum = "e835ff2298f5721608eb1a980ecaee1aef2c132bf95ecc026a11b7bf3c01c02e" dependencies = [ "unicode-ident", ] @@ -5814,6 +5902,26 @@ version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a993555f31e5a609f617c12db6250dedcac1b0a85076912c436e6fc9b2c8e6a3" +[[package]] +name = "quick-xml" +version = "0.30.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eff6510e86862b57b210fd8cbe8ed3f0d7d600b9c2863cd4549a2e033c66e956" +dependencies = [ + "memchr", + "serde", +] + +[[package]] +name = "quick-xml" +version = "0.31.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1004a344b30a54e2ee58d66a71b32d2db2feb0a31f9a2d302bf0536f15de2a33" +dependencies = [ + "memchr", + "serde", +] + [[package]] name = "quote" version = "1.0.35" @@ -5966,9 +6074,9 @@ dependencies = [ [[package]] name = "redis" -version = "0.24.0" +version = "0.25.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c580d9cbbe1d1b479e8d67cf9daf6a62c957e6846048408b80b43ac3f6af84cd" +checksum = "71d64e978fd98a0e6b105d066ba4889a7301fca65aeac850a877d8797343feeb" dependencies = [ "ahash 0.8.11", "arc-swap", @@ -5980,16 +6088,16 @@ dependencies = [ "itoa 1.0.10", "percent-encoding", "pin-project-lite", - "rustls 0.21.10", - "rustls-native-certs 0.6.3", - "rustls-pemfile 1.0.4", - "rustls-webpki 0.101.7", + "rustls", + "rustls-native-certs", + "rustls-pemfile", + "rustls-pki-types", "ryu", "sha1_smol", - "socket2 0.4.10", + "socket2", "tokio", "tokio-retry", - "tokio-rustls 0.24.1", + "tokio-rustls", "tokio-util", "url", ] @@ -6104,21 +6212,6 @@ dependencies = [ "subtle", ] -[[package]] -name = "ring" -version = "0.16.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc" -dependencies = [ - "cc", - "libc", - "once_cell", - "spin 0.5.2", - "untrusted 0.7.1", - "web-sys", - "winapi", -] - [[package]] name = "ring" version = "0.17.8" @@ -6130,7 +6223,7 @@ dependencies = [ "getrandom 0.2.12", "libc", "spin 0.9.8", - "untrusted 0.9.0", + "untrusted", "windows-sys 0.52.0", ] @@ -6305,18 +6398,6 @@ dependencies = [ "windows-sys 0.52.0", ] -[[package]] -name = "rustls" -version = "0.21.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9d5a6813c0759e4609cd494e8e725babae6a2ca7b62a5536a13daaec6fcb7ba" -dependencies = [ - "log", - "ring 0.17.8", - "rustls-webpki 0.101.7", - "sct", -] - [[package]] name = "rustls" version = "0.22.2" @@ -6324,25 +6405,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e87c9956bd9807afa1f77e0f7594af32566e830e088a5576d27c5b6f30f49d41" dependencies = [ "log", - "ring 0.17.8", + "ring", "rustls-pki-types", - "rustls-webpki 0.102.2", + "rustls-webpki", "subtle", "zeroize", ] -[[package]] -name = "rustls-native-certs" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9aace74cb666635c918e9c12bc0d348266037aa8eb599b5cba565709a8dff00" -dependencies = [ - "openssl-probe", - "rustls-pemfile 1.0.4", - "schannel", - "security-framework", -] - [[package]] name = "rustls-native-certs" version = "0.7.0" @@ -6350,21 +6419,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f1fb85efa936c42c6d5fc28d2629bb51e4b2f4b8a5211e297d599cc5a093792" dependencies = [ "openssl-probe", - "rustls-pemfile 2.1.1", + "rustls-pemfile", "rustls-pki-types", "schannel", "security-framework", ] -[[package]] -name = "rustls-pemfile" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" -dependencies = [ - "base64 0.21.7", -] - [[package]] name = "rustls-pemfile" version = "2.1.1" @@ -6381,25 +6441,15 @@ version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5ede67b28608b4c60685c7d54122d4400d90f62b40caee7700e700380a390fa8" -[[package]] -name = "rustls-webpki" -version = "0.101.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" -dependencies = [ - "ring 0.17.8", - "untrusted 0.9.0", -] - [[package]] name = "rustls-webpki" version = "0.102.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "faaa0a62740bedb9b2ef5afa303da42764c012f743917351dc9a237ea1663610" dependencies = [ - "ring 0.17.8", + "ring", "rustls-pki-types", - "untrusted 0.9.0", + "untrusted", ] [[package]] @@ -6414,8 +6464,13 @@ version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "31aa883f1b986a5249641e574ca0e11ac4fb9970b009c6fbb96fedaf4fa78db8" dependencies = [ + "base64 0.21.7", "hmac", + "md-5", "percent-encoding", + "quick-xml 0.30.0", + "serde", + "serde_json", "sha2", "time", "url", @@ -6428,12 +6483,6 @@ version = "1.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e86697c916019a8588c99b5fac3cead74ec0b4b819707a682fd4d23fa0ce1ba1" -[[package]] -name = "safemem" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef703b7cb59335eae2eb93ceb664c0eb7ea6bf567079d843e09420219668e072" - [[package]] name = "same-file" version = "1.0.6" @@ -6508,16 +6557,6 @@ dependencies = [ "tendril", ] -[[package]] -name = "sct" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" -dependencies = [ - "ring 0.17.8", - "untrusted 0.9.0", -] - [[package]] name = "seahash" version = "4.1.0" @@ -6652,9 +6691,9 @@ dependencies = [ [[package]] name = "serde_html_form" -version = "0.2.4" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20e1066e1cfa6692a722cf40386a2caec36da5ddc4a2c16df592f0f609677e8c" +checksum = "50437e6a58912eecc08865e35ea2e8d365fbb2db0debb1c8bb43bf1faf055f25" dependencies = [ "form_urlencoded", "indexmap 2.2.5", @@ -6676,9 +6715,9 @@ dependencies = [ [[package]] name = "serde_path_to_error" -version = "0.1.15" +version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebd154a240de39fdebcf5775d2675c204d7c13cf39a4c697be6493c8e734337c" +checksum = "af99884400da37c88f5e9146b7f1fd0fbcae8f6eec4e9da38b67d05486f814a6" dependencies = [ "itoa 1.0.10", "serde", @@ -6725,9 +6764,19 @@ dependencies = [ [[package]] name = "serde_with" -version = "3.6.1" +version = "1.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "678b5a069e50bf00ecd22d0cd8ddf7c236f68581b03db652061ed5eb13a312ff" +dependencies = [ + "serde", + "serde_with_macros 1.5.2", +] + +[[package]] +name = "serde_with" +version = "3.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15d167997bd841ec232f5b2b8e0e26606df2e7caa4c31b95ea9ca52b200bd270" +checksum = "ee80b0e361bbf88fd2f6e242ccd19cfda072cb0faa6ae694ecee08199938569a" dependencies = [ "base64 0.21.7", "chrono", @@ -6737,17 +6786,29 @@ dependencies = [ "serde", "serde_derive", "serde_json", - "serde_with_macros", + "serde_with_macros 3.7.0", "time", ] [[package]] name = "serde_with_macros" -version = "3.6.1" +version = "1.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "865f9743393e638991566a8b7a479043c2c8da94a33e0a31f18214c9cae0a64d" +checksum = "e182d6ec6f05393cc0e5ed1bf81ad6db3a8feedf8ee515ecdd369809bcce8082" dependencies = [ - "darling", + "darling 0.13.4", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "serde_with_macros" +version = "3.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6561dc161a9224638a31d876ccdfefbc1df91d3f3a8342eddb35f055d48c7655" +dependencies = [ + "darling 0.20.8", "proc-macro2", "quote", "syn 2.0.52", @@ -6844,6 +6905,16 @@ dependencies = [ "lazy_static", ] +[[package]] +name = "signal-hook" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8621587d4798caf8eb44879d42e56b9a93ea5dcd315a6487c357130095b62801" +dependencies = [ + "libc", + "signal-hook-registry", +] + [[package]] name = "signal-hook-registry" version = "1.4.1" @@ -6984,16 +7055,6 @@ dependencies = [ "serde", ] -[[package]] -name = "socket2" -version = "0.4.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f7916fc008ca5542385b89a3d3ce689953c143e9304a9bf8beec1de48994c0d" -dependencies = [ - "libc", - "winapi", -] - [[package]] name = "socket2" version = "0.5.6" @@ -7146,44 +7207,45 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5ee073c9e4cd00e28217186dbe12796d692868f432bf2e97ee73bed0c56dfa01" [[package]] -name = "strum" -version = "0.25.0" +name = "structmeta" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "290d54ea6f91c969195bdbcd7442c8c2a2ba87da8bf60a7ee86a235d4bc1e125" +checksum = "2e1575d8d40908d70f6fd05537266b90ae71b15dbbe7a8b7dffa2b759306d329" dependencies = [ - "strum_macros 0.25.3", + "proc-macro2", + "quote", + "structmeta-derive", + "syn 2.0.52", ] [[package]] -name = "strum" -version = "0.26.1" +name = "structmeta-derive" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "723b93e8addf9aa965ebe2d11da6d7540fa2283fcea14b3371ff055f7ba13f5f" +checksum = "152a0b65a590ff6c3da95cabe2353ee04e6167c896b28e3b14478c2636c922fc" dependencies = [ - "phf 0.10.1", - "strum_macros 0.26.1", + "proc-macro2", + "quote", + "syn 2.0.52", ] [[package]] -name = "strum_macros" -version = "0.25.3" +name = "strum" +version = "0.26.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23dc1fa9ac9c169a78ba62f0b841814b7abae11bdd047b9c58f893439e309ea0" +checksum = "5d8cec3501a5194c432b2b7976db6b7d10ec95c253208b45f83f7136aa985e29" dependencies = [ - "heck", - "proc-macro2", - "quote", - "rustversion", - "syn 2.0.52", + "phf 0.10.1", + "strum_macros", ] [[package]] name = "strum_macros" -version = "0.26.1" +version = "0.26.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a3417fc93d76740d974a01654a09777cb500428cc874ca9f45edfe0c4d4cd18" +checksum = "c6cf59daf282c0a494ba14fd21610a0325f9f90ec9d1231dea26bcb1d696c946" dependencies = [ - "heck", + "heck 0.4.1", "proc-macro2", "quote", "rustversion", @@ -7312,6 +7374,34 @@ dependencies = [ "windows-sys 0.48.0", ] +[[package]] +name = "testcontainers" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f83d2931d7f521af5bae989f716c3fa43a6af9af7ec7a5e21b59ae40878cec00" +dependencies = [ + "bollard-stubs", + "conquer-once", + "futures", + "hex", + "hmac", + "log", + "rand 0.8.5", + "serde", + "serde_json", + "sha2", + "signal-hook", +] + +[[package]] +name = "testcontainers-modules" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d0334776e1e8ee7c504a922c5236daf865ffe413aa630d84ae91dcce0b10bc3" +dependencies = [ + "testcontainers", +] + [[package]] name = "textwrap" version = "0.16.1" @@ -7331,18 +7421,18 @@ checksum = "8eaa81235c7058867fa8c0e7314f33dcce9c215f535d1913822a2b3f5e289f3c" [[package]] name = "thiserror" -version = "1.0.57" +version = "1.0.58" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e45bcbe8ed29775f228095caf2cd67af7a4ccf756ebff23a306bf3e8b47b24b" +checksum = "03468839009160513471e86a034bb2c5c0e4baae3b43f79ffc55c4a5427b3297" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.57" +version = "1.0.58" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a953cb265bef375dae3de6663da4d3804eee9682ea80d8e2542529b73c531c81" +checksum = "c61f3ba182994efc43764a46c018c347bc492c79f024e705f46567b418f6d4f7" dependencies = [ "proc-macro2", "quote", @@ -7438,7 +7528,7 @@ dependencies = [ "parking_lot 0.12.1", "pin-project-lite", "signal-hook-registry", - "socket2 0.5.6", + "socket2", "tokio-macros", "windows-sys 0.48.0", ] @@ -7484,7 +7574,7 @@ dependencies = [ "postgres-protocol", "postgres-types", "rand 0.8.5", - "socket2 0.5.6", + "socket2", "tokio", "tokio-util", "whoami", @@ -7497,11 +7587,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ea13f22eda7127c827983bdaf0d7fff9df21c8817bab02815ac277a21143677" dependencies = [ "futures", - "ring 0.17.8", - "rustls 0.22.2", + "ring", + "rustls", "tokio", "tokio-postgres", - "tokio-rustls 0.25.0", + "tokio-rustls", "x509-certificate", ] @@ -7516,32 +7606,22 @@ dependencies = [ "tokio", ] -[[package]] -name = "tokio-rustls" -version = "0.24.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" -dependencies = [ - "rustls 0.21.10", - "tokio", -] - [[package]] name = "tokio-rustls" version = "0.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "775e0c0f0adb3a2f22a00c4745d728b479985fc15ee7ca6a2608388c5569860f" dependencies = [ - "rustls 0.22.2", + "rustls", "rustls-pki-types", "tokio", ] [[package]] name = "tokio-stream" -version = "0.1.14" +version = "0.1.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "397c988d37662c7dda6d2208364a706264bf3d6138b11d436cbac0ad38832842" +checksum = "267ac89e0bec6e691e5813911606935d77c476ff49024f98abcea3e7b15e37af" dependencies = [ "futures-core", "pin-project-lite", @@ -7592,14 +7672,14 @@ dependencies = [ [[package]] name = "toml" -version = "0.8.10" +version = "0.8.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a9aad4a3066010876e8dcf5a8a06e70a558751117a145c6ce2b82c2e2054290" +checksum = "af06656561d28735e9c1cd63dfd57132c8155426aa6af24f36a00a351f88c48e" dependencies = [ "serde", "serde_spanned", "toml_datetime", - "toml_edit 0.22.6", + "toml_edit 0.22.7", ] [[package]] @@ -7626,9 +7706,9 @@ dependencies = [ [[package]] name = "toml_edit" -version = "0.22.6" +version = "0.22.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c1b5fd4128cc8d3e0cb74d4ed9a9cc7c7284becd4df68f5f940e1ad123606f6" +checksum = "18769cd1cec395d70860ceb4d932812a0b4d06b1a4bb336745a4d21b9496e992" dependencies = [ "indexmap 2.2.5", "serde", @@ -7648,7 +7728,7 @@ dependencies = [ "axum 0.6.20", "base64 0.21.7", "bytes", - "h2 0.3.24", + "h2 0.3.25", "http 0.2.12", "http-body 0.4.6", "hyper 0.14.28", @@ -7656,11 +7736,11 @@ dependencies = [ "percent-encoding", "pin-project", "prost", - "rustls-native-certs 0.7.0", - "rustls-pemfile 2.1.1", + "rustls-native-certs", + "rustls-pemfile", "rustls-pki-types", "tokio", - "tokio-rustls 0.25.0", + "tokio-rustls", "tokio-stream", "tower", "tower-layer", @@ -7996,12 +8076,6 @@ version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" -[[package]] -name = "untrusted" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" - [[package]] name = "untrusted" version = "0.9.0" @@ -8328,9 +8402,9 @@ dependencies = [ [[package]] name = "wasmtime" -version = "18.0.2" +version = "18.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c843b8bc4dd4f3a76173ba93405c71111d570af0d90ea5f6299c705d0c2add2" +checksum = "8106d7d22d63d1bcb940e22dcc7b03e46f0fc8bfbaf2fd7b6cb8f448f9449774" dependencies = [ "addr2line", "anyhow", @@ -8366,18 +8440,18 @@ dependencies = [ [[package]] name = "wasmtime-asm-macros" -version = "18.0.2" +version = "18.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86b9d329c718b3a18412a6a017c912b539baa8fe1210d21b651f6b4dbafed743" +checksum = "3b0cf02cea951ace34ee3b0e64b7f446c3519d1c95ad75bc5330f405e275ee8f" dependencies = [ "cfg-if", ] [[package]] name = "wasmtime-component-macro" -version = "18.0.2" +version = "18.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8d55ddfd02898885c39638eae9631cd430c83a368f5996ed0f7bfb181d02157" +checksum = "7d3786c0531565ec6c9852c0e46299f06cb6e4b58d36e30f3c234cfa69bde376" dependencies = [ "anyhow", "proc-macro2", @@ -8390,15 +8464,15 @@ dependencies = [ [[package]] name = "wasmtime-component-util" -version = "18.0.2" +version = "18.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d6d69c430cddc70ec42159506962c66983ce0192ebde4eb125b7aabc49cff88" +checksum = "81eae2ec98027ee0b3950da83bc320120a23087ac4d39b3d59201cb5ebf52777" [[package]] name = "wasmtime-cranelift" -version = "18.0.2" +version = "18.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31ca62f519225492bd555d0ec85a2dacb0c10315db3418c8b9aeb3824bf54a24" +checksum = "595abdb067acdc812ab0f21d8d46d5aa4022392aa7c3e0632c20bff9ec49ffb4" dependencies = [ "anyhow", "cfg-if", @@ -8421,9 +8495,9 @@ dependencies = [ [[package]] name = "wasmtime-cranelift-shared" -version = "18.0.2" +version = "18.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd5f2071f42e61490bf7cb95b9acdbe6a29dd577a398019304a960585f28b844" +checksum = "e8c24c1fdea167b992d82ebe76471fd1cbe7b0b406bc72f9250f86353000134e" dependencies = [ "anyhow", "cranelift-codegen", @@ -8437,9 +8511,9 @@ dependencies = [ [[package]] name = "wasmtime-environ" -version = "18.0.2" +version = "18.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82bf1a47f384610da19f58b0fd392ca6a3b720974315c08afb0392c0f3951fed" +checksum = "3279d510005358141550d8a90a5fc989d7e81748e5759d582fe6bfdcbf074a04" dependencies = [ "anyhow", "bincode", @@ -8461,9 +8535,9 @@ dependencies = [ [[package]] name = "wasmtime-fiber" -version = "18.0.2" +version = "18.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e31aecada2831e067ebfe93faa3001cc153d506f8af40bbea58aa1d20fe4820" +checksum = "9b1df665f2117741d1265f5663b0d93068b18120c2c4b18b9faed49d00d92c31" dependencies = [ "anyhow", "cc", @@ -8476,9 +8550,9 @@ dependencies = [ [[package]] name = "wasmtime-jit-icache-coherence" -version = "18.0.2" +version = "18.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33f4121cb29dda08139b2824a734dd095d83ce843f2d613a84eb580b9cfc17ac" +checksum = "866634605089b4632b32226b54aa3670d72e1849f9fc425c7e50b3749c2e6df3" dependencies = [ "cfg-if", "libc", @@ -8487,9 +8561,9 @@ dependencies = [ [[package]] name = "wasmtime-runtime" -version = "18.0.2" +version = "18.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e517f2b996bb3b0e34a82a2bce194f850d9bcfc25c08328ef5fb71b071066b8" +checksum = "e11185c88cadf595d228f5ae4ff9b4badbf9ca98dcb37b0310c36e31fa74867f" dependencies = [ "anyhow", "cc", @@ -8516,9 +8590,9 @@ dependencies = [ [[package]] name = "wasmtime-types" -version = "18.0.2" +version = "18.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54a327d7a0ef57bd52a507d28b4561a74126c7a8535a2fc6f2025716bc6a52e8" +checksum = "f32377cbd827bee06fcb2f6bf97b0477fdcc86888bbe6db7b9cab8e644082e0a" dependencies = [ "cranelift-entity", "serde", @@ -8529,9 +8603,9 @@ dependencies = [ [[package]] name = "wasmtime-versioned-export-macros" -version = "18.0.2" +version = "18.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ef32eea9fc7035a55159a679d1e89b43ece5ae45d24eed4808e6a92c99a0da4" +checksum = "4ab8d7566d206c42f8cf1d4ac90c5e40d3582e8eabad9b3b67e9e73c61fc47a1" dependencies = [ "proc-macro2", "quote", @@ -8540,9 +8614,9 @@ dependencies = [ [[package]] name = "wasmtime-wasi" -version = "18.0.2" +version = "18.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d04d2fb2257245aa05ff799ded40520ae4d8cd31b0d14972afac89061f12fe12" +checksum = "9ca912bda309188bd25ab7652c6654b34aacdf43047c716ee1cb685a28079078" dependencies = [ "anyhow", "async-trait", @@ -8571,9 +8645,9 @@ dependencies = [ [[package]] name = "wasmtime-winch" -version = "18.0.2" +version = "18.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db3378c0e808a744b5d4df2a9a9d2746a53b151811926731f04fc401707f7d54" +checksum = "ba5a97bfccc241d1769cef75eb16f472a893982704d5f3c9c71c431c1484344a" dependencies = [ "anyhow", "cranelift-codegen", @@ -8588,21 +8662,21 @@ dependencies = [ [[package]] name = "wasmtime-wit-bindgen" -version = "18.0.2" +version = "18.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca677c36869e45602617b25a9968ec0d895ad9a0aee3756d9dee1ddd89456f91" +checksum = "faf2c76781a27e07802669f6f0e11eb4441546407eb65be60c3d862200988b92" dependencies = [ "anyhow", - "heck", + "heck 0.4.1", "indexmap 2.2.5", "wit-parser 0.13.2", ] [[package]] name = "wasmtime-wmemcheck" -version = "18.0.2" +version = "18.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f4cbfb052d66f03603a9b77f18171ea245c7805714caad370a549a6344bf86b" +checksum = "3847d969bd203b8cd239f89581e52432a0f00b8c5c9bc917be2fccd7542c4f2f" [[package]] name = "web-sys" @@ -8651,9 +8725,9 @@ checksum = "213a57fbc76ff74e9dec77cf62e47fa4e4e01dec898dc09cc6873d992eed2ef9" [[package]] name = "whoami" -version = "1.5.0" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fec781d48b41f8163426ed18e8fc2864c12937df9ce54c88ede7bd47270893e" +checksum = "a44ab49fad634e88f55bf8f9bb3abd2f27d7204172a112c7c9987e01c1c94ea9" dependencies = [ "redox_syscall 0.4.1", "wasite", @@ -8693,9 +8767,9 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "winch-codegen" -version = "0.16.2" +version = "0.16.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8197ed4a2ebf612f0624ddda10de71f8cd2d3a4ecf8ffac0586a264599708d63" +checksum = "1e0bd4d6cac8d69525d475d0ce1e0801eb6f314d42e764a52bd497ed3cb9c371" dependencies = [ "anyhow", "cranelift-codegen", @@ -8878,9 +8952,9 @@ dependencies = [ [[package]] name = "wit-bindgen" -version = "0.21.0" +version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbdedb8dd38c89c2cfa71e7450515f1c17f94cc2853881652d005b10f3f2559c" +checksum = "288f992ea30e6b5c531b52cdd5f3be81c148554b09ea416f058d16556ba92c27" dependencies = [ "bitflags 2.4.2", "wit-bindgen-rt", @@ -8889,9 +8963,9 @@ dependencies = [ [[package]] name = "wit-bindgen-core" -version = "0.21.0" +version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ebcbf07363368a9e6e8b89c18bff176c4f35ed2dd2f2f5f9c473bb56813369b" +checksum = "e85e72719ffbccf279359ad071497e47eb0675fe22106dea4ed2d8a7fcb60ba4" dependencies = [ "anyhow", "wit-parser 0.201.0", @@ -8899,18 +8973,18 @@ dependencies = [ [[package]] name = "wit-bindgen-rt" -version = "0.21.0" +version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "026d24a27f6712541fa534f2954bd9e0eb66172f033c2157c0f31d106255c497" +checksum = "fcb8738270f32a2d6739973cbbb7c1b6dd8959ce515578a6e19165853272ee64" [[package]] name = "wit-bindgen-rust" -version = "0.21.0" +version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2a4d36bf13b5ef534599d24dae792b1ae2b40fe1248c2754fd3f7343fb2ca70" +checksum = "d8a39a15d1ae2077688213611209849cad40e9e5cccf6e61951a425850677ff3" dependencies = [ "anyhow", - "heck", + "heck 0.4.1", "indexmap 2.2.5", "wasm-metadata", "wit-bindgen-core", @@ -8919,9 +8993,9 @@ dependencies = [ [[package]] name = "wit-bindgen-rust-macro" -version = "0.21.0" +version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf4bf1b15b5227d1ca9ba7fc6a7850c72f9df0fbac3c46a0855763cc454ff11a" +checksum = "d376d3ae5850526dfd00d937faea0d81a06fa18f7ac1e26f386d760f241a8f4b" dependencies = [ "anyhow", "proc-macro2", @@ -9006,7 +9080,7 @@ dependencies = [ "der", "hex", "pem", - "ring 0.17.8", + "ring", "signature", "spki", "thiserror", diff --git a/Cargo.toml b/Cargo.toml index cdf492b5d..f5460e28f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -32,6 +32,7 @@ members = [ "crates/kitsune-messaging", "crates/kitsune-observability", "crates/kitsune-oidc", + "crates/kitsune-s3", "crates/kitsune-scss-compiler", "crates/kitsune-search", "crates/kitsune-service", diff --git a/crates/kitsune-activitypub/Cargo.toml b/crates/kitsune-activitypub/Cargo.toml index fbb8a4a7a..6401b49a9 100644 --- a/crates/kitsune-activitypub/Cargo.toml +++ b/crates/kitsune-activitypub/Cargo.toml @@ -9,7 +9,7 @@ license.workspace = true async-trait = "0.1.77" autometrics = { version = "1.0.1", default-features = false } base64-simd = "0.8.0" -diesel = "2.1.4" +diesel = "2.1.5" diesel-async = "0.4.1" futures-util = "0.3.30" headers = "0.4.0" @@ -37,7 +37,7 @@ serde = "1.0.197" sha2 = "0.10.8" simd-json = "0.13.8" speedy-uuid = { path = "../../lib/speedy-uuid" } -thiserror = "1.0.57" +thiserror = "1.0.58" tracing = "0.1.40" typed-builder = "0.18.1" url = "2.5.0" @@ -46,7 +46,7 @@ url = "2.5.0" sha2 = { version = "0.10.8", features = ["asm"] } [dev-dependencies] -http-body-util = "0.1.0" +http-body-util = "0.1.1" hyper = "1.2.0" kitsune-config = { path = "../kitsune-config" } kitsune-test = { path = "../kitsune-test" } diff --git a/crates/kitsune-cache/Cargo.toml b/crates/kitsune-cache/Cargo.toml index 12afa6cba..4bb8805e7 100644 --- a/crates/kitsune-cache/Cargo.toml +++ b/crates/kitsune-cache/Cargo.toml @@ -9,13 +9,13 @@ license.workspace = true enum_dispatch = "0.3.12" moka = { version = "0.12.5", features = ["future"] } multiplex-pool = { path = "../../lib/multiplex-pool" } -redis = { version = "0.24.0", default-features = false, features = [ +redis = { version = "0.25.2", default-features = false, features = [ "connection-manager", "tokio-comp", ] } serde = "1.0.197" simd-json = "0.13.8" -thiserror = "1.0.57" +thiserror = "1.0.58" tracing = "0.1.40" typed-builder = "0.18.1" diff --git a/crates/kitsune-captcha/Cargo.toml b/crates/kitsune-captcha/Cargo.toml index a5b720a0c..13c2d2f58 100644 --- a/crates/kitsune-captcha/Cargo.toml +++ b/crates/kitsune-captcha/Cargo.toml @@ -12,8 +12,8 @@ kitsune-http-client = { path = "../kitsune-http-client" } serde = { version = "1.0.197", features = ["derive"] } serde_urlencoded = "0.7.1" simd-json = "0.13.8" -strum = { version = "0.26.1", features = ["derive"] } -thiserror = "1.0.57" +strum = { version = "0.26.2", features = ["derive"] } +thiserror = "1.0.58" typed-builder = "0.18.1" [lints] diff --git a/crates/kitsune-config/Cargo.toml b/crates/kitsune-config/Cargo.toml index 42ecc0a25..b20526986 100644 --- a/crates/kitsune-config/Cargo.toml +++ b/crates/kitsune-config/Cargo.toml @@ -11,7 +11,7 @@ miette = "7.2.0" serde = { version = "1.0.197", features = ["derive"] } smol_str = { version = "0.2.1", features = ["serde"] } tokio = { version = "1.36.0", features = ["fs"] } -toml = { version = "0.8.10", default-features = false, features = ["parse"] } +toml = { version = "0.8.11", default-features = false, features = ["parse"] } [lints] workspace = true diff --git a/crates/kitsune-core/Cargo.toml b/crates/kitsune-core/Cargo.toml index 173fb4e35..dd3c8670c 100644 --- a/crates/kitsune-core/Cargo.toml +++ b/crates/kitsune-core/Cargo.toml @@ -14,7 +14,7 @@ kitsune-db = { path = "../kitsune-db" } kitsune-messaging = { path = "../kitsune-messaging" } serde = { version = "1.0.197", features = ["derive"] } speedy-uuid = { path = "../../lib/speedy-uuid", features = ["diesel"] } -thiserror = "1.0.57" +thiserror = "1.0.58" typed-builder = "0.18.1" [build-dependencies] diff --git a/crates/kitsune-db/Cargo.toml b/crates/kitsune-db/Cargo.toml index 9ff9a3660..d027b4abc 100644 --- a/crates/kitsune-db/Cargo.toml +++ b/crates/kitsune-db/Cargo.toml @@ -8,7 +8,7 @@ build = "build.rs" [dependencies] blowocking = { path = "../../lib/blowocking" } -diesel = { version = "2.1.4", features = ["uuid"] } +diesel = { version = "2.1.5", features = ["uuid"] } diesel-async = { version = "0.4.1", features = [ "async-connection-wrapper", "bb8", @@ -32,7 +32,7 @@ rustls-native-certs = "0.7.0" serde = { version = "1.0.197", features = ["derive"] } simd-json = "0.13.8" speedy-uuid = { path = "../../lib/speedy-uuid", features = ["diesel"] } -thiserror = "1.0.57" +thiserror = "1.0.58" tokio = { version = "1.36.0", features = ["rt"] } tokio-postgres = "0.7.10" tokio-postgres-rustls = "0.11.1" diff --git a/crates/kitsune-email/Cargo.toml b/crates/kitsune-email/Cargo.toml index 09ffb0c16..a77fc3b81 100644 --- a/crates/kitsune-email/Cargo.toml +++ b/crates/kitsune-email/Cargo.toml @@ -11,7 +11,7 @@ ignored = ["askama_axum"] # See reason below. [dependencies] askama = "0.12.1" askama_axum = "0.4.0" # Damn it, cargo. Because "kitsune" uses "askama" with the axum feature, we have to have the crate available here as well.. -diesel = "2.1.4" +diesel = "2.1.5" diesel-async = "0.4.1" kitsune-db = { path = "../kitsune-db" } kitsune-url = { path = "../kitsune-url" } @@ -25,14 +25,14 @@ lettre = { version = "0.11.4", default-features = false, features = [ "tracing", ] } miette = "7.2.0" -mrml = { version = "3.0.4", default-features = false, features = [ +mrml = { version = "3.1.0", default-features = false, features = [ "orderedmap", "parse", "render", ] } scoped-futures = "0.1.3" speedy-uuid = { path = "../../lib/speedy-uuid" } -thiserror = "1.0.57" +thiserror = "1.0.58" typed-builder = "0.18.1" [lints] diff --git a/crates/kitsune-embed/Cargo.toml b/crates/kitsune-embed/Cargo.toml index ef99bc8bf..700a64e41 100644 --- a/crates/kitsune-embed/Cargo.toml +++ b/crates/kitsune-embed/Cargo.toml @@ -6,7 +6,7 @@ version.workspace = true license.workspace = true [dependencies] -diesel = "2.1.4" +diesel = "2.1.5" diesel-async = "0.4.1" embed-sdk = { git = "https://github.com/Lantern-chat/embed-service.git", rev = "0d43394bb2514f57edc402a83f69b171705c3650" } http = "1.1.0" @@ -16,7 +16,7 @@ kitsune-http-client = { path = "../kitsune-http-client" } once_cell = "1.19.0" scraper = { version = "0.19.0", default-features = false } smol_str = "0.2.1" -thiserror = "1.0.57" +thiserror = "1.0.58" typed-builder = "0.18.1" [lints] diff --git a/crates/kitsune-federation-filter/Cargo.toml b/crates/kitsune-federation-filter/Cargo.toml index 18eaf5f1b..397207e8d 100644 --- a/crates/kitsune-federation-filter/Cargo.toml +++ b/crates/kitsune-federation-filter/Cargo.toml @@ -10,7 +10,7 @@ globset = "0.4.14" kitsune-config = { path = "../kitsune-config" } kitsune-type = { path = "../kitsune-type" } miette = "7.2.0" -thiserror = "1.0.57" +thiserror = "1.0.58" url = "2.5.0" [lints] diff --git a/crates/kitsune-http-client/Cargo.toml b/crates/kitsune-http-client/Cargo.toml index dbe03be24..b33b36789 100644 --- a/crates/kitsune-http-client/Cargo.toml +++ b/crates/kitsune-http-client/Cargo.toml @@ -12,7 +12,7 @@ futures-util = { version = "0.3.30", default-features = false, features = [ "alloc", ] } http-body = "1.0.0" -http-body-util = "0.1.0" +http-body-util = "0.1.1" http-signatures = { path = "../../lib/http-signatures" } hyper = "1.2.0" hyper-util = { version = "0.1.3", features = [ diff --git a/crates/kitsune-http-client/src/lib.rs b/crates/kitsune-http-client/src/lib.rs index d1985ae18..3de014ba4 100644 --- a/crates/kitsune-http-client/src/lib.rs +++ b/crates/kitsune-http-client/src/lib.rs @@ -229,7 +229,6 @@ impl Client { fn prepare_request(&self, mut req: Request) -> Request { req.headers_mut().extend(self.default_headers.clone()); - req } diff --git a/crates/kitsune-jobs/Cargo.toml b/crates/kitsune-jobs/Cargo.toml index 07f1f09ce..2765720bc 100644 --- a/crates/kitsune-jobs/Cargo.toml +++ b/crates/kitsune-jobs/Cargo.toml @@ -8,7 +8,7 @@ license.workspace = true [dependencies] athena = { path = "../../lib/athena" } derive_more = { version = "1.0.0-beta.6", features = ["from"] } -diesel = "2.1.4" +diesel = "2.1.5" diesel-async = "0.4.1" futures-util = "0.3.30" kitsune-core = { path = "../kitsune-core" } diff --git a/crates/kitsune-language/Cargo.toml b/crates/kitsune-language/Cargo.toml index 16c3f0b8d..16a33c032 100644 --- a/crates/kitsune-language/Cargo.toml +++ b/crates/kitsune-language/Cargo.toml @@ -6,7 +6,7 @@ version.workspace = true license.workspace = true [dependencies] -diesel = "2.1.4" +diesel = "2.1.5" diesel-async = { version = "0.4.1", features = ["postgres"] } kitsune-config = { path = "../kitsune-config" } isolang = { version = "2.4.0", features = [ diff --git a/crates/kitsune-mastodon/Cargo.toml b/crates/kitsune-mastodon/Cargo.toml index ef94d7b74..00e67cbbe 100644 --- a/crates/kitsune-mastodon/Cargo.toml +++ b/crates/kitsune-mastodon/Cargo.toml @@ -7,7 +7,7 @@ license.workspace = true [dependencies] derive_builder = "0.20.0" -diesel = "2.1.4" +diesel = "2.1.5" diesel-async = "0.4.1" futures-util = "0.3.30" iso8601-timestamp = "0.2.17" @@ -25,7 +25,7 @@ serde = "1.0.197" simd-json = "0.13.8" smol_str = "0.2.1" speedy-uuid = { path = "../../lib/speedy-uuid" } -thiserror = "1.0.57" +thiserror = "1.0.58" tokio = { version = "1.36.0", features = ["rt"] } tracing = "0.1.40" typed-builder = "0.18.1" diff --git a/crates/kitsune-messaging/Cargo.toml b/crates/kitsune-messaging/Cargo.toml index 15654cdb2..fb79ae2e8 100644 --- a/crates/kitsune-messaging/Cargo.toml +++ b/crates/kitsune-messaging/Cargo.toml @@ -11,11 +11,11 @@ derive_more = { version = "1.0.0-beta.6", features = ["from"] } futures-util = "0.3.30" just-retry = { path = "../../lib/just-retry" } pin-project-lite = "0.2.13" -redis = { version = "0.24.0", features = ["connection-manager", "tokio-comp"] } +redis = { version = "0.25.2", features = ["connection-manager", "tokio-comp"] } serde = "1.0.197" simd-json = "0.13.8" tokio = { version = "1.36.0", features = ["macros", "rt", "sync"] } -tokio-stream = { version = "0.1.14", features = ["sync"] } +tokio-stream = { version = "0.1.15", features = ["sync"] } tracing = "0.1.40" [lints] diff --git a/crates/kitsune-messaging/src/lib.rs b/crates/kitsune-messaging/src/lib.rs index 41acdf7f4..3b8c3ef7e 100644 --- a/crates/kitsune-messaging/src/lib.rs +++ b/crates/kitsune-messaging/src/lib.rs @@ -23,8 +23,6 @@ pub type BoxError = Box; /// Type alias for Result, defaulting to [`BoxError`] on the error branch pub type Result = std::result::Result; -mod util; - pub mod redis; pub mod tokio_broadcast; diff --git a/crates/kitsune-messaging/src/redis.rs b/crates/kitsune-messaging/src/redis.rs index c5bd5f93d..fe87b58ed 100644 --- a/crates/kitsune-messaging/src/redis.rs +++ b/crates/kitsune-messaging/src/redis.rs @@ -2,7 +2,7 @@ //! Redis implementation //! -use crate::{util::TransparentDebug, MessagingBackend, Result}; +use crate::{MessagingBackend, Result}; use ahash::AHashMap; use futures_util::{future, Stream, StreamExt, TryStreamExt}; use just_retry::RetryExt; @@ -82,14 +82,12 @@ impl MultiplexActor { let client = self.client.clone(); async move { client - .get_async_connection() + .get_async_pubsub() .await - .map(|conn| TransparentDebug(conn.into_pubsub())) } }) .retry(just_retry::backoff_policy()) .await - .map(|conn| conn.0) .unwrap(); for key in self.mapping.keys() { @@ -111,7 +109,7 @@ impl MultiplexActor { let actor = Self { mapping: AHashMap::new(), - conn: client.get_async_connection().await?.into_pubsub(), + conn: client.get_async_pubsub().await?, client, registration_queue: receiver, }; diff --git a/crates/kitsune-messaging/src/util.rs b/crates/kitsune-messaging/src/util.rs deleted file mode 100644 index d2afa3d10..000000000 --- a/crates/kitsune-messaging/src/util.rs +++ /dev/null @@ -1,9 +0,0 @@ -use std::fmt; - -pub struct TransparentDebug(pub T); - -impl fmt::Debug for TransparentDebug { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - write!(f, "{} {{ ... }}", std::any::type_name::()) - } -} diff --git a/crates/kitsune-observability/Cargo.toml b/crates/kitsune-observability/Cargo.toml index 38020d62f..4957f4a25 100644 --- a/crates/kitsune-observability/Cargo.toml +++ b/crates/kitsune-observability/Cargo.toml @@ -7,7 +7,7 @@ license.workspace = true [dependencies] async-trait = "0.1.77" -http-body-util = "0.1.0" +http-body-util = "0.1.1" http-compat = { path = "../../lib/http-compat" } hyper = { version = "1.2.0", default-features = false } kitsune-config = { path = "../kitsune-config" } @@ -15,7 +15,7 @@ kitsune-http-client = { path = "../kitsune-http-client" } metrics = "=0.22.0" metrics-opentelemetry = { git = "https://github.com/aumetra/metrics-opentelemetry.git", rev = "95537b16370e595981e195be52f98ea5983a7a8e" } metrics-tracing-context = "0.15.0" -metrics-util = "0.16.2" +metrics-util = "0.16.3" miette = "7.2.0" opentelemetry = { version = "0.22.0", default-features = false, features = [ "trace", diff --git a/crates/kitsune-oidc/Cargo.toml b/crates/kitsune-oidc/Cargo.toml index ad846209f..e4e1ef1de 100644 --- a/crates/kitsune-oidc/Cargo.toml +++ b/crates/kitsune-oidc/Cargo.toml @@ -20,14 +20,14 @@ openidconnect = { version = "3.5.0", default-features = false, features = [ "accept-rfc3339-timestamps", "accept-string-booleans", ] } -redis = { version = "0.24.0", default-features = false, features = [ +redis = { version = "0.25.2", default-features = false, features = [ "connection-manager", "tokio-comp", ] } serde = { version = "1.0.197", features = ["derive"] } simd-json = "0.13.8" speedy-uuid = { path = "../../lib/speedy-uuid", features = ["serde"] } -thiserror = "1.0.57" +thiserror = "1.0.58" url = "2.5.0" [lints] diff --git a/crates/kitsune-s3/Cargo.toml b/crates/kitsune-s3/Cargo.toml new file mode 100644 index 000000000..30e984d89 --- /dev/null +++ b/crates/kitsune-s3/Cargo.toml @@ -0,0 +1,24 @@ +[package] +name = "kitsune-s3" +authors.workspace = true +edition.workspace = true +version.workspace = true +license.workspace = true + +[dependencies] +bytes = "1.5.0" +futures-util = { version = "0.3.30", default-features = false } +http = "1.1.0" +kitsune-http-client = { path = "../kitsune-http-client" } +quick-xml = { version = "0.31.0", features = ["serialize"] } +rusty-s3 = "0.5.0" +serde = { version = "1.0.197", features = ["derive"] } +typed-builder = "0.18.1" + +[dev-dependencies] +kitsune-test = { path = "../kitsune-test" } +serial_test = "3.0.0" +tokio = { version = "1.36.0", features = ["macros", "rt"] } + +[lints] +workspace = true diff --git a/crates/kitsune-s3/LICENSE-AGPL-3.0 b/crates/kitsune-s3/LICENSE-AGPL-3.0 new file mode 120000 index 000000000..43db21b4c --- /dev/null +++ b/crates/kitsune-s3/LICENSE-AGPL-3.0 @@ -0,0 +1 @@ +../../LICENSE-AGPL-3.0 \ No newline at end of file diff --git a/crates/kitsune-s3/src/lib.rs b/crates/kitsune-s3/src/lib.rs new file mode 100644 index 000000000..de4fd5e52 --- /dev/null +++ b/crates/kitsune-s3/src/lib.rs @@ -0,0 +1,300 @@ +use bytes::Bytes; +use futures_util::{Stream, StreamExt, TryStreamExt}; +use http::{ + header::{CONTENT_LENGTH, ETAG}, + Request, +}; +use kitsune_http_client::{Body, Client as HttpClient, Response}; +use rusty_s3::{actions::CreateMultipartUpload, Bucket, Credentials, S3Action}; +use serde::Serialize; +use std::{ops::Deref, time::Duration}; +use typed_builder::TypedBuilder; + +type BoxError = Box; +type Result = std::result::Result; + +const TWO_MINUTES: Duration = Duration::from_secs(2 * 60); + +#[derive(Serialize)] +#[serde(rename_all = "PascalCase")] +struct CreateBucketConfiguration<'a> { + location_constraint: &'a str, +} + +#[inline] +const fn s3_method_to_http(method: rusty_s3::Method) -> http::Method { + match method { + rusty_s3::Method::Head => http::Method::HEAD, + rusty_s3::Method::Get => http::Method::GET, + rusty_s3::Method::Post => http::Method::POST, + rusty_s3::Method::Put => http::Method::PUT, + rusty_s3::Method::Delete => http::Method::DELETE, + } +} + +#[inline] +const fn http_method_by_value<'a, T: ?Sized>(_: &T) -> http::Method +where + T: S3Action<'a>, +{ + s3_method_to_http(T::METHOD) +} + +async fn execute_request(client: &HttpClient, req: Request) -> Result { + let response = client.execute(req).await?; + if !response.status().is_success() { + let mut err_msg = format!("s3 request failed: {response:?}"); + + let body = response.text().await?; + err_msg.push_str("\nbody: "); + err_msg.push_str(&body); + + return Err(Box::from(err_msg)); + } + + Ok(response) +} + +#[derive(TypedBuilder)] +pub struct Client { + bucket: Bucket, + credentials: Credentials, + #[builder( + default = HttpClient::builder().content_length_limit(None).build(), + setter(skip), + )] + http_client: HttpClient, +} + +// Note: We use `String::from(url::Url)` here since this uses a specialized implementation which avoids reallocating +// Since the `Url` type already contains a serialized `String` version of itself. +// Its `From for String` impl just returns ownership of this internal string instead of allocating a new buffer and copying the data. + +impl Client { + pub async fn create_bucket(&self) -> Result<()> { + let create_action = self.bucket.create_bucket(&self.credentials); + let body = quick_xml::se::to_string(&CreateBucketConfiguration { + location_constraint: self.bucket.region(), + })?; + + let request = Request::builder() + .uri(String::from(create_action.sign(TWO_MINUTES))) + .method(http_method_by_value(&create_action)) + .body(Body::data(body))?; + + execute_request(&self.http_client, request).await?; + + Ok(()) + } + + pub async fn delete_bucket(&self) -> Result<()> { + let delete_action = self.bucket.delete_bucket(&self.credentials); + + let request = Request::builder() + .uri(String::from(delete_action.sign(TWO_MINUTES))) + .method(http_method_by_value(&delete_action)) + .body(Body::empty())?; + + execute_request(&self.http_client, request).await?; + + Ok(()) + } + + pub async fn delete_object(&self, path: &str) -> Result<()> { + let delete_action = self.bucket.delete_object(Some(&self.credentials), path); + + let request = Request::builder() + .uri(String::from(delete_action.sign(TWO_MINUTES))) + .method(http_method_by_value(&delete_action)) + .body(Body::empty())?; + + execute_request(&self.http_client, request).await?; + + Ok(()) + } + + pub async fn get_object(&self, path: &str) -> Result>> { + let get_action = self.bucket.get_object(Some(&self.credentials), path); + + let request = Request::builder() + .uri(String::from(get_action.sign(TWO_MINUTES))) + .method(http_method_by_value(&get_action)) + .body(Body::empty())?; + + let response = execute_request(&self.http_client, request).await?; + + Ok(response.stream().map_err(Into::into)) + } + + pub async fn put_object(&self, path: &str, stream: S) -> Result<()> + where + S: Stream> + Send + Sync + 'static, + E: Into, + { + let create_multipart_upload = self + .bucket + .create_multipart_upload(Some(&self.credentials), path); + + let request = Request::builder() + .uri(String::from(create_multipart_upload.sign(TWO_MINUTES))) + .method(http_method_by_value(&create_multipart_upload)) + .body(Body::empty())?; + + let response = execute_request(&self.http_client, request) + .await? + .text() + .await?; + let create_response = CreateMultipartUpload::parse_response(&response)?; + + let stream = futures_util::stream::iter(1..) // Chunk IDs for the S3 API are 1-based + .zip(stream) + .map(|(id, result)| result.map(|chunk| (id, chunk))); + + futures_util::pin_mut!(stream); + + let upload_chunks_fut = async { + let mut etags = Vec::new(); + + while let Some((id, chunk)) = stream.try_next().await.map_err(Into::into)? { + let upload_part = self.bucket.upload_part( + Some(&self.credentials), + path, + id, + create_response.upload_id(), + ); + + let request = Request::builder() + .header(CONTENT_LENGTH, chunk.len()) + .uri(String::from(upload_part.sign(TWO_MINUTES))) + .method(http_method_by_value(&upload_part)) + .body(Body::data(chunk))?; + + let response = execute_request(&self.http_client, request).await?; + let Some(etag_header) = response.headers().get(ETAG) else { + return Err(Box::from("missing etag header")); + }; + + etags.push(etag_header.to_str()?.to_string()); + } + + Ok(etags) + }; + + let etags = match upload_chunks_fut.await { + Ok(etags) => etags, + Err(error) => { + // Send an abort request if anything inside the upload loop errored out + // Just to be nice to the S3 API :D + + let abort_multipart_upload = self.bucket.abort_multipart_upload( + Some(&self.credentials), + path, + create_response.upload_id(), + ); + + let request = Request::builder() + .uri(String::from(abort_multipart_upload.sign(TWO_MINUTES))) + .method(http_method_by_value(&abort_multipart_upload)) + .body(Body::empty())?; + + execute_request(&self.http_client, request).await?; + + return Err(error); + } + }; + + let complete_multipart_upload = self.bucket.complete_multipart_upload( + Some(&self.credentials), + path, + create_response.upload_id(), + etags.iter().map(Deref::deref), + ); + + let method = http_method_by_value(&complete_multipart_upload); + let uri = String::from(complete_multipart_upload.sign(TWO_MINUTES)); + let body = complete_multipart_upload.body(); + + let request = Request::builder() + .header(CONTENT_LENGTH, body.len()) + .uri(uri) + .method(method) + .body(Body::data(body))?; + + execute_request(&self.http_client, request).await?; + + Ok(()) + } +} + +#[cfg(test)] +mod test { + use crate::{BoxError, CreateBucketConfiguration}; + use futures_util::{future, stream, TryStreamExt}; + use kitsune_test::minio_test; + + const TEST_DATA: &[u8] = b"https://open.spotify.com/track/6VNNakpjSH8LNBX7fSGhUv"; + + #[test] + fn create_bucket_configuration() { + let config = CreateBucketConfiguration { + location_constraint: "neptune", + }; + let encoded = quick_xml::se::to_string(&config).unwrap(); + + assert_eq!( + encoded, + "\ + neptune\ + " + ); + } + + #[tokio::test] + #[serial_test::serial] + async fn full_test() { + minio_test(|client| async move { + client + .put_object( + "good song", + stream::once(future::ok::<_, BoxError>(TEST_DATA.into())), + ) + .await + .unwrap(); + + let data = client + .get_object("good song") + .await + .unwrap() + .try_fold(Vec::new(), |mut acc, chunk| async move { + acc.extend_from_slice(&chunk); + Ok(acc) + }) + .await + .unwrap(); + + assert_eq!(data, TEST_DATA); + + client.delete_object("good song").await.unwrap(); + + let result = client.get_object("good song").await; + assert!(result.is_err()); + }) + .await; + } + + #[tokio::test] + #[serial_test::serial] + async fn abort_request_works() { + minio_test(|client| async move { + let result = client + .put_object( + "this will break horribly", + stream::once(future::err(BoxError::from("hehe"))), + ) + .await; + + assert!(result.is_err()); + }) + .await; + } +} diff --git a/crates/kitsune-scss-compiler/Cargo.toml b/crates/kitsune-scss-compiler/Cargo.toml index 7c517d086..907ee39cb 100644 --- a/crates/kitsune-scss-compiler/Cargo.toml +++ b/crates/kitsune-scss-compiler/Cargo.toml @@ -6,7 +6,7 @@ version.workspace = true license.workspace = true [dependencies] -anyhow = "1.0.80" +anyhow = "1.0.81" glob = "0.3.1" rsass = "0.28.8" tracing = { version = "0.1.40", default-features = false } diff --git a/crates/kitsune-search/Cargo.toml b/crates/kitsune-search/Cargo.toml index 518d447f5..4a77fc44e 100644 --- a/crates/kitsune-search/Cargo.toml +++ b/crates/kitsune-search/Cargo.toml @@ -9,7 +9,7 @@ license.workspace = true ignored = ["isahc"] # To make `meilisearch` builds static [dependencies] -diesel = "2.1.4" +diesel = "2.1.5" diesel-async = "0.4.1" diesel_full_text_search = { version = "2.1.1", default-features = false } enum_dispatch = "0.3.12" @@ -20,8 +20,8 @@ kitsune-language = { path = "../kitsune-language" } miette = "7.2.0" serde = { version = "1.0.197", features = ["derive"] } speedy-uuid = { path = "../../lib/speedy-uuid" } -strum = { version = "0.26.1", features = ["derive"] } -thiserror = "1.0.57" +strum = { version = "0.26.2", features = ["derive"] } +thiserror = "1.0.58" tracing = "0.1.40" typed-builder = "0.18.1" @@ -29,7 +29,7 @@ typed-builder = "0.18.1" isahc = { version = "1.7.2", default-features = false, features = [ "static-ssl", ], optional = true } -meilisearch-sdk = { version = "0.24.3", optional = true } +meilisearch-sdk = { version = "0.25.0", optional = true } [features] default = [] diff --git a/crates/kitsune-service/Cargo.toml b/crates/kitsune-service/Cargo.toml index fac3b5aef..f0d9e5f1c 100644 --- a/crates/kitsune-service/Cargo.toml +++ b/crates/kitsune-service/Cargo.toml @@ -13,7 +13,7 @@ athena = { path = "../../lib/athena" } blowocking = { path = "../../lib/blowocking" } bytes = "1.5.0" derive_builder = "0.20.0" -diesel = "2.1.4" +diesel = "2.1.5" diesel-async = "0.4.1" futures-util = "0.3.30" garde = { version = "0.18.0", default-features = false, features = [ @@ -48,7 +48,7 @@ password-hash = { version = "0.5.0", features = ["std"] } pkcs8 = "0.10.2" post-process = { path = "../../lib/post-process" } rand = "0.8.5" -redis = { version = "0.24.0", default-features = false, features = [ +redis = { version = "0.25.2", default-features = false, features = [ "connection-manager", "tokio-comp", ] } @@ -59,7 +59,7 @@ serde = "1.0.197" simd-json = "0.13.8" smol_str = "0.2.1" speedy-uuid = { path = "../../lib/speedy-uuid" } -thiserror = "1.0.57" +thiserror = "1.0.58" tokio = { version = "1.36.0", features = ["macros", "sync"] } tracing = "0.1.40" typed-builder = "0.18.1" @@ -71,7 +71,7 @@ meilisearch = ["kitsune-search/meilisearch"] [dev-dependencies] hex-simd = "0.8.0" -http-body-util = "0.1.0" +http-body-util = "0.1.1" hyper = "1.2.0" kitsune-activitypub = { path = "../kitsune-activitypub" } kitsune-config = { path = "../kitsune-config" } diff --git a/crates/kitsune-storage/Cargo.toml b/crates/kitsune-storage/Cargo.toml index 380242d38..e899127f8 100644 --- a/crates/kitsune-storage/Cargo.toml +++ b/crates/kitsune-storage/Cargo.toml @@ -9,8 +9,7 @@ license.workspace = true bytes = "1.5.0" derive_more = { version = "1.0.0-beta.6", features = ["from"] } futures-util = "0.3.30" -http = "1.1.0" -kitsune-http-client = { path = "../kitsune-http-client" } +kitsune-s3 = { path = "../kitsune-s3" } rusty-s3 = { version = "0.5.0", default-features = false } tokio = { version = "1.36.0", features = ["fs", "io-util"] } tokio-util = { version = "0.7.10", features = ["io"] } diff --git a/crates/kitsune-storage/src/s3.rs b/crates/kitsune-storage/src/s3.rs index 9df2ade03..77489d859 100644 --- a/crates/kitsune-storage/src/s3.rs +++ b/crates/kitsune-storage/src/s3.rs @@ -4,96 +4,32 @@ use crate::{Result, StorageBackend}; use bytes::Bytes; -use futures_util::{Stream, StreamExt, TryStreamExt}; -use http::Request; -use kitsune_http_client::{Body, Client as HttpClient}; -use rusty_s3::{ - actions::{DeleteObject, GetObject, PutObject}, - Bucket, Credentials, S3Action, -}; -use std::{sync::Arc, time::Duration}; - -const FIVE_MINUTES: Duration = Duration::from_secs(5 * 60); - -const fn s3_method_to_http(method: rusty_s3::Method) -> http::Method { - match method { - rusty_s3::Method::Head => http::Method::HEAD, - rusty_s3::Method::Get => http::Method::GET, - rusty_s3::Method::Post => http::Method::POST, - rusty_s3::Method::Put => http::Method::PUT, - rusty_s3::Method::Delete => http::Method::DELETE, - } -} - -struct S3Client { - bucket: Bucket, - credentials: Credentials, - http_client: HttpClient, -} - -impl S3Client { - pub async fn delete_object(&self, path: &str) -> Result<()> { - let delete_action = self.bucket.delete_object(Some(&self.credentials), path); - - let request = Request::builder() - .uri(String::from(delete_action.sign(FIVE_MINUTES))) - .method(s3_method_to_http(DeleteObject::METHOD)) - .body(Body::empty())?; - - self.http_client.execute(request).await?; - - Ok(()) - } - - pub async fn get_object(&self, path: &str) -> Result>> { - let get_action = self.bucket.get_object(Some(&self.credentials), path); - - let request = Request::builder() - .uri(String::from(get_action.sign(FIVE_MINUTES))) - .method(s3_method_to_http(GetObject::METHOD)) - .body(Body::empty())?; - - let response = self.http_client.execute(request).await?; - - Ok(response.stream().map_err(Into::into)) - } - - pub async fn put_object(&self, path: &str, stream: S) -> Result<()> - where - S: Stream> + Send + Sync + 'static, - { - let put_action = self.bucket.put_object(Some(&self.credentials), path); - - let request = Request::builder() - .uri(String::from(put_action.sign(FIVE_MINUTES))) - .method(s3_method_to_http(PutObject::METHOD)) - .body(Body::stream(stream))?; - - self.http_client.execute(request).await?; - - Ok(()) - } -} +use futures_util::{Stream, StreamExt}; +use rusty_s3::{Bucket, Credentials}; +use std::sync::Arc; #[derive(Clone)] /// S3-backed storage pub struct Storage { - client: Arc, + client: Arc, } impl Storage { /// Create a new storage instance #[must_use] pub fn new(bucket: Bucket, credentials: Credentials) -> Self { - let http_client = HttpClient::builder().content_length_limit(None).build(); + let s3_client = kitsune_s3::Client::builder() + .bucket(bucket) + .credentials(credentials) + .build(); + + Self::from(Arc::new(s3_client)) + } +} - Self { - client: Arc::new(S3Client { - bucket, - credentials, - http_client, - }), - } +impl From> for Storage { + fn from(client: Arc) -> Self { + Self { client } } } diff --git a/crates/kitsune-test/Cargo.toml b/crates/kitsune-test/Cargo.toml index af772d861..20fa7529c 100644 --- a/crates/kitsune-test/Cargo.toml +++ b/crates/kitsune-test/Cargo.toml @@ -7,21 +7,29 @@ license.workspace = true [dependencies] bytes = "1.5.0" -diesel = "2.1.4" +diesel = "2.1.5" diesel-async = "0.4.1" futures-util = "0.3.30" http = "1.1.0" -http-body-util = "0.1.0" +http-body-util = "0.1.1" isolang = "2.4.0" kitsune-config = { path = "../kitsune-config" } kitsune-db = { path = "../kitsune-db" } +kitsune-s3 = { path = "../kitsune-s3" } multiplex-pool = { path = "../../lib/multiplex-pool" } pin-project-lite = "0.2.13" -redis = { version = "0.24.0", default-features = false, features = [ +redis = { version = "0.25.2", default-features = false, features = [ "connection-manager", "tokio-rustls-comp", ] } +rusty-s3 = { version = "0.5.0", default-features = false } scoped-futures = "0.1.3" +testcontainers = { version = "0.15.0", features = ["watchdog"] } +testcontainers-modules = { version = "0.3.5", features = [ + "minio", + "postgres", + "redis", +] } [lints] workspace = true diff --git a/crates/kitsune-test/src/container.rs b/crates/kitsune-test/src/container.rs new file mode 100644 index 000000000..7160c7d85 --- /dev/null +++ b/crates/kitsune-test/src/container.rs @@ -0,0 +1,53 @@ +use testcontainers::{clients::Cli as CliClient, Container, RunnableImage}; +use testcontainers_modules::{minio::MinIO, postgres::Postgres, redis::Redis}; + +pub trait Service { + const PORT: u16; + + fn url(&self) -> String; +} + +impl Service for Container<'_, MinIO> { + const PORT: u16 = 9000; + + fn url(&self) -> String { + let port = self.get_host_port_ipv4(Self::PORT); + format!("http://127.0.0.1:{port}") + } +} + +impl Service for Container<'_, Postgres> { + const PORT: u16 = 5432; + + fn url(&self) -> String { + let port = self.get_host_port_ipv4(Self::PORT); + format!("postgres://postgres:postgres@127.0.0.1:{port}/test_db") + } +} + +impl Service for Container<'_, Redis> { + const PORT: u16 = 6379; + + fn url(&self) -> String { + let port = self.get_host_port_ipv4(Self::PORT); + format!("redis://127.0.0.1:{port}") + } +} + +pub fn minio(client: &CliClient) -> impl Service + '_ { + client.run(MinIO::default()) +} + +pub fn postgres(client: &CliClient) -> impl Service + '_ { + let base = Postgres::default() + .with_user("postgres") + .with_password("postgres") + .with_db_name("test_db"); + + client.run(RunnableImage::from(base).with_tag("15-alpine")) +} + +pub fn redis(client: &CliClient) -> impl Service + '_ { + #[allow(clippy::default_constructed_unit_structs)] + client.run(Redis::default()) +} diff --git a/crates/kitsune-test/src/lib.rs b/crates/kitsune-test/src/lib.rs index 620089efa..0881e087b 100644 --- a/crates/kitsune-test/src/lib.rs +++ b/crates/kitsune-test/src/lib.rs @@ -1,4 +1,3 @@ -use self::catch_panic::CatchPanic; use bytes::Bytes; use diesel_async::RunQueryDsl; use futures_util::Future; @@ -12,10 +11,13 @@ use kitsune_config::{ use kitsune_db::PgPool; use multiplex_pool::RoundRobinStrategy; use redis::aio::ConnectionManager; +use resource::provide_resource; use scoped_futures::ScopedFutureExt; -use std::{env, error::Error, panic}; +use std::{error::Error, sync::Arc}; mod catch_panic; +mod container; +mod resource; type BoxError = Box; @@ -34,40 +36,36 @@ where F: FnOnce(PgPool) -> Fut, Fut: Future, { - let db_url = env::var("DATABASE_URL").expect("Missing database URL"); + let resource_handle = get_resource!("DATABASE_URL", self::container::postgres); let pool = kitsune_db::connect(&DatabaseConfig { - url: db_url.into(), + url: resource_handle.url().into(), max_connections: 10, use_tls: false, }) .await .expect("Failed to connect to database"); - let out = CatchPanic::new(func(pool.clone())).await; + provide_resource(pool, func, |pool| async move { + pool.with_connection(|db_conn| { + async move { + diesel::sql_query("DROP SCHEMA public CASCADE") + .execute(db_conn) + .await + .expect("Failed to delete schema"); - pool.with_connection(|db_conn| { - async move { - diesel::sql_query("DROP SCHEMA public CASCADE") - .execute(db_conn) - .await - .expect("Failed to delete schema"); + diesel::sql_query("CREATE SCHEMA public") + .execute(db_conn) + .await + .expect("Failed to create schema"); - diesel::sql_query("CREATE SCHEMA public") - .execute(db_conn) - .await - .expect("Failed to create schema"); - - Ok::<_, BoxError>(()) - } - .scoped() + Ok::<_, BoxError>(()) + } + .scoped() + }) + .await + .expect("Failed to get connection"); }) .await - .expect("Failed to get connection"); - - match out { - Ok(out) => out, - Err(err) => panic::resume_unwind(err), - } } #[must_use] @@ -78,13 +76,42 @@ pub fn language_detection_config() -> language_detection::Configuration { } } +pub async fn minio_test(func: F) -> Fut::Output +where + F: FnOnce(Arc) -> Fut, + Fut: Future, +{ + let resource_handle = get_resource!("MINIO_URL", self::container::minio); + let endpoint = resource_handle.url().parse().unwrap(); + let bucket = rusty_s3::Bucket::new( + endpoint, + rusty_s3::UrlStyle::Path, + "test-bucket", + "us-east-1", + ) + .unwrap(); + let credentials = rusty_s3::Credentials::new("minioadmin", "minioadmin"); + let client = kitsune_s3::Client::builder() + .bucket(bucket) + .credentials(credentials) + .build(); + let client = Arc::new(client); + + client.create_bucket().await.unwrap(); + + provide_resource(client, func, |client| async move { + client.delete_bucket().await.unwrap(); + }) + .await +} + pub async fn redis_test(func: F) -> Fut::Output where F: FnOnce(multiplex_pool::Pool) -> Fut, Fut: Future, { - let redis_url = env::var("REDIS_URL").expect("Missing redis URL"); - let client = redis::Client::open(redis_url).unwrap(); + let resource_handle = get_resource!("REDIS_URL", self::container::redis); + let client = redis::Client::open(resource_handle.url().as_ref()).unwrap(); let pool = multiplex_pool::Pool::from_producer( || client.get_connection_manager(), 5, @@ -93,13 +120,9 @@ where .await .unwrap(); - let out = CatchPanic::new(func(pool.clone())).await; - - let mut conn = pool.get(); - let (): () = redis::cmd("FLUSHALL").query_async(&mut conn).await.unwrap(); - - match out { - Ok(out) => out, - Err(err) => panic::resume_unwind(err), - } + provide_resource(pool, func, |pool| async move { + let mut conn = pool.get(); + let (): () = redis::cmd("FLUSHALL").query_async(&mut conn).await.unwrap(); + }) + .await } diff --git a/crates/kitsune-test/src/resource.rs b/crates/kitsune-test/src/resource.rs new file mode 100644 index 000000000..eb2b2995f --- /dev/null +++ b/crates/kitsune-test/src/resource.rs @@ -0,0 +1,64 @@ +use crate::{catch_panic::CatchPanic, container::Service}; +use std::{borrow::Cow, future::Future, panic, sync::OnceLock}; + +pub static CONTAINER_CLIENT: OnceLock = OnceLock::new(); + +#[macro_export] +macro_rules! get_resource { + ($env_name:literal, $container_fn:path) => { + ::std::env::var($env_name).map_or_else( + |_| { + // Only initialize client if we actually need it + let client = $crate::resource::CONTAINER_CLIENT.get_or_init(|| { + ::testcontainers::clients::Cli::new::<::testcontainers::core::env::Os>() + }); + + $crate::resource::ResourceHandle::Container($container_fn(client)) + }, + $crate::resource::ResourceHandle::Url, + ) + }; +} + +/// Provide a resource to the `run` closure, catch any panics that may occur while polling the future returned by `run`, +/// then run the `cleanup` closure, and resume any panic unwinds that were caught +pub async fn provide_resource( + resource: Resource, + run: Run, + cleanup: Cleanup, +) -> RunFut::Output +where + Resource: Clone, + Run: FnOnce(Resource) -> RunFut, + RunFut: Future, + Cleanup: FnOnce(Resource) -> CleanupFut, + CleanupFut: Future, +{ + let out = CatchPanic::new(run(resource.clone())).await; + cleanup(resource).await; + + match out { + Ok(ret) => ret, + Err(err) => panic::resume_unwind(err), + } +} + +pub enum ResourceHandle +where + S: Service, +{ + Container(S), + Url(String), +} + +impl ResourceHandle +where + S: Service, +{ + pub fn url(&self) -> Cow<'_, str> { + match self { + Self::Container(container) => Cow::Owned(container.url()), + Self::Url(ref url) => Cow::Borrowed(url), + } + } +} diff --git a/crates/kitsune-type/Cargo.toml b/crates/kitsune-type/Cargo.toml index ca8b18b87..d4dc14fcd 100644 --- a/crates/kitsune-type/Cargo.toml +++ b/crates/kitsune-type/Cargo.toml @@ -11,7 +11,7 @@ serde = { version = "1.0.197", features = ["derive"] } simd-json = "0.13.8" smol_str = { version = "0.2.1", features = ["serde"] } speedy-uuid = { path = "../../lib/speedy-uuid", features = ["serde"] } -strum = { version = "0.26.1", features = ["derive"] } +strum = { version = "0.26.2", features = ["derive"] } utoipa = { version = "4.2.0", features = ["chrono", "uuid"] } [dev-dependencies] diff --git a/crates/kitsune-wasm-mrf/Cargo.toml b/crates/kitsune-wasm-mrf/Cargo.toml index 9dcd3daf7..e221963bd 100644 --- a/crates/kitsune-wasm-mrf/Cargo.toml +++ b/crates/kitsune-wasm-mrf/Cargo.toml @@ -18,7 +18,7 @@ kitsune-type = { path = "../kitsune-type" } miette = "7.2.0" mrf-manifest = { path = "../../lib/mrf-manifest", features = ["parse"] } multiplex-pool = { path = "../../lib/multiplex-pool" } -redis = { version = "0.24.0", default-features = false, features = [ +redis = { version = "0.25.2", default-features = false, features = [ "connection-manager", "tokio-rustls-comp", ] } @@ -26,12 +26,12 @@ simd-json = "0.13.8" slab = "0.4.9" sled = "0.34.7" smol_str = "0.2.1" -thiserror = "1.0.57" +thiserror = "1.0.58" tokio = { version = "1.36.0", features = ["fs"] } tracing = "0.1.40" typed-builder = "0.18.1" walkdir = "2.5.0" -wasmtime = { version = "18.0.2", default-features = false, features = [ +wasmtime = { version = "18.0.3", default-features = false, features = [ "addr2line", "async", "component-model", @@ -40,7 +40,7 @@ wasmtime = { version = "18.0.2", default-features = false, features = [ "pooling-allocator", "runtime", ] } -wasmtime-wasi = { version = "18.0.2", default-features = false, features = [ +wasmtime-wasi = { version = "18.0.3", default-features = false, features = [ "preview2", ] } diff --git a/crates/kitsune-wasm-mrf/example-mrf/Cargo.toml b/crates/kitsune-wasm-mrf/example-mrf/Cargo.toml index dbe5ebbdb..731c3c9e8 100644 --- a/crates/kitsune-wasm-mrf/example-mrf/Cargo.toml +++ b/crates/kitsune-wasm-mrf/example-mrf/Cargo.toml @@ -11,7 +11,7 @@ crate-type = ["cdylib"] [dependencies] rand = "0.8.5" -wit-bindgen = "0.21.0" +wit-bindgen = "0.22.0" [lints] workspace = true diff --git a/crates/kitsune-webfinger/Cargo.toml b/crates/kitsune-webfinger/Cargo.toml index 44d21bcfc..b58889c3b 100644 --- a/crates/kitsune-webfinger/Cargo.toml +++ b/crates/kitsune-webfinger/Cargo.toml @@ -16,7 +16,7 @@ kitsune-http-client = { path = "../kitsune-http-client" } kitsune-type = { path = "../kitsune-type" } kitsune-util = { path = "../kitsune-util" } multiplex-pool = { path = "../../lib/multiplex-pool" } -redis = { version = "0.24.0", default-features = false, features = [ +redis = { version = "0.25.2", default-features = false, features = [ "connection-manager", "tokio-comp", ] } @@ -24,7 +24,7 @@ tracing = "0.1.40" urlencoding = "2.1.3" [dev-dependencies] -http-body-util = "0.1.0" +http-body-util = "0.1.1" hyper = "1.2.0" pretty_assertions = "1.4.0" simd-json = "0.13.8" diff --git a/flake.lock b/flake.lock index 066d0d23c..488544aec 100644 --- a/flake.lock +++ b/flake.lock @@ -10,11 +10,11 @@ "pre-commit-hooks": "pre-commit-hooks" }, "locked": { - "lastModified": 1709596918, - "narHash": "sha256-X8tp7nYunRZds8GdSEp+ZBMPf3ym9e6VjZWN8fmzBrc=", + "lastModified": 1710144971, + "narHash": "sha256-CjTOdoBvT/4AQncTL20SDHyJNgsXZjtGbz62yDIUYnM=", "owner": "cachix", "repo": "devenv", - "rev": "4eccee9a19ad9be42a7859211b456b281d704313", + "rev": "6c0bad0045f1e1802f769f7890f6a59504825f4d", "type": "github" }, "original": { @@ -62,11 +62,11 @@ "systems": "systems_2" }, "locked": { - "lastModified": 1709126324, - "narHash": "sha256-q6EQdSeUZOG26WelxqkmR7kArjgWCdw5sfJVHPH/7j8=", + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "d465f4819400de7c8d874d50b982301f28a84605", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", "type": "github" }, "original": { @@ -139,11 +139,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1709479366, - "narHash": "sha256-n6F0n8UV6lnTZbYPl1A9q1BS0p4hduAv1mGAP17CVd0=", + "lastModified": 1710451336, + "narHash": "sha256-pP86Pcfu3BrAvRO7R64x7hs+GaQrjFes+mEPowCfkxY=", "owner": "nixos", "repo": "nixpkgs", - "rev": "b8697e57f10292a6165a20f03d2f42920dfaf973", + "rev": "d691274a972b3165335d261cc4671335f5c67de9", "type": "github" }, "original": { @@ -231,11 +231,11 @@ ] }, "locked": { - "lastModified": 1709604635, - "narHash": "sha256-le4fwmWmjGRYWwkho0Gr7mnnZndOOe4XGbLw68OvF40=", + "lastModified": 1710468700, + "narHash": "sha256-YGN6R0nLfB2L57J8T/DX+LcB06QipyYzHSz7AD8B0n0=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "e86c0fb5d3a22a5f30d7f64ecad88643fe26449d", + "rev": "7ff8e9a04ac7777a3446788cb4018b452157ab8a", "type": "github" }, "original": { diff --git a/kitsune-cli/Cargo.toml b/kitsune-cli/Cargo.toml index 8fd62121d..6e0071946 100644 --- a/kitsune-cli/Cargo.toml +++ b/kitsune-cli/Cargo.toml @@ -13,8 +13,8 @@ license = false eula = false [dependencies] -clap = { version = "4.5.2", features = ["derive", "wrap_help"] } -diesel = "2.1.4" +clap = { version = "4.5.3", features = ["derive", "wrap_help"] } +diesel = "2.1.5" diesel-async = "0.4.1" dotenvy = "0.15.7" envy = "0.4.2" diff --git a/kitsune-fe/package.json b/kitsune-fe/package.json index 04ff46bd8..7144e565b 100644 --- a/kitsune-fe/package.json +++ b/kitsune-fe/package.json @@ -13,9 +13,9 @@ }, "dependencies": { "@fluent/bundle": "^0.18.0", - "@formkit/core": "^1.5.9", - "@formkit/validation": "^1.5.9", - "@formkit/vue": "^1.5.9", + "@formkit/core": "^1.6.0", + "@formkit/validation": "^1.6.0", + "@formkit/vue": "^1.6.0", "@fortawesome/fontawesome-svg-core": "^6.5.1", "@fortawesome/free-solid-svg-icons": "^6.5.1", "@fortawesome/vue-fontawesome": "^3.0.6", @@ -38,7 +38,7 @@ "pinia-plugin-persistedstate": "^3.2.1", "rollup": "npm:@rollup/wasm-node", "tiptap-markdown": "^0.8.9", - "unhead": "^1.8.11", + "unhead": "^1.8.18", "vue": "^3.4.21", "vue-powerglitch": "^1.0.0", "vue-router": "^4.3.0", @@ -49,23 +49,23 @@ "@graphql-codegen/client-preset": "^4.2.4", "@parcel/watcher": "^2.4.1", "@trivago/prettier-plugin-sort-imports": "^4.3.0", - "@types/lodash": "^4.14.202", - "@typescript-eslint/eslint-plugin": "^7.1.1", - "@typescript-eslint/parser": "^7.1.1", + "@types/lodash": "^4.17.0", + "@typescript-eslint/eslint-plugin": "^7.2.0", + "@typescript-eslint/parser": "^7.2.0", "@vitejs/plugin-vue": "^5.0.4", "@vue/eslint-config-prettier": "^9.0.0", - "@vue/eslint-config-typescript": "^12.0.0", + "@vue/eslint-config-typescript": "^13.0.0", "eslint": "^8.57.0", "eslint-config-prettier": "^9.1.0", "eslint-plugin-prettier": "^5.1.3", - "eslint-plugin-vue": "^9.22.0", + "eslint-plugin-vue": "^9.23.0", "prettier": "^3.2.5", "prettier-plugin-css-order": "^2.0.1", - "sass": "^1.71.1", - "typescript": "^5.3.3", + "sass": "^1.72.0", + "typescript": "^5.4.2", "unplugin-fluent-vue": "^1.2.0", - "vite": "^5.1.5", - "vue-tsc": "^2.0.5" + "vite": "^5.1.6", + "vue-tsc": "^2.0.6" }, "resolutions": { "rollup": "npm:@rollup/wasm-node" diff --git a/kitsune-fe/yarn.lock b/kitsune-fe/yarn.lock index 79fa084e0..d29bd8f16 100644 --- a/kitsune-fe/yarn.lock +++ b/kitsune-fe/yarn.lock @@ -721,91 +721,90 @@ resolved "https://registry.yarnpkg.com/@fluent/syntax/-/syntax-0.19.0.tgz#43f882faba6908b0f1013f6a94e009d0dfbdcb77" integrity sha512-5D2qVpZrgpjtqU4eNOcWGp1gnUCgjfM+vKGE2y03kKN6z5EBhtx0qdRFbg8QuNNj8wXNoX93KJoYb+NqoxswmQ== -"@formkit/core@1.5.9", "@formkit/core@^1.5.9": - version "1.5.9" - resolved "https://registry.yarnpkg.com/@formkit/core/-/core-1.5.9.tgz#0db0ba027349f59b9dec64fd950acab9c8bfd1fc" - integrity sha512-hkF2uwmXcyeGqrYAO1RN3me77NdRWhuH4pZP+A2xlGZqBLx98nvABYUfTiQsCmdnPv9RkGHHB7qTq9BOvFATHQ== - dependencies: - "@formkit/utils" "1.5.9" - -"@formkit/dev@1.5.9": - version "1.5.9" - resolved "https://registry.yarnpkg.com/@formkit/dev/-/dev-1.5.9.tgz#a4f8240eef71155874449098afd933ed0820adb5" - integrity sha512-aeD53iH6WD/3jKiYyGmZgvocGQv77NHHD4MF5+I/DvApu0IP1gTArsmBFaBDEVr7t5o/xO2zH06Up7sJcA0+mA== - dependencies: - "@formkit/core" "1.5.9" - "@formkit/utils" "1.5.9" - -"@formkit/i18n@1.5.9": - version "1.5.9" - resolved "https://registry.yarnpkg.com/@formkit/i18n/-/i18n-1.5.9.tgz#f5b995fb2e14adde6c825d87f18faf401504462d" - integrity sha512-4FVqE1YciXSwl2KUuGRvpizZXBnwZACVRMrNjSn2WokVsOPYdmgwP1+35nG6LVU6i8bcOv/8fASCLUO3ADe7mw== - dependencies: - "@formkit/core" "1.5.9" - "@formkit/utils" "1.5.9" - "@formkit/validation" "1.5.9" - -"@formkit/inputs@1.5.9": - version "1.5.9" - resolved "https://registry.yarnpkg.com/@formkit/inputs/-/inputs-1.5.9.tgz#089b57a1489bf789fabd7290b6237624f28377d8" - integrity sha512-UYv0MxDMaADSd3w+pXsmt83WwQ0Z00MOABjL3bgTxc4uxDRJ5L6kRV2Qz4Wp82azOuBKnAqXa1Uen17VZb4J/A== - dependencies: - "@formkit/core" "1.5.9" - "@formkit/utils" "1.5.9" - -"@formkit/observer@1.5.9": - version "1.5.9" - resolved "https://registry.yarnpkg.com/@formkit/observer/-/observer-1.5.9.tgz#4a6bf46b8dc622bb9d1f00cc9844d5bfa5c8b03d" - integrity sha512-FrrHFuieSdBUBCYaHZFD4VfGCoK1+qNI8EJguIUgRx4L3p22T1rvfsVr20xGi4Si3Ghq2A9o2M5wou0/8usVTA== - dependencies: - "@formkit/core" "1.5.9" - "@formkit/utils" "1.5.9" - -"@formkit/rules@1.5.9": - version "1.5.9" - resolved "https://registry.yarnpkg.com/@formkit/rules/-/rules-1.5.9.tgz#3bfb09b35488194f214e9b724105716035585ce1" - integrity sha512-kslIu91gs6CmStnbUl+wzerLt0Dzm3jb4VisfUTlmrtXfMpQCD4BwF6Dic90weVbbYlEyeFroY3vONvIIRruTw== - dependencies: - "@formkit/core" "1.5.9" - "@formkit/utils" "1.5.9" - "@formkit/validation" "1.5.9" - -"@formkit/themes@1.5.9": - version "1.5.9" - resolved "https://registry.yarnpkg.com/@formkit/themes/-/themes-1.5.9.tgz#6dbb2ed9fa444a68e6b3c7d6464568b52610e19b" - integrity sha512-hQ2paR/ycOsq25/44M6WQtniYmri9/WIU59zGyx0c34kPBh1kZTdHOkXNL/Er9nITA5O+Dlax5PseO5UH2/jYQ== - dependencies: - "@formkit/core" "1.5.9" - -"@formkit/utils@1.5.9": - version "1.5.9" - resolved "https://registry.yarnpkg.com/@formkit/utils/-/utils-1.5.9.tgz#33150191433bf715862abc758494a8e3c25151fa" - integrity sha512-Jaa9Q89WovxMkNcRE0IK1G8WfHwg7MDkCx9FJRhqJ+e9wGW0C2+t/vAYp0D3kS42jpNK7TTPIcozh9q2VGSUdg== - -"@formkit/validation@1.5.9", "@formkit/validation@^1.5.9": - version "1.5.9" - resolved "https://registry.yarnpkg.com/@formkit/validation/-/validation-1.5.9.tgz#6f04891110e092e103441460bc4c56be1b05cd62" - integrity sha512-E2d9pVA++PQkiwanLvp4GW+tBGGg0JBsZTAe/Lobjuc8k4Skt3sjaRtczSFQx2Cwf+S8C4OMPvYx9alGF7vl1A== - dependencies: - "@formkit/core" "1.5.9" - "@formkit/observer" "1.5.9" - "@formkit/utils" "1.5.9" - -"@formkit/vue@^1.5.9": - version "1.5.9" - resolved "https://registry.yarnpkg.com/@formkit/vue/-/vue-1.5.9.tgz#a8b4f1268d61679198eb719f6a781f6ad18d0cbb" - integrity sha512-4tVYmu22ub2X+qHafmoh7kZgI61DFLDcSIt3A8R+vS1a0593odQY3TIgy8WJSWCFQ6QeS/chOzqdinXyFtuC8g== - dependencies: - "@formkit/core" "1.5.9" - "@formkit/dev" "1.5.9" - "@formkit/i18n" "1.5.9" - "@formkit/inputs" "1.5.9" - "@formkit/observer" "1.5.9" - "@formkit/rules" "1.5.9" - "@formkit/themes" "1.5.9" - "@formkit/utils" "1.5.9" - "@formkit/validation" "1.5.9" - vue "^3.4.15" +"@formkit/core@1.6.0", "@formkit/core@^1.6.0": + version "1.6.0" + resolved "https://registry.yarnpkg.com/@formkit/core/-/core-1.6.0.tgz#40314a243223f456cddd2e9d2679fd15fcdf5738" + integrity sha512-YsbVLJlY+4wbBCa4Ine3BHdX4Y0LOxbrOy0GWGnPv00iLFOFs3EwK0pV6vuQr/j8KB1Q8UsfdJ0f2fGk0ufLdQ== + dependencies: + "@formkit/utils" "1.6.0" + +"@formkit/dev@1.6.0": + version "1.6.0" + resolved "https://registry.yarnpkg.com/@formkit/dev/-/dev-1.6.0.tgz#3fc0137a8d50ffb00b37e57a3b1804f40a512930" + integrity sha512-dcwd6Cvgy/aewSDLbal9M0fgVxtoUypvqEqBbwSP9RmNEFuUF9l38Dh7mSUW/anNeoP+fN4fvISH9QiRtQHsXQ== + dependencies: + "@formkit/core" "1.6.0" + "@formkit/utils" "1.6.0" + +"@formkit/i18n@1.6.0": + version "1.6.0" + resolved "https://registry.yarnpkg.com/@formkit/i18n/-/i18n-1.6.0.tgz#482bc376b66c98be5bded9f6ad83557158bc8f16" + integrity sha512-cGleIT9ztmeKc9M2dryvioPQtzwhUbmEUQOlhEWcxteYQ1q4NMJj/lFrFKxVP5LWqpZQSDE+dclo43qviWqHow== + dependencies: + "@formkit/core" "1.6.0" + "@formkit/utils" "1.6.0" + "@formkit/validation" "1.6.0" + +"@formkit/inputs@1.6.0": + version "1.6.0" + resolved "https://registry.yarnpkg.com/@formkit/inputs/-/inputs-1.6.0.tgz#a44fc07f240a6d9f8e5abf15a9c406b5cf6abc85" + integrity sha512-Xo/TWcJOsSGYAGEpccsqtjZRmxdljoxfKceQojWekFtlhMZueowq8XULWnSVARzC+MZ+Qvugr206g5L0b3lETQ== + dependencies: + "@formkit/core" "1.6.0" + "@formkit/utils" "1.6.0" + +"@formkit/observer@1.6.0": + version "1.6.0" + resolved "https://registry.yarnpkg.com/@formkit/observer/-/observer-1.6.0.tgz#85dd10e4904f460dab4f73762937f6d96a45cb2d" + integrity sha512-kOXZsUttxDZ0n6nYLIBO1Nt7dJq+7xmTVcuQBY2xrSRHxQHVX4deE768Ud52+NkjihSETzh4TDAetDa3pZlNrg== + dependencies: + "@formkit/core" "1.6.0" + "@formkit/utils" "1.6.0" + +"@formkit/rules@1.6.0": + version "1.6.0" + resolved "https://registry.yarnpkg.com/@formkit/rules/-/rules-1.6.0.tgz#f181a6cb273766d20039c2430db8fc32fe364b55" + integrity sha512-D4CoYaBpNTA2R7qLz8h18/erpoib1AmNV5XVrqERbeHoMCOD4OezUpxDwqqsl8exyNSldDf6/csNmYCwXJ0jzA== + dependencies: + "@formkit/core" "1.6.0" + "@formkit/utils" "1.6.0" + "@formkit/validation" "1.6.0" + +"@formkit/themes@1.6.0": + version "1.6.0" + resolved "https://registry.yarnpkg.com/@formkit/themes/-/themes-1.6.0.tgz#fbc263c86488cac13cdeea63b2bf14246d0a4c6e" + integrity sha512-b4bkRNDjmZEngXDIgGt3JmeSahUoDf7w0UkLCo1RUezGNmKwWrwgt2QzqFDvsxVsG9/fN0EAsaAX/EMbIJyvJg== + dependencies: + "@formkit/core" "1.6.0" + +"@formkit/utils@1.6.0": + version "1.6.0" + resolved "https://registry.yarnpkg.com/@formkit/utils/-/utils-1.6.0.tgz#4d72da6009efeea5b3a4503d4d3948fed37900ca" + integrity sha512-g+3yxGKAOm2oPibWDc6381U0euU8TGcQZmOTa7i1i40vi+DZDZ53ATmFZ/oOvWjnz5icJ+IfV7Zdo0quMBtZbQ== + +"@formkit/validation@1.6.0", "@formkit/validation@^1.6.0": + version "1.6.0" + resolved "https://registry.yarnpkg.com/@formkit/validation/-/validation-1.6.0.tgz#101bb8ffce2e78988c2d24fa201f98a7fc70a1b8" + integrity sha512-zPO16AVdzDMZ+aJ0nQydOXU3oMeZ7z0NAGtidBAF2tyRpLa6H4AMfx8CJd0nJyv6EEe1i1XQag1+QZf0VxvIOA== + dependencies: + "@formkit/core" "1.6.0" + "@formkit/observer" "1.6.0" + "@formkit/utils" "1.6.0" + +"@formkit/vue@^1.6.0": + version "1.6.0" + resolved "https://registry.yarnpkg.com/@formkit/vue/-/vue-1.6.0.tgz#ba3aeef4b7b10c0a0d9aec17b0807b374421a34e" + integrity sha512-3RicHg5kpOSmvDpVTamehqY2QtSZvcxxW5UR5p9AR6EtTuPzgkZl8zownTJcgeYp6GWjLzo7zwBIWgrM8GQU/A== + dependencies: + "@formkit/core" "1.6.0" + "@formkit/dev" "1.6.0" + "@formkit/i18n" "1.6.0" + "@formkit/inputs" "1.6.0" + "@formkit/observer" "1.6.0" + "@formkit/rules" "1.6.0" + "@formkit/themes" "1.6.0" + "@formkit/utils" "1.6.0" + "@formkit/validation" "1.6.0" "@fortawesome/fontawesome-common-types@6.5.1": version "6.5.1" @@ -1078,11 +1077,11 @@ ws "^8.15.0" "@graphql-tools/executor@^1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@graphql-tools/executor/-/executor-1.2.1.tgz#9aa132ac1839679fbd14810f7ad8a65e82c0db44" - integrity sha512-BP5UI1etbNOXmTSt7q4NL1+zsURFgh2pG+Hyt9K/xO0LlsfbSx59L5dHLerqZP7Js0xI6GYqrUQ4m29rUwUHJg== + version "1.2.2" + resolved "https://registry.yarnpkg.com/@graphql-tools/executor/-/executor-1.2.2.tgz#08796bb70f3c0a480d446cc9d01e5694899f7450" + integrity sha512-wZkyjndwlzi01HTU3PDveoucKA8qVO0hdKmJhjIGK/vRN/A4w5rDdeqRGcyXVss0clCAy3R6jpixCVu5pWs2Qg== dependencies: - "@graphql-tools/utils" "^10.0.13" + "@graphql-tools/utils" "^10.1.1" "@graphql-typed-document-node/core" "3.2.0" "@repeaterjs/repeater" "^3.0.4" tslib "^2.4.0" @@ -1243,10 +1242,10 @@ value-or-promise "^1.0.11" ws "^8.12.0" -"@graphql-tools/utils@^10.0.0", "@graphql-tools/utils@^10.0.13": - version "10.1.0" - resolved "https://registry.yarnpkg.com/@graphql-tools/utils/-/utils-10.1.0.tgz#d8c23a8b8636a5df59b14991bf25eae5ac15d314" - integrity sha512-wLPqhgeZ9BZJPRoaQbsDN/CtJDPd/L4qmmtPkjI3NuYJ39x+Eqz1Sh34EAGMuDh+xlOHqBwHczkZUpoK9tvzjw== +"@graphql-tools/utils@^10.0.0", "@graphql-tools/utils@^10.0.13", "@graphql-tools/utils@^10.1.1": + version "10.1.2" + resolved "https://registry.yarnpkg.com/@graphql-tools/utils/-/utils-10.1.2.tgz#192de00e7301c0242e7305ab16bbeef76bbcec74" + integrity sha512-fX13CYsDnX4yifIyNdiN0cVygz/muvkreWWem6BBw130+ODbRRgfiVveL0NizCEnKXkpvdeTy9Bxvo9LIKlhrw== dependencies: "@graphql-typed-document-node/core" "^3.1.1" cross-inspect "1.0.0" @@ -1254,13 +1253,13 @@ tslib "^2.4.0" "@graphql-tools/wrap@^10.0.2": - version "10.0.2" - resolved "https://registry.yarnpkg.com/@graphql-tools/wrap/-/wrap-10.0.2.tgz#87f510b5f35db2771e7743bc3d71059ee4adaf09" - integrity sha512-nb/YjBcyF02KBCy3hiyw0nBKIC+qkiDY/tGMCcIe4pM6BPEcnreaPhXA28Rdge7lKtySF4Mhbc86XafFH5bIkQ== + version "10.0.5" + resolved "https://registry.yarnpkg.com/@graphql-tools/wrap/-/wrap-10.0.5.tgz#614b964a158887b4a644f5425b2b9a57b5751f72" + integrity sha512-Cbr5aYjr3HkwdPvetZp1cpDWTGdD1Owgsb3z/ClzhmrboiK86EnQDxDvOJiQkDCPWE9lNBwj8Y4HfxroY0D9DQ== dependencies: "@graphql-tools/delegate" "^10.0.4" "@graphql-tools/schema" "^10.0.3" - "@graphql-tools/utils" "^10.0.13" + "@graphql-tools/utils" "^10.1.1" tslib "^2.4.0" value-or-promise "^1.0.12" @@ -1707,10 +1706,10 @@ resolved "https://registry.yarnpkg.com/@types/linkify-it/-/linkify-it-3.0.5.tgz#1e78a3ac2428e6d7e6c05c1665c242023a4601d8" integrity sha512-yg6E+u0/+Zjva+buc3EIb+29XEg4wltq7cSmd4Uc2EE/1nUVmxyzpX6gUXD0V8jIrG0r7YeOGVIbYRkxeooCtw== -"@types/lodash@^4.14.202": - version "4.14.202" - resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.202.tgz#f09dbd2fb082d507178b2f2a5c7e74bd72ff98f8" - integrity sha512-OvlIYQK9tNneDlS0VN54LLd5uiPCBOp7gS5Z0f1mjoJYBrtStzgmJBxONW3U6OZqdtNzZPmn9BS/7WI7BFFcFQ== +"@types/lodash@^4.17.0": + version "4.17.0" + resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.17.0.tgz#d774355e41f372d5350a4d0714abb48194a489c3" + integrity sha512-t7dhREVv6dbNj0q17X12j7yDG4bD/DHYX7o5/DbDxobP0HnGPgpRz2Ej77aL7TZT3DSw13fqUTj8J4mMnqa7WA== "@types/markdown-it@^12.2.3": version "12.2.3" @@ -1726,9 +1725,9 @@ integrity sha512-6L6VymKTzYSrEf4Nev4Xa1LCHKrlTlYCBMTlQKFuddo1CvQcE52I0mwfOJayueUC7MJuXOeHTcIU683lzd0cUA== "@types/node@*": - version "20.11.24" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.11.24.tgz#cc207511104694e84e9fb17f9a0c4c42d4517792" - integrity sha512-Kza43ewS3xoLgCEpQrsT+xRo/EJej1y0kVYGiLFE1NEODXGzTfwiC6tXTLMQskn1X4/Rjlh0MQUvx9W+L9long== + version "20.11.28" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.11.28.tgz#4fd5b2daff2e580c12316e457473d68f15ee6f66" + integrity sha512-M/GPWVS2wLkSkNHVeLkrF2fD5Lx5UC4PxA0uZcKc6QqbIQUJyW1jVjueJYi1z8n0I5PxYrtpnPnWglE+y9A0KA== dependencies: undici-types "~5.26.4" @@ -1749,33 +1748,16 @@ dependencies: "@types/node" "*" -"@typescript-eslint/eslint-plugin@^6.7.0": - version "6.21.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.21.0.tgz#30830c1ca81fd5f3c2714e524c4303e0194f9cd3" - integrity sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA== - dependencies: - "@eslint-community/regexpp" "^4.5.1" - "@typescript-eslint/scope-manager" "6.21.0" - "@typescript-eslint/type-utils" "6.21.0" - "@typescript-eslint/utils" "6.21.0" - "@typescript-eslint/visitor-keys" "6.21.0" - debug "^4.3.4" - graphemer "^1.4.0" - ignore "^5.2.4" - natural-compare "^1.4.0" - semver "^7.5.4" - ts-api-utils "^1.0.1" - -"@typescript-eslint/eslint-plugin@^7.1.1": - version "7.1.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.1.1.tgz#dd71fc5c7ecec745ca26ece506d84d203a205c0e" - integrity sha512-zioDz623d0RHNhvx0eesUmGfIjzrk18nSBC8xewepKXbBvN/7c1qImV7Hg8TI1URTxKax7/zxfxj3Uph8Chcuw== +"@typescript-eslint/eslint-plugin@^7.1.1", "@typescript-eslint/eslint-plugin@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.2.0.tgz#5a5fcad1a7baed85c10080d71ad901f98c38d5b7" + integrity sha512-mdekAHOqS9UjlmyF/LSs6AIEvfceV749GFxoBAjwAv0nkevfKHWQFDMcBZWUiIC5ft6ePWivXoS36aKQ0Cy3sw== dependencies: "@eslint-community/regexpp" "^4.5.1" - "@typescript-eslint/scope-manager" "7.1.1" - "@typescript-eslint/type-utils" "7.1.1" - "@typescript-eslint/utils" "7.1.1" - "@typescript-eslint/visitor-keys" "7.1.1" + "@typescript-eslint/scope-manager" "7.2.0" + "@typescript-eslint/type-utils" "7.2.0" + "@typescript-eslint/utils" "7.2.0" + "@typescript-eslint/visitor-keys" "7.2.0" debug "^4.3.4" graphemer "^1.4.0" ignore "^5.2.4" @@ -1783,95 +1765,47 @@ semver "^7.5.4" ts-api-utils "^1.0.1" -"@typescript-eslint/parser@^6.7.0": - version "6.21.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-6.21.0.tgz#af8fcf66feee2edc86bc5d1cf45e33b0630bf35b" - integrity sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ== - dependencies: - "@typescript-eslint/scope-manager" "6.21.0" - "@typescript-eslint/types" "6.21.0" - "@typescript-eslint/typescript-estree" "6.21.0" - "@typescript-eslint/visitor-keys" "6.21.0" - debug "^4.3.4" - -"@typescript-eslint/parser@^7.1.1": - version "7.1.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-7.1.1.tgz#6a9d0a5c9ccdf5dbd3cb8c949728c64e24e07d1f" - integrity sha512-ZWUFyL0z04R1nAEgr9e79YtV5LbafdOtN7yapNbn1ansMyaegl2D4bL7vHoJ4HPSc4CaLwuCVas8CVuneKzplQ== +"@typescript-eslint/parser@^7.1.1", "@typescript-eslint/parser@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-7.2.0.tgz#44356312aea8852a3a82deebdacd52ba614ec07a" + integrity sha512-5FKsVcHTk6TafQKQbuIVkXq58Fnbkd2wDL4LB7AURN7RUOu1utVP+G8+6u3ZhEroW3DF6hyo3ZEXxgKgp4KeCg== dependencies: - "@typescript-eslint/scope-manager" "7.1.1" - "@typescript-eslint/types" "7.1.1" - "@typescript-eslint/typescript-estree" "7.1.1" - "@typescript-eslint/visitor-keys" "7.1.1" + "@typescript-eslint/scope-manager" "7.2.0" + "@typescript-eslint/types" "7.2.0" + "@typescript-eslint/typescript-estree" "7.2.0" + "@typescript-eslint/visitor-keys" "7.2.0" debug "^4.3.4" -"@typescript-eslint/scope-manager@6.21.0": - version "6.21.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz#ea8a9bfc8f1504a6ac5d59a6df308d3a0630a2b1" - integrity sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg== - dependencies: - "@typescript-eslint/types" "6.21.0" - "@typescript-eslint/visitor-keys" "6.21.0" - -"@typescript-eslint/scope-manager@7.1.1": - version "7.1.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-7.1.1.tgz#9e301803ff8e21a74f50c6f89a4baccad9a48f93" - integrity sha512-cirZpA8bJMRb4WZ+rO6+mnOJrGFDd38WoXCEI57+CYBqta8Yc8aJym2i7vyqLL1vVYljgw0X27axkUXz32T8TA== +"@typescript-eslint/scope-manager@7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-7.2.0.tgz#cfb437b09a84f95a0930a76b066e89e35d94e3da" + integrity sha512-Qh976RbQM/fYtjx9hs4XkayYujB/aPwglw2choHmf3zBjB4qOywWSdt9+KLRdHubGcoSwBnXUH2sR3hkyaERRg== dependencies: - "@typescript-eslint/types" "7.1.1" - "@typescript-eslint/visitor-keys" "7.1.1" + "@typescript-eslint/types" "7.2.0" + "@typescript-eslint/visitor-keys" "7.2.0" -"@typescript-eslint/type-utils@6.21.0": - version "6.21.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-6.21.0.tgz#6473281cfed4dacabe8004e8521cee0bd9d4c01e" - integrity sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag== - dependencies: - "@typescript-eslint/typescript-estree" "6.21.0" - "@typescript-eslint/utils" "6.21.0" - debug "^4.3.4" - ts-api-utils "^1.0.1" - -"@typescript-eslint/type-utils@7.1.1": - version "7.1.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-7.1.1.tgz#aee820d5bedd39b83c18585a526cc520ddb7a226" - integrity sha512-5r4RKze6XHEEhlZnJtR3GYeCh1IueUHdbrukV2KSlLXaTjuSfeVF8mZUVPLovidCuZfbVjfhi4c0DNSa/Rdg5g== +"@typescript-eslint/type-utils@7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-7.2.0.tgz#7be5c30e9b4d49971b79095a1181324ef6089a19" + integrity sha512-xHi51adBHo9O9330J8GQYQwrKBqbIPJGZZVQTHHmy200hvkLZFWJIFtAG/7IYTWUyun6DE6w5InDReePJYJlJA== dependencies: - "@typescript-eslint/typescript-estree" "7.1.1" - "@typescript-eslint/utils" "7.1.1" + "@typescript-eslint/typescript-estree" "7.2.0" + "@typescript-eslint/utils" "7.2.0" debug "^4.3.4" ts-api-utils "^1.0.1" -"@typescript-eslint/types@6.21.0": - version "6.21.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.21.0.tgz#205724c5123a8fef7ecd195075fa6e85bac3436d" - integrity sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg== - -"@typescript-eslint/types@7.1.1": - version "7.1.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-7.1.1.tgz#ca33ba7cf58224fb46a84fea62593c2c53cd795f" - integrity sha512-KhewzrlRMrgeKm1U9bh2z5aoL4s7K3tK5DwHDn8MHv0yQfWFz/0ZR6trrIHHa5CsF83j/GgHqzdbzCXJ3crx0Q== - -"@typescript-eslint/typescript-estree@6.21.0": - version "6.21.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz#c47ae7901db3b8bddc3ecd73daff2d0895688c46" - integrity sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ== - dependencies: - "@typescript-eslint/types" "6.21.0" - "@typescript-eslint/visitor-keys" "6.21.0" - debug "^4.3.4" - globby "^11.1.0" - is-glob "^4.0.3" - minimatch "9.0.3" - semver "^7.5.4" - ts-api-utils "^1.0.1" +"@typescript-eslint/types@7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-7.2.0.tgz#0feb685f16de320e8520f13cca30779c8b7c403f" + integrity sha512-XFtUHPI/abFhm4cbCDc5Ykc8npOKBSJePY3a3s+lwumt7XWJuzP5cZcfZ610MIPHjQjNsOLlYK8ASPaNG8UiyA== -"@typescript-eslint/typescript-estree@7.1.1": - version "7.1.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-7.1.1.tgz#09c54af0151a1b05d0875c0fc7fe2ec7a2476ece" - integrity sha512-9ZOncVSfr+sMXVxxca2OJOPagRwT0u/UHikM2Rd6L/aB+kL/QAuTnsv6MeXtjzCJYb8PzrXarypSGIPx3Jemxw== +"@typescript-eslint/typescript-estree@7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-7.2.0.tgz#5beda2876c4137f8440c5a84b4f0370828682556" + integrity sha512-cyxS5WQQCoBwSakpMrvMXuMDEbhOo9bNHHrNcEWis6XHx6KF518tkF1wBvKIn/tpq5ZpUYK7Bdklu8qY0MsFIA== dependencies: - "@typescript-eslint/types" "7.1.1" - "@typescript-eslint/visitor-keys" "7.1.1" + "@typescript-eslint/types" "7.2.0" + "@typescript-eslint/visitor-keys" "7.2.0" debug "^4.3.4" globby "^11.1.0" is-glob "^4.0.3" @@ -1879,46 +1813,25 @@ semver "^7.5.4" ts-api-utils "^1.0.1" -"@typescript-eslint/utils@6.21.0": - version "6.21.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-6.21.0.tgz#4714e7a6b39e773c1c8e97ec587f520840cd8134" - integrity sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ== - dependencies: - "@eslint-community/eslint-utils" "^4.4.0" - "@types/json-schema" "^7.0.12" - "@types/semver" "^7.5.0" - "@typescript-eslint/scope-manager" "6.21.0" - "@typescript-eslint/types" "6.21.0" - "@typescript-eslint/typescript-estree" "6.21.0" - semver "^7.5.4" - -"@typescript-eslint/utils@7.1.1": - version "7.1.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-7.1.1.tgz#bdeeb789eee4af5d3fb5400a69566d4dbf97ff3b" - integrity sha512-thOXM89xA03xAE0lW7alstvnyoBUbBX38YtY+zAUcpRPcq9EIhXPuJ0YTv948MbzmKh6e1AUszn5cBFK49Umqg== +"@typescript-eslint/utils@7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-7.2.0.tgz#fc8164be2f2a7068debb4556881acddbf0b7ce2a" + integrity sha512-YfHpnMAGb1Eekpm3XRK8hcMwGLGsnT6L+7b2XyRv6ouDuJU1tZir1GS2i0+VXRatMwSI1/UfcyPe53ADkU+IuA== dependencies: "@eslint-community/eslint-utils" "^4.4.0" "@types/json-schema" "^7.0.12" "@types/semver" "^7.5.0" - "@typescript-eslint/scope-manager" "7.1.1" - "@typescript-eslint/types" "7.1.1" - "@typescript-eslint/typescript-estree" "7.1.1" + "@typescript-eslint/scope-manager" "7.2.0" + "@typescript-eslint/types" "7.2.0" + "@typescript-eslint/typescript-estree" "7.2.0" semver "^7.5.4" -"@typescript-eslint/visitor-keys@6.21.0": - version "6.21.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz#87a99d077aa507e20e238b11d56cc26ade45fe47" - integrity sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A== - dependencies: - "@typescript-eslint/types" "6.21.0" - eslint-visitor-keys "^3.4.1" - -"@typescript-eslint/visitor-keys@7.1.1": - version "7.1.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-7.1.1.tgz#e6538a58c9b157f03bcbb29e3b6a92fe39a6ab0d" - integrity sha512-yTdHDQxY7cSoCcAtiBzVzxleJhkGB9NncSIyMYe2+OGON1ZsP9zOPws/Pqgopa65jvknOjlk/w7ulPlZ78PiLQ== +"@typescript-eslint/visitor-keys@7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-7.2.0.tgz#5035f177752538a5750cca1af6044b633610bf9e" + integrity sha512-c6EIQRHhcpl6+tO8EMR+kjkkV+ugUNXOmeASA1rlzkd8EPIriavpWoiEz1HR/VLhbVIdhqnV6E7JZm00cBDx2A== dependencies: - "@typescript-eslint/types" "7.1.1" + "@typescript-eslint/types" "7.2.0" eslint-visitor-keys "^3.4.1" "@ungap/structured-clone@^1.2.0": @@ -1926,28 +1839,28 @@ resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== -"@unhead/dom@1.8.11": - version "1.8.11" - resolved "https://registry.yarnpkg.com/@unhead/dom/-/dom-1.8.11.tgz#217c0d70a5659554f1cb589cbad65a950c48e084" - integrity sha512-B5Bae4Y+6/2oDlfNJwEuf1kApyM4pmZ01VReWcVDYAdZpkD7eZZoVZnF945MluaMb6SMvGIXejcSUXTH/BOWaQ== +"@unhead/dom@1.8.18": + version "1.8.18" + resolved "https://registry.yarnpkg.com/@unhead/dom/-/dom-1.8.18.tgz#64958f98134deb216f8e4cc6b714349c9d070f93" + integrity sha512-F6ckuW+IAojGCSb++WFQlDeI3/80OALpD6yDcDrhAxZ8ogQatd5gXWjTmSiuV/0M2XIeDq3jwampvq6oomU6Gw== dependencies: - "@unhead/schema" "1.8.11" - "@unhead/shared" "1.8.11" + "@unhead/schema" "1.8.18" + "@unhead/shared" "1.8.18" -"@unhead/schema@1.8.11": - version "1.8.11" - resolved "https://registry.yarnpkg.com/@unhead/schema/-/schema-1.8.11.tgz#87600f4afd9059679cd7f9eee3ae1c1627669a53" - integrity sha512-Aok9sZcVznJxjBRF/v2LKaeoqgYU/9kuyknYhf3M13byrdp3dLD6qcUvnLC98PrPVy7CMfOov4kXHoI/DRY5MQ== +"@unhead/schema@1.8.18": + version "1.8.18" + resolved "https://registry.yarnpkg.com/@unhead/schema/-/schema-1.8.18.tgz#792bad2fa5fcdd87b5a2c33aa4225a2bdc75d866" + integrity sha512-E4oq4juwGJkXPOJlc4Qdp1iVTe79H4TSMWkOB8sSlU44vhvcuZduFYH9CCn29JvtV/640Uaf2QeX4o+wX96LRQ== dependencies: hookable "^5.5.3" zhead "^2.2.4" -"@unhead/shared@1.8.11": - version "1.8.11" - resolved "https://registry.yarnpkg.com/@unhead/shared/-/shared-1.8.11.tgz#1b5e6703e6920f6979fe69dea153d90c43814622" - integrity sha512-Mz3pAJUq160mPXYFNUalfyEDQ0a6eRIbMlJFQ7HNy8shM+4kbeKgInoaa2EaFF8zRrhYvuLJZhyLk5kFINSmBg== +"@unhead/shared@1.8.18": + version "1.8.18" + resolved "https://registry.yarnpkg.com/@unhead/shared/-/shared-1.8.18.tgz#059f1baaf175ab1ce0a5dc6dc80588ffad93b2d7" + integrity sha512-2Tw5oyTjMkPn11UoR9AB3kSk2nDVG+7nCS4dZUwdxTMqndUnYyWoGB0EcO2WbK6YpkpulLIlfmiXVzWW4PTrWg== dependencies: - "@unhead/schema" "1.8.11" + "@unhead/schema" "1.8.18" "@urql/core@>=4.3.0", "@urql/core@^4.0.0": version "4.3.0" @@ -1979,26 +1892,26 @@ resolved "https://registry.yarnpkg.com/@vitejs/plugin-vue/-/plugin-vue-5.0.4.tgz#508d6a0f2440f86945835d903fcc0d95d1bb8a37" integrity sha512-WS3hevEszI6CEVEx28F8RjTX97k3KsrcY6kvTg7+Whm5y3oYvcqzVeGCU3hxSAn4uY2CLCkeokkGKpoctccilQ== -"@volar/language-core@2.1.1", "@volar/language-core@~2.1.1": - version "2.1.1" - resolved "https://registry.yarnpkg.com/@volar/language-core/-/language-core-2.1.1.tgz#ea7c2448ac5bdb2dd2ed202e5ff57929cb8ef191" - integrity sha512-oVbZcj97+5zlowkHMSJMt3aaAFuFyhXeXoOEHcqGECxFvw1TPCNnMM9vxhqNpoiNeWKHvggoq9WCk/HzJHtP8A== +"@volar/language-core@2.1.2", "@volar/language-core@~2.1.2": + version "2.1.2" + resolved "https://registry.yarnpkg.com/@volar/language-core/-/language-core-2.1.2.tgz#2053c0ee48a822d5418be2c192e51e580764b49f" + integrity sha512-5qsDp0Gf6fE09UWCeK7bkVn6NxMwC9OqFWQkMMkeej8h8XjyABPdRygC2RCrqDrfVdGijqlMQeXs6yRS+vfZYA== dependencies: - "@volar/source-map" "2.1.1" + "@volar/source-map" "2.1.2" -"@volar/source-map@2.1.1": - version "2.1.1" - resolved "https://registry.yarnpkg.com/@volar/source-map/-/source-map-2.1.1.tgz#9ca00177177417496a0364cea2f965445e19abb2" - integrity sha512-OOtxrEWB2eZ+tnCy5JwDkcCPGlN3+ioNNzkywXE9k4XA7p4cN36frR7QPAOksvd7RXKUGHzSjq6XrYnTPa4z4Q== +"@volar/source-map@2.1.2": + version "2.1.2" + resolved "https://registry.yarnpkg.com/@volar/source-map/-/source-map-2.1.2.tgz#d270ff8ef5c814582f0efe08272c0fd6b9effb3b" + integrity sha512-yFJqsuLm1OaWrsz9E3yd3bJcYIlHqdZ8MbmIoZLrAzMYQDcoF26/INIhgziEXSdyHc8xd7rd/tJdSnUyh0gH4Q== dependencies: muggle-string "^0.4.0" -"@volar/typescript@~2.1.1": - version "2.1.1" - resolved "https://registry.yarnpkg.com/@volar/typescript/-/typescript-2.1.1.tgz#b3dddaf39140cc0e00d67bad943496e2470a3882" - integrity sha512-5K41AWvFZCMMKZCx8bbFvbkyiKHr0s9k8P0M1FVXLX/9HYHzK5C9B8cX4uhATSehAytFIRnR4fTXVQtWp/Yzag== +"@volar/typescript@~2.1.2": + version "2.1.2" + resolved "https://registry.yarnpkg.com/@volar/typescript/-/typescript-2.1.2.tgz#61f838cf4410e328a7ba638fadc41bb814772508" + integrity sha512-lhTancZqamvaLvoz0u/uth8dpudENNt2LFZOWCw9JZiX14xRFhdhfzmphiCRb7am9E6qAJSbdS/gMt1utXAoHQ== dependencies: - "@volar/language-core" "2.1.1" + "@volar/language-core" "2.1.2" path-browserify "^1.0.1" "@vue/compiler-core@3.4.21": @@ -2056,21 +1969,21 @@ eslint-config-prettier "^9.0.0" eslint-plugin-prettier "^5.0.0" -"@vue/eslint-config-typescript@^12.0.0": - version "12.0.0" - resolved "https://registry.yarnpkg.com/@vue/eslint-config-typescript/-/eslint-config-typescript-12.0.0.tgz#0ce22d97af5e4155f3f2e7b21a48cfde8a6f3365" - integrity sha512-StxLFet2Qe97T8+7L8pGlhYBBr8Eg05LPuTDVopQV6il+SK6qqom59BA/rcFipUef2jD8P2X44Vd8tMFytfvlg== +"@vue/eslint-config-typescript@^13.0.0": + version "13.0.0" + resolved "https://registry.yarnpkg.com/@vue/eslint-config-typescript/-/eslint-config-typescript-13.0.0.tgz#f5f3d986ace34a10f403921d5044831b89a1b679" + integrity sha512-MHh9SncG/sfqjVqjcuFLOLD6Ed4dRAis4HNt0dXASeAuLqIAx4YMB1/m2o4pUKK1vCt8fUvYG8KKX2Ot3BVZTg== dependencies: - "@typescript-eslint/eslint-plugin" "^6.7.0" - "@typescript-eslint/parser" "^6.7.0" + "@typescript-eslint/eslint-plugin" "^7.1.1" + "@typescript-eslint/parser" "^7.1.1" vue-eslint-parser "^9.3.1" -"@vue/language-core@2.0.5": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@vue/language-core/-/language-core-2.0.5.tgz#bd3502604ea785f4171815005997988563f18469" - integrity sha512-knGXuQqhDSO7QJr8LFklsiWa23N2ikehkdVxtc9UKgnyqsnusughS2Tkg7VN8Hqed35X0B52Z+OGI5OrT/8uxQ== +"@vue/language-core@2.0.6": + version "2.0.6" + resolved "https://registry.yarnpkg.com/@vue/language-core/-/language-core-2.0.6.tgz#876f90622a3f801dce5cedcd6eae429d732152e2" + integrity sha512-UzqU12tzf9XLqRO3TiWPwRNpP4fyUzE6MAfOQWQNZ4jy6a30ARRUpmODDKq6O8C4goMc2AlPqTmjOHPjHkilSg== dependencies: - "@volar/language-core" "~2.1.1" + "@volar/language-core" "~2.1.2" "@vue/compiler-dom" "^3.4.0" "@vue/shared" "^3.4.0" computeds "^0.0.1" @@ -2178,9 +2091,9 @@ tslib "^2.3.1" "@whatwg-node/node-fetch@^0.5.7": - version "0.5.7" - resolved "https://registry.yarnpkg.com/@whatwg-node/node-fetch/-/node-fetch-0.5.7.tgz#88d231c4e377354580f317cd5bb719fa1868850d" - integrity sha512-YZA+N3JcW1eh2QRi7o/ij+M07M0dqID73ltgsOEMRyEc2UYVDbyomaih+CWCEZqBIDHw4KMDveXvv4SBZ4TLIw== + version "0.5.8" + resolved "https://registry.yarnpkg.com/@whatwg-node/node-fetch/-/node-fetch-0.5.8.tgz#dc399422c35bc6ba75858fe3597fa248314d035f" + integrity sha512-rB+2P3oi9fD4TcsijkflJAQqOh4yZrPgOV4fGaDgCdOqqwTicJvL2nnVbr3comW8bxEuypOcyE1AtBtkpip0Gw== dependencies: "@kamilkisiela/fast-url-parser" "^1.1.4" "@whatwg-node/events" "^0.1.0" @@ -2357,9 +2270,9 @@ base64-js@^1.3.1: integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== binary-extensions@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" - integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== + version "2.3.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.3.0.tgz#f6e14a97858d327252200242d4ccfe522c445522" + integrity sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw== bl@^4.1.0: version "4.1.0" @@ -2464,9 +2377,9 @@ camelcase@^5.0.0: integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== caniuse-lite@^1.0.30001587: - version "1.0.30001594" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001594.tgz#bea552414cd52c2d0c985ed9206314a696e685f5" - integrity sha512-VblSX6nYqyJVs8DKFMldE2IVCJjZ225LW00ydtUWwh5hk9IfkTOffO6r8gJNsH0qqqeAF8KrbMYA2VEwTlGW5g== + version "1.0.30001597" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001597.tgz#8be94a8c1d679de23b22fbd944232aa1321639e6" + integrity sha512-7LjJvmQU6Sj7bL0j5b5WY/3n7utXUJvAe1lxhsHDbLmwX9mdL86Yjtr+5SRCyf8qME4M7pU2hswj0FpyBVCv9w== capital-case@^1.0.4: version "1.0.4" @@ -2751,7 +2664,7 @@ defaults@^1.0.3: dependencies: clone "^1.0.2" -define-data-property@^1.1.2: +define-data-property@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e" integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A== @@ -2808,9 +2721,9 @@ dset@^3.1.2: integrity sha512-20TuZZHCEZ2O71q9/+8BwKwZ0QtD9D8ObhrihJPr+vLLYlSuAU3/zL4cSlgbfeoGHTjCSJBa7NGcrF9/Bx/WJQ== electron-to-chromium@^1.4.668: - version "1.4.692" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.692.tgz#82139d20585a4b2318a02066af7593a3e6bec993" - integrity sha512-d5rZRka9n2Y3MkWRN74IoAsxR0HK3yaAt7T50e3iT9VZmCCQDT3geXUO5ZRMhDToa1pkCeQXuNo+0g+NfDOVPA== + version "1.4.707" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.707.tgz#77904f87432b8b50b8b8b654ba3940d2bef48d63" + integrity sha512-qRq74Mo7ChePOU6GHdfAJ0NREXU8vQTlVlfWz3wNygFay6xrd/fY2J7oGHwrhFeU30OVctGLdTh/FcnokTWpng== emoji-regex@^8.0.0: version "8.0.0" @@ -2903,10 +2816,10 @@ eslint-plugin-prettier@^5.0.0, eslint-plugin-prettier@^5.1.3: prettier-linter-helpers "^1.0.0" synckit "^0.8.6" -eslint-plugin-vue@^9.22.0: - version "9.22.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-vue/-/eslint-plugin-vue-9.22.0.tgz#e8a625adb0b6ce3b65635dd74fec8345146f8e26" - integrity sha512-7wCXv5zuVnBtZE/74z4yZ0CM8AjH6bk4MQGm7hZjUC2DBppKU5ioeOk5LGSg/s9a1ZJnIsdPLJpXnu1Rc+cVHg== +eslint-plugin-vue@^9.23.0: + version "9.23.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-vue/-/eslint-plugin-vue-9.23.0.tgz#1354a33b0cd21e0cb373557ff73c5d7a6698fbcd" + integrity sha512-Bqd/b7hGYGrlV+wP/g77tjyFmp81lh5TMw0be9093X02SyelxRRfCI6/IsGq/J7Um0YwB9s0Ry0wlFyjPdmtUw== dependencies: "@eslint-community/eslint-utils" "^4.4.0" natural-compare "^1.4.0" @@ -3205,7 +3118,7 @@ get-caller-file@^2.0.1, get-caller-file@^2.0.5: resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== -get-intrinsic@^1.1.3, get-intrinsic@^1.2.3, get-intrinsic@^1.2.4: +get-intrinsic@^1.1.3, get-intrinsic@^1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz#e385f5a4b5227d449c3eabbad05494ef0abbeadd" integrity sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ== @@ -3330,7 +3243,7 @@ has-flag@^4.0.0: resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== -has-property-descriptors@^1.0.1: +has-property-descriptors@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854" integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg== @@ -3348,9 +3261,9 @@ has-symbols@^1.0.3: integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== hasown@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.1.tgz#26f48f039de2c0f8d3356c223fb8d50253519faa" - integrity sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA== + version "2.0.2" + resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" + integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== dependencies: function-bind "^1.1.2" @@ -3595,9 +3508,9 @@ jiti@^1.17.1, jiti@^1.18.2: integrity sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q== jose@^5.0.0: - version "5.2.2" - resolved "https://registry.yarnpkg.com/jose/-/jose-5.2.2.tgz#b91170e9ba6dbe609b0c0a86568f9a1fbe4335c0" - integrity sha512-/WByRr4jDcsKlvMd1dRJnPfS1GVO3WuKyaurJ/vvXcOaUQO8rnNObCQMlv/5uCceVQIq5Q4WLF44ohsdiTohdg== + version "5.2.3" + resolved "https://registry.yarnpkg.com/jose/-/jose-5.2.3.tgz#071c87f9fe720cff741a403c8080b69bfe13164a" + integrity sha512-KUXdbctm1uHVL8BYhnyHkgp3zDX5KW8ZhAKVFEfUbU2P8Alpzjb+48hHvjOdQIyPshoblhzsuqOwEEAbtHVirA== "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" @@ -4194,9 +4107,9 @@ postcss-scss@^4.0.3: integrity sha512-AjKOeiwAitL/MXxQW2DliT28EKukvvbEWx3LBmJIRN8KfBGZbRTxNYW0kSqi1COiTZ57nZ9NW06S6ux//N1c9A== postcss-selector-parser@^6.0.15: - version "6.0.15" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.15.tgz#11cc2b21eebc0b99ea374ffb9887174855a01535" - integrity sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw== + version "6.0.16" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.16.tgz#3b88b9f5c5abd989ef4e2fc9ec8eedd34b20fb04" + integrity sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw== dependencies: cssesc "^3.0.0" util-deprecate "^1.0.2" @@ -4524,9 +4437,9 @@ rimraf@^3.0.2: glob "^7.1.3" rollup@^4.2.0, "rollup@npm:@rollup/wasm-node": - version "4.12.0" - resolved "https://registry.yarnpkg.com/@rollup/wasm-node/-/wasm-node-4.12.0.tgz#d131697bbbfca561e57c910841db97e8841a6b02" - integrity sha512-sqy3+YvV/uWX6bPZOR5PlEdH6xyMPXoelllRQ/uZ13tzy9f4pXZTbajnoWN8IHHXwTNKPiLzsePLiDEVmkxMNw== + version "4.13.0" + resolved "https://registry.yarnpkg.com/@rollup/wasm-node/-/wasm-node-4.13.0.tgz#09e76780b9db2f6b3f3bb9d2fef536e2dfaa0725" + integrity sha512-oFX11wzU7RTaiW06WBtRpzIVN/oaG0I3XkevNO0brBklYnY9zpLhTfksN4b+TdBt6CfXV/KdVhdWLbb0fQIR7A== dependencies: "@types/estree" "1.0.5" optionalDependencies: @@ -4566,10 +4479,10 @@ safe-buffer@~5.2.0: resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== -sass@^1.71.1: - version "1.71.1" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.71.1.tgz#dfb09c63ce63f89353777bbd4a88c0a38386ee54" - integrity sha512-wovtnV2PxzteLlfNzbgm1tFXPLoZILYAMJtvoXXkD7/+1uP41eKkIt1ypWq5/q2uT94qHjXehEYfmjKOvjL9sg== +sass@^1.72.0: + version "1.72.0" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.72.0.tgz#5b9978943fcfb32b25a6a5acb102fc9dabbbf41c" + integrity sha512-Gpczt3WA56Ly0Mn8Sl21Vj94s1axi9hDIzDFn9Ph9x3C3p4nNyvsqJoQyVXKou6cBlfFWEgRW4rT8Tb4i3XnVA== dependencies: chokidar ">=3.0.0 <4.0.0" immutable "^4.0.0" @@ -4607,16 +4520,16 @@ set-blocking@^2.0.0: integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== set-function-length@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.1.tgz#47cc5945f2c771e2cf261c6737cf9684a2a5e425" - integrity sha512-j4t6ccc+VsKwYHso+kElc5neZpjtq9EnRICFZtWyBsLojhmeF/ZBd/elqm22WJh/BziDe/SBiOeAt0m2mfLD0g== + version "1.2.2" + resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449" + integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg== dependencies: - define-data-property "^1.1.2" + define-data-property "^1.1.4" es-errors "^1.3.0" function-bind "^1.1.2" - get-intrinsic "^1.2.3" + get-intrinsic "^1.2.4" gopd "^1.0.1" - has-property-descriptors "^1.0.1" + has-property-descriptors "^1.0.2" setimmediate@^1.0.5: version "1.0.5" @@ -4824,9 +4737,9 @@ tr46@~0.0.3: integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== ts-api-utils@^1.0.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.2.1.tgz#f716c7e027494629485b21c0df6180f4d08f5e8b" - integrity sha512-RIYA36cJn2WiH9Hy77hdF9r7oEwxAtB/TS9/S4Qd90Ap4z5FSiin5zEiTL44OII1Y3IIlEvxwxFUVgrHSZ/UpA== + version "1.3.0" + resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.3.0.tgz#4b490e27129f1e8e686b45cc4ab63714dc60eea1" + integrity sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ== ts-log@^2.2.3: version "2.2.5" @@ -4855,10 +4768,10 @@ type-fest@^0.21.3: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== -typescript@^5.3.3: - version "5.3.3" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.3.3.tgz#b3ce6ba258e72e6305ba66f5c9b452aaee3ffe37" - integrity sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw== +typescript@^5.4.2: + version "5.4.2" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.4.2.tgz#0ae9cebcfae970718474fe0da2c090cad6577372" + integrity sha512-+2/g0Fds1ERlP6JsakQQDXjZdZMM+rqpamFZJEKh4kwTIn3iDkgKtby0CeNd5ATNZ4Ry1ax15TMx0W2V+miizQ== ua-parser-js@^1.0.35: version "1.0.37" @@ -4885,14 +4798,14 @@ undici-types@~5.26.4: resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== -unhead@^1.8.11: - version "1.8.11" - resolved "https://registry.yarnpkg.com/unhead/-/unhead-1.8.11.tgz#40115ae948267f8fc5aa68589f9d39423d25e7b5" - integrity sha512-g1coK+pRv+RbeD4+hK76FV6Y++i5jY99CftKyP1ARQcLCbz0ri6+vBpWMS4d+h7x0DfWSCGm/wWkPQ1WXWHfRA== +unhead@^1.8.18: + version "1.8.18" + resolved "https://registry.yarnpkg.com/unhead/-/unhead-1.8.18.tgz#0754e53bb3b7861cb724dd4d04370e453b51f39a" + integrity sha512-XmCGVev0bwo+jy5qh6PW1vACnPoQvv3MEwqo4w0+49W2ZGPMZYPtIa8GAZiaWgkycrlie1WgZejjJEG9bYVgZw== dependencies: - "@unhead/dom" "1.8.11" - "@unhead/schema" "1.8.11" - "@unhead/shared" "1.8.11" + "@unhead/dom" "1.8.18" + "@unhead/schema" "1.8.18" + "@unhead/shared" "1.8.18" hookable "^5.5.3" unixify@^1.0.0: @@ -4913,9 +4826,9 @@ unplugin-fluent-vue@^1.2.0: unplugin "^1.0.0" unplugin@^1.0.0: - version "1.8.1" - resolved "https://registry.yarnpkg.com/unplugin/-/unplugin-1.8.1.tgz#4948da299e5dbeaf5a4068f25141dfb7459c43f9" - integrity sha512-NDAvOEnZmeSRRmjfD0FoLzfve2/9lqceO5bR4J/2V72zphnFdq7UYo3fg6F1y1HfZEaSHa+7bZgbEN+z5x8ZDQ== + version "1.10.0" + resolved "https://registry.yarnpkg.com/unplugin/-/unplugin-1.10.0.tgz#9cb8140f61e3fbcf27c7c38d305e9d62d5dbbf0b" + integrity sha512-CuZtvvO8ua2Wl+9q2jEaqH6m3DoQ38N7pvBYQbbaeNlWGvK2l6GHiKi29aIHDPoSxdUzQ7Unevf1/ugil5X6Pg== dependencies: acorn "^8.11.3" chokidar "^3.6.0" @@ -4971,10 +4884,10 @@ value-or-promise@^1.0.11, value-or-promise@^1.0.12: resolved "https://registry.yarnpkg.com/value-or-promise/-/value-or-promise-1.0.12.tgz#0e5abfeec70148c78460a849f6b003ea7986f15c" integrity sha512-Z6Uz+TYwEqE7ZN50gwn+1LCVo9ZVrpxRPOhOLnncYkY1ZzOYtrX8Fwf/rFktZ8R5mJms6EZf5TqNOMeZmnPq9Q== -vite@^5.1.5: - version "5.1.5" - resolved "https://registry.yarnpkg.com/vite/-/vite-5.1.5.tgz#bdbc2b15e8000d9cc5172f059201178f9c9de5fb" - integrity sha512-BdN1xh0Of/oQafhU+FvopafUp6WaYenLU/NFoL5WyJL++GxkNfieKzBhM24H3HVsPQrlAqB7iJYTHabzaRed5Q== +vite@^5.1.6: + version "5.1.6" + resolved "https://registry.yarnpkg.com/vite/-/vite-5.1.6.tgz#706dae5fab9e97f57578469eef1405fc483943e4" + integrity sha512-yYIAZs9nVfRJ/AiOLCA91zzhjsHUgMjB+EigzFb6W2XTLO8JixBCKCjvhKZaye+NKYHCrkv3Oh50dH9EdLU2RA== dependencies: esbuild "^0.19.3" postcss "^8.4.35" @@ -5032,13 +4945,13 @@ vue-template-compiler@^2.7.14: de-indent "^1.0.2" he "^1.2.0" -vue-tsc@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/vue-tsc/-/vue-tsc-2.0.5.tgz#f491e24d74fcbf50cc3a71fce5ac2c99ee6335d9" - integrity sha512-e8WCgOVTrbmC04XPnI+IpaMTFYKaTm5s/MXFcvxO1l9kxzn+9FpGNVrBSlQE8VpTJaJg4kaBK1nj3NC20VJzjw== +vue-tsc@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/vue-tsc/-/vue-tsc-2.0.6.tgz#29cb195ffea63d66ec70b64eb4aadc6cd162bb12" + integrity sha512-kK50W4XqQL34vHRkxlRWLicrT6+F9xfgCgJ4KSmCHcytKzc1u3c94XXgI+CjmhOSxyw0krpExF7Obo7y4+0dVQ== dependencies: - "@volar/typescript" "~2.1.1" - "@vue/language-core" "2.0.5" + "@volar/typescript" "~2.1.2" + "@vue/language-core" "2.0.6" semver "^7.5.4" vue-virtual-scroller@^2.0.0-beta.8: @@ -5050,7 +4963,7 @@ vue-virtual-scroller@^2.0.0-beta.8: vue-observe-visibility "^2.0.0-alpha.1" vue-resize "^2.0.0-alpha.1" -vue@^3.2.19, vue@^3.4.15, vue@^3.4.21: +vue@^3.2.19, vue@^3.4.21: version "3.4.21" resolved "https://registry.yarnpkg.com/vue/-/vue-3.4.21.tgz#69ec30e267d358ee3a0ce16612ba89e00aaeb731" integrity sha512-5hjyV/jLEIKD/jYl4cavMcnzKwjMKohureP8ejn3hhEjwhWIhWeuzL2kJAjzl/WyVsgPY56Sy4Z40C3lVshxXA== @@ -5188,9 +5101,9 @@ yaml-ast-parser@^0.0.43: integrity sha512-2PTINUwsRqSd+s8XxKaJWQlUuEMHJQyEuh2edBbW8KNJz0SJPwUSD2zRWqezFEdN7IzAgeuYHFUCF7o8zRdZ0A== yaml@^2.3.1: - version "2.4.0" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.4.0.tgz#2376db1083d157f4b3a452995803dbcf43b08140" - integrity sha512-j9iR8g+/t0lArF4V6NE/QCfT+CO7iLqrXAHZbJdo+LfjqP1vR8Fg5bSiaq6Q2lOD1AUEVrEVIgABvBFYojJVYQ== + version "2.4.1" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.4.1.tgz#2e57e0b5e995292c25c75d2658f0664765210eed" + integrity sha512-pIXzoImaqmfOrL7teGUBt/T7ZDnyeGBWyXQBvOVhLkWLN37GXv8NMLK406UY6dS51JfcQHsmcW5cJ441bHg6Lg== yargs-parser@^18.1.2: version "18.1.3" diff --git a/kitsune-job-runner/Cargo.toml b/kitsune-job-runner/Cargo.toml index 10a5273ee..33b1fa7cd 100644 --- a/kitsune-job-runner/Cargo.toml +++ b/kitsune-job-runner/Cargo.toml @@ -13,7 +13,7 @@ eula = false [dependencies] athena = { path = "../lib/athena" } -clap = { version = "4.5.2", features = ["derive", "wrap_help"] } +clap = { version = "4.5.3", features = ["derive", "wrap_help"] } just-retry = { path = "../lib/just-retry" } kitsune-config = { path = "../crates/kitsune-config" } kitsune-core = { path = "../crates/kitsune-core" } @@ -29,7 +29,7 @@ kitsune-wasm-mrf = { path = "../crates/kitsune-wasm-mrf" } miette = { version = "7.2.0", features = ["fancy"] } mimalloc = "0.1.39" multiplex-pool = { path = "../lib/multiplex-pool" } -redis = { version = "0.24.0", default-features = false, features = [ +redis = { version = "0.25.2", default-features = false, features = [ "aio", "connection-manager", "tokio-rustls-comp", diff --git a/kitsune/Cargo.toml b/kitsune/Cargo.toml index 70bad3fcb..e02bc88eb 100644 --- a/kitsune/Cargo.toml +++ b/kitsune/Cargo.toml @@ -33,15 +33,15 @@ axum-flash = "0.8.0" blowocking = { path = "../lib/blowocking" } bytes = "1.5.0" chrono = { version = "0.4.35", default-features = false } -clap = { version = "4.5.2", features = ["derive", "wrap_help"] } +clap = { version = "4.5.3", features = ["derive", "wrap_help"] } cursiv = { path = "../lib/cursiv", features = ["axum"] } der = { version = "0.7.8", features = ["std"] } -diesel = "2.1.4" +diesel = "2.1.5" diesel-async = "0.4.1" futures-util = "0.3.30" headers = "0.4.0" http = "1.1.0" -http-body-util = "0.1.0" +http-body-util = "0.1.1" http-signatures = { path = "../lib/http-signatures" } iso8601-timestamp = "0.2.17" itertools = { version = "0.12.1", default-features = false } @@ -76,7 +76,7 @@ mime_guess = { version = "2.0.4", default-features = false } oxide-auth = "0.5.4" oxide-auth-async = "0.1.1" oxide-auth-axum = "0.4.0" -redis = { version = "0.24.0", default-features = false, features = [ +redis = { version = "0.25.2", default-features = false, features = [ "tokio-rustls-comp", ] } rust-embed = { version = "8.3.0", features = ["include-exclude"] } @@ -86,9 +86,9 @@ serde_urlencoded = "0.7.1" simd-json = "0.13.8" simdutf8 = { version = "0.1.4", features = ["aarch64_neon"] } speedy-uuid = { path = "../lib/speedy-uuid" } -strum = { version = "0.26.1", features = ["derive", "phf"] } +strum = { version = "0.26.2", features = ["derive", "phf"] } tempfile = "3.10.1" -thiserror = "1.0.57" +thiserror = "1.0.58" time = "0.3.34" tokio = { version = "1.36.0", features = ["full"] } tokio-util = { version = "0.7.10", features = ["compat"] } @@ -111,7 +111,7 @@ utoipa-swagger-ui = { version = "6.0.0", features = ["axum"] } # --- Optional dependencies --- # "graphql" feature -async-graphql = { version = "7.0.2", default-features = false, features = [ +async-graphql = { version = "7.0.3", default-features = false, features = [ "playground", "tempfile", "time", @@ -119,7 +119,7 @@ async-graphql = { version = "7.0.2", default-features = false, features = [ "unblock", "uuid", ], optional = true } -async-graphql-axum = { version = "7.0.2", optional = true } +async-graphql-axum = { version = "7.0.3", optional = true } # "mastodon-api" feature kitsune-mastodon = { path = "../crates/kitsune-mastodon", optional = true } @@ -137,7 +137,7 @@ kitsune-http-client = { path = "../crates/kitsune-http-client" } kitsune-test = { path = "../crates/kitsune-test" } multiplex-pool = { path = "../lib/multiplex-pool" } pretty_assertions = "1.4.0" -redis = { version = "0.24.0", default-features = false, features = [ +redis = { version = "0.25.2", default-features = false, features = [ "connection-manager", "tokio-comp", ] } diff --git a/lib/athena/Cargo.toml b/lib/athena/Cargo.toml index 796c27925..03e8029ac 100644 --- a/lib/athena/Cargo.toml +++ b/lib/athena/Cargo.toml @@ -14,7 +14,7 @@ just-retry = { path = "../just-retry" } multiplex-pool = { path = "../multiplex-pool" } once_cell = "1.19.0" rand = "0.8.5" -redis = { version = "0.24.0", default-features = false, features = [ +redis = { version = "0.25.2", default-features = false, features = [ "ahash", "connection-manager", "script", @@ -25,14 +25,14 @@ serde = { version = "1.0.197", features = ["derive"] } simd-json = "0.13.8" smol_str = "0.2.1" speedy-uuid = { path = "../speedy-uuid", features = ["redis", "serde"] } -thiserror = "1.0.57" +thiserror = "1.0.58" tokio = { version = "1.36.0", features = ["macros", "rt", "sync"] } tokio-util = { version = "0.7.10", features = ["rt"] } tracing = "0.1.40" typed-builder = "0.18.1" [dev-dependencies] -redis = { version = "0.24.0", features = ["connection-manager"] } +redis = { version = "0.25.2", features = ["connection-manager"] } tracing-subscriber = "0.3.18" [lints] diff --git a/lib/blowocking/Cargo.toml b/lib/blowocking/Cargo.toml index 8ee183a4e..49d4b3620 100644 --- a/lib/blowocking/Cargo.toml +++ b/lib/blowocking/Cargo.toml @@ -8,7 +8,7 @@ license = "MIT OR Apache-2.0" [dependencies] once_cell = "1.19.0" rayon = "1.9.0" -thiserror = "1.0.57" +thiserror = "1.0.58" tokio = { version = "1.36.0", features = ["sync"] } tracing = "0.1.40" diff --git a/lib/cursiv/Cargo.toml b/lib/cursiv/Cargo.toml index 9066047c3..5a044451b 100644 --- a/lib/cursiv/Cargo.toml +++ b/lib/cursiv/Cargo.toml @@ -7,7 +7,7 @@ license = "MIT OR Apache-2.0" [dependencies] aliri_braid = "0.4.0" -blake3 = "1.5.0" +blake3 = "1.5.1" cookie = { version = "0.18.0", features = ["percent-encode"] } hex-simd = "0.8.0" http = "1.1.0" diff --git a/lib/http-signatures/Cargo.toml b/lib/http-signatures/Cargo.toml index eef5b379a..e86ab4542 100644 --- a/lib/http-signatures/Cargo.toml +++ b/lib/http-signatures/Cargo.toml @@ -31,7 +31,7 @@ miette = "7.2.0" pkcs8 = { version = "0.10.2", features = ["pem", "std"] } ring = { version = "0.17.8", features = ["std"] } scoped-futures = { version = "0.1.3", default-features = false } -thiserror = "1.0.57" +thiserror = "1.0.58" tick-tock-mock = { path = "../tick-tock-mock" } tracing = { version = "0.1.40", default-features = false, optional = true } diff --git a/lib/mrf-manifest/Cargo.toml b/lib/mrf-manifest/Cargo.toml index ab1ba0fde..8b1c9e343 100644 --- a/lib/mrf-manifest/Cargo.toml +++ b/lib/mrf-manifest/Cargo.toml @@ -14,7 +14,7 @@ schemars = { version = "0.8.16", features = ["impl_json_schema", "semver"] } semver = { version = "1.0.22", features = ["serde"] } serde = { version = "1.0.197", features = ["derive"] } serde_json = { version = "1.0.114", optional = true } -thiserror = { version = "1.0.57", optional = true } +thiserror = { version = "1.0.58", optional = true } wasm-encoder = { version = "0.201.0", optional = true } wasmparser = { version = "0.201.0", optional = true } diff --git a/lib/mrf-tool/Cargo.toml b/lib/mrf-tool/Cargo.toml index 55d9c0f3c..e95bc8bbb 100644 --- a/lib/mrf-tool/Cargo.toml +++ b/lib/mrf-tool/Cargo.toml @@ -7,7 +7,7 @@ version.workspace = true license = "MIT OR Apache-2.0" [dependencies] -clap = { version = "4.5.2", features = ["derive", "wrap_help"] } +clap = { version = "4.5.3", features = ["derive", "wrap_help"] } miette = { version = "7.2.0", features = ["fancy"] } mrf-manifest = { path = "../mrf-manifest", features = [ "encode", diff --git a/lib/speedy-uuid/Cargo.toml b/lib/speedy-uuid/Cargo.toml index f3786c82b..551ffab29 100644 --- a/lib/speedy-uuid/Cargo.toml +++ b/lib/speedy-uuid/Cargo.toml @@ -6,14 +6,14 @@ version.workspace = true license = "MIT OR Apache-2.0" [dependencies] -async-graphql = { version = "7.0.2", default-features = false, optional = true } -diesel = { version = "2.1.4", features = [ +async-graphql = { version = "7.0.3", default-features = false, optional = true } +diesel = { version = "2.1.5", features = [ "postgres_backend", "uuid", ], optional = true } -redis = { version = "0.24.0", default-features = false, optional = true } +redis = { version = "0.25.2", default-features = false, optional = true } serde = { version = "1.0.197", optional = true } -thiserror = "1.0.57" +thiserror = "1.0.58" uuid = { version = "1.7.0", features = ["fast-rng", "v7"] } uuid-simd = { version = "0.8.0", features = ["uuid"] } diff --git a/lib/tower-http-digest/Cargo.toml b/lib/tower-http-digest/Cargo.toml index a828b7f2d..f2b671449 100644 --- a/lib/tower-http-digest/Cargo.toml +++ b/lib/tower-http-digest/Cargo.toml @@ -24,7 +24,7 @@ bytes = "1.5.0" futures = { version = "0.3.30", default-features = false, features = [ "executor", ] } -http-body-util = "0.1.0" +http-body-util = "0.1.1" tower = { version = "0.4.13", default-features = false, features = ["util"] } [lints] diff --git a/xtask/Cargo.toml b/xtask/Cargo.toml index d4e344025..eda419676 100644 --- a/xtask/Cargo.toml +++ b/xtask/Cargo.toml @@ -6,7 +6,7 @@ license.workspace = true publish = false [dependencies] -anyhow = "1.0.80" +anyhow = "1.0.81" argh = "0.1.12" kitsune-scss-compiler = { path = "../crates/kitsune-scss-compiler" } tracing = { version = "0.1.40", default-features = false }