diff --git a/Cargo.lock b/Cargo.lock index 034fa6ce16..1ba4efde85 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -14,19 +14,13 @@ dependencies = [ [[package]] name = "addr2line" -version = "0.22.0" +version = "0.24.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e4503c46a5c0c7844e948c9a4d6acd9f50cccb4de1c48eb9e291ea17470c678" +checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" dependencies = [ "gimli", ] -[[package]] -name = "adler" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" - [[package]] name = "adler2" version = "2.0.0" @@ -95,9 +89,9 @@ dependencies = [ [[package]] name = "anstream" -version = "0.6.15" +version = "0.6.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64e15c1ab1f89faffbf04a634d5e1962e9074f2741eef6d97f3c4e322426d526" +checksum = "23a1e53f0f5d86382dafe1cf314783b2044280f406e7e1506368220ad11b1338" dependencies = [ "anstyle", "anstyle-parse", @@ -110,49 +104,49 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.8" +version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bec1de6f59aedf83baf9ff929c98f2ad654b97c9510f4e70cf6f661d49fd5b1" +checksum = "8365de52b16c035ff4fcafe0092ba9390540e3e352870ac09933bebcaa2c8c56" [[package]] name = "anstyle-parse" -version = "0.2.5" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb47de1e80c2b463c735db5b217a0ddc39d612e7ac9e2e96a5aed1f57616c1cb" +checksum = "3b2d16507662817a6a20a9ea92df6652ee4f94f914589377d69f3b21bc5798a9" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.1.1" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d36fc52c7f6c869915e99412912f22093507da8d9e942ceaf66fe4b7c14422a" +checksum = "79947af37f4177cfead1110013d678905c37501914fba0efea834c3fe9a8d60c" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] name = "anstyle-wincon" -version = "3.0.4" +version = "3.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bf74e1b6e971609db8ca7a9ce79fd5768ab6ae46441c572e46cf596f59e57f8" +checksum = "2109dbce0e72be3ec00bed26e6a7479ca384ad226efdd66db8fa2e3a38c83125" dependencies = [ "anstyle", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] name = "anyhow" -version = "1.0.89" +version = "1.0.91" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86fdf8605db99b54d3cd748a44c6d04df638eb5dafb219b135d0149bd0db01f6" +checksum = "c042108f3ed77fd83760a5fd79b53be043192bb3b9dba91d8c574c0ada7850c8" [[package]] name = "apalis" -version = "0.5.3" +version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be13bf89e734a1ec4d44233429aafea5a9e693c98a4a126b00a29f321d4a2e03" +checksum = "3da210662fee6932c2d8b291c4b33a573b5eafe09e23c6bf01295285a7d86e03" dependencies = [ "apalis-core", "apalis-cron", @@ -163,16 +157,16 @@ dependencies = [ "serde", "thiserror", "tokio", - "tower 0.4.13", + "tower 0.5.1", "tracing", "tracing-futures", ] [[package]] name = "apalis-core" -version = "0.5.3" +version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fb0704a3274e289bebbe042d7adf2b1455a2afd084c7a835cfc2e918cad2eff" +checksum = "91befa475b114da630f0781fc48a577932a54790adf0a47edac00d4f058282d9" dependencies = [ "async-oneshot", "futures", @@ -181,29 +175,29 @@ dependencies = [ "serde", "serde_json", "thiserror", - "tower 0.4.13", + "tower 0.5.1", "ulid", ] [[package]] name = "apalis-cron" -version = "0.5.3" +version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3918af413df3fb888bb662b7504ea16cbbabd20293a08f9e7548c57764612db" +checksum = "344799ff16579e1ae362143682d7bc29527adfbb9f421913ec8d8629276f7386" dependencies = [ "apalis-core", "async-stream", "chrono", "cron", "futures", - "tower 0.4.13", + "tower 0.5.1", ] [[package]] name = "apalis-redis" -version = "0.5.3" +version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8deabd06576b44f87e0fa709e44aa7edc47937b4325eac78384168df47ba30b" +checksum = "a77c9038106f6fa16e66fac08bc0a04edaf50b48d5a4328a98806d3f2f52c06d" dependencies = [ "apalis-core", "async-stream", @@ -218,9 +212,9 @@ dependencies = [ [[package]] name = "apalis-sql" -version = "0.5.3" +version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb4df1ac2762e170a12a920d1f74207816341e5eed5870887cc3bcd9e8c59028" +checksum = "77f5a576d1d6df3de40ab8bf66bd33912718fc9c51d98f63cfb71f60996410bc" dependencies = [ "apalis-core", "async-stream", @@ -246,7 +240,9 @@ dependencies = [ "config", "file-storage-service", "jwt-service", - "reqwest 0.12.8", + "media-models", + "reqwest 0.12.9", + "sea-orm", ] [[package]] @@ -311,7 +307,7 @@ dependencies = [ "proc-macro2", "quote", "serde", - "syn 2.0.77", + "syn 2.0.85", ] [[package]] @@ -349,7 +345,7 @@ dependencies = [ "futures-util", "handlebars", "http 1.1.0", - "indexmap 2.5.0", + "indexmap 2.6.0", "log", "mime", "multer", @@ -399,7 +395,7 @@ dependencies = [ "proc-macro2", "quote", "strum", - "syn 2.0.77", + "syn 2.0.85", "thiserror", ] @@ -422,7 +418,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ef5ec94176a12a8cbe985cd73f2e54dc9c702c88c766bdef12f1f3a67cedbee1" dependencies = [ "bytes", - "indexmap 2.5.0", + "indexmap 2.6.0", "serde", "serde_json", ] @@ -433,7 +429,7 @@ version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ff6e472cdea888a4bd64f342f09b3f50e1886d32afe8df3d663c01140b811b18" dependencies = [ - "event-listener 5.3.1", + "event-listener", "event-listener-strategy", "pin-project-lite", ] @@ -449,9 +445,9 @@ dependencies = [ [[package]] name = "async-stream" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd56dd203fef61ac097dd65721a419ddccb106b2d2b70ba60a6b529f03961a51" +checksum = "0b5a71a6f37880a80d1d7f19efd781e4b5de42c88f0722cc13bcb6cc2cfe8476" dependencies = [ "async-stream-impl", "futures-core", @@ -460,13 +456,13 @@ dependencies = [ [[package]] name = "async-stream-impl" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" +checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.85", ] [[package]] @@ -477,7 +473,7 @@ checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.85", ] [[package]] @@ -497,9 +493,9 @@ checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" [[package]] name = "autocfg" -version = "1.3.0" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" +checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" [[package]] name = "aws-credential-types" @@ -541,11 +537,10 @@ dependencies = [ [[package]] name = "aws-sdk-s3" -version = "1.54.0" +version = "1.58.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2f2a62020f3e06f9b352b2a23547f6e1d110b6bf1e18a6b588ae36114eaf6e2" +checksum = "0656a79cf5e6ab0d4bb2465cd750a7a2fd7ea26c062183ed94225f5782e22365" dependencies = [ - "ahash 0.8.11", "aws-credential-types", "aws-runtime", "aws-sigv4", @@ -576,9 +571,9 @@ dependencies = [ [[package]] name = "aws-sigv4" -version = "1.2.4" +version = "1.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc8db6904450bafe7473c6ca9123f88cc11089e41a025408f992db4e22d3be68" +checksum = "5619742a0d8f253be760bfbb8e8e8368c69e3587e4637af5754e488a611499b1" dependencies = [ "aws-credential-types", "aws-smithy-eventstream", @@ -616,9 +611,9 @@ dependencies = [ [[package]] name = "aws-smithy-checksums" -version = "0.60.12" +version = "0.60.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "598b1689d001c4d4dc3cb386adb07d37786783aee3ac4b324bcadac116bf3d23" +checksum = "ba1a71073fca26775c8b5189175ea8863afb1c9ea2cceb02a5de5ad9dfbaa795" dependencies = [ "aws-smithy-http", "aws-smithy-types", @@ -678,9 +673,9 @@ dependencies = [ [[package]] name = "aws-smithy-runtime" -version = "1.7.1" +version = "1.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1ce695746394772e7000b39fe073095db6d45a862d0767dd5ad0ac0d7f8eb87" +checksum = "be28bd063fa91fd871d131fc8b68d7cd4c5fa0869bea68daca50dcb1cbd76be2" dependencies = [ "aws-smithy-async", "aws-smithy-http", @@ -693,7 +688,7 @@ dependencies = [ "http-body 0.4.6", "http-body 1.0.1", "httparse", - "hyper 0.14.30", + "hyper 0.14.31", "hyper-rustls 0.24.2", "once_cell", "pin-project-lite", @@ -722,9 +717,9 @@ dependencies = [ [[package]] name = "aws-smithy-types" -version = "1.2.7" +version = "1.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "147100a7bea70fa20ef224a6bad700358305f5dc0f84649c53769761395b355b" +checksum = "07c9cdc179e6afbf5d391ab08c85eac817b51c87e1892a5edb5f7bbdc64314b4" dependencies = [ "base64-simd", "bytes", @@ -784,7 +779,7 @@ dependencies = [ "http 1.1.0", "http-body 1.0.1", "http-body-util", - "hyper 1.4.1", + "hyper 1.5.0", "hyper-util", "itoa", "matchit", @@ -837,7 +832,7 @@ checksum = "57d123550fa8d071b7255cb0cc04dc302baa6c8c4a79f55701552684d8399bce" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.85", ] [[package]] @@ -881,7 +876,7 @@ dependencies = [ "miscellaneous-service", "moka", "openidconnect", - "reqwest 0.12.8", + "reqwest 0.12.9", "router-resolver", "schematic", "sea-orm", @@ -920,17 +915,17 @@ dependencies = [ [[package]] name = "backtrace" -version = "0.3.73" +version = "0.3.74" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cc23269a4f8976d0a4d2e7109211a419fe30e8d88d677cd60b6bc79c5732e0a" +checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" dependencies = [ "addr2line", - "cc", "cfg-if", "libc", - "miniz_oxide 0.7.4", + "miniz_oxide", "object", "rustc-demangle", + "windows-targets 0.52.6", ] [[package]] @@ -988,6 +983,20 @@ dependencies = [ "serde", ] +[[package]] +name = "bigdecimal" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f850665a0385e070b64c38d2354e6c104c8479c59868d1e48a0c13ee2c7a1c1" +dependencies = [ + "autocfg", + "libm", + "num-bigint", + "num-integer", + "num-traits", + "serde", +] + [[package]] name = "bitflags" version = "1.3.2" @@ -1035,11 +1044,11 @@ dependencies = [ [[package]] name = "block-buffer" -version = "0.11.0-rc.1" +version = "0.11.0-rc.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8969801e57d15e15bc4d7cdc5600dc15ca06a9a62b622bd4871c2d21d8aeb42d" +checksum = "3fd016a0ddc7cb13661bf5576073ce07330a693f8608a1320b4e20561cc12cdc" dependencies = [ - "crypto-common 0.2.0-rc.1", + "hybrid-array", ] [[package]] @@ -1073,7 +1082,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.85", "syn_derive", ] @@ -1113,9 +1122,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.7.1" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8318a53db07bb3f8dca91a600466bdb3f2eaadeedfdbcf02e1accbad9271ba50" +checksum = "9ac0150caa2ae65ca5bd83f25c7de183dea78d4d366469f148435e2acfbad0da" dependencies = [ "serde", ] @@ -1156,9 +1165,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.1.13" +version = "1.1.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72db2f7947ecee9b03b510377e8bb9077afa27176fdbff55c51027e976fdcc48" +checksum = "c2e7962b54006dcfcc61cb72735f4d89bb97061dd6a7ed882ec6b8ee53714c6f" dependencies = [ "shlex", ] @@ -1223,9 +1232,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.16" +version = "4.5.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed6719fffa43d0d87e5fd8caeab59be1554fb028cd30edc88fc4369b17971019" +checksum = "b97f376d85a664d5837dbae44bf546e6477a679ff6610010f17276f686d867e8" dependencies = [ "clap_builder", "clap_derive", @@ -1233,9 +1242,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.15" +version = "4.5.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "216aec2b177652e3846684cbfe25c9964d18ec45234f0f5da5157b207ed1aab6" +checksum = "19bc80abd44e4bed93ca373a0704ccbd1b710dc5749406201bb018272808dc54" dependencies = [ "anstream", "anstyle", @@ -1245,14 +1254,14 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.13" +version = "4.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "501d359d5f3dcaf6ecdeee48833ae73ec6e42723a1e52419c79abf9507eec0a0" +checksum = "4ac6a0c7b1a9e9a5186361f67dfa1b88213572f427fb9ab038efb2bd8c582dab" dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.85", ] [[package]] @@ -1277,6 +1286,7 @@ dependencies = [ name = "collection-service" version = "0.1.0" dependencies = [ + "application-utils", "async-graphql", "common-models", "database-models", @@ -1292,9 +1302,9 @@ dependencies = [ [[package]] name = "colorchoice" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3fd119d74b830634cea2a0f58bbd0d54540518a14397557951e79340abc28c0" +checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990" [[package]] name = "combine" @@ -1328,7 +1338,7 @@ name = "common-models" version = "0.1.0" dependencies = [ "async-graphql", - "educe 0.6.0", + "educe", "enum_meta", "enums", "rust_decimal", @@ -1348,7 +1358,8 @@ dependencies = [ "compile-time", "const-str", "env-utils", - "reqwest 0.12.8", + "reqwest 0.12.9", + "serde", ] [[package]] @@ -1438,9 +1449,9 @@ checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" [[package]] name = "cpufeatures" -version = "0.2.13" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51e852e6dc9a5bed1fae92dd2375037bf2b768725bf3be87811edee3249d09ad" +checksum = "608697df725056feaccfa42cffdaeeec3fccc4ffc38358ecd19b243e716a78e0" dependencies = [ "libc", ] @@ -1585,7 +1596,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331" dependencies = [ "quote", - "syn 2.0.77", + "syn 2.0.85", ] [[package]] @@ -1633,7 +1644,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.85", ] [[package]] @@ -1657,7 +1668,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.77", + "syn 2.0.85", ] [[package]] @@ -1668,7 +1679,7 @@ checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" dependencies = [ "darling_core", "quote", - "syn 2.0.77", + "syn 2.0.85", ] [[package]] @@ -1688,7 +1699,7 @@ dependencies = [ "boilermates", "chrono", "common-models", - "educe 0.6.0", + "educe", "enums", "file-storage-service", "fitness-models", @@ -1770,6 +1781,7 @@ dependencies = [ "database-utils", "dependent-models", "enums", + "file-storage-service", "fitness-models", "importer-models", "itertools 0.13.0", @@ -1826,7 +1838,7 @@ checksum = "5f33878137e4dafd7fa914ad4e259e18a4e8e532b9617a2d0150262bf53abfce" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.85", ] [[package]] @@ -1846,7 +1858,7 @@ checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.85", ] [[package]] @@ -1873,7 +1885,7 @@ version = "0.11.0-pre.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cf2e3d6615d99707295a9673e889bf363a04b2a466bd320c65a72536f7577379" dependencies = [ - "block-buffer 0.11.0-rc.1", + "block-buffer 0.11.0-rc.3", "crypto-common 0.2.0-rc.1", "subtle", ] @@ -1928,7 +1940,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.85", ] [[package]] @@ -2024,18 +2036,6 @@ dependencies = [ "zeroize", ] -[[package]] -name = "educe" -version = "0.5.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4bd92664bf78c4d3dba9b7cdafce6fa15b13ed3ed16175218196942e99168a8" -dependencies = [ - "enum-ordinalize", - "proc-macro2", - "quote", - "syn 2.0.77", -] - [[package]] name = "educe" version = "0.6.0" @@ -2045,14 +2045,14 @@ dependencies = [ "enum-ordinalize", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.85", ] [[package]] name = "ego-tree" -version = "0.6.2" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a68a4904193147e0a8dec3314640e6db742afd5f6e634f428a6af230d9b3591" +checksum = "12a0bb14ac04a9fcf170d0bbbef949b44cc492f4452bd20c095636956f653642" [[package]] name = "either" @@ -2128,9 +2128,9 @@ checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0" [[package]] name = "encoding_rs" -version = "0.8.34" +version = "0.8.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59" +checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" dependencies = [ "cfg-if", ] @@ -2152,7 +2152,7 @@ checksum = "0d28318a75d4aead5c4db25382e8ef717932d0346600cacae6357eb5941bc5ff" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.85", ] [[package]] @@ -2208,12 +2208,6 @@ dependencies = [ "windows-sys 0.48.0", ] -[[package]] -name = "event-listener" -version = "2.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" - [[package]] name = "event-listener" version = "5.3.1" @@ -2231,7 +2225,7 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0f214dc438f977e6d4e3500aaa277f5ad94ca83fbbd9b1a15713ce2344ccc5a1" dependencies = [ - "event-listener 5.3.1", + "event-listener", "pin-project-lite", ] @@ -2273,7 +2267,7 @@ dependencies = [ "media-models", "mime_guess", "nanoid", - "reqwest 0.12.8", + "reqwest 0.12.9", "sea-orm", "struson", "supporting-service", @@ -2287,7 +2281,7 @@ version = "0.1.0" dependencies = [ "anyhow", "common-utils", - "reqwest 0.12.8", + "reqwest 0.12.9", "sea-orm", "serde", "serde_json", @@ -2305,9 +2299,9 @@ dependencies = [ [[package]] name = "fastrand" -version = "2.1.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a" +checksum = "e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6" [[package]] name = "ff" @@ -2358,16 +2352,12 @@ dependencies = [ name = "fitness-models" version = "0.1.0" dependencies = [ - "application-utils", "async-graphql", - "async-trait", "common-models", "derive_more 1.0.0", - "educe 0.6.0", + "educe", "enums", - "file-storage-service", "rust_decimal", - "rust_decimal_macros", "schematic", "sea-orm", "serde", @@ -2408,7 +2398,7 @@ dependencies = [ "itertools 0.13.0", "migrations", "nanoid", - "reqwest 0.12.8", + "reqwest 0.12.9", "sea-orm", "sea-query", "slug", @@ -2418,19 +2408,19 @@ dependencies = [ [[package]] name = "flate2" -version = "1.0.33" +version = "1.0.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "324a1be68054ef05ad64b861cc9eaf1d623d2d8cb25b4bf2cb9cdd902b4bf253" +checksum = "a1b589b4dc103969ad3cf85c950899926ec64300a1a46d76c03a6072957036f0" dependencies = [ "crc32fast", - "miniz_oxide 0.8.0", + "miniz_oxide", ] [[package]] name = "flume" -version = "0.11.0" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55ac459de2512911e4b674ce33cf20befaba382d05b62b008afc1c8b57cbf181" +checksum = "da0e4dd2a88388a1f4ccc7c9ce104604dab68d9f408dc34cd45823d5a9069095" dependencies = [ "futures-core", "futures-sink", @@ -2443,6 +2433,12 @@ version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" +[[package]] +name = "foldhash" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f81ec6369c545a7d40e4589b5597581fa1c441fe1cce96dd1de43159910a36a2" + [[package]] name = "foreign-types" version = "0.3.2" @@ -2563,7 +2559,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.85", ] [[package]] @@ -2642,7 +2638,7 @@ dependencies = [ "proc-macro2", "quote", "regex", - "syn 2.0.77", + "syn 2.0.85", ] [[package]] @@ -2680,9 +2676,9 @@ dependencies = [ [[package]] name = "gimli" -version = "0.29.0" +version = "0.31.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40ecd4077b5ae9fd2e9e169b102c6c330d0605168eb0e8bf79952b256dbefffd" +checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" [[package]] name = "glob" @@ -2782,7 +2778,7 @@ dependencies = [ "futures-sink", "futures-util", "http 0.2.12", - "indexmap 2.5.0", + "indexmap 2.6.0", "slab", "tokio", "tokio-util", @@ -2801,7 +2797,7 @@ dependencies = [ "futures-core", "futures-sink", "http 1.1.0", - "indexmap 2.5.0", + "indexmap 2.6.0", "slab", "tokio", "tokio-util", @@ -2847,11 +2843,22 @@ dependencies = [ "allocator-api2", ] +[[package]] +name = "hashbrown" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e087f84d4f86bf4b218b927129862374b72199ae7d8657835f1e89000eea4fb" +dependencies = [ + "allocator-api2", + "equivalent", + "foldhash", +] + [[package]] name = "hashlink" -version = "0.8.4" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8094feaf31ff591f651a2664fb9cfd92bba7a60ce3197265e9482ebe753c8f7" +checksum = "6ba4ff7128dee98c7dc9794b6a411377e1404dba1c97deb8d1a55297bd25d8af" dependencies = [ "hashbrown 0.14.5", ] @@ -2861,9 +2868,6 @@ name = "heck" version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" -dependencies = [ - "unicode-segmentation", -] [[package]] name = "heck" @@ -2938,7 +2942,7 @@ dependencies = [ "markup5ever", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.85", ] [[package]] @@ -2999,9 +3003,9 @@ dependencies = [ [[package]] name = "httparse" -version = "1.9.4" +version = "1.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fcc0b4a115bf80b728eb8ea024ad5bd707b615bfed49e0665b6e0f86fd082d9" +checksum = "7d71d3574edd2771538b901e6549113b4006ece66150fb69c0fb6d9a2adae946" [[package]] name = "httpdate" @@ -3020,18 +3024,18 @@ dependencies = [ [[package]] name = "hybrid-array" -version = "0.2.0-rc.9" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d306b679262030ad8813a82d4915fc04efff97776e4db7f8eb5137039d56400" +checksum = "45a9a965bb102c1c891fb017c09a05c965186b1265a207640f323ddd009f9deb" dependencies = [ "typenum", ] [[package]] name = "hyper" -version = "0.14.30" +version = "0.14.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a152ddd61dfaec7273fe8419ab357f33aee0d914c5f4efbf0d96fa749eea5ec9" +checksum = "8c08302e8fa335b151b788c775ff56e7a03ae64ff85c548ee820fecb70356e85" dependencies = [ "bytes", "futures-channel", @@ -3053,9 +3057,9 @@ dependencies = [ [[package]] name = "hyper" -version = "1.4.1" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50dfd22e0e76d0f662d429a5f80fcaf3855009297eab6a0a9f8543834744ba05" +checksum = "bbbff0a806a4728c99295b254c8838933b5b082d75e3cb70c8dab21fdfbcfa9a" dependencies = [ "bytes", "futures-channel", @@ -3080,7 +3084,7 @@ checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" dependencies = [ "futures-util", "http 0.2.12", - "hyper 0.14.30", + "hyper 0.14.31", "log", "rustls 0.21.12", "rustls-native-certs", @@ -3090,15 +3094,15 @@ dependencies = [ [[package]] name = "hyper-rustls" -version = "0.27.2" +version = "0.27.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ee4be2c948921a1a5320b629c4193916ed787a7f7f293fd3f7f5a6c9de74155" +checksum = "08afdbb5c31130e3034af566421053ab03787c640246a446327f550d11bcb333" dependencies = [ "futures-util", "http 1.1.0", - "hyper 1.4.1", + "hyper 1.5.0", "hyper-util", - "rustls 0.23.12", + "rustls 0.23.16", "rustls-pki-types", "tokio", "tokio-rustls 0.26.0", @@ -3112,7 +3116,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" dependencies = [ "bytes", - "hyper 0.14.30", + "hyper 0.14.31", "native-tls", "tokio", "tokio-native-tls", @@ -3126,7 +3130,7 @@ checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" dependencies = [ "bytes", "http-body-util", - "hyper 1.4.1", + "hyper 1.5.0", "hyper-util", "native-tls", "tokio", @@ -3136,29 +3140,28 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.7" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cde7055719c54e36e95e8719f95883f22072a48ede39db7fc17a4e1d5281e9b9" +checksum = "df2dcfbe0677734ab2f3ffa7fa7bfd4706bfdc1ef393f2ee30184aed67e631b4" dependencies = [ "bytes", "futures-channel", "futures-util", "http 1.1.0", "http-body 1.0.1", - "hyper 1.4.1", + "hyper 1.5.0", "pin-project-lite", "socket2", "tokio", - "tower 0.4.13", "tower-service", "tracing", ] [[package]] name = "iana-time-zone" -version = "0.1.60" +version = "0.1.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141" +checksum = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220" dependencies = [ "android_system_properties", "core-foundation-sys", @@ -3292,7 +3295,7 @@ checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.85", ] [[package]] @@ -3374,7 +3377,7 @@ dependencies = [ "media-models", "providers", "regex", - "reqwest 0.12.8", + "reqwest 0.12.9", "rust_decimal", "rust_decimal_macros", "sea-orm", @@ -3401,12 +3404,12 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.5.0" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68b900aa2f7301e21c36462b170ee99994de34dff39a4a6a528e80e7376d07e5" +checksum = "707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da" dependencies = [ "equivalent", - "hashbrown 0.14.5", + "hashbrown 0.15.0", "serde", ] @@ -3424,7 +3427,7 @@ checksum = "0122b7114117e64a63ac49f752a5ca4624d534c7b1c7de796ac196381cd2d947" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.85", ] [[package]] @@ -3449,7 +3452,7 @@ dependencies = [ "providers", "radarr-api-rs", "regex", - "reqwest 0.12.8", + "reqwest 0.12.9", "rust_decimal", "rust_decimal_macros", "sea-orm", @@ -3467,9 +3470,9 @@ dependencies = [ [[package]] name = "ipnet" -version = "2.9.0" +version = "2.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" +checksum = "ddc24109865250148c2e0f3d25d4f0f479571723792d3802153c60922a4fb708" [[package]] name = "is-terminal" @@ -3512,6 +3515,15 @@ dependencies = [ "either", ] +[[package]] +name = "itertools" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" +dependencies = [ + "either", +] + [[package]] name = "itertools" version = "0.13.0" @@ -3529,9 +3541,9 @@ checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" [[package]] name = "js-sys" -version = "0.3.70" +version = "0.3.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1868808506b929d7b0cfa8f75951347aa71bb21144b7791bae35d9bccfcfe37a" +checksum = "6a88f1bda2bd75b0452a14784937d796722fdebfe50df998aeb3f0b7603019a9" dependencies = [ "wasm-bindgen", ] @@ -3572,9 +3584,9 @@ dependencies = [ [[package]] name = "lettre" -version = "0.11.8" +version = "0.11.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1658ac89b01055e3ba23d66ecf6f8b97388ebe34ce125e49f8ef71234fb8aaba" +checksum = "0161e452348e399deb685ba05e55ee116cae9410f4f51fe42d597361444521d9" dependencies = [ "base64 0.22.1", "chumsky", @@ -3597,15 +3609,15 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.158" +version = "0.2.161" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8adc4bb1803a324070e64a98ae98f38934d91957a99cfb3a43dcbc01bc56439" +checksum = "8e9489c2807c139ffd9c1794f4af0ebe86a828db53ecdc7fea2111d0fed085d1" [[package]] name = "libm" -version = "0.2.8" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" +checksum = "8355be11b20d696c8f18f6cc018c4e372165b1fa8126cef092399c9951984ffa" [[package]] name = "libredox" @@ -3619,9 +3631,9 @@ dependencies = [ [[package]] name = "libsqlite3-sys" -version = "0.27.0" +version = "0.30.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf4e226dcd58b4be396f7bd3c20da8fdee2911400705297ba7d2d7cc2c30f716" +checksum = "2e99fb7a497b1e3339bc746195567ed8d3e24945ecd636e3619d20b9de9e9149" dependencies = [ "cc", "pkg-config", @@ -3668,11 +3680,11 @@ dependencies = [ [[package]] name = "lru" -version = "0.12.4" +version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37ee39891760e7d94734f6f63fedc29a2e4a152f836120753a72503f09fcf904" +checksum = "234cf4f4a04dc1f57e24b96cc0cd600cf2af460d4161ac5ecdd0af8e1f3b2a38" dependencies = [ - "hashbrown 0.14.5", + "hashbrown 0.15.0", ] [[package]] @@ -3737,8 +3749,8 @@ dependencies = [ "boilermates", "chrono", "common-models", + "common-utils", "enums", - "file-storage-service", "rust_decimal", "schematic", "sea-orm", @@ -3774,7 +3786,7 @@ checksum = "dcf09caffaac8068c346b6df2a7fc27a177fd20b39421a39ce0a211bde679a6c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.85", ] [[package]] @@ -3810,15 +3822,6 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" -[[package]] -name = "miniz_oxide" -version = "0.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8a240ddb74feaf34a79a7add65a741f3167852fba007066dcac1ca548d89c08" -dependencies = [ - "adler", -] - [[package]] name = "miniz_oxide" version = "0.8.0" @@ -3902,7 +3905,7 @@ dependencies = [ "crossbeam-channel", "crossbeam-epoch", "crossbeam-utils", - "event-listener 5.3.1", + "event-listener", "futures-util", "once_cell", "parking_lot", @@ -3984,7 +3987,7 @@ dependencies = [ "config", "convert_case", "lettre", - "reqwest 0.12.8", + "reqwest 0.12.9", "serde", "serde_json", "tracing", @@ -4001,6 +4004,16 @@ dependencies = [ "winapi", ] +[[package]] +name = "num-bigint" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" +dependencies = [ + "num-integer", + "num-traits", +] + [[package]] name = "num-bigint-dig" version = "0.8.4" @@ -4076,18 +4089,18 @@ dependencies = [ [[package]] name = "object" -version = "0.36.3" +version = "0.36.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "27b64972346851a39438c60b341ebc01bba47464ae329e55cf343eb93964efd9" +checksum = "aedf0a2d09c573ed1d8d85b30c119153926a2b36dce0ab28322c09a117a4683e" dependencies = [ "memchr", ] [[package]] name = "once_cell" -version = "1.19.0" +version = "1.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" +checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" [[package]] name = "openidconnect" @@ -4123,9 +4136,9 @@ dependencies = [ [[package]] name = "openssl" -version = "0.10.66" +version = "0.10.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9529f4786b70a3e8c61e11179af17ab6188ad8d0ded78c5529441ed39d4bd9c1" +checksum = "6174bc48f102d208783c2c84bf931bb75927a617866870de8a4ea85597f871f5" dependencies = [ "bitflags 2.6.0", "cfg-if", @@ -4144,7 +4157,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.85", ] [[package]] @@ -4155,9 +4168,9 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "openssl-sys" -version = "0.9.103" +version = "0.9.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f9e8deee91df40a943c71b917e5874b951d32a802526c85721ce3b776c929d6" +checksum = "45abf306cbf99debc8195b66b7346498d7b10c210de50418b5ccd7ceba08c741" dependencies = [ "cc", "libc", @@ -4191,9 +4204,9 @@ dependencies = [ [[package]] name = "ouroboros" -version = "0.17.2" +version = "0.18.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2ba07320d39dfea882faa70554b4bd342a5f273ed59ba7c1c6b4c840492c954" +checksum = "944fa20996a25aded6b4795c6d63f10014a7a83f8be9828a11860b08c5fc4a67" dependencies = [ "aliasable", "ouroboros_macro", @@ -4202,15 +4215,16 @@ dependencies = [ [[package]] name = "ouroboros_macro" -version = "0.17.2" +version = "0.18.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec4c6225c69b4ca778c0aea097321a64c421cf4577b331c61b229267edabb6f8" +checksum = "39b0deead1528fd0e5947a8546a9642a9777c25f6e1e26f34c97b204bbb465bd" dependencies = [ "heck 0.4.1", - "proc-macro-error", + "itertools 0.12.1", "proc-macro2", + "proc-macro2-diagnostics", "quote", - "syn 2.0.77", + "syn 2.0.85", ] [[package]] @@ -4227,9 +4241,9 @@ checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" [[package]] name = "owo-colors" -version = "4.0.0" +version = "4.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "caff54706df99d2a78a5a4e3455ff45448d81ef1bb63c22cd14052ca0e993a3f" +checksum = "fb37767f6569cd834a413442455e0f066d0d522de8630436e2a1761d9726ba56" [[package]] name = "p256" @@ -4274,9 +4288,9 @@ checksum = "5ac1db209d9d6dc8e4435b744ed76198494406cd20eb8ca14baf9828664664c8" [[package]] name = "parking" -version = "2.2.0" +version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb813b8af86854136c6922af0598d719255ecb2179515e6e7730d468f05c9cae" +checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" [[package]] name = "parking_lot" @@ -4296,7 +4310,7 @@ checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" dependencies = [ "cfg-if", "libc", - "redox_syscall 0.5.3", + "redox_syscall", "smallvec", "windows-targets 0.52.6", ] @@ -4344,9 +4358,9 @@ checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "pest" -version = "2.7.11" +version = "2.7.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd53dff83f26735fdc1ca837098ccf133605d794cdae66acfc2bfac3ec809d95" +checksum = "879952a81a83930934cbf1786752d6dedc3b1f29e8f8fb2ad1d0a36f377cf442" dependencies = [ "memchr", "thiserror", @@ -4355,9 +4369,9 @@ dependencies = [ [[package]] name = "pest_derive" -version = "2.7.11" +version = "2.7.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a548d2beca6773b1c244554d36fcf8548a8a58e74156968211567250e48e49a" +checksum = "d214365f632b123a47fd913301e14c946c61d1c183ee245fa76eb752e59a02dd" dependencies = [ "pest", "pest_generator", @@ -4365,22 +4379,22 @@ dependencies = [ [[package]] name = "pest_generator" -version = "2.7.11" +version = "2.7.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c93a82e8d145725dcbaf44e5ea887c8a869efdcc28706df2d08c69e17077183" +checksum = "eb55586734301717aea2ac313f50b2eb8f60d2fc3dc01d190eefa2e625f60c4e" dependencies = [ "pest", "pest_meta", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.85", ] [[package]] name = "pest_meta" -version = "2.7.11" +version = "2.7.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a941429fea7e08bedec25e4f6785b6ffaacc6b755da98df5ef3e7dcf4a124c4f" +checksum = "b75da2a70cf4d9cb76833c990ac9cd3923c9a8905a8929789ce347c84564d03d" dependencies = [ "once_cell", "pest", @@ -4456,7 +4470,7 @@ dependencies = [ "phf_shared 0.11.2", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.85", ] [[package]] @@ -4479,29 +4493,29 @@ dependencies = [ [[package]] name = "pin-project" -version = "1.1.5" +version = "1.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3" +checksum = "be57f64e946e500c8ee36ef6331845d40a93055567ec57e8fae13efd33759b95" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.5" +version = "1.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" +checksum = "3c0f5fad0874fc7abcd4d750e76917eaebbecaa2c20bde22e1dbeeba8beb758c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.85", ] [[package]] name = "pin-project-lite" -version = "0.2.14" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" +checksum = "915a1e146535de9163f3987b8944ed8cf49a18bb0056bcebcdcece385cece4ff" [[package]] name = "pin-utils" @@ -4542,9 +4556,9 @@ dependencies = [ [[package]] name = "pkg-config" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" +checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" [[package]] name = "powerfmt" @@ -4592,11 +4606,11 @@ dependencies = [ [[package]] name = "proc-macro-crate" -version = "3.1.0" +version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d37c51ca738a55da99dc0c4a34860fd675453b8b36209178c2249bb13651284" +checksum = "8ecf48c7ca261d60b74ab1a7b20da18bede46776b2e55535cb958eb595c5fa7b" dependencies = [ - "toml_edit 0.21.1", + "toml_edit", ] [[package]] @@ -4623,15 +4637,50 @@ dependencies = [ "version_check", ] +[[package]] +name = "proc-macro-error-attr2" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96de42df36bb9bba5542fe9f1a054b8cc87e172759a1868aa05c1f3acc89dfc5" +dependencies = [ + "proc-macro2", + "quote", +] + +[[package]] +name = "proc-macro-error2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11ec05c52be0a07b08061f7dd003e7d7092e0472bc731b4af7bb1ef876109802" +dependencies = [ + "proc-macro-error-attr2", + "proc-macro2", + "quote", + "syn 2.0.85", +] + [[package]] name = "proc-macro2" -version = "1.0.86" +version = "1.0.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" +checksum = "f139b0662de085916d1fb67d2b4169d1addddda1919e696f3252b740b629986e" dependencies = [ "unicode-ident", ] +[[package]] +name = "proc-macro2-diagnostics" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af066a9c399a26e020ada66a034357a868728e72cd426f3adcd35f80d88d88c8" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.85", + "version_check", + "yansi", +] + [[package]] name = "providers" version = "0.1.0" @@ -4648,7 +4697,7 @@ dependencies = [ "convert_case", "database-models", "dependent-models", - "educe 0.6.0", + "educe", "enums", "graphql_client", "hashbag", @@ -4657,7 +4706,7 @@ dependencies = [ "media-models", "paginate", "rand 0.9.0-alpha.2", - "reqwest 0.12.8", + "reqwest 0.12.9", "rust_decimal", "rust_decimal_macros", "rust_iso3166", @@ -4673,9 +4722,9 @@ dependencies = [ [[package]] name = "psm" -version = "0.1.21" +version = "0.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5787f7cda34e3033a72192c018bc5883100330f362ef279a8cbccfce8bb4e874" +checksum = "aa37f80ca58604976033fae9515a8a2989fc13797d953f7c04fb8fa36a11f205" dependencies = [ "cc", ] @@ -4846,18 +4895,9 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" -dependencies = [ - "bitflags 1.3.2", -] - -[[package]] -name = "redox_syscall" -version = "0.5.3" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a908a6e00f1fdd0dfd9c0eb08ce85126f6d8bbda50017e74bc4a4b7d4a926a4" +checksum = "9b6dfecf2c74bce2466cabf93f6664d6998a69eb21e39f4207930065b27b771f" dependencies = [ "bitflags 2.6.0", ] @@ -4875,9 +4915,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.11.0" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38200e5ee88914975b69f657f0801b6f6dccafd44fd9326302a4aaeecfacb1d8" +checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" dependencies = [ "aho-corasick", "memchr", @@ -4946,7 +4986,7 @@ dependencies = [ "h2 0.3.26", "http 0.2.12", "http-body 0.4.6", - "hyper 0.14.30", + "hyper 0.14.31", "hyper-rustls 0.24.2", "hyper-tls 0.5.0", "ipnet", @@ -4973,15 +5013,15 @@ dependencies = [ "wasm-bindgen", "wasm-bindgen-futures", "web-sys", - "webpki-roots", + "webpki-roots 0.25.4", "winreg", ] [[package]] name = "reqwest" -version = "0.12.8" +version = "0.12.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f713147fbe92361e52392c73b8c9e48c04c6625bce969ef54dc901e58e042a7b" +checksum = "a77c62af46e79de0a562e1a9849205ffcb7fc1238876e9bd743357570e04046f" dependencies = [ "base64 0.22.1", "bytes", @@ -4993,8 +5033,8 @@ dependencies = [ "http 1.1.0", "http-body 1.0.1", "http-body-util", - "hyper 1.4.1", - "hyper-rustls 0.27.2", + "hyper 1.5.0", + "hyper-rustls 0.27.3", "hyper-tls 0.6.0", "hyper-util", "ipnet", @@ -5006,12 +5046,12 @@ dependencies = [ "once_cell", "percent-encoding", "pin-project-lite", - "rustls-pemfile 2.1.3", + "rustls-pemfile 2.2.0", "serde", "serde_json", "serde_urlencoded", "sync_wrapper 1.0.1", - "system-configuration 0.6.0", + "system-configuration 0.6.1", "tokio", "tokio-native-tls", "tokio-util", @@ -5170,18 +5210,18 @@ checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" [[package]] name = "rustc_version" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" dependencies = [ "semver", ] [[package]] name = "rustix" -version = "0.38.34" +version = "0.38.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" +checksum = "aa260229e6538e52293eeb577aabd09945a09d6d9cc0fc550ed7529056c2e32a" dependencies = [ "bitflags 2.6.0", "errno", @@ -5204,13 +5244,14 @@ dependencies = [ [[package]] name = "rustls" -version = "0.23.12" +version = "0.23.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c58f8c84392efc0a126acce10fa59ff7b3d2ac06ab451a33f2741989b806b044" +checksum = "eee87ff5d9b36712a58574e12e9f0ea80f915a5b0ac518d322b24a465617925e" dependencies = [ "once_cell", + "ring", "rustls-pki-types", - "rustls-webpki 0.102.6", + "rustls-webpki 0.102.8", "subtle", "zeroize", ] @@ -5238,19 +5279,18 @@ dependencies = [ [[package]] name = "rustls-pemfile" -version = "2.1.3" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "196fe16b00e106300d3e45ecfcb764fa292a535d7326a29a5875c579c7417425" +checksum = "dce314e5fee3f39953d46bb63bb8a46d40c2f8fb7cc5a3b6cab2bde9721d6e50" dependencies = [ - "base64 0.22.1", "rustls-pki-types", ] [[package]] name = "rustls-pki-types" -version = "1.8.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc0a2ce646f8655401bb81e7927b812614bd5d91dbc968696be50603510fcaf0" +checksum = "16f1201b3c9a7ee8039bcadc17b7e605e2945b27eee7631788c1bd2b0643674b" [[package]] name = "rustls-webpki" @@ -5264,9 +5304,9 @@ dependencies = [ [[package]] name = "rustls-webpki" -version = "0.102.6" +version = "0.102.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e6b52d4fda176fd835fdc55a835d4a89b8499cad995885a21149d5ad62f852e" +checksum = "64ca1bc8749bd4cf37b5ce386cc146580777b4e8572c7b97baf22c83f444bee9" dependencies = [ "ring", "rustls-pki-types", @@ -5275,9 +5315,9 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.17" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6" +checksum = "0e819f2bc632f285be6d7cd36e25940d45b2391dd6d9b939e79de557f7014248" [[package]] name = "ryu" @@ -5287,11 +5327,11 @@ checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" [[package]] name = "schannel" -version = "0.1.23" +version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbc91545643bcf3a0bbb6569265615222618bdf33ce4ffbbd13c4bbd4c093534" +checksum = "01227be5826fa0690321a2ba6c5cd57a19cf3f6a09e76973b58e61de6ab9d1c1" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -5301,9 +5341,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9803bd9e6cccb1cc9cec6943f34ba93aa6cf7b6f183ee20a43457934dbc2b686" dependencies = [ "garde", - "indexmap 2.5.0", + "indexmap 2.6.0", "miette", - "reqwest 0.12.8", + "reqwest 0.12.9", "schematic_macros", "schematic_types", "serde", @@ -5326,7 +5366,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.85", ] [[package]] @@ -5336,7 +5376,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baae6c4555fd2a9cad6b1675fde90c8c3eff3772a1053b251d6ff0d547852e1f" dependencies = [ "chrono", - "indexmap 2.5.0", + "indexmap 2.6.0", "rust_decimal", "serde_json", "serde_yaml", @@ -5377,25 +5417,26 @@ dependencies = [ [[package]] name = "sea-bae" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3bd3534a9978d0aa7edd2808dc1f8f31c4d0ecd31ddf71d997b3c98e9f3c9114" +checksum = "f694a6ab48f14bc063cfadff30ab551d3c7e46d8f81836c51989d548f44a2a25" dependencies = [ "heck 0.4.1", - "proc-macro-error", + "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.85", ] [[package]] name = "sea-orm" -version = "1.0.1" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea1fee0cf8528dbe6eda29d5798afc522a63b75e44c5b15721e6e64af9c7cc4b" +checksum = "4c4872675cc5d5d399a2a202c60f3a393ec8d3f3307c36adb166517f348e4db5" dependencies = [ "async-stream", "async-trait", + "bigdecimal", "chrono", "futures", "log", @@ -5417,9 +5458,9 @@ dependencies = [ [[package]] name = "sea-orm-cli" -version = "1.0.1" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f0b8869c75cf3fbb1bd860abb025033cd2e514c5f4fa43e792697cb1fe6c882" +checksum = "0aefbd960c9ed7b2dfbab97b11890f5d8c314ad6e2f68c7b36c73ea0967fcc25" dependencies = [ "chrono", "clap", @@ -5434,23 +5475,23 @@ dependencies = [ [[package]] name = "sea-orm-macros" -version = "1.0.1" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8737b566799ed0444f278d13c300c4c6f1a91782f60ff5825a591852d5502030" +checksum = "85f714906b72e7265c0b2077d0ad8f235dabebda513c92f1326d5d40cef0dd01" dependencies = [ "heck 0.4.1", "proc-macro2", "quote", "sea-bae", - "syn 2.0.77", + "syn 2.0.85", "unicode-ident", ] [[package]] name = "sea-orm-migration" -version = "1.0.1" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "216643749e26ce27ab6c51d3475f2692981d4a902d34455bcd322f412900df5c" +checksum = "aa7bbfbe3bec60b5925193acc9c98b9f8ae9853f52c8004df0c1ea5193c01ea0" dependencies = [ "async-trait", "clap", @@ -5465,12 +5506,11 @@ dependencies = [ [[package]] name = "sea-query" -version = "0.31.1" +version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4fd043b8117af233e221f73e3ea8dfbc8e8c3c928017c474296db45c649105c" +checksum = "ff504d13b5e4b52fffcf2fb203d0352a5722fa5151696db768933e41e1e591bb" dependencies = [ "chrono", - "educe 0.5.11", "inherent", "ordered-float 3.9.2", "rust_decimal", @@ -5481,9 +5521,9 @@ dependencies = [ [[package]] name = "sea-query-binder" -version = "0.6.0" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "754965d4aee6145bec25d0898e5c931e6c22859789ce62fd85a42a15ed5a8ce3" +checksum = "b0019f47430f7995af63deda77e238c17323359af241233ec768aba1faea7608" dependencies = [ "chrono", "rust_decimal", @@ -5495,22 +5535,23 @@ dependencies = [ [[package]] name = "sea-query-derive" -version = "0.4.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25a82fcb49253abcb45cdcb2adf92956060ec0928635eb21b4f7a6d8f25ab0bc" +checksum = "9834af2c4bd8c5162f00c89f1701fb6886119a88062cf76fe842ea9e232b9839" dependencies = [ + "darling", "heck 0.4.1", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.85", "thiserror", ] [[package]] name = "sea-schema" -version = "0.15.0" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad52149fc81836ea7424c3425d8f6ed8ad448dd16d2e4f6a3907ba46f3f2fd78" +checksum = "aab1592d17860a9a8584d9b549aebcd06f7bdc3ff615f71752486ba0b05b1e6e" dependencies = [ "futures", "sea-query", @@ -5526,7 +5567,7 @@ dependencies = [ "heck 0.4.1", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.85", ] [[package]] @@ -5578,9 +5619,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.11.1" +version = "2.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75da29fe9b9b08fe9d6b22b5b4bcbc75d8db3aa31e639aa56bb62e9d46bfceaf" +checksum = "ea4a292869320c0272d7bc55a5a6aafaff59b4f63404a003887b679a2e05b4b6" dependencies = [ "core-foundation-sys", "libc", @@ -5613,9 +5654,9 @@ checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" [[package]] name = "serde" -version = "1.0.210" +version = "1.0.214" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8e3592472072e6e22e0a54d5904d9febf8508f65fb8552499a1abc7d1078c3a" +checksum = "f55c3193aca71c12ad7890f1785d2b73e1b9f63a0bbc353c08ef26fe03fc56b5" dependencies = [ "serde_derive", ] @@ -5644,22 +5685,22 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.210" +version = "1.0.214" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f" +checksum = "de523f781f095e28fa605cdce0f8307e451cc0fd14e2eb4cd2e98a355b147766" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.85", ] [[package]] name = "serde_json" -version = "1.0.128" +version = "1.0.132" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ff5456707a1de34e7e37f2a6fd3d3f808c318259cbd01ab6377795054b483d8" +checksum = "d726bfaff4b320266d395898905d0eba0345aae23b54aee3a737e260fd46db03" dependencies = [ - "indexmap 2.5.0", + "indexmap 2.6.0", "itoa", "memchr", "ryu", @@ -5687,9 +5728,9 @@ dependencies = [ [[package]] name = "serde_spanned" -version = "0.6.7" +version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb5b1b31579f3811bf615c144393417496f152e12ac8b7663bf664f4a815306d" +checksum = "87607cb1398ed59d48732e575a4c28a7a8ebf2454b964fe3f224f2afc07909e1" dependencies = [ "serde", ] @@ -5732,7 +5773,7 @@ dependencies = [ "chrono", "hex", "indexmap 1.9.3", - "indexmap 2.5.0", + "indexmap 2.6.0", "serde", "serde_derive", "serde_json", @@ -5749,7 +5790,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.85", ] [[package]] @@ -5761,7 +5802,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.85", ] [[package]] @@ -5770,7 +5811,7 @@ version = "0.9.34+deprecated" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47" dependencies = [ - "indexmap 2.5.0", + "indexmap 2.6.0", "itoa", "ryu", "serde", @@ -5860,9 +5901,9 @@ dependencies = [ [[package]] name = "simdutf8" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f27f6278552951f1f2b8cf9da965d10969b2efdea95a6ec47987ab46edfe263a" +checksum = "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e" [[package]] name = "siphasher" @@ -5894,6 +5935,9 @@ name = "smallvec" version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" +dependencies = [ + "serde", +] [[package]] name = "socket2" @@ -5911,7 +5955,7 @@ version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a0f85e838c6093957978793ece2c0893c838da8dd5bcab0ff6f57fcaa8fc8ee9" dependencies = [ - "reqwest 0.12.8", + "reqwest 0.12.9", "serde", "serde_json", "serde_with 3.11.0", @@ -5959,9 +6003,9 @@ dependencies = [ [[package]] name = "sqlformat" -version = "0.2.4" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f895e3734318cc55f1fe66258926c9b910c124d47520339efecbb6c59cec7c1f" +checksum = "7bba3a93db0cc4f7bdece8bb09e77e2e785c20bfebf79eb8340ed80708048790" dependencies = [ "nom", "unicode_categories", @@ -5969,9 +6013,9 @@ dependencies = [ [[package]] name = "sqlx" -version = "0.7.4" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9a2ccff1a000a5a59cd33da541d9f2fdcd9e6e8229cc200565942bff36d0aaa" +checksum = "93334716a037193fac19df402f8571269c84a00852f6a7066b5d2616dcd64d3e" dependencies = [ "sqlx-core", "sqlx-macros", @@ -5982,11 +6026,10 @@ dependencies = [ [[package]] name = "sqlx-core" -version = "0.7.4" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24ba59a9342a3d9bab6c56c118be528b27c9b60e490080e9711a04dccac83ef6" +checksum = "d4d8060b456358185f7d50c55d9b5066ad956956fddec42ee2e8567134a8936e" dependencies = [ - "ahash 0.8.11", "atoi", "byteorder", "bytes", @@ -5994,15 +6037,16 @@ dependencies = [ "crc", "crossbeam-queue", "either", - "event-listener 2.5.3", + "event-listener", "futures-channel", "futures-core", "futures-intrusive", "futures-io", "futures-util", + "hashbrown 0.14.5", "hashlink", "hex", - "indexmap 2.5.0", + "indexmap 2.6.0", "log", "memchr", "native-tls", @@ -6010,8 +6054,8 @@ dependencies = [ "paste", "percent-encoding", "rust_decimal", - "rustls 0.21.12", - "rustls-pemfile 1.0.4", + "rustls 0.23.16", + "rustls-pemfile 2.2.0", "serde", "serde_json", "sha2", @@ -6023,31 +6067,31 @@ dependencies = [ "tracing", "url", "uuid", - "webpki-roots", + "webpki-roots 0.26.6", ] [[package]] name = "sqlx-macros" -version = "0.7.4" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ea40e2345eb2faa9e1e5e326db8c34711317d2b5e08d0d5741619048a803127" +checksum = "cac0692bcc9de3b073e8d747391827297e075c7710ff6276d9f7a1f3d58c6657" dependencies = [ "proc-macro2", "quote", "sqlx-core", "sqlx-macros-core", - "syn 1.0.109", + "syn 2.0.85", ] [[package]] name = "sqlx-macros-core" -version = "0.7.4" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5833ef53aaa16d860e92123292f1f6a3d53c34ba8b1969f152ef1a7bb803f3c8" +checksum = "1804e8a7c7865599c9c79be146dc8a9fd8cc86935fa641d3ea58e5f0688abaa5" dependencies = [ "dotenvy", "either", - "heck 0.4.1", + "heck 0.5.0", "hex", "once_cell", "proc-macro2", @@ -6059,7 +6103,7 @@ dependencies = [ "sqlx-mysql", "sqlx-postgres", "sqlx-sqlite", - "syn 1.0.109", + "syn 2.0.85", "tempfile", "tokio", "url", @@ -6067,12 +6111,12 @@ dependencies = [ [[package]] name = "sqlx-mysql" -version = "0.7.4" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ed31390216d20e538e447a7a9b959e06ed9fc51c37b514b46eb758016ecd418" +checksum = "64bb4714269afa44aef2755150a0fc19d756fb580a67db8885608cf02f47d06a" dependencies = [ "atoi", - "base64 0.21.7", + "base64 0.22.1", "bitflags 2.6.0", "byteorder", "bytes", @@ -6112,12 +6156,12 @@ dependencies = [ [[package]] name = "sqlx-postgres" -version = "0.7.4" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c824eb80b894f926f89a0b9da0c7f435d27cdd35b8c655b114e58223918577e" +checksum = "6fa91a732d854c5d7726349bb4bb879bb9478993ceb764247660aee25f67c2f8" dependencies = [ "atoi", - "base64 0.21.7", + "base64 0.22.1", "bitflags 2.6.0", "byteorder", "chrono", @@ -6153,9 +6197,9 @@ dependencies = [ [[package]] name = "sqlx-sqlite" -version = "0.7.4" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b244ef0a8414da0bed4bb1910426e890b19e5e9bccc27ada6b797d05c55ae0aa" +checksum = "d5b2cf34a45953bfd3daaf3db0f7a7878ab9b7a6b91b422d24a7a9e4c857b680" dependencies = [ "atoi", "chrono", @@ -6169,10 +6213,10 @@ dependencies = [ "log", "percent-encoding", "serde", + "serde_urlencoded", "sqlx-core", "tracing", "url", - "urlencoding", "uuid", ] @@ -6184,22 +6228,22 @@ checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" [[package]] name = "stacker" -version = "0.1.15" +version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c886bd4480155fd3ef527d45e9ac8dd7118a898a46530b7b94c3e21866259fce" +checksum = "799c883d55abdb5e98af1a7b3f23b9b6de8ecada0ecac058672d7635eb48ca7b" dependencies = [ "cc", "cfg-if", "libc", "psm", - "winapi", + "windows-sys 0.59.0", ] [[package]] name = "starbase_styles" -version = "0.4.2" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44854a14e28e3b1d602d802576162380504df73efae50d4b901934d25579524b" +checksum = "49d8a8222c97b23595fe393ac35d62b88942bdc7e89c8c88736d9ea2c986dbae" dependencies = [ "dirs", "owo-colors", @@ -6305,7 +6349,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.77", + "syn 2.0.85", ] [[package]] @@ -6345,9 +6389,9 @@ dependencies = [ [[package]] name = "supports-color" -version = "3.0.0" +version = "3.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9829b314621dfc575df4e409e79f9d6a66a3bd707ab73f23cb4aa3a854ac854f" +checksum = "8775305acf21c96926c900ad056abeef436701108518cf890020387236ac5a77" dependencies = [ "is_ci", ] @@ -6365,9 +6409,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.77" +version = "2.0.85" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f35bcdf61fd8e7be6caf75f429fdca8beb3ed76584befb503b1569faee373ed" +checksum = "5023162dfcd14ef8f32034d8bcd4cc5ddc61ef7a247c024a33e24e1f24d21b56" dependencies = [ "proc-macro2", "quote", @@ -6383,7 +6427,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.85", ] [[package]] @@ -6409,7 +6453,7 @@ checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.85", ] [[package]] @@ -6425,9 +6469,9 @@ dependencies = [ [[package]] name = "system-configuration" -version = "0.6.0" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "658bc6ee10a9b4fcf576e9b0819d95ec16f4d2c02d39fd83ac1c8789785c4a42" +checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" dependencies = [ "bitflags 2.6.0", "core-foundation", @@ -6468,9 +6512,9 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "tempfile" -version = "3.12.0" +version = "3.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04cbcdd0c794ebb0d4cf35e88edd2f7d2c4c3e9a5a6dab322839b321c6a87a64" +checksum = "f0f2c9fc62d0beef6951ccffd757e241266a2c833136efbe35af6cd2567dca5b" dependencies = [ "cfg-if", "fastrand", @@ -6503,22 +6547,22 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.63" +version = "1.0.65" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724" +checksum = "5d11abd9594d9b38965ef50805c5e469ca9cc6f197f883f717e0269a3057b3d5" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.63" +version = "1.0.65" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" +checksum = "ae71770322cbd277e69d762a16c444af02aa0575ac0d174f0b9562d3b37f8602" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.85", ] [[package]] @@ -6589,9 +6633,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.40.0" +version = "1.41.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2b070231665d27ad9ec9b8df639893f46727666c6767db40317fbe920a5d998" +checksum = "145f3413504347a2be84393cc8a7d2fb4d863b375909ea59f2158261aa258bbb" dependencies = [ "backtrace", "bytes", @@ -6613,7 +6657,7 @@ checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.85", ] [[package]] @@ -6653,16 +6697,16 @@ version = "0.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0c7bc40d0e5a97695bb96e27995cd3a08538541b0a846f65bba7a359f36700d4" dependencies = [ - "rustls 0.23.12", + "rustls 0.23.16", "rustls-pki-types", "tokio", ] [[package]] name = "tokio-stream" -version = "0.1.15" +version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "267ac89e0bec6e691e5813911606935d77c476ff49024f98abcea3e7b15e37af" +checksum = "4f4e6ce100d0eb49a2734f8c0812bcd324cf357d21810932c5df6b96ef2b86f1" dependencies = [ "futures-core", "pin-project-lite", @@ -6704,7 +6748,7 @@ dependencies = [ "serde", "serde_spanned", "toml_datetime", - "toml_edit 0.22.20", + "toml_edit", ] [[package]] @@ -6718,26 +6762,15 @@ dependencies = [ [[package]] name = "toml_edit" -version = "0.21.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1" -dependencies = [ - "indexmap 2.5.0", - "toml_datetime", - "winnow 0.5.40", -] - -[[package]] -name = "toml_edit" -version = "0.22.20" +version = "0.22.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "583c44c02ad26b0c3f3066fe629275e50627026c51ac2e595cca4c230ce1ce1d" +checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5" dependencies = [ - "indexmap 2.5.0", + "indexmap 2.6.0", "serde", "serde_spanned", "toml_datetime", - "winnow 0.6.18", + "winnow", ] [[package]] @@ -6747,8 +6780,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" dependencies = [ "futures-core", - "futures-util", - "pin-project", "pin-project-lite", "tokio", "tokio-util", @@ -6768,6 +6799,7 @@ dependencies = [ "pin-project-lite", "sync_wrapper 0.1.2", "tokio", + "tokio-util", "tower-layer", "tower-service", "tracing", @@ -6823,7 +6855,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.85", ] [[package]] @@ -6934,9 +6966,9 @@ checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" [[package]] name = "ucd-trie" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed646292ffc8188ef8ea4d1e0e0150fb15a5c2e12ad9b8fc191ae7a8a7f3c4b9" +checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971" [[package]] name = "ulid" @@ -6951,57 +6983,54 @@ dependencies = [ [[package]] name = "unicase" -version = "2.7.0" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7d2d4dafb69621809a81864c9c1b864479e1235c0dd4e199924b9742439ed89" -dependencies = [ - "version_check", -] +checksum = "7e51b68083f157f853b6379db119d1c1be0e6e4dec98101079dec41f6f5cf6df" [[package]] name = "unicode-bidi" -version = "0.3.15" +version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" +checksum = "5ab17db44d7388991a428b2ee655ce0c212e862eff1768a455c58f9aad6e7893" [[package]] name = "unicode-id" -version = "0.3.4" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1b6def86329695390197b82c1e244a54a131ceb66c996f2088a3876e2ae083f" +checksum = "10103c57044730945224467c09f71a4db0071c123a0648cc3e818913bde6b561" [[package]] name = "unicode-ident" -version = "1.0.12" +version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" +checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe" [[package]] name = "unicode-normalization" -version = "0.1.23" +version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5" +checksum = "5033c97c4262335cded6d6fc3e5c18ab755e1a3dc96376350f3d8e9f009ad956" dependencies = [ "tinyvec", ] [[package]] name = "unicode-properties" -version = "0.1.2" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52ea75f83c0137a9b98608359a5f1af8144876eb67bcb1ce837368e906a9f524" +checksum = "e70f2a8b45122e719eb623c01822704c4e0907e7e426a05927e1a1cfff5b75d0" [[package]] name = "unicode-segmentation" -version = "1.11.0" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202" +checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" [[package]] name = "unicode-width" -version = "0.1.13" +version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0336d538f7abc86d282a4189614dfaa90810dfc2c6f6427eaf88e16311dd225d" +checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" [[package]] name = "unicode_categories" @@ -7011,9 +7040,9 @@ checksum = "39ec24b3121d976906ece63c9daad25b85969647682eee313cb5779fdd69e14e" [[package]] name = "unkey" -version = "0.4.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0e8f3f2f069033aa3fa93650025c02296e830dda5f5f0631004005fef436d49" +checksum = "23e373abf7c2481098c5fdae2524a2d796574da6cf603e32b1505804762d501e" dependencies = [ "lazy_static", "reqwest 0.11.27", @@ -7054,19 +7083,13 @@ dependencies = [ "serde", ] -[[package]] -name = "urlencoding" -version = "2.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da" - [[package]] name = "user-models" version = "0.1.0" dependencies = [ "async-graphql", "common-models", - "educe 0.6.0", + "educe", "enums", "fitness-models", "sea-orm", @@ -7144,9 +7167,9 @@ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "uuid" -version = "1.10.0" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81dfa00651efa65069b0b6b651f4aaa31ba9e3c3ce0137aaad053604ee7e0314" +checksum = "f8c5f0a0af699448548ad1a2fbf920fb4bee257eae39953ba95cb84891a0446a" dependencies = [ "getrandom", "serde", @@ -7205,9 +7228,9 @@ checksum = "b8dad83b4f25e74f184f64c43b150b91efe7647395b42289f38e50566d82855b" [[package]] name = "wasm-bindgen" -version = "0.2.93" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a82edfc16a6c469f5f44dc7b571814045d60404b55a0ee849f9bcfa2e63dd9b5" +checksum = "128d1e363af62632b8eb57219c8fd7877144af57558fb2ef0368d0087bddeb2e" dependencies = [ "cfg-if", "once_cell", @@ -7216,24 +7239,24 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.93" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9de396da306523044d3302746f1208fa71d7532227f15e347e2d93e4145dd77b" +checksum = "cb6dd4d3ca0ddffd1dd1c9c04f94b868c37ff5fac97c30b97cff2d74fce3a358" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.85", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.43" +version = "0.4.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61e9300f63a621e96ed275155c108eb6f843b6a26d053f122ab69724559dc8ed" +checksum = "cc7ec4f8827a71586374db3e87abdb5a2bb3a15afed140221307c3ec06b1f63b" dependencies = [ "cfg-if", "js-sys", @@ -7243,9 +7266,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.93" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "585c4c91a46b072c92e908d99cb1dcdf95c5218eeb6f3bf1efa991ee7a68cccf" +checksum = "e79384be7f8f5a9dd5d7167216f022090cf1f9ec128e6e6a482a2cb5c5422c56" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -7253,28 +7276,28 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.93" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836" +checksum = "26c6ab57572f7a24a4985830b120de1594465e5d500f24afe89e16b4e833ef68" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.85", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.93" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c62a0a307cb4a311d3a07867860911ca130c3494e8c2719593806c08bc5d0484" +checksum = "65fc09f10666a9f147042251e0dda9c18f166ff7de300607007e96bdebc1068d" [[package]] name = "wasm-streams" -version = "0.4.0" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b65dc4c90b63b118468cf747d8bf3566c1913ef60be765b5730ead9e0a3ba129" +checksum = "15053d8d85c7eccdbefef60f06769760a563c7f0a9d6902a13d35c7800b0ad65" dependencies = [ "futures-util", "js-sys", @@ -7285,9 +7308,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.70" +version = "0.3.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26fdeaafd9bd129f65e7c031593c24d62186301e0c72c8978fa1678be7d532c0" +checksum = "f6488b90108c040df0fe62fa815cbdee25124641df01814dd7282749234c6112" dependencies = [ "js-sys", "wasm-bindgen", @@ -7309,13 +7332,22 @@ version = "0.25.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5f20c57d8d7db6d3b86154206ae5d8fba62dd39573114de97c2cb0578251f8e1" +[[package]] +name = "webpki-roots" +version = "0.26.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "841c67bff177718f1d4dfefde8d8f0e78f9b6589319ba88312f567fc5841a958" +dependencies = [ + "rustls-pki-types", +] + [[package]] name = "whoami" -version = "1.5.1" +version = "1.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a44ab49fad634e88f55bf8f9bb3abd2f27d7204172a112c7c9987e01c1c94ea9" +checksum = "372d5b87f58ec45c384ba03563b03544dc5fadc3983e434b286913f5b4a9bb6d" dependencies = [ - "redox_syscall 0.4.1", + "redox_syscall", "wasite", ] @@ -7540,18 +7572,9 @@ checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "winnow" -version = "0.5.40" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" -dependencies = [ - "memchr", -] - -[[package]] -name = "winnow" -version = "0.6.18" +version = "0.6.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68a9bda4691f099d435ad181000724da8e5899daa10713c2d432552b9ccd3a6f" +checksum = "36c1fec1a2bb5866f07c25f68c26e565c4c200aebb96d7e55710c19d3e8ac49b" dependencies = [ "memchr", ] @@ -7589,9 +7612,9 @@ dependencies = [ [[package]] name = "xml-rs" -version = "0.8.21" +version = "0.8.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "539a77ee7c0de333dcc6da69b177380a0b81e0dacfa4f7344c465a36871ee601" +checksum = "af4e2e2f7cba5a093896c1e150fbfe177d1883e7448200efb81d40b9d339ef26" [[package]] name = "xmlparser" @@ -7599,6 +7622,12 @@ version = "0.13.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "66fee0b777b0f5ac1c69bb06d361268faafa61cd4682ae064a171c16c433e9e4" +[[package]] +name = "yansi" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfe53a6657fd280eaa890a3bc59152892ffa3e30101319d168b781ed6529b049" + [[package]] name = "yoke" version = "0.7.4" @@ -7619,7 +7648,7 @@ checksum = "28cc31741b18cb6f1d5ff12f5b7523e3d6eb0852bbbad19d73905511d9849b95" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.85", "synstructure", ] @@ -7641,7 +7670,7 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.85", ] [[package]] @@ -7661,7 +7690,7 @@ checksum = "0ea7b4a3637ea8669cedf0f1fd5c286a17f3de97b8dd5a70a6c167a1730e63a5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.85", "synstructure", ] @@ -7690,5 +7719,5 @@ checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.85", ] diff --git a/Cargo.toml b/Cargo.toml index 15aa37cba9..fb76d04975 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -47,8 +47,8 @@ members = [ resolver = "2" [workspace.dependencies] -anyhow = "=1.0.89" -apalis = { version = "=0.5.3", features = ["cron", "limit"] } +anyhow = "=1.0.91" +apalis = { version = "=0.5.5", features = ["cron", "limit"] } argon2 = "=0.6.0-pre.1" async-graphql = { version = "=7.0.11", features = [ "chrono", @@ -57,7 +57,7 @@ async-graphql = { version = "=7.0.11", features = [ "tracing", ] } async-trait = "=0.1.83" -aws-sdk-s3 = { version = "=1.54.0", features = ["behavior-version-latest"] } +aws-sdk-s3 = { version = "=1.58.0", features = ["behavior-version-latest"] } axum = { version = "=0.7.7", features = ["macros", "multipart"] } boilermates = "=0.3.0" chrono = "=0.4.38" @@ -82,7 +82,7 @@ markdown = "=1.0.0-alpha.21" moka = { version = "=0.12.8", features = ["future"] } nanoid = "=0.4.0" openidconnect = "=3.5.0" -regex = "=1.11.0" +regex = "=1.11.1" rust_decimal = "=1.36.0" rust_decimal_macros = "=1.36.0" schematic = { version = "=0.17.5", features = [ @@ -99,7 +99,7 @@ schematic = { version = "=0.17.5", features = [ "validate", "yaml", ], default-features = false } -sea-orm = { version = "=1.0.1", features = [ +sea-orm = { version = "=1.1.0", features = [ "debug-print", "postgres-array", "macros", @@ -110,17 +110,17 @@ sea-orm = { version = "=1.0.1", features = [ "with-rust_decimal", "with-uuid", ], default-features = false } -sea-orm-migration = "=1.0.1" -sea-query = "=0.31.1" -serde = { version = "=1.0.210", features = ["derive"] } -serde_json = "=1.0.128" +sea-orm-migration = "=1.1.0" +sea-query = "=0.32.0" +serde = { version = "=1.0.214", features = ["derive"] } +serde_json = "=1.0.132" serde_with = { version = "=3.11.0", features = ["chrono_0_4"] } slug = "=0.1.6" strum = { version = "=0.26.3", features = ["derive"] } -reqwest = { version = "=0.12.8", features = ["json", "stream"] } -tokio = { version = "=1.40.0", features = ["full"] } +reqwest = { version = "=0.12.9", features = ["json", "stream"] } +tokio = { version = "=1.41.0", features = ["full"] } tracing = { version = "=0.1.40", features = ["attributes"] } -uuid = { version = "=1.10.0", features = ["v4"], default-features = false } +uuid = { version = "=1.11.0", features = ["v4"], default-features = false } [profile.release] lto = true diff --git a/apps/backend/Cargo.toml b/apps/backend/Cargo.toml index 018ce63dfa..1966b38fe4 100644 --- a/apps/backend/Cargo.toml +++ b/apps/backend/Cargo.toml @@ -59,6 +59,6 @@ tower = { version = "=0.4.13", features = ["buffer"] } tower-http = { version = "=0.5.2", features = ["catch-panic", "cors", "trace"] } tracing = { workspace = true } tracing-subscriber = "=0.3.18" -unkey = "=0.4.0" +unkey = "=0.5.0" user-resolver = { path = "../../crates/resolvers/user" } user-service = { path = "../../crates/services/user" } diff --git a/apps/frontend/app/lib/generals.ts b/apps/frontend/app/lib/generals.ts index f89075fc24..41100a1a73 100644 --- a/apps/frontend/app/lib/generals.ts +++ b/apps/frontend/app/lib/generals.ts @@ -79,15 +79,14 @@ export const queryClient = new QueryClient({ defaultOptions: { queries: { staleTime: Number.POSITIVE_INFINITY } }, }); -export const getDateFromTimeSpan = (timeSpan: TimeSpan) => { - return match(timeSpan) +export const getDateFromTimeSpan = (timeSpan: TimeSpan) => + match(timeSpan) .with(TimeSpan.Last7Days, () => dayjs().subtract(7, "days")) .with(TimeSpan.Last30Days, () => dayjs().subtract(30, "days")) .with(TimeSpan.Last90Days, () => dayjs().subtract(90, "days")) .with(TimeSpan.Last365Days, () => dayjs().subtract(365, "days")) .with(TimeSpan.AllTime, () => null) .exhaustive(); -}; export enum FitnessEntity { Workouts = "workouts", @@ -126,7 +125,7 @@ export const sendNotificationToServiceWorker = ( body: string, tag?: AppServiceWorkerNotificationTag, data?: AppServiceWorkerNotificationData, -) => { +) => navigator.serviceWorker.ready.then((registration) => { registration.showNotification(title, { tag, @@ -136,7 +135,6 @@ export const sendNotificationToServiceWorker = ( icon: LOGO_IMAGE_URL, }); }); -}; export type AppServiceWorkerMessageData = { event: "remove-timer-completed-notification"; @@ -145,7 +143,7 @@ export type AppServiceWorkerMessageData = { export const postMessageToServiceWorker = ( message: AppServiceWorkerMessageData, ) => { - if (navigator.serviceWorker.controller) + if (navigator.serviceWorker?.controller) navigator.serviceWorker.controller.postMessage(message); }; @@ -254,8 +252,8 @@ export enum Verb { Read = 0, } -export const getVerb = (verb: Verb, lot: MediaLot) => { - return match(verb) +export const getVerb = (verb: Verb, lot: MediaLot) => + match(verb) .with(Verb.Read, () => { return match(lot) .with(MediaLot.Book, MediaLot.Manga, () => "read") @@ -277,7 +275,6 @@ export const getVerb = (verb: Verb, lot: MediaLot) => { }); }) .otherwise(() => ""); -}; /** * Generate a random color based on a seed. @@ -286,9 +283,7 @@ export const getVerb = (verb: Verb, lot: MediaLot) => { export const generateColor = (seed: number) => { const color = Math.floor(Math.abs(Math.sin(seed) * 16777215)); let newColor = color.toString(16); - while (newColor.length < 6) { - newColor = `0${color}`; - } + while (newColor.length < 6) newColor = `0${color}`; return `#${newColor}`; }; @@ -297,25 +292,22 @@ export const generateColor = (seed: number) => { */ export const getStringAsciiValue = (input: string) => { let total = 0; - for (let i = 0; i < input.length; i++) { - total += input.charCodeAt(i); - } + for (let i = 0; i < input.length; i++) total += input.charCodeAt(i); return total; }; -export const getMetadataIcon = (lot: MediaLot) => { - return match(lot) +export const getMetadataIcon = (lot: MediaLot) => + match(lot) .with(MediaLot.Book, () => IconBook) + .with(MediaLot.Manga, () => IconBooks) .with(MediaLot.Movie, () => IconDeviceTv) + .with(MediaLot.Anime, () => IconDeviceTvOld) + .with(MediaLot.VisualNovel, () => IconBook2) .with(MediaLot.Show, () => IconDeviceDesktop) - .with(MediaLot.VideoGame, () => IconBrandAppleArcade) - .with(MediaLot.AudioBook, () => IconHeadphones) .with(MediaLot.Podcast, () => IconMicrophone) - .with(MediaLot.Manga, () => IconDeviceTvOld) - .with(MediaLot.Anime, () => IconBooks) - .with(MediaLot.VisualNovel, () => IconBook2) + .with(MediaLot.AudioBook, () => IconHeadphones) + .with(MediaLot.VideoGame, () => IconBrandAppleArcade) .exhaustive(); -}; export const applicationBaseUrl = typeof window !== "undefined" ? window.location.origin : ""; diff --git a/apps/frontend/package.json b/apps/frontend/package.json index e372889b1e..a3d0a45abf 100644 --- a/apps/frontend/package.json +++ b/apps/frontend/package.json @@ -27,7 +27,7 @@ "@ryot/generated": "workspace:*", "@ryot/graphql": "workspace:*", "@ryot/ts-utils": "workspace:*", - "@tabler/icons-react": "3.20.0", + "@tabler/icons-react": "3.21.0", "@tanstack/react-query": "5.59.16", "@tanstack/react-query-devtools": "5.59.16", "buffer": "6.0.3", @@ -47,20 +47,20 @@ "js-cookie": "3.0.5", "jwt-decode": "4.0.0", "mantine-datatable": "7.12.4", - "nanoid": "5.0.7", + "nanoid": "5.0.8", "react": "18.3.1", "react-confirm": "0.3.0-7", "react-dom": "18.3.1", "react-virtuoso": "4.12.0", "react-webcam": "7.2.0", - "recharts": "2.13.0", + "recharts": "2.13.1", "remix-routes": "1.7.7", "remix-utils": "7.7.0", "tiny-invariant": "1.3.3", "ts-pattern": "5.5.0", "ufo": "1.5.4", "usehooks-ts": "3.1.0", - "uuid": "10.0.0", + "uuid": "11.0.2", "zod": "3.23.8", "zodix": "0.4.4" }, @@ -68,7 +68,7 @@ "@bitprojects/umami-logger-typescript": "1.0.10", "@remix-pwa/dev": "3.1.0", "@remix-run/dev": "2.13.1", - "@types/cookie": "0.6.0", + "@types/cookie": "1.0.0", "@types/crypto-js": "4.2.2", "@types/howler": "2.2.12", "@types/js-cookie": "3.0.6", diff --git a/apps/website/package.json b/apps/website/package.json index 0e9ba3de54..f7bc4e9add 100644 --- a/apps/website/package.json +++ b/apps/website/package.json @@ -9,7 +9,7 @@ "dependencies": { "@conform-to/zod": "1.2.2", "@isaacs/ttlcache": "1.4.1", - "@paddle/paddle-js": "1.2.3", + "@paddle/paddle-js": "1.3.1", "@paddle/paddle-node-sdk": "1.9.1", "@radix-ui/react-label": "2.1.0", "@radix-ui/react-slot": "1.1.0", @@ -22,27 +22,27 @@ "@ryot/graphql": "workspace:*", "@ryot/transactional": "workspace:*", "@ryot/ts-utils": "workspace:*", - "@tabler/icons-react": "3.20.0", + "@tabler/icons-react": "3.21.0", "@unkey/api": "0.26.2", "class-variance-authority": "0.7.0", "clsx": "2.1.1", "crypto-js": "4.2.0", "dayjs": "1.11.13", "drizzle-orm": "0.35.3", - "embla-carousel-autoplay": "8.3.0", - "embla-carousel-react": "8.3.0", + "embla-carousel-autoplay": "8.3.1", + "embla-carousel-react": "8.3.1", "graphql": "16.9.0", "graphql-request": "7.1.0", "humanize-duration-ts": "2.1.1", - "input-otp": "1.2.4", + "input-otp": "1.2.5", "isbot": "5.1.17", "lodash": "4.17.21", - "lucide-react": "0.453.0", - "nanoid": "5.0.7", + "lucide-react": "0.454.0", + "nanoid": "5.0.8", "next-themes": "0.3.0", - "nodemailer": "6.9.15", - "openid-client": "5.6.5", - "postgres": "3.4.4", + "nodemailer": "6.9.16", + "openid-client": "5.7.0", + "postgres": "3.4.5", "react": "18.3.1", "react-dom": "18.3.1", "remix-routes": "1.7.7", @@ -59,7 +59,7 @@ "@remix-run/dev": "2.13.1", "@tailwindcss/typography": "0.5.15", "@types/crypto-js": "^4.2.2", - "@types/lodash": "4.17.12", + "@types/lodash": "4.17.13", "@types/nodemailer": "6.4.16", "@types/react": "18.3.12", "@types/react-dom": "18.3.1", diff --git a/crates/migrations/src/lib.rs b/crates/migrations/src/lib.rs index 27e25c0bb3..1883593b04 100644 --- a/crates/migrations/src/lib.rs +++ b/crates/migrations/src/lib.rs @@ -59,6 +59,7 @@ pub use m20230502_create_genre::{ pub use m20230504_create_collection::Collection as AliasedCollection; pub use m20230505_create_review::Review as AliasedReview; pub use m20230822_create_exercise::Exercise as AliasedExercise; +pub use m20230912_create_calendar_event::CalendarEvent as AliasedCalendarEvent; pub use m20231016_create_collection_to_entity::CollectionToEntity as AliasedCollectionToEntity; pub use m20231017_create_user_to_entity::UserToEntity as AliasedUserToEntity; diff --git a/crates/models/fitness/Cargo.toml b/crates/models/fitness/Cargo.toml index aa290bd3b9..11ff7e05c3 100644 --- a/crates/models/fitness/Cargo.toml +++ b/crates/models/fitness/Cargo.toml @@ -4,16 +4,12 @@ version = "0.1.0" edition = "2021" [dependencies] -application-utils = { path = "../../utils/application" } async-graphql = { workspace = true } -async-trait = { workspace = true } common-models = { path = "../../models/common" } derive_more = { workspace = true } educe = { workspace = true } enums = { path = "../../enums" } -file-storage-service = { path = "../../services/file-storage" } rust_decimal = { workspace = true } -rust_decimal_macros = { workspace = true } schematic = { workspace = true } sea-orm = { workspace = true } serde = { workspace = true } diff --git a/crates/models/fitness/src/lib.rs b/crates/models/fitness/src/lib.rs index 637683f50e..1ca77a5a75 100644 --- a/crates/models/fitness/src/lib.rs +++ b/crates/models/fitness/src/lib.rs @@ -1,17 +1,13 @@ use std::collections::HashMap; -use application_utils::GraphqlRepresentation; -use async_graphql::{Enum, InputObject, Result as GraphqlResult, SimpleObject}; -use async_trait::async_trait; +use async_graphql::{Enum, InputObject, SimpleObject}; use common_models::{SearchInput, StoredUrl, UpdateComplexJsonInput}; use derive_more::{Add, AddAssign, Sum}; use educe::Educe; use enums::{ ExerciseEquipment, ExerciseForce, ExerciseLevel, ExerciseLot, ExerciseMechanic, ExerciseMuscle, }; -use file_storage_service::FileStorageService; use rust_decimal::Decimal; -use rust_decimal_macros::dec; use schematic::{ConfigEnum, Schematic}; use sea_orm::{prelude::DateTimeUtc, FromJsonQueryResult, FromQueryResult}; use serde::{Deserialize, Serialize}; @@ -156,22 +152,6 @@ pub struct ExerciseListItem { pub muscles: Vec, } -#[async_trait] -impl GraphqlRepresentation for ExerciseListItem { - async fn graphql_representation( - self, - file_storage_service: &FileStorageService, - ) -> GraphqlResult { - let mut converted_exercise = self.clone(); - if let Some(img) = self.attributes.internal_images.first() { - converted_exercise.image = - Some(file_storage_service.get_stored_asset(img.clone()).await) - } - converted_exercise.muscle = self.muscles.first().cloned(); - Ok(converted_exercise) - } -} - /// The totals of a workout and the different bests achieved. #[derive( Debug, @@ -319,41 +299,6 @@ pub struct WorkoutSetRecord { pub personal_bests: Option>, } -impl WorkoutSetRecord { - // DEV: Formula from https://en.wikipedia.org/wiki/One-repetition_maximum#cite_note-7 - pub fn calculate_one_rm(&self) -> Option { - let mut val = - (self.statistic.weight? * dec!(36.0)).checked_div(dec!(37.0) - self.statistic.reps?); - if let Some(v) = val { - if v <= dec!(0) { - val = None; - } - }; - val - } - - pub fn calculate_volume(&self) -> Option { - Some(self.statistic.weight? * self.statistic.reps?) - } - - pub fn calculate_pace(&self) -> Option { - self.statistic - .distance? - .checked_div(self.statistic.duration?) - } - - pub fn get_personal_best(&self, pb_type: &WorkoutSetPersonalBest) -> Option { - match pb_type { - WorkoutSetPersonalBest::Weight => self.statistic.weight, - WorkoutSetPersonalBest::Time => self.statistic.duration, - WorkoutSetPersonalBest::Reps => self.statistic.reps, - WorkoutSetPersonalBest::OneRm => self.calculate_one_rm(), - WorkoutSetPersonalBest::Volume => self.calculate_volume(), - WorkoutSetPersonalBest::Pace => self.calculate_pace(), - } - } -} - #[derive( Clone, Debug, Deserialize, Serialize, FromJsonQueryResult, Eq, PartialEq, SimpleObject, )] @@ -591,30 +536,6 @@ pub struct UserWorkoutInput { pub supersets: Vec, } -impl UserWorkoutSetRecord { - /// Set the invalid statistics to `None` according to the type of exercise. - pub fn clean_values(&mut self, exercise_lot: &ExerciseLot) { - let mut stats = WorkoutSetStatistic { - ..Default::default() - }; - match exercise_lot { - ExerciseLot::Duration => stats.duration = self.statistic.duration, - ExerciseLot::DistanceAndDuration => { - stats.distance = self.statistic.distance; - stats.duration = self.statistic.duration; - } - ExerciseLot::RepsAndWeight => { - stats.reps = self.statistic.reps; - stats.weight = self.statistic.weight; - } - ExerciseLot::Reps => { - stats.reps = self.statistic.reps; - } - } - self.statistic = stats; - } -} - #[derive(Debug, Serialize, Deserialize, InputObject, Clone)] pub struct ExerciseListFilter { #[graphql(name = "type")] diff --git a/crates/models/media/Cargo.toml b/crates/models/media/Cargo.toml index edc675cd50..8aa5016a83 100644 --- a/crates/models/media/Cargo.toml +++ b/crates/models/media/Cargo.toml @@ -8,8 +8,8 @@ async-graphql = { workspace = true } boilermates = { workspace = true } chrono = { workspace = true } common-models = { path = "../../models/common" } +common-utils = { path = "../../utils/common" } enums = { path = "../../enums" } -file-storage-service = { path = "../../services/file-storage" } rust_decimal = { workspace = true } schematic = { workspace = true } sea-orm = { workspace = true } diff --git a/crates/models/media/src/lib.rs b/crates/models/media/src/lib.rs index fb319a47f8..4555aa7067 100644 --- a/crates/models/media/src/lib.rs +++ b/crates/models/media/src/lib.rs @@ -1,23 +1,23 @@ -use std::{collections::HashSet, fmt}; +use std::collections::HashSet; use async_graphql::{Enum, InputObject, InputType, OneofObject, SimpleObject, Union}; use boilermates::boilermates; -use chrono::{DateTime, NaiveDate, NaiveDateTime}; +use chrono::{NaiveDate, NaiveDateTime}; use common_models::{ CollectionExtraInformation, IdAndNamedObject, SearchInput, StoredUrl, StringIdObject, }; +use common_utils::deserialize_date; use enums::{ EntityLot, ImportSource, IntegrationProvider, MediaLot, MediaSource, NotificationPlatformLot, SeenState, UserLot, Visibility, }; -use file_storage_service::FileStorageService; use rust_decimal::Decimal; use schematic::Schematic; use sea_orm::{ prelude::{Date, DateTimeUtc}, - EnumIter, FromJsonQueryResult, FromQueryResult, Order, + EnumIter, FromJsonQueryResult, FromQueryResult, }; -use serde::{de, Deserialize, Serialize}; +use serde::{Deserialize, Serialize}; use serde_with::skip_serializing_none; use strum::Display; @@ -120,19 +120,6 @@ pub struct PodcastSpecifics { pub total_episodes: usize, } -impl PodcastSpecifics { - pub fn episode_by_number(&self, episode_number: i32) -> Option<&PodcastEpisode> { - self.episodes.iter().find(|e| e.number == episode_number) - } - - pub fn episode_by_name(&self, name: &str) -> Option { - self.episodes - .iter() - .find(|e| e.title == name) - .map(|e| e.number) - } -} - #[derive( Debug, PartialEq, @@ -160,40 +147,6 @@ pub struct PodcastEpisode { pub thumbnail: Option, } -fn deserialize_date<'de, D>(deserializer: D) -> Result -where - D: de::Deserializer<'de>, -{ - struct JsonStringVisitor; - - impl<'de> de::Visitor<'de> for JsonStringVisitor { - type Value = NaiveDate; - - fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result { - formatter.write_str("a number") - } - - fn visit_u64(self, v: u64) -> Result - where - E: de::Error, - { - DateTime::from_timestamp_millis(v.try_into().unwrap()) - .ok_or_else(|| E::custom("Could not convert timestamp")) - .map(|d| d.date_naive()) - } - - fn visit_str(self, v: &str) -> Result - where - E: de::Error, - { - NaiveDate::parse_from_str(v, "%Y-%m-%d") - .map_err(|_| E::custom("Could not convert timestamp")) - } - } - - deserializer.deserialize_any(JsonStringVisitor) -} - #[derive( Debug, PartialEq, @@ -214,24 +167,6 @@ pub struct ShowSpecifics { pub total_episodes: Option, } -impl ShowSpecifics { - pub fn get_episode( - &self, - season_number: i32, - episode_number: i32, - ) -> Option<(&ShowSeason, &ShowEpisode)> { - self.seasons - .iter() - .find(|s| s.season_number == season_number) - .and_then(|s| { - s.episodes - .iter() - .find(|e| e.episode_number == episode_number) - .map(|e| (s, e)) - }) - } -} - #[derive( Debug, PartialEq, @@ -722,34 +657,6 @@ pub struct MetadataVideo { pub source: MetadataVideoSource, } -pub async fn first_metadata_image_as_url( - value: &Option>, - file_storage_service: &FileStorageService, -) -> Option { - if let Some(images) = value { - if let Some(i) = images.first().cloned() { - Some(file_storage_service.get_stored_asset(i.url).await) - } else { - None - } - } else { - None - } -} - -pub async fn metadata_images_as_urls( - value: &Option>, - file_storage_service: &FileStorageService, -) -> Vec { - let mut images = vec![]; - if let Some(imgs) = value { - for i in imgs.clone() { - images.push(file_storage_service.get_stored_asset(i.url).await); - } - } - images -} - /// Comments left in replies to posted reviews. #[skip_serializing_none] #[derive( @@ -1349,15 +1256,6 @@ pub enum GraphqlSortOrder { Asc, } -impl From for Order { - fn from(value: GraphqlSortOrder) -> Self { - match value { - GraphqlSortOrder::Desc => Self::Desc, - GraphqlSortOrder::Asc => Self::Asc, - } - } -} - #[derive(Debug, Serialize, Deserialize, Enum, Clone, PartialEq, Eq, Copy, Default)] pub enum MediaSortBy { LastUpdated, diff --git a/crates/services/collection/Cargo.toml b/crates/services/collection/Cargo.toml index 704ea15057..2e8985e659 100644 --- a/crates/services/collection/Cargo.toml +++ b/crates/services/collection/Cargo.toml @@ -4,6 +4,7 @@ version = "0.1.0" edition = "2021" [dependencies] +application-utils = { path = "../../utils/application" } async-graphql = { workspace = true } common-models = { path = "../../models/common" } database-models = { path = "../../models/database" } diff --git a/crates/services/collection/src/lib.rs b/crates/services/collection/src/lib.rs index 58faf5b7ec..3691114ce4 100644 --- a/crates/services/collection/src/lib.rs +++ b/crates/services/collection/src/lib.rs @@ -1,5 +1,6 @@ use std::sync::Arc; +use application_utils::graphql_to_db_order; use async_graphql::{Error, Result}; use common_models::{ ChangeCollectionToEntityInput, DefaultCollection, SearchDetails, StringIdObject, @@ -224,7 +225,7 @@ impl CollectionService { Expr::col((AliasedPerson::Table, AliasedPerson::BirthDate)).into(), ])), }, - sort.order.into(), + graphql_to_db_order(sort.order), ) .paginate(&self.0.db, take); let mut items = vec![]; diff --git a/crates/services/fitness/src/lib.rs b/crates/services/fitness/src/lib.rs index 3c8ee9f50c..5c49ae4259 100644 --- a/crates/services/fitness/src/lib.rs +++ b/crates/services/fitness/src/lib.rs @@ -414,10 +414,17 @@ impl ExerciseService { .fetch_page((input.search.page.unwrap() - 1).try_into().unwrap()) .await? { - let gql_repr = ex - .graphql_representation(&self.0.file_storage_service) - .await?; - items.push(gql_repr); + let mut converted_exercise = ex.clone(); + if let Some(img) = ex.attributes.internal_images.first() { + converted_exercise.image = Some( + self.0 + .file_storage_service + .get_stored_asset(img.clone()) + .await, + ) + } + converted_exercise.muscle = ex.muscles.first().cloned(); + items.push(converted_exercise); } let next_page = if total - ((input.search.page.unwrap()) * self.0.config.frontend.page_size) > 0 { diff --git a/crates/services/importer/Cargo.toml b/crates/services/importer/Cargo.toml index af3759a665..8991939e2b 100644 --- a/crates/services/importer/Cargo.toml +++ b/crates/services/importer/Cargo.toml @@ -23,7 +23,7 @@ dependent-models = { path = "../../models/dependent" } dependent-utils = { path = "../../utils/dependent" } enums = { path = "../../enums" } fitness-models = { path = "../../models/fitness" } -flate2 = "=1.0.33" +flate2 = "=1.0.34" importer-models = { path = "../../models/importer" } itertools = { workspace = true } media-models = { path = "../../models/media" } diff --git a/crates/services/importer/src/audiobookshelf.rs b/crates/services/importer/src/audiobookshelf.rs index 2b4c91a042..43bf4a58f7 100644 --- a/crates/services/importer/src/audiobookshelf.rs +++ b/crates/services/importer/src/audiobookshelf.rs @@ -1,7 +1,7 @@ use std::future::Future; use anyhow::anyhow; -use application_utils::get_base_http_client; +use application_utils::{get_base_http_client, get_podcast_episode_number_by_name}; use async_graphql::Result; use common_utils::ryot_log; use data_encoding::BASE64; @@ -118,10 +118,9 @@ where ..Default::default() }) .await?; - if let Some(pe) = podcast - .podcast_specifics - .and_then(|p| p.episode_by_name(&episode.title)) - { + if let Some(pe) = podcast.podcast_specifics.and_then(|p| { + get_podcast_episode_number_by_name(&p, &episode.title) + }) { to_return.push(pe); } } diff --git a/crates/services/integration/src/yank/audiobookshelf.rs b/crates/services/integration/src/yank/audiobookshelf.rs index 4a4bc7bbd2..76aab4157d 100644 --- a/crates/services/integration/src/yank/audiobookshelf.rs +++ b/crates/services/integration/src/yank/audiobookshelf.rs @@ -1,7 +1,7 @@ use std::future::Future; use anyhow::{anyhow, Result}; -use application_utils::get_base_http_client; +use application_utils::{get_base_http_client, get_podcast_episode_number_by_name}; use async_graphql::Result as GqlResult; use common_models::DefaultCollection; use common_utils::ryot_log; @@ -108,7 +108,7 @@ impl AudiobookshelfYankIntegration { .unwrap(); match podcast .podcast_specifics - .and_then(|p| p.episode_by_name(&pe.title)) + .and_then(|p| get_podcast_episode_number_by_name(&p, &pe.title)) { Some(episode) => ( format!("{}/{}", item.id, pe.id), diff --git a/crates/services/miscellaneous/src/lib.rs b/crates/services/miscellaneous/src/lib.rs index be7f5a964a..1c736e2cef 100644 --- a/crates/services/miscellaneous/src/lib.rs +++ b/crates/services/miscellaneous/src/lib.rs @@ -4,7 +4,10 @@ use std::{ sync::Arc, }; -use application_utils::get_current_date; +use application_utils::{ + get_current_date, get_podcast_episode_by_number, get_show_episode_by_numbers, + graphql_to_db_order, +}; use async_graphql::{Error, Result}; use background::{ApplicationJob, CoreApplicationJob}; use chrono::{Days, Duration, NaiveDate, Utc}; @@ -43,9 +46,10 @@ use dependent_models::{ use dependent_utils::{ commit_metadata, commit_metadata_group_internal, commit_metadata_internal, commit_person, create_partial_metadata, deploy_after_handle_media_seen_tasks, deploy_background_job, - deploy_update_metadata_job, get_metadata_provider, get_openlibrary_service, - get_tmdb_non_media_service, get_users_and_cte_monitoring_entity, get_users_monitoring_entity, - handle_after_media_seen_tasks, is_metadata_finished_by_user, post_review, progress_update, + deploy_update_metadata_job, first_metadata_image_as_url, get_metadata_provider, + get_openlibrary_service, get_tmdb_non_media_service, get_users_and_cte_monitoring_entity, + get_users_monitoring_entity, handle_after_media_seen_tasks, is_metadata_finished_by_user, + metadata_images_as_urls, post_review, progress_update, queue_media_state_changed_notification_for_user, queue_notifications_to_user_platforms, refresh_collection_to_entity_association, update_metadata_and_notify_users, }; @@ -57,13 +61,12 @@ use futures::TryStreamExt; use itertools::Itertools; use markdown::{to_html_with_options as markdown_to_html_opts, CompileOptions, Options}; use media_models::{ - first_metadata_image_as_url, metadata_images_as_urls, CommitMediaInput, CommitPersonInput, - CreateCustomMetadataInput, CreateOrUpdateReviewInput, CreateReviewCommentInput, - GenreDetailsInput, GenreListItem, GraphqlCalendarEvent, GraphqlMediaAssets, - GraphqlMetadataDetails, GraphqlMetadataGroup, GraphqlVideoAsset, GroupedCalendarEvent, - ImportOrExportItemReviewComment, MediaAssociatedPersonStateChanges, MediaGeneralFilter, - MediaSortBy, MetadataCreator, MetadataCreatorGroupedByRole, MetadataDetails, - MetadataFreeCreator, MetadataGroupSearchInput, MetadataGroupSearchItem, + CommitMediaInput, CommitPersonInput, CreateCustomMetadataInput, CreateOrUpdateReviewInput, + CreateReviewCommentInput, GenreDetailsInput, GenreListItem, GraphqlCalendarEvent, + GraphqlMediaAssets, GraphqlMetadataDetails, GraphqlMetadataGroup, GraphqlVideoAsset, + GroupedCalendarEvent, ImportOrExportItemReviewComment, MediaAssociatedPersonStateChanges, + MediaGeneralFilter, MediaSortBy, MetadataCreator, MetadataCreatorGroupedByRole, + MetadataDetails, MetadataFreeCreator, MetadataGroupSearchInput, MetadataGroupSearchItem, MetadataGroupsListInput, MetadataImage, MetadataImageForMediaDetails, MetadataListInput, MetadataPartialDetails, MetadataSearchInput, MetadataSearchItemResponse, MetadataVideo, MetadataVideoSource, PartialMetadata, PartialMetadataWithoutId, PeopleListInput, @@ -75,7 +78,8 @@ use media_models::{ UserMetadataDetailsShowSeasonProgress, UserUpcomingCalendarEventInput, }; use migrations::{ - AliasedMetadata, AliasedMetadataToGenre, AliasedReview, AliasedSeen, AliasedUserToEntity, + AliasedCalendarEvent, AliasedMetadata, AliasedMetadataToGenre, AliasedReview, AliasedSeen, + AliasedUserToEntity, }; use nanoid::nanoid; use notification_service::send_notification; @@ -779,80 +783,107 @@ ORDER BY RANDOM() LIMIT 10; start_date: Option, end_date: Option, media_limit: Option, + deduplicate: Option, ) -> Result> { #[derive(Debug, FromQueryResult, Clone)] struct CalEvent { id: String, - m_lot: MediaLot, date: NaiveDate, + m_lot: MediaLot, m_title: String, metadata_id: String, m_images: Option>, m_show_specifics: Option, m_podcast_specifics: Option, metadata_show_extra_information: Option, - metadata_podcast_extra_information: Option, metadata_anime_extra_information: Option, + metadata_podcast_extra_information: Option, } - let all_events = CalendarEvent::find() - .column_as( - Expr::col((AliasedMetadata::Table, AliasedMetadata::Lot)), - "m_lot", - ) - .column_as( - Expr::col((AliasedMetadata::Table, AliasedMetadata::Title)), - "m_title", - ) - .column_as( - Expr::col((AliasedMetadata::Table, AliasedMetadata::Images)), - "m_images", - ) - .column_as( - Expr::col((AliasedMetadata::Table, AliasedMetadata::ShowSpecifics)), - "m_show_specifics", - ) - .column_as( - Expr::col((AliasedMetadata::Table, AliasedMetadata::PodcastSpecifics)), - "m_podcast_specifics", - ) - .filter( - Expr::col((AliasedUserToEntity::Table, AliasedUserToEntity::UserId)).eq(user_id), - ) - .inner_join(Metadata) - .join_rev( - JoinType::Join, - UserToEntity::belongs_to(CalendarEvent) - .from(user_to_entity::Column::MetadataId) - .to(calendar_event::Column::MetadataId) - .on_condition(move |left, _right| { - Condition::all().add_option(match only_monitored { - true => Some(Expr::val(UserToMediaReason::Monitoring.to_string()).eq( - PgFunc::any(Expr::col((left, user_to_entity::Column::MediaReason))), - )), - false => None, - }) + + let stmt = Query::select() + .column(Asterisk) + .from_subquery( + CalendarEvent::find() + .apply_if(deduplicate, |query, _v| { + query + .distinct_on([( + AliasedCalendarEvent::Table, + AliasedCalendarEvent::MetadataId, + )]) + .order_by_asc(Expr::col(( + AliasedCalendarEvent::Table, + AliasedCalendarEvent::MetadataId, + ))) + }) + .column_as( + Expr::col((AliasedMetadata::Table, AliasedMetadata::Lot)), + "m_lot", + ) + .column_as( + Expr::col((AliasedMetadata::Table, AliasedMetadata::Title)), + "m_title", + ) + .column_as( + Expr::col((AliasedMetadata::Table, AliasedMetadata::Images)), + "m_images", + ) + .column_as( + Expr::col((AliasedMetadata::Table, AliasedMetadata::ShowSpecifics)), + "m_show_specifics", + ) + .column_as( + Expr::col((AliasedMetadata::Table, AliasedMetadata::PodcastSpecifics)), + "m_podcast_specifics", + ) + .filter( + Expr::col((AliasedUserToEntity::Table, AliasedUserToEntity::UserId)) + .eq(&user_id), + ) + .inner_join(Metadata) + .join_rev( + JoinType::Join, + UserToEntity::belongs_to(CalendarEvent) + .from(user_to_entity::Column::MetadataId) + .to(calendar_event::Column::MetadataId) + .on_condition(move |left, _right| { + Condition::all().add_option(match only_monitored { + true => Some( + Expr::val(UserToMediaReason::Monitoring.to_string()).eq( + PgFunc::any(Expr::col(( + left, + user_to_entity::Column::MediaReason, + ))), + ), + ), + false => None, + }) + }) + .into(), + ) + .order_by_asc(calendar_event::Column::Date) + .apply_if(end_date, |q, v| { + q.filter(calendar_event::Column::Date.gte(v)) }) - .into(), + .apply_if(start_date, |q, v| { + q.filter(calendar_event::Column::Date.lte(v)) + }) + .limit(media_limit) + .into_query(), + Alias::new("sub_query"), ) - .order_by_asc(calendar_event::Column::Date) - .apply_if(end_date, |q, v| { - q.filter(calendar_event::Column::Date.gte(v)) - }) - .apply_if(start_date, |q, v| { - q.filter(calendar_event::Column::Date.lte(v)) - }) - .limit(media_limit) - .into_model::() + .order_by(Alias::new("date"), Order::Asc) + .to_owned(); + let all_events = CalEvent::find_by_statement(self.get_db_stmt(stmt)) .all(&self.0.db) .await?; let mut events = vec![]; for evt in all_events { let mut calc = GraphqlCalendarEvent { - calendar_event_id: evt.id, date: evt.date, - metadata_id: evt.metadata_id, - metadata_title: evt.m_title, metadata_lot: evt.m_lot, + calendar_event_id: evt.id, + metadata_title: evt.m_title, + metadata_id: evt.metadata_id, ..Default::default() }; let mut image = None; @@ -860,7 +891,7 @@ ORDER BY RANDOM() LIMIT 10; if let Some(s) = evt.metadata_show_extra_information { if let Some(sh) = evt.m_show_specifics { - if let Some((_, ep)) = sh.get_episode(s.season, s.episode) { + if let Some((_, ep)) = get_show_episode_by_numbers(&sh, s.season, s.episode) { image = ep.poster_images.first().cloned(); title = Some(ep.name.clone()); } @@ -868,7 +899,7 @@ ORDER BY RANDOM() LIMIT 10; calc.show_extra_information = Some(s); } else if let Some(p) = evt.metadata_podcast_extra_information { if let Some(po) = evt.m_podcast_specifics { - if let Some(ep) = po.episode_by_number(p.episode) { + if let Some(ep) = get_podcast_episode_by_number(&po, p.episode) { image = ep.thumbnail.clone(); title = Some(ep.title.clone()); } @@ -896,7 +927,7 @@ ORDER BY RANDOM() LIMIT 10; ) -> Result> { let (end_date, start_date) = get_first_and_last_day_of_month(input.year, input.month); let events = self - .get_calendar_events(user_id, false, Some(start_date), Some(end_date), None) + .get_calendar_events(user_id, false, Some(start_date), Some(end_date), None, None) .await?; let grouped_events = events .into_iter() @@ -923,7 +954,14 @@ ORDER BY RANDOM() LIMIT 10; } }; let events = self - .get_calendar_events(user_id, true, to_date, Some(from_date), media_limit) + .get_calendar_events( + user_id, + true, + to_date, + Some(from_date), + media_limit, + Some(true), + ) .await?; Ok(events) } @@ -942,7 +980,7 @@ ORDER BY RANDOM() LIMIT 10; let order_by = input .sort .clone() - .map(|a| Order::from(a.order)) + .map(|a| graphql_to_db_order(a.order)) .unwrap_or(Order::Asc); let review_scale = match preferences.general.review_scale { UserReviewScale::OutOfFive => 20, @@ -2082,7 +2120,7 @@ ORDER BY RANDOM() LIMIT 10; PersonAndMetadataGroupsSortBy::Name => Expr::col(metadata_group::Column::Title), PersonAndMetadataGroupsSortBy::MediaItems => media_items_col, }, - ord.order.into(), + graphql_to_db_order(ord.order), ), }; let take = input @@ -2158,7 +2196,7 @@ ORDER BY RANDOM() LIMIT 10; PersonAndMetadataGroupsSortBy::Name => Expr::col(person::Column::Name), PersonAndMetadataGroupsSortBy::MediaItems => media_items_col, }, - ord.order.into(), + graphql_to_db_order(ord.order), ), }; let take = input @@ -2481,7 +2519,8 @@ ORDER BY RANDOM() LIMIT 10; let mut need_to_delete = true; if let Some(show) = cal_event.metadata_show_extra_information { if let Some(show_info) = &meta.show_specifics { - if let Some((season, ep)) = show_info.get_episode(show.season, show.episode) + if let Some((season, ep)) = + get_show_episode_by_numbers(show_info, show.season, show.episode) { if !SHOW_SPECIAL_SEASON_NAMES.contains(&season.name.as_str()) { if let Some(publish_date) = ep.publish_date { @@ -2494,7 +2533,9 @@ ORDER BY RANDOM() LIMIT 10; } } else if let Some(podcast) = cal_event.metadata_podcast_extra_information { if let Some(podcast_info) = &meta.podcast_specifics { - if let Some(ep) = podcast_info.episode_by_number(podcast.episode) { + if let Some(ep) = + get_podcast_episode_by_number(podcast_info, podcast.episode) + { if ep.publish_date == cal_event.date { need_to_delete = false; } diff --git a/crates/services/notification/Cargo.toml b/crates/services/notification/Cargo.toml index adb0ec6379..88a86a63c1 100644 --- a/crates/services/notification/Cargo.toml +++ b/crates/services/notification/Cargo.toml @@ -9,7 +9,7 @@ askama = "0.12.1" common-utils = { path = "../../utils/common" } config = { path = "../../config" } convert_case = { workspace = true } -lettre = "=0.11.8" +lettre = "=0.11.10" reqwest = { workspace = true } serde = { workspace = true } serde_json = { workspace = true } diff --git a/crates/utils/application/Cargo.toml b/crates/utils/application/Cargo.toml index e91ce74c86..21de69b13d 100644 --- a/crates/utils/application/Cargo.toml +++ b/crates/utils/application/Cargo.toml @@ -13,4 +13,6 @@ common-utils = { path = "../common" } config = { path = "../../config" } file-storage-service = { path = "../../services/file-storage" } jwt-service = { path = "../../services/jwt" } +media-models = { path = "../../models/media" } reqwest = { workspace = true } +sea-orm = { workspace = true } diff --git a/crates/utils/application/src/lib.rs b/crates/utils/application/src/lib.rs index 0a471d605f..00a3893b35 100644 --- a/crates/utils/application/src/lib.rs +++ b/crates/utils/application/src/lib.rs @@ -10,10 +10,14 @@ use axum::{ use chrono::{NaiveDate, Utc}; use common_utils::USER_AGENT_STR; use file_storage_service::FileStorageService; +use media_models::{ + GraphqlSortOrder, PodcastEpisode, PodcastSpecifics, ShowEpisode, ShowSeason, ShowSpecifics, +}; use reqwest::{ header::{HeaderMap, HeaderName, HeaderValue, USER_AGENT}, ClientBuilder, }; +use sea_orm::Order; pub fn user_id_from_token(token: &str, jwt_secret: &str) -> Result { jwt_service::verify(token, jwt_secret) @@ -82,3 +86,40 @@ pub fn get_base_http_client(headers: Option>) -> pub fn get_current_date(timezone: &chrono_tz::Tz) -> NaiveDate { Utc::now().with_timezone(timezone).date_naive() } + +pub fn graphql_to_db_order(value: GraphqlSortOrder) -> Order { + match value { + GraphqlSortOrder::Desc => Order::Desc, + GraphqlSortOrder::Asc => Order::Asc, + } +} + +pub fn get_show_episode_by_numbers( + val: &ShowSpecifics, + season_number: i32, + episode_number: i32, +) -> Option<(&ShowSeason, &ShowEpisode)> { + val.seasons + .iter() + .find(|s| s.season_number == season_number) + .and_then(|s| { + s.episodes + .iter() + .find(|e| e.episode_number == episode_number) + .map(|e| (s, e)) + }) +} + +pub fn get_podcast_episode_by_number( + val: &PodcastSpecifics, + episode_number: i32, +) -> Option<&PodcastEpisode> { + val.episodes.iter().find(|e| e.number == episode_number) +} + +pub fn get_podcast_episode_number_by_name(val: &PodcastSpecifics, name: &str) -> Option { + val.episodes + .iter() + .find(|e| e.title == name) + .map(|e| e.number) +} diff --git a/crates/utils/common/Cargo.toml b/crates/utils/common/Cargo.toml index 6785fba610..610aa84607 100644 --- a/crates/utils/common/Cargo.toml +++ b/crates/utils/common/Cargo.toml @@ -9,3 +9,4 @@ compile-time = "=0.2.0" const-str = { workspace = true } env-utils = { path = "../env" } reqwest = { workspace = true } +serde = { workspace = true } diff --git a/crates/utils/common/src/lib.rs b/crates/utils/common/src/lib.rs index a0ffd5d774..8fc9ae8cc1 100644 --- a/crates/utils/common/src/lib.rs +++ b/crates/utils/common/src/lib.rs @@ -1,6 +1,9 @@ +use std::{convert::TryInto, fmt}; + use chrono::{DateTime, NaiveDate, NaiveDateTime, NaiveTime, Utc}; use env_utils::APP_VERSION; use reqwest::header::HeaderValue; +use serde::de; pub const PROJECT_NAME: &str = "ryot"; pub const AUTHOR: &str = "ignisda"; @@ -73,3 +76,37 @@ pub fn convert_naive_to_utc(d: NaiveDate) -> DateTime { Utc, ) } + +pub fn deserialize_date<'de, D>(deserializer: D) -> Result +where + D: de::Deserializer<'de>, +{ + struct JsonStringVisitor; + + impl<'de> de::Visitor<'de> for JsonStringVisitor { + type Value = NaiveDate; + + fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result { + formatter.write_str("a number") + } + + fn visit_u64(self, v: u64) -> Result + where + E: de::Error, + { + DateTime::from_timestamp_millis(v.try_into().unwrap()) + .ok_or_else(|| E::custom("Could not convert timestamp")) + .map(|d| d.date_naive()) + } + + fn visit_str(self, v: &str) -> Result + where + E: de::Error, + { + NaiveDate::parse_from_str(v, "%Y-%m-%d") + .map_err(|_| E::custom("Could not convert timestamp")) + } + } + + deserializer.deserialize_any(JsonStringVisitor) +} diff --git a/crates/utils/database/src/lib.rs b/crates/utils/database/src/lib.rs index 8e1e536251..0623a6345f 100644 --- a/crates/utils/database/src/lib.rs +++ b/crates/utils/database/src/lib.rs @@ -1,6 +1,8 @@ use std::{collections::HashMap, sync::Arc}; -use application_utils::GraphqlRepresentation; +use application_utils::{ + get_podcast_episode_by_number, get_show_episode_by_numbers, GraphqlRepresentation, +}; use async_graphql::{Error, Result}; use background::ApplicationJob; use chrono::Utc; @@ -655,18 +657,18 @@ pub async fn calculate_user_activities_and_summary( if let (Some(show_seen), Some(show_extra)) = (seen.show_specifics, seen.show_extra_information) { - if let Some(runtime) = show_seen - .get_episode(show_extra.season, show_extra.episode) - .and_then(|(_, e)| e.runtime) + if let Some(runtime) = + get_show_episode_by_numbers(&show_seen, show_extra.season, show_extra.episode) + .and_then(|(_, e)| e.runtime) { activity.show_duration += runtime; } } else if let (Some(podcast_seen), Some(podcast_extra)) = (seen.podcast_specifics, seen.podcast_extra_information) { - if let Some(runtime) = podcast_seen - .episode_by_number(podcast_extra.episode) - .and_then(|e| e.runtime) + if let Some(runtime) = + get_podcast_episode_by_number(&podcast_seen, podcast_extra.episode) + .and_then(|e| e.runtime) { activity.podcast_duration += runtime; } diff --git a/crates/utils/dependent/Cargo.toml b/crates/utils/dependent/Cargo.toml index 4fbaf6c30c..feee0e3d14 100644 --- a/crates/utils/dependent/Cargo.toml +++ b/crates/utils/dependent/Cargo.toml @@ -16,6 +16,7 @@ database-models = { path = "../../models/database" } database-utils = { path = "../database" } dependent-models = { path = "../../models/dependent" } enums = { path = "../../enums" } +file-storage-service = { path = "../../services/file-storage" } fitness-models = { path = "../../models/fitness" } importer-models = { path = "../../models/importer" } itertools = { workspace = true } diff --git a/crates/utils/dependent/src/lib.rs b/crates/utils/dependent/src/lib.rs index 87a9d589f6..9cb5cf5982 100644 --- a/crates/utils/dependent/src/lib.rs +++ b/crates/utils/dependent/src/lib.rs @@ -25,13 +25,17 @@ use database_utils::{ user_preferences_by_id, }; use dependent_models::ImportResult; -use enums::{EntityLot, MediaLot, MediaSource, MetadataToMetadataRelation, SeenState, Visibility}; +use enums::{ + EntityLot, ExerciseLot, MediaLot, MediaSource, MetadataToMetadataRelation, SeenState, + Visibility, +}; +use file_storage_service::FileStorageService; use fitness_models::{ ExerciseBestSetRecord, ProcessedExercise, UserExerciseInput, UserToExerciseBestSetExtraInformation, UserToExerciseExtraInformation, UserToExerciseHistoryExtraInformation, UserWorkoutInput, UserWorkoutSetRecord, WorkoutInformation, WorkoutOrExerciseTotals, WorkoutSetPersonalBest, WorkoutSetRecord, - WorkoutSetTotals, WorkoutSummary, WorkoutSummaryExercise, LOT_MAPPINGS, + WorkoutSetStatistic, WorkoutSetTotals, WorkoutSummary, WorkoutSummaryExercise, LOT_MAPPINGS, }; use importer_models::{ImportDetails, ImportFailStep, ImportFailedItem, ImportResultResponse}; use itertools::Itertools; @@ -75,6 +79,34 @@ use uuid::Uuid; pub type Provider = Box<(dyn MediaProvider + Send + Sync)>; +pub async fn first_metadata_image_as_url( + value: &Option>, + file_storage_service: &FileStorageService, +) -> Option { + if let Some(images) = value { + if let Some(i) = images.first().cloned() { + Some(file_storage_service.get_stored_asset(i.url).await) + } else { + None + } + } else { + None + } +} + +pub async fn metadata_images_as_urls( + value: &Option>, + file_storage_service: &FileStorageService, +) -> Vec { + let mut images = vec![]; + if let Some(imgs) = value { + for i in imgs.clone() { + images.push(file_storage_service.get_stored_asset(i.url).await); + } + } + images +} + pub async fn get_openlibrary_service(config: &config::AppConfig) -> Result { Ok(OpenlibraryService::new(&config.books.openlibrary, config.frontend.page_size).await) } @@ -1556,10 +1588,69 @@ fn get_index_of_highest_pb( ) -> Option { let record = records .iter() - .max_by_key(|record| record.get_personal_best(pb_type).unwrap_or(dec!(0))); + .max_by_key(|record| get_personal_best(record, pb_type).unwrap_or(dec!(0))); record.and_then(|r| records.iter().position(|l| l.statistic == r.statistic)) } +// DEV: Formula from https://en.wikipedia.org/wiki/One-repetition_maximum#cite_note-7 +fn calculate_one_rm(value: &WorkoutSetRecord) -> Option { + let mut val = + (value.statistic.weight? * dec!(36.0)).checked_div(dec!(37.0) - value.statistic.reps?); + if let Some(v) = val { + if v <= dec!(0) { + val = None; + } + }; + val +} + +fn calculate_volume(value: &WorkoutSetRecord) -> Option { + Some(value.statistic.weight? * value.statistic.reps?) +} + +fn calculate_pace(value: &WorkoutSetRecord) -> Option { + value + .statistic + .distance? + .checked_div(value.statistic.duration?) +} + +fn get_personal_best( + value: &WorkoutSetRecord, + pb_type: &WorkoutSetPersonalBest, +) -> Option { + match pb_type { + WorkoutSetPersonalBest::Weight => value.statistic.weight, + WorkoutSetPersonalBest::Time => value.statistic.duration, + WorkoutSetPersonalBest::Reps => value.statistic.reps, + WorkoutSetPersonalBest::OneRm => calculate_one_rm(value), + WorkoutSetPersonalBest::Volume => calculate_volume(value), + WorkoutSetPersonalBest::Pace => calculate_pace(value), + } +} + +/// Set the invalid statistics to `None` according to the type of exercise. +fn clean_values(value: &mut UserWorkoutSetRecord, exercise_lot: &ExerciseLot) { + let mut stats = WorkoutSetStatistic { + ..Default::default() + }; + match exercise_lot { + ExerciseLot::Duration => stats.duration = value.statistic.duration, + ExerciseLot::DistanceAndDuration => { + stats.distance = value.statistic.distance; + stats.duration = value.statistic.duration; + } + ExerciseLot::RepsAndWeight => { + stats.reps = value.statistic.reps; + stats.weight = value.statistic.weight; + } + ExerciseLot::Reps => { + stats.reps = value.statistic.reps; + } + } + value.statistic = stats; +} + /// Create a workout in the database and also update user and exercise associations. pub async fn create_or_update_workout( input: UserWorkoutInput, @@ -1667,7 +1758,7 @@ pub async fn create_or_update_workout( ); } first_set_of_exercise_confirmed_at = set.confirmed_at; - set.clean_values(&db_ex.lot); + clean_values(set, &db_ex.lot); if let Some(r) = set.statistic.reps { totals.reps += r; if let Some(w) = set.statistic.weight { @@ -1694,9 +1785,9 @@ pub async fn create_or_update_workout( confirmed_at: set.confirmed_at, statistic: set.statistic.clone(), }; - value.statistic.one_rm = value.calculate_one_rm(); - value.statistic.pace = value.calculate_pace(); - value.statistic.volume = value.calculate_volume(); + value.statistic.one_rm = calculate_one_rm(&value); + value.statistic.pace = calculate_pace(&value); + value.statistic.volume = calculate_volume(&value); sets.push(value); } let mut personal_bests = association @@ -1723,7 +1814,9 @@ pub async fn create_or_update_workout( { let workout_set = workout.information.exercises[r.exercise_idx].sets[r.set_idx].clone(); - if set.get_personal_best(best_type) > workout_set.get_personal_best(best_type) { + if get_personal_best(set, best_type) + > get_personal_best(&workout_set, best_type) + { if let Some(ref mut set_personal_bests) = set.personal_bests { set_personal_bests.push(*best_type); } diff --git a/libs/generated/package.json b/libs/generated/package.json index 427a420ecd..ab0b8fbd05 100644 --- a/libs/generated/package.json +++ b/libs/generated/package.json @@ -6,6 +6,6 @@ }, "devDependencies": { "@graphql-codegen/cli": "5.0.3", - "@graphql-codegen/client-preset": "4.3.3" + "@graphql-codegen/client-preset": "4.5.0" } } diff --git a/libs/ts-utils/package.json b/libs/ts-utils/package.json index 55feea8f15..3fd78dd770 100644 --- a/libs/ts-utils/package.json +++ b/libs/ts-utils/package.json @@ -10,6 +10,6 @@ "tiny-invariant": "1.3.3" }, "devDependencies": { - "@types/lodash": "4.17.12" + "@types/lodash": "4.17.13" } } diff --git a/rust-toolchain.toml b/rust-toolchain.toml index b09cebf85b..1a07338aaa 100644 --- a/rust-toolchain.toml +++ b/rust-toolchain.toml @@ -1,3 +1,3 @@ [toolchain] profile = "default" -channel = "1.80.0" +channel = "1.82.0" diff --git a/yarn.lock b/yarn.lock index 64d4a28910..c68992d7e3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2984,26 +2984,26 @@ __metadata: languageName: node linkType: hard -"@graphql-codegen/client-preset@npm:4.3.3": - version: 4.3.3 - resolution: "@graphql-codegen/client-preset@npm:4.3.3" +"@graphql-codegen/client-preset@npm:4.5.0": + version: 4.5.0 + resolution: "@graphql-codegen/client-preset@npm:4.5.0" dependencies: "@babel/helper-plugin-utils": "npm:^7.20.2" "@babel/template": "npm:^7.20.7" "@graphql-codegen/add": "npm:^5.0.3" - "@graphql-codegen/gql-tag-operations": "npm:4.0.9" - "@graphql-codegen/plugin-helpers": "npm:^5.0.4" - "@graphql-codegen/typed-document-node": "npm:^5.0.9" - "@graphql-codegen/typescript": "npm:^4.0.9" - "@graphql-codegen/typescript-operations": "npm:^4.2.3" - "@graphql-codegen/visitor-plugin-common": "npm:^5.3.1" + "@graphql-codegen/gql-tag-operations": "npm:4.0.11" + "@graphql-codegen/plugin-helpers": "npm:^5.1.0" + "@graphql-codegen/typed-document-node": "npm:^5.0.11" + "@graphql-codegen/typescript": "npm:^4.1.1" + "@graphql-codegen/typescript-operations": "npm:^4.3.1" + "@graphql-codegen/visitor-plugin-common": "npm:^5.5.0" "@graphql-tools/documents": "npm:^1.0.0" "@graphql-tools/utils": "npm:^10.0.0" "@graphql-typed-document-node/core": "npm:3.2.0" tslib: "npm:~2.6.0" peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - checksum: 10/fd58f6d0bad4f687af84015a487e02f01c9cb4a1e310b59ceda48f872885e9dbe69e87271363bf51a805e7970169a121cd13b5df20b124d1d0054530dedbcf81 + checksum: 10/bbbbaa255f6cb1248cd143b54e06f6fc553cdd9f7ca002977bbf42b92cf9d5c6fe052eda1ae1233eab3d50dd80fbb04609bfeeb29132019faead04300e61ddc0 languageName: node linkType: hard @@ -3059,18 +3059,18 @@ __metadata: languageName: node linkType: hard -"@graphql-codegen/gql-tag-operations@npm:4.0.9": - version: 4.0.9 - resolution: "@graphql-codegen/gql-tag-operations@npm:4.0.9" +"@graphql-codegen/gql-tag-operations@npm:4.0.11": + version: 4.0.11 + resolution: "@graphql-codegen/gql-tag-operations@npm:4.0.11" dependencies: - "@graphql-codegen/plugin-helpers": "npm:^5.0.4" - "@graphql-codegen/visitor-plugin-common": "npm:5.3.1" + "@graphql-codegen/plugin-helpers": "npm:^5.1.0" + "@graphql-codegen/visitor-plugin-common": "npm:5.5.0" "@graphql-tools/utils": "npm:^10.0.0" auto-bind: "npm:~4.0.0" tslib: "npm:~2.6.0" peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - checksum: 10/90eaecbe0742ee65f0e25df471760664d615bb6396d7e35c2d33615128849c1bdb1c0479c75de589479b7b1a0ee99b34684a2faeeff6245e01ffa7dcfff4b0c6 + checksum: 10/cc277d1af9da611dbd37c00f18d08e8fdc634632c0fba6789a1027931f8e3b925ad64af27a6fa7c23ed44afdef131f9c03025ca9b077cd6e95e5c9823751c6a3 languageName: node linkType: hard @@ -3106,6 +3106,22 @@ __metadata: languageName: node linkType: hard +"@graphql-codegen/plugin-helpers@npm:^5.1.0": + version: 5.1.0 + resolution: "@graphql-codegen/plugin-helpers@npm:5.1.0" + dependencies: + "@graphql-tools/utils": "npm:^10.0.0" + change-case-all: "npm:1.0.15" + common-tags: "npm:1.8.2" + import-from: "npm:4.0.0" + lodash: "npm:~4.17.0" + tslib: "npm:~2.6.0" + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + checksum: 10/415e79be90a1f5d289c9cd7f0a581c277d544be1f7136d7f74f5f067c205eb35fd6cd522455866fa8105f241eec4c77bebe02eef007d5021a7b7a453b85b2001 + languageName: node + linkType: hard + "@graphql-codegen/schema-ast@npm:^4.0.2": version: 4.0.2 resolution: "@graphql-codegen/schema-ast@npm:4.0.2" @@ -3119,7 +3135,7 @@ __metadata: languageName: node linkType: hard -"@graphql-codegen/typed-document-node@npm:^5.0.10, @graphql-codegen/typed-document-node@npm:^5.0.9": +"@graphql-codegen/typed-document-node@npm:^5.0.10": version: 5.0.10 resolution: "@graphql-codegen/typed-document-node@npm:5.0.10" dependencies: @@ -3134,7 +3150,22 @@ __metadata: languageName: node linkType: hard -"@graphql-codegen/typescript-operations@npm:^4.2.3, @graphql-codegen/typescript-operations@npm:^4.3.0": +"@graphql-codegen/typed-document-node@npm:^5.0.11": + version: 5.0.11 + resolution: "@graphql-codegen/typed-document-node@npm:5.0.11" + dependencies: + "@graphql-codegen/plugin-helpers": "npm:^5.1.0" + "@graphql-codegen/visitor-plugin-common": "npm:5.5.0" + auto-bind: "npm:~4.0.0" + change-case-all: "npm:1.0.15" + tslib: "npm:~2.6.0" + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + checksum: 10/9320fbc9ccf13d0b0ecc7b57f1b0799629ce93a4e0cf95a76cdeb38981e2da92775734daa7bf68a9383e3d01f9a47f4b35cb870aef710f5dc137234b93b9d7cf + languageName: node + linkType: hard + +"@graphql-codegen/typescript-operations@npm:^4.3.0": version: 4.3.0 resolution: "@graphql-codegen/typescript-operations@npm:4.3.0" dependencies: @@ -3149,7 +3180,22 @@ __metadata: languageName: node linkType: hard -"@graphql-codegen/typescript@npm:^4.0.9, @graphql-codegen/typescript@npm:^4.1.0": +"@graphql-codegen/typescript-operations@npm:^4.3.1": + version: 4.3.1 + resolution: "@graphql-codegen/typescript-operations@npm:4.3.1" + dependencies: + "@graphql-codegen/plugin-helpers": "npm:^5.1.0" + "@graphql-codegen/typescript": "npm:^4.1.1" + "@graphql-codegen/visitor-plugin-common": "npm:5.5.0" + auto-bind: "npm:~4.0.0" + tslib: "npm:~2.6.0" + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + checksum: 10/cdad24e16aa9b369e3ef2434032f2527fd1363e82256dd09d2e9aa6d9a55539eeea15665a4289e7695145f7417a9a765ad73979054a97c606d757ee060780819 + languageName: node + linkType: hard + +"@graphql-codegen/typescript@npm:^4.1.0": version: 4.1.0 resolution: "@graphql-codegen/typescript@npm:4.1.0" dependencies: @@ -3164,9 +3210,24 @@ __metadata: languageName: node linkType: hard -"@graphql-codegen/visitor-plugin-common@npm:5.3.1": - version: 5.3.1 - resolution: "@graphql-codegen/visitor-plugin-common@npm:5.3.1" +"@graphql-codegen/typescript@npm:^4.1.1": + version: 4.1.1 + resolution: "@graphql-codegen/typescript@npm:4.1.1" + dependencies: + "@graphql-codegen/plugin-helpers": "npm:^5.1.0" + "@graphql-codegen/schema-ast": "npm:^4.0.2" + "@graphql-codegen/visitor-plugin-common": "npm:5.5.0" + auto-bind: "npm:~4.0.0" + tslib: "npm:~2.6.0" + peerDependencies: + graphql: ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + checksum: 10/a47fabef00832122f4981fecbbcfd1e90e2567bdc7fc1d63520b018ae1a6db5217eb42f4f4744265cc492e64cd134b87b7bcfdaddfd7b3e35ce5c47d4548225d + languageName: node + linkType: hard + +"@graphql-codegen/visitor-plugin-common@npm:5.4.0, @graphql-codegen/visitor-plugin-common@npm:^5.4.0": + version: 5.4.0 + resolution: "@graphql-codegen/visitor-plugin-common@npm:5.4.0" dependencies: "@graphql-codegen/plugin-helpers": "npm:^5.0.4" "@graphql-tools/optimize": "npm:^2.0.0" @@ -3180,15 +3241,15 @@ __metadata: tslib: "npm:~2.6.0" peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - checksum: 10/6dd0464d9099d5aeabeb766515fc8dd2fc84bcae4cb0e3653d7f38aea716d6622d35d7cbb57a1954e6bc1cde10f4dd8c4a75ceb4e8bb8cdbba16219615666a5f + checksum: 10/cbfa918b6a5ee5ab4c5edf0af53adaf5b4bbc5e7a0a1355fd0736ec859a9b41f4d5313489d6fa13963dc7d5724ff16f1c00c2f31ffe2b7f201a74a900ad818f9 languageName: node linkType: hard -"@graphql-codegen/visitor-plugin-common@npm:5.4.0, @graphql-codegen/visitor-plugin-common@npm:^5.3.1, @graphql-codegen/visitor-plugin-common@npm:^5.4.0": - version: 5.4.0 - resolution: "@graphql-codegen/visitor-plugin-common@npm:5.4.0" +"@graphql-codegen/visitor-plugin-common@npm:5.5.0, @graphql-codegen/visitor-plugin-common@npm:^5.5.0": + version: 5.5.0 + resolution: "@graphql-codegen/visitor-plugin-common@npm:5.5.0" dependencies: - "@graphql-codegen/plugin-helpers": "npm:^5.0.4" + "@graphql-codegen/plugin-helpers": "npm:^5.1.0" "@graphql-tools/optimize": "npm:^2.0.0" "@graphql-tools/relay-operation-optimizer": "npm:^7.0.0" "@graphql-tools/utils": "npm:^10.0.0" @@ -3200,7 +3261,7 @@ __metadata: tslib: "npm:~2.6.0" peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - checksum: 10/cbfa918b6a5ee5ab4c5edf0af53adaf5b4bbc5e7a0a1355fd0736ec859a9b41f4d5313489d6fa13963dc7d5724ff16f1c00c2f31ffe2b7f201a74a900ad818f9 + checksum: 10/f923c40ae996a2accf3a951d302b3da9b3c063f4b1c66b159bf3f74910e18ea592e87b3f35495a84f6c36d1198d880dd07f6e8c3fe94b0d6dba0f2f77522cb5d languageName: node linkType: hard @@ -4076,10 +4137,10 @@ __metadata: languageName: node linkType: hard -"@paddle/paddle-js@npm:1.2.3": - version: 1.2.3 - resolution: "@paddle/paddle-js@npm:1.2.3" - checksum: 10/6d4cc3b90305b26b30acdbf2b199a949f2e89dffbd7eba1dbebd5a1c58be533dc476984a49778a9284c3a026abba21b3ab1c1136d400974635641de96450d5d1 +"@paddle/paddle-js@npm:1.3.1": + version: 1.3.1 + resolution: "@paddle/paddle-js@npm:1.3.1" + checksum: 10/8e5bb27eb65bc76f3850febb4e01a929c22bd130fa86afdbc64ba4344cbc1d6255224d473e178a807d0d08942ef324e770b0bc315cdbae828ab0e38f2758aa85 languageName: node linkType: hard @@ -6193,10 +6254,10 @@ __metadata: "@ryot/generated": "workspace:*" "@ryot/graphql": "workspace:*" "@ryot/ts-utils": "workspace:*" - "@tabler/icons-react": "npm:3.20.0" + "@tabler/icons-react": "npm:3.21.0" "@tanstack/react-query": "npm:5.59.16" "@tanstack/react-query-devtools": "npm:5.59.16" - "@types/cookie": "npm:0.6.0" + "@types/cookie": "npm:1.0.0" "@types/crypto-js": "npm:4.2.2" "@types/howler": "npm:2.2.12" "@types/js-cookie": "npm:3.0.6" @@ -6220,7 +6281,7 @@ __metadata: js-cookie: "npm:3.0.5" jwt-decode: "npm:4.0.0" mantine-datatable: "npm:7.12.4" - nanoid: "npm:5.0.7" + nanoid: "npm:5.0.8" postcss: "npm:8.4.47" postcss-preset-mantine: "npm:1.17.0" postcss-simple-vars: "npm:7.0.1" @@ -6229,7 +6290,7 @@ __metadata: react-dom: "npm:18.3.1" react-virtuoso: "npm:4.12.0" react-webcam: "npm:7.2.0" - recharts: "npm:2.13.0" + recharts: "npm:2.13.1" remix-development-tools: "npm:4.7.3" remix-routes: "npm:1.7.7" remix-utils: "npm:7.7.0" @@ -6241,7 +6302,7 @@ __metadata: typescript-remix-routes-plugin: "npm:1.0.1" ufo: "npm:1.5.4" usehooks-ts: "npm:3.1.0" - uuid: "npm:10.0.0" + uuid: "npm:11.0.2" vite: "npm:5.4.10" vite-tsconfig-paths: "npm:5.0.1" zod: "npm:3.23.8" @@ -6254,7 +6315,7 @@ __metadata: resolution: "@ryot/generated@workspace:libs/generated" dependencies: "@graphql-codegen/cli": "npm:5.0.3" - "@graphql-codegen/client-preset": "npm:4.3.3" + "@graphql-codegen/client-preset": "npm:4.5.0" "@graphql-typed-document-node/core": "npm:3.2.0" graphql: "npm:16.9.0" languageName: unknown @@ -6299,7 +6360,7 @@ __metadata: dependencies: "@conform-to/zod": "npm:1.2.2" "@ryot/generated": "workspace:*" - "@types/lodash": "npm:4.17.12" + "@types/lodash": "npm:4.17.13" dayjs: "npm:1.11.13" humanize-duration-ts: "npm:2.1.1" lodash: "npm:4.17.21" @@ -6313,7 +6374,7 @@ __metadata: dependencies: "@conform-to/zod": "npm:1.2.2" "@isaacs/ttlcache": "npm:1.4.1" - "@paddle/paddle-js": "npm:1.2.3" + "@paddle/paddle-js": "npm:1.3.1" "@paddle/paddle-node-sdk": "npm:1.9.1" "@radix-ui/react-label": "npm:2.1.0" "@radix-ui/react-slot": "npm:1.1.0" @@ -6327,10 +6388,10 @@ __metadata: "@ryot/graphql": "workspace:*" "@ryot/transactional": "workspace:*" "@ryot/ts-utils": "workspace:*" - "@tabler/icons-react": "npm:3.20.0" + "@tabler/icons-react": "npm:3.21.0" "@tailwindcss/typography": "npm:0.5.15" "@types/crypto-js": "npm:^4.2.2" - "@types/lodash": "npm:4.17.12" + "@types/lodash": "npm:4.17.13" "@types/nodemailer": "npm:6.4.16" "@types/react": "npm:18.3.12" "@types/react-dom": "npm:18.3.1" @@ -6342,21 +6403,21 @@ __metadata: dayjs: "npm:1.11.13" drizzle-kit: "npm:0.26.2" drizzle-orm: "npm:0.35.3" - embla-carousel-autoplay: "npm:8.3.0" - embla-carousel-react: "npm:8.3.0" + embla-carousel-autoplay: "npm:8.3.1" + embla-carousel-react: "npm:8.3.1" graphql: "npm:16.9.0" graphql-request: "npm:7.1.0" humanize-duration-ts: "npm:2.1.1" - input-otp: "npm:1.2.4" + input-otp: "npm:1.2.5" isbot: "npm:5.1.17" lodash: "npm:4.17.21" - lucide-react: "npm:0.453.0" - nanoid: "npm:5.0.7" + lucide-react: "npm:0.454.0" + nanoid: "npm:5.0.8" next-themes: "npm:0.3.0" - nodemailer: "npm:6.9.15" - openid-client: "npm:5.6.5" + nodemailer: "npm:6.9.16" + openid-client: "npm:5.7.0" postcss: "npm:8.4.47" - postgres: "npm:3.4.4" + postgres: "npm:3.4.5" react: "npm:18.3.1" react-dom: "npm:18.3.1" remix-routes: "npm:1.7.7" @@ -6534,21 +6595,21 @@ __metadata: languageName: node linkType: hard -"@tabler/icons-react@npm:3.20.0": - version: 3.20.0 - resolution: "@tabler/icons-react@npm:3.20.0" +"@tabler/icons-react@npm:3.21.0": + version: 3.21.0 + resolution: "@tabler/icons-react@npm:3.21.0" dependencies: - "@tabler/icons": "npm:3.20.0" + "@tabler/icons": "npm:3.21.0" peerDependencies: react: ">= 16" - checksum: 10/581fd723f776b4408fb6f680d7890f6cfba30550feaaaa675b30158122d2f365816d5e086bd6a046675150fd5101c2511a126c30f2e0016db75ddd953230ab9c + checksum: 10/d168b49f7877733b70af05793d3c6c552b2fecd4d8f95454afa2d9334f8382728270031e722470eb8d18fc6c51a00481ca54599ee49ec1cac0eae9fb3dded413 languageName: node linkType: hard -"@tabler/icons@npm:3.20.0": - version: 3.20.0 - resolution: "@tabler/icons@npm:3.20.0" - checksum: 10/59d6b6d3ed45abb0c1981dd3fe3495f1abd43b490d7b11bab19619db63f7ad8316e1912eb60486b42842fbf9133d3beaca19a0441a81293b45a0d1e029f57a60 +"@tabler/icons@npm:3.21.0": + version: 3.21.0 + resolution: "@tabler/icons@npm:3.21.0" + checksum: 10/52e6c46819dc115cbb73e22966fe394b42f7f9a2a83198228e07442b6726703507c327c4d326720ae47bab895c876f9d7be782685c39e885d315414129f9adb2 languageName: node linkType: hard @@ -6619,10 +6680,12 @@ __metadata: languageName: node linkType: hard -"@types/cookie@npm:0.6.0, @types/cookie@npm:^0.6.0": - version: 0.6.0 - resolution: "@types/cookie@npm:0.6.0" - checksum: 10/b883348d5bf88695fbc2c2276b1c49859267a55cae3cf11ea1dccc1b3be15b466e637ce3242109ba27d616c77c6aa4efe521e3d557110b4fdd9bc332a12445c2 +"@types/cookie@npm:1.0.0": + version: 1.0.0 + resolution: "@types/cookie@npm:1.0.0" + dependencies: + cookie: "npm:*" + checksum: 10/fb0ad67988f3d3e4a181c7758f2db02e9b661d2e56b60256f5071a9458cf9e4425c18ce201c68f44d8022d0a5618f1f205db812ed28c3983c3579c759764d0b6 languageName: node linkType: hard @@ -6633,6 +6696,13 @@ __metadata: languageName: node linkType: hard +"@types/cookie@npm:^0.6.0": + version: 0.6.0 + resolution: "@types/cookie@npm:0.6.0" + checksum: 10/b883348d5bf88695fbc2c2276b1c49859267a55cae3cf11ea1dccc1b3be15b466e637ce3242109ba27d616c77c6aa4efe521e3d557110b4fdd9bc332a12445c2 + languageName: node + linkType: hard + "@types/cors@npm:^2.8.12": version: 2.8.17 resolution: "@types/cors@npm:2.8.17" @@ -6808,10 +6878,10 @@ __metadata: languageName: node linkType: hard -"@types/lodash@npm:4.17.12": - version: 4.17.12 - resolution: "@types/lodash@npm:4.17.12" - checksum: 10/3d829f97c0ea713135e6eb48e983feffb315f4cf228d03654ca8a328e3fecd03005bf7dd30bf411f4306967c610d96738d441588283a41456815f2ce1fd7044c +"@types/lodash@npm:4.17.13": + version: 4.17.13 + resolution: "@types/lodash@npm:4.17.13" + checksum: 10/ddb34e20810c71be2d9445bcc4b64ec25b83976738454de709854b79c7f655b03704b76235445699956d65012987720e0e429a35489de65495cdb5420202d905 languageName: node linkType: hard @@ -8680,6 +8750,13 @@ __metadata: languageName: node linkType: hard +"cookie@npm:*, cookie@npm:1.0.1": + version: 1.0.1 + resolution: "cookie@npm:1.0.1" + checksum: 10/4b24d4fad5ba94ab76d74a8fc33ae1dcdb5dc02013e03e9577b26f019d9dfe396ffb9b3711ba1726bcfa1b93c33d117db0f31e187838aed7753dee1abc691688 + languageName: node + linkType: hard + "cookie@npm:0.7.1": version: 0.7.1 resolution: "cookie@npm:0.7.1" @@ -8687,13 +8764,6 @@ __metadata: languageName: node linkType: hard -"cookie@npm:1.0.1": - version: 1.0.1 - resolution: "cookie@npm:1.0.1" - checksum: 10/4b24d4fad5ba94ab76d74a8fc33ae1dcdb5dc02013e03e9577b26f019d9dfe396ffb9b3711ba1726bcfa1b93c33d117db0f31e187838aed7753dee1abc691688 - languageName: node - linkType: hard - "cookie@npm:^0.6.0": version: 0.6.0 resolution: "cookie@npm:0.6.0" @@ -9531,12 +9601,12 @@ __metadata: languageName: node linkType: hard -"embla-carousel-autoplay@npm:8.3.0": - version: 8.3.0 - resolution: "embla-carousel-autoplay@npm:8.3.0" +"embla-carousel-autoplay@npm:8.3.1": + version: 8.3.1 + resolution: "embla-carousel-autoplay@npm:8.3.1" peerDependencies: - embla-carousel: 8.3.0 - checksum: 10/1e891db0d341bbe31d7315d53b3e96d970a1df632db98d9bcaf5b44829311d592fb742afa09f9ece1a7fd898f440a8da13161e0974451a344bbeb265a8e80f05 + embla-carousel: 8.3.1 + checksum: 10/205069c76ac08b4b04aab1992502649c895ee23affab2d382946b88fdcc0d997d89a3dab692ad6ce4ae368e822fc43f4afe23bf6dcb132f50d9b81c7e143de46 languageName: node linkType: hard @@ -9551,24 +9621,24 @@ __metadata: languageName: node linkType: hard -"embla-carousel-react@npm:8.3.0": - version: 8.3.0 - resolution: "embla-carousel-react@npm:8.3.0" +"embla-carousel-react@npm:8.3.1": + version: 8.3.1 + resolution: "embla-carousel-react@npm:8.3.1" dependencies: - embla-carousel: "npm:8.3.0" - embla-carousel-reactive-utils: "npm:8.3.0" + embla-carousel: "npm:8.3.1" + embla-carousel-reactive-utils: "npm:8.3.1" peerDependencies: - react: ^16.8.0 || ^17.0.1 || ^18.0.0 - checksum: 10/48b71504208741d051f09d26ec7925c4470c0c7b9dce1275079d1ab1a32f7892456b953df2836f1be7555061aaac595509d78ab12c0e1370dd7f77df682639f6 + react: ^16.8.0 || ^17.0.1 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + checksum: 10/24e1bed7298d458d0bb61b9f1f6f2e7645be85816861d3a3598ce6af4961fee2a61f45bb1d3fc78fca95a16518c2dd139b6de9c25bf9c13ab435af646715f595 languageName: node linkType: hard -"embla-carousel-reactive-utils@npm:8.3.0": - version: 8.3.0 - resolution: "embla-carousel-reactive-utils@npm:8.3.0" +"embla-carousel-reactive-utils@npm:8.3.1": + version: 8.3.1 + resolution: "embla-carousel-reactive-utils@npm:8.3.1" peerDependencies: - embla-carousel: 8.3.0 - checksum: 10/8d1db9a65455dbbee4de7e163c470b2a7552dee13153e95c8754d37389e29dbd03b9a7b11018c84ed59b4db616846cf39de8ea828f50945ab9ea1e99fe9e7289 + embla-carousel: 8.3.1 + checksum: 10/279c6ea265fd34acc524036985e36cc869e9500f4a557fa13a3a354c78ecc55cf0e0b814ce40a035bcc78bfce0aa049bf965675cb0cafb18aad72049615363e2 languageName: node linkType: hard @@ -9579,10 +9649,10 @@ __metadata: languageName: node linkType: hard -"embla-carousel@npm:8.3.0": - version: 8.3.0 - resolution: "embla-carousel@npm:8.3.0" - checksum: 10/939db8fbe604f1d46a1c3150bf8be7f5a566924e426a02762c0c97dcf474973fdb128a113d96a57e953753657fb69298f31247e7dfbc4d820fbb691c54502249 +"embla-carousel@npm:8.3.1": + version: 8.3.1 + resolution: "embla-carousel@npm:8.3.1" + checksum: 10/fd5e0960563909012428fb0e562773a56c40209e94b9adf2d8823dad04154c620d400232c89a8b4fdaebed1b81976b81a1f7227233e539a9552bdba86473a7b5 languageName: node linkType: hard @@ -11683,13 +11753,13 @@ __metadata: languageName: node linkType: hard -"input-otp@npm:1.2.4": - version: 1.2.4 - resolution: "input-otp@npm:1.2.4" +"input-otp@npm:1.2.5": + version: 1.2.5 + resolution: "input-otp@npm:1.2.5" peerDependencies: - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - checksum: 10/dde21c35334864f0add026f6a66e87eac572278c24edb72c97ba9541e5133f3d6750a4230b9a9c6093f4bd84633e4e417c8849ef844a565834392b9119b4110f + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 + checksum: 10/3102a27919b401b8b6a117b579b8179bc41103920b903023b05e6fa7c32f7185f44442d1092d0bd48643e678e980d13da2122a2c9d4b3ad7028b9948e2a32536 languageName: node linkType: hard @@ -12144,7 +12214,7 @@ __metadata: languageName: node linkType: hard -"jose@npm:^4.15.5": +"jose@npm:^4.15.9": version: 4.15.9 resolution: "jose@npm:4.15.9" checksum: 10/256234b6f85cdc080b1331f2d475bd58c8ccf459cb20f70ac5e4200b271bce10002b1c2f8e5b96dd975d83065ae5a586d52cdf89d28471d56de5d297992f9905 @@ -12606,12 +12676,12 @@ __metadata: languageName: node linkType: hard -"lucide-react@npm:0.453.0": - version: 0.453.0 - resolution: "lucide-react@npm:0.453.0" +"lucide-react@npm:0.454.0": + version: 0.454.0 + resolution: "lucide-react@npm:0.454.0" peerDependencies: react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0-rc - checksum: 10/b49c486ce04ebe3650d756aab0584eb96d4b3c2381ab1185ebedbd00333cfafcfe71766f918bc5ea7538bab0339804363afa5503acb416ee2208af9d31a9fac1 + checksum: 10/90b40271182e15fefc9cbc6aca4645a49691f73b1887daffb0c9d048f61c89a1c1d7eac1096a37ba627bdce91e8aa49fcf43a5cf0ebd255117ce848d71a56dd1 languageName: node linkType: hard @@ -13606,12 +13676,12 @@ __metadata: languageName: node linkType: hard -"nanoid@npm:5.0.7": - version: 5.0.7 - resolution: "nanoid@npm:5.0.7" +"nanoid@npm:5.0.8": + version: 5.0.8 + resolution: "nanoid@npm:5.0.8" bin: nanoid: bin/nanoid.js - checksum: 10/25ab0b0cf9082ae6747f0f55cec930e6c1cc5975103aa3a5fda44be5720eff57d9b25a8a9850274bfdde8def964b49bf03def71c6aa7ad1cba32787819b79f60 + checksum: 10/df131a515465053ff25c8cf0450ef191e1db83b45fe125af43f50d39feddf1f161d3b2abb34cb993df35a76b427f8d6d982e16e47d67b2fbe843664af025b5e2 languageName: node linkType: hard @@ -13832,10 +13902,10 @@ __metadata: languageName: node linkType: hard -"nodemailer@npm:6.9.15": - version: 6.9.15 - resolution: "nodemailer@npm:6.9.15" - checksum: 10/16079406fe603f6e4debb8ac34bdb919688ad169ddf61e7b10e56abef85b537762eb3a19a15ce32bb9446d68e2f93a1ba4e24836ba86c7363fc42145aa36a291 +"nodemailer@npm:6.9.16": + version: 6.9.16 + resolution: "nodemailer@npm:6.9.16" + checksum: 10/f131888d3111238fde4ee03539e62f1764b99365ff31d556dde0367dfefcee1f2eb8948558f35ba84fe5cd805f2d01294eee63a5675d3aa501e7df548a2518ce languageName: node linkType: hard @@ -14066,15 +14136,15 @@ __metadata: languageName: node linkType: hard -"openid-client@npm:5.6.5": - version: 5.6.5 - resolution: "openid-client@npm:5.6.5" +"openid-client@npm:5.7.0": + version: 5.7.0 + resolution: "openid-client@npm:5.7.0" dependencies: - jose: "npm:^4.15.5" + jose: "npm:^4.15.9" lru-cache: "npm:^6.0.0" object-hash: "npm:^2.2.0" oidc-token-hash: "npm:^5.0.3" - checksum: 10/e843f39b3eac07d9a415d8524745d722df0298708e58ac4e13b2642a34b2211591d2c9a58d6f4e29826b678856965454bcfa5148a030c7eef53178ceff48d8ee + checksum: 10/d30e70082e8ae5222b29977cd944c3aa6ebaa159bf294348b6ae5cbcc8c5db9e731f21815ce41a6ebe2ebf4c6a697e26cad0ea0fc22d59ee922d3f7d3cd4aa43 languageName: node linkType: hard @@ -14764,10 +14834,10 @@ __metadata: languageName: node linkType: hard -"postgres@npm:3.4.4": - version: 3.4.4 - resolution: "postgres@npm:3.4.4" - checksum: 10/2b8c511f2dd679b91264bb3033c8d18d2ad10a5fc9aca2049eda13d6b68ae96fac45d47cfaeb0b66482ff18cf7175a5562e69a1cf259e892d063fb60d2178758 +"postgres@npm:3.4.5": + version: 3.4.5 + resolution: "postgres@npm:3.4.5" + checksum: 10/b51341a8640bd63c42caf2a866c8b6bcac0d4cc1b85985f01eb3fd941eb7bf3fe5200bcf6983eaa1d42ae7555d85f4ff51d35916b5543b95aecfe98b76213611 languageName: node linkType: hard @@ -15458,9 +15528,9 @@ __metadata: languageName: node linkType: hard -"recharts@npm:2.13.0": - version: 2.13.0 - resolution: "recharts@npm:2.13.0" +"recharts@npm:2.13.1": + version: 2.13.1 + resolution: "recharts@npm:2.13.1" dependencies: clsx: "npm:^2.0.0" eventemitter3: "npm:^4.0.1" @@ -15473,7 +15543,7 @@ __metadata: peerDependencies: react: ^16.0.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.0.0 || ^17.0.0 || ^18.0.0 - checksum: 10/d9adf066282c06b1f1b1fbdc69e119060d4b5738b59abba61702afade366023884086d6223c4530279ac3a34f3d81b4626fb5fec099fdeacd16614cb03a861c9 + checksum: 10/be4cb77717e99da00c2900985d2f2168e649838fb5a94ac62f1fa2cfc750884fc715d8aad83aed50ad6be77e02058eaba13ed767aafd2eaff9e2abca42489586 languageName: node linkType: hard @@ -17741,12 +17811,12 @@ __metadata: languageName: node linkType: hard -"uuid@npm:10.0.0": - version: 10.0.0 - resolution: "uuid@npm:10.0.0" +"uuid@npm:11.0.2": + version: 11.0.2 + resolution: "uuid@npm:11.0.2" bin: - uuid: dist/bin/uuid - checksum: 10/35aa60614811a201ff90f8ca5e9ecb7076a75c3821e17f0f5ff72d44e36c2d35fcbc2ceee9c4ac7317f4cc41895da30e74f3885e30313bee48fda6338f250538 + uuid: dist/esm/bin/uuid + checksum: 10/b98082f398fa2ece8cacc2264402f739256ca70def4bb82e3a14ec70777d189c01ce1054764c3b59b8fc098b62b135a15d1b24914712904c988822e2ac9b4f44 languageName: node linkType: hard