diff --git a/locales/ca-ES.yml b/locales/ca-ES.yml index 2ad38d246c..0c43f87883 100644 --- a/locales/ca-ES.yml +++ b/locales/ca-ES.yml @@ -1022,7 +1022,7 @@ yearsOld: '{age} anys' copyUrl: Copia l'adreça URL rename: Renombra unwatch: Deixa de veure -accept: Accepta +accept: Acceptar reject: Rebutja yearX: '{year}' pages: Pàgines diff --git a/packages/backend-rs/src/database/postgresql.rs b/packages/backend-rs/src/database/postgresql.rs index 2e9a76126e..3a95cd65fb 100644 --- a/packages/backend-rs/src/database/postgresql.rs +++ b/packages/backend-rs/src/database/postgresql.rs @@ -39,10 +39,47 @@ pub async fn get_conn() -> Result<&'static DbConn, DbErr> { #[cfg(test)] mod unit_test { use super::get_conn; + use sea_orm::{prelude::*, DbBackend, Statement}; #[tokio::test] - async fn connect() { - assert!(get_conn().await.is_ok()); - assert!(get_conn().await.is_ok()); + async fn connect_sequential() { + get_conn().await.unwrap(); + get_conn().await.unwrap(); + get_conn().await.unwrap(); + get_conn().await.unwrap(); + get_conn().await.unwrap(); + } + + #[tokio::test] + async fn connect_concurrent() { + let [c1, c2, c3, c4, c5] = [get_conn(), get_conn(), get_conn(), get_conn(), get_conn()]; + let _ = tokio::try_join!(c1, c2, c3, c4, c5).unwrap(); + } + + #[tokio::test] + async fn connect_spawn() { + let mut tasks = Vec::new(); + + for _ in 0..5 { + tasks.push(tokio::spawn(get_conn())); + } + for task in tasks { + task.await.unwrap().unwrap(); + } + } + + #[tokio::test] + async fn access() { + // DO NOT write any raw SQL query in the actual program + // (with the exception of PGroonga features) + get_conn() + .await + .unwrap() + .execute(Statement::from_string( + DbBackend::Postgres, + "SELECT version()", + )) + .await + .unwrap(); } } diff --git a/packages/backend-rs/src/database/redis.rs b/packages/backend-rs/src/database/redis.rs index 266e563c8d..f40cd011c2 100644 --- a/packages/backend-rs/src/database/redis.rs +++ b/packages/backend-rs/src/database/redis.rs @@ -119,9 +119,30 @@ mod unit_test { use redis::AsyncCommands; #[tokio::test] - async fn connect() { - assert!(get_conn().await.is_ok()); - assert!(get_conn().await.is_ok()); + async fn connect_sequential() { + get_conn().await.unwrap(); + get_conn().await.unwrap(); + get_conn().await.unwrap(); + get_conn().await.unwrap(); + get_conn().await.unwrap(); + } + + #[tokio::test] + async fn connect_concurrent() { + let [c1, c2, c3, c4, c5] = [get_conn(), get_conn(), get_conn(), get_conn(), get_conn()]; + let _ = tokio::try_join!(c1, c2, c3, c4, c5).unwrap(); + } + + #[tokio::test] + async fn connect_spawn() { + let mut tasks = Vec::new(); + + for _ in 0..5 { + tasks.push(tokio::spawn(get_conn())); + } + for task in tasks { + task.await.unwrap().unwrap(); + } } #[tokio::test] diff --git a/packages/backend-rs/src/federation/acct.rs b/packages/backend-rs/src/federation/acct.rs index eb49e0e45b..ffc972ba84 100644 --- a/packages/backend-rs/src/federation/acct.rs +++ b/packages/backend-rs/src/federation/acct.rs @@ -7,10 +7,13 @@ pub struct Acct { pub host: Option, } -impl FromStr for Acct { - type Err = (); +#[derive(thiserror::Error, Debug)] +#[error("failed to convert string '{0}' into acct")] +pub struct InvalidAcctString(String); + +impl FromStr for Acct { + type Err = InvalidAcctString; - /// This never throw errors. Feel free to `.unwrap()` the result. fn from_str(value: &str) -> Result { let split: Vec<&str> = if let Some(stripped) = value.strip_prefix('@') { stripped @@ -64,7 +67,7 @@ mod unit_test { use std::str::FromStr; #[test] - fn test_acct_to_string() { + fn acct_to_string() { let remote_acct = Acct { username: "firefish".to_string(), host: Some("example.com".to_string()), @@ -81,7 +84,7 @@ mod unit_test { } #[test] - fn test_string_to_acct() { + fn string_to_acct() { let remote_acct = Acct { username: "firefish".to_string(), host: Some("example.com".to_string()), diff --git a/packages/backend-rs/src/federation/nodeinfo/fetch.rs b/packages/backend-rs/src/federation/nodeinfo/fetch.rs index 9095665334..1b963e086c 100644 --- a/packages/backend-rs/src/federation/nodeinfo/fetch.rs +++ b/packages/backend-rs/src/federation/nodeinfo/fetch.rs @@ -100,11 +100,11 @@ pub async fn fetch_nodeinfo(host: &str) -> Result { #[cfg(test)] mod unit_test { - use super::{check_nodeinfo_link, fetch_nodeinfo, NodeinfoLink, NodeinfoLinks}; + use super::{NodeinfoLink, NodeinfoLinks}; use pretty_assertions::assert_eq; #[test] - fn test_check_nodeinfo_link() { + fn check_nodeinfo_link() { let links_1 = NodeinfoLinks { links: vec![ NodeinfoLink { @@ -118,7 +118,7 @@ mod unit_test { ], }; assert_eq!( - check_nodeinfo_link(links_1).unwrap(), + super::check_nodeinfo_link(links_1).unwrap(), "https://example.com/real" ); @@ -135,7 +135,7 @@ mod unit_test { ], }; assert_eq!( - check_nodeinfo_link(links_2).unwrap(), + super::check_nodeinfo_link(links_2).unwrap(), "https://example.com/real" ); @@ -151,13 +151,13 @@ mod unit_test { }, ], }; - check_nodeinfo_link(links_3).expect_err("No nodeinfo"); + super::check_nodeinfo_link(links_3).expect_err("No nodeinfo"); } #[tokio::test] - async fn test_fetch_nodeinfo() { + async fn fetch_nodeinfo() { assert_eq!( - fetch_nodeinfo("info.firefish.dev") + super::fetch_nodeinfo("info.firefish.dev") .await .unwrap() .software diff --git a/packages/backend-rs/src/misc/check_word_mute.rs b/packages/backend-rs/src/misc/check_word_mute.rs index 6c3e7875e6..0faf946c8d 100644 --- a/packages/backend-rs/src/misc/check_word_mute.rs +++ b/packages/backend-rs/src/misc/check_word_mute.rs @@ -71,18 +71,18 @@ mod unit_test { use super::check_word_mute_impl; #[test] - fn test_word_mute_match() { - let texts = vec![ + fn word_mute_match() { + let texts = [ "The quick brown fox jumps over the lazy dog.".to_string(), "色は匂へど 散りぬるを 我が世誰ぞ 常ならむ".to_string(), "😇".to_string(), ]; - let hiragana_1 = r#"/[\u{3040}-\u{309f}]/u"#.to_string(); - let hiragana_2 = r#"/[あ-ん]/u"#.to_string(); - let katakana_1 = r#"/[\u{30a1}-\u{30ff}]/u"#.to_string(); - let katakana_2 = r#"/[ア-ン]/u"#.to_string(); - let emoji = r#"/[\u{1f300}-\u{1f5ff}\u{1f900}-\u{1f9ff}\u{1f600}-\u{1f64f}\u{1f680}-\u{1f6ff}\u{2600}-\u{26ff}\u{2700}-\u{27bf}\u{1f1e6}-\u{1f1ff}\u{1f191}-\u{1f251}\u{1f004}\u{1f0cf}\u{1f170}-\u{1f171}\u{1f17e}-\u{1f17f}\u{1f18e}\u{3030}\u{2b50}\u{2b55}\u{2934}-\u{2935}\u{2b05}-\u{2b07}\u{2b1b}-\u{2b1c}\u{3297}\u{3299}\u{303d}\u{00a9}\u{00ae}\u{2122}\u{23f3}\u{24c2}\u{23e9}-\u{23ef}\u{25b6}\u{23f8}-\u{23fa}]/u"#.to_string(); + let hiragana_1 = r"/[\u{3040}-\u{309f}]/u".to_string(); + let hiragana_2 = r"/[あ-ん]/u".to_string(); + let katakana_1 = r"/[\u{30a1}-\u{30ff}]/u".to_string(); + let katakana_2 = r"/[ア-ン]/u".to_string(); + let emoji = r"/[\u{1f300}-\u{1f5ff}\u{1f900}-\u{1f9ff}\u{1f600}-\u{1f64f}\u{1f680}-\u{1f6ff}\u{2600}-\u{26ff}\u{2700}-\u{27bf}\u{1f1e6}-\u{1f1ff}\u{1f191}-\u{1f251}\u{1f004}\u{1f0cf}\u{1f170}-\u{1f171}\u{1f17e}-\u{1f17f}\u{1f18e}\u{3030}\u{2b50}\u{2b55}\u{2934}-\u{2935}\u{2b05}-\u{2b07}\u{2b1b}-\u{2b1c}\u{3297}\u{3299}\u{303d}\u{00a9}\u{00ae}\u{2122}\u{23f3}\u{24c2}\u{23e9}-\u{23ef}\u{25b6}\u{23f8}-\u{23fa}]/u".to_string(); assert!(check_word_mute_impl(&texts, &[], &["/the/i".to_string()])); diff --git a/packages/backend-rs/src/misc/escape_sql.rs b/packages/backend-rs/src/misc/escape_sql.rs index c3372d9021..688b9db843 100644 --- a/packages/backend-rs/src/misc/escape_sql.rs +++ b/packages/backend-rs/src/misc/escape_sql.rs @@ -23,25 +23,24 @@ pub fn safe_for_sql(src: &str) -> bool { #[cfg(test)] mod unit_test { - use super::{safe_for_sql, sql_like_escape}; use pretty_assertions::assert_eq; #[test] - fn sql_like_escape_test() { - assert_eq!(sql_like_escape(""), ""); - assert_eq!(sql_like_escape("abc"), "abc"); - assert_eq!(sql_like_escape("a%bc"), r"a\%bc"); - assert_eq!(sql_like_escape("a呼%吸bc"), r"a呼\%吸bc"); - assert_eq!(sql_like_escape("a呼%吸b%_c"), r"a呼\%吸b\%\_c"); - assert_eq!(sql_like_escape("_اللغة العربية"), r"\_اللغة العربية"); + fn sql_like_escape() { + assert_eq!(super::sql_like_escape(""), ""); + assert_eq!(super::sql_like_escape("abc"), "abc"); + assert_eq!(super::sql_like_escape("a%bc"), r"a\%bc"); + assert_eq!(super::sql_like_escape("a呼%吸bc"), r"a呼\%吸bc"); + assert_eq!(super::sql_like_escape("a呼%吸b%_c"), r"a呼\%吸b\%\_c"); + assert_eq!(super::sql_like_escape("_اللغة العربية"), r"\_اللغة العربية"); } #[test] - fn safe_for_sql_test() { - assert!(safe_for_sql("123")); - assert!(safe_for_sql("人間")); - assert!(!safe_for_sql("人間\x09")); - assert!(!safe_for_sql("abc\ndef")); - assert!(!safe_for_sql("%something%")); + fn safe_for_sql() { + assert!(super::safe_for_sql("123")); + assert!(super::safe_for_sql("人間")); + assert!(!super::safe_for_sql("人間\x09")); + assert!(!super::safe_for_sql("abc\ndef")); + assert!(!super::safe_for_sql("%something%")); } } diff --git a/packages/backend-rs/src/misc/format_milliseconds.rs b/packages/backend-rs/src/misc/format_milliseconds.rs index 20c67a773a..b30af15847 100644 --- a/packages/backend-rs/src/misc/format_milliseconds.rs +++ b/packages/backend-rs/src/misc/format_milliseconds.rs @@ -30,16 +30,21 @@ pub fn format_milliseconds(milliseconds: u32) -> String { #[cfg(test)] mod unit_test { - use super::format_milliseconds; use pretty_assertions::assert_eq; #[test] - fn format_milliseconds_test() { - assert_eq!(format_milliseconds(1000), "1 second(s)"); - assert_eq!(format_milliseconds(1387938), "23 minute(s), 7 second(s)"); - assert_eq!(format_milliseconds(34200457), "9 hour(s), 30 minute(s)"); + fn format_milliseconds() { + assert_eq!(super::format_milliseconds(1000), "1 second(s)"); assert_eq!( - format_milliseconds(998244353), + super::format_milliseconds(1387938), + "23 minute(s), 7 second(s)" + ); + assert_eq!( + super::format_milliseconds(34200457), + "9 hour(s), 30 minute(s)" + ); + assert_eq!( + super::format_milliseconds(998244353), "11 day(s), 13 hour(s), 17 minute(s), 24 second(s)" ); } diff --git a/packages/backend-rs/src/misc/get_image_size.rs b/packages/backend-rs/src/misc/get_image_size.rs index 46d9415434..78c40cf5a1 100644 --- a/packages/backend-rs/src/misc/get_image_size.rs +++ b/packages/backend-rs/src/misc/get_image_size.rs @@ -122,12 +122,12 @@ pub async fn get_image_size_from_url(url: &str) -> Result { #[cfg(test)] mod unit_test { - use super::{get_image_size_from_url, ImageSize}; + use super::ImageSize; use crate::database::cache; use pretty_assertions::assert_eq; #[tokio::test] - async fn test_get_image_size() { + async fn get_image_size_from_url() { let png_url_1 = "https://firefish.dev/firefish/firefish/-/raw/5891a90f71a8b9d5ea99c683ade7e485c685d642/packages/backend/assets/splash.png"; let png_url_2 = "https://firefish.dev/firefish/firefish/-/raw/5891a90f71a8b9d5ea99c683ade7e485c685d642/packages/backend/assets/notification-badges/at.png"; let png_url_3 = "https://firefish.dev/firefish/firefish/-/raw/5891a90f71a8b9d5ea99c683ade7e485c685d642/packages/backend/assets/api-doc.png"; @@ -176,31 +176,39 @@ mod unit_test { assert_eq!( png_size_1, - get_image_size_from_url(png_url_1).await.unwrap() + super::get_image_size_from_url(png_url_1).await.unwrap() ); assert_eq!( png_size_2, - get_image_size_from_url(png_url_2).await.unwrap() + super::get_image_size_from_url(png_url_2).await.unwrap() ); assert_eq!( png_size_3, - get_image_size_from_url(png_url_3).await.unwrap() + super::get_image_size_from_url(png_url_3).await.unwrap() ); assert_eq!( rotated_jpeg_size, - get_image_size_from_url(rotated_jpeg_url).await.unwrap() + super::get_image_size_from_url(rotated_jpeg_url) + .await + .unwrap() ); assert_eq!( webp_size_1, - get_image_size_from_url(webp_url_1).await.unwrap() + super::get_image_size_from_url(webp_url_1).await.unwrap() ); assert_eq!( webp_size_2, - get_image_size_from_url(webp_url_2).await.unwrap() + super::get_image_size_from_url(webp_url_2).await.unwrap() ); - assert_eq!(ico_size, get_image_size_from_url(ico_url).await.unwrap()); - assert_eq!(gif_size, get_image_size_from_url(gif_url).await.unwrap()); - assert!(get_image_size_from_url(mp3_url).await.is_err()); + assert_eq!( + ico_size, + super::get_image_size_from_url(ico_url).await.unwrap() + ); + assert_eq!( + gif_size, + super::get_image_size_from_url(gif_url).await.unwrap() + ); + assert!(super::get_image_size_from_url(mp3_url).await.is_err()); } #[tokio::test] @@ -212,7 +220,7 @@ mod unit_test { .await .unwrap(); - assert!(get_image_size_from_url(url).await.is_ok()); - assert!(get_image_size_from_url(url).await.is_err()); + assert!(super::get_image_size_from_url(url).await.is_ok()); + assert!(super::get_image_size_from_url(url).await.is_err()); } } diff --git a/packages/backend-rs/src/misc/is_safe_url.rs b/packages/backend-rs/src/misc/is_safe_url.rs index 2600366ab5..1e5c5244ce 100644 --- a/packages/backend-rs/src/misc/is_safe_url.rs +++ b/packages/backend-rs/src/misc/is_safe_url.rs @@ -15,20 +15,28 @@ pub fn is_safe_url(url: &str) -> bool { #[cfg(test)] mod unit_test { - use super::is_safe_url; - #[test] - fn safe_url() { - assert!(is_safe_url("http://firefish.dev/firefish/firefish")); - assert!(is_safe_url("https://firefish.dev/firefish/firefish")); - assert!(is_safe_url("http://firefish.dev:80/firefish/firefish")); - assert!(is_safe_url("https://firefish.dev:80/firefish/firefish")); - assert!(is_safe_url("http://firefish.dev:443/firefish/firefish")); - assert!(is_safe_url("https://firefish.dev:443/firefish/firefish")); - assert!(!is_safe_url("https://unix/firefish/firefish")); - assert!(!is_safe_url("https://firefish.dev:35/firefish/firefish")); - assert!(!is_safe_url("ftp://firefish.dev/firefish/firefish")); - assert!(!is_safe_url("nyaa")); - assert!(!is_safe_url("")); + fn is_safe_url() { + assert!(super::is_safe_url("http://firefish.dev/firefish/firefish")); + assert!(super::is_safe_url("https://firefish.dev/firefish/firefish")); + assert!(super::is_safe_url( + "http://firefish.dev:80/firefish/firefish" + )); + assert!(super::is_safe_url( + "https://firefish.dev:80/firefish/firefish" + )); + assert!(super::is_safe_url( + "http://firefish.dev:443/firefish/firefish" + )); + assert!(super::is_safe_url( + "https://firefish.dev:443/firefish/firefish" + )); + assert!(!super::is_safe_url("https://unix/firefish/firefish")); + assert!(!super::is_safe_url( + "https://firefish.dev:35/firefish/firefish" + )); + assert!(!super::is_safe_url("ftp://firefish.dev/firefish/firefish")); + assert!(!super::is_safe_url("nyaa")); + assert!(!super::is_safe_url("")); } } diff --git a/packages/backend-rs/src/misc/latest_version.rs b/packages/backend-rs/src/misc/latest_version.rs index 82d8185d56..f6453249b8 100644 --- a/packages/backend-rs/src/misc/latest_version.rs +++ b/packages/backend-rs/src/misc/latest_version.rs @@ -100,7 +100,7 @@ mod unit_test { } #[tokio::test] - async fn check_version() { + async fn get_latest_version() { // delete caches in case you run this test multiple times cache::delete_one(cache::Category::FetchUrl, UPSTREAM_PACKAGE_JSON_URL) .await diff --git a/packages/backend-rs/src/misc/note/summarize.rs b/packages/backend-rs/src/misc/note/summarize.rs index 2bfabba71b..83bbb0246d 100644 --- a/packages/backend-rs/src/misc/note/summarize.rs +++ b/packages/backend-rs/src/misc/note/summarize.rs @@ -31,7 +31,7 @@ pub fn summarize_impl( /// /// # Arguments /// -/// * `note_like` : a note ([`crate::model::entity::note::Model`])-like instance containing +/// * `note_like` : a note ([`note::Model`](crate::model::entity::note::Model))-like instance containing /// `file_ids`, `text`, `cw`, `has_poll` fields /// /// # Caveats @@ -91,7 +91,7 @@ mod unit_test { } #[test] - fn summarize() { + fn summarize_note() { let note = NoteLike { file_ids: vec![], text: Some("Hello world!".to_string()), diff --git a/packages/backend-rs/src/misc/nyaify.rs b/packages/backend-rs/src/misc/nyaify.rs index 1fcce19cef..5e343f5838 100644 --- a/packages/backend-rs/src/misc/nyaify.rs +++ b/packages/backend-rs/src/misc/nyaify.rs @@ -100,17 +100,28 @@ pub fn nyaify(text: &str, lang: Option<&str>) -> String { #[cfg(test)] mod unit_test { - use super::nyaify; use pretty_assertions::assert_eq; #[test] - fn can_nyaify() { - assert_eq!(nyaify("Hello everyone!", Some("en")), "Hello everynyan!"); - assert_eq!(nyaify("Nonbinary people", None), "Nyanbinyary people"); - assert_eq!(nyaify("1分鐘是60秒", Some("zh-TW")), "1分鐘是60喵"); - assert_eq!(nyaify("1分間は60秒です", Some("ja-JP")), "1分間は60秒です"); - assert_eq!(nyaify("あなたは誰ですか", None), "あにゃたは誰ですか"); - assert_eq!(nyaify("Ναυτικός", Some("el-GR")), "Νιαυτικός"); - assert_eq!(nyaify("일어나다", None), "일어냐다냥"); + fn nyaify() { + assert_eq!( + super::nyaify("Hello everyone!", Some("en")), + "Hello everynyan!" + ); + assert_eq!( + super::nyaify("Nonbinary people", None), + "Nyanbinyary people" + ); + assert_eq!(super::nyaify("1分鐘是60秒", Some("zh-TW")), "1分鐘是60喵"); + assert_eq!( + super::nyaify("1分間は60秒です", Some("ja-JP")), + "1分間は60秒です" + ); + assert_eq!( + super::nyaify("あなたは誰ですか", None), + "あにゃたは誰ですか" + ); + assert_eq!(super::nyaify("Ναυτικός", Some("el-GR")), "Νιαυτικός"); + assert_eq!(super::nyaify("일어나다", None), "일어냐다냥"); } } diff --git a/packages/backend-rs/src/misc/password.rs b/packages/backend-rs/src/misc/password.rs index 454514d230..df18efd5a3 100644 --- a/packages/backend-rs/src/misc/password.rs +++ b/packages/backend-rs/src/misc/password.rs @@ -48,14 +48,14 @@ pub fn is_old_password_algorithm(hash: &str) -> bool { #[cfg(test)] mod unit_test { - use super::{hash_password, is_old_password_algorithm, verify_password}; + use super::{hash_password, is_old_password_algorithm}; #[test] - fn verify_password_test() { + fn verify_password() { let password = "omWc*%sD^fn7o2cXmc9e2QasBdrbRuhNB*gx!J5"; let hash = hash_password(password).unwrap(); - assert!(verify_password(password, hash.as_str()).unwrap()); + assert!(super::verify_password(password, hash.as_str()).unwrap()); let argon2_hash = "$argon2id$v=19$m=19456,t=2,p=1$jty3puDFd4ENv/lgHn3ROQ$kRHDdEoVv2rruvnF731E74NxnYlvj5FMgePdGIIq3Jk"; let argon2_invalid_hash = "$argon2id$v=19$m=19456,t=2,p=1$jty3puDFd4ENv/lgHn3ROQ$kRHDdEoVv2rruvnF731E74NxnYlvj4FMgePdGIIq3Jk"; @@ -65,10 +65,10 @@ mod unit_test { assert!(!is_old_password_algorithm(argon2_hash)); assert!(is_old_password_algorithm(bcrypt_hash)); - assert!(verify_password(password, argon2_hash).unwrap()); - assert!(verify_password(password, bcrypt_hash).unwrap()); + assert!(super::verify_password(password, argon2_hash).unwrap()); + assert!(super::verify_password(password, bcrypt_hash).unwrap()); - assert!(!verify_password(password, argon2_invalid_hash).unwrap()); - assert!(!verify_password(password, bcrypt_invalid_hash).unwrap()); + assert!(!super::verify_password(password, argon2_invalid_hash).unwrap()); + assert!(!super::verify_password(password, bcrypt_invalid_hash).unwrap()); } } diff --git a/packages/backend-rs/src/misc/reaction.rs b/packages/backend-rs/src/misc/reaction.rs index 4f11894ee7..5ea8385a00 100644 --- a/packages/backend-rs/src/misc/reaction.rs +++ b/packages/backend-rs/src/misc/reaction.rs @@ -121,11 +121,11 @@ pub async fn to_db_reaction(reaction: Option<&str>, host: Option<&str>) -> Resul #[cfg(test)] mod unit_test { - use super::{decode_reaction, DecodedReaction}; + use super::DecodedReaction; use pretty_assertions::{assert_eq, assert_ne}; #[test] - fn test_decode_reaction() { + fn decode_reaction() { let unicode_emoji_1 = DecodedReaction { reaction: "⭐".to_string(), name: None, @@ -137,25 +137,25 @@ mod unit_test { host: None, }; - assert_eq!(decode_reaction("⭐"), unicode_emoji_1); - assert_eq!(decode_reaction("🩷"), unicode_emoji_2); + assert_eq!(super::decode_reaction("⭐"), unicode_emoji_1); + assert_eq!(super::decode_reaction("🩷"), unicode_emoji_2); - assert_ne!(decode_reaction("⭐"), unicode_emoji_2); - assert_ne!(decode_reaction("🩷"), unicode_emoji_1); + assert_ne!(super::decode_reaction("⭐"), unicode_emoji_2); + assert_ne!(super::decode_reaction("🩷"), unicode_emoji_1); let unicode_emoji_3 = DecodedReaction { reaction: "🖖🏿".to_string(), name: None, host: None, }; - assert_eq!(decode_reaction("🖖🏿"), unicode_emoji_3); + assert_eq!(super::decode_reaction("🖖🏿"), unicode_emoji_3); let local_emoji = DecodedReaction { reaction: ":meow_melt_tears@.:".to_string(), name: Some("meow_melt_tears".to_string()), host: None, }; - assert_eq!(decode_reaction(":meow_melt_tears:"), local_emoji); + assert_eq!(super::decode_reaction(":meow_melt_tears:"), local_emoji); let remote_emoji_1 = DecodedReaction { reaction: ":meow_uwu@some-domain.example.org:".to_string(), @@ -163,7 +163,7 @@ mod unit_test { host: Some("some-domain.example.org".to_string()), }; assert_eq!( - decode_reaction(":meow_uwu@some-domain.example.org:"), + super::decode_reaction(":meow_uwu@some-domain.example.org:"), remote_emoji_1 ); @@ -173,7 +173,7 @@ mod unit_test { host: Some("xn--eckwd4c7c.example.org".to_string()), }; assert_eq!( - decode_reaction(":C++23@xn--eckwd4c7c.example.org:"), + super::decode_reaction(":C++23@xn--eckwd4c7c.example.org:"), remote_emoji_2 ); @@ -182,13 +182,16 @@ mod unit_test { name: None, host: None, }; - assert_eq!(decode_reaction(":foo"), invalid_reaction_1); + assert_eq!(super::decode_reaction(":foo"), invalid_reaction_1); let invalid_reaction_2 = DecodedReaction { reaction: ":foo&@example.com:".to_string(), name: None, host: None, }; - assert_eq!(decode_reaction(":foo&@example.com:"), invalid_reaction_2); + assert_eq!( + super::decode_reaction(":foo&@example.com:"), + invalid_reaction_2 + ); } } diff --git a/packages/backend-rs/src/service/antenna/check_hit.rs b/packages/backend-rs/src/service/antenna/check_hit.rs index fff8962ed4..fa9720f0cf 100644 --- a/packages/backend-rs/src/service/antenna/check_hit.rs +++ b/packages/backend-rs/src/service/antenna/check_hit.rs @@ -153,7 +153,7 @@ mod unit_test { use pretty_assertions::assert_eq; #[test] - fn test_match_all() { + fn check_match_string() { assert_eq!(match_all("Apple", "apple and banana", false), true); assert_eq!(match_all("Apple", "apple and banana", true), false); assert_eq!(match_all("Apple Banana", "apple and banana", false), true); diff --git a/packages/backend-rs/src/util/id.rs b/packages/backend-rs/src/util/id.rs index 39e4c34045..26c0e24d11 100644 --- a/packages/backend-rs/src/util/id.rs +++ b/packages/backend-rs/src/util/id.rs @@ -86,7 +86,7 @@ mod unit_test { use std::thread; #[test] - fn can_create_and_decode_id() { + fn create_and_decode_id() { let now = Utc::now(); assert_eq!(gen_id().len(), 16); assert_ne!(gen_id_at(now), gen_id_at(now)); @@ -108,7 +108,7 @@ mod unit_test { } #[test] - fn fixture_id_timestamp_check() { + fn get_timestamp_from_id() { assert_eq!(get_timestamp("9e112pilk1").unwrap(), 1682499501741); assert_eq!(get_timestamp("9e183znmxa").unwrap(), 1682511318850); assert_eq!(get_timestamp("9e9srqr79p").unwrap(), 1683029748787); diff --git a/packages/backend-rs/src/util/random.rs b/packages/backend-rs/src/util/random.rs index c757330f80..738926576d 100644 --- a/packages/backend-rs/src/util/random.rs +++ b/packages/backend-rs/src/util/random.rs @@ -19,13 +19,12 @@ pub fn generate_user_token() -> String { #[cfg(test)] mod unit_test { + use super::generate_secure_random_string; use pretty_assertions::{assert_eq, assert_ne}; use std::thread; - use super::generate_secure_random_string; - #[test] - fn can_generate_unique_strings() { + fn generate_unique_strings() { assert_eq!(generate_secure_random_string(16).len(), 16); assert_ne!( generate_secure_random_string(16), diff --git a/packages/backend/package.json b/packages/backend/package.json index f7875901fb..a331d7f15f 100644 --- a/packages/backend/package.json +++ b/packages/backend/package.json @@ -116,14 +116,14 @@ "tmp": "0.2.3", "typeorm": "0.3.20", "ulid": "2.3.0", - "unfurl.js": "^6.4.0", - "uuid": "9.0.1", + "unfurl.js": "6.4.0", + "uuid": "10.0.0", "websocket": "1.0.35", "xev": "3.0.2" }, "devDependencies": { "@swc/cli": "0.3.12", - "@swc/core": "1.5.25", + "@swc/core": "1.5.27", "@types/adm-zip": "0.5.5", "@types/async-lock": "1.4.0", "@types/color-convert": "2.0.3", diff --git a/packages/client/package.json b/packages/client/package.json index 3573c27ba1..3b5d47929a 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -83,7 +83,7 @@ "tinyld": "1.3.4", "typescript": "5.4.5", "unicode-emoji-json": "0.6.0", - "uuid": "9.0.1", + "uuid": "10.0.0", "vite": "5.2.13", "vite-plugin-compression": "0.5.1", "vue": "3.4.27", diff --git a/packages/firefish-js/package.json b/packages/firefish-js/package.json index bf8e0ca9a7..e93d232ca7 100644 --- a/packages/firefish-js/package.json +++ b/packages/firefish-js/package.json @@ -22,8 +22,8 @@ }, "devDependencies": { "@swc/cli": "0.3.12", - "@swc/core": "1.5.25", - "@swc/types": "0.1.7", + "@swc/core": "1.5.27", + "@swc/types": "0.1.8", "@types/jest": "29.5.12", "@types/node": "20.14.2", "jest": "29.7.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e1261b4166..74fe44a93b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -320,16 +320,16 @@ importers: version: 0.2.3 typeorm: specifier: 0.3.20 - version: 0.3.20(ioredis@5.4.1)(pg@8.12.0)(ts-node@10.9.2(@swc/core@1.5.25)(@swc/wasm@1.2.130)(@types/node@20.14.2)(typescript@5.4.5)) + version: 0.3.20(ioredis@5.4.1)(pg@8.12.0)(ts-node@10.9.2(@swc/core@1.5.27)(@swc/wasm@1.2.130)(@types/node@20.14.2)(typescript@5.4.5)) ulid: specifier: 2.3.0 version: 2.3.0 unfurl.js: - specifier: ^6.4.0 + specifier: 6.4.0 version: 6.4.0 uuid: - specifier: 9.0.1 - version: 9.0.1 + specifier: 10.0.0 + version: 10.0.0 websocket: specifier: 1.0.35 version: 1.0.35 @@ -343,10 +343,10 @@ importers: devDependencies: '@swc/cli': specifier: 0.3.12 - version: 0.3.12(@swc/core@1.5.25)(chokidar@3.6.0) + version: 0.3.12(@swc/core@1.5.27)(chokidar@3.6.0) '@swc/core': - specifier: 1.5.25 - version: 1.5.25 + specifier: 1.5.27 + version: 1.5.27 '@types/adm-zip': specifier: 0.5.5 version: 0.5.5 @@ -496,13 +496,13 @@ importers: version: 2.0.0 swc-loader: specifier: 0.2.6 - version: 0.2.6(@swc/core@1.5.25)(webpack@5.91.0(@swc/core@1.5.25)) + version: 0.2.6(@swc/core@1.5.27)(webpack@5.91.0(@swc/core@1.5.27)) ts-loader: specifier: 9.5.1 - version: 9.5.1(typescript@5.4.5)(webpack@5.91.0(@swc/core@1.5.25)) + version: 9.5.1(typescript@5.4.5)(webpack@5.91.0(@swc/core@1.5.27)) ts-node: specifier: 10.9.2 - version: 10.9.2(@swc/core@1.5.25)(@swc/wasm@1.2.130)(@types/node@20.14.2)(typescript@5.4.5) + version: 10.9.2(@swc/core@1.5.27)(@swc/wasm@1.2.130)(@types/node@20.14.2)(typescript@5.4.5) tsconfig-paths: specifier: 4.2.0 version: 4.2.0 @@ -514,7 +514,7 @@ importers: version: 5.4.5 webpack: specifier: 5.91.0 - version: 5.91.0(@swc/core@1.5.25) + version: 5.91.0(@swc/core@1.5.27) ws: specifier: 8.17.0 version: 8.17.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) @@ -741,8 +741,8 @@ importers: specifier: 0.6.0 version: 0.6.0 uuid: - specifier: 9.0.1 - version: 9.0.1 + specifier: 10.0.0 + version: 10.0.0 vite: specifier: 5.2.13 version: 5.2.13(@types/node@20.14.2)(sass@1.77.4)(stylus@0.57.0)(terser@5.31.0) @@ -780,13 +780,13 @@ importers: devDependencies: '@swc/cli': specifier: 0.3.12 - version: 0.3.12(@swc/core@1.5.25)(chokidar@3.6.0) + version: 0.3.12(@swc/core@1.5.27)(chokidar@3.6.0) '@swc/core': - specifier: 1.5.25 - version: 1.5.25 + specifier: 1.5.27 + version: 1.5.27 '@swc/types': - specifier: 0.1.7 - version: 0.1.7 + specifier: 0.1.8 + version: 0.1.8 '@types/jest': specifier: 29.5.12 version: 29.5.12 @@ -795,7 +795,7 @@ importers: version: 20.14.2 jest: specifier: 29.7.0 - version: 29.7.0(@types/node@20.14.2)(ts-node@10.9.2(@swc/core@1.5.25)(@swc/wasm@1.2.130)(@types/node@20.14.2)(typescript@5.4.5)) + version: 29.7.0(@types/node@20.14.2)(ts-node@10.9.2(@swc/core@1.5.27)(@swc/wasm@1.2.130)(@types/node@20.14.2)(typescript@5.4.5)) jest-fetch-mock: specifier: 3.0.3 version: 3.0.3 @@ -807,10 +807,10 @@ importers: version: 9.3.1 ts-jest: specifier: 29.1.4 - version: 29.1.4(@babel/core@7.24.6)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.6))(jest@29.7.0(@types/node@20.14.2)(ts-node@10.9.2(@swc/core@1.5.25)(@swc/wasm@1.2.130)(@types/node@20.14.2)(typescript@5.4.5)))(typescript@5.4.5) + version: 29.1.4(@babel/core@7.24.6)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.6))(jest@29.7.0(@types/node@20.14.2)(ts-node@10.9.2(@swc/core@1.5.27)(@swc/wasm@1.2.130)(@types/node@20.14.2)(typescript@5.4.5)))(typescript@5.4.5) ts-node: specifier: 10.9.2 - version: 10.9.2(@swc/core@1.5.25)(@swc/wasm@1.2.130)(@types/node@20.14.2)(typescript@5.4.5) + version: 10.9.2(@swc/core@1.5.27)(@swc/wasm@1.2.130)(@types/node@20.14.2)(typescript@5.4.5) tsd: specifier: 0.31.0 version: 0.31.0 @@ -2048,68 +2048,68 @@ packages: cpu: [arm64] os: [android] - '@swc/core-darwin-arm64@1.5.25': - resolution: {integrity: sha512-YbD0SBgVJS2DM0vwJTU5m7+wOyCjHPBDMf3nCBJQzFZzOLzK11eRW7SzU2jhJHr9HI9sKcNFfN4lIC2Sj+4inA==} + '@swc/core-darwin-arm64@1.5.27': + resolution: {integrity: sha512-jyoygXBcUcwUya2BI7Uvl0jwcm4kd0RBDGGkWgcFAZmwucSuLT3EsbpWhOwlL3ACT4rpnRlvh+k8nJlq3+w2Aw==} engines: {node: '>=10'} cpu: [arm64] os: [darwin] - '@swc/core-darwin-x64@1.5.25': - resolution: {integrity: sha512-OhP4TROT6gQuozn+ah0Y4UidSdgDmxwtQq3lgCUIAxJYErJAQ82/Y0kve2UaNmkSGjOHU+/b4siHPrYTkXOk0Q==} + '@swc/core-darwin-x64@1.5.27': + resolution: {integrity: sha512-eOC583D6b3MS9oODCcZUvAV7ajunjENAPVQL7aZaW+piERW+o4koZAiPlzFdMAUMj7UeVg+UN9sBBbTbJgruIA==} engines: {node: '>=10'} cpu: [x64] os: [darwin] - '@swc/core-linux-arm-gnueabihf@1.5.25': - resolution: {integrity: sha512-tNmUfrAHxN2gvYPyYNnHx2CYlPO7DGAUuK/bZrqawu++djcg+atAV3eI3XYJgmHId7/sYAlDQ9wjkrOLofFjVg==} + '@swc/core-linux-arm-gnueabihf@1.5.27': + resolution: {integrity: sha512-bMvX0yF7WYzn1K+s0JWJhvyA3OeZHVrdjka8eZ4LSeuLfC0ggJefo+klyeuN2szn/LYP6/3oByyrWNY8RSHB4w==} engines: {node: '>=10'} cpu: [arm] os: [linux] - '@swc/core-linux-arm64-gnu@1.5.25': - resolution: {integrity: sha512-stzpke+bRaNFM/HrZPRjX0aQZ86S/2DChVCwb8NAV1n5lu9mz1CS750y7WbbtX/KZjk92FsCeRy2qwkvjI0gWw==} + '@swc/core-linux-arm64-gnu@1.5.27': + resolution: {integrity: sha512-KlkOcSPxrCqZTm4XrT/LT1o9gmyM2T6bw/hL6IwTYRBJg+sej4rc9iSfVRFZBfNuG3EVkFQSXxik+0yVOXR93Q==} engines: {node: '>=10'} cpu: [arm64] os: [linux] - '@swc/core-linux-arm64-musl@1.5.25': - resolution: {integrity: sha512-UckUfDYedish/bj2V1jgQDGgouLhyRpG7jgF3mp8jHir11V2K6JiTyjFoz99eOiclS3+hNdr4QLJ+ifrQMJNZw==} + '@swc/core-linux-arm64-musl@1.5.27': + resolution: {integrity: sha512-EwdTt5qykxFXJu7kS+0X0Mp/IlwO8KJ6LVNak2+N8bt1J1q/nCdg1tRDOYQ1Z/MVa1Tm+lJ664Qs1y2NY2SDTw==} engines: {node: '>=10'} cpu: [arm64] os: [linux] - '@swc/core-linux-x64-gnu@1.5.25': - resolution: {integrity: sha512-LwbJEgNT3lXbvz4WFzVNXNvs8DvxpoXjMZk9K9Hig8tmZQJKHC2qZTGomcyK5EFzfj2HBuBXZnAEW8ZT9PcEaA==} + '@swc/core-linux-x64-gnu@1.5.27': + resolution: {integrity: sha512-RsBbxbiSNWLJ2jbAdITtv30J4eZw4O/JJ5zxYgWI54TdY7YrVsqIdzuX+ldximt+CYvO9irHm/mSr/IJY2YXrw==} engines: {node: '>=10'} cpu: [x64] os: [linux] - '@swc/core-linux-x64-musl@1.5.25': - resolution: {integrity: sha512-rsepMTgml0EkswWkBpg3Wrjj5eqjwTzZN5omAn1klzXSZnClTrfeHvBuoIJYVr1yx+jmBkqySgME2p7+magUAw==} + '@swc/core-linux-x64-musl@1.5.27': + resolution: {integrity: sha512-XpRx0Kpy6JEi1WSMqUfR3k8hXLqNOkVqFcUfzvfQ4QNBX5Ek7ywh7WAxlPhCrFp+wAfNAqqUyRY1xZpLvRU51A==} engines: {node: '>=10'} cpu: [x64] os: [linux] - '@swc/core-win32-arm64-msvc@1.5.25': - resolution: {integrity: sha512-DJDsLBsRBV3uQBShRK2x6fqzABp9RLNVxDUpTTvUjc7qywJ8vS/yn+POK/zCyVEqLagf1z/8D5CEQ+RAIJq1NA==} + '@swc/core-win32-arm64-msvc@1.5.27': + resolution: {integrity: sha512-pwSTUIokyIp+Ha1pur34qdYjxqL1QzhP/HM8anzsFs4yvV2LSI7c3qc4GWPNv2eQ9WiFXyo29uCEIRN6qig7wg==} engines: {node: '>=10'} cpu: [arm64] os: [win32] - '@swc/core-win32-ia32-msvc@1.5.25': - resolution: {integrity: sha512-BARL1ulHol53MEKC1ZVWM3A3FP757UUgG5Q8v97za+4a1SaIgbwvAQyHDxMYWi9+ij+OapK8YnWjJcFa17g8dw==} + '@swc/core-win32-ia32-msvc@1.5.27': + resolution: {integrity: sha512-S0S6vqFscvmxPolwmpZvTRfTbYR+eGcyc0ge4x/+HcnBCm+m84rcGxmp3bBb1edNFaIV+X47BlGvvh85cJ4rkQ==} engines: {node: '>=10'} cpu: [ia32] os: [win32] - '@swc/core-win32-x64-msvc@1.5.25': - resolution: {integrity: sha512-o+MHUWrQI9iR6EusEV8eNU2Ezi3KtlhUR4gfptQN5MbVzlgjTvQbhiKpE1GYOxp+0BLBbKRwITKOcdhxfEJ2Uw==} + '@swc/core-win32-x64-msvc@1.5.27': + resolution: {integrity: sha512-aem+BcNW42JPbvV6L3Jl3LLj6G80aYADzYenToYisy0Aop0XZAxL/0FbhV+xWORNFtIUKynNtaa1CK7w0UxehQ==} engines: {node: '>=10'} cpu: [x64] os: [win32] - '@swc/core@1.5.25': - resolution: {integrity: sha512-qdGEIdLVoTjEQ7w72UyyQ0wLFY4XbHfZiidmPHKJQsvSXzdpHXxPdlTCea/mY4AhMqo/M+pvkJSXJAxZnFl7qw==} + '@swc/core@1.5.27': + resolution: {integrity: sha512-HmSSCBoUSRDFAd8aEB+WILkCofIp1c2OU6ZJWu1aCt6pijwQSkA4y51CTBcdvyy/+zX1W3cic7alfdhmQxxeEQ==} engines: {node: '>=10'} peerDependencies: '@swc/helpers': '*' @@ -2120,8 +2120,8 @@ packages: '@swc/counter@0.1.3': resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} - '@swc/types@0.1.7': - resolution: {integrity: sha512-scHWahbHF0eyj3JsxG9CFJgFdFNaVQCNAimBlT6PzS3n/HptxqREjsm4OH6AN3lYcffZYSPxXW8ua2BEHp0lJQ==} + '@swc/types@0.1.8': + resolution: {integrity: sha512-RNFA3+7OJFNYY78x0FYwi1Ow+iF1eF5WvmfY1nXPOEH4R2p/D4Cr1vzje7dNAI2aLFqpv8Wyz4oKSWqIZArpQA==} '@swc/wasm@1.2.130': resolution: {integrity: sha512-rNcJsBxS70+pv8YUWwf5fRlWX6JoY/HJc25HD/F8m6Kv7XhJdqPPMhyX6TKkUBPAG7TWlZYoxa+rHAjPy4Cj3Q==} @@ -7415,6 +7415,10 @@ packages: util@0.12.5: resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==} + uuid@10.0.0: + resolution: {integrity: sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==} + hasBin: true + uuid@8.0.0: resolution: {integrity: sha512-jOXGuXZAWdsTH7eZLtyXMqUb9EcWMGZNbL9YcGBJl4MH4nrxHmZJhEHvyLFrkxo+28uLb/NYRcStH48fnD0Vzw==} hasBin: true @@ -8591,7 +8595,7 @@ snapshots: jest-util: 29.7.0 slash: 3.0.0 - '@jest/core@29.7.0(ts-node@10.9.2(@swc/core@1.5.25)(@swc/wasm@1.2.130)(@types/node@20.14.2)(typescript@5.4.5))': + '@jest/core@29.7.0(ts-node@10.9.2(@swc/core@1.5.27)(@swc/wasm@1.2.130)(@types/node@20.14.2)(typescript@5.4.5))': dependencies: '@jest/console': 29.7.0 '@jest/reporters': 29.7.0 @@ -8605,7 +8609,7 @@ snapshots: exit: 0.1.2 graceful-fs: 4.2.11 jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@20.14.2)(ts-node@10.9.2(@swc/core@1.5.25)(@swc/wasm@1.2.130)(@types/node@20.14.2)(typescript@5.4.5)) + jest-config: 29.7.0(@types/node@20.14.2)(ts-node@10.9.2(@swc/core@1.5.27)(@swc/wasm@1.2.130)(@types/node@20.14.2)(typescript@5.4.5)) jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 @@ -9054,10 +9058,10 @@ snapshots: '@sqltools/formatter@1.2.5': {} - '@swc/cli@0.3.12(@swc/core@1.5.25)(chokidar@3.6.0)': + '@swc/cli@0.3.12(@swc/core@1.5.27)(chokidar@3.6.0)': dependencies: '@mole-inc/bin-wrapper': 8.0.1 - '@swc/core': 1.5.25 + '@swc/core': 1.5.27 '@swc/counter': 0.1.3 commander: 8.3.0 fast-glob: 3.3.2 @@ -9074,55 +9078,55 @@ snapshots: '@swc/wasm': 1.2.130 optional: true - '@swc/core-darwin-arm64@1.5.25': + '@swc/core-darwin-arm64@1.5.27': optional: true - '@swc/core-darwin-x64@1.5.25': + '@swc/core-darwin-x64@1.5.27': optional: true - '@swc/core-linux-arm-gnueabihf@1.5.25': + '@swc/core-linux-arm-gnueabihf@1.5.27': optional: true - '@swc/core-linux-arm64-gnu@1.5.25': + '@swc/core-linux-arm64-gnu@1.5.27': optional: true - '@swc/core-linux-arm64-musl@1.5.25': + '@swc/core-linux-arm64-musl@1.5.27': optional: true - '@swc/core-linux-x64-gnu@1.5.25': + '@swc/core-linux-x64-gnu@1.5.27': optional: true - '@swc/core-linux-x64-musl@1.5.25': + '@swc/core-linux-x64-musl@1.5.27': optional: true - '@swc/core-win32-arm64-msvc@1.5.25': + '@swc/core-win32-arm64-msvc@1.5.27': optional: true - '@swc/core-win32-ia32-msvc@1.5.25': + '@swc/core-win32-ia32-msvc@1.5.27': optional: true - '@swc/core-win32-x64-msvc@1.5.25': + '@swc/core-win32-x64-msvc@1.5.27': optional: true - '@swc/core@1.5.25': + '@swc/core@1.5.27': dependencies: '@swc/counter': 0.1.3 - '@swc/types': 0.1.7 + '@swc/types': 0.1.8 optionalDependencies: - '@swc/core-darwin-arm64': 1.5.25 - '@swc/core-darwin-x64': 1.5.25 - '@swc/core-linux-arm-gnueabihf': 1.5.25 - '@swc/core-linux-arm64-gnu': 1.5.25 - '@swc/core-linux-arm64-musl': 1.5.25 - '@swc/core-linux-x64-gnu': 1.5.25 - '@swc/core-linux-x64-musl': 1.5.25 - '@swc/core-win32-arm64-msvc': 1.5.25 - '@swc/core-win32-ia32-msvc': 1.5.25 - '@swc/core-win32-x64-msvc': 1.5.25 + '@swc/core-darwin-arm64': 1.5.27 + '@swc/core-darwin-x64': 1.5.27 + '@swc/core-linux-arm-gnueabihf': 1.5.27 + '@swc/core-linux-arm64-gnu': 1.5.27 + '@swc/core-linux-arm64-musl': 1.5.27 + '@swc/core-linux-x64-gnu': 1.5.27 + '@swc/core-linux-x64-musl': 1.5.27 + '@swc/core-win32-arm64-msvc': 1.5.27 + '@swc/core-win32-ia32-msvc': 1.5.27 + '@swc/core-win32-x64-msvc': 1.5.27 '@swc/counter@0.1.3': {} - '@swc/types@0.1.7': + '@swc/types@0.1.8': dependencies: '@swc/counter': 0.1.3 @@ -10630,13 +10634,13 @@ snapshots: crc-32: 1.2.2 readable-stream: 4.5.2 - create-jest@29.7.0(@types/node@20.14.2)(ts-node@10.9.2(@swc/core@1.5.25)(@swc/wasm@1.2.130)(@types/node@20.14.2)(typescript@5.4.5)): + create-jest@29.7.0(@types/node@20.14.2)(ts-node@10.9.2(@swc/core@1.5.27)(@swc/wasm@1.2.130)(@types/node@20.14.2)(typescript@5.4.5)): dependencies: '@jest/types': 29.6.3 chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.11 - jest-config: 29.7.0(@types/node@20.14.2)(ts-node@10.9.2(@swc/core@1.5.25)(@swc/wasm@1.2.130)(@types/node@20.14.2)(typescript@5.4.5)) + jest-config: 29.7.0(@types/node@20.14.2)(ts-node@10.9.2(@swc/core@1.5.27)(@swc/wasm@1.2.130)(@types/node@20.14.2)(typescript@5.4.5)) jest-util: 29.7.0 prompts: 2.4.2 transitivePeerDependencies: @@ -12470,16 +12474,16 @@ snapshots: - babel-plugin-macros - supports-color - jest-cli@29.7.0(@types/node@20.14.2)(ts-node@10.9.2(@swc/core@1.5.25)(@swc/wasm@1.2.130)(@types/node@20.14.2)(typescript@5.4.5)): + jest-cli@29.7.0(@types/node@20.14.2)(ts-node@10.9.2(@swc/core@1.5.27)(@swc/wasm@1.2.130)(@types/node@20.14.2)(typescript@5.4.5)): dependencies: - '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.5.25)(@swc/wasm@1.2.130)(@types/node@20.14.2)(typescript@5.4.5)) + '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.5.27)(@swc/wasm@1.2.130)(@types/node@20.14.2)(typescript@5.4.5)) '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 chalk: 4.1.2 - create-jest: 29.7.0(@types/node@20.14.2)(ts-node@10.9.2(@swc/core@1.5.25)(@swc/wasm@1.2.130)(@types/node@20.14.2)(typescript@5.4.5)) + create-jest: 29.7.0(@types/node@20.14.2)(ts-node@10.9.2(@swc/core@1.5.27)(@swc/wasm@1.2.130)(@types/node@20.14.2)(typescript@5.4.5)) exit: 0.1.2 import-local: 3.1.0 - jest-config: 29.7.0(@types/node@20.14.2)(ts-node@10.9.2(@swc/core@1.5.25)(@swc/wasm@1.2.130)(@types/node@20.14.2)(typescript@5.4.5)) + jest-config: 29.7.0(@types/node@20.14.2)(ts-node@10.9.2(@swc/core@1.5.27)(@swc/wasm@1.2.130)(@types/node@20.14.2)(typescript@5.4.5)) jest-util: 29.7.0 jest-validate: 29.7.0 yargs: 17.7.2 @@ -12489,7 +12493,7 @@ snapshots: - supports-color - ts-node - jest-config@29.7.0(@types/node@20.14.2)(ts-node@10.9.2(@swc/core@1.5.25)(@swc/wasm@1.2.130)(@types/node@20.14.2)(typescript@5.4.5)): + jest-config@29.7.0(@types/node@20.14.2)(ts-node@10.9.2(@swc/core@1.5.27)(@swc/wasm@1.2.130)(@types/node@20.14.2)(typescript@5.4.5)): dependencies: '@babel/core': 7.24.6 '@jest/test-sequencer': 29.7.0 @@ -12515,7 +12519,7 @@ snapshots: strip-json-comments: 3.1.1 optionalDependencies: '@types/node': 20.14.2 - ts-node: 10.9.2(@swc/core@1.5.25)(@swc/wasm@1.2.130)(@types/node@20.14.2)(typescript@5.4.5) + ts-node: 10.9.2(@swc/core@1.5.27)(@swc/wasm@1.2.130)(@types/node@20.14.2)(typescript@5.4.5) transitivePeerDependencies: - babel-plugin-macros - supports-color @@ -12753,12 +12757,12 @@ snapshots: merge-stream: 2.0.0 supports-color: 8.1.1 - jest@29.7.0(@types/node@20.14.2)(ts-node@10.9.2(@swc/core@1.5.25)(@swc/wasm@1.2.130)(@types/node@20.14.2)(typescript@5.4.5)): + jest@29.7.0(@types/node@20.14.2)(ts-node@10.9.2(@swc/core@1.5.27)(@swc/wasm@1.2.130)(@types/node@20.14.2)(typescript@5.4.5)): dependencies: - '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.5.25)(@swc/wasm@1.2.130)(@types/node@20.14.2)(typescript@5.4.5)) + '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.5.27)(@swc/wasm@1.2.130)(@types/node@20.14.2)(typescript@5.4.5)) '@jest/types': 29.6.3 import-local: 3.1.0 - jest-cli: 29.7.0(@types/node@20.14.2)(ts-node@10.9.2(@swc/core@1.5.25)(@swc/wasm@1.2.130)(@types/node@20.14.2)(typescript@5.4.5)) + jest-cli: 29.7.0(@types/node@20.14.2)(ts-node@10.9.2(@swc/core@1.5.27)(@swc/wasm@1.2.130)(@types/node@20.14.2)(typescript@5.4.5)) transitivePeerDependencies: - '@types/node' - babel-plugin-macros @@ -14705,11 +14709,11 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} - swc-loader@0.2.6(@swc/core@1.5.25)(webpack@5.91.0(@swc/core@1.5.25)): + swc-loader@0.2.6(@swc/core@1.5.27)(webpack@5.91.0(@swc/core@1.5.27)): dependencies: - '@swc/core': 1.5.25 + '@swc/core': 1.5.27 '@swc/counter': 0.1.3 - webpack: 5.91.0(@swc/core@1.5.25) + webpack: 5.91.0(@swc/core@1.5.27) swiper@11.1.4: {} @@ -14750,16 +14754,16 @@ snapshots: fast-fifo: 1.3.2 streamx: 2.16.1 - terser-webpack-plugin@5.3.10(@swc/core@1.5.25)(webpack@5.91.0(@swc/core@1.5.25)): + terser-webpack-plugin@5.3.10(@swc/core@1.5.27)(webpack@5.91.0(@swc/core@1.5.27)): dependencies: '@jridgewell/trace-mapping': 0.3.25 jest-worker: 27.5.1 schema-utils: 3.3.0 serialize-javascript: 6.0.2 terser: 5.31.0 - webpack: 5.91.0(@swc/core@1.5.25) + webpack: 5.91.0(@swc/core@1.5.27) optionalDependencies: - '@swc/core': 1.5.25 + '@swc/core': 1.5.27 terser@5.31.0: dependencies: @@ -14862,11 +14866,11 @@ snapshots: dependencies: typescript: 5.4.5 - ts-jest@29.1.4(@babel/core@7.24.6)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.6))(jest@29.7.0(@types/node@20.14.2)(ts-node@10.9.2(@swc/core@1.5.25)(@swc/wasm@1.2.130)(@types/node@20.14.2)(typescript@5.4.5)))(typescript@5.4.5): + ts-jest@29.1.4(@babel/core@7.24.6)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.6))(jest@29.7.0(@types/node@20.14.2)(ts-node@10.9.2(@swc/core@1.5.27)(@swc/wasm@1.2.130)(@types/node@20.14.2)(typescript@5.4.5)))(typescript@5.4.5): dependencies: bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 - jest: 29.7.0(@types/node@20.14.2)(ts-node@10.9.2(@swc/core@1.5.25)(@swc/wasm@1.2.130)(@types/node@20.14.2)(typescript@5.4.5)) + jest: 29.7.0(@types/node@20.14.2)(ts-node@10.9.2(@swc/core@1.5.27)(@swc/wasm@1.2.130)(@types/node@20.14.2)(typescript@5.4.5)) jest-util: 29.7.0 json5: 2.2.3 lodash.memoize: 4.1.2 @@ -14880,7 +14884,7 @@ snapshots: '@jest/types': 29.6.3 babel-jest: 29.7.0(@babel/core@7.24.6) - ts-loader@9.5.1(typescript@5.4.5)(webpack@5.91.0(@swc/core@1.5.25)): + ts-loader@9.5.1(typescript@5.4.5)(webpack@5.91.0(@swc/core@1.5.27)): dependencies: chalk: 4.1.2 enhanced-resolve: 5.16.1 @@ -14888,9 +14892,9 @@ snapshots: semver: 7.6.2 source-map: 0.7.4 typescript: 5.4.5 - webpack: 5.91.0(@swc/core@1.5.25) + webpack: 5.91.0(@swc/core@1.5.27) - ts-node@10.9.2(@swc/core@1.5.25)(@swc/wasm@1.2.130)(@types/node@20.14.2)(typescript@5.4.5): + ts-node@10.9.2(@swc/core@1.5.27)(@swc/wasm@1.2.130)(@types/node@20.14.2)(typescript@5.4.5): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.11 @@ -14908,7 +14912,7 @@ snapshots: v8-compile-cache-lib: 3.0.1 yn: 3.1.1 optionalDependencies: - '@swc/core': 1.5.25 + '@swc/core': 1.5.27 '@swc/wasm': 1.2.130 tsconfig-paths@3.15.0: @@ -15010,7 +15014,7 @@ snapshots: typedarray@0.0.6: {} - typeorm@0.3.20(ioredis@5.4.1)(pg@8.12.0)(ts-node@10.9.2(@swc/core@1.5.25)(@swc/wasm@1.2.130)(@types/node@20.14.2)(typescript@5.4.5)): + typeorm@0.3.20(ioredis@5.4.1)(pg@8.12.0)(ts-node@10.9.2(@swc/core@1.5.27)(@swc/wasm@1.2.130)(@types/node@20.14.2)(typescript@5.4.5)): dependencies: '@sqltools/formatter': 1.2.5 app-root-path: 3.1.0 @@ -15030,7 +15034,7 @@ snapshots: optionalDependencies: ioredis: 5.4.1 pg: 8.12.0 - ts-node: 10.9.2(@swc/core@1.5.25)(@swc/wasm@1.2.130)(@types/node@20.14.2)(typescript@5.4.5) + ts-node: 10.9.2(@swc/core@1.5.27)(@swc/wasm@1.2.130)(@types/node@20.14.2)(typescript@5.4.5) transitivePeerDependencies: - supports-color @@ -15121,6 +15125,8 @@ snapshots: is-typed-array: 1.1.13 which-typed-array: 1.1.15 + uuid@10.0.0: {} + uuid@8.0.0: {} uuid@8.3.2: {} @@ -15253,7 +15259,7 @@ snapshots: webpack-sources@3.2.3: {} - webpack@5.91.0(@swc/core@1.5.25): + webpack@5.91.0(@swc/core@1.5.27): dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.5 @@ -15276,7 +15282,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(@swc/core@1.5.25)(webpack@5.91.0(@swc/core@1.5.25)) + terser-webpack-plugin: 5.3.10(@swc/core@1.5.27)(webpack@5.91.0(@swc/core@1.5.27)) watchpack: 2.4.1 webpack-sources: 3.2.3 transitivePeerDependencies: