From 37f9078606db61bcd53d2b64dc620c5963d990e6 Mon Sep 17 00:00:00 2001 From: naskya Date: Sun, 9 Jun 2024 21:29:41 +0900 Subject: [PATCH 01/10] chore (backend-rs): shorten doc link text --- packages/backend-rs/src/misc/note/summarize.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/backend-rs/src/misc/note/summarize.rs b/packages/backend-rs/src/misc/note/summarize.rs index 2bfabba71b..2f1f847b4a 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 From 53ecfdeba11dfd32602994d1e7f047754affea70 Mon Sep 17 00:00:00 2001 From: CI Date: Sun, 9 Jun 2024 20:05:08 +0000 Subject: [PATCH 02/10] chore(deps): update dependency uuid to v10 --- packages/backend/package.json | 2 +- packages/client/package.json | 2 +- pnpm-lock.yaml | 14 ++++++++++---- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/packages/backend/package.json b/packages/backend/package.json index 21c3e8389e..6fe6a7532a 100644 --- a/packages/backend/package.json +++ b/packages/backend/package.json @@ -115,7 +115,7 @@ "tmp": "0.2.3", "typeorm": "0.3.20", "ulid": "2.3.0", - "uuid": "9.0.1", + "uuid": "10.0.0", "websocket": "1.0.35", "xev": "3.0.2" }, 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/pnpm-lock.yaml b/pnpm-lock.yaml index a0cc8e6229..ef1b1fe740 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -322,8 +322,8 @@ importers: specifier: 2.3.0 version: 2.3.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 @@ -735,8 +735,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.1) @@ -7682,6 +7682,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 @@ -15902,6 +15906,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: {} From fc7448727b85dd64cac6bedaf836349139383ddc Mon Sep 17 00:00:00 2001 From: jolupa Date: Sat, 8 Jun 2024 21:28:38 +0000 Subject: [PATCH 03/10] locale: update translations (Catalan) Currently translated at 100.0% (1945 of 1945 strings) Translation: Firefish/locales Translate-URL: https://hosted.weblate.org/projects/firefish/locales/ca/ --- locales/ca-ES.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 From 581668c30655595e1ea523631171f823f546a28d Mon Sep 17 00:00:00 2001 From: naskya Date: Mon, 10 Jun 2024 18:09:05 +0900 Subject: [PATCH 04/10] chore (backend-rs): more connection checks --- .../backend-rs/src/database/postgresql.rs | 33 +++++++++++++++++-- packages/backend-rs/src/database/redis.rs | 33 +++++++++++++++++-- 2 files changed, 60 insertions(+), 6 deletions(-) diff --git a/packages/backend-rs/src/database/postgresql.rs b/packages/backend-rs/src/database/postgresql.rs index 2e9a76126e..85b79d0d74 100644 --- a/packages/backend-rs/src/database/postgresql.rs +++ b/packages/backend-rs/src/database/postgresql.rs @@ -41,8 +41,35 @@ mod unit_test { use super::get_conn; #[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(); + } } } diff --git a/packages/backend-rs/src/database/redis.rs b/packages/backend-rs/src/database/redis.rs index 266e563c8d..7f077e27a6 100644 --- a/packages/backend-rs/src/database/redis.rs +++ b/packages/backend-rs/src/database/redis.rs @@ -119,9 +119,36 @@ 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] From bc7fdc5c0b9d24082e5433ffc19157d892015863 Mon Sep 17 00:00:00 2001 From: naskya Date: Mon, 10 Jun 2024 18:09:08 +0900 Subject: [PATCH 05/10] chore (backend-rs): change test names --- .../backend-rs/src/database/postgresql.rs | 8 +---- packages/backend-rs/src/database/redis.rs | 8 +---- packages/backend-rs/src/federation/acct.rs | 4 +-- .../src/federation/nodeinfo/fetch.rs | 14 ++++---- .../backend-rs/src/misc/check_word_mute.rs | 2 +- packages/backend-rs/src/misc/escape_sql.rs | 27 +++++++------- .../src/misc/format_milliseconds.rs | 17 +++++---- .../backend-rs/src/misc/get_image_size.rs | 34 +++++++++++------- packages/backend-rs/src/misc/is_safe_url.rs | 36 +++++++++++-------- .../backend-rs/src/misc/latest_version.rs | 2 +- packages/backend-rs/src/misc/mastodon_id.rs | 13 ++++--- .../backend-rs/src/misc/note/summarize.rs | 2 +- packages/backend-rs/src/misc/nyaify.rs | 29 ++++++++++----- packages/backend-rs/src/misc/password.rs | 14 ++++---- packages/backend-rs/src/misc/reaction.rs | 27 +++++++------- .../src/service/antenna/check_hit.rs | 2 +- packages/backend-rs/src/util/id.rs | 4 +-- packages/backend-rs/src/util/random.rs | 5 ++- 18 files changed, 134 insertions(+), 114 deletions(-) diff --git a/packages/backend-rs/src/database/postgresql.rs b/packages/backend-rs/src/database/postgresql.rs index 85b79d0d74..52e95680bd 100644 --- a/packages/backend-rs/src/database/postgresql.rs +++ b/packages/backend-rs/src/database/postgresql.rs @@ -51,13 +51,7 @@ mod unit_test { #[tokio::test] async fn connect_concurrent() { - let [c1, c2, c3, c4, c5] = [ - get_conn(), - get_conn(), - get_conn(), - get_conn(), - get_conn(), - ]; + 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(); } diff --git a/packages/backend-rs/src/database/redis.rs b/packages/backend-rs/src/database/redis.rs index 7f077e27a6..f40cd011c2 100644 --- a/packages/backend-rs/src/database/redis.rs +++ b/packages/backend-rs/src/database/redis.rs @@ -129,13 +129,7 @@ mod unit_test { #[tokio::test] async fn connect_concurrent() { - let [c1, c2, c3, c4, c5] = [ - get_conn(), - get_conn(), - get_conn(), - get_conn(), - get_conn(), - ]; + 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(); } diff --git a/packages/backend-rs/src/federation/acct.rs b/packages/backend-rs/src/federation/acct.rs index eb49e0e45b..e332c31e32 100644 --- a/packages/backend-rs/src/federation/acct.rs +++ b/packages/backend-rs/src/federation/acct.rs @@ -64,7 +64,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 +81,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..1978a20c8f 100644 --- a/packages/backend-rs/src/misc/check_word_mute.rs +++ b/packages/backend-rs/src/misc/check_word_mute.rs @@ -71,7 +71,7 @@ mod unit_test { use super::check_word_mute_impl; #[test] - fn test_word_mute_match() { + fn word_mute_match() { let texts = vec![ "The quick brown fox jumps over the lazy dog.".to_string(), "色は匂へど 散りぬるを 我が世誰ぞ 常ならむ".to_string(), diff --git a/packages/backend-rs/src/misc/escape_sql.rs b/packages/backend-rs/src/misc/escape_sql.rs index 31b8b964ab..5ff7e51729 100644 --- a/packages/backend-rs/src/misc/escape_sql.rs +++ b/packages/backend-rs/src/misc/escape_sql.rs @@ -14,25 +14,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/mastodon_id.rs b/packages/backend-rs/src/misc/mastodon_id.rs index 9cf5d8d5f5..bb837c42f7 100644 --- a/packages/backend-rs/src/misc/mastodon_id.rs +++ b/packages/backend-rs/src/misc/mastodon_id.rs @@ -12,24 +12,23 @@ pub fn from_mastodon_id(mastodon_id: &str) -> Option { #[cfg(test)] mod unit_test { - use super::{from_mastodon_id, to_mastodon_id}; use pretty_assertions::assert_eq; #[test] - fn to_mastodon_id_test() { + fn to_mastodon_id() { assert_eq!( - to_mastodon_id("9pdqi3rjl4lxirq3").unwrap(), + super::to_mastodon_id("9pdqi3rjl4lxirq3").unwrap(), "2145531976185871567229403" ); - assert_eq!(to_mastodon_id("9pdqi3r*irq3"), None); + assert_eq!(super::to_mastodon_id("9pdqi3r*irq3"), None); } #[test] - fn from_mastodon_id_test() { + fn from_mastodon_id() { assert_eq!( - from_mastodon_id("2145531976185871567229403").unwrap(), + super::from_mastodon_id("2145531976185871567229403").unwrap(), "9pdqi3rjl4lxirq3" ); - assert_eq!(from_mastodon_id("9pdqi3rjl4lxirq3"), None); + assert_eq!(super::from_mastodon_id("9pdqi3rjl4lxirq3"), None); } } diff --git a/packages/backend-rs/src/misc/note/summarize.rs b/packages/backend-rs/src/misc/note/summarize.rs index 2f1f847b4a..83bbb0246d 100644 --- a/packages/backend-rs/src/misc/note/summarize.rs +++ b/packages/backend-rs/src/misc/note/summarize.rs @@ -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), From b7526950572db58ebc4f31266256631df31980e3 Mon Sep 17 00:00:00 2001 From: naskya Date: Mon, 10 Jun 2024 18:09:08 +0900 Subject: [PATCH 06/10] chore (backend-rs): use proper error type --- packages/backend-rs/src/federation/acct.rs | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/packages/backend-rs/src/federation/acct.rs b/packages/backend-rs/src/federation/acct.rs index e332c31e32..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 From bb3e2138258b6d4e5acb7e7f9cdb3f4645ca3545 Mon Sep 17 00:00:00 2001 From: CI Date: Mon, 10 Jun 2024 12:05:06 +0000 Subject: [PATCH 07/10] chore(deps): update swc monorepo --- packages/backend/package.json | 2 +- packages/firefish-js/package.json | 4 +- pnpm-lock.yaml | 188 +++++++++++++++--------------- 3 files changed, 97 insertions(+), 97 deletions(-) diff --git a/packages/backend/package.json b/packages/backend/package.json index 6fe6a7532a..db9d170640 100644 --- a/packages/backend/package.json +++ b/packages/backend/package.json @@ -121,7 +121,7 @@ }, "devDependencies": { "@swc/cli": "0.3.12", - "@swc/core": "1.5.25", + "@swc/core": "1.5.27", "@types/adm-zip": "0.5.5", "@types/color-convert": "2.0.3", "@types/content-disposition": "0.5.8", 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 ef1b1fe740..7629a96c0f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -317,7 +317,7 @@ 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 @@ -337,10 +337,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 @@ -490,13 +490,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 @@ -508,7 +508,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) @@ -774,13 +774,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 @@ -789,7 +789,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 @@ -801,10 +801,10 @@ importers: version: 9.3.1 ts-jest: specifier: 29.1.4 - version: 29.1.4(@babel/core@7.24.7)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.7))(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.7)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.7))(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 @@ -2173,68 +2173,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': '*' @@ -2245,8 +2245,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==} @@ -8960,7 +8960,7 @@ snapshots: - supports-color - ts-node - '@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 @@ -8974,7 +8974,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 @@ -9423,10 +9423,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 @@ -9443,55 +9443,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 @@ -11117,13 +11117,13 @@ snapshots: - supports-color - ts-node - 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: @@ -13112,16 +13112,16 @@ snapshots: - supports-color - ts-node - 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 @@ -13191,7 +13191,7 @@ snapshots: - babel-plugin-macros - supports-color - 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.7 '@jest/test-sequencer': 29.7.0 @@ -13217,7 +13217,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 @@ -13467,12 +13467,12 @@ snapshots: - supports-color - ts-node - 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 @@ -15464,11 +15464,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: {} @@ -15509,16 +15509,16 @@ snapshots: fast-fifo: 1.3.2 streamx: 2.18.0 - 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.1 - 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.1: dependencies: @@ -15643,11 +15643,11 @@ snapshots: '@jest/types': 29.6.3 babel-jest: 29.7.0(@babel/core@7.24.7) - ts-jest@29.1.4(@babel/core@7.24.7)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.7))(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.7)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.7))(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 @@ -15661,7 +15661,7 @@ snapshots: '@jest/types': 29.6.3 babel-jest: 29.7.0(@babel/core@7.24.7) - 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.17.0 @@ -15669,9 +15669,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 @@ -15689,7 +15689,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: @@ -15804,7 +15804,7 @@ snapshots: shiki: 0.14.7 typescript: 4.9.4 - 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 @@ -15824,7 +15824,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 @@ -16044,7 +16044,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 @@ -16067,7 +16067,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: From 8c56a3256b8e6b8caca52e8a69b05169cb0df155 Mon Sep 17 00:00:00 2001 From: naskya Date: Mon, 10 Jun 2024 21:12:19 +0900 Subject: [PATCH 08/10] chore (backend-rs, test): use array instead of vector --- packages/backend-rs/src/misc/check_word_mute.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/backend-rs/src/misc/check_word_mute.rs b/packages/backend-rs/src/misc/check_word_mute.rs index 1978a20c8f..d9d1006dfe 100644 --- a/packages/backend-rs/src/misc/check_word_mute.rs +++ b/packages/backend-rs/src/misc/check_word_mute.rs @@ -72,7 +72,7 @@ mod unit_test { #[test] fn word_mute_match() { - let texts = vec![ + let texts = [ "The quick brown fox jumps over the lazy dog.".to_string(), "色は匂へど 散りぬるを 我が世誰ぞ 常ならむ".to_string(), "😇".to_string(), From fa9643013e5031f41d7db0346f8405d52aac3fbf Mon Sep 17 00:00:00 2001 From: naskya Date: Mon, 10 Jun 2024 21:14:29 +0900 Subject: [PATCH 09/10] chore (backend-rs, test): remove unneeded # from raw string literals --- packages/backend-rs/src/misc/check_word_mute.rs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/backend-rs/src/misc/check_word_mute.rs b/packages/backend-rs/src/misc/check_word_mute.rs index d9d1006dfe..0faf946c8d 100644 --- a/packages/backend-rs/src/misc/check_word_mute.rs +++ b/packages/backend-rs/src/misc/check_word_mute.rs @@ -78,11 +78,11 @@ mod unit_test { "😇".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()])); From e5448bae3306a39323b15cfabd7c9835d4a54ebf Mon Sep 17 00:00:00 2001 From: naskya Date: Mon, 10 Jun 2024 21:44:25 +0900 Subject: [PATCH 10/10] test (backend-rs): add database connection test --- packages/backend-rs/src/database/postgresql.rs | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/packages/backend-rs/src/database/postgresql.rs b/packages/backend-rs/src/database/postgresql.rs index 52e95680bd..3a95cd65fb 100644 --- a/packages/backend-rs/src/database/postgresql.rs +++ b/packages/backend-rs/src/database/postgresql.rs @@ -39,6 +39,7 @@ 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_sequential() { @@ -66,4 +67,19 @@ mod unit_test { 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(); + } }