diff --git a/Cargo.lock b/Cargo.lock
index f907f47515..c9fd77dcab 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -1700,6 +1700,8 @@ dependencies = [
  "once_cell",
  "proc-macro2",
  "quote",
+ "regex",
+ "semver",
  "syn 2.0.66",
 ]
 
@@ -2782,6 +2784,12 @@ dependencies = [
  "thiserror",
 ]
 
+[[package]]
+name = "semver"
+version = "1.0.23"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b"
+
 [[package]]
 name = "serde"
 version = "1.0.203"
@@ -3427,9 +3435,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
 
 [[package]]
 name = "tokio"
-version = "1.37.0"
+version = "1.38.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1adbebffeca75fcfd058afa480fb6c0b81e165a0323f9c9d39c9697e37c46787"
+checksum = "ba4f4a02a7a80d6f274636f0aa95c7e383b912d41fe721a31f29e29698585a4a"
 dependencies = [
  "backtrace",
  "bytes",
@@ -3445,9 +3453,9 @@ dependencies = [
 
 [[package]]
 name = "tokio-macros"
-version = "2.2.0"
+version = "2.3.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b"
+checksum = "5f5ae998a069d4b5aba8ee9dad856af7d520c3699e6159b185c2acd48155d39a"
 dependencies = [
  "proc-macro2",
  "quote",
diff --git a/Cargo.toml b/Cargo.toml
index 8a8c3b7f54..bb88b823ac 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -5,9 +5,9 @@ resolver = "2"
 [workspace.dependencies]
 macro-rs = { path = "packages/macro-rs" }
 
-napi = { git = "https://github.com/napi-rs/napi-rs.git", rev = "ca2cd5c35a0c39ec4a94e93c6c5695b681046df2", default-features = false }
-napi-derive = { version = "2.16.5", default-features = false }
-napi-build = { version = "2.1.3", default-features = false }
+napi = { git = "https://github.com/napi-rs/napi-rs.git", rev = "ca2cd5c35a0c39ec4a94e93c6c5695b681046df2" }
+napi-derive = "2.16.5"
+napi-build = "2.1.3"
 
 argon2 = { version = "0.5.3", default-features = false }
 async-trait = { version = "0.1.80", default-features = false }
@@ -23,7 +23,7 @@ image = { version = "0.25.1", default-features = false }
 isahc = { version = "1.7.2", default-features = false }
 nom-exif = { version = "1.2.0", default-features = false }
 once_cell = { version = "1.19.0", default-features = false }
-openssl = { version = "0.10.64", default-features = false }
+openssl = "0.10.64"
 pretty_assertions = { version = "1.4.0", default-features = false }
 proc-macro2 = { version = "1.0.84", default-features = false }
 quote = { version = "1.0.36", default-features = false }
@@ -39,7 +39,7 @@ strum = { version = "0.26.2", default-features = false }
 syn = { version = "2.0.66", default-features = false }
 sysinfo = { version = "0.30.12", default-features = false }
 thiserror = { version = "1.0.61", default-features = false }
-tokio = { version = "1.37.0", default-features = false }
+tokio = { version = "1.38.0", default-features = false }
 tokio-test = { version = "0.4.4", default-features = false }
 tracing = { version = "0.1.40", default-features = false }
 tracing-subscriber = { version = "0.3.18", default-features = false }
diff --git a/packages/backend-rs/index.d.ts b/packages/backend-rs/index.d.ts
index cc49d5784f..ed81285b13 100644
--- a/packages/backend-rs/index.d.ts
+++ b/packages/backend-rs/index.d.ts
@@ -385,11 +385,11 @@ export function isAllowedServer(host: string): Promise<boolean>
  *
  * # Arguments
  *
- * * `note` : [NoteLike] object
+ * * `note` : [PartialNoteToElaborate] object
  * * `muted_words` : list of muted keyword lists (each array item is a space-separated keyword list that represents an AND condition)
  * * `muted_patterns` : list of JavaScript-style (e.g., `/foo/i`) regular expressions
  */
-export function checkWordMute(note: NoteLike, mutedWords: Array<string>, mutedPatterns: Array<string>): Promise<boolean>
+export function checkWordMute(note: PartialNoteToElaborate, mutedWords: Array<string>, mutedPatterns: Array<string>): Promise<boolean>
 export function getFullApAccount(username: string, host?: string | undefined | null): string
 export function isSelfHost(host?: string | undefined | null): boolean
 export function isSameOrigin(uri: string): boolean
@@ -408,7 +408,7 @@ export interface ImageSize {
   height: number
 }
 export function getImageSizeFromUrl(url: string): Promise<ImageSize>
-export interface NoteLikeForAllTexts {
+export interface PartialNoteToElaborate {
   fileIds: Array<string>
   userId: string
   text: string | null
@@ -416,13 +416,13 @@ export interface NoteLikeForAllTexts {
   renoteId: string | null
   replyId: string | null
 }
-export interface NoteLikeForGetNoteSummary {
+export interface PartialNoteToSummarize {
   fileIds: Array<string>
   text: string | null
   cw: string | null
   hasPoll: boolean
 }
-export function getNoteSummary(note: NoteLikeForGetNoteSummary): string
+export function getNoteSummary(note: PartialNoteToSummarize): string
 export interface NoteLikeForIsQuote {
   renoteId: string | null
   text: string | null
diff --git a/packages/backend-rs/src/federation/nodeinfo/fetch.rs b/packages/backend-rs/src/federation/nodeinfo/fetch.rs
index 14ed838912..e762ba7138 100644
--- a/packages/backend-rs/src/federation/nodeinfo/fetch.rs
+++ b/packages/backend-rs/src/federation/nodeinfo/fetch.rs
@@ -3,7 +3,7 @@
 use crate::federation::nodeinfo::schema::*;
 use crate::util::http_client;
 use isahc::AsyncReadResponseExt;
-use serde::{Deserialize, Serialize};
+use serde::Deserialize;
 
 #[derive(thiserror::Error, Debug)]
 pub enum Error {
@@ -21,12 +21,12 @@ pub enum Error {
     MissingNodeinfo,
 }
 
-#[derive(Deserialize, Serialize, Debug)]
+#[derive(Deserialize, Debug)]
 pub struct NodeinfoLinks {
     links: Vec<NodeinfoLink>,
 }
 
-#[derive(Deserialize, Serialize, Debug)]
+#[derive(Deserialize, Debug)]
 pub struct NodeinfoLink {
     rel: String,
     href: String,
diff --git a/packages/backend-rs/src/misc/check_word_mute.rs b/packages/backend-rs/src/misc/check_word_mute.rs
index 4109cb9a36..154a9e8537 100644
--- a/packages/backend-rs/src/misc/check_word_mute.rs
+++ b/packages/backend-rs/src/misc/check_word_mute.rs
@@ -1,4 +1,4 @@
-use crate::misc::get_note_all_texts::{all_texts, NoteLike};
+use crate::misc::get_note_all_texts::{all_texts, PartialNoteToElaborate};
 use once_cell::sync::Lazy;
 use regex::Regex;
 use sea_orm::DbErr;
@@ -42,7 +42,7 @@ fn check_word_mute_impl(
 /// * `muted_patterns` : list of JavaScript-style (e.g., `/foo/i`) regular expressions
 #[crate::export]
 pub async fn check_word_mute(
-    note: NoteLike,
+    note: PartialNoteToElaborate,
     muted_words: &[String],
     muted_patterns: &[String],
 ) -> Result<bool, DbErr> {
diff --git a/packages/backend-rs/src/misc/get_note_all_texts.rs b/packages/backend-rs/src/misc/get_note_all_texts.rs
index 8199085a53..7dc161665c 100644
--- a/packages/backend-rs/src/misc/get_note_all_texts.rs
+++ b/packages/backend-rs/src/misc/get_note_all_texts.rs
@@ -2,9 +2,8 @@ use crate::database::db_conn;
 use crate::model::entity::{drive_file, note};
 use sea_orm::{prelude::*, QuerySelect};
 
-// TODO?: handle name collisions
-#[crate::export(object, js_name = "NoteLikeForAllTexts")]
-pub struct NoteLike {
+#[crate::export(object)]
+pub struct PartialNoteToElaborate {
     pub file_ids: Vec<String>,
     pub user_id: String,
     pub text: Option<String>,
@@ -16,11 +15,14 @@ pub struct NoteLike {
 /// Returns [`Vec<String>`] containing the post text, content warning,
 /// those of the "parent" (replied/quoted) posts, and alt texts of attached files.
 ///
-/// ## Arguments
+/// # Arguments
 ///
-/// * `note` : [NoteLike] object
+/// * `note` : [PartialNoteToElaborate] object
 /// * `include_parent` : whether to take the reply-to post and quoted post into account
-pub async fn all_texts(note: NoteLike, include_parent: bool) -> Result<Vec<String>, DbErr> {
+pub async fn all_texts(
+    note: PartialNoteToElaborate,
+    include_parent: bool,
+) -> Result<Vec<String>, DbErr> {
     let db = db_conn().await?;
 
     let mut texts: Vec<String> = vec![];
diff --git a/packages/backend-rs/src/misc/get_note_summary.rs b/packages/backend-rs/src/misc/get_note_summary.rs
index 64a0b52da2..ab2cc88713 100644
--- a/packages/backend-rs/src/misc/get_note_summary.rs
+++ b/packages/backend-rs/src/misc/get_note_summary.rs
@@ -1,10 +1,9 @@
-use serde::{Deserialize, Serialize};
+use serde::Deserialize;
 
-// TODO?: handle name collisions
-#[derive(Debug, Deserialize, Serialize)]
+#[derive(Debug, Deserialize)]
 #[serde(rename_all = "camelCase")]
-#[crate::export(object, js_name = "NoteLikeForGetNoteSummary")]
-pub struct NoteLike {
+#[crate::export(object)]
+pub struct PartialNoteToSummarize {
     pub file_ids: Vec<String>,
     pub text: Option<String>,
     pub cw: Option<String>,
@@ -12,7 +11,7 @@ pub struct NoteLike {
 }
 
 #[crate::export]
-pub fn get_note_summary(note: NoteLike) -> String {
+pub fn get_note_summary(note: PartialNoteToSummarize) -> String {
     let mut buf: Vec<String> = vec![];
 
     if let Some(cw) = note.cw {
@@ -36,12 +35,12 @@ pub fn get_note_summary(note: NoteLike) -> String {
 
 #[cfg(test)]
 mod unit_test {
-    use super::{get_note_summary, NoteLike};
+    use super::{get_note_summary, PartialNoteToSummarize};
     use pretty_assertions::assert_eq;
 
     #[test]
     fn test_note_summary() {
-        let note = NoteLike {
+        let note = PartialNoteToSummarize {
             file_ids: vec![],
             text: Some("Hello world!".to_string()),
             cw: None,
@@ -49,7 +48,7 @@ mod unit_test {
         };
         assert_eq!(get_note_summary(note), "Hello world!");
 
-        let note_with_cw = NoteLike {
+        let note_with_cw = PartialNoteToSummarize {
             file_ids: vec![],
             text: Some("Hello world!".to_string()),
             cw: Some("Content warning".to_string()),
@@ -57,7 +56,7 @@ mod unit_test {
         };
         assert_eq!(get_note_summary(note_with_cw), "Content warning");
 
-        let note_with_file_and_cw = NoteLike {
+        let note_with_file_and_cw = PartialNoteToSummarize {
             file_ids: vec!["9s7fmcqogiq4igin".to_string()],
             text: None,
             cw: Some("Selfie, no ec".to_string()),
@@ -65,7 +64,7 @@ mod unit_test {
         };
         assert_eq!(get_note_summary(note_with_file_and_cw), "Selfie, no ec 📎");
 
-        let note_with_files_only = NoteLike {
+        let note_with_files_only = PartialNoteToSummarize {
             file_ids: vec![
                 "9s7fmcqogiq4igin".to_string(),
                 "9s7qrld5u14cey98".to_string(),
@@ -78,7 +77,7 @@ mod unit_test {
         };
         assert_eq!(get_note_summary(note_with_files_only), "📎 (4)");
 
-        let note_all = NoteLike {
+        let note_all = PartialNoteToSummarize {
             file_ids: vec![
                 "9s7fmcqogiq4igin".to_string(),
                 "9s7qrld5u14cey98".to_string(),
diff --git a/packages/backend-rs/src/misc/latest_version.rs b/packages/backend-rs/src/misc/latest_version.rs
index 8c361aa5bf..7233814df6 100644
--- a/packages/backend-rs/src/misc/latest_version.rs
+++ b/packages/backend-rs/src/misc/latest_version.rs
@@ -3,7 +3,7 @@
 use crate::database::cache;
 use crate::util::http_client;
 use isahc::ReadResponseExt;
-use serde::{Deserialize, Serialize};
+use serde::Deserialize;
 
 #[derive(thiserror::Error, Debug)]
 pub enum Error {
@@ -25,7 +25,7 @@ const UPSTREAM_PACKAGE_JSON_URL: &str =
     "https://firefish.dev/firefish/firefish/-/raw/main/package.json";
 
 async fn get_latest_version() -> Result<String, Error> {
-    #[derive(Debug, Deserialize, Serialize)]
+    #[derive(Debug, Deserialize)]
     struct Response {
         version: String,
     }
diff --git a/packages/backend-rs/src/service/antenna/process_new_note.rs b/packages/backend-rs/src/service/antenna/process_new_note.rs
index ba9ba10d78..1ec44f6e6b 100644
--- a/packages/backend-rs/src/service/antenna/process_new_note.rs
+++ b/packages/backend-rs/src/service/antenna/process_new_note.rs
@@ -1,6 +1,6 @@
 use crate::database::{cache, db_conn, redis_conn, redis_key, RedisConnError};
 use crate::federation::acct::Acct;
-use crate::misc::get_note_all_texts::{all_texts, NoteLike};
+use crate::misc::get_note_all_texts::{all_texts, PartialNoteToElaborate};
 use crate::model::entity::{antenna, note};
 use crate::service::antenna::check_hit::{check_hit_antenna, AntennaCheckError};
 use crate::service::stream;
@@ -53,7 +53,7 @@ pub async fn update_antennas_on_new_note(
 ) -> Result<(), Error> {
     let note_cloned = note.clone();
     let note_all_texts = all_texts(
-        NoteLike {
+        PartialNoteToElaborate {
             file_ids: note.file_ids,
             user_id: note.user_id,
             text: note.text,
diff --git a/packages/backend-rs/src/service/push_notification.rs b/packages/backend-rs/src/service/push_notification.rs
index a60259f073..a6c2d3e4b1 100644
--- a/packages/backend-rs/src/service/push_notification.rs
+++ b/packages/backend-rs/src/service/push_notification.rs
@@ -1,5 +1,5 @@
 use crate::database::db_conn;
-use crate::misc::get_note_summary::{get_note_summary, NoteLike};
+use crate::misc::get_note_summary::{get_note_summary, PartialNoteToSummarize};
 use crate::misc::meta::fetch_meta;
 use crate::model::entity::{access_token, app, sw_subscription};
 use crate::util::http_client;
@@ -88,7 +88,7 @@ fn compact_content(
         ));
     }
 
-    let note_like: NoteLike = serde_json::from_value(note.clone())?;
+    let note_like: PartialNoteToSummarize = serde_json::from_value(note.clone())?;
     let text = get_note_summary(note_like);
 
     let note_object = note.as_object_mut().unwrap();
diff --git a/packages/backend-rs/src/service/stream/custom_emoji.rs b/packages/backend-rs/src/service/stream/custom_emoji.rs
index 2cd67f5169..29b655b6e6 100644
--- a/packages/backend-rs/src/service/stream/custom_emoji.rs
+++ b/packages/backend-rs/src/service/stream/custom_emoji.rs
@@ -1,8 +1,8 @@
 use crate::service::stream::{publish_to_stream, Error, Stream};
-use serde::{Deserialize, Serialize};
+use serde::Serialize;
 
 // TODO: define schema type in other place
-#[derive(Deserialize, Serialize)]
+#[derive(Serialize)]
 #[serde(rename_all = "camelCase")]
 #[crate::export(object)]
 pub struct PackedEmoji {
diff --git a/packages/backend-rs/src/service/stream/moderation.rs b/packages/backend-rs/src/service/stream/moderation.rs
index ef604ed6bf..e9e17d2399 100644
--- a/packages/backend-rs/src/service/stream/moderation.rs
+++ b/packages/backend-rs/src/service/stream/moderation.rs
@@ -1,7 +1,7 @@
 use crate::service::stream::{publish_to_stream, Error, Stream};
-use serde::{Deserialize, Serialize};
+use serde::Serialize;
 
-#[derive(Deserialize, Serialize)]
+#[derive(Serialize)]
 #[serde(rename_all = "camelCase")]
 #[crate::export(object)]
 pub struct AbuseUserReportLike {
diff --git a/packages/backend/package.json b/packages/backend/package.json
index 83712912f4..a6ebcbfb79 100644
--- a/packages/backend/package.json
+++ b/packages/backend/package.json
@@ -38,7 +38,7 @@
 		"archiver": "7.0.1",
 		"async-lock": "1.4.0",
 		"async-mutex": "0.5.0",
-		"aws-sdk": "2.1630.0",
+		"aws-sdk": "2.1631.0",
 		"axios": "1.7.2",
 		"backend-rs": "workspace:*",
 		"blurhash": "2.0.5",
@@ -124,14 +124,14 @@
 	},
 	"devDependencies": {
 		"@swc/cli": "0.3.12",
-		"@swc/core": "1.5.22",
+		"@swc/core": "1.5.24",
 		"@types/adm-zip": "0.5.5",
 		"@types/async-lock": "1.4.0",
 		"@types/color-convert": "2.0.3",
 		"@types/content-disposition": "0.5.8",
 		"@types/escape-regexp": "0.0.3",
 		"@types/fluent-ffmpeg": "2.1.24",
-		"@types/jsdom": "21.1.6",
+		"@types/jsdom": "21.1.7",
 		"@types/jsonld": "1.5.13",
 		"@types/jsrsasign": "10.5.14",
 		"@types/katex": "0.16.7",
diff --git a/packages/client/package.json b/packages/client/package.json
index 55f049afd6..54c8311fdb 100644
--- a/packages/client/package.json
+++ b/packages/client/package.json
@@ -72,7 +72,7 @@
 		"qrcode-vue3": "1.6.8",
 		"rollup": "4.17.2",
 		"s-age": "1.1.2",
-		"sass": "1.77.3",
+		"sass": "1.77.4",
 		"seedrandom": "3.0.5",
 		"stringz": "2.1.0",
 		"swiper": "11.1.4",
diff --git a/packages/firefish-js/package.json b/packages/firefish-js/package.json
index 0abef2b9f9..97a031d7da 100644
--- a/packages/firefish-js/package.json
+++ b/packages/firefish-js/package.json
@@ -22,7 +22,7 @@
 	},
 	"devDependencies": {
 		"@swc/cli": "0.3.12",
-		"@swc/core": "1.5.22",
+		"@swc/core": "1.5.24",
 		"@swc/types": "0.1.7",
 		"@types/jest": "29.5.12",
 		"@types/node": "20.12.13",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index f2697719d7..c3dc63c378 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -91,8 +91,8 @@ importers:
         specifier: 0.5.0
         version: 0.5.0
       aws-sdk:
-        specifier: 2.1630.0
-        version: 2.1630.0
+        specifier: 2.1631.0
+        version: 2.1631.0
       axios:
         specifier: 1.7.2
         version: 1.7.2
@@ -323,7 +323,7 @@ importers:
         version: 0.2.3
       typeorm:
         specifier: 0.3.20
-        version: 0.3.20(ioredis@5.4.1)(pg@8.11.5)(ts-node@10.9.2(@swc/core@1.5.22)(@swc/wasm@1.2.130)(@types/node@20.12.13)(typescript@5.4.5))
+        version: 0.3.20(ioredis@5.4.1)(pg@8.11.5)(ts-node@10.9.2(@swc/core@1.5.24)(@swc/wasm@1.2.130)(@types/node@20.12.13)(typescript@5.4.5))
       ulid:
         specifier: 2.3.0
         version: 2.3.0
@@ -346,10 +346,10 @@ importers:
     devDependencies:
       '@swc/cli':
         specifier: 0.3.12
-        version: 0.3.12(@swc/core@1.5.22)(chokidar@3.6.0)
+        version: 0.3.12(@swc/core@1.5.24)(chokidar@3.6.0)
       '@swc/core':
-        specifier: 1.5.22
-        version: 1.5.22
+        specifier: 1.5.24
+        version: 1.5.24
       '@types/adm-zip':
         specifier: 0.5.5
         version: 0.5.5
@@ -369,8 +369,8 @@ importers:
         specifier: 2.1.24
         version: 2.1.24
       '@types/jsdom':
-        specifier: 21.1.6
-        version: 21.1.6
+        specifier: 21.1.7
+        version: 21.1.7
       '@types/jsonld':
         specifier: 1.5.13
         version: 1.5.13
@@ -499,13 +499,13 @@ importers:
         version: 2.0.0
       swc-loader:
         specifier: 0.2.6
-        version: 0.2.6(@swc/core@1.5.22)(webpack@5.91.0(@swc/core@1.5.22))
+        version: 0.2.6(@swc/core@1.5.24)(webpack@5.91.0(@swc/core@1.5.24))
       ts-loader:
         specifier: 9.5.1
-        version: 9.5.1(typescript@5.4.5)(webpack@5.91.0(@swc/core@1.5.22))
+        version: 9.5.1(typescript@5.4.5)(webpack@5.91.0(@swc/core@1.5.24))
       ts-node:
         specifier: 10.9.2
-        version: 10.9.2(@swc/core@1.5.22)(@swc/wasm@1.2.130)(@types/node@20.12.13)(typescript@5.4.5)
+        version: 10.9.2(@swc/core@1.5.24)(@swc/wasm@1.2.130)(@types/node@20.12.13)(typescript@5.4.5)
       tsconfig-paths:
         specifier: 4.2.0
         version: 4.2.0
@@ -517,7 +517,7 @@ importers:
         version: 5.4.5
       webpack:
         specifier: 5.91.0
-        version: 5.91.0(@swc/core@1.5.22)
+        version: 5.91.0(@swc/core@1.5.24)
       ws:
         specifier: 8.17.0
         version: 8.17.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)
@@ -595,7 +595,7 @@ importers:
         version: 9.0.8
       '@vitejs/plugin-vue':
         specifier: 5.0.4
-        version: 5.0.4(vite@5.2.12(@types/node@20.12.13)(sass@1.77.3)(stylus@0.57.0)(terser@5.31.0))(vue@3.4.27(typescript@5.4.5))
+        version: 5.0.4(vite@5.2.12(@types/node@20.12.13)(sass@1.77.4)(stylus@0.57.0)(terser@5.31.0))(vue@3.4.27(typescript@5.4.5))
       '@vue/runtime-core':
         specifier: 3.4.27
         version: 3.4.27
@@ -711,8 +711,8 @@ importers:
         specifier: 1.1.2
         version: 1.1.2
       sass:
-        specifier: 1.77.3
-        version: 1.77.3
+        specifier: 1.77.4
+        version: 1.77.4
       seedrandom:
         specifier: 3.0.5
         version: 3.0.5
@@ -748,10 +748,10 @@ importers:
         version: 9.0.1
       vite:
         specifier: 5.2.12
-        version: 5.2.12(@types/node@20.12.13)(sass@1.77.3)(stylus@0.57.0)(terser@5.31.0)
+        version: 5.2.12(@types/node@20.12.13)(sass@1.77.4)(stylus@0.57.0)(terser@5.31.0)
       vite-plugin-compression:
         specifier: 0.5.1
-        version: 0.5.1(vite@5.2.12(@types/node@20.12.13)(sass@1.77.3)(stylus@0.57.0)(terser@5.31.0))
+        version: 0.5.1(vite@5.2.12(@types/node@20.12.13)(sass@1.77.4)(stylus@0.57.0)(terser@5.31.0))
       vue:
         specifier: 3.4.27
         version: 3.4.27(typescript@5.4.5)
@@ -783,10 +783,10 @@ importers:
     devDependencies:
       '@swc/cli':
         specifier: 0.3.12
-        version: 0.3.12(@swc/core@1.5.22)(chokidar@3.6.0)
+        version: 0.3.12(@swc/core@1.5.24)(chokidar@3.6.0)
       '@swc/core':
-        specifier: 1.5.22
-        version: 1.5.22
+        specifier: 1.5.24
+        version: 1.5.24
       '@swc/types':
         specifier: 0.1.7
         version: 0.1.7
@@ -798,7 +798,7 @@ importers:
         version: 20.12.13
       jest:
         specifier: 29.7.0
-        version: 29.7.0(@types/node@20.12.13)(ts-node@10.9.2(@swc/core@1.5.22)(@swc/wasm@1.2.130)(@types/node@20.12.13)(typescript@5.4.5))
+        version: 29.7.0(@types/node@20.12.13)(ts-node@10.9.2(@swc/core@1.5.24)(@swc/wasm@1.2.130)(@types/node@20.12.13)(typescript@5.4.5))
       jest-fetch-mock:
         specifier: 3.0.3
         version: 3.0.3
@@ -810,10 +810,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.12.13)(ts-node@10.9.2(@swc/core@1.5.22)(@swc/wasm@1.2.130)(@types/node@20.12.13)(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.12.13)(ts-node@10.9.2(@swc/core@1.5.24)(@swc/wasm@1.2.130)(@types/node@20.12.13)(typescript@5.4.5)))(typescript@5.4.5)
       ts-node:
         specifier: 10.9.2
-        version: 10.9.2(@swc/core@1.5.22)(@swc/wasm@1.2.130)(@types/node@20.12.13)(typescript@5.4.5)
+        version: 10.9.2(@swc/core@1.5.24)(@swc/wasm@1.2.130)(@types/node@20.12.13)(typescript@5.4.5)
       tsd:
         specifier: 0.31.0
         version: 0.31.0
@@ -831,10 +831,10 @@ importers:
         version: 6.2.1
       vite:
         specifier: 5.2.12
-        version: 5.2.12(@types/node@20.12.13)(sass@1.77.3)(stylus@0.57.0)(terser@5.31.0)
+        version: 5.2.12(@types/node@20.12.13)(sass@1.77.4)(stylus@0.57.0)(terser@5.31.0)
       vite-plugin-compression:
         specifier: 0.5.1
-        version: 0.5.1(vite@5.2.12(@types/node@20.12.13)(sass@1.77.3)(stylus@0.57.0)(terser@5.31.0))
+        version: 0.5.1(vite@5.2.12(@types/node@20.12.13)(sass@1.77.4)(stylus@0.57.0)(terser@5.31.0))
 
 packages:
 
@@ -2046,68 +2046,68 @@ packages:
     cpu: [arm64]
     os: [android]
 
-  '@swc/core-darwin-arm64@1.5.22':
-    resolution: {integrity: sha512-aqiflbmzv8joY/fNpCBe7/YJupoWQHz5dX1YfU3D8Kii5VNZeqsQEXDUEEAFZUwnSce1aoGguX/O/DIxC+1Rlg==}
+  '@swc/core-darwin-arm64@1.5.24':
+    resolution: {integrity: sha512-M7oLOcC0sw+UTyAuL/9uyB9GeO4ZpaBbH76JSH6g1m0/yg7LYJZGRmplhDmwVSDAR5Fq4Sjoi1CksmmGkgihGA==}
     engines: {node: '>=10'}
     cpu: [arm64]
     os: [darwin]
 
-  '@swc/core-darwin-x64@1.5.22':
-    resolution: {integrity: sha512-U0yddnMZxuZEd2P4RJIcbgu7b9/w0jo0e6I4iL4+MFN1J3IBxPi666xsBDdnsTDGKYHwv+sgFrwcK2gJIL/n6Q==}
+  '@swc/core-darwin-x64@1.5.24':
+    resolution: {integrity: sha512-MfcFjGGYognpSBSos2pYUNYJSmqEhuw5ceGr6qAdME7ddbjGXliza4W6FggsM+JnWwpqa31+e7/R+GetW4WkaQ==}
     engines: {node: '>=10'}
     cpu: [x64]
     os: [darwin]
 
-  '@swc/core-linux-arm-gnueabihf@1.5.22':
-    resolution: {integrity: sha512-gXyPgla7w4QgvTx10XXNAECU+bdJtY8/6jz0IbU6NMiHtCC8NO6my1io5wuDUeUE5KefACpIWmKsKV2ts/uNNA==}
+  '@swc/core-linux-arm-gnueabihf@1.5.24':
+    resolution: {integrity: sha512-amI2pwtcWV3E/m/nf+AQtn1LWDzKLZyjCmWd3ms7QjEueWYrY8cU1Y4Wp7wNNsxIoPOi8zek1Uj2wwFD/pttNQ==}
     engines: {node: '>=10'}
     cpu: [arm]
     os: [linux]
 
-  '@swc/core-linux-arm64-gnu@1.5.22':
-    resolution: {integrity: sha512-5UaMgE2onZETZ23xOl2fuql4MtU6HMbAISGTkIKu2U44J/4sINRi7VYiEWdc8ZN/xPcCKpvbqmpZZejf4T4Rtw==}
+  '@swc/core-linux-arm64-gnu@1.5.24':
+    resolution: {integrity: sha512-sTSvmqMmgT1ynH/nP75Pc51s+iT4crZagHBiDOf5cq+kudUYjda9lWMs7xkXB/TUKFHPCRK0HGunl8bkwiIbuw==}
     engines: {node: '>=10'}
     cpu: [arm64]
     os: [linux]
 
-  '@swc/core-linux-arm64-musl@1.5.22':
-    resolution: {integrity: sha512-t/Rj/afBx5+7cfCtBGmx9V55ckqHh031jglfgJtaAOPRXygz30tavPCVdaOXyJPxjZ2QszYPK43CTOsA4QI+pg==}
+  '@swc/core-linux-arm64-musl@1.5.24':
+    resolution: {integrity: sha512-vd2/hfOBGbrX21FxsFdXCUaffjkHvlZkeE2UMRajdXifwv79jqOHIJg3jXG1F3ZrhCghCzirFts4tAZgcG8XWg==}
     engines: {node: '>=10'}
     cpu: [arm64]
     os: [linux]
 
-  '@swc/core-linux-x64-gnu@1.5.22':
-    resolution: {integrity: sha512-OYn6FZd02iiJOIet6SzvVHsIzpB06biKNJvPPSYbQHZBb2BQbqw6zGwhkrHh8+tFfzL0W0RVOHzp1dJwAgAvlQ==}
+  '@swc/core-linux-x64-gnu@1.5.24':
+    resolution: {integrity: sha512-Zrdzi7NqzQxm2BvAG5KyOSBEggQ7ayrxh599AqqevJmsUXJ8o2nMiWQOBvgCGp7ye+Biz3pvZn1EnRzAp+TpUg==}
     engines: {node: '>=10'}
     cpu: [x64]
     os: [linux]
 
-  '@swc/core-linux-x64-musl@1.5.22':
-    resolution: {integrity: sha512-DOmY/kTAITzObfXZif7+NzhEb6xrwQriVhogAFjM2//M6QQX3XYU6EazKyBU97FG6jAnU8Xo0CsQ11NVO+P+dA==}
+  '@swc/core-linux-x64-musl@1.5.24':
+    resolution: {integrity: sha512-1F8z9NRi52jdZQCGc5sflwYSctL6omxiVmIFVp8TC9nngjQKc00TtX/JC2Eo2HwvgupkFVl5YQJidAck9YtmJw==}
     engines: {node: '>=10'}
     cpu: [x64]
     os: [linux]
 
-  '@swc/core-win32-arm64-msvc@1.5.22':
-    resolution: {integrity: sha512-m+z0a0Kxc27CgMheBfch71vSHAaVu3WOtuTevinRy+kWYIXRAEtCIQK1F7U7Lj06VuTONAtol6ZQb/aywvJiDg==}
+  '@swc/core-win32-arm64-msvc@1.5.24':
+    resolution: {integrity: sha512-cKpP7KvS6Xr0jFSTBXY53HZX/YfomK5EMQYpCVDOvfsZeYHN20sQSKXfpVLvA/q2igVt1zzy1XJcOhpJcgiKLg==}
     engines: {node: '>=10'}
     cpu: [arm64]
     os: [win32]
 
-  '@swc/core-win32-ia32-msvc@1.5.22':
-    resolution: {integrity: sha512-96ipznXxSv8jzd22po3++UK4TjKwNb38f2RQjTTYyzry4omuI0fmzBLNVBdEOtw/jSQqouwLHvnezywhXwIk/A==}
+  '@swc/core-win32-ia32-msvc@1.5.24':
+    resolution: {integrity: sha512-IoPWfi0iwqjZuf7gE223+B97/ZwkKbu7qL5KzGP7g3hJrGSKAvv7eC5Y9r2iKKtLKyv5R/T6Ho0kFR/usi7rHw==}
     engines: {node: '>=10'}
     cpu: [ia32]
     os: [win32]
 
-  '@swc/core-win32-x64-msvc@1.5.22':
-    resolution: {integrity: sha512-53pNt9zuD5x8HGjeF4LeVxpZGqkviqfF+idnEJ9alT0aEKaSkxf7iL+RnPsq4lXMIkREE9cCoG0uDoXGwl14dA==}
+  '@swc/core-win32-x64-msvc@1.5.24':
+    resolution: {integrity: sha512-zHgF2k1uVJL8KIW+PnVz1To4a3Cz9THbh2z2lbehaF/gKHugH4c3djBozU4das1v35KOqf5jWIEviBLql2wDLQ==}
     engines: {node: '>=10'}
     cpu: [x64]
     os: [win32]
 
-  '@swc/core@1.5.22':
-    resolution: {integrity: sha512-YxvaMFS0Uq9gHVjJh0aKBB868lcBExWVWoZWSCqcoE95S1to9LZiN5WOOlwxSjajN26YqwSU+Ndsg+bgy9VZeg==}
+  '@swc/core@1.5.24':
+    resolution: {integrity: sha512-Eph9zvO4xvqWZGVzTdtdEJ0Vqf0VIML/o/e4Qd2RLOqtfgnlRi7avmMu5C0oqciJ0tk+hqdUKVUZ4JPoPaiGvQ==}
     engines: {node: '>=10'}
     peerDependencies:
       '@swc/helpers': '*'
@@ -2265,8 +2265,8 @@ packages:
   '@types/jest@29.5.12':
     resolution: {integrity: sha512-eDC8bTvT/QhYdxJAulQikueigY5AsdBRH2yDKW3yveW7svY3+DzN84/2NUgkw10RTiJbWqZrTtoGVdYlvFJdLw==}
 
-  '@types/jsdom@21.1.6':
-    resolution: {integrity: sha512-/7kkMsC+/kMs7gAYmmBR9P0vGTnOoLhQhyhQJSlXGI5bzTHp6xdo0TtKWQAsz6pmSAeVqKSbqeyP6hytqr9FDw==}
+  '@types/jsdom@21.1.7':
+    resolution: {integrity: sha512-yOriVnggzrnQ3a9OKOCxaVuSug3w3/SbOj5i7VwXWZEyUNl3bLF9V3MfxGbZKuwqJOQyRfqXyROBB1CoZLFWzA==}
 
   '@types/json-schema@7.0.15':
     resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==}
@@ -2885,8 +2885,8 @@ packages:
     resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==}
     engines: {node: '>= 0.4'}
 
-  aws-sdk@2.1630.0:
-    resolution: {integrity: sha512-Lu1+jzBExiAoD88A1XnY+nztUPCE1TRU/hZHgcyDsc8TYyQ0JjsJoVo+BsnshBNt4j+OvdNg3ytk4+lRJTB04w==}
+  aws-sdk@2.1631.0:
+    resolution: {integrity: sha512-QG1A1bsgy9jKyY20LVxEeB16zEbn3dPIZmVeh/7vk6ukb2+5Vjh0s+E5bVlNHFFXVu6rsviayqGmjr16fJ5I1g==}
     engines: {node: '>= 10.0.0'}
 
   axios@0.24.0:
@@ -6661,8 +6661,8 @@ packages:
   sanitize-html@2.13.0:
     resolution: {integrity: sha512-Xff91Z+4Mz5QiNSLdLWwjgBDm5b1RU6xBT0+12rapjiaR7SwfRdjw8f+6Rir2MXKLrDicRFHdb51hGOAxmsUIA==}
 
-  sass@1.77.3:
-    resolution: {integrity: sha512-WJHo+jmFp0dwRuymPmIovuxHaBntcCyja5hCB0yYY9wWrViEp4kF5Cdai98P72v6FzroPuABqu+ddLMbQWmwzA==}
+  sass@1.77.4:
+    resolution: {integrity: sha512-vcF3Ckow6g939GMA4PeU7b2K/9FALXk2KF9J87txdHzXbUF9XRQRwSxcAs/fGaTnJeBFd7UoV22j3lzMLdM0Pw==}
     engines: {node: '>=14.0.0'}
     hasBin: true
 
@@ -8600,7 +8600,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.22)(@swc/wasm@1.2.130)(@types/node@20.12.13)(typescript@5.4.5))':
+  '@jest/core@29.7.0(ts-node@10.9.2(@swc/core@1.5.24)(@swc/wasm@1.2.130)(@types/node@20.12.13)(typescript@5.4.5))':
     dependencies:
       '@jest/console': 29.7.0
       '@jest/reporters': 29.7.0
@@ -8614,7 +8614,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.12.13)(ts-node@10.9.2(@swc/core@1.5.22)(@swc/wasm@1.2.130)(@types/node@20.12.13)(typescript@5.4.5))
+      jest-config: 29.7.0(@types/node@20.12.13)(ts-node@10.9.2(@swc/core@1.5.24)(@swc/wasm@1.2.130)(@types/node@20.12.13)(typescript@5.4.5))
       jest-haste-map: 29.7.0
       jest-message-util: 29.7.0
       jest-regex-util: 29.6.3
@@ -9061,10 +9061,10 @@ snapshots:
 
   '@sqltools/formatter@1.2.5': {}
 
-  '@swc/cli@0.3.12(@swc/core@1.5.22)(chokidar@3.6.0)':
+  '@swc/cli@0.3.12(@swc/core@1.5.24)(chokidar@3.6.0)':
     dependencies:
       '@mole-inc/bin-wrapper': 8.0.1
-      '@swc/core': 1.5.22
+      '@swc/core': 1.5.24
       '@swc/counter': 0.1.3
       commander: 8.3.0
       fast-glob: 3.3.2
@@ -9081,51 +9081,51 @@ snapshots:
       '@swc/wasm': 1.2.130
     optional: true
 
-  '@swc/core-darwin-arm64@1.5.22':
+  '@swc/core-darwin-arm64@1.5.24':
     optional: true
 
-  '@swc/core-darwin-x64@1.5.22':
+  '@swc/core-darwin-x64@1.5.24':
     optional: true
 
-  '@swc/core-linux-arm-gnueabihf@1.5.22':
+  '@swc/core-linux-arm-gnueabihf@1.5.24':
     optional: true
 
-  '@swc/core-linux-arm64-gnu@1.5.22':
+  '@swc/core-linux-arm64-gnu@1.5.24':
     optional: true
 
-  '@swc/core-linux-arm64-musl@1.5.22':
+  '@swc/core-linux-arm64-musl@1.5.24':
     optional: true
 
-  '@swc/core-linux-x64-gnu@1.5.22':
+  '@swc/core-linux-x64-gnu@1.5.24':
     optional: true
 
-  '@swc/core-linux-x64-musl@1.5.22':
+  '@swc/core-linux-x64-musl@1.5.24':
     optional: true
 
-  '@swc/core-win32-arm64-msvc@1.5.22':
+  '@swc/core-win32-arm64-msvc@1.5.24':
     optional: true
 
-  '@swc/core-win32-ia32-msvc@1.5.22':
+  '@swc/core-win32-ia32-msvc@1.5.24':
     optional: true
 
-  '@swc/core-win32-x64-msvc@1.5.22':
+  '@swc/core-win32-x64-msvc@1.5.24':
     optional: true
 
-  '@swc/core@1.5.22':
+  '@swc/core@1.5.24':
     dependencies:
       '@swc/counter': 0.1.3
       '@swc/types': 0.1.7
     optionalDependencies:
-      '@swc/core-darwin-arm64': 1.5.22
-      '@swc/core-darwin-x64': 1.5.22
-      '@swc/core-linux-arm-gnueabihf': 1.5.22
-      '@swc/core-linux-arm64-gnu': 1.5.22
-      '@swc/core-linux-arm64-musl': 1.5.22
-      '@swc/core-linux-x64-gnu': 1.5.22
-      '@swc/core-linux-x64-musl': 1.5.22
-      '@swc/core-win32-arm64-msvc': 1.5.22
-      '@swc/core-win32-ia32-msvc': 1.5.22
-      '@swc/core-win32-x64-msvc': 1.5.22
+      '@swc/core-darwin-arm64': 1.5.24
+      '@swc/core-darwin-x64': 1.5.24
+      '@swc/core-linux-arm-gnueabihf': 1.5.24
+      '@swc/core-linux-arm64-gnu': 1.5.24
+      '@swc/core-linux-arm64-musl': 1.5.24
+      '@swc/core-linux-x64-gnu': 1.5.24
+      '@swc/core-linux-x64-musl': 1.5.24
+      '@swc/core-win32-arm64-msvc': 1.5.24
+      '@swc/core-win32-ia32-msvc': 1.5.24
+      '@swc/core-win32-x64-msvc': 1.5.24
 
   '@swc/counter@0.1.3': {}
 
@@ -9308,7 +9308,7 @@ snapshots:
       expect: 29.7.0
       pretty-format: 29.7.0
 
-  '@types/jsdom@21.1.6':
+  '@types/jsdom@21.1.7':
     dependencies:
       '@types/node': 20.12.13
       '@types/tough-cookie': 4.0.5
@@ -9682,9 +9682,9 @@ snapshots:
       '@typescript-eslint/types': 6.21.0
       eslint-visitor-keys: 3.4.3
 
-  '@vitejs/plugin-vue@5.0.4(vite@5.2.12(@types/node@20.12.13)(sass@1.77.3)(stylus@0.57.0)(terser@5.31.0))(vue@3.4.27(typescript@5.4.5))':
+  '@vitejs/plugin-vue@5.0.4(vite@5.2.12(@types/node@20.12.13)(sass@1.77.4)(stylus@0.57.0)(terser@5.31.0))(vue@3.4.27(typescript@5.4.5))':
     dependencies:
-      vite: 5.2.12(@types/node@20.12.13)(sass@1.77.3)(stylus@0.57.0)(terser@5.31.0)
+      vite: 5.2.12(@types/node@20.12.13)(sass@1.77.4)(stylus@0.57.0)(terser@5.31.0)
       vue: 3.4.27(typescript@5.4.5)
 
   '@volar/language-core@2.2.5':
@@ -10053,7 +10053,7 @@ snapshots:
     dependencies:
       possible-typed-array-names: 1.0.0
 
-  aws-sdk@2.1630.0:
+  aws-sdk@2.1631.0:
     dependencies:
       buffer: 4.9.2
       events: 1.1.1
@@ -10245,7 +10245,7 @@ snapshots:
   buffer@4.9.2:
     dependencies:
       base64-js: 1.5.1
-      ieee754: 1.1.13
+      ieee754: 1.2.1
       isarray: 1.0.0
 
   buffer@5.7.1:
@@ -10636,13 +10636,13 @@ snapshots:
       crc-32: 1.2.2
       readable-stream: 4.5.2
 
-  create-jest@29.7.0(@types/node@20.12.13)(ts-node@10.9.2(@swc/core@1.5.22)(@swc/wasm@1.2.130)(@types/node@20.12.13)(typescript@5.4.5)):
+  create-jest@29.7.0(@types/node@20.12.13)(ts-node@10.9.2(@swc/core@1.5.24)(@swc/wasm@1.2.130)(@types/node@20.12.13)(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.12.13)(ts-node@10.9.2(@swc/core@1.5.22)(@swc/wasm@1.2.130)(@types/node@20.12.13)(typescript@5.4.5))
+      jest-config: 29.7.0(@types/node@20.12.13)(ts-node@10.9.2(@swc/core@1.5.24)(@swc/wasm@1.2.130)(@types/node@20.12.13)(typescript@5.4.5))
       jest-util: 29.7.0
       prompts: 2.4.2
     transitivePeerDependencies:
@@ -12475,16 +12475,16 @@ snapshots:
       - babel-plugin-macros
       - supports-color
 
-  jest-cli@29.7.0(@types/node@20.12.13)(ts-node@10.9.2(@swc/core@1.5.22)(@swc/wasm@1.2.130)(@types/node@20.12.13)(typescript@5.4.5)):
+  jest-cli@29.7.0(@types/node@20.12.13)(ts-node@10.9.2(@swc/core@1.5.24)(@swc/wasm@1.2.130)(@types/node@20.12.13)(typescript@5.4.5)):
     dependencies:
-      '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.5.22)(@swc/wasm@1.2.130)(@types/node@20.12.13)(typescript@5.4.5))
+      '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.5.24)(@swc/wasm@1.2.130)(@types/node@20.12.13)(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.12.13)(ts-node@10.9.2(@swc/core@1.5.22)(@swc/wasm@1.2.130)(@types/node@20.12.13)(typescript@5.4.5))
+      create-jest: 29.7.0(@types/node@20.12.13)(ts-node@10.9.2(@swc/core@1.5.24)(@swc/wasm@1.2.130)(@types/node@20.12.13)(typescript@5.4.5))
       exit: 0.1.2
       import-local: 3.1.0
-      jest-config: 29.7.0(@types/node@20.12.13)(ts-node@10.9.2(@swc/core@1.5.22)(@swc/wasm@1.2.130)(@types/node@20.12.13)(typescript@5.4.5))
+      jest-config: 29.7.0(@types/node@20.12.13)(ts-node@10.9.2(@swc/core@1.5.24)(@swc/wasm@1.2.130)(@types/node@20.12.13)(typescript@5.4.5))
       jest-util: 29.7.0
       jest-validate: 29.7.0
       yargs: 17.7.2
@@ -12494,7 +12494,7 @@ snapshots:
       - supports-color
       - ts-node
 
-  jest-config@29.7.0(@types/node@20.12.13)(ts-node@10.9.2(@swc/core@1.5.22)(@swc/wasm@1.2.130)(@types/node@20.12.13)(typescript@5.4.5)):
+  jest-config@29.7.0(@types/node@20.12.13)(ts-node@10.9.2(@swc/core@1.5.24)(@swc/wasm@1.2.130)(@types/node@20.12.13)(typescript@5.4.5)):
     dependencies:
       '@babel/core': 7.24.6
       '@jest/test-sequencer': 29.7.0
@@ -12520,7 +12520,7 @@ snapshots:
       strip-json-comments: 3.1.1
     optionalDependencies:
       '@types/node': 20.12.13
-      ts-node: 10.9.2(@swc/core@1.5.22)(@swc/wasm@1.2.130)(@types/node@20.12.13)(typescript@5.4.5)
+      ts-node: 10.9.2(@swc/core@1.5.24)(@swc/wasm@1.2.130)(@types/node@20.12.13)(typescript@5.4.5)
     transitivePeerDependencies:
       - babel-plugin-macros
       - supports-color
@@ -12758,12 +12758,12 @@ snapshots:
       merge-stream: 2.0.0
       supports-color: 8.1.1
 
-  jest@29.7.0(@types/node@20.12.13)(ts-node@10.9.2(@swc/core@1.5.22)(@swc/wasm@1.2.130)(@types/node@20.12.13)(typescript@5.4.5)):
+  jest@29.7.0(@types/node@20.12.13)(ts-node@10.9.2(@swc/core@1.5.24)(@swc/wasm@1.2.130)(@types/node@20.12.13)(typescript@5.4.5)):
     dependencies:
-      '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.5.22)(@swc/wasm@1.2.130)(@types/node@20.12.13)(typescript@5.4.5))
+      '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.5.24)(@swc/wasm@1.2.130)(@types/node@20.12.13)(typescript@5.4.5))
       '@jest/types': 29.6.3
       import-local: 3.1.0
-      jest-cli: 29.7.0(@types/node@20.12.13)(ts-node@10.9.2(@swc/core@1.5.22)(@swc/wasm@1.2.130)(@types/node@20.12.13)(typescript@5.4.5))
+      jest-cli: 29.7.0(@types/node@20.12.13)(ts-node@10.9.2(@swc/core@1.5.24)(@swc/wasm@1.2.130)(@types/node@20.12.13)(typescript@5.4.5))
     transitivePeerDependencies:
       - '@types/node'
       - babel-plugin-macros
@@ -14357,7 +14357,7 @@ snapshots:
       parse-srcset: 1.0.2
       postcss: 8.4.38
 
-  sass@1.77.3:
+  sass@1.77.4:
     dependencies:
       chokidar: 3.6.0
       immutable: 4.3.6
@@ -14721,11 +14721,11 @@ snapshots:
 
   supports-preserve-symlinks-flag@1.0.0: {}
 
-  swc-loader@0.2.6(@swc/core@1.5.22)(webpack@5.91.0(@swc/core@1.5.22)):
+  swc-loader@0.2.6(@swc/core@1.5.24)(webpack@5.91.0(@swc/core@1.5.24)):
     dependencies:
-      '@swc/core': 1.5.22
+      '@swc/core': 1.5.24
       '@swc/counter': 0.1.3
-      webpack: 5.91.0(@swc/core@1.5.22)
+      webpack: 5.91.0(@swc/core@1.5.24)
 
   swiper@11.1.4: {}
 
@@ -14766,16 +14766,16 @@ snapshots:
       fast-fifo: 1.3.2
       streamx: 2.16.1
 
-  terser-webpack-plugin@5.3.10(@swc/core@1.5.22)(webpack@5.91.0(@swc/core@1.5.22)):
+  terser-webpack-plugin@5.3.10(@swc/core@1.5.24)(webpack@5.91.0(@swc/core@1.5.24)):
     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.22)
+      webpack: 5.91.0(@swc/core@1.5.24)
     optionalDependencies:
-      '@swc/core': 1.5.22
+      '@swc/core': 1.5.24
 
   terser@5.31.0:
     dependencies:
@@ -14878,11 +14878,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.12.13)(ts-node@10.9.2(@swc/core@1.5.22)(@swc/wasm@1.2.130)(@types/node@20.12.13)(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.12.13)(ts-node@10.9.2(@swc/core@1.5.24)(@swc/wasm@1.2.130)(@types/node@20.12.13)(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.12.13)(ts-node@10.9.2(@swc/core@1.5.22)(@swc/wasm@1.2.130)(@types/node@20.12.13)(typescript@5.4.5))
+      jest: 29.7.0(@types/node@20.12.13)(ts-node@10.9.2(@swc/core@1.5.24)(@swc/wasm@1.2.130)(@types/node@20.12.13)(typescript@5.4.5))
       jest-util: 29.7.0
       json5: 2.2.3
       lodash.memoize: 4.1.2
@@ -14896,7 +14896,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.22)):
+  ts-loader@9.5.1(typescript@5.4.5)(webpack@5.91.0(@swc/core@1.5.24)):
     dependencies:
       chalk: 4.1.2
       enhanced-resolve: 5.16.1
@@ -14904,9 +14904,9 @@ snapshots:
       semver: 7.6.2
       source-map: 0.7.4
       typescript: 5.4.5
-      webpack: 5.91.0(@swc/core@1.5.22)
+      webpack: 5.91.0(@swc/core@1.5.24)
 
-  ts-node@10.9.2(@swc/core@1.5.22)(@swc/wasm@1.2.130)(@types/node@20.12.13)(typescript@5.4.5):
+  ts-node@10.9.2(@swc/core@1.5.24)(@swc/wasm@1.2.130)(@types/node@20.12.13)(typescript@5.4.5):
     dependencies:
       '@cspotcode/source-map-support': 0.8.1
       '@tsconfig/node10': 1.0.11
@@ -14924,7 +14924,7 @@ snapshots:
       v8-compile-cache-lib: 3.0.1
       yn: 3.1.1
     optionalDependencies:
-      '@swc/core': 1.5.22
+      '@swc/core': 1.5.24
       '@swc/wasm': 1.2.130
 
   tsconfig-paths@3.15.0:
@@ -15026,7 +15026,7 @@ snapshots:
 
   typedarray@0.0.6: {}
 
-  typeorm@0.3.20(ioredis@5.4.1)(pg@8.11.5)(ts-node@10.9.2(@swc/core@1.5.22)(@swc/wasm@1.2.130)(@types/node@20.12.13)(typescript@5.4.5)):
+  typeorm@0.3.20(ioredis@5.4.1)(pg@8.11.5)(ts-node@10.9.2(@swc/core@1.5.24)(@swc/wasm@1.2.130)(@types/node@20.12.13)(typescript@5.4.5)):
     dependencies:
       '@sqltools/formatter': 1.2.5
       app-root-path: 3.1.0
@@ -15046,7 +15046,7 @@ snapshots:
     optionalDependencies:
       ioredis: 5.4.1
       pg: 8.11.5
-      ts-node: 10.9.2(@swc/core@1.5.22)(@swc/wasm@1.2.130)(@types/node@20.12.13)(typescript@5.4.5)
+      ts-node: 10.9.2(@swc/core@1.5.24)(@swc/wasm@1.2.130)(@types/node@20.12.13)(typescript@5.4.5)
     transitivePeerDependencies:
       - supports-color
 
@@ -15164,16 +15164,16 @@ snapshots:
       core-util-is: 1.0.2
       extsprintf: 1.3.0
 
-  vite-plugin-compression@0.5.1(vite@5.2.12(@types/node@20.12.13)(sass@1.77.3)(stylus@0.57.0)(terser@5.31.0)):
+  vite-plugin-compression@0.5.1(vite@5.2.12(@types/node@20.12.13)(sass@1.77.4)(stylus@0.57.0)(terser@5.31.0)):
     dependencies:
       chalk: 4.1.2
       debug: 4.3.4(supports-color@8.1.1)
       fs-extra: 10.1.0
-      vite: 5.2.12(@types/node@20.12.13)(sass@1.77.3)(stylus@0.57.0)(terser@5.31.0)
+      vite: 5.2.12(@types/node@20.12.13)(sass@1.77.4)(stylus@0.57.0)(terser@5.31.0)
     transitivePeerDependencies:
       - supports-color
 
-  vite@5.2.12(@types/node@20.12.13)(sass@1.77.3)(stylus@0.57.0)(terser@5.31.0):
+  vite@5.2.12(@types/node@20.12.13)(sass@1.77.4)(stylus@0.57.0)(terser@5.31.0):
     dependencies:
       esbuild: 0.20.2
       postcss: 8.4.38
@@ -15181,7 +15181,7 @@ snapshots:
     optionalDependencies:
       '@types/node': 20.12.13
       fsevents: 2.3.3
-      sass: 1.77.3
+      sass: 1.77.4
       stylus: 0.57.0
       terser: 5.31.0
 
@@ -15267,7 +15267,7 @@ snapshots:
 
   webpack-sources@3.2.3: {}
 
-  webpack@5.91.0(@swc/core@1.5.22):
+  webpack@5.91.0(@swc/core@1.5.24):
     dependencies:
       '@types/eslint-scope': 3.7.7
       '@types/estree': 1.0.5
@@ -15290,7 +15290,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.22)(webpack@5.91.0(@swc/core@1.5.22))
+      terser-webpack-plugin: 5.3.10(@swc/core@1.5.24)(webpack@5.91.0(@swc/core@1.5.24))
       watchpack: 2.4.1
       webpack-sources: 3.2.3
     transitivePeerDependencies:
@@ -15409,7 +15409,7 @@ snapshots:
 
   xml2js@0.6.2:
     dependencies:
-      sax: 1.2.1
+      sax: 1.4.1
       xmlbuilder: 11.0.1
 
   xmlbuilder@11.0.1: {}