diff --git a/.github/workflows/build-images.yml b/.github/workflows/build-images.yml index e13a748..b5543e8 100644 --- a/.github/workflows/build-images.yml +++ b/.github/workflows/build-images.yml @@ -52,49 +52,15 @@ jobs: platforms: linux/amd64 tags: | ${{ steps.image_tag.outputs.value }} - cache-from: type=registry,ref=${{ secrets.DO_REGISTRY }}/${{ vars.API_IMAGE }}:buildcache - cache-to: type=registry,ref=${{ secrets.DO_REGISTRY }}/${{ vars.API_IMAGE }}:buildcache,mode=max + cache-from: | + type=registry,ref=${{ secrets.DO_REGISTRY }}/${{ vars.API_IMAGE }}:buildcache + type=registry,ref=${{ secrets.DO_REGISTRY }}/${{ vars.API_IMAGE }}:latest + cache-to: | + type=registry,ref=${{ secrets.DO_REGISTRY }}/${{ vars.API_IMAGE }}:buildcache,mode=max - name: Image digest run: echo "API image digest $(doctl registry repository digest-list ${{ vars.API_IMAGE }} --format Tag,Digest --no-header | grep ${{ needs.setup.outputs.version }})" - build-queue: - needs: setup - runs-on: ubuntu-latest - steps: - - name: Checkout code - uses: actions/checkout@v4 - - - name: Set image tag - id: image_tag - run: echo "value=${{ secrets.DO_REGISTRY }}/${{ vars.QUEUE_IMAGE }}:${{ needs.setup.outputs.version }}" >> $GITHUB_OUTPUT - - - name: Install doctl - uses: digitalocean/action-doctl@v2 - with: - token: ${{ secrets.DO_REGISTRY_KEY }} - - - name: Log in to DO Container Registry - run: doctl registry login --expiry-seconds 600 - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 - - - name: Build and push Queue image - uses: docker/build-push-action@v5 - with: - context: . - file: config/queue.Dockerfile - push: true - platforms: linux/amd64 - tags: | - ${{ steps.image_tag.outputs.value }} - cache-from: type=registry,ref=${{ secrets.DO_REGISTRY }}/${{ vars.QUEUE_IMAGE }}:buildcache - cache-to: type=registry,ref=${{ secrets.DO_REGISTRY }}/${{ vars.QUEUE_IMAGE }}:buildcache,mode=max - - - name: Image digest - run: echo "Queue image digest $(doctl registry repository digest-list ${{ vars.QUEUE_IMAGE }} --format Tag,Digest --no-header | grep ${{ needs.setup.outputs.version }})" - build-ui: needs: setup runs-on: ubuntu-latest diff --git a/.github/workflows/build-queue.yml b/.github/workflows/build-queue.yml deleted file mode 100644 index 6a691fa..0000000 --- a/.github/workflows/build-queue.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: build queue - -on: - push: - branches: [main] - pull_request: - branches: [main] - -jobs: - build: - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v4 - - run: rustup toolchain install stable --profile minimal - - uses: Swatinem/rust-cache@v2 - - uses: extractions/setup-just@v2 - - name: build - run: just build-queue diff --git a/.gitignore b/.gitignore index a48de82..0a41932 100644 --- a/.gitignore +++ b/.gitignore @@ -5,5 +5,4 @@ target/ !.env.example uploads/ /videos -storage/ .bin/ diff --git a/Cargo.lock b/Cargo.lock index e1decaf..3306138 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -28,18 +28,6 @@ dependencies = [ "cpufeatures", ] -[[package]] -name = "ahash" -version = "0.8.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" -dependencies = [ - "cfg-if", - "once_cell", - "version_check", - "zerocopy", -] - [[package]] name = "aho-corasick" version = "1.1.3" @@ -51,9 +39,9 @@ dependencies = [ [[package]] name = "allocator-api2" -version = "0.2.18" +version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f" +checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" [[package]] name = "android-tzdata" @@ -126,41 +114,6 @@ version = "1.0.95" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34ac096ce696dc2fcabef30516bb13c0a68a11d30131d3df6f04711467681b04" -[[package]] -name = "api" -version = "0.1.0" -dependencies = [ - "anyhow", - "aws-config", - "aws-sdk-s3", - "aws-types", - "axum 0.7.9", - "axum-extra", - "bytes", - "chrono", - "common", - "futures", - "hex", - "hmac", - "jsonwebtoken", - "lazy_static", - "nanoid", - "queue", - "reqwest", - "serde", - "serde_json", - "sha2", - "sqlx", - "tempfile", - "tokio", - "tokio-util", - "tower-http 0.6.1", - "tracing", - "tracing-subscriber", - "urlencoding", - "uuid", -] - [[package]] name = "argon2" version = "0.5.3" @@ -175,9 +128,9 @@ dependencies = [ [[package]] name = "async-trait" -version = "0.1.83" +version = "0.1.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" +checksum = "644dd749086bf3771a2fbc5f256fdb982d53f011c7d5d560304eafeecebce79d" dependencies = [ "proc-macro2", "quote", @@ -207,9 +160,9 @@ checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" [[package]] name = "aws-config" -version = "1.5.11" +version = "1.5.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5d1c2c88936a73c699225d0bc00684a534166b0cebc2659c3cdf08de8edc64c" +checksum = "50236e4d60fe8458de90a71c0922c761e41755adf091b1b03de1cef537179915" dependencies = [ "aws-credential-types", "aws-runtime", @@ -227,7 +180,7 @@ dependencies = [ "fastrand", "hex", "http 0.2.12", - "ring 0.17.8", + "ring 0.17.9", "time", "tokio", "tracing", @@ -249,9 +202,9 @@ dependencies = [ [[package]] name = "aws-runtime" -version = "1.5.4" +version = "1.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bee7643696e7fdd74c10f9eb42848a87fe469d35eae9c3323f80aa98f350baac" +checksum = "76dd04d39cc12844c0994f2c9c5a6f5184c22e9188ec1ff723de41910a21dcad" dependencies = [ "aws-credential-types", "aws-sigv4", @@ -275,9 +228,9 @@ dependencies = [ [[package]] name = "aws-sdk-s3" -version = "1.71.0" +version = "1.76.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "705cb534fb7b620f540d2fac268d378918dc67d25b173f67edcab3851fe19392" +checksum = "66e83401ad7287ad15244d557e35502c2a94105ca5b41d656c391f1a4fc04ca2" dependencies = [ "aws-credential-types", "aws-runtime", @@ -309,9 +262,9 @@ dependencies = [ [[package]] name = "aws-sdk-sso" -version = "1.51.0" +version = "1.59.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74995133da38f109a0eb8e8c886f9e80c713b6e9f2e6e5a6a1ba4450ce2ffc46" +checksum = "00a35fc7e74f5be45839eb753568535c074a592185dd0a2d406685018d581c43" dependencies = [ "aws-credential-types", "aws-runtime", @@ -331,9 +284,9 @@ dependencies = [ [[package]] name = "aws-sdk-ssooidc" -version = "1.52.0" +version = "1.60.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7062a779685cbf3b2401eb36151e2c6589fd5f3569b8a6bc2d199e5aaa1d059" +checksum = "f8fa655b4f313124ce272cbc38c5fef13793c832279cec750103e5e6b71a54b8" dependencies = [ "aws-credential-types", "aws-runtime", @@ -353,9 +306,9 @@ dependencies = [ [[package]] name = "aws-sdk-sts" -version = "1.52.0" +version = "1.60.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "299dae7b1dc0ee50434453fa5a229dc4b22bd3ee50409ff16becf1f7346e0193" +checksum = "dc1cfe5e16b90421ea031f4c6348b534ef442e76f6bf4a1b2b592c12cc2c6af9" dependencies = [ "aws-credential-types", "aws-runtime", @@ -376,9 +329,9 @@ dependencies = [ [[package]] name = "aws-sigv4" -version = "1.2.7" +version = "1.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "690118821e46967b3c4501d67d7d52dd75106a9c54cf36cefa1985cedbe94e05" +checksum = "9bfe75fad52793ce6dec0dc3d4b1f388f038b5eb866c8d4d7f3a8e21b5ea5051" dependencies = [ "aws-credential-types", "aws-smithy-eventstream", @@ -391,11 +344,11 @@ dependencies = [ "hex", "hmac", "http 0.2.12", - "http 1.1.0", + "http 1.2.0", "once_cell", "p256", "percent-encoding", - "ring 0.17.8", + "ring 0.17.9", "sha2", "subtle", "time", @@ -489,9 +442,9 @@ dependencies = [ [[package]] name = "aws-smithy-runtime" -version = "1.7.7" +version = "1.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "865f7050bbc7107a6c98a397a9fcd9413690c27fa718446967cf03b2d3ac517e" +checksum = "d526a12d9ed61fadefda24abe2e682892ba288c2018bcb38b1b4c111d13f6d92" dependencies = [ "aws-smithy-async", "aws-smithy-http", @@ -504,7 +457,7 @@ dependencies = [ "http-body 0.4.6", "http-body 1.0.1", "httparse", - "hyper 0.14.31", + "hyper 0.14.32", "hyper-rustls 0.24.2", "once_cell", "pin-project-lite", @@ -524,7 +477,7 @@ dependencies = [ "aws-smithy-types", "bytes", "http 0.2.12", - "http 1.1.0", + "http 1.2.0", "pin-project-lite", "tokio", "tracing", @@ -533,16 +486,16 @@ dependencies = [ [[package]] name = "aws-smithy-types" -version = "1.2.12" +version = "1.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a28f6feb647fb5e0d5b50f0472c19a7db9462b74e2fec01bb0b44eedcc834e97" +checksum = "c7b8a53819e42f10d0821f56da995e1470b199686a1809168db6ca485665f042" dependencies = [ "base64-simd", "bytes", "bytes-utils", "futures-core", "http 0.2.12", - "http 1.1.0", + "http 1.2.0", "http-body 0.4.6", "http-body 1.0.1", "http-body-util", @@ -568,9 +521,9 @@ dependencies = [ [[package]] name = "aws-types" -version = "1.3.4" +version = "1.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0df5a18c4f951c645300d365fec53a61418bcf4650f604f85fe2a665bfaa0c2" +checksum = "dfbd0a668309ec1f66c0f6bda4840dd6d4796ae26d699ebc266d7cc95c6d040f" dependencies = [ "aws-credential-types", "aws-smithy-async", @@ -593,7 +546,7 @@ dependencies = [ "futures-util", "http 0.2.12", "http-body 0.4.6", - "hyper 0.14.31", + "hyper 0.14.32", "itoa", "matchit 0.5.0", "memchr", @@ -621,10 +574,10 @@ dependencies = [ "base64 0.22.1", "bytes", "futures-util", - "http 1.1.0", + "http 1.2.0", "http-body 1.0.1", "http-body-util", - "hyper 1.5.0", + "hyper 1.6.0", "hyper-util", "itoa", "matchit 0.7.3", @@ -639,10 +592,10 @@ dependencies = [ "serde_path_to_error", "serde_urlencoded", "sha1", - "sync_wrapper 1.0.1", + "sync_wrapper 1.0.2", "tokio", "tokio-tungstenite", - "tower 0.5.1", + "tower 0.5.2", "tower-layer", "tower-service", "tracing", @@ -673,13 +626,13 @@ dependencies = [ "async-trait", "bytes", "futures-util", - "http 1.1.0", + "http 1.2.0", "http-body 1.0.1", "http-body-util", "mime", "pin-project-lite", "rustversion", - "sync_wrapper 1.0.1", + "sync_wrapper 1.0.2", "tower-layer", "tower-service", "tracing", @@ -778,9 +731,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.6.0" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" +checksum = "8f68f53c83ab957f72c32642f3868eec03eb974d1fb82e453128456482613d36" dependencies = [ "serde", ] @@ -805,9 +758,9 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.16.0" +version = "3.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" +checksum = "1628fb46dfa0b37568d12e5edd512553eccf6a22a78e8bde00bb4aed84d5bdbf" [[package]] name = "byteorder" @@ -843,9 +796,9 @@ dependencies = [ [[package]] name = "bzip2-sys" -version = "0.1.11+1.0.8" +version = "0.1.12+1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "736a955f3fa7875102d57c82b8cac37ec45224a07fd32d58f9f7a186b6cd4cdc" +checksum = "72ebc2f1a417f01e1da30ef264ee86ae31d2dcd2d603ea283d3c244a883ca2a9" dependencies = [ "cc", "libc", @@ -873,9 +826,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.1.31" +version = "1.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2e7962b54006dcfcc61cb72735f4d89bb97061dd6a7ed882ec6b8ee53714c6f" +checksum = "0c3d1b2e905a3a7b00a6141adb0e4c0bb941d11caf55349d863942a1cc44e3c9" dependencies = [ "jobserver", "libc", @@ -890,9 +843,9 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "chrono" -version = "0.4.38" +version = "0.4.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" +checksum = "7e36cc9d416881d2e24f9a963be5fb1cd90966419ac844274161d10488b3e825" dependencies = [ "android-tzdata", "iana-time-zone", @@ -915,18 +868,18 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.27" +version = "4.5.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "769b0145982b4b48713e01ec42d61614425f27b7058bda7180a3a41f30104796" +checksum = "8acebd8ad879283633b343856142139f2da2317c96b05b4dd6181c61e2480184" dependencies = [ "clap_builder", ] [[package]] name = "clap_builder" -version = "4.5.27" +version = "4.5.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b26884eb4b57140e4d2d93652abfa49498b938b3c9179f9fc487b0acc3edad7" +checksum = "f6ba32cbda51c7e1dfd49acc1457ba1a7dec5b64fe360e828acb13ca8dc9c2f9" dependencies = [ "anstream", "anstyle", @@ -946,24 +899,6 @@ version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990" -[[package]] -name = "common" -version = "0.1.0" -dependencies = [ - "argon2", - "aws-config", - "aws-sdk-s3", - "aws-types", - "chrono", - "nanoid", - "serde", - "sqlx", - "tracing", - "tracing-subscriber", - "uuid", - "walkdir", -] - [[package]] name = "concurrent-queue" version = "2.5.0" @@ -1003,9 +938,9 @@ checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" [[package]] name = "cpufeatures" -version = "0.2.14" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "608697df725056feaccfa42cffdaeeec3fccc4ffc38358ecd19b243e716a78e0" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" dependencies = [ "libc", ] @@ -1055,18 +990,18 @@ dependencies = [ [[package]] name = "crossbeam-queue" -version = "0.3.11" +version = "0.3.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df0346b5d5e76ac2fe4e327c5fd1118d6be7c51dfb18f9b7922923f287471e35" +checksum = "0f58bbc28f91df819d0aa2a2c00cd19754769c2fad90579b3592b1c9ba7a3115" dependencies = [ "crossbeam-utils", ] [[package]] name = "crossbeam-utils" -version = "0.8.20" +version = "0.8.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" +checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" [[package]] name = "crypto-bigint" @@ -1075,7 +1010,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ef2b4b23cddf68b89b8f8069890e8c270d54e2d5fe1b143820234805e4cb17ef" dependencies = [ "generic-array", - "rand_core", + "rand_core 0.6.4", "subtle", "zeroize", ] @@ -1086,7 +1021,7 @@ version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" dependencies = [ - "rand_core", + "rand_core 0.6.4", "subtle", ] @@ -1102,9 +1037,9 @@ dependencies = [ [[package]] name = "data-encoding" -version = "2.6.0" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8566979429cf69b49a5c740c60791108e86440e8be149bbea4fe54d2c32d6e2" +checksum = "575f75dfd25738df5b91b8e43e14d44bda14637a58fae779fd2b064f8bf3e010" [[package]] name = "der" @@ -1148,6 +1083,17 @@ dependencies = [ "subtle", ] +[[package]] +name = "displaydoc" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "dotenvy" version = "0.15.7" @@ -1189,7 +1135,7 @@ dependencies = [ "generic-array", "group", "pkcs8 0.9.0", - "rand_core", + "rand_core 0.6.4", "sec1", "subtle", "zeroize", @@ -1206,18 +1152,18 @@ dependencies = [ [[package]] name = "equivalent" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "errno" -version = "0.3.9" +version = "0.3.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" +checksum = "33d852cb9b869c2a9b3df2f71a3074817f01e1844f839a144f5fcef059a4eb5d" dependencies = [ "libc", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -1233,20 +1179,59 @@ dependencies = [ [[package]] name = "event-listener" -version = "5.3.1" +version = "5.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6032be9bd27023a771701cc49f9f053c751055f71efb2e0ae5c15809093675ba" +checksum = "3492acde4c3fc54c845eaab3eed8bd00c7a7d881f78bfc801e43a93dec1331ae" dependencies = [ "concurrent-queue", "parking", "pin-project-lite", ] +[[package]] +name = "farmhand" +version = "0.1.0" +dependencies = [ + "anyhow", + "argon2", + "async-trait", + "aws-config", + "aws-sdk-s3", + "aws-types", + "axum 0.7.9", + "axum-extra", + "bytes", + "chrono", + "futures", + "hex", + "hmac", + "jsonwebtoken", + "lazy_static", + "nanoid", + "reqwest", + "serde", + "serde_json", + "sha2", + "sqlx", + "tempfile", + "thiserror 1.0.69", + "tokio", + "tokio-util", + "tower-http 0.6.2", + "tracing", + "tracing-subscriber", + "ulid", + "urlencoding", + "uuid", + "walkdir", + "zip", +] + [[package]] name = "fastrand" -version = "2.1.1" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6" +checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" [[package]] name = "ff" @@ -1254,7 +1239,7 @@ version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d013fc25338cc558c5c2cfbad646908fb23591e2404481826742b651c9af7160" dependencies = [ - "rand_core", + "rand_core 0.6.4", "subtle", ] @@ -1306,19 +1291,6 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" -[[package]] -name = "forge" -version = "0.1.0" -dependencies = [ - "anyhow", - "axum 0.7.9", - "common", - "queue", - "tokio", - "tracing", - "tracing-subscriber", -] - [[package]] name = "form_urlencoded" version = "1.2.1" @@ -1445,10 +1417,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" dependencies = [ "cfg-if", - "js-sys", "libc", - "wasi", - "wasm-bindgen", + "wasi 0.11.0+wasi-snapshot-preview1", +] + +[[package]] +name = "getrandom" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43a49c392881ce6d5c3b8cb70f98717b7c07aabbdff06687b9030dbfbe2725f8" +dependencies = [ + "cfg-if", + "libc", + "wasi 0.13.3+wasi-0.2.2", + "windows-targets 0.52.6", ] [[package]] @@ -1464,7 +1446,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5dfbfb3a6cfbd390d5c9564ab283a0349b9b9fcd46a706c1eb10e0db70bfbac7" dependencies = [ "ff", - "rand_core", + "rand_core 0.6.4", "subtle", ] @@ -1498,7 +1480,7 @@ dependencies = [ "fnv", "futures-core", "futures-sink", - "http 1.1.0", + "http 1.2.0", "indexmap", "slab", "tokio", @@ -1508,19 +1490,9 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.14.5" +version = "0.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" -dependencies = [ - "ahash", - "allocator-api2", -] - -[[package]] -name = "hashbrown" -version = "0.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e087f84d4f86bf4b218b927129862374b72199ae7d8657835f1e89000eea4fb" +checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" dependencies = [ "allocator-api2", "equivalent", @@ -1529,11 +1501,11 @@ dependencies = [ [[package]] name = "hashlink" -version = "0.9.1" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ba4ff7128dee98c7dc9794b6a411377e1404dba1c97deb8d1a55297bd25d8af" +checksum = "7382cf6263419f2d8df38c55d7da83da5c18aef87fc7a7fc1fb1e344edfe14c1" dependencies = [ - "hashbrown 0.14.5", + "hashbrown", ] [[package]] @@ -1548,12 +1520,6 @@ version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" -[[package]] -name = "hermit-abi" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" - [[package]] name = "hex" version = "0.4.3" @@ -1580,11 +1546,11 @@ dependencies = [ [[package]] name = "home" -version = "0.5.9" +version = "0.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5" +checksum = "589533453244b0995c858700322199b2becb13b627df2851f64a2775d024abcf" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -1600,9 +1566,9 @@ dependencies = [ [[package]] name = "http" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21b9ddb458710bc376481b842f5da65cdf31522de232c1ca8146abce2a358258" +checksum = "f16ca2af56261c99fba8bac40a10251ce8188205a4c448fbb745a2e4daa76fea" dependencies = [ "bytes", "fnv", @@ -1627,7 +1593,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" dependencies = [ "bytes", - "http 1.1.0", + "http 1.2.0", ] [[package]] @@ -1638,7 +1604,7 @@ checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f" dependencies = [ "bytes", "futures-util", - "http 1.1.0", + "http 1.2.0", "http-body 1.0.1", "pin-project-lite", ] @@ -1651,15 +1617,15 @@ checksum = "add0ab9360ddbd88cfeb3bd9574a1d85cfdfa14db10b3e21d3700dbc4328758f" [[package]] name = "http-range-header" -version = "0.4.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08a397c49fec283e3d6211adbe480be95aae5f304cfb923e9970e08956d5168a" +checksum = "9171a2ea8a68358193d15dd5d70c1c10a2afc3e7e4c5bc92bc9f025cebd7359c" [[package]] name = "httparse" -version = "1.9.5" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d71d3574edd2771538b901e6549113b4006ece66150fb69c0fb6d9a2adae946" +checksum = "f2d708df4e7140240a16cd6ab0ab65c972d7433ab77819ea693fde9c43811e2a" [[package]] name = "httpdate" @@ -1669,9 +1635,9 @@ checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" [[package]] name = "hyper" -version = "0.14.31" +version = "0.14.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c08302e8fa335b151b788c775ff56e7a03ae64ff85c548ee820fecb70356e85" +checksum = "41dfc780fdec9373c01bae43289ea34c972e40ee3c9f6b3c8801a35f35586ce7" dependencies = [ "bytes", "futures-channel", @@ -1693,15 +1659,15 @@ dependencies = [ [[package]] name = "hyper" -version = "1.5.0" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbbff0a806a4728c99295b254c8838933b5b082d75e3cb70c8dab21fdfbcfa9a" +checksum = "cc2b571658e38e0c01b1fdca3bbbe93c00d3d71693ff2770043f8c29bc7d6f80" dependencies = [ "bytes", "futures-channel", "futures-util", "h2 0.4.7", - "http 1.1.0", + "http 1.2.0", "http-body 1.0.1", "httparse", "httpdate", @@ -1720,7 +1686,7 @@ checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" dependencies = [ "futures-util", "http 0.2.12", - "hyper 0.14.31", + "hyper 0.14.32", "log", "rustls 0.21.12", "rustls-native-certs", @@ -1730,18 +1696,18 @@ dependencies = [ [[package]] name = "hyper-rustls" -version = "0.27.3" +version = "0.27.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08afdbb5c31130e3034af566421053ab03787c640246a446327f550d11bcb333" +checksum = "2d191583f3da1305256f22463b9bb0471acad48a4e534a5218b9963e9c1f59b2" dependencies = [ "futures-util", - "http 1.1.0", - "hyper 1.5.0", + "http 1.2.0", + "hyper 1.6.0", "hyper-util", - "rustls 0.23.19", + "rustls 0.23.23", "rustls-pki-types", "tokio", - "tokio-rustls 0.26.0", + "tokio-rustls 0.26.1", "tower-service", ] @@ -1753,7 +1719,7 @@ checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" dependencies = [ "bytes", "http-body-util", - "hyper 1.5.0", + "hyper 1.6.0", "hyper-util", "native-tls", "tokio", @@ -1770,9 +1736,9 @@ dependencies = [ "bytes", "futures-channel", "futures-util", - "http 1.1.0", + "http 1.2.0", "http-body 1.0.1", - "hyper 1.5.0", + "hyper 1.6.0", "pin-project-lite", "socket2", "tokio", @@ -1803,24 +1769,153 @@ dependencies = [ "cc", ] +[[package]] +name = "icu_collections" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locid" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_locid_transform" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01d11ac35de8e40fdeda00d9e1e9d92525f3f9d887cdd7aa81d727596788b54e" +dependencies = [ + "displaydoc", + "icu_locid", + "icu_locid_transform_data", + "icu_provider", + "tinystr", + "zerovec", +] + +[[package]] +name = "icu_locid_transform_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdc8ff3388f852bede6b579ad4e978ab004f139284d7b28715f773507b946f6e" + +[[package]] +name = "icu_normalizer" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "utf16_iter", + "utf8_iter", + "write16", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8cafbf7aa791e9b22bec55a167906f9e1215fd475cd22adfcf660e03e989516" + +[[package]] +name = "icu_properties" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93d6020766cfc6302c15dbbc9c8778c37e62c14427cb7f6e601d849e092aeef5" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_locid_transform", + "icu_properties_data", + "icu_provider", + "tinystr", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67a8effbc3dd3e4ba1afa8ad918d5684b8868b3b26500753effea8d2eed19569" + +[[package]] +name = "icu_provider" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9" +dependencies = [ + "displaydoc", + "icu_locid", + "icu_provider_macros", + "stable_deref_trait", + "tinystr", + "writeable", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_provider_macros" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "idna" -version = "0.5.0" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" +checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" dependencies = [ - "unicode-bidi", - "unicode-normalization", + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "daca1df1c957320b2cf139ac61e7bd64fed304c5040df000a745aa1de3b4ef71" +dependencies = [ + "icu_normalizer", + "icu_properties", ] [[package]] name = "indexmap" -version = "2.6.0" +version = "2.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da" +checksum = "8c9c992b02b5b4c94ea26e32fe5bccb7aa7d9f390ab5c1221ff895bc7ea8b652" dependencies = [ "equivalent", - "hashbrown 0.15.0", + "hashbrown", ] [[package]] @@ -1834,9 +1929,9 @@ dependencies = [ [[package]] name = "ipnet" -version = "2.10.1" +version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddc24109865250148c2e0f3d25d4f0f479571723792d3802153c60922a4fb708" +checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" [[package]] name = "is_terminal_polyfill" @@ -1846,9 +1941,9 @@ checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" [[package]] name = "itoa" -version = "1.0.11" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" +checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674" [[package]] name = "jobserver" @@ -1861,10 +1956,11 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.72" +version = "0.3.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a88f1bda2bd75b0452a14784937d796722fdebfe50df998aeb3f0b7603019a9" +checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" dependencies = [ + "once_cell", "wasm-bindgen", ] @@ -1893,9 +1989,9 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.161" +version = "0.2.169" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e9489c2807c139ffd9c1794f4af0ebe86a828db53ecdc7fea2111d0fed085d1" +checksum = "b5aba8db14291edd000dfcc4d620c7ebfb122c613afb886ca8803fa4e128a20a" [[package]] name = "libm" @@ -1909,16 +2005,21 @@ version = "0.30.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2e99fb7a497b1e3339bc746195567ed8d3e24945ecd636e3619d20b9de9e9149" dependencies = [ - "cc", "pkg-config", "vcpkg", ] [[package]] name = "linux-raw-sys" -version = "0.4.14" +version = "0.4.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" +checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" + +[[package]] +name = "litemap" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ee93343901ab17bd981295f2cf0026d4ad018c7c31ba84549a4ddbb47a45104" [[package]] name = "lock_api" @@ -1932,9 +2033,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.22" +version = "0.4.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" +checksum = "04cbf5b083de1c7e0222a7a51dbfdba1cbe1c6ab0b15e29fff3f6c077fd9cd9f" [[package]] name = "lru" @@ -1942,7 +2043,7 @@ version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "234cf4f4a04dc1f57e24b96cc0cd600cf2af460d4161ac5ecdd0af8e1f3b2a38" dependencies = [ - "hashbrown 0.15.0", + "hashbrown", ] [[package]] @@ -1998,30 +2099,23 @@ dependencies = [ "unicase", ] -[[package]] -name = "minimal-lexical" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" - [[package]] name = "miniz_oxide" -version = "0.8.0" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1" +checksum = "b3b1c9bd4fe1f0f8b387f6eb9eb3b4a1aa26185e5750efb9140301703f62cd1b" dependencies = [ "adler2", ] [[package]] name = "mio" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80e04d1dcff3aae0704555fe5fee3bcfaf3d1fdf8a7e521d5b9d2b42acb52cec" +checksum = "2886843bf800fba2e3377cff24abf6379b4c4d5c6681eaf9ea5b0d15090450bd" dependencies = [ - "hermit-abi", "libc", - "wasi", + "wasi 0.11.0+wasi-snapshot-preview1", "windows-sys 0.52.0", ] @@ -2034,7 +2128,7 @@ dependencies = [ "bytes", "encoding_rs", "futures-util", - "http 1.1.0", + "http 1.2.0", "httparse", "memchr", "mime", @@ -2048,14 +2142,14 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3ffa00dec017b5b1a8b7cf5e2c008bfda1aa7e0697ac1508b491fdf2622fb4d8" dependencies = [ - "rand", + "rand 0.8.5", ] [[package]] name = "native-tls" -version = "0.2.12" +version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8614eb2c83d59d1c8cc974dd3f920198647674a0a035e1af1fa58707e317466" +checksum = "0dab59f8e050d5df8e4dd87d9206fb6f65a483e20ac9fda365ade4fab353196c" dependencies = [ "libc", "log", @@ -2068,16 +2162,6 @@ dependencies = [ "tempfile", ] -[[package]] -name = "nom" -version = "7.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" -dependencies = [ - "memchr", - "minimal-lexical", -] - [[package]] name = "nu-ansi-term" version = "0.46.0" @@ -2110,7 +2194,7 @@ dependencies = [ "num-integer", "num-iter", "num-traits", - "rand", + "rand 0.8.5", "smallvec", "zeroize", ] @@ -2153,18 +2237,18 @@ dependencies = [ [[package]] name = "object" -version = "0.36.5" +version = "0.36.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aedf0a2d09c573ed1d8d85b30c119153926a2b36dce0ab28322c09a117a4683e" +checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" dependencies = [ "memchr", ] [[package]] name = "once_cell" -version = "1.20.2" +version = "1.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" +checksum = "945462a4b81e43c4e3ba96bd7b49d834c6f61198356aa858733bc4acf3cbe62e" [[package]] name = "openssl" @@ -2172,7 +2256,7 @@ version = "0.10.70" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "61cfb4e166a8bb8c9b55c500bc2308550148ece889be90f609377e58140f42c6" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "cfg-if", "foreign-types", "libc", @@ -2194,9 +2278,9 @@ dependencies = [ [[package]] name = "openssl-probe" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" +checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" [[package]] name = "openssl-sys" @@ -2212,9 +2296,9 @@ dependencies = [ [[package]] name = "outref" -version = "0.5.1" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4030760ffd992bef45b0ae3f10ce1aba99e33464c90d14dd7c039884963ddc7a" +checksum = "1a80800c0488c3a21695ea981a54918fbb37abf04f4d0720c453632255e2ff0e" [[package]] name = "overload" @@ -2269,7 +2353,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7676374caaee8a325c9e7a2ae557f216c5563a171d6997b0ef8a65af35147700" dependencies = [ "base64ct", - "rand_core", + "rand_core 0.6.4", "subtle", ] @@ -2280,16 +2364,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "346f04948ba92c43e8469c1ee6736c7563d71012b17d40745260fe106aac2166" dependencies = [ "base64ct", - "rand_core", + "rand_core 0.6.4", "subtle", ] -[[package]] -name = "paste" -version = "1.0.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" - [[package]] name = "pbkdf2" version = "0.11.0" @@ -2328,18 +2406,18 @@ checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "pin-project" -version = "1.1.7" +version = "1.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be57f64e946e500c8ee36ef6331845d40a93055567ec57e8fae13efd33759b95" +checksum = "dfe2e71e1471fe07709406bf725f710b02927c9c54b2b5b2ec0e8087d97c327d" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.7" +version = "1.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c0f5fad0874fc7abcd4d750e76917eaebbecaa2c20bde22e1dbeeba8beb758c" +checksum = "f6e859e6e5bd50440ab63c47e3ebabc90f26251f7c73c3d3e837b74a1cc3fa67" dependencies = [ "proc-macro2", "quote", @@ -2348,9 +2426,9 @@ dependencies = [ [[package]] name = "pin-project-lite" -version = "0.2.15" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "915a1e146535de9163f3987b8944ed8cf49a18bb0056bcebcdcece385cece4ff" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" [[package]] name = "pin-utils" @@ -2407,43 +2485,23 @@ version = "0.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" dependencies = [ - "zerocopy", + "zerocopy 0.7.35", ] [[package]] name = "proc-macro2" -version = "1.0.89" +version = "1.0.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f139b0662de085916d1fb67d2b4169d1addddda1919e696f3252b740b629986e" +checksum = "60946a68e5f9d28b0dc1c21bb8a97ee7d018a8b322fa57838ba31cc878e22d99" dependencies = [ "unicode-ident", ] -[[package]] -name = "queue" -version = "0.1.0" -dependencies = [ - "anyhow", - "async-trait", - "chrono", - "common", - "futures", - "serde", - "sqlx", - "thiserror", - "tokio", - "tracing", - "ulid", - "uuid", - "vod", - "zip", -] - [[package]] name = "quote" -version = "1.0.37" +version = "1.0.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" +checksum = "0e4dccaaaf89514f546c693ddc140f729f958c247918a13380cccc6078391acc" dependencies = [ "proc-macro2", ] @@ -2455,8 +2513,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" dependencies = [ "libc", - "rand_chacha", - "rand_core", + "rand_chacha 0.3.1", + "rand_core 0.6.4", +] + +[[package]] +name = "rand" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3779b94aeb87e8bd4e834cee3650289ee9e0d5677f976ecdb6d219e5f4f6cd94" +dependencies = [ + "rand_chacha 0.9.0", + "rand_core 0.9.0", + "zerocopy 0.8.18", ] [[package]] @@ -2466,7 +2535,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" dependencies = [ "ppv-lite86", - "rand_core", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_chacha" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" +dependencies = [ + "ppv-lite86", + "rand_core 0.9.0", ] [[package]] @@ -2475,16 +2554,26 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom", + "getrandom 0.2.15", +] + +[[package]] +name = "rand_core" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b08f3c9802962f7e1b25113931d94f43ed9725bebc59db9d0c3e9a23b67e15ff" +dependencies = [ + "getrandom 0.3.1", + "zerocopy 0.8.18", ] [[package]] name = "redox_syscall" -version = "0.5.7" +version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b6dfecf2c74bce2466cabf93f6664d6998a69eb21e39f4207930065b27b771f" +checksum = "03a862b389f93e68874fbf580b9de08dd02facb9a788ebadaf4a3fd33cf58834" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", ] [[package]] @@ -2495,7 +2584,7 @@ checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" dependencies = [ "aho-corasick", "memchr", - "regex-automata 0.4.8", + "regex-automata 0.4.9", "regex-syntax 0.8.5", ] @@ -2510,9 +2599,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.8" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "368758f23274712b504848e9d5a6f010445cc8b87a7cdb4d7cbee666c1288da3" +checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" dependencies = [ "aho-corasick", "memchr", @@ -2539,9 +2628,9 @@ checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" [[package]] name = "reqwest" -version = "0.12.9" +version = "0.12.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a77c62af46e79de0a562e1a9849205ffcb7fc1238876e9bd743357570e04046f" +checksum = "43e734407157c3c2034e0258f5e4473ddb361b1e85f95a66690d67264d7cd1da" dependencies = [ "base64 0.22.1", "bytes", @@ -2549,11 +2638,11 @@ dependencies = [ "futures-core", "futures-util", "h2 0.4.7", - "http 1.1.0", + "http 1.2.0", "http-body 1.0.1", "http-body-util", - "hyper 1.5.0", - "hyper-rustls 0.27.3", + "hyper 1.6.0", + "hyper-rustls 0.27.5", "hyper-tls", "hyper-util", "ipnet", @@ -2568,10 +2657,11 @@ dependencies = [ "serde", "serde_json", "serde_urlencoded", - "sync_wrapper 1.0.1", + "sync_wrapper 1.0.2", "system-configuration", "tokio", "tokio-native-tls", + "tower 0.5.2", "tower-service", "url", "wasm-bindgen", @@ -2608,24 +2698,23 @@ dependencies = [ [[package]] name = "ring" -version = "0.17.8" +version = "0.17.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" +checksum = "e75ec5e92c4d8aede845126adc388046234541629e76029599ed35a003c7ed24" dependencies = [ "cc", "cfg-if", - "getrandom", + "getrandom 0.2.15", "libc", - "spin 0.9.8", "untrusted 0.9.0", "windows-sys 0.52.0", ] [[package]] name = "rsa" -version = "0.9.6" +version = "0.9.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d0e5124fcb30e76a7e79bfee683a2746db83784b86289f6251b54b7950a0dfc" +checksum = "47c75d7c5c6b673e58bf54d8544a9f432e3a925b0e80f7cd3602ab5c50c55519" dependencies = [ "const-oid", "digest", @@ -2634,7 +2723,7 @@ dependencies = [ "num-traits", "pkcs1", "pkcs8 0.10.2", - "rand_core", + "rand_core 0.6.4", "signature 2.2.0", "spki 0.7.3", "subtle", @@ -2658,15 +2747,15 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.38" +version = "0.38.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa260229e6538e52293eeb577aabd09945a09d6d9cc0fc550ed7529056c2e32a" +checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "errno", "libc", "linux-raw-sys", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -2676,19 +2765,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f56a14d1f48b391359b22f731fd4bd7e43c97f3c50eee276f3aa09c94784d3e" dependencies = [ "log", - "ring 0.17.8", + "ring 0.17.9", "rustls-webpki 0.101.7", "sct", ] [[package]] name = "rustls" -version = "0.23.19" +version = "0.23.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "934b404430bb06b3fae2cba809eb45a1ab1aecd64491213d7c3301b88393f8d1" +checksum = "47796c98c480fce5406ef69d1c76378375492c3b0a0de587be0c1d9feb12f395" dependencies = [ "once_cell", - "ring 0.17.8", + "ring 0.17.9", "rustls-pki-types", "rustls-webpki 0.102.8", "subtle", @@ -2727,9 +2816,9 @@ dependencies = [ [[package]] name = "rustls-pki-types" -version = "1.10.0" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16f1201b3c9a7ee8039bcadc17b7e605e2945b27eee7631788c1bd2b0643674b" +checksum = "917ce264624a4b4db1c364dcc35bfca9ded014d0a958cd47ad3e960e988ea51c" [[package]] name = "rustls-webpki" @@ -2737,7 +2826,7 @@ version = "0.101.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" dependencies = [ - "ring 0.17.8", + "ring 0.17.9", "untrusted 0.9.0", ] @@ -2747,22 +2836,22 @@ version = "0.102.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "64ca1bc8749bd4cf37b5ce386cc146580777b4e8572c7b97baf22c83f444bee9" dependencies = [ - "ring 0.17.8", + "ring 0.17.9", "rustls-pki-types", "untrusted 0.9.0", ] [[package]] name = "rustversion" -version = "1.0.18" +version = "1.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e819f2bc632f285be6d7cd36e25940d45b2391dd6d9b939e79de557f7014248" +checksum = "f7c45b9784283f1b2e7fb61b42047c2fd678ef0960d4f6f1eba131594cc369d4" [[package]] name = "ryu" -version = "1.0.18" +version = "1.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" +checksum = "6ea1a2d0a644769cc99faa24c3ad26b379b786fe7c36fd3c546254801650e6dd" [[package]] name = "same-file" @@ -2794,7 +2883,7 @@ version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" dependencies = [ - "ring 0.17.8", + "ring 0.17.9", "untrusted 0.9.0", ] @@ -2818,7 +2907,7 @@ version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "core-foundation", "core-foundation-sys", "libc", @@ -2827,9 +2916,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.12.1" +version = "2.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa39c7303dc58b5543c94d22c1766b0d31f2ee58306363ea622b10bbc075eaa2" +checksum = "49db231d56a190491cb4aeda9527f1ad45345af50b0851622a7adb8c03b01c32" dependencies = [ "core-foundation-sys", "libc", @@ -2837,24 +2926,24 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.24" +version = "1.0.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3cb6eb87a131f756572d7fb904f6e7b68633f09cca868c5df1c4b8d1a694bbba" +checksum = "f79dfe2d285b0488816f30e700a7438c5a73d816b5b7d3ac72fbc48b0d185e03" [[package]] name = "serde" -version = "1.0.214" +version = "1.0.217" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f55c3193aca71c12ad7890f1785d2b73e1b9f63a0bbc353c08ef26fe03fc56b5" +checksum = "02fc4265df13d6fa1d00ecff087228cc0a2b5f3c0e87e258d8b94a156e984c70" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.214" +version = "1.0.217" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de523f781f095e28fa605cdce0f8307e451cc0fd14e2eb4cd2e98a355b147766" +checksum = "5a9bf7cf98d04a2b28aead066b7496853d4779c9cc183c440dbac457641e19a0" dependencies = [ "proc-macro2", "quote", @@ -2863,9 +2952,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.132" +version = "1.0.138" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d726bfaff4b320266d395898905d0eba0345aae23b54aee3a737e260fd46db03" +checksum = "d434192e7da787e94a6ea7e9670b26a036d0ca41e0b7efb2676dd32bae872949" dependencies = [ "itoa", "memchr", @@ -2957,7 +3046,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "74233d3b3b2f6d4b006dc19dee745e73e2a6bfb6f93607cd3b02bd5b00797d7c" dependencies = [ "digest", - "rand_core", + "rand_core 0.6.4", ] [[package]] @@ -2967,18 +3056,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" dependencies = [ "digest", - "rand_core", + "rand_core 0.6.4", ] [[package]] name = "simple_asn1" -version = "0.6.2" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adc4e5204eb1910f40f9cfa375f6f05b68c3abac4b6fd879c8ff5e7ae8a0a085" +checksum = "297f631f50729c8c99b84667867963997ec0b50f32b2a7dbcab828ef0541e8bb" dependencies = [ "num-bigint", "num-traits", - "thiserror", + "thiserror 2.0.11", "time", ] @@ -3002,9 +3091,9 @@ dependencies = [ [[package]] name = "socket2" -version = "0.5.7" +version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" +checksum = "c970269d99b64e60ec3bd6ad27270092a5394c4e309314b18ae3fe575695fbe8" dependencies = [ "libc", "windows-sys 0.52.0", @@ -3045,21 +3134,11 @@ dependencies = [ "der 0.7.9", ] -[[package]] -name = "sqlformat" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7bba3a93db0cc4f7bdece8bb09e77e2e785c20bfebf79eb8340ed80708048790" -dependencies = [ - "nom", - "unicode_categories", -] - [[package]] name = "sqlx" -version = "0.8.1" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcfa89bea9500db4a0d038513d7a060566bfc51d46d1c014847049a45cce85e8" +checksum = "4410e73b3c0d8442c5f99b425d7a435b5ee0ae4167b3196771dd3f7a01be745f" dependencies = [ "sqlx-core", "sqlx-macros", @@ -3070,40 +3149,34 @@ dependencies = [ [[package]] name = "sqlx-core" -version = "0.8.1" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d06e2f2bd861719b1f3f0c7dbe1d80c30bf59e76cf019f07d9014ed7eefb8e08" +checksum = "6a007b6936676aa9ab40207cde35daab0a04b823be8ae004368c0793b96a61e0" dependencies = [ - "atoi", - "byteorder", "bytes", "chrono", "crc", "crossbeam-queue", "either", "event-listener", - "futures-channel", "futures-core", "futures-intrusive", "futures-io", "futures-util", - "hashbrown 0.14.5", + "hashbrown", "hashlink", - "hex", "indexmap", "log", "memchr", "once_cell", - "paste", "percent-encoding", - "rustls 0.23.19", + "rustls 0.23.23", "rustls-pemfile 2.2.0", "serde", "serde_json", "sha2", "smallvec", - "sqlformat", - "thiserror", + "thiserror 2.0.11", "tokio", "tokio-stream", "tracing", @@ -3114,9 +3187,9 @@ dependencies = [ [[package]] name = "sqlx-macros" -version = "0.8.1" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f998a9defdbd48ed005a89362bd40dd2117502f15294f61c8d47034107dbbdc" +checksum = "3112e2ad78643fef903618d78cf0aec1cb3134b019730edb039b69eaf531f310" dependencies = [ "proc-macro2", "quote", @@ -3127,9 +3200,9 @@ dependencies = [ [[package]] name = "sqlx-macros-core" -version = "0.8.1" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d100558134176a2629d46cec0c8891ba0be8910f7896abfdb75ef4ab6f4e7ce" +checksum = "4e9f90acc5ab146a99bf5061a7eb4976b573f560bc898ef3bf8435448dd5e7ad" dependencies = [ "dotenvy", "either", @@ -3153,13 +3226,13 @@ dependencies = [ [[package]] name = "sqlx-mysql" -version = "0.8.1" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "936cac0ab331b14cb3921c62156d913e4c15b74fb6ec0f3146bd4ef6e4fb3c12" +checksum = "4560278f0e00ce64938540546f59f590d60beee33fffbd3b9cd47851e5fff233" dependencies = [ "atoi", "base64 0.22.1", - "bitflags 2.6.0", + "bitflags 2.8.0", "byteorder", "bytes", "chrono", @@ -3181,7 +3254,7 @@ dependencies = [ "memchr", "once_cell", "percent-encoding", - "rand", + "rand 0.8.5", "rsa", "serde", "sha1", @@ -3189,7 +3262,7 @@ dependencies = [ "smallvec", "sqlx-core", "stringprep", - "thiserror", + "thiserror 2.0.11", "tracing", "uuid", "whoami", @@ -3197,13 +3270,13 @@ dependencies = [ [[package]] name = "sqlx-postgres" -version = "0.8.1" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9734dbce698c67ecf67c442f768a5e90a49b2a4d61a9f1d59f73874bd4cf0710" +checksum = "c5b98a57f363ed6764d5b3a12bfedf62f07aa16e1856a7ddc2a0bb190a959613" dependencies = [ "atoi", "base64 0.22.1", - "bitflags 2.6.0", + "bitflags 2.8.0", "byteorder", "chrono", "crc", @@ -3211,7 +3284,6 @@ dependencies = [ "etcetera", "futures-channel", "futures-core", - "futures-io", "futures-util", "hex", "hkdf", @@ -3222,14 +3294,14 @@ dependencies = [ "md-5", "memchr", "once_cell", - "rand", + "rand 0.8.5", "serde", "serde_json", "sha2", "smallvec", "sqlx-core", "stringprep", - "thiserror", + "thiserror 2.0.11", "tracing", "uuid", "whoami", @@ -3237,9 +3309,9 @@ dependencies = [ [[package]] name = "sqlx-sqlite" -version = "0.8.1" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75b419c3c1b1697833dd927bdc4c6545a620bc1bbafabd44e1efbe9afcd337e" +checksum = "f85ca71d3a5b24e64e1d08dd8fe36c6c95c339a896cc33068148906784620540" dependencies = [ "atoi", "chrono", @@ -3260,6 +3332,12 @@ dependencies = [ "uuid", ] +[[package]] +name = "stable_deref_trait" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" + [[package]] name = "stringprep" version = "0.1.5" @@ -3285,9 +3363,9 @@ checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" [[package]] name = "syn" -version = "2.0.85" +version = "2.0.98" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5023162dfcd14ef8f32034d8bcd4cc5ddc61ef7a247c024a33e24e1f24d21b56" +checksum = "36147f1a48ae0ec2b5b3bc5b537d267457555a10dc06f3dbc8cb11ba3006d3b1" dependencies = [ "proc-macro2", "quote", @@ -3302,20 +3380,31 @@ checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" [[package]] name = "sync_wrapper" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7065abeca94b6a8a577f9bd45aa0867a2238b74e8eb67cf10d492bc39351394" +checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" dependencies = [ "futures-core", ] +[[package]] +name = "synstructure" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "system-configuration" version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "core-foundation", "system-configuration-sys", ] @@ -3332,12 +3421,13 @@ dependencies = [ [[package]] name = "tempfile" -version = "3.13.0" +version = "3.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0f2c9fc62d0beef6951ccffd757e241266a2c833136efbe35af6cd2567dca5b" +checksum = "38c246215d7d24f48ae091a2902398798e05d978b24315d6efbc00ede9a8bb91" dependencies = [ "cfg-if", "fastrand", + "getrandom 0.3.1", "once_cell", "rustix", "windows-sys 0.59.0", @@ -3345,18 +3435,38 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.65" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" +dependencies = [ + "thiserror-impl 1.0.69", +] + +[[package]] +name = "thiserror" +version = "2.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d11abd9594d9b38965ef50805c5e469ca9cc6f197f883f717e0269a3057b3d5" +checksum = "d452f284b73e6d76dd36758a0c8684b1d5be31f92b89d07fd5822175732206fc" dependencies = [ - "thiserror-impl", + "thiserror-impl 2.0.11", ] [[package]] name = "thiserror-impl" -version = "1.0.65" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae71770322cbd277e69d762a16c444af02aa0575ac0d174f0b9562d3b37f8602" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "thiserror-impl" +version = "2.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26afc1baea8a989337eeb52b6e72a039780ce45c3edfcc9c5b9d112feeb173c2" dependencies = [ "proc-macro2", "quote", @@ -3375,9 +3485,9 @@ dependencies = [ [[package]] name = "time" -version = "0.3.36" +version = "0.3.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885" +checksum = "35e7868883861bd0e56d9ac6efcaaca0d6d5d82a2a7ec8209ff492c07cf37b21" dependencies = [ "deranged", "itoa", @@ -3396,19 +3506,29 @@ checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" [[package]] name = "time-macros" -version = "0.2.18" +version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf" +checksum = "2834e6017e3e5e4b9834939793b282bc03b37a3336245fa820e35e233e2a85de" dependencies = [ "num-conv", "time-core", ] +[[package]] +name = "tinystr" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f" +dependencies = [ + "displaydoc", + "zerovec", +] + [[package]] name = "tinyvec" -version = "1.8.0" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938" +checksum = "022db8904dfa342efe721985167e9fcd16c29b226db4397ed752a761cfce81e8" dependencies = [ "tinyvec_macros", ] @@ -3421,9 +3541,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.41.0" +version = "1.43.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "145f3413504347a2be84393cc8a7d2fb4d863b375909ea59f2158261aa258bbb" +checksum = "3d61fa4ffa3de412bfea335c6ecff681de2b609ba3c77ef3e00e521813a9ed9e" dependencies = [ "backtrace", "bytes", @@ -3439,9 +3559,9 @@ dependencies = [ [[package]] name = "tokio-macros" -version = "2.4.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" +checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" dependencies = [ "proc-macro2", "quote", @@ -3470,20 +3590,19 @@ dependencies = [ [[package]] name = "tokio-rustls" -version = "0.26.0" +version = "0.26.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c7bc40d0e5a97695bb96e27995cd3a08538541b0a846f65bba7a359f36700d4" +checksum = "5f6d0975eaace0cf0fcadee4e4aaa5da15b5c079146f2cffb67c113be122bf37" dependencies = [ - "rustls 0.23.19", - "rustls-pki-types", + "rustls 0.23.23", "tokio", ] [[package]] name = "tokio-stream" -version = "0.1.16" +version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f4e6ce100d0eb49a2734f8c0812bcd324cf357d21810932c5df6b96ef2b86f1" +checksum = "eca58d7bba4a75707817a2c44174253f9236b2d5fbd055602e9d5c07c139a047" dependencies = [ "futures-core", "pin-project-lite", @@ -3504,9 +3623,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.12" +version = "0.7.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61e7c3654c13bcd040d4a03abee2c75b1d14a37b423cf5a813ceae1cc903ec6a" +checksum = "d7fcaa8d55a2bdd6b83ace262b016eca0d79ee02818c5c1bcdf0305114081078" dependencies = [ "bytes", "futures-core", @@ -3517,9 +3636,9 @@ dependencies = [ [[package]] name = "toml" -version = "0.8.19" +version = "0.8.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1ed1f98e3fdc28d6d910e6737ae6ab1a93bf1985935a1193e68f93eeb68d24e" +checksum = "cd87a5cdd6ffab733b2f74bc4fd7ee5fff6634124999ac278c35fc78c6120148" dependencies = [ "serde", "serde_spanned", @@ -3538,9 +3657,9 @@ dependencies = [ [[package]] name = "toml_edit" -version = "0.22.22" +version = "0.22.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5" +checksum = "17b4795ff5edd201c7cd6dca065ae59972ce77d1b80fa0a84d94950ece7d1474" dependencies = [ "indexmap", "serde", @@ -3567,14 +3686,14 @@ dependencies = [ [[package]] name = "tower" -version = "0.5.1" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2873938d487c3cfb9aed7546dc9f2711d867c9f90c46b889989a2cb84eba6b4f" +checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9" dependencies = [ "futures-core", "futures-util", "pin-project-lite", - "sync_wrapper 0.1.2", + "sync_wrapper 1.0.2", "tokio", "tower-layer", "tower-service", @@ -3602,17 +3721,17 @@ dependencies = [ [[package]] name = "tower-http" -version = "0.6.1" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8437150ab6bbc8c5f0f519e3d5ed4aa883a83dd4cdd3d1b21f9482936046cb97" +checksum = "403fa3b783d4b626a8ad51d766ab03cb6d2dbfc46b1c5d4448395e6628dc9697" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "bytes", "futures-util", - "http 1.1.0", + "http 1.2.0", "http-body 1.0.1", "http-body-util", - "http-range-header 0.4.1", + "http-range-header 0.4.2", "httpdate", "mime", "mime_guess", @@ -3639,9 +3758,9 @@ checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" [[package]] name = "tracing" -version = "0.1.40" +version = "0.1.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" dependencies = [ "log", "pin-project-lite", @@ -3651,9 +3770,9 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.27" +version = "0.1.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" +checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" dependencies = [ "proc-macro2", "quote", @@ -3662,9 +3781,9 @@ dependencies = [ [[package]] name = "tracing-core" -version = "0.1.32" +version = "0.1.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" +checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" dependencies = [ "once_cell", "valuable", @@ -3683,9 +3802,9 @@ dependencies = [ [[package]] name = "tracing-subscriber" -version = "0.3.18" +version = "0.3.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" +checksum = "e8189decb5ac0fa7bc8b96b7cb9b2701d60d48805aca84a238004d665fcc4008" dependencies = [ "matchers", "nu-ansi-term", @@ -3714,12 +3833,12 @@ dependencies = [ "byteorder", "bytes", "data-encoding", - "http 1.1.0", + "http 1.2.0", "httparse", "log", - "rand", + "rand 0.8.5", "sha1", - "thiserror", + "thiserror 1.0.69", "utf-8", ] @@ -3731,33 +3850,32 @@ checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" [[package]] name = "ulid" -version = "1.1.3" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04f903f293d11f31c0c29e4148f6dc0d033a7f80cebc0282bea147611667d289" +checksum = "ab82fc73182c29b02e2926a6df32f2241dbadb5cfc111fd595515b3598f46bb3" dependencies = [ - "getrandom", - "rand", + "rand 0.9.0", "uuid", "web-time", ] [[package]] name = "unicase" -version = "2.8.0" +version = "2.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e51b68083f157f853b6379db119d1c1be0e6e4dec98101079dec41f6f5cf6df" +checksum = "75b844d17643ee918803943289730bec8aac480150456169e647ed0b576ba539" [[package]] name = "unicode-bidi" -version = "0.3.17" +version = "0.3.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ab17db44d7388991a428b2ee655ce0c212e862eff1768a455c58f9aad6e7893" +checksum = "5c1cb5db39152898a79168971543b1cb5020dff7fe43c8dc468b0885f5e29df5" [[package]] name = "unicode-ident" -version = "1.0.13" +version = "1.0.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe" +checksum = "a210d160f08b701c8721ba1c726c11662f877ea6b7094007e1ca9a1041945034" [[package]] name = "unicode-normalization" @@ -3774,12 +3892,6 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e70f2a8b45122e719eb623c01822704c4e0907e7e426a05927e1a1cfff5b75d0" -[[package]] -name = "unicode_categories" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39ec24b3121d976906ece63c9daad25b85969647682eee313cb5779fdd69e14e" - [[package]] name = "untrusted" version = "0.7.1" @@ -3794,9 +3906,9 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "url" -version = "2.5.2" +version = "2.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" +checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" dependencies = [ "form_urlencoded", "idna", @@ -3815,6 +3927,18 @@ version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" +[[package]] +name = "utf16_iter" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246" + +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + [[package]] name = "utf8parse" version = "0.2.2" @@ -3823,19 +3947,19 @@ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "uuid" -version = "1.11.0" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8c5f0a0af699448548ad1a2fbf920fb4bee257eae39953ba95cb84891a0446a" +checksum = "ced87ca4be083373936a67f8de945faa23b6b42384bd5b64434850802c6dccd0" dependencies = [ - "getrandom", + "getrandom 0.3.1", "serde", ] [[package]] name = "valuable" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" +checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" [[package]] name = "vcpkg" @@ -3849,16 +3973,6 @@ version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" -[[package]] -name = "vod" -version = "0.1.0" -dependencies = [ - "anyhow", - "aws-sdk-s3", - "common", - "tracing", -] - [[package]] name = "vsimd" version = "0.8.0" @@ -3890,6 +4004,15 @@ version = "0.11.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +[[package]] +name = "wasi" +version = "0.13.3+wasi-0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26816d2e1a4a36a2940b96c5296ce403917633dff8f3440e9b236ed6f6bacad2" +dependencies = [ + "wit-bindgen-rt", +] + [[package]] name = "wasite" version = "0.1.0" @@ -3898,24 +4021,24 @@ checksum = "b8dad83b4f25e74f184f64c43b150b91efe7647395b42289f38e50566d82855b" [[package]] name = "wasm-bindgen" -version = "0.2.95" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "128d1e363af62632b8eb57219c8fd7877144af57558fb2ef0368d0087bddeb2e" +checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" dependencies = [ "cfg-if", "once_cell", + "rustversion", "wasm-bindgen-macro", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.95" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb6dd4d3ca0ddffd1dd1c9c04f94b868c37ff5fac97c30b97cff2d74fce3a358" +checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" dependencies = [ "bumpalo", "log", - "once_cell", "proc-macro2", "quote", "syn", @@ -3924,21 +4047,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-futures" -version = "0.4.45" +version = "0.4.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc7ec4f8827a71586374db3e87abdb5a2bb3a15afed140221307c3ec06b1f63b" +checksum = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61" dependencies = [ "cfg-if", "js-sys", + "once_cell", "wasm-bindgen", "web-sys", ] [[package]] name = "wasm-bindgen-macro" -version = "0.2.95" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e79384be7f8f5a9dd5d7167216f022090cf1f9ec128e6e6a482a2cb5c5422c56" +checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -3946,9 +4070,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.95" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26c6ab57572f7a24a4985830b120de1594465e5d500f24afe89e16b4e833ef68" +checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" dependencies = [ "proc-macro2", "quote", @@ -3959,15 +4083,18 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.95" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65fc09f10666a9f147042251e0dda9c18f166ff7de300607007e96bdebc1068d" +checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" +dependencies = [ + "unicode-ident", +] [[package]] name = "web-sys" -version = "0.3.72" +version = "0.3.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6488b90108c040df0fe62fa815cbdee25124641df01814dd7282749234c6112" +checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2" dependencies = [ "js-sys", "wasm-bindgen", @@ -3985,9 +4112,9 @@ dependencies = [ [[package]] name = "webpki-roots" -version = "0.26.6" +version = "0.26.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "841c67bff177718f1d4dfefde8d8f0e78f9b6589319ba88312f567fc5841a958" +checksum = "2210b291f7ea53617fbafcc4939f10914214ec15aace5ba62293a668f322c5c9" dependencies = [ "rustls-pki-types", ] @@ -4222,19 +4349,64 @@ checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "winnow" -version = "0.6.24" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8d71a593cc5c42ad7876e2c1fda56f314f3754c084128833e64f1345ff8a03a" +checksum = "59690dea168f2198d1a3b0cac23b8063efcd11012f10ae4698f284808c8ef603" dependencies = [ "memchr", ] +[[package]] +name = "wit-bindgen-rt" +version = "0.33.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3268f3d866458b787f390cf61f4bbb563b922d091359f9608842999eaee3943c" +dependencies = [ + "bitflags 2.8.0", +] + +[[package]] +name = "write16" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936" + +[[package]] +name = "writeable" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" + [[package]] name = "xmlparser" version = "0.13.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "66fee0b777b0f5ac1c69bb06d361268faafa61cd4682ae064a171c16c433e9e4" +[[package]] +name = "yoke" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "120e6aef9aa629e3d4f52dc8cc43a015c7724194c97dfaf45180d2daf2b77f40" +dependencies = [ + "serde", + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "synstructure", +] + [[package]] name = "zerocopy" version = "0.7.35" @@ -4242,7 +4414,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" dependencies = [ "byteorder", - "zerocopy-derive", + "zerocopy-derive 0.7.35", +] + +[[package]] +name = "zerocopy" +version = "0.8.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79386d31a42a4996e3336b0919ddb90f81112af416270cff95b5f5af22b839c2" +dependencies = [ + "zerocopy-derive 0.8.18", ] [[package]] @@ -4256,12 +4437,66 @@ dependencies = [ "syn", ] +[[package]] +name = "zerocopy-derive" +version = "0.8.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76331675d372f91bf8d17e13afbd5fe639200b73d01f0fc748bb059f9cca2db7" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "zerofrom" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cff3ee08c995dee1859d998dea82f7374f2826091dd9cd47def953cae446cd2e" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "595eed982f7d355beb85837f651fa22e90b3c044842dc7f2c2842c086f295808" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "synstructure", +] + [[package]] name = "zeroize" version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" +[[package]] +name = "zerovec" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa2b893d79df23bfb12d5461018d408ea19dfafe76c2c7ef6d4eba614f8ff079" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "zip" version = "0.6.6" diff --git a/Cargo.toml b/Cargo.toml index 53c7c21..0681812 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,4 +1,53 @@ -[workspace] -members = ["crates/*", "services/forge-queue", "services/silo-api"] +[package] +name = "farmhand" +version = "0.1.0" +edition = "2021" -resolver = "2" +[[bin]] +name = "api" +path = "src/bin/api.rs" + +[[bin]] +name = "job_runner" +path = "src/bin/job_runner.rs" + +[dependencies] +anyhow = "1.0.95" +async-trait = "0.1" +aws-config = { version = "1.5.11", features = ["behavior-version-latest"] } +aws-sdk-s3 = "1.71.0" +aws-types = "1.3.3" +argon2 = { version = "0.5", features = ["password-hash"] } +axum = { version = "0.7", features = ["multipart", "tracing", "ws", "macros"] } +axum-extra = "0.3" +bytes = "1.10.0" +chrono = { version = "0.4.31", features = ["serde"] } +futures = "0.3" +hex = "0.4" +hmac = "0.12.1" +jsonwebtoken = "8.1" +lazy_static = "1.4" +nanoid = "0.4.0" +reqwest = { version = "0.12.9", features = ["json"] } +serde = { version = "1.0", features = ["derive"] } +serde_json = "1.0" +sha2 = "0.10" +sqlx = { version = "0.8", features = [ + "runtime-tokio-rustls", + "postgres", + "chrono", + "uuid", + "json", +] } +tempfile = "3.2" +thiserror = "1" +tokio = { version = "1.0", features = ["full"] } +tokio-util = { version = "0.7.0", features = ["io"] } +tower-http = { version = "0.6", features = ["fs", "trace", "cors"] } +tracing = "0.1" +tracing-subscriber = { version = "0.3", features = ["env-filter"] } +ulid = { version = "1", features = ["uuid"] } +urlencoding = "2.1" +uuid = { version = "1.6", features = ["v4", "serde"] } +walkdir = "2.5.0" +zip = "0.6" diff --git a/config/api.Dockerfile b/config/api.Dockerfile index 106af89..689e54b 100644 --- a/config/api.Dockerfile +++ b/config/api.Dockerfile @@ -1,52 +1,33 @@ -# Build stage -FROM --platform=$BUILDPLATFORM rust:1.82-slim-bullseye as builder +FROM lukemathwalker/cargo-chef:latest-rust-1 AS chef +WORKDIR /app + +FROM chef AS planner +COPY Cargo.lock Cargo.lock +COPY Cargo.toml Cargo.toml +COPY src/ src/ +RUN cargo chef prepare --recipe-path recipe.json -# Install build dependencies +FROM chef AS builder RUN apt-get update && apt-get install -y \ pkg-config \ libssl-dev \ && rm -rf /var/lib/apt/lists/* - -# Create a new empty shell project -WORKDIR /app - -# Copy workspace configuration -COPY Cargo.toml Cargo.lock ./ - -# Copy all workspace members -COPY crates/ ./crates/ -COPY services/forge-queue ./services/forge-queue -COPY services/silo-api ./services/silo-api - -# Build the project for release -WORKDIR /app -RUN --mount=type=cache,target=/usr/local/cargo/registry \ - --mount=type=cache,target=/app/target \ - cargo build --release -p api && \ - cp /app/target/release/api /usr/local/bin/api +COPY --from=planner /app/recipe.json recipe.json +# Build dependencies - this is the caching Docker layer! +RUN cargo chef cook --release --recipe-path recipe.json +# Build application +COPY Cargo.lock Cargo.lock +COPY Cargo.toml Cargo.toml +COPY src/ src/ +RUN cargo build --release --bin api # Runtime stage -FROM --platform=$TARGETPLATFORM debian:bullseye-slim - -# Install runtime dependencies +FROM debian:bullseye-slim RUN apt-get update && apt-get install -y \ ca-certificates \ libssl1.1 \ libpq5 \ && rm -rf /var/lib/apt/lists/* - -# Create uploads directory -RUN mkdir -p /app/uploads && \ - chmod 777 /app/uploads - -# Set working directory -WORKDIR /app - -# Copy the binary from builder -COPY --from=builder /usr/local/bin/api /usr/local/bin/api - -# Expose the default port +COPY --from=builder /app/target/release/api /usr/local/bin/api EXPOSE 3000 - -# Set the entrypoint ENTRYPOINT ["/usr/local/bin/api"] diff --git a/config/queue.Dockerfile b/config/queue.Dockerfile deleted file mode 100644 index 457cf10..0000000 --- a/config/queue.Dockerfile +++ /dev/null @@ -1,45 +0,0 @@ -# Build stage -FROM --platform=$BUILDPLATFORM rust:1.82-slim-bullseye as builder - -# Install build dependencies -RUN apt-get update && apt-get install -y \ - pkg-config \ - libssl-dev \ - && rm -rf /var/lib/apt/lists/* - -# Create a new empty shell project -WORKDIR /app - -# Copy workspace configuration -COPY Cargo.toml Cargo.lock ./ - -# Copy all workspace members -COPY crates/ ./crates/ -COPY services/forge-queue ./services/forge-queue -COPY services/silo-api ./services/silo-api - -# Build the project for release -WORKDIR /app/services/forge-queue -RUN --mount=type=cache,target=/usr/local/cargo/registry \ - --mount=type=cache,target=/app/target \ - cargo build --release -p forge && \ - cp /app/target/release/forge /usr/local/bin/forge - - -# Runtime stage -FROM jrottenberg/ffmpeg:7.1-ubuntu2404-edge - -# Install runtime dependencies -RUN apt-get update && apt-get install -y \ - ca-certificates \ - libpq5 \ - && rm -rf /var/lib/apt/lists/* - -# Copy the binary from builder -COPY --from=builder /usr/local/bin/forge /usr/local/bin/forge - -# Expose the health check server -EXPOSE 8080 - -# Set the entrypoint -ENTRYPOINT ["/usr/local/bin/forge"] diff --git a/crates/common/Cargo.toml b/crates/common/Cargo.toml deleted file mode 100644 index daa4232..0000000 --- a/crates/common/Cargo.toml +++ /dev/null @@ -1,18 +0,0 @@ -[package] -name = "common" -version = "0.1.0" -edition = "2021" - -[dependencies] -aws-sdk-s3 = "1.66.0" -aws-config = { version = "1.5.11", features = ["behavior-version-latest"] } -aws-types = "1.3.3" -walkdir = "2.5.0" -argon2 = { version = "0.5", features = ["password-hash"] } -chrono = { version = "0.4", features = ["serde"] } -serde = { version = "1.0", features = ["derive"] } -sqlx = { version = "0.8", features = ["runtime-tokio", "postgres", "chrono"] } -tracing = "0.1" -tracing-subscriber = { version = "0.3", features = ["env-filter"] } -uuid = { version = "1.6", features = ["serde"] } -nanoid = "0.4" diff --git a/crates/queue/Cargo.toml b/crates/queue/Cargo.toml deleted file mode 100644 index c1026f7..0000000 --- a/crates/queue/Cargo.toml +++ /dev/null @@ -1,26 +0,0 @@ -[package] -name = "queue" -version = "0.1.0" -edition = "2021" - -[dependencies] -anyhow = "1" -async-trait = "0.1" -chrono = "0.4" -common = { path = "../common" } -futures = "0.3" -serde = { version = "1", features = ["derive"] } -thiserror = "1" -sqlx = { version = "0.8", features = [ - "runtime-tokio-rustls", - "postgres", - "chrono", - "uuid", - "json", -] } -tokio = { version = "1", features = ["full"] } -tracing = "0.1" -ulid = { version = "1", features = ["uuid"] } -uuid = { version = "1", features = ["serde", "v4"] } -vod = { path = "../vod" } -zip = "0.6" diff --git a/crates/queue/src/error.rs b/crates/queue/src/error.rs deleted file mode 100644 index 6c85586..0000000 --- a/crates/queue/src/error.rs +++ /dev/null @@ -1,32 +0,0 @@ -#[derive(thiserror::Error, Debug, Clone)] -pub enum Error { - #[error("Bad config: {0}")] - BadConfig(String), - #[error("Connecting to database: {0}")] - ConnectingToDatabase(String), - #[error("Internal error: {0}")] - Internal(String), - #[error("Not found: {0}")] - NotFound(String), - #[error("Migrating database: {0}")] - DatabaseMigration(String), - #[error("Invalid job message: {0}")] - InvalidJobMessage(String), - #[error("Video Processing: {0}")] - VideoProcessingError(String), -} - -impl std::convert::From for Error { - fn from(err: sqlx::Error) -> Self { - match err { - sqlx::Error::RowNotFound => Error::NotFound("row not found".into()), - _ => Error::Internal(err.to_string()), - } - } -} - -impl std::convert::From for Error { - fn from(err: sqlx::migrate::MigrateError) -> Self { - Error::DatabaseMigration(err.to_string()) - } -} diff --git a/crates/queue/src/job.rs b/crates/queue/src/job.rs deleted file mode 100644 index 6856c25..0000000 --- a/crates/queue/src/job.rs +++ /dev/null @@ -1,35 +0,0 @@ -use crate::queue::{Job, Message}; -use sqlx::types::Json; -use uuid::Uuid; - -/// A Postgres representation of a Job -#[derive(sqlx::FromRow, Debug, Clone)] -pub struct PostgresJob { - id: Uuid, - created_at: chrono::DateTime, - updated_at: chrono::DateTime, - - scheduled_for: chrono::DateTime, - failed_attempts: i32, - status: PostgresJobStatus, - message: Json, -} - -/// The different status' that a job can be in -// We use a INT as Postgres representation for performance reasons -#[derive(Debug, Clone, sqlx::Type, PartialEq)] -#[repr(i32)] -pub enum PostgresJobStatus { - Queued, - Running, - Failed, -} - -impl From for Job { - fn from(item: PostgresJob) -> Self { - Job { - id: item.id, - message: item.message.0, - } - } -} diff --git a/crates/queue/src/lib.rs b/crates/queue/src/lib.rs deleted file mode 100644 index 1379aa0..0000000 --- a/crates/queue/src/lib.rs +++ /dev/null @@ -1,6 +0,0 @@ -pub mod error; -pub mod job; -pub mod queue; -pub mod runner; - -pub use queue::{Job, PostgresQueue, Queue}; diff --git a/crates/queue/src/queue.rs b/crates/queue/src/queue.rs deleted file mode 100644 index 29b6158..0000000 --- a/crates/queue/src/queue.rs +++ /dev/null @@ -1,177 +0,0 @@ -use crate::error::Error; -use crate::job::{PostgresJob, PostgresJobStatus}; -use serde::{Deserialize, Serialize}; -use sqlx::{self, types::Json, PgPool}; -use std::fmt::Debug; -use ulid::Ulid; -use uuid::Uuid; - -#[async_trait::async_trait] -pub trait Queue: Send + Sync + Debug { - /// pushes a job to the queue - async fn push( - &self, - job: Message, - status: PostgresJobStatus, - scheduled_for: Option>, - ) -> Result<(), Error>; - /// pull fetches at most `number_of_jobs` from the queue. - async fn pull(&self, number_of_jobs: i32) -> Result, Error>; - /// deletes a job from the queue - async fn delete_job(&self, job_id: Uuid) -> Result<(), Error>; - /// fails a job in the queue - async fn fail_job(&self, job_id: Uuid) -> Result<(), Error>; - /// clears the queue - async fn clear(&self) -> Result<(), Error>; -} - -/// The job to be processed, containing the message payload -#[derive(Debug, Clone, Serialize, Deserialize)] -pub struct Job { - pub id: Uuid, - pub message: Message, -} - -/// The payload of the job, containing the different jobs and their required data -#[derive(Debug, Clone, Serialize, Deserialize)] -pub enum Message { - ProcessRawVideoIntoStream { video_id: String }, - CompressRawVideo { video_id: String }, -} - -/// The queue itself -#[derive(Debug, Clone)] -pub struct PostgresQueue { - db: PgPool, - max_attempts: u32, -} - -impl PostgresQueue { - pub fn new(db: PgPool) -> PostgresQueue { - let queue = PostgresQueue { - db, - max_attempts: 5, - }; - - queue - } -} - -#[async_trait::async_trait] -impl Queue for PostgresQueue { - async fn push( - &self, - job: Message, - status: PostgresJobStatus, - date: Option>, - ) -> Result<(), Error> { - let scheduled_for = date.unwrap_or(chrono::Utc::now()); - let failed_attempts: i32 = 0; - let message = Json(job); - let now = chrono::Utc::now(); - let job_id: Uuid = Ulid::new().into(); - let query = "INSERT INTO queue - (id, created_at, updated_at, scheduled_for, failed_attempts, status, message) - VALUES ($1, $2, $3, $4, $5, $6, $7)"; - tracing::debug!( - "Adding job to queue with id: {}, status: {:?}, scheduled_for: {}", - job_id, - status, - scheduled_for - ); - sqlx::query(query) - .bind(job_id) - .bind(now) - .bind(now) - .bind(scheduled_for) - .bind(failed_attempts) - .bind(status) - .bind(message) - .execute(&self.db) - .await?; - Ok(()) - } - - async fn delete_job(&self, job_id: Uuid) -> Result<(), Error> { - let query = "DELETE FROM queue WHERE id = $1"; - - sqlx::query(query).bind(job_id).execute(&self.db).await?; - Ok(()) - } - - async fn fail_job(&self, job_id: Uuid) -> Result<(), Error> { - let now = chrono::Utc::now(); - - // First get the current failed_attempts count - let query = "SELECT failed_attempts FROM queue WHERE id = $1"; - let failed_attempts: i32 = sqlx::query_scalar(query) - .bind(job_id) - .fetch_one(&self.db) - .await?; - - tracing::debug!( - "Failing job with id: {}, attempt {} of {}", - job_id, - failed_attempts + 1, - self.max_attempts - ); - // Determine the new status based on failed attempts - let new_status = if failed_attempts + 1 >= self.max_attempts as i32 { - PostgresJobStatus::Failed - } else { - PostgresJobStatus::Queued - }; - - // Update the job with new status and increment failed_attempts - let query = "UPDATE queue - SET status = $1, updated_at = $2, failed_attempts = failed_attempts + 1 - WHERE id = $3"; - - sqlx::query(query) - .bind(new_status) - .bind(now) - .bind(job_id) - .execute(&self.db) - .await?; - Ok(()) - } - - async fn pull(&self, number_of_jobs: i32) -> Result, Error> { - let number_of_jobs = if number_of_jobs > 100 { - 100 - } else { - number_of_jobs - }; - let now = chrono::Utc::now(); - let query = "UPDATE queue - SET status = $1, updated_at = $2 - WHERE id IN ( - SELECT id - FROM queue - WHERE status = ANY($3) AND scheduled_for <= $4 AND failed_attempts < $5 - ORDER BY scheduled_for - FOR UPDATE SKIP LOCKED - LIMIT $6 - ) - RETURNING *"; - - let jobs: Vec = sqlx::query_as::<_, PostgresJob>(query) - .bind(PostgresJobStatus::Running) - .bind(now) - .bind(vec![PostgresJobStatus::Queued]) - .bind(now) - .bind(self.max_attempts as i32) - .bind(number_of_jobs) - .fetch_all(&self.db) - .await?; - - Ok(jobs.into_iter().map(Into::into).collect()) - } - - async fn clear(&self) -> Result<(), Error> { - let query = "DELETE FROM queue"; - - sqlx::query(query).execute(&self.db).await?; - Ok(()) - } -} diff --git a/crates/vod/Cargo.toml b/crates/vod/Cargo.toml deleted file mode 100644 index ea66ead..0000000 --- a/crates/vod/Cargo.toml +++ /dev/null @@ -1,10 +0,0 @@ -[package] -name = "vod" -version = "0.1.0" -edition = "2021" - -[dependencies] -anyhow = "1.0" -tracing = "0.1" -aws-sdk-s3 = "1.71.0" -common = { path = "../common" } diff --git a/justfile b/justfile index 26cd29c..374557c 100644 --- a/justfile +++ b/justfile @@ -1,24 +1,14 @@ set dotenv-load := true -# Service startup commands -start-api: - cargo run -p api - -start-web: - yarn start - -start-queue: - cargo run -p forge - -# Development commands -dev-api: start-api +# Build Commands +build-api: + cargo build --bin api +# Dev Commands dev-ui: dev-web dev-web: yarn dev -dev-queue: start-queue - # Database commands init-db: create-db migrate @@ -40,76 +30,6 @@ mig-add mig_name: revert: sqlx migrate run --source {{ mig_source }} -# Build commands -build-web: - yarn build - -build-api: - cargo build -p api - -build-queue: - cargo build -p forge - -# Docker build commands - Queue Service (forge-queue) -biq: build-image-queue # Shorthand for building queue image -build-image-queue: (build-image-queue-local) # Default to local build for queue - -# Build queue image for local development (M1/ARM64) -build-image-queue-local: - docker build --platform linux/arm64 -t forge-queue -f config/queue.Dockerfile . - -# Build queue image for production (AMD64) -build-image-queue-prod: - docker build --platform linux/amd64 -t forge-queue -f config/queue.Dockerfile . - -# Run queue container with local build -run-queue: build-image-queue - docker run -e DATABASE_URL=${DATABASE_URL} forge-queue - -# Run queue container with production build -run-queue-prod: build-image-queue-prod - docker run -e DATABASE_URL=${DATABASE_URL} forge-queue - -# Docker build commands - API Service (silo-api) -bia: build-image-api # Shorthand for building API image -build-image-api: (build-image-api-local) # Default to local build for API - -# Build API image for local development (M1/ARM64) -build-image-api-local: - docker build --platform linux/arm64 -t silo-api -f config/api.Dockerfile . - -# Build API image for production (AMD64) -build-image-api-prod: - docker build --platform linux/amd64 -t silo-api -f config/api.Dockerfile . - -# Run API container with local build -run-api: build-image-api - docker run -p 3000:3000 -e DATABASE_URL=${DATABASE_URL} -e JWT_SECRET=${JWT_SECRET} silo-api - -# Run API container with production build -run-api-prod: build-image-api-prod - docker run -p 3000:3000 -e DATABASE_URL=${DATABASE_URL} -e JWT_SECRET=${JWT_SECRET} silo-api - -# Docker build commands - UI Service (barn-ui) -biu: build-image-ui # Shorthand for building UI image -build-image-ui: (build-image-ui-local) # Default to local build for UI - -# Build UI image for local development (M1/ARM64) -build-image-ui-local: - docker build --platform linux/arm64 -t barn-ui -f config/ui.Dockerfile . - -# Build UI image for production (AMD64) -build-image-ui-prod: - docker build --platform linux/amd64 -t barn-ui -f config/ui.Dockerfile . - -# Run UI container with local build -run-ui: build-image-ui - docker run -p 3000:3000 barn-ui - -# Run UI container with production build -run-ui-prod: build-image-ui-prod - docker run -p 3000:3000 barn-ui - # Utility commands sync: sync-web sync-web: @@ -129,12 +49,6 @@ verify: cargo clippy -- -D warnings cargo fmt --all -- --check -# Run all services -dev: dev-web dev-api dev-queue - -# Build all services -build: build-web build-api build-queue - # Nuke all data nuke: @just drop-db diff --git a/k8s/base/queue/configmap.yaml b/k8s/base/queue/configmap.yaml deleted file mode 100644 index 3c2003b..0000000 --- a/k8s/base/queue/configmap.yaml +++ /dev/null @@ -1,9 +0,0 @@ -apiVersion: v1 -kind: ConfigMap -metadata: - name: farmhand-queue-config -data: - RUST_LOG: "api=debug,db=debug,queue=debug,vod=debug,tower_http=debug,axum::rejection=trace" - STORAGE: "videos/staging" - UPLOAD_BUCKET: "farmhand" - FFMPEG_LOCATION: "/usr/local/bin/ffmpeg" diff --git a/k8s/base/queue/deployment.yaml b/k8s/base/queue/deployment.yaml deleted file mode 100644 index 93c010f..0000000 --- a/k8s/base/queue/deployment.yaml +++ /dev/null @@ -1,55 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: farmhand-queue -spec: - selector: - matchLabels: - app: farmhand-queue - template: - metadata: - labels: - app: farmhand-queue - spec: - containers: - - name: farmhand-queue - image: queue - ports: - - containerPort: 8080 - envFrom: - - configMapRef: - name: farmhand-queue-config - env: - - name: DATABASE_URL - valueFrom: - secretKeyRef: - name: farmhand-db - key: uri - - name: R2_ACCOUNT_ID - valueFrom: - secretKeyRef: - name: farmhand-cloudflare-credentials - key: account-id - - name: AWS_ACCESS_KEY_ID - valueFrom: - secretKeyRef: - name: farmhand-cloudflare-credentials - key: access-key-id - - name: AWS_SECRET_ACCESS_KEY - valueFrom: - secretKeyRef: - name: farmhand-cloudflare-credentials - key: secret-access-key - resources: - requests: - cpu: "100m" - memory: "256Mi" - limits: - cpu: "500m" - memory: "512Mi" - readinessProbe: - httpGet: - path: /health - port: 8080 - initialDelaySeconds: 5 - periodSeconds: 10 diff --git a/k8s/base/queue/kustomization.yaml b/k8s/base/queue/kustomization.yaml deleted file mode 100644 index 92585b0..0000000 --- a/k8s/base/queue/kustomization.yaml +++ /dev/null @@ -1,6 +0,0 @@ -apiVersion: kustomize.config.k8s.io/v1beta1 -kind: Kustomization - -resources: - - deployment.yaml - - configmap.yaml diff --git a/k8s/overlays/staging/kustomization.yaml b/k8s/overlays/staging/kustomization.yaml index e4601c1..0b45dfc 100644 --- a/k8s/overlays/staging/kustomization.yaml +++ b/k8s/overlays/staging/kustomization.yaml @@ -6,13 +6,11 @@ nameSuffix: -staging resources: - ../../base/api - - ../../base/queue - ../../base/ui - ingress.yaml images: - name: api - - name: queue - name: ui labels: diff --git a/crates/common/migrations/20241030222807_users.down.sql b/migrations/20241030222807_users.down.sql similarity index 100% rename from crates/common/migrations/20241030222807_users.down.sql rename to migrations/20241030222807_users.down.sql diff --git a/crates/common/migrations/20241030222807_users.up.sql b/migrations/20241030222807_users.up.sql similarity index 100% rename from crates/common/migrations/20241030222807_users.up.sql rename to migrations/20241030222807_users.up.sql diff --git a/crates/common/migrations/20241101164200_add_videos.down.sql b/migrations/20241101164200_add_videos.down.sql similarity index 100% rename from crates/common/migrations/20241101164200_add_videos.down.sql rename to migrations/20241101164200_add_videos.down.sql diff --git a/crates/common/migrations/20241101164200_add_videos.up.sql b/migrations/20241101164200_add_videos.up.sql similarity index 100% rename from crates/common/migrations/20241101164200_add_videos.up.sql rename to migrations/20241101164200_add_videos.up.sql diff --git a/crates/common/migrations/20241109045238_queue.down.sql b/migrations/20241109045238_queue.down.sql similarity index 100% rename from crates/common/migrations/20241109045238_queue.down.sql rename to migrations/20241109045238_queue.down.sql diff --git a/crates/common/migrations/20241109045238_queue.up.sql b/migrations/20241109045238_queue.up.sql similarity index 100% rename from crates/common/migrations/20241109045238_queue.up.sql rename to migrations/20241109045238_queue.up.sql diff --git a/crates/common/migrations/20241109231211_video_privacy.down.sql b/migrations/20241109231211_video_privacy.down.sql similarity index 100% rename from crates/common/migrations/20241109231211_video_privacy.down.sql rename to migrations/20241109231211_video_privacy.down.sql diff --git a/crates/common/migrations/20241109231211_video_privacy.up.sql b/migrations/20241109231211_video_privacy.up.sql similarity index 100% rename from crates/common/migrations/20241109231211_video_privacy.up.sql rename to migrations/20241109231211_video_privacy.up.sql diff --git a/crates/common/migrations/20241110070700_user_roles.down.sql b/migrations/20241110070700_user_roles.down.sql similarity index 100% rename from crates/common/migrations/20241110070700_user_roles.down.sql rename to migrations/20241110070700_user_roles.down.sql diff --git a/crates/common/migrations/20241110070700_user_roles.up.sql b/migrations/20241110070700_user_roles.up.sql similarity index 100% rename from crates/common/migrations/20241110070700_user_roles.up.sql rename to migrations/20241110070700_user_roles.up.sql diff --git a/crates/common/migrations/20241124231804_compresseion_cols.down.sql b/migrations/20241124231804_compresseion_cols.down.sql similarity index 100% rename from crates/common/migrations/20241124231804_compresseion_cols.down.sql rename to migrations/20241124231804_compresseion_cols.down.sql diff --git a/crates/common/migrations/20241124231804_compresseion_cols.up.sql b/migrations/20241124231804_compresseion_cols.up.sql similarity index 100% rename from crates/common/migrations/20241124231804_compresseion_cols.up.sql rename to migrations/20241124231804_compresseion_cols.up.sql diff --git a/crates/common/migrations/20241125013621_user_accounts.down.sql b/migrations/20241125013621_user_accounts.down.sql similarity index 100% rename from crates/common/migrations/20241125013621_user_accounts.down.sql rename to migrations/20241125013621_user_accounts.down.sql diff --git a/crates/common/migrations/20241125013621_user_accounts.up.sql b/migrations/20241125013621_user_accounts.up.sql similarity index 100% rename from crates/common/migrations/20241125013621_user_accounts.up.sql rename to migrations/20241125013621_user_accounts.up.sql diff --git a/crates/common/migrations/20250212051114_add_user_settings.down.sql b/migrations/20250212051114_add_user_settings.down.sql similarity index 100% rename from crates/common/migrations/20250212051114_add_user_settings.down.sql rename to migrations/20250212051114_add_user_settings.down.sql diff --git a/crates/common/migrations/20250212051114_add_user_settings.up.sql b/migrations/20250212051114_add_user_settings.up.sql similarity index 100% rename from crates/common/migrations/20250212051114_add_user_settings.up.sql rename to migrations/20250212051114_add_user_settings.up.sql diff --git a/package.json b/package.json index 26f8e11..1e492af 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "license": "MIT", "private": true, "workspaces": [ - "services/barn-ui" + "web" ], "scripts": { "start": "yarn workspace web start", diff --git a/services/forge-queue/Cargo.toml b/services/forge-queue/Cargo.toml deleted file mode 100644 index 37a99d1..0000000 --- a/services/forge-queue/Cargo.toml +++ /dev/null @@ -1,13 +0,0 @@ -[package] -name = "forge" -version = "0.1.0" -edition = "2021" - -[dependencies] -anyhow = "1" -axum = { version = "0.7.9", features = ["tracing"] } -common = { path = "../../crates/common" } -queue = { path = "../../crates/queue" } -tokio = { version = "1", features = ["full"] } -tracing = "0.1" -tracing-subscriber = { version = "0.3", features = ["env-filter"] } diff --git a/services/forge-queue/README.md b/services/forge-queue/README.md deleted file mode 100644 index 2bac765..0000000 --- a/services/forge-queue/README.md +++ /dev/null @@ -1,68 +0,0 @@ -# forge - -Forge is Farmhand's dedicated video processing queue service. It transforms raw uploads into optimized content through various encoding and analysis processes. - -## Technical Overview -- **Runtime**: Rust -- **Job Queue**: Custom implementation with PostgreSQL -- **Processing**: FFmpeg integration via vod crate -- **Error Handling**: anyhow/thiserror based robust error management - -## Features -- 🎬 Video transcoding queue management -- 🔄 Concurrent job processing with 3 workers -- 🎯 Job prioritization and scheduling -- 📊 Processing status tracking in database -- 🔍 Automatic retries (up to 5 attempts) -- 🎥 HLS stream output format - -## Getting Started - -First, set up your environment variables: - -```bash -# Required -DATABASE_URL=postgres://user:password@localhost:5432/dbname - -# Optional -RUST_LOG=debug # Logging level -``` - -Then run the service: - -```bash -cargo run -``` - -## Jobs - -Currently processes: -- `ProcessRawVideoIntoStream`: Converts raw video files into HLS format - - Updates processing status in real-time - - Creates segmented video streams - - Generates master playlist - -## Architecture - -The queue service consists of: -- PostgreSQL-backed persistent job store -- Concurrent worker pool (3 workers) -- Automatic job status management -- Failed job recovery system - -Jobs flow through three states: -- `Queued`: Awaiting processing -- `Running`: Under active conversion -- `Failed`: Error occurred (automatic retry) - -## Development - -Service organization: -``` -src/ - ├── main.rs # Worker service entry - ├── queue.rs # Queue implementation - ├── job.rs # Job definitions - ├── runner.rs # Processing logic - └── error.rs # Error handling -``` diff --git a/services/forge-queue/src/main.rs b/services/forge-queue/src/main.rs deleted file mode 100644 index 53bbe47..0000000 --- a/services/forge-queue/src/main.rs +++ /dev/null @@ -1,42 +0,0 @@ -use common::db::connect_to_database; -use queue::{runner, PostgresQueue, Queue}; -use std::sync::Arc; -use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt}; - -#[tokio::main] -async fn main() -> anyhow::Result<()> { - // Start the tracer - tracing_subscriber::registry() - .with( - tracing_subscriber::EnvFilter::try_from_default_env() - .unwrap_or_else(|_| "forge=debug,queue=debug".into()), - ) - .with(tracing_subscriber::fmt::layer()) - .init(); - - // Spawn a health check server - tokio::spawn(async { - let app = axum::Router::new().route("/health", axum::routing::get(|| async { "OK" })); - - let listener = tokio::net::TcpListener::bind("0.0.0.0:8080").await.unwrap(); - tracing::info!("Health check server listening on port 8080"); - axum::serve(listener, app).await.unwrap(); - }); - - // Get database connection pool using the db package - let db_pool = connect_to_database().await?; - - // Create queue instance - let queue = PostgresQueue::new(db_pool.clone()); - let queue = Arc::new(queue) as Arc; - - // Number of concurrent jobs to process - let concurrency = 3; - - tracing::info!("Starting queue worker with concurrency {}", concurrency); - - // Run the worker - runner::run_worker(queue, concurrency, &db_pool).await; - - Ok(()) -} diff --git a/services/silo-api/.gitignore b/services/silo-api/.gitignore deleted file mode 100644 index ea8c4bf..0000000 --- a/services/silo-api/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/target diff --git a/services/silo-api/Cargo.toml b/services/silo-api/Cargo.toml deleted file mode 100644 index b6592a8..0000000 --- a/services/silo-api/Cargo.toml +++ /dev/null @@ -1,40 +0,0 @@ -[package] -name = "api" -version = "0.1.0" -edition = "2021" - -[dependencies] -axum = { version = "0.7", features = ["multipart", "tracing", "ws", "macros"] } -axum-extra = "0.3" -chrono = { version = "0.4.31", features = ["serde"] } -futures = "0.3" -hex = "0.4" -sha2 = "0.10" -jsonwebtoken = "8.1" -lazy_static = "1.4" -nanoid = "0.4.0" -queue = { path = "../../crates/queue" } -serde = { version = "1.0", features = ["derive"] } -serde_json = "1.0" -sqlx = { version = "0.8", features = [ - "runtime-tokio", - "postgres", - "chrono", - "uuid", -] } -tempfile = "3.2" -tokio = { version = "1.0", features = ["full"] } -tokio-util = { version = "0.7.0", features = ["io"] } -tower-http = { version = "0.6", features = ["fs", "trace", "cors"] } -tracing = "0.1" -tracing-subscriber = { version = "0.3", features = ["env-filter"] } -uuid = { version = "1.0", features = ["v4", "serde"] } -urlencoding = "2.1" -reqwest = { version = "0.12.9", features = ["json"] } -aws-sdk-s3 = "1.66.0" -aws-config = { version = "1.5.11", features = ["behavior-version-latest"] } -aws-types = "1.3.3" -common = { path = "../../crates/common" } -hmac = "0.12.1" -bytes = "1.10.0" -anyhow = "1.0.95" diff --git a/services/silo-api/README.md b/services/silo-api/README.md deleted file mode 100644 index ed76f4c..0000000 --- a/services/silo-api/README.md +++ /dev/null @@ -1,31 +0,0 @@ -# silo - -Silo is the API service component of Farmhand that handles file uploads, user management, and data operations. Think of it as the storage barn for all incoming content. - -## Technical Overview -- **Runtime**: Rust -- **Web Framework**: Axum -- **Database**: PostgreSQL -- **Authentication**: JWT-based -- **File Handling**: Multipart uploads with temp storage - -## Features -- 📤 File upload management -- 👤 User authentication and authorization -- 🗄️ Content metadata management -- 📡 WebSocket support for real-time updates -- 🔍 Content search and filtering -- 📊 System metrics and logging - -## Getting Started - -```bash -cargo run -``` - -## Environment Variables -```env -DATABASE_URL= # PostgreSQL connection string -JWT_SECRET= # Secret for JWT token generation -UPLOAD_DIR= # Directory for temporary file storage -``` diff --git a/services/silo-api/src/routes/upload/mod.rs b/services/silo-api/src/routes/upload/mod.rs deleted file mode 100644 index 17040ce..0000000 --- a/services/silo-api/src/routes/upload/mod.rs +++ /dev/null @@ -1,2 +0,0 @@ -pub mod cloud; -pub mod on_disk; diff --git a/services/silo-api/src/routes/upload/on_disk.rs b/services/silo-api/src/routes/upload/on_disk.rs deleted file mode 100644 index f1fa975..0000000 --- a/services/silo-api/src/routes/upload/on_disk.rs +++ /dev/null @@ -1,447 +0,0 @@ -use axum::{ - extract::{Multipart, State}, - http::StatusCode, - Extension, -}; -use common::db::{users::User, Video}; -use sha2::{Digest, Sha256}; -use std::sync::atomic::{AtomicU64, Ordering}; -use std::{collections::HashMap, path::Path, sync::Arc}; -use tokio::{ - fs::{File, OpenOptions}, - io::{AsyncSeekExt, AsyncWriteExt, BufWriter}, - sync::Mutex, -}; -use uuid::Uuid; - -use crate::AppState; - -pub const UPLOAD_CHUNK_SIZE: usize = 50 * 1024 * 1024; // 50MB chunks -pub const MAX_FILE_SIZE: u64 = 10 * 1024 * 1024 * 1024; // 10GB limit -const BUFFER_SIZE: usize = UPLOAD_CHUNK_SIZE * 4; // 200MB buffer -const MP4_BUFFER_SIZE: usize = 10 * 1024 * 1024; // 10MB buffer for MP4 files - -#[derive(Debug)] -struct UploadState { - file: BufWriter, - chunks_received: AtomicU64, - total_chunks: u64, - temp_path: String, - final_path: String, - is_mp4: bool, - write_position: AtomicU64, -} - -lazy_static::lazy_static! { - static ref UPLOAD_STATES: Mutex> = Mutex::new(HashMap::new()); -} - -/// Upload video directly to the server -/// DEPRECATED: Favor using Cloudflare-R2 instead -pub async fn upload_video( - State(state): State>, - Extension(user): Extension>, - mut multipart: Multipart, -) -> Result { - let user = match user { - Some(user) => user, - None => return Err(StatusCode::BAD_REQUEST), - }; - let mut filename = String::new(); - let mut chunk_index = 0u64; - let mut total_bytes = 0u64; - let mut client_checksum = String::new(); - let mut total_size = 0u64; - - // Get chunk index - if let Some(field) = multipart.next_field().await.map_err(|e| { - tracing::error!("Error reading chunk index: {}", e); - StatusCode::BAD_REQUEST - })? { - if field.name() != Some("chunkIndex") { - tracing::error!("Expected chunkIndex, got {:?}", field.name()); - return Err(StatusCode::BAD_REQUEST); - } - chunk_index = field - .text() - .await - .map_err(|e| StatusCode::BAD_REQUEST)? - .parse::() - .map_err(|e| StatusCode::INTERNAL_SERVER_ERROR)?; - } - - // Get total file size - if let Some(field) = multipart - .next_field() - .await - .map_err(|e| StatusCode::BAD_REQUEST)? - { - if field.name() != Some("totalSize") { - tracing::error!("Missing total size"); - return Err(StatusCode::BAD_REQUEST); - } - total_size = field - .text() - .await - .map_err(|e| StatusCode::BAD_REQUEST)? - .parse::() - .map_err(|e| StatusCode::INTERNAL_SERVER_ERROR)?; - } - - // Get checksum - if let Some(field) = multipart - .next_field() - .await - .map_err(|e| StatusCode::BAD_REQUEST)? - { - if field.name() != Some("checksum") { - tracing::error!("Missing checksum"); - return Err(StatusCode::BAD_REQUEST); - } - client_checksum = field.text().await.map_err(|e| StatusCode::BAD_REQUEST)?; - } - - // Get file chunk - if let Some(field) = multipart - .next_field() - .await - .map_err(|e| StatusCode::BAD_REQUEST)? - { - // Content type validation - if !field - .content_type() - .map(|ct| ct.starts_with("video/")) - .unwrap_or(false) - { - tracing::error!("Invalid content type in upload"); - return Err(StatusCode::BAD_REQUEST); - } - - filename = field - .file_name() - .ok_or(StatusCode::BAD_REQUEST)? - .to_string(); - let is_mp4 = filename.to_lowercase().ends_with(".mp4"); - - tracing::debug!("Processing file: {} (chunk {})", filename, chunk_index); - - // Validate file type - if !filename.ends_with(".mp4") && !filename.ends_with(".mov") && !filename.ends_with(".m4v") - { - tracing::error!("Invalid file type in upload"); - return Err(StatusCode::BAD_REQUEST); - } - - // Create paths for temporary and final file locations - let upload_dir = Path::new( - state - .config - .upload_dir - .as_ref() - .expect("No upload directory specified"), - ); - let final_path = upload_dir.join(&filename); - let temp_path = upload_dir.join(format!("{}.temp", Uuid::new_v4())); - - // Read the field data - let data = field.bytes().await.map_err(|_| StatusCode::BAD_REQUEST)?; - - // Verify checksum - let mut hasher = Sha256::new(); - hasher.update(&data); - let server_checksum = hex::encode(hasher.finalize()); - - if server_checksum != client_checksum { - tracing::error!("Checksum mismatch for chunk {}", chunk_index); - return Err(StatusCode::BAD_REQUEST); - } - - total_bytes = data.len() as u64; - - if total_size > MAX_FILE_SIZE { - tracing::error!("File too large: {}", total_size); - return Err(StatusCode::BAD_REQUEST); - } - - { - let mut upload_states = UPLOAD_STATES.lock().await; - let upload_state = if chunk_index == 0 { - let mut file = OpenOptions::new() - .create(true) - .read(true) - .write(true) - .truncate(true) - .open(&temp_path) - .await - .map_err(|_| StatusCode::INTERNAL_SERVER_ERROR)?; - - file.set_len(total_size) - .await - .map_err(|_| StatusCode::INTERNAL_SERVER_ERROR)?; - - file.seek(std::io::SeekFrom::Start(0)) - .await - .map_err(|_| StatusCode::INTERNAL_SERVER_ERROR)?; - - let buffer_size = if is_mp4 { MP4_BUFFER_SIZE } else { BUFFER_SIZE }; - - let file = BufWriter::with_capacity(buffer_size, file); - let total_chunks = - (total_size + UPLOAD_CHUNK_SIZE as u64 - 1) / UPLOAD_CHUNK_SIZE as u64; - - let state = UploadState { - file, - chunks_received: AtomicU64::new(0), - total_chunks, - temp_path: temp_path.to_string_lossy().into_owned(), - final_path: final_path.to_string_lossy().into_owned(), - is_mp4, - write_position: AtomicU64::new(0), - }; - - upload_states.insert(filename.clone(), state); - upload_states.get_mut(&filename).unwrap() - } else { - upload_states - .get_mut(&filename) - .ok_or(StatusCode::BAD_REQUEST)? - }; - - // Write chunk - let write_position = chunk_index * UPLOAD_CHUNK_SIZE as u64; - upload_state - .file - .seek(std::io::SeekFrom::Start(write_position)) - .await - .map_err(|_| StatusCode::INTERNAL_SERVER_ERROR)?; - - upload_state - .file - .write_all(&data) - .await - .map_err(|_| StatusCode::INTERNAL_SERVER_ERROR)?; - - if upload_state.is_mp4 { - if chunk_index % 3 == 0 { - upload_state - .file - .flush() - .await - .map_err(|_| StatusCode::INTERNAL_SERVER_ERROR)?; - } - } - - upload_state.chunks_received.fetch_add(1, Ordering::SeqCst); - upload_state - .write_position - .store(write_position + data.len() as u64, Ordering::SeqCst); - - let is_complete = - upload_state.chunks_received.load(Ordering::SeqCst) >= upload_state.total_chunks; - - if is_complete { - upload_state - .file - .flush() - .await - .map_err(|_| StatusCode::INTERNAL_SERVER_ERROR)?; - - upload_state - .file - .get_ref() - .sync_all() - .await - .map_err(|_| StatusCode::INTERNAL_SERVER_ERROR)?; - - // Clone paths before any other operations - let temp_path_str = upload_state.temp_path.clone(); - let final_path_str = upload_state.final_path.clone(); - - // Remove the state from the HashMap before dropping - upload_states.remove(&filename); - - // Drop the lock - drop(upload_states); - - // Add a slightly longer delay for MP4 files - if is_mp4 { - tokio::time::sleep(tokio::time::Duration::from_millis(200)).await; - } else { - tokio::time::sleep(tokio::time::Duration::from_millis(50)).await; - } - - // Verify the temp file size before renaming - match tokio::fs::metadata(&temp_path_str).await { - Ok(metadata) => { - let temp_size = metadata.len(); - if temp_size != total_size { - tracing::error!( - "Size mismatch: expected {}, got {} for file {}", - total_size, - temp_size, - &temp_path_str - ); - return Err(StatusCode::INTERNAL_SERVER_ERROR); - } - } - Err(_) => { - tracing::error!("Failed to get temp file metadata"); - return Err(StatusCode::INTERNAL_SERVER_ERROR); - } - } - - // Ensure the final path doesn't exist before renaming - if Path::new(&final_path_str).exists() { - match tokio::fs::remove_file(&final_path_str).await { - Ok(_) => { - tracing::debug!( - "Successfully removed existing file at {}", - &final_path_str - ); - } - Err(e) => { - tracing::error!("Failed to remove existing file: {}", e); - return Err(StatusCode::INTERNAL_SERVER_ERROR); - } - } - } - - // Clone the paths again for the spawn_blocking closure - let temp_path_clone = temp_path_str.clone(); - let final_path_clone = final_path_str.clone(); - - // Use std::fs for the rename operation to ensure it's more reliable - match tokio::task::spawn_blocking(move || { - std::fs::rename(&temp_path_clone, &final_path_clone) - }) - .await - { - Ok(rename_result) => { - if let Err(e) = rename_result { - tracing::error!( - "Failed to rename file from {} to {}: {}", - &temp_path_str, - &final_path_str, - e - ); - return Err(StatusCode::INTERNAL_SERVER_ERROR); - } - } - Err(e) => { - tracing::error!("Failed to execute rename operation: {}", e); - return Err(StatusCode::INTERNAL_SERVER_ERROR); - } - } - - // Verify final file exists and has correct size - match tokio::fs::metadata(&final_path_str).await { - Ok(metadata) => { - let final_size = metadata.len(); - if final_size != total_size { - tracing::error!( - "Final size mismatch: expected {}, got {} for file {}", - total_size, - final_size, - &final_path_str - ); - return Err(StatusCode::INTERNAL_SERVER_ERROR); - } - } - Err(e) => { - tracing::error!("Failed to verify final file: {}", e); - return Err(StatusCode::INTERNAL_SERVER_ERROR); - } - } - - // Save video metadata to database - let video_title = filename - .trim_end_matches(".mp4") - .trim_end_matches(".mov") - .trim_end_matches(".m4v") - .to_string(); - - match Video::create( - &state.db, - None, - user.id, - video_title, - Some(final_path_str.clone()), - ) - .await - { - Ok(video) => { - tracing::debug!("Saved video metadata to database: {:?}", video); - - // Create and push video processing job to queue - let process_video_message = - queue::queue::Message::ProcessRawVideoIntoStream { - video_id: video.id.to_string(), - }; - - if let Err(e) = state - .queue - .push( - process_video_message, - queue::job::PostgresJobStatus::Queued, - None, // Schedule for immediate processing - ) - .await - { - tracing::error!("Failed to queue video processing job: {}", e); - return Err(StatusCode::INTERNAL_SERVER_ERROR); - } - - tracing::debug!("Successfully queued video processing job"); - } - Err(e) => { - tracing::error!("Failed to save video metadata: {}", e); - return Err(StatusCode::INTERNAL_SERVER_ERROR); - } - } - } - } - - Ok(format!( - "Successfully processed chunk {} for: {} ({:.2} MB)", - chunk_index + 1, - filename, - total_bytes as f64 / 1_048_576.0 - )) - } else { - Err(StatusCode::BAD_REQUEST) - } -} - -/// Removes temp files that are more than an hour old. This is useful for cleaning up -/// partially uploaded files that were never completed. -async fn cleanup_temp_files() -> Result<(), std::io::Error> { - let upload_dir = std::env::current_dir()?.join("uploads"); - let mut read_dir = tokio::fs::read_dir(&upload_dir).await?; - - while let Some(entry) = read_dir.next_entry().await? { - let path = entry.path(); - if path.extension().map_or(false, |ext| ext == "temp") { - if let Ok(metadata) = entry.metadata().await { - if let Ok(modified) = metadata.modified() { - if modified.elapsed().unwrap_or_default().as_secs() > 3600 { - tracing::debug!("Cleaning up stale temp file: {:?}", path); - let _ = tokio::fs::remove_file(&path).await; - } - } - } - } - } - Ok(()) -} - -/// Cleans up temporary upload files by removing those older than 1 hour -pub async fn init_cleanup() { - tokio::spawn(async { - loop { - if let Err(e) = cleanup_temp_files().await { - tracing::error!("Error cleaning up temp files: {}", e); - } - tokio::time::sleep(tokio::time::Duration::from_secs(3600)).await; - } - }); -} diff --git a/services/silo-api/src/app_state.rs b/src/api/app_state.rs similarity index 64% rename from services/silo-api/src/app_state.rs rename to src/api/app_state.rs index 5593de0..42e8bae 100644 --- a/services/silo-api/src/app_state.rs +++ b/src/api/app_state.rs @@ -1,27 +1,20 @@ -use std::sync::Arc; - -use queue::{PostgresQueue, Queue}; +use super::config::Config; +use crate::{db::connect_to_database, storage::s3::create_s3_client}; use sqlx::PgPool; -use crate::config::Config; -use common::s3::create_s3_client; - /// Shared state available to the API pub struct AppState { pub db: PgPool, pub config: Config, - pub queue: Arc, pub s3_client: aws_sdk_s3::Client, } impl AppState { pub async fn new(config: Config) -> Result> { // Initialize a connection to the database - let db = common::db::connect_to_database() + let db = connect_to_database() .await .expect("Could not connect to database"); - // Initialize the queue - let queue = Arc::new(PostgresQueue::new(db.clone())); // Create the S3 Client let s3_client = create_s3_client().await; @@ -29,7 +22,6 @@ impl AppState { Ok(Self { config, db, - queue, s3_client, }) } diff --git a/services/silo-api/src/config.rs b/src/api/config.rs similarity index 100% rename from services/silo-api/src/config.rs rename to src/api/config.rs diff --git a/services/silo-api/src/jwt.rs b/src/api/jwt.rs similarity index 100% rename from services/silo-api/src/jwt.rs rename to src/api/jwt.rs diff --git a/services/silo-api/src/middleware/auth.rs b/src/api/middleware/auth.rs similarity index 96% rename from services/silo-api/src/middleware/auth.rs rename to src/api/middleware/auth.rs index 56bb9b1..c1b520a 100644 --- a/services/silo-api/src/middleware/auth.rs +++ b/src/api/middleware/auth.rs @@ -1,15 +1,18 @@ use std::sync::Arc; -use crate::{jwt::decode_jwt, AppState}; use axum::{ body::Body, extract::{Request, State}, http::{self, Response, StatusCode}, middleware::Next, }; -use common::db::users::User; use uuid::Uuid; +use crate::{ + api::{app_state::AppState, jwt::decode_jwt}, + db::User, +}; + /// A middleware for checking the validity of the JWT token pub async fn auth_middleware( State(state): State>, diff --git a/services/silo-api/src/middleware/mod.rs b/src/api/middleware/mod.rs similarity index 100% rename from services/silo-api/src/middleware/mod.rs rename to src/api/middleware/mod.rs diff --git a/src/api/mod.rs b/src/api/mod.rs new file mode 100644 index 0000000..eb932e4 --- /dev/null +++ b/src/api/mod.rs @@ -0,0 +1,6 @@ +pub mod app_state; +pub mod config; +pub mod jwt; +pub mod middleware; +pub mod routes; +pub mod twitch; diff --git a/services/silo-api/src/routes/auth/mod.rs b/src/api/routes/auth/mod.rs similarity index 98% rename from services/silo-api/src/routes/auth/mod.rs rename to src/api/routes/auth/mod.rs index a95cc18..d6f619a 100644 --- a/services/silo-api/src/routes/auth/mod.rs +++ b/src/api/routes/auth/mod.rs @@ -3,10 +3,12 @@ pub mod oauth; use std::sync::Arc; use axum::{extract::State, http::StatusCode, response::IntoResponse, Json}; -use common::db::users::User; use serde::{Deserialize, Serialize}; -use crate::{jwt::encode_jwt, AppState}; +use crate::{ + api::{app_state::AppState, jwt::encode_jwt}, + db::User, +}; #[derive(Deserialize)] pub struct RegisterRequest { diff --git a/services/silo-api/src/routes/auth/oauth/mod.rs b/src/api/routes/auth/oauth/mod.rs similarity index 100% rename from services/silo-api/src/routes/auth/oauth/mod.rs rename to src/api/routes/auth/oauth/mod.rs diff --git a/services/silo-api/src/routes/auth/oauth/twitch.rs b/src/api/routes/auth/oauth/twitch.rs similarity index 98% rename from services/silo-api/src/routes/auth/oauth/twitch.rs rename to src/api/routes/auth/oauth/twitch.rs index 45c40c6..f00128d 100644 --- a/services/silo-api/src/routes/auth/oauth/twitch.rs +++ b/src/api/routes/auth/oauth/twitch.rs @@ -5,16 +5,19 @@ use axum::{ Extension, }; use chrono::{Duration, Utc}; -use common::db::{accounts::Account, users::User}; use reqwest::Client; use serde::{Deserialize, Serialize}; use std::{env, sync::Arc}; use urlencoding::encode; use uuid::Uuid; -use crate::{jwt::encode_jwt, AppState}; +use crate::{ + api::{app_state::AppState, jwt::encode_jwt}, + db::{accounts::Account, User}, +}; #[derive(Debug, Deserialize)] +#[allow(dead_code)] pub struct TwitchCallback { code: String, scope: Option, @@ -174,6 +177,7 @@ impl TwitchCredentials { } #[derive(Deserialize)] + #[allow(dead_code)] struct TokenResponse { access_token: String, expires_in: i32, diff --git a/services/silo-api/src/routes/health.rs b/src/api/routes/health.rs similarity index 100% rename from services/silo-api/src/routes/health.rs rename to src/api/routes/health.rs diff --git a/services/silo-api/src/routes/mod.rs b/src/api/routes/mod.rs similarity index 100% rename from services/silo-api/src/routes/mod.rs rename to src/api/routes/mod.rs diff --git a/services/silo-api/src/routes/upload/cloud.rs b/src/api/routes/upload/cloud.rs similarity index 89% rename from services/silo-api/src/routes/upload/cloud.rs rename to src/api/routes/upload/cloud.rs index 5211d53..e1b25e9 100644 --- a/services/silo-api/src/routes/upload/cloud.rs +++ b/src/api/routes/upload/cloud.rs @@ -2,12 +2,14 @@ use std::sync::Arc; use aws_sdk_s3::types::{CompletedMultipartUpload, CompletedPart}; use axum::{extract::State, Extension, Json}; -use common::db::{User, Video}; use reqwest::StatusCode; use serde::{Deserialize, Serialize}; -use crate::AppState; -use queue::queue::Message::ProcessRawVideoIntoStream; +use crate::{ + api::app_state::AppState, + db::{User, Video}, + prelude::get_storage_dir, +}; #[derive(Deserialize)] pub struct InitUploadRequest { @@ -52,7 +54,7 @@ pub async fn init_upload( let video_id = Video::gen_id(); // Get the file extension from the original key let extension = request.key.split('.').last().unwrap_or(""); - let storage_root = common::get_storage_dir(); + let storage_root = get_storage_dir(); let storage_path = format!("{}/{}", storage_root, video_id); let key = format!("{}/raw.{}", storage_path, extension); tracing::debug!("Full parsed key: {key}"); @@ -137,6 +139,7 @@ pub struct Parts { } #[derive(Deserialize)] +#[allow(dead_code)] pub struct CompleteUploadRequest { upload_id: String, video_id: String, @@ -192,21 +195,5 @@ pub async fn complete_upload( StatusCode::INTERNAL_SERVER_ERROR })?; - // Create and push video processing job to queue - state - .queue - .push( - ProcessRawVideoIntoStream { - video_id: request.video_id, - }, - queue::job::PostgresJobStatus::Queued, - None, // Schedule for immediate processing - ) - .await - .map_err(|e| { - tracing::error!("Failed to queue video processing job: {}", e); - StatusCode::INTERNAL_SERVER_ERROR - })?; - Ok(StatusCode::ACCEPTED) } diff --git a/src/api/routes/upload/mod.rs b/src/api/routes/upload/mod.rs new file mode 100644 index 0000000..1ede322 --- /dev/null +++ b/src/api/routes/upload/mod.rs @@ -0,0 +1 @@ +pub mod cloud; diff --git a/services/silo-api/src/routes/user.rs b/src/api/routes/user.rs similarity index 97% rename from services/silo-api/src/routes/user.rs rename to src/api/routes/user.rs index 074fba0..3206ebe 100644 --- a/services/silo-api/src/routes/user.rs +++ b/src/api/routes/user.rs @@ -7,13 +7,16 @@ use axum::{ response::IntoResponse, Extension, Json, }; -use common::db::users::{User, UserRole, UserSettings}; use serde::{Deserialize, Serialize}; use sqlx::{Pool, Postgres}; -use crate::{twitch::eventsub::subscribers::subscribe_to_events, AppState}; - -use super::auth::oauth::twitch::TwitchCredentials; +use crate::{ + api::{app_state::AppState, twitch::eventsub::subscribers::subscribe_to_events}, + db::{ + users::{UserRole, UserSettings}, + User, + }, +}; #[derive(Serialize)] /// User data with sensitive data stripped out @@ -55,7 +58,7 @@ pub struct UserListResponse { /// Gets a user by specified query params pub async fn get_user( State(state): State>, - Extension(user): Extension>, + Extension(_user): Extension>, video_query: Option>, username_query: Option>, ) -> impl IntoResponse { diff --git a/services/silo-api/src/routes/video.rs b/src/api/routes/video.rs similarity index 95% rename from services/silo-api/src/routes/video.rs rename to src/api/routes/video.rs index fa4bcd1..413a099 100644 --- a/services/silo-api/src/routes/video.rs +++ b/src/api/routes/video.rs @@ -4,11 +4,13 @@ use axum::{ response::IntoResponse, Extension, Json, }; -use common::db::{self, ProcessingStatus, User, Video}; use serde::{Deserialize, Serialize}; use std::sync::Arc; -use crate::AppState; +use crate::{ + api::app_state::AppState, + db::{ProcessingStatus, User, Video}, +}; #[derive(Deserialize, Debug)] pub struct VideoByID { @@ -38,7 +40,7 @@ pub struct VideoResponse { /// A function for getting videos based on video id, user id, username, or combinations thereof pub async fn get_videos( State(state): State>, - Extension(user): Extension>, + Extension(_user): Extension>, video_query: Option>, username_query: Option>, ) -> impl IntoResponse { @@ -52,7 +54,7 @@ pub async fn get_videos( (Some(video_query), None) => { let video = Video::by_id(&state.db, &video_query.id) .await - .map_err(|e| StatusCode::BAD_REQUEST)?; + .map_err(|_e| StatusCode::BAD_REQUEST)?; let res_video = SanitizedVideoData { id: video.id, processing_status: video.processing_status, @@ -92,7 +94,7 @@ pub async fn get_videos( } } // Videos by video id and user name - (Some(video_query), Some(username_query)) => Err(StatusCode::NOT_IMPLEMENTED), + (Some(_video_query), Some(_username_query)) => Err(StatusCode::NOT_IMPLEMENTED), // No query params, get all videos (None, None) => { tracing::debug!("No queries provided, getting all videos"); @@ -149,7 +151,7 @@ pub async fn delete_videos( None => return Err(StatusCode::BAD_REQUEST), }; - let videos = match db::Video::by_ids(&state.db, &video_ids).await { + let videos = match Video::by_ids(&state.db, &video_ids).await { Ok(videos) => videos, Err(_e) => return Err(StatusCode::INTERNAL_SERVER_ERROR), }; @@ -253,7 +255,7 @@ pub async fn delete_videos( // Only delete videos from database if we successfully deleted their files if !successfully_deleted_ids.is_empty() { - match db::Video::delete(&state.db, user.id, successfully_deleted_ids.clone()).await { + match Video::delete(&state.db, user.id, successfully_deleted_ids.clone()).await { Ok(_) => Ok(Json(DeleteVideoResponse { deleted_videos: successfully_deleted_ids, })), diff --git a/services/silo-api/src/twitch/eventsub/mod.rs b/src/api/twitch/eventsub/mod.rs similarity index 100% rename from services/silo-api/src/twitch/eventsub/mod.rs rename to src/api/twitch/eventsub/mod.rs diff --git a/services/silo-api/src/twitch/eventsub/receivers.rs b/src/api/twitch/eventsub/receivers.rs similarity index 98% rename from services/silo-api/src/twitch/eventsub/receivers.rs rename to src/api/twitch/eventsub/receivers.rs index 165eb1c..8bec14d 100644 --- a/services/silo-api/src/twitch/eventsub/receivers.rs +++ b/src/api/twitch/eventsub/receivers.rs @@ -10,7 +10,7 @@ use serde::{Deserialize, Serialize}; use sha2::Sha256; use std::sync::Arc; -use crate::{routes::auth::oauth::twitch::TwitchCredentials, AppState}; +use crate::api::{app_state::AppState, routes::auth::oauth::twitch::TwitchCredentials}; type HmacSha256 = Hmac; const HMAC_PREFIX: &str = "sha256="; diff --git a/services/silo-api/src/twitch/eventsub/subscribers.rs b/src/api/twitch/eventsub/subscribers.rs similarity index 96% rename from services/silo-api/src/twitch/eventsub/subscribers.rs rename to src/api/twitch/eventsub/subscribers.rs index 280cae0..69272b8 100644 --- a/services/silo-api/src/twitch/eventsub/subscribers.rs +++ b/src/api/twitch/eventsub/subscribers.rs @@ -1,10 +1,12 @@ use axum::http::header; -use common::db::users::UserSettings; use reqwest::Client; use serde::{Deserialize, Serialize}; use uuid::Uuid; -use crate::routes::{auth::oauth::twitch::TwitchCredentials, user::WebhookError}; +use crate::{ + api::routes::{auth::oauth::twitch::TwitchCredentials, user::WebhookError}, + db::users::UserSettings, +}; const TWITCH_API_URL: &str = "https://api.twitch.tv/helix/eventsub/subscriptions"; @@ -31,6 +33,7 @@ enum EventSubCondition { } #[derive(Debug, Serialize)] +#[allow(dead_code)] struct EventSubTransport { method: String, callback: String, @@ -38,6 +41,7 @@ struct EventSubTransport { } #[derive(Debug, Serialize)] +#[allow(dead_code)] struct EventSubRequest { #[serde(rename = "type")] event_type: String, @@ -47,11 +51,13 @@ struct EventSubRequest { } #[derive(Debug, Deserialize)] +#[allow(dead_code)] struct EventSubResponse { data: Vec, } #[derive(Debug, Deserialize)] +#[allow(dead_code)] struct EventSubSubscription { id: String, status: String, @@ -61,6 +67,7 @@ struct EventSubSubscription { } #[derive(Debug, Deserialize)] +#[allow(dead_code)] struct EventSubListResponse { data: Vec, total: i32, @@ -69,12 +76,13 @@ struct EventSubListResponse { } #[derive(Debug, Deserialize)] +#[allow(dead_code)] struct EventSubData { id: String, status: String, } -async fn list_subscriptions( +async fn _list_subscriptions( client_id: &str, app_access_token: &str, ) -> Result { @@ -103,7 +111,7 @@ async fn list_subscriptions( Ok(subscriptions) } -async fn delete_subscription( +async fn _delete_subscription( sub_id: &str, client_id: &str, app_access_token: &str, @@ -131,7 +139,7 @@ async fn delete_subscription( } pub async fn subscribe_to_events( - user_id: Uuid, + _user_id: Uuid, twitch_user_id: String, settings: &UserSettings, webhook_url: &str, diff --git a/services/silo-api/src/twitch/mod.rs b/src/api/twitch/mod.rs similarity index 100% rename from services/silo-api/src/twitch/mod.rs rename to src/api/twitch/mod.rs diff --git a/services/silo-api/src/main.rs b/src/bin/api.rs similarity index 98% rename from services/silo-api/src/main.rs rename to src/bin/api.rs index 8629b8d..04aefe1 100644 --- a/services/silo-api/src/main.rs +++ b/src/bin/api.rs @@ -1,18 +1,10 @@ -mod app_state; -mod config; -mod jwt; -mod middleware; -mod routes; -mod twitch; - -pub use app_state::AppState; use axum::{ middleware as axum_mw, response::IntoResponse, routing::{delete, get, post, put}, Router, }; -use config::Config; +use farmhand::api::{app_state::AppState, config::Config, middleware, routes, twitch}; use std::sync::Arc; use tower_http::{ diff --git a/src/bin/job_runner.rs b/src/bin/job_runner.rs new file mode 100644 index 0000000..fea984d --- /dev/null +++ b/src/bin/job_runner.rs @@ -0,0 +1,3 @@ +pub fn main() { + tracing::info!("Hello from the job runner!"); +} diff --git a/crates/common/src/db/accounts.rs b/src/db/accounts.rs similarity index 100% rename from crates/common/src/db/accounts.rs rename to src/db/accounts.rs diff --git a/crates/common/src/db/mod.rs b/src/db/mod.rs similarity index 100% rename from crates/common/src/db/mod.rs rename to src/db/mod.rs diff --git a/crates/common/src/db/users.rs b/src/db/users.rs similarity index 100% rename from crates/common/src/db/users.rs rename to src/db/users.rs diff --git a/crates/common/src/db/videos.rs b/src/db/videos.rs similarity index 100% rename from crates/common/src/db/videos.rs rename to src/db/videos.rs diff --git a/src/lib.rs b/src/lib.rs new file mode 100644 index 0000000..b777d56 --- /dev/null +++ b/src/lib.rs @@ -0,0 +1,6 @@ +pub mod api; +pub mod db; +pub mod prelude; +pub mod storage; +pub mod vod; +pub mod workers; diff --git a/crates/common/src/lib.rs b/src/prelude/mod.rs similarity index 90% rename from crates/common/src/lib.rs rename to src/prelude/mod.rs index 0fc3460..7e8c3a7 100644 --- a/crates/common/src/lib.rs +++ b/src/prelude/mod.rs @@ -1,6 +1,3 @@ -pub mod db; -pub mod s3; - /// Get the directory for where to store videos pub fn get_storage_dir() -> String { let storage_dir = std::env::var("STORAGE").unwrap_or_else(|_| "storage".to_string()); diff --git a/src/storage/mod.rs b/src/storage/mod.rs new file mode 100644 index 0000000..7dce405 --- /dev/null +++ b/src/storage/mod.rs @@ -0,0 +1 @@ +pub mod s3; diff --git a/crates/common/src/s3.rs b/src/storage/s3.rs similarity index 100% rename from crates/common/src/s3.rs rename to src/storage/s3.rs diff --git a/crates/vod/src/lib.rs b/src/vod/mod.rs similarity index 96% rename from crates/vod/src/lib.rs rename to src/vod/mod.rs index dd5ddbe..8d00574 100644 --- a/crates/vod/src/lib.rs +++ b/src/vod/mod.rs @@ -1,8 +1,11 @@ use std::path::PathBuf; +use crate::{ + db::{DBPool, Video}, + prelude::get_storage_dir, +}; use anyhow::anyhow; use aws_sdk_s3::Client; -use common::db::{DBPool, Video}; use stream::{get_ffmpeg_location, HLSConverter}; pub mod stream; @@ -35,7 +38,7 @@ impl Vod { } /// Gets the prefix for the relative vod in storage pub fn get_remote_storage_prefix(&self) -> String { - let storage_root = common::get_storage_dir(); + let storage_root = get_storage_dir(); format!("{}/{}", storage_root, self.video.id) } /// Gets the raw video locally, and optionally downloads it if missing diff --git a/crates/vod/src/stream.rs b/src/vod/stream.rs similarity index 99% rename from crates/vod/src/stream.rs rename to src/vod/stream.rs index dc158e8..bb02791 100644 --- a/crates/vod/src/stream.rs +++ b/src/vod/stream.rs @@ -274,7 +274,7 @@ impl HLSConverter { fn convert_quality( &self, input_path: &Path, - output_name: &str, + _output_name: &str, quality: &Quality, playlist_name: &str, segment_pattern: &str, diff --git a/src/workers/mod.rs b/src/workers/mod.rs new file mode 100644 index 0000000..e69de29 diff --git a/crates/queue/src/runner.rs b/src/workers/runner.rs similarity index 100% rename from crates/queue/src/runner.rs rename to src/workers/runner.rs diff --git a/services/barn-ui/.gitignore b/web/.gitignore similarity index 100% rename from services/barn-ui/.gitignore rename to web/.gitignore diff --git a/services/barn-ui/.npmrc b/web/.npmrc similarity index 100% rename from services/barn-ui/.npmrc rename to web/.npmrc diff --git a/services/barn-ui/.prettierignore b/web/.prettierignore similarity index 100% rename from services/barn-ui/.prettierignore rename to web/.prettierignore diff --git a/services/barn-ui/.prettierrc b/web/.prettierrc similarity index 100% rename from services/barn-ui/.prettierrc rename to web/.prettierrc diff --git a/services/barn-ui/README.md b/web/README.md similarity index 100% rename from services/barn-ui/README.md rename to web/README.md diff --git a/services/barn-ui/eslint.config.js b/web/eslint.config.js similarity index 100% rename from services/barn-ui/eslint.config.js rename to web/eslint.config.js diff --git a/services/barn-ui/package.json b/web/package.json similarity index 100% rename from services/barn-ui/package.json rename to web/package.json diff --git a/services/barn-ui/postcss.config.js b/web/postcss.config.js similarity index 100% rename from services/barn-ui/postcss.config.js rename to web/postcss.config.js diff --git a/services/barn-ui/src/app.css b/web/src/app.css similarity index 100% rename from services/barn-ui/src/app.css rename to web/src/app.css diff --git a/services/barn-ui/src/app.d.ts b/web/src/app.d.ts similarity index 100% rename from services/barn-ui/src/app.d.ts rename to web/src/app.d.ts diff --git a/services/barn-ui/src/app.html b/web/src/app.html similarity index 100% rename from services/barn-ui/src/app.html rename to web/src/app.html diff --git a/services/barn-ui/src/hooks.server.ts b/web/src/hooks.server.ts similarity index 100% rename from services/barn-ui/src/hooks.server.ts rename to web/src/hooks.server.ts diff --git a/services/barn-ui/src/lib/components/Alert.svelte b/web/src/lib/components/Alert.svelte similarity index 100% rename from services/barn-ui/src/lib/components/Alert.svelte rename to web/src/lib/components/Alert.svelte diff --git a/services/barn-ui/src/lib/components/BrandButton.svelte b/web/src/lib/components/BrandButton.svelte similarity index 100% rename from services/barn-ui/src/lib/components/BrandButton.svelte rename to web/src/lib/components/BrandButton.svelte diff --git a/services/barn-ui/src/lib/components/Button.svelte b/web/src/lib/components/Button.svelte similarity index 100% rename from services/barn-ui/src/lib/components/Button.svelte rename to web/src/lib/components/Button.svelte diff --git a/services/barn-ui/src/lib/components/Card.svelte b/web/src/lib/components/Card.svelte similarity index 100% rename from services/barn-ui/src/lib/components/Card.svelte rename to web/src/lib/components/Card.svelte diff --git a/services/barn-ui/src/lib/components/FeatureCard.svelte b/web/src/lib/components/FeatureCard.svelte similarity index 100% rename from services/barn-ui/src/lib/components/FeatureCard.svelte rename to web/src/lib/components/FeatureCard.svelte diff --git a/services/barn-ui/src/lib/components/Footer.svelte b/web/src/lib/components/Footer.svelte similarity index 100% rename from services/barn-ui/src/lib/components/Footer.svelte rename to web/src/lib/components/Footer.svelte diff --git a/services/barn-ui/src/lib/components/Form.svelte b/web/src/lib/components/Form.svelte similarity index 100% rename from services/barn-ui/src/lib/components/Form.svelte rename to web/src/lib/components/Form.svelte diff --git a/services/barn-ui/src/lib/components/Header.svelte b/web/src/lib/components/Header.svelte similarity index 100% rename from services/barn-ui/src/lib/components/Header.svelte rename to web/src/lib/components/Header.svelte diff --git a/services/barn-ui/src/lib/components/Input.svelte b/web/src/lib/components/Input.svelte similarity index 100% rename from services/barn-ui/src/lib/components/Input.svelte rename to web/src/lib/components/Input.svelte diff --git a/services/barn-ui/src/lib/components/Logo.svelte b/web/src/lib/components/Logo.svelte similarity index 100% rename from services/barn-ui/src/lib/components/Logo.svelte rename to web/src/lib/components/Logo.svelte diff --git a/services/barn-ui/src/lib/components/MyAccount.svelte b/web/src/lib/components/MyAccount.svelte similarity index 100% rename from services/barn-ui/src/lib/components/MyAccount.svelte rename to web/src/lib/components/MyAccount.svelte diff --git a/services/barn-ui/src/lib/components/Popup.svelte b/web/src/lib/components/Popup.svelte similarity index 100% rename from services/barn-ui/src/lib/components/Popup.svelte rename to web/src/lib/components/Popup.svelte diff --git a/services/barn-ui/src/lib/components/Table.svelte b/web/src/lib/components/Table.svelte similarity index 100% rename from services/barn-ui/src/lib/components/Table.svelte rename to web/src/lib/components/Table.svelte diff --git a/services/barn-ui/src/lib/components/ThemeToggler.svelte b/web/src/lib/components/ThemeToggler.svelte similarity index 100% rename from services/barn-ui/src/lib/components/ThemeToggler.svelte rename to web/src/lib/components/ThemeToggler.svelte diff --git a/services/barn-ui/src/lib/components/Throbber.svelte b/web/src/lib/components/Throbber.svelte similarity index 100% rename from services/barn-ui/src/lib/components/Throbber.svelte rename to web/src/lib/components/Throbber.svelte diff --git a/services/barn-ui/src/lib/components/VideoPlayer.svelte b/web/src/lib/components/VideoPlayer.svelte similarity index 100% rename from services/barn-ui/src/lib/components/VideoPlayer.svelte rename to web/src/lib/components/VideoPlayer.svelte diff --git a/services/barn-ui/src/lib/components/icons/Chevron.svelte b/web/src/lib/components/icons/Chevron.svelte similarity index 100% rename from services/barn-ui/src/lib/components/icons/Chevron.svelte rename to web/src/lib/components/icons/Chevron.svelte diff --git a/services/barn-ui/src/lib/components/icons/Close.svelte b/web/src/lib/components/icons/Close.svelte similarity index 100% rename from services/barn-ui/src/lib/components/icons/Close.svelte rename to web/src/lib/components/icons/Close.svelte diff --git a/services/barn-ui/src/lib/components/icons/Email.svelte b/web/src/lib/components/icons/Email.svelte similarity index 100% rename from services/barn-ui/src/lib/components/icons/Email.svelte rename to web/src/lib/components/icons/Email.svelte diff --git a/services/barn-ui/src/lib/components/icons/MyAccount.svelte b/web/src/lib/components/icons/MyAccount.svelte similarity index 100% rename from services/barn-ui/src/lib/components/icons/MyAccount.svelte rename to web/src/lib/components/icons/MyAccount.svelte diff --git a/services/barn-ui/src/lib/components/icons/Pencil.svelte b/web/src/lib/components/icons/Pencil.svelte similarity index 100% rename from services/barn-ui/src/lib/components/icons/Pencil.svelte rename to web/src/lib/components/icons/Pencil.svelte diff --git a/services/barn-ui/src/lib/components/icons/SignOut.svelte b/web/src/lib/components/icons/SignOut.svelte similarity index 100% rename from services/barn-ui/src/lib/components/icons/SignOut.svelte rename to web/src/lib/components/icons/SignOut.svelte diff --git a/services/barn-ui/src/lib/components/icons/Twitch.svelte b/web/src/lib/components/icons/Twitch.svelte similarity index 100% rename from services/barn-ui/src/lib/components/icons/Twitch.svelte rename to web/src/lib/components/icons/Twitch.svelte diff --git a/services/barn-ui/src/lib/components/icons/Video.svelte b/web/src/lib/components/icons/Video.svelte similarity index 100% rename from services/barn-ui/src/lib/components/icons/Video.svelte rename to web/src/lib/components/icons/Video.svelte diff --git a/services/barn-ui/src/lib/index.ts b/web/src/lib/index.ts similarity index 100% rename from services/barn-ui/src/lib/index.ts rename to web/src/lib/index.ts diff --git a/services/barn-ui/src/lib/permissions.ts b/web/src/lib/permissions.ts similarity index 100% rename from services/barn-ui/src/lib/permissions.ts rename to web/src/lib/permissions.ts diff --git a/services/barn-ui/src/lib/server/twitch.ts b/web/src/lib/server/twitch.ts similarity index 100% rename from services/barn-ui/src/lib/server/twitch.ts rename to web/src/lib/server/twitch.ts diff --git a/services/barn-ui/src/lib/server/users.ts b/web/src/lib/server/users.ts similarity index 100% rename from services/barn-ui/src/lib/server/users.ts rename to web/src/lib/server/users.ts diff --git a/services/barn-ui/src/lib/server/videos.ts b/web/src/lib/server/videos.ts similarity index 100% rename from services/barn-ui/src/lib/server/videos.ts rename to web/src/lib/server/videos.ts diff --git a/services/barn-ui/src/lib/stores/user.ts b/web/src/lib/stores/user.ts similarity index 100% rename from services/barn-ui/src/lib/stores/user.ts rename to web/src/lib/stores/user.ts diff --git a/services/barn-ui/src/routes/(guest)/+layout.server.ts b/web/src/routes/(guest)/+layout.server.ts similarity index 100% rename from services/barn-ui/src/routes/(guest)/+layout.server.ts rename to web/src/routes/(guest)/+layout.server.ts diff --git a/services/barn-ui/src/routes/(guest)/+layout.svelte b/web/src/routes/(guest)/+layout.svelte similarity index 100% rename from services/barn-ui/src/routes/(guest)/+layout.svelte rename to web/src/routes/(guest)/+layout.svelte diff --git a/services/barn-ui/src/routes/(guest)/+page.server.ts b/web/src/routes/(guest)/+page.server.ts similarity index 100% rename from services/barn-ui/src/routes/(guest)/+page.server.ts rename to web/src/routes/(guest)/+page.server.ts diff --git a/services/barn-ui/src/routes/(guest)/+page.svelte b/web/src/routes/(guest)/+page.svelte similarity index 100% rename from services/barn-ui/src/routes/(guest)/+page.svelte rename to web/src/routes/(guest)/+page.svelte diff --git a/services/barn-ui/src/routes/(guest)/auth/twitch/+page.server.ts b/web/src/routes/(guest)/auth/twitch/+page.server.ts similarity index 100% rename from services/barn-ui/src/routes/(guest)/auth/twitch/+page.server.ts rename to web/src/routes/(guest)/auth/twitch/+page.server.ts diff --git a/services/barn-ui/src/routes/(guest)/health/+server.ts b/web/src/routes/(guest)/health/+server.ts similarity index 100% rename from services/barn-ui/src/routes/(guest)/health/+server.ts rename to web/src/routes/(guest)/health/+server.ts diff --git a/services/barn-ui/src/routes/(guest)/login/+page.server.ts b/web/src/routes/(guest)/login/+page.server.ts similarity index 100% rename from services/barn-ui/src/routes/(guest)/login/+page.server.ts rename to web/src/routes/(guest)/login/+page.server.ts diff --git a/services/barn-ui/src/routes/(guest)/login/+page.svelte b/web/src/routes/(guest)/login/+page.svelte similarity index 100% rename from services/barn-ui/src/routes/(guest)/login/+page.svelte rename to web/src/routes/(guest)/login/+page.svelte diff --git a/services/barn-ui/src/routes/(guest)/register/+page.server.ts b/web/src/routes/(guest)/register/+page.server.ts similarity index 100% rename from services/barn-ui/src/routes/(guest)/register/+page.server.ts rename to web/src/routes/(guest)/register/+page.server.ts diff --git a/services/barn-ui/src/routes/(guest)/register/+page.svelte b/web/src/routes/(guest)/register/+page.svelte similarity index 100% rename from services/barn-ui/src/routes/(guest)/register/+page.svelte rename to web/src/routes/(guest)/register/+page.svelte diff --git a/services/barn-ui/src/routes/(guest)/videos/+page.server.ts b/web/src/routes/(guest)/videos/+page.server.ts similarity index 100% rename from services/barn-ui/src/routes/(guest)/videos/+page.server.ts rename to web/src/routes/(guest)/videos/+page.server.ts diff --git a/services/barn-ui/src/routes/(guest)/videos/+page.svelte b/web/src/routes/(guest)/videos/+page.svelte similarity index 100% rename from services/barn-ui/src/routes/(guest)/videos/+page.svelte rename to web/src/routes/(guest)/videos/+page.svelte diff --git a/services/barn-ui/src/routes/(guest)/watch/+page.server.ts b/web/src/routes/(guest)/watch/+page.server.ts similarity index 100% rename from services/barn-ui/src/routes/(guest)/watch/+page.server.ts rename to web/src/routes/(guest)/watch/+page.server.ts diff --git a/services/barn-ui/src/routes/(guest)/watch/+page.svelte b/web/src/routes/(guest)/watch/+page.svelte similarity index 100% rename from services/barn-ui/src/routes/(guest)/watch/+page.svelte rename to web/src/routes/(guest)/watch/+page.svelte diff --git a/services/barn-ui/src/routes/(user)/+layout.server.ts b/web/src/routes/(user)/+layout.server.ts similarity index 100% rename from services/barn-ui/src/routes/(user)/+layout.server.ts rename to web/src/routes/(user)/+layout.server.ts diff --git a/services/barn-ui/src/routes/(user)/+layout@.svelte b/web/src/routes/(user)/+layout@.svelte similarity index 100% rename from services/barn-ui/src/routes/(user)/+layout@.svelte rename to web/src/routes/(user)/+layout@.svelte diff --git a/services/barn-ui/src/routes/(user)/dashboard/+page.svelte b/web/src/routes/(user)/dashboard/+page.svelte similarity index 100% rename from services/barn-ui/src/routes/(user)/dashboard/+page.svelte rename to web/src/routes/(user)/dashboard/+page.svelte diff --git a/services/barn-ui/src/routes/(user)/dashboard/streams/+page.svelte b/web/src/routes/(user)/dashboard/streams/+page.svelte similarity index 100% rename from services/barn-ui/src/routes/(user)/dashboard/streams/+page.svelte rename to web/src/routes/(user)/dashboard/streams/+page.svelte diff --git a/services/barn-ui/src/routes/(user)/me/+page.server.ts b/web/src/routes/(user)/me/+page.server.ts similarity index 100% rename from services/barn-ui/src/routes/(user)/me/+page.server.ts rename to web/src/routes/(user)/me/+page.server.ts diff --git a/services/barn-ui/src/routes/(user)/me/+page.svelte b/web/src/routes/(user)/me/+page.svelte similarity index 100% rename from services/barn-ui/src/routes/(user)/me/+page.svelte rename to web/src/routes/(user)/me/+page.svelte diff --git a/services/barn-ui/src/routes/(user)/me/videos/+page.server.ts b/web/src/routes/(user)/me/videos/+page.server.ts similarity index 100% rename from services/barn-ui/src/routes/(user)/me/videos/+page.server.ts rename to web/src/routes/(user)/me/videos/+page.server.ts diff --git a/services/barn-ui/src/routes/(user)/me/videos/+page.svelte b/web/src/routes/(user)/me/videos/+page.svelte similarity index 100% rename from services/barn-ui/src/routes/(user)/me/videos/+page.svelte rename to web/src/routes/(user)/me/videos/+page.svelte diff --git a/services/barn-ui/src/routes/(user)/upload/+page.server.ts b/web/src/routes/(user)/upload/+page.server.ts similarity index 100% rename from services/barn-ui/src/routes/(user)/upload/+page.server.ts rename to web/src/routes/(user)/upload/+page.server.ts diff --git a/services/barn-ui/src/routes/(user)/upload/+page.svelte b/web/src/routes/(user)/upload/+page.svelte similarity index 100% rename from services/barn-ui/src/routes/(user)/upload/+page.svelte rename to web/src/routes/(user)/upload/+page.svelte diff --git a/services/barn-ui/src/routes/+error.svelte b/web/src/routes/+error.svelte similarity index 100% rename from services/barn-ui/src/routes/+error.svelte rename to web/src/routes/+error.svelte diff --git a/services/barn-ui/src/routes/+layout.svelte b/web/src/routes/+layout.svelte similarity index 100% rename from services/barn-ui/src/routes/+layout.svelte rename to web/src/routes/+layout.svelte diff --git a/services/barn-ui/src/routes/api/+server.ts b/web/src/routes/api/+server.ts similarity index 100% rename from services/barn-ui/src/routes/api/+server.ts rename to web/src/routes/api/+server.ts diff --git a/services/barn-ui/static/favicon.png b/web/static/favicon.png similarity index 100% rename from services/barn-ui/static/favicon.png rename to web/static/favicon.png diff --git a/services/barn-ui/static/noise.svg b/web/static/noise.svg similarity index 100% rename from services/barn-ui/static/noise.svg rename to web/static/noise.svg diff --git a/services/barn-ui/svelte.config.js b/web/svelte.config.js similarity index 100% rename from services/barn-ui/svelte.config.js rename to web/svelte.config.js diff --git a/services/barn-ui/tailwind.config.ts b/web/tailwind.config.ts similarity index 100% rename from services/barn-ui/tailwind.config.ts rename to web/tailwind.config.ts diff --git a/services/barn-ui/theme.ts b/web/theme.ts similarity index 100% rename from services/barn-ui/theme.ts rename to web/theme.ts diff --git a/services/barn-ui/tsconfig.json b/web/tsconfig.json similarity index 100% rename from services/barn-ui/tsconfig.json rename to web/tsconfig.json diff --git a/services/barn-ui/vite.config.ts b/web/vite.config.ts similarity index 100% rename from services/barn-ui/vite.config.ts rename to web/vite.config.ts diff --git a/services/barn-ui/yarn.lock b/web/yarn.lock similarity index 100% rename from services/barn-ui/yarn.lock rename to web/yarn.lock diff --git a/yarn.lock b/yarn.lock index a50339f..8364b37 100644 --- a/yarn.lock +++ b/yarn.lock @@ -84,34 +84,34 @@ tslib "^2.6.2" "@aws-sdk/client-s3@^3.735.0": - version "3.738.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-s3/-/client-s3-3.738.0.tgz#0bb71fa46d234c0bd7f86f61c4075453bdf61a8e" - integrity sha512-1Im/p5yfoV15ydVY+QlffsWQkQm7iGVI+3V9tCHEUT6SdmukYEpN3G8Y+lWofRBidxzUE2Xd+MbChCXfzLAoAg== + version "3.749.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-s3/-/client-s3-3.749.0.tgz#48d486b8baa87f20f2d3aceba82f947b3c95eef9" + integrity sha512-Xi+DaBeYRIa2d+1QTAlBdbRIc9j3+H+H5aMbxIrlyIYE2NOz+4fhIgpUYuF4ln63p9Fby5Wh36DhHJYyN4uE0w== dependencies: "@aws-crypto/sha1-browser" "5.2.0" "@aws-crypto/sha256-browser" "5.2.0" "@aws-crypto/sha256-js" "5.2.0" - "@aws-sdk/core" "3.734.0" - "@aws-sdk/credential-provider-node" "3.738.0" + "@aws-sdk/core" "3.749.0" + "@aws-sdk/credential-provider-node" "3.749.0" "@aws-sdk/middleware-bucket-endpoint" "3.734.0" "@aws-sdk/middleware-expect-continue" "3.734.0" - "@aws-sdk/middleware-flexible-checksums" "3.735.0" + "@aws-sdk/middleware-flexible-checksums" "3.749.0" "@aws-sdk/middleware-host-header" "3.734.0" "@aws-sdk/middleware-location-constraint" "3.734.0" "@aws-sdk/middleware-logger" "3.734.0" "@aws-sdk/middleware-recursion-detection" "3.734.0" - "@aws-sdk/middleware-sdk-s3" "3.734.0" + "@aws-sdk/middleware-sdk-s3" "3.749.0" "@aws-sdk/middleware-ssec" "3.734.0" - "@aws-sdk/middleware-user-agent" "3.734.0" + "@aws-sdk/middleware-user-agent" "3.749.0" "@aws-sdk/region-config-resolver" "3.734.0" - "@aws-sdk/signature-v4-multi-region" "3.734.0" + "@aws-sdk/signature-v4-multi-region" "3.749.0" "@aws-sdk/types" "3.734.0" - "@aws-sdk/util-endpoints" "3.734.0" + "@aws-sdk/util-endpoints" "3.743.0" "@aws-sdk/util-user-agent-browser" "3.734.0" - "@aws-sdk/util-user-agent-node" "3.734.0" + "@aws-sdk/util-user-agent-node" "3.749.0" "@aws-sdk/xml-builder" "3.734.0" "@smithy/config-resolver" "^4.0.1" - "@smithy/core" "^3.1.1" + "@smithy/core" "^3.1.3" "@smithy/eventstream-serde-browser" "^4.0.1" "@smithy/eventstream-serde-config-resolver" "^4.0.1" "@smithy/eventstream-serde-node" "^4.0.1" @@ -122,129 +122,129 @@ "@smithy/invalid-dependency" "^4.0.1" "@smithy/md5-js" "^4.0.1" "@smithy/middleware-content-length" "^4.0.1" - "@smithy/middleware-endpoint" "^4.0.2" - "@smithy/middleware-retry" "^4.0.3" - "@smithy/middleware-serde" "^4.0.1" + "@smithy/middleware-endpoint" "^4.0.4" + "@smithy/middleware-retry" "^4.0.5" + "@smithy/middleware-serde" "^4.0.2" "@smithy/middleware-stack" "^4.0.1" "@smithy/node-config-provider" "^4.0.1" "@smithy/node-http-handler" "^4.0.2" "@smithy/protocol-http" "^5.0.1" - "@smithy/smithy-client" "^4.1.2" + "@smithy/smithy-client" "^4.1.4" "@smithy/types" "^4.1.0" "@smithy/url-parser" "^4.0.1" "@smithy/util-base64" "^4.0.0" "@smithy/util-body-length-browser" "^4.0.0" "@smithy/util-body-length-node" "^4.0.0" - "@smithy/util-defaults-mode-browser" "^4.0.3" - "@smithy/util-defaults-mode-node" "^4.0.3" + "@smithy/util-defaults-mode-browser" "^4.0.5" + "@smithy/util-defaults-mode-node" "^4.0.5" "@smithy/util-endpoints" "^3.0.1" "@smithy/util-middleware" "^4.0.1" "@smithy/util-retry" "^4.0.1" - "@smithy/util-stream" "^4.0.2" + "@smithy/util-stream" "^4.1.0" "@smithy/util-utf8" "^4.0.0" "@smithy/util-waiter" "^4.0.2" tslib "^2.6.2" -"@aws-sdk/client-sso@3.734.0": - version "3.734.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso/-/client-sso-3.734.0.tgz#789c98267f07aaa7155b404d0bfd4059c4b4deb9" - integrity sha512-oerepp0mut9VlgTwnG5Ds/lb0C0b2/rQ+hL/rF6q+HGKPfGsCuPvFx1GtwGKCXd49ase88/jVgrhcA9OQbz3kg== +"@aws-sdk/client-sso@3.749.0": + version "3.749.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso/-/client-sso-3.749.0.tgz#533ca94a89409e73c677cbac4f57e6e98a4c92d0" + integrity sha512-ecmuDu8EPya1LDpGRtpgN7C9PHayDh8EaW37ZBKhuxA7cg099yvTFqsGngwRXbhNjKJ4oVa9OUe0EDnu60atYA== dependencies: "@aws-crypto/sha256-browser" "5.2.0" "@aws-crypto/sha256-js" "5.2.0" - "@aws-sdk/core" "3.734.0" + "@aws-sdk/core" "3.749.0" "@aws-sdk/middleware-host-header" "3.734.0" "@aws-sdk/middleware-logger" "3.734.0" "@aws-sdk/middleware-recursion-detection" "3.734.0" - "@aws-sdk/middleware-user-agent" "3.734.0" + "@aws-sdk/middleware-user-agent" "3.749.0" "@aws-sdk/region-config-resolver" "3.734.0" "@aws-sdk/types" "3.734.0" - "@aws-sdk/util-endpoints" "3.734.0" + "@aws-sdk/util-endpoints" "3.743.0" "@aws-sdk/util-user-agent-browser" "3.734.0" - "@aws-sdk/util-user-agent-node" "3.734.0" + "@aws-sdk/util-user-agent-node" "3.749.0" "@smithy/config-resolver" "^4.0.1" - "@smithy/core" "^3.1.1" + "@smithy/core" "^3.1.3" "@smithy/fetch-http-handler" "^5.0.1" "@smithy/hash-node" "^4.0.1" "@smithy/invalid-dependency" "^4.0.1" "@smithy/middleware-content-length" "^4.0.1" - "@smithy/middleware-endpoint" "^4.0.2" - "@smithy/middleware-retry" "^4.0.3" - "@smithy/middleware-serde" "^4.0.1" + "@smithy/middleware-endpoint" "^4.0.4" + "@smithy/middleware-retry" "^4.0.5" + "@smithy/middleware-serde" "^4.0.2" "@smithy/middleware-stack" "^4.0.1" "@smithy/node-config-provider" "^4.0.1" "@smithy/node-http-handler" "^4.0.2" "@smithy/protocol-http" "^5.0.1" - "@smithy/smithy-client" "^4.1.2" + "@smithy/smithy-client" "^4.1.4" "@smithy/types" "^4.1.0" "@smithy/url-parser" "^4.0.1" "@smithy/util-base64" "^4.0.0" "@smithy/util-body-length-browser" "^4.0.0" "@smithy/util-body-length-node" "^4.0.0" - "@smithy/util-defaults-mode-browser" "^4.0.3" - "@smithy/util-defaults-mode-node" "^4.0.3" + "@smithy/util-defaults-mode-browser" "^4.0.5" + "@smithy/util-defaults-mode-node" "^4.0.5" "@smithy/util-endpoints" "^3.0.1" "@smithy/util-middleware" "^4.0.1" "@smithy/util-retry" "^4.0.1" "@smithy/util-utf8" "^4.0.0" tslib "^2.6.2" -"@aws-sdk/core@3.734.0": - version "3.734.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/core/-/core-3.734.0.tgz#fa2289750efd75f4fb8c45719a4a4ea7e7755160" - integrity sha512-SxnDqf3vobdm50OLyAKfqZetv6zzwnSqwIwd3jrbopxxHKqNIM/I0xcYjD6Tn+mPig+u7iRKb9q3QnEooFTlmg== +"@aws-sdk/core@3.749.0": + version "3.749.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/core/-/core-3.749.0.tgz#27bc3403cdbe17913b00b73f4de7a05f85dad408" + integrity sha512-w5Jj573+XKwrDNZUjUJDXL5upx+RCw64TLq3Zk8FVg9MsgkzAPorQ9qmzffi6os+PWngd3pFmD8q5y+Y35LpFQ== dependencies: "@aws-sdk/types" "3.734.0" - "@smithy/core" "^3.1.1" + "@smithy/core" "^3.1.3" "@smithy/node-config-provider" "^4.0.1" "@smithy/property-provider" "^4.0.1" "@smithy/protocol-http" "^5.0.1" "@smithy/signature-v4" "^5.0.1" - "@smithy/smithy-client" "^4.1.2" + "@smithy/smithy-client" "^4.1.4" "@smithy/types" "^4.1.0" "@smithy/util-middleware" "^4.0.1" fast-xml-parser "4.4.1" tslib "^2.6.2" -"@aws-sdk/credential-provider-env@3.734.0": - version "3.734.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-env/-/credential-provider-env-3.734.0.tgz#6c0b1734764a7fb1616455836b1c3dacd99e50a3" - integrity sha512-gtRkzYTGafnm1FPpiNO8VBmJrYMoxhDlGPYDVcijzx3DlF8dhWnowuSBCxLSi+MJMx5hvwrX2A+e/q0QAeHqmw== +"@aws-sdk/credential-provider-env@3.749.0": + version "3.749.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-env/-/credential-provider-env-3.749.0.tgz#cc810d9b1f949f1bb8c37af1165cf515862d7003" + integrity sha512-bhB1ds5QzcSfmCTbjVessXy8xHJROota6wOhFtBsL1aZRQyNN2a9h2QS6xkxjmqVE3yHBsPz+OiSOeLn0kxm7Q== dependencies: - "@aws-sdk/core" "3.734.0" + "@aws-sdk/core" "3.749.0" "@aws-sdk/types" "3.734.0" "@smithy/property-provider" "^4.0.1" "@smithy/types" "^4.1.0" tslib "^2.6.2" -"@aws-sdk/credential-provider-http@3.734.0": - version "3.734.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-http/-/credential-provider-http-3.734.0.tgz#21c5fbb380d1dd503491897b346e1e0b1d06ae41" - integrity sha512-JFSL6xhONsq+hKM8xroIPhM5/FOhiQ1cov0lZxhzZWj6Ai3UAjucy3zyIFDr9MgP1KfCYNdvyaUq9/o+HWvEDg== +"@aws-sdk/credential-provider-http@3.749.0": + version "3.749.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-http/-/credential-provider-http-3.749.0.tgz#d5efad8fce2a10e7d8b861075f2878e78f86c795" + integrity sha512-enFGT8uvETbE6+4bDA2aTOrA/83GrIVPpg2g2r7MwJb36jreXA3KDXaP/5jQsxyIZW70cnYNl/Cawdd4ZXs7CQ== dependencies: - "@aws-sdk/core" "3.734.0" + "@aws-sdk/core" "3.749.0" "@aws-sdk/types" "3.734.0" "@smithy/fetch-http-handler" "^5.0.1" "@smithy/node-http-handler" "^4.0.2" "@smithy/property-provider" "^4.0.1" "@smithy/protocol-http" "^5.0.1" - "@smithy/smithy-client" "^4.1.2" + "@smithy/smithy-client" "^4.1.4" "@smithy/types" "^4.1.0" - "@smithy/util-stream" "^4.0.2" + "@smithy/util-stream" "^4.1.0" tslib "^2.6.2" -"@aws-sdk/credential-provider-ini@3.734.0": - version "3.734.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.734.0.tgz#5769ae28cd255d4fc946799c0273b4af6f2f12bb" - integrity sha512-HEyaM/hWI7dNmb4NhdlcDLcgJvrilk8G4DQX6qz0i4pBZGC2l4iffuqP8K6ZQjUfz5/6894PzeFuhTORAMd+cg== - dependencies: - "@aws-sdk/core" "3.734.0" - "@aws-sdk/credential-provider-env" "3.734.0" - "@aws-sdk/credential-provider-http" "3.734.0" - "@aws-sdk/credential-provider-process" "3.734.0" - "@aws-sdk/credential-provider-sso" "3.734.0" - "@aws-sdk/credential-provider-web-identity" "3.734.0" - "@aws-sdk/nested-clients" "3.734.0" +"@aws-sdk/credential-provider-ini@3.749.0": + version "3.749.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.749.0.tgz#36db051f7a00236fef64fcb8705ed3c17eeaf480" + integrity sha512-OB4AGK61lQdoW2mTmaMBw8L+eBo7wF3YJZXwqFI7M2cQe9WtfuKGIxbYWMBMzoLvEtmsbzeppoZZUezooaIclg== + dependencies: + "@aws-sdk/core" "3.749.0" + "@aws-sdk/credential-provider-env" "3.749.0" + "@aws-sdk/credential-provider-http" "3.749.0" + "@aws-sdk/credential-provider-process" "3.749.0" + "@aws-sdk/credential-provider-sso" "3.749.0" + "@aws-sdk/credential-provider-web-identity" "3.749.0" + "@aws-sdk/nested-clients" "3.749.0" "@aws-sdk/types" "3.734.0" "@smithy/credential-provider-imds" "^4.0.1" "@smithy/property-provider" "^4.0.1" @@ -252,17 +252,17 @@ "@smithy/types" "^4.1.0" tslib "^2.6.2" -"@aws-sdk/credential-provider-node@3.738.0": - version "3.738.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-node/-/credential-provider-node-3.738.0.tgz#0a470fc4d2e791c26da57261b8b14f07de43cd74" - integrity sha512-3MuREsazwBxghKb2sQQHvie+uuK4dX4/ckFYiSoffzJQd0YHxaGxf8cr4NOSCQCUesWu8D3Y0SzlnHGboVSkpA== +"@aws-sdk/credential-provider-node@3.749.0": + version "3.749.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-node/-/credential-provider-node-3.749.0.tgz#b21b241fede2125f99da2e6d652368a3f216a36b" + integrity sha512-1QGstZmGmgmY0rLSTAURlBJdR4s2PRYiZh6dS4HkzzQu7xVDWoCMD+2F7dolsNA8ChTNx2OvBW80n3O9QPICCg== dependencies: - "@aws-sdk/credential-provider-env" "3.734.0" - "@aws-sdk/credential-provider-http" "3.734.0" - "@aws-sdk/credential-provider-ini" "3.734.0" - "@aws-sdk/credential-provider-process" "3.734.0" - "@aws-sdk/credential-provider-sso" "3.734.0" - "@aws-sdk/credential-provider-web-identity" "3.734.0" + "@aws-sdk/credential-provider-env" "3.749.0" + "@aws-sdk/credential-provider-http" "3.749.0" + "@aws-sdk/credential-provider-ini" "3.749.0" + "@aws-sdk/credential-provider-process" "3.749.0" + "@aws-sdk/credential-provider-sso" "3.749.0" + "@aws-sdk/credential-provider-web-identity" "3.749.0" "@aws-sdk/types" "3.734.0" "@smithy/credential-provider-imds" "^4.0.1" "@smithy/property-provider" "^4.0.1" @@ -270,39 +270,39 @@ "@smithy/types" "^4.1.0" tslib "^2.6.2" -"@aws-sdk/credential-provider-process@3.734.0": - version "3.734.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-process/-/credential-provider-process-3.734.0.tgz#eb1de678a9c3d2d7b382e74a670fa283327f9c45" - integrity sha512-zvjsUo+bkYn2vjT+EtLWu3eD6me+uun+Hws1IyWej/fKFAqiBPwyeyCgU7qjkiPQSXqk1U9+/HG9IQ6Iiz+eBw== +"@aws-sdk/credential-provider-process@3.749.0": + version "3.749.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-process/-/credential-provider-process-3.749.0.tgz#ee83034d51779394217863616f75f888fdf8c459" + integrity sha512-C/cgg/AhRabybZRY9mJ6KDz8uqfasWKuFIFGzTpeb/MIDIL53ZqP61CspiQJTRvC4zlFGqvm43XefphfrBGGlQ== dependencies: - "@aws-sdk/core" "3.734.0" + "@aws-sdk/core" "3.749.0" "@aws-sdk/types" "3.734.0" "@smithy/property-provider" "^4.0.1" "@smithy/shared-ini-file-loader" "^4.0.1" "@smithy/types" "^4.1.0" tslib "^2.6.2" -"@aws-sdk/credential-provider-sso@3.734.0": - version "3.734.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.734.0.tgz#68a9d678319e9743d65cf59e2d29c0c440d8975c" - integrity sha512-cCwwcgUBJOsV/ddyh1OGb4gKYWEaTeTsqaAK19hiNINfYV/DO9r4RMlnWAo84sSBfJuj9shUNsxzyoe6K7R92Q== +"@aws-sdk/credential-provider-sso@3.749.0": + version "3.749.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.749.0.tgz#0d0a4a8c0db630efab8aeedaa994e4a939b5ab9d" + integrity sha512-bQNgWcYk10fYOvFwcLskYYVNLO3KMgmV1ip9ieapJb9JDg6bSBaXNjIDhdpK4biTOfrV+adtDO5EU93ogpmAWA== dependencies: - "@aws-sdk/client-sso" "3.734.0" - "@aws-sdk/core" "3.734.0" - "@aws-sdk/token-providers" "3.734.0" + "@aws-sdk/client-sso" "3.749.0" + "@aws-sdk/core" "3.749.0" + "@aws-sdk/token-providers" "3.749.0" "@aws-sdk/types" "3.734.0" "@smithy/property-provider" "^4.0.1" "@smithy/shared-ini-file-loader" "^4.0.1" "@smithy/types" "^4.1.0" tslib "^2.6.2" -"@aws-sdk/credential-provider-web-identity@3.734.0": - version "3.734.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.734.0.tgz#666b61cc9f498a3aaecd8e38c9ae34aef37e2e64" - integrity sha512-t4OSOerc+ppK541/Iyn1AS40+2vT/qE+MFMotFkhCgCJbApeRF2ozEdnDN6tGmnl4ybcUuxnp9JWLjwDVlR/4g== +"@aws-sdk/credential-provider-web-identity@3.749.0": + version "3.749.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.749.0.tgz#1869159d76ae4a7604391fb98efe3073111617fb" + integrity sha512-jzHk6i4G4dnXL+L+qeILguDCiIhA1rNvJzB5lTts4R8OdmNkG12bGbYL8bL4O1b5qCimlo7HS0IZIby0pS7rcg== dependencies: - "@aws-sdk/core" "3.734.0" - "@aws-sdk/nested-clients" "3.734.0" + "@aws-sdk/core" "3.749.0" + "@aws-sdk/nested-clients" "3.749.0" "@aws-sdk/types" "3.734.0" "@smithy/property-provider" "^4.0.1" "@smithy/types" "^4.1.0" @@ -331,22 +331,22 @@ "@smithy/types" "^4.1.0" tslib "^2.6.2" -"@aws-sdk/middleware-flexible-checksums@3.735.0": - version "3.735.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.735.0.tgz#e83850711d6750df764d7cf3a1a8434fe91f1fb9" - integrity sha512-Tx7lYTPwQFRe/wQEHMR6Drh/S+X0ToAEq1Ava9QyxV1riwtepzRLojpNDELFb3YQVVYbX7FEiBMCJLMkmIIY+A== +"@aws-sdk/middleware-flexible-checksums@3.749.0": + version "3.749.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.749.0.tgz#264fe1621d23e1c8c4ff4b5bc1c7ad09dff2d979" + integrity sha512-LebOuHbO5BPeke0EB7I7aU7EK807XEyHeCQ3El4CztkGr7cY37PiYP5E0bsSs/4dlK534en/oD0dBA82gZ3xcg== dependencies: "@aws-crypto/crc32" "5.2.0" "@aws-crypto/crc32c" "5.2.0" "@aws-crypto/util" "5.2.0" - "@aws-sdk/core" "3.734.0" + "@aws-sdk/core" "3.749.0" "@aws-sdk/types" "3.734.0" "@smithy/is-array-buffer" "^4.0.0" "@smithy/node-config-provider" "^4.0.1" "@smithy/protocol-http" "^5.0.1" "@smithy/types" "^4.1.0" "@smithy/util-middleware" "^4.0.1" - "@smithy/util-stream" "^4.0.2" + "@smithy/util-stream" "^4.1.0" "@smithy/util-utf8" "^4.0.0" tslib "^2.6.2" @@ -388,23 +388,23 @@ "@smithy/types" "^4.1.0" tslib "^2.6.2" -"@aws-sdk/middleware-sdk-s3@3.734.0": - version "3.734.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.734.0.tgz#eaeec56fef54713a2a8baa1fbc8be74e8f49fb09" - integrity sha512-zeZPenDhkP/RXYMFG3exhNOe2Qukg2l2KpIjxq9o66meELiTULoIXjCmgPoWcM8zzrue06SBdTsaJDHfDl2vdA== +"@aws-sdk/middleware-sdk-s3@3.749.0": + version "3.749.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.749.0.tgz#46da5e9cbf6dc5318f94e4383e7de7f859780e69" + integrity sha512-A7OaNkSFzI2vCRarSKEzoVejAyiLY1M1Z6PR3TE2woAPUUAgRv5UlFOXSymBx1Ya3HUQzWky7mnpnKAFyRGzSg== dependencies: - "@aws-sdk/core" "3.734.0" + "@aws-sdk/core" "3.749.0" "@aws-sdk/types" "3.734.0" "@aws-sdk/util-arn-parser" "3.723.0" - "@smithy/core" "^3.1.1" + "@smithy/core" "^3.1.3" "@smithy/node-config-provider" "^4.0.1" "@smithy/protocol-http" "^5.0.1" "@smithy/signature-v4" "^5.0.1" - "@smithy/smithy-client" "^4.1.2" + "@smithy/smithy-client" "^4.1.4" "@smithy/types" "^4.1.0" "@smithy/util-config-provider" "^4.0.0" "@smithy/util-middleware" "^4.0.1" - "@smithy/util-stream" "^4.0.2" + "@smithy/util-stream" "^4.1.0" "@smithy/util-utf8" "^4.0.0" tslib "^2.6.2" @@ -417,57 +417,57 @@ "@smithy/types" "^4.1.0" tslib "^2.6.2" -"@aws-sdk/middleware-user-agent@3.734.0": - version "3.734.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.734.0.tgz#12d400ccb98593f2b02e4fb08239cb9835d41d3a" - integrity sha512-MFVzLWRkfFz02GqGPjqSOteLe5kPfElUrXZft1eElnqulqs6RJfVSpOV7mO90gu293tNAeggMWAVSGRPKIYVMg== +"@aws-sdk/middleware-user-agent@3.749.0": + version "3.749.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.749.0.tgz#05960c434c4129ccbcb45d2fd369c8d6c135738d" + integrity sha512-dNRkZtiM8OoGb/h2Fgrgvty9ltYEubzsD5FH+VN14RrluertLQMmqHrgvq7JoAXFf7MJy+uwhRu4V6pf1sZR/w== dependencies: - "@aws-sdk/core" "3.734.0" + "@aws-sdk/core" "3.749.0" "@aws-sdk/types" "3.734.0" - "@aws-sdk/util-endpoints" "3.734.0" - "@smithy/core" "^3.1.1" + "@aws-sdk/util-endpoints" "3.743.0" + "@smithy/core" "^3.1.3" "@smithy/protocol-http" "^5.0.1" "@smithy/types" "^4.1.0" tslib "^2.6.2" -"@aws-sdk/nested-clients@3.734.0": - version "3.734.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/nested-clients/-/nested-clients-3.734.0.tgz#10a116d141522341c446b11783551ef863aabd27" - integrity sha512-iph2XUy8UzIfdJFWo1r0Zng9uWj3253yvW9gljhtu+y/LNmNvSnJxQk1f3D2BC5WmcoPZqTS3UsycT3mLPSzWA== +"@aws-sdk/nested-clients@3.749.0": + version "3.749.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/nested-clients/-/nested-clients-3.749.0.tgz#61006646246d916822fc82c6f7d637358bae83e3" + integrity sha512-5L8OuVojcVQAZw+iVXTaw88AZTlMw8fD51lB6spzbZdNLl6dd5Iz1JVJAOUl2mTAZXRiN5Q9VECwY1yMgWweAw== dependencies: "@aws-crypto/sha256-browser" "5.2.0" "@aws-crypto/sha256-js" "5.2.0" - "@aws-sdk/core" "3.734.0" + "@aws-sdk/core" "3.749.0" "@aws-sdk/middleware-host-header" "3.734.0" "@aws-sdk/middleware-logger" "3.734.0" "@aws-sdk/middleware-recursion-detection" "3.734.0" - "@aws-sdk/middleware-user-agent" "3.734.0" + "@aws-sdk/middleware-user-agent" "3.749.0" "@aws-sdk/region-config-resolver" "3.734.0" "@aws-sdk/types" "3.734.0" - "@aws-sdk/util-endpoints" "3.734.0" + "@aws-sdk/util-endpoints" "3.743.0" "@aws-sdk/util-user-agent-browser" "3.734.0" - "@aws-sdk/util-user-agent-node" "3.734.0" + "@aws-sdk/util-user-agent-node" "3.749.0" "@smithy/config-resolver" "^4.0.1" - "@smithy/core" "^3.1.1" + "@smithy/core" "^3.1.3" "@smithy/fetch-http-handler" "^5.0.1" "@smithy/hash-node" "^4.0.1" "@smithy/invalid-dependency" "^4.0.1" "@smithy/middleware-content-length" "^4.0.1" - "@smithy/middleware-endpoint" "^4.0.2" - "@smithy/middleware-retry" "^4.0.3" - "@smithy/middleware-serde" "^4.0.1" + "@smithy/middleware-endpoint" "^4.0.4" + "@smithy/middleware-retry" "^4.0.5" + "@smithy/middleware-serde" "^4.0.2" "@smithy/middleware-stack" "^4.0.1" "@smithy/node-config-provider" "^4.0.1" "@smithy/node-http-handler" "^4.0.2" "@smithy/protocol-http" "^5.0.1" - "@smithy/smithy-client" "^4.1.2" + "@smithy/smithy-client" "^4.1.4" "@smithy/types" "^4.1.0" "@smithy/url-parser" "^4.0.1" "@smithy/util-base64" "^4.0.0" "@smithy/util-body-length-browser" "^4.0.0" "@smithy/util-body-length-node" "^4.0.0" - "@smithy/util-defaults-mode-browser" "^4.0.3" - "@smithy/util-defaults-mode-node" "^4.0.3" + "@smithy/util-defaults-mode-browser" "^4.0.5" + "@smithy/util-defaults-mode-node" "^4.0.5" "@smithy/util-endpoints" "^3.0.1" "@smithy/util-middleware" "^4.0.1" "@smithy/util-retry" "^4.0.1" @@ -486,24 +486,24 @@ "@smithy/util-middleware" "^4.0.1" tslib "^2.6.2" -"@aws-sdk/signature-v4-multi-region@3.734.0": - version "3.734.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.734.0.tgz#218d254d85b5e97409266725fdd6e9c28c3fbcab" - integrity sha512-GSRP8UH30RIYkcpPILV4pWrKFjRmmNjtUd41HTKWde5GbjJvNYpxqFXw2aIJHjKTw/js3XEtGSNeTaQMVVt3CQ== +"@aws-sdk/signature-v4-multi-region@3.749.0": + version "3.749.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.749.0.tgz#20d6868de7ce3cb0f16369f19836b6b119a7e1d8" + integrity sha512-8ZR3vnJn1Tgg/qpalkyQMUILzZhw6XV1aCDxYMevqHYu6/f0ujvytJjiUd+j92sfxgN781f6bWpt/jVY0jarxg== dependencies: - "@aws-sdk/middleware-sdk-s3" "3.734.0" + "@aws-sdk/middleware-sdk-s3" "3.749.0" "@aws-sdk/types" "3.734.0" "@smithy/protocol-http" "^5.0.1" "@smithy/signature-v4" "^5.0.1" "@smithy/types" "^4.1.0" tslib "^2.6.2" -"@aws-sdk/token-providers@3.734.0": - version "3.734.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/token-providers/-/token-providers-3.734.0.tgz#8880e94f21457fe5dd7074ecc52fdd43180cbb2c" - integrity sha512-2U6yWKrjWjZO8Y5SHQxkFvMVWHQWbS0ufqfAIBROqmIZNubOL7jXCiVdEFekz6MZ9LF2tvYGnOW4jX8OKDGfIw== +"@aws-sdk/token-providers@3.749.0": + version "3.749.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/token-providers/-/token-providers-3.749.0.tgz#a679c011edca66a3f4fe4ef5a051204c2ddeba9a" + integrity sha512-s3ExVWoNZan6U7ljMqjiHq3bOe4EqL+U+cVPwqNxAsMaJpGyCiA8VQFlXNGg0EPAFbz/0DVBcozYht6/vyH3sg== dependencies: - "@aws-sdk/nested-clients" "3.734.0" + "@aws-sdk/nested-clients" "3.749.0" "@aws-sdk/types" "3.734.0" "@smithy/property-provider" "^4.0.1" "@smithy/shared-ini-file-loader" "^4.0.1" @@ -525,10 +525,10 @@ dependencies: tslib "^2.6.2" -"@aws-sdk/util-endpoints@3.734.0": - version "3.734.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-endpoints/-/util-endpoints-3.734.0.tgz#43bac42a21a45477a386ccf398028e7f793bc217" - integrity sha512-w2+/E88NUbqql6uCVAsmMxDQKu7vsKV0KqhlQb0lL+RCq4zy07yXYptVNs13qrnuTfyX7uPXkXrlugvK9R1Ucg== +"@aws-sdk/util-endpoints@3.743.0": + version "3.743.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-endpoints/-/util-endpoints-3.743.0.tgz#fba654e0c5f1c8ba2b3e175dfee8e3ba4df2394a" + integrity sha512-sN1l559zrixeh5x+pttrnd0A3+r34r0tmPkJ/eaaMaAzXqsmKU/xYre9K3FNnsSS1J1k4PEfk/nHDTVUgFYjnw== dependencies: "@aws-sdk/types" "3.734.0" "@smithy/types" "^4.1.0" @@ -552,12 +552,12 @@ bowser "^2.11.0" tslib "^2.6.2" -"@aws-sdk/util-user-agent-node@3.734.0": - version "3.734.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.734.0.tgz#d5c6ee192cea9d53a871178a2669b8b4dea39a68" - integrity sha512-c6Iinh+RVQKs6jYUFQ64htOU2HUXFQ3TVx+8Tu3EDF19+9vzWi9UukhIMH9rqyyEXIAkk9XL7avt8y2Uyw2dGA== +"@aws-sdk/util-user-agent-node@3.749.0": + version "3.749.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.749.0.tgz#4b02afd8ce9170f799bc8fa0a7037c1af9a24d87" + integrity sha512-uBzolGGrwvZKhpYlGIy9tw6gRdqVs2zyjjXUiifdgbr3WiQXJe8sE1KhLjzyN/VOPcZB0rY34ybqiKEDOymOeQ== dependencies: - "@aws-sdk/middleware-user-agent" "3.734.0" + "@aws-sdk/middleware-user-agent" "3.749.0" "@aws-sdk/types" "3.734.0" "@smithy/node-config-provider" "^4.0.1" "@smithy/types" "^4.1.0" @@ -699,11 +699,11 @@ integrity sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ== "@eslint/config-array@^0.19.0": - version "0.19.1" - resolved "https://registry.yarnpkg.com/@eslint/config-array/-/config-array-0.19.1.tgz#734aaea2c40be22bbb1f2a9dac687c57a6a4c984" - integrity sha512-fo6Mtm5mWyKjA/Chy1BYTdn5mGJoDNjC7C64ug20ADsRDGrA85bN3uK3MaKbeRkRuuIEAR5N33Jr1pbm411/PA== + version "0.19.2" + resolved "https://registry.yarnpkg.com/@eslint/config-array/-/config-array-0.19.2.tgz#3060b809e111abfc97adb0bb1172778b90cb46aa" + integrity sha512-GNKqxfHG2ySmJOBSHg7LxeUx4xpuCoFjacmlCoYWEbaPXLwvfIjixRI12xCQZeULksQb23uiA8F40w5TojpV7w== dependencies: - "@eslint/object-schema" "^2.1.5" + "@eslint/object-schema" "^2.1.6" debug "^4.3.1" minimatch "^3.1.2" @@ -714,6 +714,13 @@ dependencies: "@types/json-schema" "^7.0.15" +"@eslint/core@^0.11.0": + version "0.11.0" + resolved "https://registry.yarnpkg.com/@eslint/core/-/core-0.11.0.tgz#7a9226e850922e42cbd2ba71361eacbe74352a12" + integrity sha512-DWUB2pksgNEb6Bz2fggIy1wh6fGgZP4Xyy/Mt0QZPiloKKXerbqq9D3SBQTlCRYOrcRPu4vuz+CGjwdfqxnoWA== + dependencies: + "@types/json-schema" "^7.0.15" + "@eslint/eslintrc@^3.2.0": version "3.2.0" resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-3.2.0.tgz#57470ac4e2e283a6bf76044d63281196e370542c" @@ -729,15 +736,15 @@ minimatch "^3.1.2" strip-json-comments "^3.1.1" -"@eslint/js@9.19.0": - version "9.19.0" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.19.0.tgz#51dbb140ed6b49d05adc0b171c41e1a8713b7789" - integrity sha512-rbq9/g38qjfqFLOVPvwjIvFFdNziEC5S65jmjPw5r6A//QH+W91akh9irMwjDN8zKUTak6W9EsAv4m/7Wnw0UQ== +"@eslint/js@9.20.0": + version "9.20.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.20.0.tgz#7421bcbe74889fcd65d1be59f00130c289856eb4" + integrity sha512-iZA07H9io9Wn836aVTytRaNqh00Sad+EamwOVJT12GTLw1VGMFV/4JaME+JjLtr9fiGaoWgYnS54wrfWsSs4oQ== -"@eslint/object-schema@^2.1.5": - version "2.1.5" - resolved "https://registry.yarnpkg.com/@eslint/object-schema/-/object-schema-2.1.5.tgz#8670a8f6258a2be5b2c620ff314a1d984c23eb2e" - integrity sha512-o0bhxnL89h5Bae5T318nFoFzGy+YE5i/gGkoPAgkmTVdRKTiv3p8JHevPiPaMwoloKfEiiaHlawCqaZMqRm+XQ== +"@eslint/object-schema@^2.1.6": + version "2.1.6" + resolved "https://registry.yarnpkg.com/@eslint/object-schema/-/object-schema-2.1.6.tgz#58369ab5b5b3ca117880c0f6c0b0f32f6950f24f" + integrity sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA== "@eslint/plugin-kit@^0.2.5": version "0.2.5" @@ -909,100 +916,100 @@ estree-walker "^2.0.2" picomatch "^4.0.2" -"@rollup/rollup-android-arm-eabi@4.32.1": - version "4.32.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.32.1.tgz#c18bad635ba24220a6c8cc427ab2cab12e1531a3" - integrity sha512-/pqA4DmqyCm8u5YIDzIdlLcEmuvxb0v8fZdFhVMszSpDTgbQKdw3/mB3eMUHIbubtJ6F9j+LtmyCnHTEqIHyzA== - -"@rollup/rollup-android-arm64@4.32.1": - version "4.32.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.32.1.tgz#b5c00344b80f20889b72bfe65d3c209cef247362" - integrity sha512-If3PDskT77q7zgqVqYuj7WG3WC08G1kwXGVFi9Jr8nY6eHucREHkfpX79c0ACAjLj3QIWKPJR7w4i+f5EdLH5Q== - -"@rollup/rollup-darwin-arm64@4.32.1": - version "4.32.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.32.1.tgz#78e5358d4a2a08c090f75dd87fa2eada42eca1e5" - integrity sha512-zCpKHioQ9KgZToFp5Wvz6zaWbMzYQ2LJHQ+QixDKq52KKrF65ueu6Af4hLlLWHjX1Wf/0G5kSJM9PySW9IrvHA== - -"@rollup/rollup-darwin-x64@4.32.1": - version "4.32.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.32.1.tgz#c04c9e173244d44de50278f3f893fb68d987fcc6" - integrity sha512-sFvF+t2+TyUo/ZQqUcifrJIgznx58oFZbdHS9TvHq3xhPVL9nOp+yZ6LKrO9GWTP+6DbFtoyLDbjTpR62Mbr3Q== - -"@rollup/rollup-freebsd-arm64@4.32.1": - version "4.32.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.32.1.tgz#3bdf18d4ef32dcfe9b20bba18d7a53a101ed79d9" - integrity sha512-NbOa+7InvMWRcY9RG+B6kKIMD/FsnQPH0MWUvDlQB1iXnF/UcKSudCXZtv4lW+C276g3w5AxPbfry5rSYvyeYA== - -"@rollup/rollup-freebsd-x64@4.32.1": - version "4.32.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.32.1.tgz#35867b15c276f4b4ca8eb226f7dd6df8c64640db" - integrity sha512-JRBRmwvHPXR881j2xjry8HZ86wIPK2CcDw0EXchE1UgU0ubWp9nvlT7cZYKc6bkypBt745b4bglf3+xJ7hXWWw== - -"@rollup/rollup-linux-arm-gnueabihf@4.32.1": - version "4.32.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.32.1.tgz#92c212d1b38c105bd1eb101254722d27d869b1ac" - integrity sha512-PKvszb+9o/vVdUzCCjL0sKHukEQV39tD3fepXxYrHE3sTKrRdCydI7uldRLbjLmDA3TFDmh418XH19NOsDRH8g== - -"@rollup/rollup-linux-arm-musleabihf@4.32.1": - version "4.32.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.32.1.tgz#ebb94d8cd438f23e38caa4a87ca80d4cf5b50fa1" - integrity sha512-9WHEMV6Y89eL606ReYowXuGF1Yb2vwfKWKdD1A5h+OYnPZSJvxbEjxTRKPgi7tkP2DSnW0YLab1ooy+i/FQp/Q== - -"@rollup/rollup-linux-arm64-gnu@4.32.1": - version "4.32.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.32.1.tgz#ce6a5eacbd5fd4bdf7bf27bd818980230bdb9fab" - integrity sha512-tZWc9iEt5fGJ1CL2LRPw8OttkCBDs+D8D3oEM8mH8S1ICZCtFJhD7DZ3XMGM8kpqHvhGUTvNUYVDnmkj4BDXnw== - -"@rollup/rollup-linux-arm64-musl@4.32.1": - version "4.32.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.32.1.tgz#31b4e0a543607e6eb4f982ffb45830919a952a83" - integrity sha512-FTYc2YoTWUsBz5GTTgGkRYYJ5NGJIi/rCY4oK/I8aKowx1ToXeoVVbIE4LGAjsauvlhjfl0MYacxClLld1VrOw== - -"@rollup/rollup-linux-loongarch64-gnu@4.32.1": - version "4.32.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.32.1.tgz#ad7b35f193f1d2e0dc37eba733069b4af5f6498d" - integrity sha512-F51qLdOtpS6P1zJVRzYM0v6MrBNypyPEN1GfMiz0gPu9jN8ScGaEFIZQwteSsGKg799oR5EaP7+B2jHgL+d+Kw== - -"@rollup/rollup-linux-powerpc64le-gnu@4.32.1": - version "4.32.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.32.1.tgz#b713a55d7eac4d2c8a0109c3daca6ea85fc178b3" - integrity sha512-wO0WkfSppfX4YFm5KhdCCpnpGbtgQNj/tgvYzrVYFKDpven8w2N6Gg5nB6w+wAMO3AIfSTWeTjfVe+uZ23zAlg== - -"@rollup/rollup-linux-riscv64-gnu@4.32.1": - version "4.32.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.32.1.tgz#bea4fd8ad190e9bc1d11efafa2efc9d121f50b96" - integrity sha512-iWswS9cIXfJO1MFYtI/4jjlrGb/V58oMu4dYJIKnR5UIwbkzR0PJ09O0PDZT0oJ3LYWXBSWahNf/Mjo6i1E5/g== - -"@rollup/rollup-linux-s390x-gnu@4.32.1": - version "4.32.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.32.1.tgz#cc98c32733ca472635759c78a79b5f8d887b2a6a" - integrity sha512-RKt8NI9tebzmEthMnfVgG3i/XeECkMPS+ibVZjZ6mNekpbbUmkNWuIN2yHsb/mBPyZke4nlI4YqIdFPgKuoyQQ== - -"@rollup/rollup-linux-x64-gnu@4.32.1": - version "4.32.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.32.1.tgz#5c009c264a7ce0e19b40890ca9945440bb420691" - integrity sha512-WQFLZ9c42ECqEjwg/GHHsouij3pzLXkFdz0UxHa/0OM12LzvX7DzedlY0SIEly2v18YZLRhCRoHZDxbBSWoGYg== - -"@rollup/rollup-linux-x64-musl@4.32.1": - version "4.32.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.32.1.tgz#73d2f44070c23e031262b601927fdb4eec253bc1" - integrity sha512-BLoiyHDOWoS3uccNSADMza6V6vCNiphi94tQlVIL5de+r6r/CCQuNnerf+1g2mnk2b6edp5dk0nhdZ7aEjOBsA== - -"@rollup/rollup-win32-arm64-msvc@4.32.1": - version "4.32.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.32.1.tgz#fa106304818078f9d3fc9005642ad99f596eed2d" - integrity sha512-w2l3UnlgYTNNU+Z6wOR8YdaioqfEnwPjIsJ66KxKAf0p+AuL2FHeTX6qvM+p/Ue3XPBVNyVSfCrfZiQh7vZHLQ== - -"@rollup/rollup-win32-ia32-msvc@4.32.1": - version "4.32.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.32.1.tgz#a1a394c705a0d2a974a124c4b471fc1cf851a56f" - integrity sha512-Am9H+TGLomPGkBnaPWie4F3x+yQ2rr4Bk2jpwy+iV+Gel9jLAu/KqT8k3X4jxFPW6Zf8OMnehyutsd+eHoq1WQ== - -"@rollup/rollup-win32-x64-msvc@4.32.1": - version "4.32.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.32.1.tgz#512db088df67afee8f07183cdf8c9eecd64f6ef8" - integrity sha512-ar80GhdZb4DgmW3myIS9nRFYcpJRSME8iqWgzH2i44u+IdrzmiXVxeFnExQ5v4JYUSpg94bWjevMG8JHf1Da5Q== +"@rollup/rollup-android-arm-eabi@4.34.7": + version "4.34.7" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.34.7.tgz#e554185b1afa5509a7a4040d15ec0c3b4435ded1" + integrity sha512-l6CtzHYo8D2TQ3J7qJNpp3Q1Iye56ssIAtqbM2H8axxCEEwvN7o8Ze9PuIapbxFL3OHrJU2JBX6FIIVnP/rYyw== + +"@rollup/rollup-android-arm64@4.34.7": + version "4.34.7" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.34.7.tgz#b1ee64bb413b2feba39803b0a1bebf2a9f3d70e1" + integrity sha512-KvyJpFUueUnSp53zhAa293QBYqwm94TgYTIfXyOTtidhm5V0LbLCJQRGkQClYiX3FXDQGSvPxOTD/6rPStMMDg== + +"@rollup/rollup-darwin-arm64@4.34.7": + version "4.34.7" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.34.7.tgz#bfdce3e07a345dd1bd628f3b796050f39629d7f0" + integrity sha512-jq87CjmgL9YIKvs8ybtIC98s/M3HdbqXhllcy9EdLV0yMg1DpxES2gr65nNy7ObNo/vZ/MrOTxt0bE5LinL6mA== + +"@rollup/rollup-darwin-x64@4.34.7": + version "4.34.7" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.34.7.tgz#781a94a537c57bdf0a500e47a25ab5985e5e8dff" + integrity sha512-rSI/m8OxBjsdnMMg0WEetu/w+LhLAcCDEiL66lmMX4R3oaml3eXz3Dxfvrxs1FbzPbJMaItQiksyMfv1hoIxnA== + +"@rollup/rollup-freebsd-arm64@4.34.7": + version "4.34.7" + resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.34.7.tgz#7a028357cbd12c5869c446ad18177c89f3405102" + integrity sha512-oIoJRy3ZrdsXpFuWDtzsOOa/E/RbRWXVokpVrNnkS7npz8GEG++E1gYbzhYxhxHbO2om1T26BZjVmdIoyN2WtA== + +"@rollup/rollup-freebsd-x64@4.34.7": + version "4.34.7" + resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.34.7.tgz#f24836a6371cccc4408db74f0fd986dacf098950" + integrity sha512-X++QSLm4NZfZ3VXGVwyHdRf58IBbCu9ammgJxuWZYLX0du6kZvdNqPwrjvDfwmi6wFdvfZ/s6K7ia0E5kI7m8Q== + +"@rollup/rollup-linux-arm-gnueabihf@4.34.7": + version "4.34.7" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.34.7.tgz#95f27e96f0eb9b9ae9887739a8b6dffc90c1237f" + integrity sha512-Z0TzhrsNqukTz3ISzrvyshQpFnFRfLunYiXxlCRvcrb3nvC5rVKI+ZXPFG/Aa4jhQa1gHgH3A0exHaRRN4VmdQ== + +"@rollup/rollup-linux-arm-musleabihf@4.34.7": + version "4.34.7" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.34.7.tgz#677b34fba9d070877736c3fe8b02aacb5e142d97" + integrity sha512-nkznpyXekFAbvFBKBy4nNppSgneB1wwG1yx/hujN3wRnhnkrYVugMTCBXED4+Ni6thoWfQuHNYbFjgGH0MBXtw== + +"@rollup/rollup-linux-arm64-gnu@4.34.7": + version "4.34.7" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.34.7.tgz#32d3d19dedde54e91574a098f22ea43a09cf63dd" + integrity sha512-KCjlUkcKs6PjOcxolqrXglBDcfCuUCTVlX5BgzgoJHw+1rWH1MCkETLkLe5iLLS9dP5gKC7mp3y6x8c1oGBUtA== + +"@rollup/rollup-linux-arm64-musl@4.34.7": + version "4.34.7" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.34.7.tgz#a58dff44a18696df65ed8c0ad68a2945cf900484" + integrity sha512-uFLJFz6+utmpbR313TTx+NpPuAXbPz4BhTQzgaP0tozlLnGnQ6rCo6tLwaSa6b7l6gRErjLicXQ1iPiXzYotjw== + +"@rollup/rollup-linux-loongarch64-gnu@4.34.7": + version "4.34.7" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.34.7.tgz#a7488ab078233111e8aeb370d1ecf107ec7e1716" + integrity sha512-ws8pc68UcJJqCpneDFepnwlsMUFoWvPbWXT/XUrJ7rWUL9vLoIN3GAasgG+nCvq8xrE3pIrd+qLX/jotcLy0Qw== + +"@rollup/rollup-linux-powerpc64le-gnu@4.34.7": + version "4.34.7" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.34.7.tgz#e9b9c0d6bd248a92b2d6ec01ebf99c62ae1f2e9a" + integrity sha512-vrDk9JDa/BFkxcS2PbWpr0C/LiiSLxFbNOBgfbW6P8TBe9PPHx9Wqbvx2xgNi1TOAyQHQJ7RZFqBiEohm79r0w== + +"@rollup/rollup-linux-riscv64-gnu@4.34.7": + version "4.34.7" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.34.7.tgz#0df84ce2bea48ee686fb55060d76ab47aff45c4c" + integrity sha512-rB+ejFyjtmSo+g/a4eovDD1lHWHVqizN8P0Hm0RElkINpS0XOdpaXloqM4FBkF9ZWEzg6bezymbpLmeMldfLTw== + +"@rollup/rollup-linux-s390x-gnu@4.34.7": + version "4.34.7" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.34.7.tgz#73df374c57d036856e33dbd2715138922e91e452" + integrity sha512-nNXNjo4As6dNqRn7OrsnHzwTgtypfRA3u3AKr0B3sOOo+HkedIbn8ZtFnB+4XyKJojIfqDKmbIzO1QydQ8c+Pw== + +"@rollup/rollup-linux-x64-gnu@4.34.7": + version "4.34.7" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.34.7.tgz#f27af0b55f0cdd84e182e6cd44a6d03da0458149" + integrity sha512-9kPVf9ahnpOMSGlCxXGv980wXD0zRR3wyk8+33/MXQIpQEOpaNe7dEHm5LMfyRZRNt9lMEQuH0jUKj15MkM7QA== + +"@rollup/rollup-linux-x64-musl@4.34.7": + version "4.34.7" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.34.7.tgz#c7981ad5cfb8c3cd5d643d33ca54e4d2802b9201" + integrity sha512-7wJPXRWTTPtTFDFezA8sle/1sdgxDjuMoRXEKtx97ViRxGGkVQYovem+Q8Pr/2HxiHp74SSRG+o6R0Yq0shPwQ== + +"@rollup/rollup-win32-arm64-msvc@4.34.7": + version "4.34.7" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.34.7.tgz#06cedc0ef3cbf1cbd8abcf587090712e40ae6941" + integrity sha512-MN7aaBC7mAjsiMEZcsJvwNsQVNZShgES/9SzWp1HC9Yjqb5OpexYnRjF7RmE4itbeesHMYYQiAtUAQaSKs2Rfw== + +"@rollup/rollup-win32-ia32-msvc@4.34.7": + version "4.34.7" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.34.7.tgz#90b39b977b14961a769be6ea61238e7fc668dd4d" + integrity sha512-aeawEKYswsFu1LhDM9RIgToobquzdtSc4jSVqHV8uApz4FVvhFl/mKh92wc8WpFc6aYCothV/03UjY6y7yLgbg== + +"@rollup/rollup-win32-x64-msvc@4.34.7": + version "4.34.7" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.34.7.tgz#6531d61e7141091eaab0461ee8e0380c10e4ca57" + integrity sha512-4ZedScpxxIrVO7otcZ8kCX1mZArtH2Wfj3uFCxRJ9NO80gg1XV0U/b2f/MKaGwj2X3QopHfoWiDQ917FRpwY3w== "@skeletonlabs/skeleton@^2.10.3": version "2.11.0" @@ -1050,17 +1057,17 @@ "@smithy/util-middleware" "^4.0.1" tslib "^2.6.2" -"@smithy/core@^3.1.1", "@smithy/core@^3.1.2": - version "3.1.2" - resolved "https://registry.yarnpkg.com/@smithy/core/-/core-3.1.2.tgz#f5b4c89bf054b717781d71c66b4fb594e06cbb62" - integrity sha512-htwQXkbdF13uwwDevz9BEzL5ABK+1sJpVQXywwGSH973AVOvisHNfpcB8A8761G6XgHoS2kHPqc9DqHJ2gp+/Q== +"@smithy/core@^3.1.3", "@smithy/core@^3.1.4": + version "3.1.4" + resolved "https://registry.yarnpkg.com/@smithy/core/-/core-3.1.4.tgz#47ce2b1b363ba92be2b47551bdd30969c6435bd2" + integrity sha512-wFExFGK+7r2wYriOqe7RRIBNpvxwiS95ih09+GSLRBdoyK/O1uZA7K7pKesj5CBvwJuSBeXwLyR88WwIAY+DGA== dependencies: "@smithy/middleware-serde" "^4.0.2" "@smithy/protocol-http" "^5.0.1" "@smithy/types" "^4.1.0" "@smithy/util-body-length-browser" "^4.0.0" "@smithy/util-middleware" "^4.0.1" - "@smithy/util-stream" "^4.0.2" + "@smithy/util-stream" "^4.1.1" "@smithy/util-utf8" "^4.0.0" tslib "^2.6.2" @@ -1200,12 +1207,12 @@ "@smithy/types" "^4.1.0" tslib "^2.6.2" -"@smithy/middleware-endpoint@^4.0.2", "@smithy/middleware-endpoint@^4.0.3": - version "4.0.3" - resolved "https://registry.yarnpkg.com/@smithy/middleware-endpoint/-/middleware-endpoint-4.0.3.tgz#74b64fb2473ae35649a8d22d41708bc5d8d99df2" - integrity sha512-YdbmWhQF5kIxZjWqPIgboVfi8i5XgiYMM7GGKFMTvBei4XjNQfNv8sukT50ITvgnWKKKpOtp0C0h7qixLgb77Q== +"@smithy/middleware-endpoint@^4.0.4", "@smithy/middleware-endpoint@^4.0.5": + version "4.0.5" + resolved "https://registry.yarnpkg.com/@smithy/middleware-endpoint/-/middleware-endpoint-4.0.5.tgz#b3d58c0a44b5dcccb1da34267b6f651bc1ba7642" + integrity sha512-cPzGZV7qStHwboFrm6GfrzQE+YDiCzWcTh4+7wKrP/ZQ4gkw+r7qDjV8GjM4N0UYsuUyLfpzLGg5hxsYTU11WA== dependencies: - "@smithy/core" "^3.1.2" + "@smithy/core" "^3.1.4" "@smithy/middleware-serde" "^4.0.2" "@smithy/node-config-provider" "^4.0.1" "@smithy/shared-ini-file-loader" "^4.0.1" @@ -1214,22 +1221,22 @@ "@smithy/util-middleware" "^4.0.1" tslib "^2.6.2" -"@smithy/middleware-retry@^4.0.3": - version "4.0.4" - resolved "https://registry.yarnpkg.com/@smithy/middleware-retry/-/middleware-retry-4.0.4.tgz#95e55a1b163ff06264f20b4dbbcbd915c8028f60" - integrity sha512-wmxyUBGHaYUqul0wZiset4M39SMtDBOtUr2KpDuftKNN74Do9Y36Go6Eqzj9tL0mIPpr31ulB5UUtxcsCeGXsQ== +"@smithy/middleware-retry@^4.0.5": + version "4.0.6" + resolved "https://registry.yarnpkg.com/@smithy/middleware-retry/-/middleware-retry-4.0.6.tgz#07f8259dc05835e317aaf37af7e79bae349eabb4" + integrity sha512-s8QzuOQnbdvRymD9Gt9c9zMq10wUQAHQ3z72uirrBHCwZcLTrL5iCOuVTMdka2IXOYhQE890WD5t6G24+F+Qcg== dependencies: "@smithy/node-config-provider" "^4.0.1" "@smithy/protocol-http" "^5.0.1" "@smithy/service-error-classification" "^4.0.1" - "@smithy/smithy-client" "^4.1.3" + "@smithy/smithy-client" "^4.1.5" "@smithy/types" "^4.1.0" "@smithy/util-middleware" "^4.0.1" "@smithy/util-retry" "^4.0.1" tslib "^2.6.2" uuid "^9.0.1" -"@smithy/middleware-serde@^4.0.1", "@smithy/middleware-serde@^4.0.2": +"@smithy/middleware-serde@^4.0.2": version "4.0.2" resolved "https://registry.yarnpkg.com/@smithy/middleware-serde/-/middleware-serde-4.0.2.tgz#f792d72f6ad8fa6b172e3f19c6fe1932a856a56d" integrity sha512-Sdr5lOagCn5tt+zKsaW+U2/iwr6bI9p08wOkCp6/eL6iMbgdtc2R5Ety66rf87PeohR0ExI84Txz9GYv5ou3iQ== @@ -1328,17 +1335,17 @@ "@smithy/util-utf8" "^4.0.0" tslib "^2.6.2" -"@smithy/smithy-client@^4.1.2", "@smithy/smithy-client@^4.1.3": - version "4.1.3" - resolved "https://registry.yarnpkg.com/@smithy/smithy-client/-/smithy-client-4.1.3.tgz#2c8f9aff3377e7655cebe84239da6be277ba8554" - integrity sha512-A2Hz85pu8BJJaYFdX8yb1yocqigyqBzn+OVaVgm+Kwi/DkN8vhN2kbDVEfADo6jXf5hPKquMLGA3UINA64UZ7A== +"@smithy/smithy-client@^4.1.4", "@smithy/smithy-client@^4.1.5": + version "4.1.5" + resolved "https://registry.yarnpkg.com/@smithy/smithy-client/-/smithy-client-4.1.5.tgz#f4641ad6771f5e4f6de9e573b9deb1787e43ef71" + integrity sha512-DMXYoYeL4QkElr216n1yodTFeATbfb4jwYM9gKn71Rw/FNA1/Sm36tkTSCsZEs7mgpG3OINmkxL9vgVFzyGPaw== dependencies: - "@smithy/core" "^3.1.2" - "@smithy/middleware-endpoint" "^4.0.3" + "@smithy/core" "^3.1.4" + "@smithy/middleware-endpoint" "^4.0.5" "@smithy/middleware-stack" "^4.0.1" "@smithy/protocol-http" "^5.0.1" "@smithy/types" "^4.1.0" - "@smithy/util-stream" "^4.0.2" + "@smithy/util-stream" "^4.1.1" tslib "^2.6.2" "@smithy/types@^4.1.0": @@ -1403,27 +1410,27 @@ dependencies: tslib "^2.6.2" -"@smithy/util-defaults-mode-browser@^4.0.3": - version "4.0.4" - resolved "https://registry.yarnpkg.com/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-4.0.4.tgz#6fa7ba64a80a77f27b9b5c6972918904578b8d5b" - integrity sha512-Ej1bV5sbrIfH++KnWxjjzFNq9nyP3RIUq2c9Iqq7SmMO/idUR24sqvKH2LUQFTSPy/K7G4sB2m8n7YYlEAfZaw== +"@smithy/util-defaults-mode-browser@^4.0.5": + version "4.0.6" + resolved "https://registry.yarnpkg.com/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-4.0.6.tgz#4ee93d8e32c8211709437aa29c5fe616895e7c51" + integrity sha512-N8+VCt+piupH1A7DgSVDNrVHqRLz8r6DvBkpS7EWHiIxsUk4jqGuQLjqC/gnCzmwGkVBdNruHoYAzzaSQ8e80w== dependencies: "@smithy/property-provider" "^4.0.1" - "@smithy/smithy-client" "^4.1.3" + "@smithy/smithy-client" "^4.1.5" "@smithy/types" "^4.1.0" bowser "^2.11.0" tslib "^2.6.2" -"@smithy/util-defaults-mode-node@^4.0.3": - version "4.0.4" - resolved "https://registry.yarnpkg.com/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-4.0.4.tgz#5470fdc96672cee5199620b576d7025de3b17333" - integrity sha512-HE1I7gxa6yP7ZgXPCFfZSDmVmMtY7SHqzFF55gM/GPegzZKaQWZZ+nYn9C2Cc3JltCMyWe63VPR3tSFDEvuGjw== +"@smithy/util-defaults-mode-node@^4.0.5": + version "4.0.6" + resolved "https://registry.yarnpkg.com/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-4.0.6.tgz#213e5b32549beb48aeccbcf99cf56c97db47e70b" + integrity sha512-9zhx1shd1VwSSVvLZB8CM3qQ3RPD3le7A3h/UPuyh/PC7g4OaWDi2xUNzamsVoSmCGtmUBONl56lM2EU6LcH7A== dependencies: "@smithy/config-resolver" "^4.0.1" "@smithy/credential-provider-imds" "^4.0.1" "@smithy/node-config-provider" "^4.0.1" "@smithy/property-provider" "^4.0.1" - "@smithy/smithy-client" "^4.1.3" + "@smithy/smithy-client" "^4.1.5" "@smithy/types" "^4.1.0" tslib "^2.6.2" @@ -1460,10 +1467,10 @@ "@smithy/types" "^4.1.0" tslib "^2.6.2" -"@smithy/util-stream@^4.0.2": - version "4.0.2" - resolved "https://registry.yarnpkg.com/@smithy/util-stream/-/util-stream-4.0.2.tgz#63495d3f7fba9d78748d540921136dc4a8d4c067" - integrity sha512-0eZ4G5fRzIoewtHtwaYyl8g2C+osYOT4KClXgfdNEDAgkbe2TYPqcnw4GAWabqkZCax2ihRGPe9LZnsPdIUIHA== +"@smithy/util-stream@^4.1.0", "@smithy/util-stream@^4.1.1": + version "4.1.1" + resolved "https://registry.yarnpkg.com/@smithy/util-stream/-/util-stream-4.1.1.tgz#d7edec543d65ed335d2fda9aae6a42ee97da4a4e" + integrity sha512-+Xvh8nhy0Wjv1y71rBVyV3eJU3356XsFQNI8dEZVNrQju7Eib8G31GWtO+zMa9kTCGd41Mflu+ZKfmQL/o2XzQ== dependencies: "@smithy/fetch-http-handler" "^5.0.1" "@smithy/node-http-handler" "^4.0.2" @@ -1517,9 +1524,9 @@ rollup "^4.8.0" "@sveltejs/kit@^2.8.3": - version "2.16.1" - resolved "https://registry.yarnpkg.com/@sveltejs/kit/-/kit-2.16.1.tgz#e01691d1122495c25b278f4b55b94e9dbf281a8e" - integrity sha512-2pF5sgGJx9brYZ/9nNDYnh5KX0JguPF14dnvvtf/MqrvlWrDj/e7Rk3LBJPecFLLK1GRs6ZniD24gFPqZm/NFw== + version "2.17.2" + resolved "https://registry.yarnpkg.com/@sveltejs/kit/-/kit-2.17.2.tgz#87c6a1efe42a3f06dd0558e49b79988fec4338bd" + integrity sha512-Vypk02baf7qd3SOB1uUwUC/3Oka+srPo2J0a8YN3EfJypRshDkNx9HzNKjSmhOnGWwT+SSO06+N0mAb8iVTmTQ== dependencies: "@types/cookie" "^0.6.0" cookie "^0.6.0" @@ -1603,9 +1610,9 @@ integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== "@types/node@^22.9.0": - version "22.12.0" - resolved "https://registry.yarnpkg.com/@types/node/-/node-22.12.0.tgz#bf8af3b2af0837b5a62a368756ff2b705ae0048c" - integrity sha512-Fll2FZ1riMjNmlmJOdAyY5pUbkftXslB5DgEzlIuNaiWhXd00FhWxVC/r4yV/4wBb9JfImTu+jiSvXTkJ7F/gA== + version "22.13.4" + resolved "https://registry.yarnpkg.com/@types/node/-/node-22.13.4.tgz#3fe454d77cd4a2d73c214008b3e331bfaaf5038a" + integrity sha512-ywP2X0DYtX3y08eFVx5fNIw7/uIv8hYUKgXoK8oayJlLnKcRfEYCxWMVE1XagUdVtCJlZT1AU4LXEABW+L1Peg== dependencies: undici-types "~6.20.0" @@ -1614,85 +1621,85 @@ resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.20.2.tgz#97d26e00cd4a0423b4af620abecf3e6f442b7975" integrity sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q== -"@typescript-eslint/eslint-plugin@8.22.0": - version "8.22.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.22.0.tgz#63a1b0d24d85a971949f8d71d693019f58d2e861" - integrity sha512-4Uta6REnz/xEJMvwf72wdUnC3rr4jAQf5jnTkeRQ9b6soxLxhDEbS/pfMPoJLDfFPNVRdryqWUIV/2GZzDJFZw== +"@typescript-eslint/eslint-plugin@8.24.0": + version "8.24.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.24.0.tgz#574a95d67660a1e4544ae131d672867a5b40abb3" + integrity sha512-aFcXEJJCI4gUdXgoo/j9udUYIHgF23MFkg09LFz2dzEmU0+1Plk4rQWv/IYKvPHAtlkkGoB3m5e6oUp+JPsNaQ== dependencies: "@eslint-community/regexpp" "^4.10.0" - "@typescript-eslint/scope-manager" "8.22.0" - "@typescript-eslint/type-utils" "8.22.0" - "@typescript-eslint/utils" "8.22.0" - "@typescript-eslint/visitor-keys" "8.22.0" + "@typescript-eslint/scope-manager" "8.24.0" + "@typescript-eslint/type-utils" "8.24.0" + "@typescript-eslint/utils" "8.24.0" + "@typescript-eslint/visitor-keys" "8.24.0" graphemer "^1.4.0" ignore "^5.3.1" natural-compare "^1.4.0" - ts-api-utils "^2.0.0" + ts-api-utils "^2.0.1" -"@typescript-eslint/parser@8.22.0": - version "8.22.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.22.0.tgz#f21c5db24271f182ebbb4ba8c7ad3eb76e5f5f3a" - integrity sha512-MqtmbdNEdoNxTPzpWiWnqNac54h8JDAmkWtJExBVVnSrSmi9z+sZUt0LfKqk9rjqmKOIeRhO4fHHJ1nQIjduIQ== +"@typescript-eslint/parser@8.24.0": + version "8.24.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.24.0.tgz#bba837f9ee125b78f459ad947ff9b61be8139085" + integrity sha512-MFDaO9CYiard9j9VepMNa9MTcqVvSny2N4hkY6roquzj8pdCBRENhErrteaQuu7Yjn1ppk0v1/ZF9CG3KIlrTA== dependencies: - "@typescript-eslint/scope-manager" "8.22.0" - "@typescript-eslint/types" "8.22.0" - "@typescript-eslint/typescript-estree" "8.22.0" - "@typescript-eslint/visitor-keys" "8.22.0" + "@typescript-eslint/scope-manager" "8.24.0" + "@typescript-eslint/types" "8.24.0" + "@typescript-eslint/typescript-estree" "8.24.0" + "@typescript-eslint/visitor-keys" "8.24.0" debug "^4.3.4" -"@typescript-eslint/scope-manager@8.22.0": - version "8.22.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.22.0.tgz#e85836ddeb8eae715f870628bcc32fe96aaf4d0e" - integrity sha512-/lwVV0UYgkj7wPSw0o8URy6YI64QmcOdwHuGuxWIYznO6d45ER0wXUbksr9pYdViAofpUCNJx/tAzNukgvaaiQ== +"@typescript-eslint/scope-manager@8.24.0": + version "8.24.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.24.0.tgz#2e34b3eb2ce768f2ffb109474174ced5417002b1" + integrity sha512-HZIX0UByphEtdVBKaQBgTDdn9z16l4aTUz8e8zPQnyxwHBtf5vtl1L+OhH+m1FGV9DrRmoDuYKqzVrvWDcDozw== dependencies: - "@typescript-eslint/types" "8.22.0" - "@typescript-eslint/visitor-keys" "8.22.0" + "@typescript-eslint/types" "8.24.0" + "@typescript-eslint/visitor-keys" "8.24.0" -"@typescript-eslint/type-utils@8.22.0": - version "8.22.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.22.0.tgz#cd9f23c23f021357ef0baa3490d4d96edcc97509" - integrity sha512-NzE3aB62fDEaGjaAYZE4LH7I1MUwHooQ98Byq0G0y3kkibPJQIXVUspzlFOmOfHhiDLwKzMlWxaNv+/qcZurJA== +"@typescript-eslint/type-utils@8.24.0": + version "8.24.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.24.0.tgz#6ee3ec4db06f9e5e7b01ca6c2b5dd5843a9fd1e8" + integrity sha512-8fitJudrnY8aq0F1wMiPM1UUgiXQRJ5i8tFjq9kGfRajU+dbPyOuHbl0qRopLEidy0MwqgTHDt6CnSeXanNIwA== dependencies: - "@typescript-eslint/typescript-estree" "8.22.0" - "@typescript-eslint/utils" "8.22.0" + "@typescript-eslint/typescript-estree" "8.24.0" + "@typescript-eslint/utils" "8.24.0" debug "^4.3.4" - ts-api-utils "^2.0.0" + ts-api-utils "^2.0.1" -"@typescript-eslint/types@8.22.0": - version "8.22.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.22.0.tgz#d9dec7116479ad03aeb6c8ac9c5223c4c79cf360" - integrity sha512-0S4M4baNzp612zwpD4YOieP3VowOARgK2EkN/GBn95hpyF8E2fbMT55sRHWBq+Huaqk3b3XK+rxxlM8sPgGM6A== +"@typescript-eslint/types@8.24.0": + version "8.24.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.24.0.tgz#694e7fb18d70506c317b816de9521300b0f72c8e" + integrity sha512-VacJCBTyje7HGAw7xp11q439A+zeGG0p0/p2zsZwpnMzjPB5WteaWqt4g2iysgGFafrqvyLWqq6ZPZAOCoefCw== -"@typescript-eslint/typescript-estree@8.22.0": - version "8.22.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.22.0.tgz#c188c3e19529d5b3145577c0bd967e2683b114df" - integrity sha512-SJX99NAS2ugGOzpyhMza/tX+zDwjvwAtQFLsBo3GQxiGcvaKlqGBkmZ+Y1IdiSi9h4Q0Lr5ey+Cp9CGWNY/F/w== +"@typescript-eslint/typescript-estree@8.24.0": + version "8.24.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.24.0.tgz#0487349be174097bb329a58273100a9629e03c6c" + integrity sha512-ITjYcP0+8kbsvT9bysygfIfb+hBj6koDsu37JZG7xrCiy3fPJyNmfVtaGsgTUSEuTzcvME5YI5uyL5LD1EV5ZQ== dependencies: - "@typescript-eslint/types" "8.22.0" - "@typescript-eslint/visitor-keys" "8.22.0" + "@typescript-eslint/types" "8.24.0" + "@typescript-eslint/visitor-keys" "8.24.0" debug "^4.3.4" fast-glob "^3.3.2" is-glob "^4.0.3" minimatch "^9.0.4" semver "^7.6.0" - ts-api-utils "^2.0.0" + ts-api-utils "^2.0.1" -"@typescript-eslint/utils@8.22.0": - version "8.22.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.22.0.tgz#c8cc4e52a9c711af8a741a82dc5d7242b7a8dd44" - integrity sha512-T8oc1MbF8L+Bk2msAvCUzjxVB2Z2f+vXYfcucE2wOmYs7ZUwco5Ep0fYZw8quNwOiw9K8GYVL+Kgc2pETNTLOg== +"@typescript-eslint/utils@8.24.0": + version "8.24.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.24.0.tgz#21cb1195ae79230af825bfeed59574f5cb70a749" + integrity sha512-07rLuUBElvvEb1ICnafYWr4hk8/U7X9RDCOqd9JcAMtjh/9oRmcfN4yGzbPVirgMR0+HLVHehmu19CWeh7fsmQ== dependencies: "@eslint-community/eslint-utils" "^4.4.0" - "@typescript-eslint/scope-manager" "8.22.0" - "@typescript-eslint/types" "8.22.0" - "@typescript-eslint/typescript-estree" "8.22.0" + "@typescript-eslint/scope-manager" "8.24.0" + "@typescript-eslint/types" "8.24.0" + "@typescript-eslint/typescript-estree" "8.24.0" -"@typescript-eslint/visitor-keys@8.22.0": - version "8.22.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.22.0.tgz#02cc005014c372033eb9171e2275b76cba722a3f" - integrity sha512-AWpYAXnUgvLNabGTy3uBylkgZoosva/miNd1I8Bz3SjotmQPbVqhO4Cczo8AsZ44XVErEBPr/CRSgaj8sG7g0w== +"@typescript-eslint/visitor-keys@8.24.0": + version "8.24.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.24.0.tgz#36ecf0b9b1d819ad88a3bd4157ab7d594cb797c9" + integrity sha512-kArLq83QxGLbuHrTMoOEWO+l2MwsNS2TGISEdx8xgqpkbytB07XmlQyQdNDrCc1ecSqx0cnmhGvpX+VBwqqSkg== dependencies: - "@typescript-eslint/types" "8.22.0" + "@typescript-eslint/types" "8.24.0" eslint-visitor-keys "^4.2.0" acorn-jsx@^5.3.2: @@ -1845,9 +1852,9 @@ camelcase-css@^2.0.1: integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA== caniuse-lite@^1.0.30001646, caniuse-lite@^1.0.30001688: - version "1.0.30001696" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001696.tgz#00c30a2fc11e3c98c25e5125418752af3ae2f49f" - integrity sha512-pDCPkvzfa39ehJtJ+OwGT/2yvT2SbjfHhiIW2LWOAcMQ7BzwxT/XuyUp4OTOd0XFWA6BKw0JalnBHgSi5DGJBQ== + version "1.0.30001699" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001699.tgz#a102cf330d153bf8c92bfb5be3cd44c0a89c8c12" + integrity sha512-b+uH5BakXZ9Do9iK+CkDmctUSEqZl+SP056vc5usa0PL+ev5OHw003rZXcnjNDv3L8P5j6rwT6C0BPKSikW08w== chalk@^4.0.0: version "4.1.2" @@ -1968,9 +1975,9 @@ eastasianwidth@^0.2.0: integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== electron-to-chromium@^1.5.73: - version "1.5.89" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.89.tgz#d9d60baa576e0ab3ea721592f3345a83a37251ec" - integrity sha512-okLMJSmbI+XHr8aG+wCK+VPH+d38sHMED6/q1CTsCNkqfdOZL3k2ThWnh44HL6bJKj9cabPCSVLDv9ynsIm8qg== + version "1.5.100" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.100.tgz#c99b7cfe49ec72c5e22237f036bb8b1d8b7f0621" + integrity sha512-u1z9VuzDXV86X2r3vAns0/5ojfXBue9o0+JDUDBKYqGLjxLkSqsSUoPU/6kW0gx76V44frHaf6Zo+QF74TQCMg== emoji-regex@^8.0.0: version "8.0.0" @@ -2077,16 +2084,16 @@ eslint-visitor-keys@^4.2.0: integrity sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw== eslint@^9.7.0: - version "9.19.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.19.0.tgz#ffa1d265fc4205e0f8464330d35f09e1d548b1bf" - integrity sha512-ug92j0LepKlbbEv6hD911THhoRHmbdXt2gX+VDABAW/Ir7D3nqKdv5Pf5vtlyY6HQMTEP2skXY43ueqTCWssEA== + version "9.20.1" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.20.1.tgz#923924c078f5226832449bac86662dd7e53c91d6" + integrity sha512-m1mM33o6dBUjxl2qb6wv6nGNwCAsns1eKtaQ4l/NPHeTvhiUPbtdfMyktxN4B3fgHIgsYh1VT3V9txblpQHq+g== dependencies: "@eslint-community/eslint-utils" "^4.2.0" "@eslint-community/regexpp" "^4.12.1" "@eslint/config-array" "^0.19.0" - "@eslint/core" "^0.10.0" + "@eslint/core" "^0.11.0" "@eslint/eslintrc" "^3.2.0" - "@eslint/js" "9.19.0" + "@eslint/js" "9.20.0" "@eslint/plugin-kit" "^0.2.5" "@humanfs/node" "^0.16.6" "@humanwhocodes/module-importer" "^1.0.1" @@ -2152,9 +2159,9 @@ esquery@^1.5.0: estraverse "^5.1.0" esrap@^1.4.3: - version "1.4.3" - resolved "https://registry.yarnpkg.com/esrap/-/esrap-1.4.3.tgz#456ed3c97cf0e6b58b952d351c7c78fe27116576" - integrity sha512-Xddc1RsoFJ4z9nR7W7BFaEPIp4UXoeQ0+077UdWLxbafMQFyU79sQJMk7kxNgRwQ9/aVgaKacCHC2pUACGwmYw== + version "1.4.4" + resolved "https://registry.yarnpkg.com/esrap/-/esrap-1.4.4.tgz#0cb6d2a694f5dc0a8f62f79d585a55c29ee2e572" + integrity sha512-tDN6xP/r/b3WmdpWm7LybrD252hY52IokcycPnO+WHfhFF0+n5AWtcLLK7VNV6m0uYgVRhGVs8OkZwRyfC7HzQ== dependencies: "@jridgewell/sourcemap-codec" "^1.4.15" @@ -2214,9 +2221,9 @@ fast-xml-parser@4.4.1: strnum "^1.0.5" fastq@^1.6.0: - version "1.18.0" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.18.0.tgz#d631d7e25faffea81887fe5ea8c9010e1b36fee0" - integrity sha512-QKHXPW0hD8g4UET03SdOdunzSouc9N4AuHdsX8XNcTsuz+yYFILVNIX4l9yHABMhiEI9Db0JTTIpu0wB+Y1QQw== + version "1.19.0" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.19.0.tgz#a82c6b7c2bb4e44766d865f07997785fecfdcb89" + integrity sha512-7SFSRCNjBQIZH/xZR3iy5iQYR8aGBE0h3VG6/cwlbrpdciNYBMotQav8c1XI3HjHH+NikUpP53nPdlZSdWmFzA== dependencies: reusify "^1.0.4" @@ -2336,9 +2343,9 @@ globals@^14.0.0: integrity sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ== globals@^15.0.0: - version "15.14.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-15.14.0.tgz#b8fd3a8941ff3b4d38f3319d433b61bbb482e73f" - integrity sha512-OkToC372DtlQeje9/zHIo5CT8lRP/FUgEOKBEhU4e0abL7J7CD24fD9ohiLN5hagG/kWCYj4K5oaxxtj2Z0Dig== + version "15.15.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-15.15.0.tgz#7c4761299d41c32b075715a4ce1ede7897ff72a8" + integrity sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg== graphemer@^1.4.0: version "1.4.0" @@ -2368,9 +2375,9 @@ ignore@^5.2.0, ignore@^5.3.1: integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g== import-fresh@^3.2.1: - version "3.3.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" - integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== + version "3.3.1" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.1.tgz#9cecb56503c0ada1f2741dbbd6546e4b13b57ccf" + integrity sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ== dependencies: parent-module "^1.0.0" resolve-from "^4.0.0" @@ -2840,9 +2847,9 @@ postcss-value-parser@^4.0.0, postcss-value-parser@^4.2.0: integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== postcss@^8.4.38, postcss@^8.4.39, postcss@^8.4.43, postcss@^8.4.47: - version "8.5.1" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.1.tgz#e2272a1f8a807fafa413218245630b5db10a3214" - integrity sha512-6oz2beyjc5VMn/KV1pPw8fliQkhBXrVn1Z3TVyqZxU8kZpzEKhBdmCFqI6ZbmGtamQvQGuU1sgPTk8ZrXDD7jQ== + version "8.5.2" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.2.tgz#e7b99cb9d2ec3e8dd424002e7c16517cb2b846bd" + integrity sha512-MjOadfU3Ys9KYoX0AdkBlFEF1Vx37uCCeN4ZHnmwm9FfpbsGWMZeBLMmmpY+6Ocqod7mkdZ0DT31OlbsFrLlkA== dependencies: nanoid "^3.3.8" picocolors "^1.1.1" @@ -2864,9 +2871,9 @@ prettier-plugin-tailwindcss@^0.6.5: integrity sha512-YxaYSIvZPAqhrrEpRtonnrXdghZg1irNg4qrjboCXrpybLWVs55cW2N3juhspVJiO0JBvYJT8SYsJpc8OQSnsA== prettier@^3.3.2: - version "3.4.2" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.4.2.tgz#a5ce1fb522a588bf2b78ca44c6e6fe5aa5a2b13f" - integrity sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ== + version "3.5.1" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.5.1.tgz#22fac9d0b18c0b92055ac8fb619ac1c7bef02fb7" + integrity sha512-hPpFQvHwL3Qv5AdRvBFMhnKo4tYxp0ReXiPn2bxkiohEX6mBeBwEpBSQTkD458RaaDKQMYSp4hX4UtfUTA5wDw== punycode@^2.1.0: version "2.3.1" @@ -2886,9 +2893,9 @@ read-cache@^1.0.0: pify "^2.3.0" readdirp@^4.0.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-4.1.1.tgz#bd115327129672dc47f87408f05df9bd9ca3ef55" - integrity sha512-h80JrZu/MHUZCyHu5ciuoI0+WxsCxzxJTILn6Fs8rxSnFPh+UVHYfeIxK1nVGugMqkfC4vJcBOYbkfkwYK0+gw== + version "4.1.2" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-4.1.2.tgz#eb85801435fbf2a7ee58f19e0921b068fc69948d" + integrity sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg== readdirp@~3.6.0: version "3.6.0" @@ -2917,31 +2924,31 @@ reusify@^1.0.4: integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== rollup@^4.20.0, rollup@^4.8.0: - version "4.32.1" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.32.1.tgz#95309604d92c3d21cbf06c3ee46a098209ce13a4" - integrity sha512-z+aeEsOeEa3mEbS1Tjl6sAZ8NE3+AalQz1RJGj81M+fizusbdDMoEJwdJNHfaB40Scr4qNu+welOfes7maKonA== + version "4.34.7" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.34.7.tgz#e00d8550688a616a3481c6446bb688d4c753ba8f" + integrity sha512-8qhyN0oZ4x0H6wmBgfKxJtxM7qS98YJ0k0kNh5ECVtuchIJ7z9IVVvzpmtQyT10PXKMtBxYr1wQ5Apg8RS8kXQ== dependencies: "@types/estree" "1.0.6" optionalDependencies: - "@rollup/rollup-android-arm-eabi" "4.32.1" - "@rollup/rollup-android-arm64" "4.32.1" - "@rollup/rollup-darwin-arm64" "4.32.1" - "@rollup/rollup-darwin-x64" "4.32.1" - "@rollup/rollup-freebsd-arm64" "4.32.1" - "@rollup/rollup-freebsd-x64" "4.32.1" - "@rollup/rollup-linux-arm-gnueabihf" "4.32.1" - "@rollup/rollup-linux-arm-musleabihf" "4.32.1" - "@rollup/rollup-linux-arm64-gnu" "4.32.1" - "@rollup/rollup-linux-arm64-musl" "4.32.1" - "@rollup/rollup-linux-loongarch64-gnu" "4.32.1" - "@rollup/rollup-linux-powerpc64le-gnu" "4.32.1" - "@rollup/rollup-linux-riscv64-gnu" "4.32.1" - "@rollup/rollup-linux-s390x-gnu" "4.32.1" - "@rollup/rollup-linux-x64-gnu" "4.32.1" - "@rollup/rollup-linux-x64-musl" "4.32.1" - "@rollup/rollup-win32-arm64-msvc" "4.32.1" - "@rollup/rollup-win32-ia32-msvc" "4.32.1" - "@rollup/rollup-win32-x64-msvc" "4.32.1" + "@rollup/rollup-android-arm-eabi" "4.34.7" + "@rollup/rollup-android-arm64" "4.34.7" + "@rollup/rollup-darwin-arm64" "4.34.7" + "@rollup/rollup-darwin-x64" "4.34.7" + "@rollup/rollup-freebsd-arm64" "4.34.7" + "@rollup/rollup-freebsd-x64" "4.34.7" + "@rollup/rollup-linux-arm-gnueabihf" "4.34.7" + "@rollup/rollup-linux-arm-musleabihf" "4.34.7" + "@rollup/rollup-linux-arm64-gnu" "4.34.7" + "@rollup/rollup-linux-arm64-musl" "4.34.7" + "@rollup/rollup-linux-loongarch64-gnu" "4.34.7" + "@rollup/rollup-linux-powerpc64le-gnu" "4.34.7" + "@rollup/rollup-linux-riscv64-gnu" "4.34.7" + "@rollup/rollup-linux-s390x-gnu" "4.34.7" + "@rollup/rollup-linux-x64-gnu" "4.34.7" + "@rollup/rollup-linux-x64-musl" "4.34.7" + "@rollup/rollup-win32-arm64-msvc" "4.34.7" + "@rollup/rollup-win32-ia32-msvc" "4.34.7" + "@rollup/rollup-win32-x64-msvc" "4.34.7" fsevents "~2.3.2" run-parallel@^1.1.9: @@ -2959,9 +2966,9 @@ sade@^1.7.4, sade@^1.8.1: mri "^1.1.0" semver@^7.5.4, semver@^7.6.0, semver@^7.6.2: - version "7.7.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.0.tgz#9c6fe61d0c6f9fa9e26575162ee5a9180361b09c" - integrity sha512-DrfFnPzblFmNrIZzg5RzHegbiRWg7KMR7btwi2yjHwx06zsUbO5g613sVwEV7FTwmzJu+Io0lJe2GJ3LxqpvBQ== + version "7.7.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.1.tgz#abd5098d82b18c6c81f6074ff2647fd3e7220c9f" + integrity sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA== set-cookie-parser@^2.6.0: version "2.7.1" @@ -3105,9 +3112,9 @@ svelte-eslint-parser@^0.43.0: postcss-scss "^4.0.9" svelte@^5.0.0: - version "5.19.5" - resolved "https://registry.yarnpkg.com/svelte/-/svelte-5.19.5.tgz#fc9c169a25eb9809eda737bf93ed2c5471f0e30c" - integrity sha512-vVAntseegJX80sgbY8CxQISSE/VoDSfP7VZHoQaf2+z+2XOPOz/N+k455HJmO9O0g8oxTtuE0TBhC/5LAP4lPg== + version "5.20.1" + resolved "https://registry.yarnpkg.com/svelte/-/svelte-5.20.1.tgz#2379284f2623da132b4590315ac6911fcf9926d9" + integrity sha512-aCARru2WTdzJl55Ws8SK27+kvQwd8tijl4kY7NoDUXUHtTHhxMa8Lf6QNZKmU7cuPu3jjFloDO1j5HgYJNIIWg== dependencies: "@ampproject/remapping" "^2.3.0" "@jridgewell/sourcemap-codec" "^1.5.0" @@ -3178,10 +3185,10 @@ totalist@^3.0.0: resolved "https://registry.yarnpkg.com/totalist/-/totalist-3.0.1.tgz#ba3a3d600c915b1a97872348f79c127475f6acf8" integrity sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ== -ts-api-utils@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-2.0.0.tgz#b9d7d5f7ec9f736f4d0f09758b8607979044a900" - integrity sha512-xCt/TOAc+EOHS1XPnijD3/yzpH6qg2xppZO1YDqGoVsNXfQfzHpOdNuXwrwOU8u4ITXJyDCTyt8w5g1sZv9ynQ== +ts-api-utils@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-2.0.1.tgz#660729385b625b939aaa58054f45c058f33f10cd" + integrity sha512-dnlgjFSVetynI8nzgJ+qF62efpglpWRk8isUEWZGWlJYySCTD6aKvbUDu+zbPeDakk3bg5H4XpitHukgfL1m9w== ts-interface-checker@^0.1.9: version "0.1.13" @@ -3201,13 +3208,13 @@ type-check@^0.4.0, type-check@~0.4.0: prelude-ls "^1.2.1" typescript-eslint@^8.0.0: - version "8.22.0" - resolved "https://registry.yarnpkg.com/typescript-eslint/-/typescript-eslint-8.22.0.tgz#1d4becf1d65385e57e9271fbd557ccc22f6c0f53" - integrity sha512-Y2rj210FW1Wb6TWXzQc5+P+EWI9/zdS57hLEc0gnyuvdzWo8+Y8brKlbj0muejonhMI/xAZCnZZwjbIfv1CkOw== + version "8.24.0" + resolved "https://registry.yarnpkg.com/typescript-eslint/-/typescript-eslint-8.24.0.tgz#cc655e71885ecb8280342b422ad839a2e2e46a96" + integrity sha512-/lmv4366en/qbB32Vz5+kCNZEMf6xYHwh1z48suBwZvAtnXKbP+YhGe8OLE2BqC67LMqKkCNLtjejdwsdW6uOQ== dependencies: - "@typescript-eslint/eslint-plugin" "8.22.0" - "@typescript-eslint/parser" "8.22.0" - "@typescript-eslint/utils" "8.22.0" + "@typescript-eslint/eslint-plugin" "8.24.0" + "@typescript-eslint/parser" "8.24.0" + "@typescript-eslint/utils" "8.24.0" typescript@^5.0.0: version "5.7.3"