Merge branch 'develop' into iceshrimp_mastodon

This commit is contained in:
naskya 2024-06-10 21:51:34 +09:00
commit 4b02dcd046
No known key found for this signature in database
GPG key ID: 712D413B3A9FED5C
22 changed files with 315 additions and 215 deletions

View file

@ -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

View file

@ -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();
}
}

View file

@ -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]

View file

@ -7,10 +7,13 @@ pub struct Acct {
pub host: Option<String>,
}
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<Self, Self::Err> {
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()),

View file

@ -100,11 +100,11 @@ pub async fn fetch_nodeinfo(host: &str) -> Result<Nodeinfo, Error> {
#[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

View file

@ -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()]));

View file

@ -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%"));
}
}

View file

@ -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)"
);
}

View file

@ -122,12 +122,12 @@ pub async fn get_image_size_from_url(url: &str) -> Result<ImageSize, Error> {
#[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());
}
}

View file

@ -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(""));
}
}

View file

@ -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

View file

@ -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()),

View file

@ -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), "일어냐다냥");
}
}

View file

@ -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());
}
}

View file

@ -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
);
}
}

View file

@ -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);

View file

@ -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);

View file

@ -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),

View file

@ -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",

View file

@ -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",

View file

@ -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",

View file

@ -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: