Merge branch 'develop' into feat/note-edit-history

This commit is contained in:
naskya 2024-03-28 14:27:29 +09:00
commit 293afc7fe4
No known key found for this signature in database
GPG key ID: 712D413B3A9FED5C
115 changed files with 1069 additions and 951 deletions

View file

@ -2,6 +2,8 @@
## Checklist ## Checklist
- [ ] There are no pending changes on Weblate
I have updated... I have updated...
- [ ] `package.json` - [ ] `package.json`

View file

@ -19,7 +19,7 @@ The full-text search engine used in Firefish has been changed to [PGroonga](http
[Edit (2024/03/23 23:55 UTC+9)] ~~**Warning**: You may fail to install PGroonga, since the package registry of Apache Arrow (one of the subdependencies of PGroonga) is currently down ([GitHub issue](https://github.com/apache/arrow/issues/40759)). We recommend that you hold off on upgrading until this problem is resolved.~~ [Edit (2024/03/23 23:55 UTC+9)] ~~**Warning**: You may fail to install PGroonga, since the package registry of Apache Arrow (one of the subdependencies of PGroonga) is currently down ([GitHub issue](https://github.com/apache/arrow/issues/40759)). We recommend that you hold off on upgrading until this problem is resolved.~~
[Edit (2025/03/25 22:31 UTC+9)] The Apache Arrow repository is now back up and running again. [Edit (2024/03/25 22:31 UTC+9)] The Apache Arrow repository is now back up and running again.
#### 1. Install PGroonga #### 1. Install PGroonga
@ -131,8 +131,8 @@ db:
After that, execute this command to enable PGroonga: After that, execute this command to enable PGroonga:
```sh ```sh
docker-compose up db --detach && docker-compose exec db sh -c 'psql --user="${POSTGRES_USER}" --dbname="${POSTGRES_DB}" --command="CREATE EXTENSION pgroonga;"' docker-compose up db --detach && sleep 5 && docker-compose exec db sh -c 'psql --user="${POSTGRES_USER}" --dbname="${POSTGRES_DB}" --command="CREATE EXTENSION pgroonga;"'
# or podman-compose up db --detach && podman-compose exec db sh -c 'psql --user="${POSTGRES_USER}" --dbname="${POSTGRES_DB}" --command="CREATE EXTENSION pgroonga;"' # or podman-compose up db --detach && sleep 5 && podman-compose exec db sh -c 'psql --user="${POSTGRES_USER}" --dbname="${POSTGRES_DB}" --command="CREATE EXTENSION pgroonga;"'
``` ```
Once this is done, you can start Firefish as usual. Once this is done, you can start Firefish as usual.

View file

@ -9,14 +9,14 @@ notifications: "Notificacions"
username: "Nom d'usuari" username: "Nom d'usuari"
password: "Contrasenya" password: "Contrasenya"
forgotPassword: "Contrasenya oblidada" forgotPassword: "Contrasenya oblidada"
fetchingAsApObject: "Cercant en el Fediverse" fetchingAsApObject: "Obtenint des de el Fediverse"
ok: "D'acord" ok: "D'acord"
gotIt: "Ho he entès!" gotIt: "Ho he entès!"
cancel: "Cancel·la" cancel: "Cancel·la"
enterUsername: "Introdueix el teu nom d'usuari" enterUsername: "Introdueix el teu nom d'usuari"
renotedBy: "Impulsat per {user}" renotedBy: "Impulsat per {user}"
noNotes: "Cap publicació" noNotes: "Sense publicacions"
noNotifications: "Cap notificació" noNotifications: "Sense notificacions"
instance: "Servidor" instance: "Servidor"
settings: "Preferències" settings: "Preferències"
basicSettings: "Configuració bàsica" basicSettings: "Configuració bàsica"
@ -35,23 +35,23 @@ users: "Usuaris"
addUser: "Afegeix un usuari" addUser: "Afegeix un usuari"
favorite: "Afegeix a les adreces d'interès" favorite: "Afegeix a les adreces d'interès"
favorites: "Adreces d'interès" favorites: "Adreces d'interès"
unfavorite: "Eliminar de les adreces d'interès" unfavorite: "Suprimeix de les adreces d'interès"
favorited: "Afegit a les adreces d'interès." favorited: "S'ha afegit a les adreces d'interès."
alreadyFavorited: "Ja es troba a les adreces d'interès." alreadyFavorited: "Ja s'ha afegit a les adreces d'interès."
cantFavorite: "No s'ha pogut afegir a les adreces d'interès." cantFavorite: "No s'ha pogut afegir a les adreces d'interès."
pin: "Fixar al perfil" pin: "Fixa al perfil"
unpin: "Deixa de fixar al perfil" unpin: "No fixis al perfil"
copyContent: "Copia el contingut" copyContent: "Copia el contingut"
copyLink: "Copia l'enllaç" copyLink: "Copia l'enllaç"
delete: "Elimina" delete: "Suprimeix"
deleteAndEdit: "Elimina i edita" deleteAndEdit: "Suprimeix i edita"
deleteAndEditConfirm: "Segur que vols eliminar la publicació i editar-la? Perdràs deleteAndEditConfirm: "Segur que vols suprimir aquesta publicació i editar-la? Perdràs
totes les reaccions, impulsos i respostes." totes les reaccions, impulsos i respostes."
addToList: "Afegeix a la llista" addToList: "Afegeix a la llista"
sendMessage: "Envia un missatge" sendMessage: "Envia un missatge"
copyUsername: "Copia el nom d'usuari" copyUsername: "Copia el nom d'usuari"
searchUser: "Cerca un usuari" searchUser: "Cerca un usuari"
reply: "Respon" reply: "Resposta"
loadMore: "Carrega'n més" loadMore: "Carrega'n més"
showMore: "Mostra'n més" showMore: "Mostra'n més"
youGotNewFollower: "t'ha seguit" youGotNewFollower: "t'ha seguit"
@ -66,20 +66,20 @@ export: "Exporta"
files: "Fitxers" files: "Fitxers"
download: "Baixa" download: "Baixa"
driveFileDeleteConfirm: "Segur que vols eliminar el fitxer «{name}»? S'eliminarà de driveFileDeleteConfirm: "Segur que vols eliminar el fitxer «{name}»? S'eliminarà de
totes les notes que el continguin com a fitxer adjunt." totes les publicacions que el continguin com a fitxer adjunt."
unfollowConfirm: "Segur que vols deixar de seguir a {name}?" unfollowConfirm: "Segur que vols deixar de seguir a {name}?"
exportRequested: "Has demanat exportar dades. Això pot trigar una estona. S'afegirà exportRequested: "Has sol·licitat una exportació. Això pot trigar una estona. S'afegirà
al teu Disc un cop completada." al teu Disc un cop finalitzada."
importRequested: "Has demanat importar dades. Això pot trigar una estona." importRequested: "Has sol·licitat una importació de dades. Això pot trigar una estona."
lists: "Llistes" lists: "Llistes"
noLists: "No tens cap llista" noLists: "No tens cap llista"
note: "Publica" note: "Publicació"
notes: "Publicacions" notes: "Publicacions"
following: "Seguint" following: "Seguint"
followers: "Seguidors" followers: "Seguidors"
followsYou: "Et segueix" followsYou: "Et segueix"
createList: "Crear una llista" createList: "Crea una llista"
manageLists: "Gestionar les llistes" manageLists: "Gestiona les llistes"
error: "Error" error: "Error"
somethingHappened: "S'ha produït un error" somethingHappened: "S'ha produït un error"
retry: "Torna-ho a intentar" retry: "Torna-ho a intentar"
@ -91,7 +91,7 @@ serverIsDead: "Aquest servidor no respon. Espera una estona i torna-ho a provar.
youShouldUpgradeClient: "Per veure aquesta pàgina, actualitzeu-la per actualitzar youShouldUpgradeClient: "Per veure aquesta pàgina, actualitzeu-la per actualitzar
el vostre client." el vostre client."
enterListName: "Introdueix un nom per a la llista" enterListName: "Introdueix un nom per a la llista"
privacy: "Privadesa" privacy: "Privacitat"
makeFollowManuallyApprove: "Les sol·licituds de seguiment requereixen aprovació" makeFollowManuallyApprove: "Les sol·licituds de seguiment requereixen aprovació"
defaultNoteVisibility: "Visibilitat per defecte" defaultNoteVisibility: "Visibilitat per defecte"
follow: "Segueix" follow: "Segueix"
@ -2066,7 +2066,7 @@ _relayStatus:
rejected: Rebutjat rejected: Rebutjat
deleted: Eliminat deleted: Eliminat
editNote: Edita la publicació editNote: Edita la publicació
edited: 'Editat el {date} {time}' edited: 'Editat a les {time} {date}'
signupsDisabled: Actualment, les inscripcions en aquest servidor estan desactivades. signupsDisabled: Actualment, les inscripcions en aquest servidor estan desactivades.
Si teniu un codi d'invitació per a aquest servidor, introduïu-lo a continuació. Si teniu un codi d'invitació per a aquest servidor, introduïu-lo a continuació.
userSaysSomethingReasonQuote: '{name} ha citat una publicació que conté {reason}' userSaysSomethingReasonQuote: '{name} ha citat una publicació que conté {reason}'
@ -2096,7 +2096,7 @@ newer: Més nou
older: Més antic older: Més antic
silencedWarning: S'està mostrant aquesta pàgina per què aquest usuari és d'un servidor silencedWarning: S'està mostrant aquesta pàgina per què aquest usuari és d'un servidor
que l'administrador a silenciat, així que pot ser spam. que l'administrador a silenciat, així que pot ser spam.
jumpToPrevious: Vés a l'anterior jumpToPrevious: Salta a l'anterior
cw: Avís de contingut cw: Avís de contingut
antennasDesc: "Les antenes mostren publicacions noves que coincideixen amb els criteris antennasDesc: "Les antenes mostren publicacions noves que coincideixen amb els criteris
establerts!\nS'hi pot accedir des de la pàgina de línies de temps." establerts!\nS'hi pot accedir des de la pàgina de línies de temps."
@ -2104,7 +2104,7 @@ expandOnNoteClick: Obre la publicació amb un clic
expandOnNoteClickDesc: Si està desactivat, encara pots obrir les publicacions al menú expandOnNoteClickDesc: Si està desactivat, encara pots obrir les publicacions al menú
del botó dret o fent clic a la marca de temps. del botó dret o fent clic a la marca de temps.
channelFederationWarn: Els canals encara no es federen amb altres servidors channelFederationWarn: Els canals encara no es federen amb altres servidors
searchPlaceholder: Cerca a Firefish searchPlaceholder: Cercar a Firefish
listsDesc: Les llistes et permeten crear línies de temps amb usuaris específics. Es listsDesc: Les llistes et permeten crear línies de temps amb usuaris específics. Es
pot accedir des de la pàgina de línies de temps. pot accedir des de la pàgina de línies de temps.
clipsDesc: Els clips són com marcadors categoritzats que es poden compartir. Podeu clipsDesc: Els clips són com marcadors categoritzats que es poden compartir. Podeu
@ -2264,8 +2264,8 @@ publishTimelinesDescription: Si està activat, les línies de temps Global i Loc
noAltTextWarning: Alguns fitxers adjunts no tenen una descripció. T'has s oblidat noAltTextWarning: Alguns fitxers adjunts no tenen una descripció. T'has s oblidat
d'escriure-les? d'escriure-les?
showNoAltTextWarning: Mostra un avís si públiques un fitxer sense descripció showNoAltTextWarning: Mostra un avís si públiques un fitxer sense descripció
toReply: Respon toReply: Resposta
toQuote: Cita toQuote: Citar
toEdit: Edita toEdit: Edita
searchUsersDescription: "Per buscar publicacions concretes d'un usuari/servidor, escriu searchUsersDescription: "Per buscar publicacions concretes d'un usuari/servidor, escriu
la ID (@usuari@exemple.com, o @usuari per un usuari local) o nom del domini (exemple.com).\n la ID (@usuari@exemple.com, o @usuari per un usuari local) o nom del domini (exemple.com).\n
@ -2285,3 +2285,12 @@ searchRangeDescription: "Si vols filtrar per un període de temps, has de fer se
moderationNote: Nota de moderació moderationNote: Nota de moderació
ipFirstAcknowledged: Data en què es va veure la adreça IP per primera vegada ipFirstAcknowledged: Data en què es va veure la adreça IP per primera vegada
driveCapacityOverride: Capacitat del disc esgotada driveCapacityOverride: Capacitat del disc esgotada
incorrectLanguageWarning: "Semblar ser que la teva publicació es troba en {detected},
però has seleccionat {current}.\nVols canviar l'idioma a {detected}?"
markLocalFilesNsfwByDefault: Marcar tots els fitxers locals nous com a sensibles per
defecte
markLocalFilesNsfwByDefaultDescription: Independentment d'aquest ajust, els usuaris
poden treure l'etiqueta NSFW els mateixos. Els fitxers que ja existeixen no es veuen
afectats.
autocorrectNoteLanguage: Mostra un avís si l'idioma de la publicació no coincideix
amb el resultat de l'idioma detectat automàticament

View file

@ -1196,16 +1196,16 @@ releaseToReload: "Release to reload"
reloading: "Reloading" reloading: "Reloading"
enableTimelineStreaming: "Update timelines automatically" enableTimelineStreaming: "Update timelines automatically"
searchWords: "Words to search / ID or URL to lookup" searchWords: "Words to search / ID or URL to lookup"
searchWordsDescription: "Enter the search term here to search for posts. Separate words searchWordsDescription: "Enter the search term here to search for posts. Separate
with a space for an AND search, or 'OR' (without quotes) between words for an OR words with a space for an AND search, or 'OR' (without quotes) between words for
search.\nFor example, 'morning night' will find posts that contain both 'morning' an OR search.\nFor example, 'morning night' will find posts that contain both 'morning'
and 'night', and 'morning OR night' will find posts that contain either 'morning' and 'night', and 'morning OR night' will find posts that contain either 'morning'
or 'night' (or both).\nYou can also combine AND/OR conditions like '(morning OR or 'night' (or both).\nYou can also combine AND/OR conditions like '(morning OR
night) sleepy'.\nIf you want to search for a sequence of words (e.g., a sentence), you night) sleepy'.\nIf you want to search for a sequence of words (e.g., a sentence),
must put it in double quotes, not to make it an AND search: \"Today I learned\"\n\n you must put it in double quotes, not to make it an AND search: \"Today I learned\"\
If you want to go to a specific user page or post page, enter \n\n If you want to go to a specific user page or post page, enter the ID or URL
the ID or URL in this field and click the 'Lookup' button. Clicking 'Search' will in this field and click the 'Lookup' button. Clicking 'Search' will search for posts
search for posts that literally contain the ID/URL." that literally contain the ID/URL."
searchUsers: "Posted by (optional)" searchUsers: "Posted by (optional)"
searchUsersDescription: "To search for posts by a specific user/server, enter the searchUsersDescription: "To search for posts by a specific user/server, enter the
ID (@user@example.com, or @user for a local user) or domain name (example.com).\n ID (@user@example.com, or @user for a local user) or domain name (example.com).\n
@ -2230,6 +2230,8 @@ moreUrlsDescription: "Enter the pages you want to pin to the help menu in the lo
left corner using this notation:\n\"Display name\": https://example.com/" left corner using this notation:\n\"Display name\": https://example.com/"
messagingUnencryptedInfo: "Chats on Firefish are not end-to-end encrypted. Don't share messagingUnencryptedInfo: "Chats on Firefish are not end-to-end encrypted. Don't share
any sensitive infomation over Firefish." any sensitive infomation over Firefish."
autocorrectNoteLanguage: "Show a warning if the post language does not match the auto-detected result" autocorrectNoteLanguage: "Show a warning if the post language does not match the auto-detected
incorrectLanguageWarning: "It looks like your post is in {detected}, but you selected {current}.\nWould you like to set the language to {detected} instead?" result"
incorrectLanguageWarning: "It looks like your post is in {detected}, but you selected
{current}.\nWould you like to set the language to {detected} instead?"
noteEditHistory: "Post edit history" noteEditHistory: "Post edit history"

View file

@ -2315,3 +2315,12 @@ noAltTextWarning: Certains fichiers joints n'ont aucune description. Avez-vous o
de l'écrire? de l'écrire?
showNoAltTextWarning: Afficher un avertissement si vous essayez de publier des fichiers showNoAltTextWarning: Afficher un avertissement si vous essayez de publier des fichiers
sans description sans description
autocorrectNoteLanguage: Afficher un avertissement si la langue de publication ne
correspond pas au résultat autodétecté
incorrectLanguageWarning: "Il semble que votre publication est en {detected}, mais
vous avez sélectionné {current}.\nVoulez-vous sélectionner {detected} à la place?"
markLocalFilesNsfwByDefault: Marquer tous les nouveaux fichiers locaux comme sensibles
par défaut
markLocalFilesNsfwByDefaultDescription: Indépendamment de ce réglage, les utilisateurs
peuvent supprimer le drapeau « sensible » (NSFW) eux-mêmes. Les fichiers existants
ne sont pas affectés.

View file

@ -2269,3 +2269,6 @@ incorrectLanguageWarning: "Sepertinya kirimanmu dalam bahasa {detected}, tetapi
memilih {current}.\nApakah kamu ingin ubah bahasanya ke bahasa {detected} saja?" memilih {current}.\nApakah kamu ingin ubah bahasanya ke bahasa {detected} saja?"
autocorrectNoteLanguage: Tampilkan peringatan jika bahasa kiriman tidak cocok dengan autocorrectNoteLanguage: Tampilkan peringatan jika bahasa kiriman tidak cocok dengan
hasil yang dideteksi secara otomatis hasil yang dideteksi secara otomatis
markLocalFilesNsfwByDefault: Tandai semua berkas lokal baru sensitif secara bawaan
markLocalFilesNsfwByDefaultDescription: Terlepas dari pengaturan ini, pengguna dapat
menghapus sendiri tanda NSFW. Berkas yang ada tidak berpengaruh.

View file

@ -2058,3 +2058,5 @@ ipFirstAcknowledged: IPアドレスが最初に取得された日
driveCapacityOverride: ドライブ容量の変更 driveCapacityOverride: ドライブ容量の変更
autocorrectNoteLanguage: 設定した投稿言語が自動検出されたものと異なる場合に警告する autocorrectNoteLanguage: 設定した投稿言語が自動検出されたものと異なる場合に警告する
incorrectLanguageWarning: "この投稿は{detected}で書かれていると判定されました。\n投稿言語を{current}ではなく{detected}にしますか?" incorrectLanguageWarning: "この投稿は{detected}で書かれていると判定されました。\n投稿言語を{current}ではなく{detected}にしますか?"
markLocalFilesNsfwByDefault: このサーバーの全てのファイルをデフォルトでNSFWに設定する
markLocalFilesNsfwByDefaultDescription: この設定が有効でも、ユーザーは自分でNSFWのフラグを外すことができます。また、この設定は既存のファイルには影響しません。

View file

@ -39,11 +39,11 @@
"gulp-terser": "2.1.0" "gulp-terser": "2.1.0"
}, },
"devDependencies": { "devDependencies": {
"@biomejs/biome": "1.6.2", "@biomejs/biome": "1.6.3",
"@biomejs/cli-darwin-arm64": "^1.6.2", "@biomejs/cli-darwin-arm64": "^1.6.3",
"@biomejs/cli-darwin-x64": "^1.6.2", "@biomejs/cli-darwin-x64": "^1.6.3",
"@biomejs/cli-linux-arm64": "^1.6.2", "@biomejs/cli-linux-arm64": "^1.6.3",
"@biomejs/cli-linux-x64": "^1.6.2", "@biomejs/cli-linux-x64": "^1.6.3",
"@types/node": "20.11.30", "@types/node": "20.11.30",
"execa": "8.0.1", "execa": "8.0.1",
"pnpm": "8.15.5", "pnpm": "8.15.5",

View file

@ -6,5 +6,5 @@ This directory contains all of the packages Firefish uses.
- `backend-rs`: Backend code written in Rust, bound to NodeJS by [NAPI-RS](https://napi.rs/) - `backend-rs`: Backend code written in Rust, bound to NodeJS by [NAPI-RS](https://napi.rs/)
- `client`: Web interface written in Vue3 and TypeScript - `client`: Web interface written in Vue3 and TypeScript
- `sw`: Web [Service Worker](https://developer.mozilla.org/en-US/docs/Web/API/Service_Worker_API) written in TypeScript - `sw`: Web [Service Worker](https://developer.mozilla.org/en-US/docs/Web/API/Service_Worker_API) written in TypeScript
- `firefish-js`: TypeScript SDK for both backend and client, also published on [NPM](https://www.npmjs.com/package/firefish-js) for public use - `firefish-js`: TypeScript SDK for both backend and client
- `megalodon`: TypeScript library used for partial Mastodon API compatibility - `megalodon`: TypeScript library used for partial Mastodon API compatibility

View file

@ -157,18 +157,18 @@ checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.53", "syn 2.0.55",
] ]
[[package]] [[package]]
name = "async-trait" name = "async-trait"
version = "0.1.78" version = "0.1.79"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "461abc97219de0eaaf81fe3ef974a540158f3d079c2ab200f891f1a2ef201e85" checksum = "a507401cad91ec6a857ed5513a2073c82a9b9048762b885bb98655b306964681"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.53", "syn 2.0.55",
] ]
[[package]] [[package]]
@ -182,9 +182,9 @@ dependencies = [
[[package]] [[package]]
name = "autocfg" name = "autocfg"
version = "1.1.0" version = "1.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80"
[[package]] [[package]]
name = "backend-rs" name = "backend-rs"
@ -326,7 +326,7 @@ dependencies = [
"proc-macro-crate", "proc-macro-crate",
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.53", "syn 2.0.55",
"syn_derive", "syn_derive",
] ]
@ -411,9 +411,9 @@ dependencies = [
[[package]] [[package]]
name = "clap" name = "clap"
version = "4.5.3" version = "4.5.4"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "949626d00e063efc93b6dca932419ceb5432f99769911c0b995f7e884c778813" checksum = "90bc066a67923782aa8515dbaea16946c5bcc5addbd668bb80af688e53e548a0"
dependencies = [ dependencies = [
"clap_builder", "clap_builder",
"clap_derive", "clap_derive",
@ -433,14 +433,14 @@ dependencies = [
[[package]] [[package]]
name = "clap_derive" name = "clap_derive"
version = "4.5.3" version = "4.5.4"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "90239a040c80f5e14809ca132ddc4176ab33d5e17e49691793296e3fcb34d72f" checksum = "528131438037fd55894f62d6e9f068b8f45ac57ffa77517819645d10aed04f64"
dependencies = [ dependencies = [
"heck 0.5.0", "heck 0.5.0",
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.53", "syn 2.0.55",
] ]
[[package]] [[package]]
@ -542,7 +542,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ad291aa74992b9b7a7e88c38acbbf6ad7e107f1d90ee8775b7bc1fc3394f485c" checksum = "ad291aa74992b9b7a7e88c38acbbf6ad7e107f1d90ee8775b7bc1fc3394f485c"
dependencies = [ dependencies = [
"quote", "quote",
"syn 2.0.53", "syn 2.0.55",
] ]
[[package]] [[package]]
@ -688,9 +688,9 @@ dependencies = [
[[package]] [[package]]
name = "fastrand" name = "fastrand"
version = "2.0.1" version = "2.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5" checksum = "658bd65b1cf4c852a3cc96f18a8ce7b5640f6b703f905c7d74532294c2a63984"
[[package]] [[package]]
name = "finl_unicode" name = "finl_unicode"
@ -1066,7 +1066,7 @@ checksum = "0122b7114117e64a63ac49f752a5ca4624d534c7b1c7de796ac196381cd2d947"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.53", "syn 2.0.55",
] ]
[[package]] [[package]]
@ -1095,9 +1095,9 @@ dependencies = [
[[package]] [[package]]
name = "itoa" name = "itoa"
version = "1.0.10" version = "1.0.11"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c" checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b"
[[package]] [[package]]
name = "js-sys" name = "js-sys"
@ -1261,9 +1261,9 @@ dependencies = [
[[package]] [[package]]
name = "napi" name = "napi"
version = "2.16.0" version = "2.16.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "54a63d0570e4c3e0daf7a8d380563610e159f538e20448d6c911337246f40e84" checksum = "c4ca998356d8ff9fba7a070dae4508a2298439c98c9f3bc9c07669538b999e8f"
dependencies = [ dependencies = [
"bitflags 2.5.0", "bitflags 2.5.0",
"ctor", "ctor",
@ -1281,23 +1281,23 @@ checksum = "2f9130fccc5f763cf2069b34a089a18f0d0883c66aceb81f2fad541a3d823c43"
[[package]] [[package]]
name = "napi-derive" name = "napi-derive"
version = "2.16.0" version = "2.16.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "05bb7c37e3c1dda9312fdbe4a9fc7507fca72288ba154ec093e2d49114e727ce" checksum = "b138cecf1141ae0ff5d62f4aa0e2f269aec339f66070f346ba6fb4279f1fc178"
dependencies = [ dependencies = [
"cfg-if", "cfg-if",
"convert_case", "convert_case",
"napi-derive-backend", "napi-derive-backend",
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.53", "syn 2.0.55",
] ]
[[package]] [[package]]
name = "napi-derive-backend" name = "napi-derive-backend"
version = "1.0.62" version = "1.0.63"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f785a8b8d7b83e925f5aa6d2ae3c159d17fe137ac368dc185bef410e7acdaeb4" checksum = "ce5126b64f6ad9e28e30e6d15213dd378626b38f556454afebc42f7f02a90902"
dependencies = [ dependencies = [
"convert_case", "convert_case",
"once_cell", "once_cell",
@ -1305,7 +1305,7 @@ dependencies = [
"quote", "quote",
"regex", "regex",
"semver", "semver",
"syn 2.0.53", "syn 2.0.55",
] ]
[[package]] [[package]]
@ -1487,7 +1487,7 @@ dependencies = [
"proc-macro-error", "proc-macro-error",
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.53", "syn 2.0.55",
] ]
[[package]] [[package]]
@ -1536,7 +1536,7 @@ dependencies = [
"regex", "regex",
"regex-syntax 0.7.5", "regex-syntax 0.7.5",
"structmeta", "structmeta",
"syn 2.0.53", "syn 2.0.55",
] ]
[[package]] [[package]]
@ -2003,7 +2003,7 @@ dependencies = [
"proc-macro-error", "proc-macro-error",
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.53", "syn 2.0.55",
] ]
[[package]] [[package]]
@ -2044,7 +2044,7 @@ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"sea-bae", "sea-bae",
"syn 2.0.53", "syn 2.0.55",
"unicode-ident", "unicode-ident",
] ]
@ -2110,7 +2110,7 @@ checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.53", "syn 2.0.55",
] ]
[[package]] [[package]]
@ -2126,9 +2126,9 @@ dependencies = [
[[package]] [[package]]
name = "serde_json" name = "serde_json"
version = "1.0.114" version = "1.0.115"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c5f09b1bd632ef549eaa9f60a1f8de742bdbc698e6cee2095fc84dde5f549ae0" checksum = "12dc5c46daa8e9fdf4f5e71b6cf9a53f2487da0e86e55808e2d35539666497dd"
dependencies = [ dependencies = [
"itoa", "itoa",
"ryu", "ryu",
@ -2513,7 +2513,7 @@ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"structmeta-derive", "structmeta-derive",
"syn 2.0.53", "syn 2.0.55",
] ]
[[package]] [[package]]
@ -2524,7 +2524,7 @@ checksum = "a60bcaff7397072dca0017d1db428e30d5002e00b6847703e2e42005c95fbe00"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.53", "syn 2.0.55",
] ]
[[package]] [[package]]
@ -2552,9 +2552,9 @@ dependencies = [
[[package]] [[package]]
name = "syn" name = "syn"
version = "2.0.53" version = "2.0.55"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7383cd0e49fff4b6b90ca5670bfd3e9d6a733b3f90c686605aa7eec8c4996032" checksum = "002a1b3dbf967edfafc32655d0f377ab0bb7b994aa1d32c8cc7e9b8bf3ebb8f0"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
@ -2570,7 +2570,7 @@ dependencies = [
"proc-macro-error", "proc-macro-error",
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.53", "syn 2.0.55",
] ]
[[package]] [[package]]
@ -2635,7 +2635,7 @@ checksum = "c61f3ba182994efc43764a46c018c347bc492c79f024e705f46567b418f6d4f7"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.53", "syn 2.0.55",
] ]
[[package]] [[package]]
@ -2711,7 +2711,7 @@ checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.53", "syn 2.0.55",
] ]
[[package]] [[package]]
@ -2782,7 +2782,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.53", "syn 2.0.55",
] ]
[[package]] [[package]]
@ -2931,7 +2931,7 @@ dependencies = [
"once_cell", "once_cell",
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.53", "syn 2.0.55",
"wasm-bindgen-shared", "wasm-bindgen-shared",
] ]
@ -2965,7 +2965,7 @@ checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.53", "syn 2.0.55",
"wasm-bindgen-backend", "wasm-bindgen-backend",
"wasm-bindgen-shared", "wasm-bindgen-shared",
] ]
@ -3194,7 +3194,7 @@ checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.53", "syn 2.0.55",
] ]
[[package]] [[package]]

View file

@ -12,7 +12,7 @@ napi = ["dep:napi", "dep:napi-derive"]
crate-type = ["cdylib", "lib"] crate-type = ["cdylib", "lib"]
[dependencies] [dependencies]
async-trait = "0.1.78" async-trait = "0.1.79"
cfg-if = "1.0.0" cfg-if = "1.0.0"
chrono = "0.4.35" chrono = "0.4.35"
cuid2 = "0.1.2" cuid2 = "0.1.2"
@ -23,13 +23,13 @@ rand = "0.8.5"
schemars = { version = "0.8.16", features = ["chrono"] } schemars = { version = "0.8.16", features = ["chrono"] }
sea-orm = { version = "0.12.15", features = ["sqlx-postgres", "runtime-tokio-rustls"] } sea-orm = { version = "0.12.15", features = ["sqlx-postgres", "runtime-tokio-rustls"] }
serde = { version = "1.0.197", features = ["derive"] } serde = { version = "1.0.197", features = ["derive"] }
serde_json = "1.0.114" serde_json = "1.0.115"
thiserror = "1.0.58" thiserror = "1.0.58"
tokio = { version = "1.36.0", features = ["full"] } tokio = { version = "1.36.0", features = ["full"] }
# Default enable napi4 feature, see https://nodejs.org/api/n-api.html#node-api-version-matrix # Default enable napi4 feature, see https://nodejs.org/api/n-api.html#node-api-version-matrix
napi = { version = "2.16.0", default-features = false, features = ["napi9", "tokio_rt"], optional = true } napi = { version = "2.16.1", default-features = false, features = ["napi9", "tokio_rt"], optional = true }
napi-derive = { version = "2.16.0", optional = true } napi-derive = { version = "2.16.1", optional = true }
basen = "0.1.0" basen = "0.1.0"
[dev-dependencies] [dev-dependencies]

View file

@ -33,10 +33,10 @@
}, },
"scripts": { "scripts": {
"artifacts": "napi artifacts", "artifacts": "napi artifacts",
"build": "napi build --features napi --platform --release --cargo-flags=--locked ./built/", "build": "napi build --features napi --platform --release ./built/",
"build:debug": "napi build --features napi --platform --cargo-flags=--locked ./built/", "build:debug": "napi build --features napi --platform ./built/",
"prepublishOnly": "napi prepublish -t npm", "prepublishOnly": "napi prepublish -t npm",
"test": "pnpm run cargo:test && pnpm run build:napi && ava", "test": "pnpm run cargo:test && pnpm run build:debug && ava",
"universal": "napi universal", "universal": "napi universal",
"version": "napi version", "version": "napi version",
"format": "cargo fmt --all --", "format": "cargo fmt --all --",

View file

@ -22,30 +22,30 @@
"@swc/core-android-arm64": "1.3.11" "@swc/core-android-arm64": "1.3.11"
}, },
"dependencies": { "dependencies": {
"@bull-board/api": "5.15.1", "@bull-board/api": "5.15.2",
"@bull-board/koa": "5.15.1", "@bull-board/koa": "5.15.2",
"@bull-board/ui": "5.15.1", "@bull-board/ui": "5.15.2",
"@discordapp/twemoji": "^15.0.2", "@discordapp/twemoji": "^15.0.2",
"@koa/cors": "5.0.0", "@koa/cors": "5.0.0",
"@koa/multer": "3.0.2", "@koa/multer": "3.0.2",
"@koa/router": "12.0.1", "@koa/router": "12.0.1",
"@ladjs/koa-views": "9.0.0", "@ladjs/koa-views": "9.0.0",
"@peertube/http-signature": "1.7.0", "@peertube/http-signature": "1.7.0",
"@redocly/openapi-core": "1.10.5", "@redocly/openapi-core": "1.10.6",
"@sinonjs/fake-timers": "11.2.2", "@sinonjs/fake-timers": "11.2.2",
"@twemoji/parser": "^15.0.0", "@twemoji/parser": "^15.0.0",
"adm-zip": "0.5.10", "adm-zip": "0.5.10",
"ajv": "8.12.0", "ajv": "8.12.0",
"archiver": "7.0.1", "archiver": "7.0.1",
"argon2": "^0.40.1", "argon2": "^0.40.1",
"aws-sdk": "2.1584.0", "aws-sdk": "2.1585.0",
"axios": "^1.6.8", "axios": "^1.6.8",
"backend-rs": "workspace:*", "backend-rs": "workspace:*",
"bcryptjs": "2.4.3", "bcryptjs": "2.4.3",
"blurhash": "2.0.5", "blurhash": "2.0.5",
"bull": "4.12.2", "bull": "4.12.2",
"cacheable-lookup": "TheEssem/cacheable-lookup", "cacheable-lookup": "TheEssem/cacheable-lookup",
"cbor-x": "^1.5.8", "cbor-x": "^1.5.9",
"chalk": "5.3.0", "chalk": "5.3.0",
"chalk-template": "1.1.0", "chalk-template": "1.1.0",
"cli-highlight": "2.1.11", "cli-highlight": "2.1.11",
@ -62,7 +62,7 @@
"form-data": "^4.0.0", "form-data": "^4.0.0",
"got": "14.2.1", "got": "14.2.1",
"gunzip-maybe": "^1.4.2", "gunzip-maybe": "^1.4.2",
"happy-dom": "^14.3.1", "happy-dom": "^14.3.8",
"hpagent": "1.2.0", "hpagent": "1.2.0",
"ioredis": "5.3.2", "ioredis": "5.3.2",
"ip-cidr": "4.0.0", "ip-cidr": "4.0.0",
@ -129,7 +129,7 @@
}, },
"devDependencies": { "devDependencies": {
"@swc/cli": "0.3.10", "@swc/cli": "0.3.10",
"@swc/core": "1.4.8", "@swc/core": "1.4.11",
"@types/adm-zip": "^0.5.5", "@types/adm-zip": "^0.5.5",
"@types/bcryptjs": "2.4.6", "@types/bcryptjs": "2.4.6",
"@types/color-convert": "^2.0.3", "@types/color-convert": "^2.0.3",

View file

@ -3,7 +3,6 @@ import type { EndoRelation, Predicate } from "./relation.js";
/** /**
* Count the number of elements that satisfy the predicate * Count the number of elements that satisfy the predicate
*/ */
export function countIf<T>(f: Predicate<T>, xs: T[]): number { export function countIf<T>(f: Predicate<T>, xs: T[]): number {
return xs.filter(f).length; return xs.filter(f).length;
} }
@ -60,6 +59,21 @@ export function maximum(xs: number[]): number {
return Math.max(...xs); return Math.max(...xs);
} }
/**
* Returns if two arrays are equal
*
* examples:
* equal([1, 2, 3], [1, 2, 3]) === true
* equal([1, 2, 3], [1, 3, 2]) === false
* equal([1, 2, 3], [1, 2]) === false
*/
export function equal<T>(lhs: T[], rhs: T[]): boolean {
return (
lhs.length === rhs.length &&
lhs.every((value, index) => value === rhs[index])
);
}
/** /**
* Splits an array based on the equivalence relation. * Splits an array based on the equivalence relation.
* The concatenation of the result is equal to the argument. * The concatenation of the result is equal to the argument.

View file

@ -9,6 +9,7 @@ import {
UserProfiles, UserProfiles,
Polls, Polls,
NoteEdits, NoteEdits,
NoteFiles,
} from "@/models/index.js"; } from "@/models/index.js";
import type { DriveFile } from "@/models/entities/drive-file.js"; import type { DriveFile } from "@/models/entities/drive-file.js";
import type { IMentionedRemoteUsers, Note } from "@/models/entities/note.js"; import type { IMentionedRemoteUsers, Note } from "@/models/entities/note.js";
@ -34,7 +35,6 @@ import renderUpdate from "@/remote/activitypub/renderer/update.js";
import { deliverToRelays } from "@/services/relay.js"; import { deliverToRelays } from "@/services/relay.js";
// import { deliverQuestionUpdate } from "@/services/note/polls/update.js"; // import { deliverQuestionUpdate } from "@/services/note/polls/update.js";
import { langmap } from "@/misc/langmap.js"; import { langmap } from "@/misc/langmap.js";
import detectLanguage from "@/misc/detect-language.js";
export const meta = { export const meta = {
tags: ["notes"], tags: ["notes"],
@ -606,6 +606,13 @@ export default define(meta, paramDef, async (ps, user) => {
update.updatedAt = new Date(); update.updatedAt = new Date();
await Notes.update(note.id, update); await Notes.update(note.id, update);
if (update.fileIds != null) {
await NoteFiles.delete({ noteId: note.id });
await NoteFiles.insert(
update.fileIds.map((fileId) => ({ noteId: note.id, fileId })),
);
}
// Add NoteEdit history for the previous one // Add NoteEdit history for the previous one
await NoteEdits.insert({ await NoteEdits.insert({
id: genId(), id: genId(),

View file

@ -59,7 +59,7 @@
"idb-keyval": "6.2.1", "idb-keyval": "6.2.1",
"insert-text-at-cursor": "0.3.0", "insert-text-at-cursor": "0.3.0",
"json5": "2.2.3", "json5": "2.2.3",
"katex": "0.16.9", "katex": "0.16.10",
"libopenmpt-wasm": "github:TheEssem/libopenmpt-packaging#build", "libopenmpt-wasm": "github:TheEssem/libopenmpt-packaging#build",
"matter-js": "0.19.0", "matter-js": "0.19.0",
"mfm-js": "0.24.0", "mfm-js": "0.24.0",
@ -83,7 +83,7 @@
"typescript": "5.4.3", "typescript": "5.4.3",
"unicode-emoji-json": "^0.6.0", "unicode-emoji-json": "^0.6.0",
"uuid": "9.0.1", "uuid": "9.0.1",
"vite": "5.2.4", "vite": "5.2.6",
"vite-plugin-compression": "^0.5.1", "vite-plugin-compression": "^0.5.1",
"vue": "3.4.21", "vue": "3.4.21",
"vue-draggable-plus": "^0.3.5", "vue-draggable-plus": "^0.3.5",

View file

@ -38,11 +38,11 @@ const props = withDefaults(
defineProps<{ defineProps<{
file: entities.DriveFile; file: entities.DriveFile;
fit: string; fit: string;
showAltIndicator?: boolean showAltIndicator?: boolean;
}>(), }>(),
{ {
showAltIndicator: false, showAltIndicator: false,
} },
); );
const is = computed(() => { const is = computed(() => {

View file

@ -27,9 +27,7 @@
v-if="alt && showAltIndicator" v-if="alt && showAltIndicator"
v-tooltip.noLabel=" v-tooltip.noLabel="
`${i18n.ts.alt}: ${ `${i18n.ts.alt}: ${
alt.length > 200 alt.length > 200 ? alt.trim().slice(0, 200) + '...' : alt.trim()
? alt.trim().slice(0, 200) + '...'
: alt.trim()
}` }`
" "
></i> ></i>
@ -51,7 +49,7 @@ const props = withDefaults(
size?: number; size?: number;
cover?: boolean; cover?: boolean;
largestDimension?: "width" | "height"; largestDimension?: "width" | "height";
showAltIndicator?: boolean showAltIndicator?: boolean;
}>(), }>(),
{ {
src: null, src: null,
@ -60,7 +58,7 @@ const props = withDefaults(
title: null, title: null,
size: 64, size: 64,
cover: true, cover: true,
showAltIndicator: false showAltIndicator: false,
}, },
); );

View file

@ -291,7 +291,7 @@ import XStarButtonNoEmoji from "@/components/MkStarButtonNoEmoji.vue";
import XQuoteButton from "@/components/MkQuoteButton.vue"; import XQuoteButton from "@/components/MkQuoteButton.vue";
import MkVisibility from "@/components/MkVisibility.vue"; import MkVisibility from "@/components/MkVisibility.vue";
import copyToClipboard from "@/scripts/copy-to-clipboard"; import copyToClipboard from "@/scripts/copy-to-clipboard";
import detectLanguage from "@/scripts/detect-language"; import { detectLanguage } from "@/scripts/language-utils";
import { url } from "@/config"; import { url } from "@/config";
import { pleaseLogin } from "@/scripts/please-login"; import { pleaseLogin } from "@/scripts/please-login";
import { focusNext, focusPrev } from "@/scripts/focus"; import { focusNext, focusPrev } from "@/scripts/focus";

View file

@ -201,7 +201,7 @@ import XStarButtonNoEmoji from "@/components/MkStarButtonNoEmoji.vue";
import XRenoteButton from "@/components/MkRenoteButton.vue"; import XRenoteButton from "@/components/MkRenoteButton.vue";
import XQuoteButton from "@/components/MkQuoteButton.vue"; import XQuoteButton from "@/components/MkQuoteButton.vue";
import copyToClipboard from "@/scripts/copy-to-clipboard"; import copyToClipboard from "@/scripts/copy-to-clipboard";
import detectLanguage from "@/scripts/detect-language"; import { detectLanguage } from "@/scripts/language-utils";
import { url } from "@/config"; import { url } from "@/config";
import { pleaseLogin } from "@/scripts/please-login"; import { pleaseLogin } from "@/scripts/please-login";
import { getNoteMenu } from "@/scripts/get-note-menu"; import { getNoteMenu } from "@/scripts/get-note-menu";

View file

@ -329,9 +329,14 @@ import XCheatSheet from "@/components/MkCheatSheetDialog.vue";
import preprocess from "@/scripts/preprocess"; import preprocess from "@/scripts/preprocess";
import { vibrate } from "@/scripts/vibrate"; import { vibrate } from "@/scripts/vibrate";
import { langmap } from "@/scripts/langmap"; import { langmap } from "@/scripts/langmap";
import { isSupportedLang, isSameLanguage, languageContains, parentLanguage } from "@/scripts/language-utils"; import {
detectLanguage,
isSupportedLang,
isSameLanguage,
languageContains,
parentLanguage,
} from "@/scripts/language-utils";
import type { MenuItem } from "@/types/menu"; import type { MenuItem } from "@/types/menu";
import detectLanguage from "@/scripts/detect-language";
import icon from "@/scripts/icon"; import icon from "@/scripts/icon";
const modal = inject("modal"); const modal = inject("modal");
@ -1012,8 +1017,6 @@ function deleteDraft() {
localStorage.setItem("drafts", JSON.stringify(draftData)); localStorage.setItem("drafts", JSON.stringify(draftData));
} }
async function post() { async function post() {
// For text that is too short, the false positive rate may be too high, so we don't show alarm. // For text that is too short, the false positive rate may be too high, so we don't show alarm.
if (defaultStore.state.autocorrectNoteLanguage && text.value.length > 10) { if (defaultStore.state.autocorrectNoteLanguage && text.value.length > 10) {

View file

@ -142,6 +142,10 @@ function done(canceled: boolean, result?: searchQuery) {
} }
function search() { function search() {
searchWords.value = searchWords.value.trim();
searchUsers.value = searchUsers.value.trim();
searchRange.value = searchRange.value.trim();
if ( if (
searchWords.value === "" && searchWords.value === "" &&
searchUsers.value === "" && searchUsers.value === "" &&
@ -160,6 +164,8 @@ function search() {
} }
function lookup() { function lookup() {
searchWords.value = searchWords.value.trim();
if (searchWords.value === "") return; if (searchWords.value === "") return;
done(false, { done(false, {

View file

@ -1,11 +0,0 @@
import { detect } from "tinyld";
import * as mfm from "mfm-js";
export default function detectLanguage(text: string): string {
const nodes = mfm.parse(text);
const filtered = mfm.extract(nodes, (node) => {
return node.type === "text" || node.type === "quote";
});
const purified = mfm.toString(filtered);
return detect(purified);
}

View file

@ -382,69 +382,129 @@ export const iso639Regional = {
export const langmap = Object.assign({}, langmapNoRegion, iso639Regional); export const langmap = Object.assign({}, langmapNoRegion, iso639Regional);
/** /**
* @see https://github.com/komodojp/tinyld/blob/develop/docs/langs.md * @see https://github.com/komodojp/tinyld/blob/develop/docs/langs.md
*/ */
export const supportedLangs: Record<string, boolean> = { export const supportedLangs: Record<string, boolean> = {
af: true, afr: true, af: true,
am: true, amh: true, afr: true,
am: true,
amh: true,
ber: true, ber: true,
rn: true, run: true, rn: true,
my: true, mya: true, run: true,
id: true, ind: true, my: true,
km: true, khm: true, mya: true,
tl: true, tgl: true, id: true,
th: true, tha: true, ind: true,
vi: true, vie: true, km: true,
zh: true, cmn: true, khm: true,
ja: true, jpn: true, tl: true,
ko: true, kor: true, tgl: true,
bn: true, ben: true, th: true,
gu: true, guj: true, tha: true,
hi: true, hin: true, vi: true,
kn: true, kan: true, vie: true,
ta: true, tam: true, zh: true,
te: true, tel: true, cmn: true,
ur: true, urd: true, ja: true,
cs: true, ces: true, jpn: true,
el: true, ell: true, ko: true,
la: true, lat: true, kor: true,
mk: true, mkd: true, bn: true,
sr: true, srp: true, ben: true,
sk: true, slk: true, gu: true,
be: true, bel: true, guj: true,
bg: true, bul: true, hi: true,
et: true, est: true, hin: true,
hu: true, hun: true, kn: true,
lv: true, lvs: true, kan: true,
lt: true, lit: true, ta: true,
pl: true, pol: true, tam: true,
ro: true, ron: true, te: true,
ru: true, rus: true, tel: true,
uk: true, ukr: true, ur: true,
da: true, dan: true, urd: true,
fi: true, fin: true, cs: true,
is: true, isl: true, ces: true,
no: true, nob: true, el: true,
sv: true, swe: true, ell: true,
nl: true, nld: true, la: true,
en: true, eng: true, lat: true,
fr: true, fra: true, mk: true,
de: true, deu: true, mkd: true,
ga: true, gle: true, sr: true,
it: true, ita: true, srp: true,
pt: true, por: true, sk: true,
es: true, spa: true, slk: true,
ar: true, ara: true, be: true,
hy: true, hye: true, bel: true,
he: true, heb: true, bg: true,
kk: true, kaz: true, bul: true,
mn: true, mon: true, et: true,
fa: true, pes: true, est: true,
tt: true, tat: true, hu: true,
tr: true, tur: true, hun: true,
tk: true, tuk: true, lv: true,
yi: true, yid: true, lvs: true,
eo: true, epo: true, lt: true,
lit: true,
pl: true,
pol: true,
ro: true,
ron: true,
ru: true,
rus: true,
uk: true,
ukr: true,
da: true,
dan: true,
fi: true,
fin: true,
is: true,
isl: true,
no: true,
nob: true,
sv: true,
swe: true,
nl: true,
nld: true,
en: true,
eng: true,
fr: true,
fra: true,
de: true,
deu: true,
ga: true,
gle: true,
it: true,
ita: true,
pt: true,
por: true,
es: true,
spa: true,
ar: true,
ara: true,
hy: true,
hye: true,
he: true,
heb: true,
kk: true,
kaz: true,
mn: true,
mon: true,
fa: true,
pes: true,
tt: true,
tat: true,
tr: true,
tur: true,
tk: true,
tuk: true,
yi: true,
yid: true,
eo: true,
epo: true,
tlh: true, tlh: true,
vo: true, vol: true, vo: true,
} vol: true,
};

View file

@ -1,4 +1,15 @@
import { supportedLangs } from "@/scripts/langmap" import { supportedLangs } from "@/scripts/langmap";
import { detect } from "tinyld";
import * as mfm from "mfm-js";
export function detectLanguage(text: string): string {
const nodes = mfm.parse(text);
const filtered = mfm.extract(nodes, (node) => {
return node.type === "text" || node.type === "quote";
});
const purified = mfm.toString(filtered);
return detect(purified);
}
export function isSupportedLang(langCode: string | null) { export function isSupportedLang(langCode: string | null) {
if (!langCode) return false; if (!langCode) return false;
@ -9,7 +20,10 @@ export function isSupportedLang(langCode: string | null) {
* Compare two language codes to determine whether they are decisively different * Compare two language codes to determine whether they are decisively different
* @returns false if they are close enough * @returns false if they are close enough
*/ */
export function isSameLanguage(langCode1: string | null, langCode2: string | null) { export function isSameLanguage(
langCode1: string | null,
langCode2: string | null,
) {
return ( return (
languageContains(langCode1, langCode2) || languageContains(langCode1, langCode2) ||
languageContains(langCode2, langCode1) languageContains(langCode2, langCode1)
@ -19,7 +33,10 @@ export function isSameLanguage(langCode1: string | null, langCode2: string | nul
/** /**
* Returns true if langCode1 contains langCode2 * Returns true if langCode1 contains langCode2
*/ */
export function languageContains(langCode1: string | null, langCode2: string | null) { export function languageContains(
langCode1: string | null,
langCode2: string | null,
) {
if (!langCode1 || !langCode2) return false; if (!langCode1 || !langCode2) return false;
return parentLanguage(langCode2) === langCode1; return parentLanguage(langCode2) === langCode1;

View file

@ -21,7 +21,7 @@
}, },
"devDependencies": { "devDependencies": {
"@swc/cli": "0.3.10", "@swc/cli": "0.3.10",
"@swc/core": "1.4.8", "@swc/core": "1.4.11",
"@swc/types": "^0.1.6", "@swc/types": "^0.1.6",
"@types/jest": "^29.5.12", "@types/jest": "^29.5.12",
"@types/node": "20.11.30", "@types/node": "20.11.30",

View file

@ -11,7 +11,7 @@
"devDependencies": { "devDependencies": {
"firefish-js": "workspace:*", "firefish-js": "workspace:*",
"idb-keyval": "^6.2.1", "idb-keyval": "^6.2.1",
"vite": "5.2.4", "vite": "5.2.6",
"vite-plugin-compression": "^0.5.1" "vite-plugin-compression": "^0.5.1"
} }
} }

View file

@ -25,20 +25,20 @@ importers:
version: 4.1.0 version: 4.1.0
devDependencies: devDependencies:
'@biomejs/biome': '@biomejs/biome':
specifier: 1.6.2 specifier: 1.6.3
version: 1.6.2 version: 1.6.3
'@biomejs/cli-darwin-arm64': '@biomejs/cli-darwin-arm64':
specifier: ^1.6.2 specifier: ^1.6.3
version: 1.6.2 version: 1.6.3
'@biomejs/cli-darwin-x64': '@biomejs/cli-darwin-x64':
specifier: ^1.6.2 specifier: ^1.6.3
version: 1.6.2 version: 1.6.3
'@biomejs/cli-linux-arm64': '@biomejs/cli-linux-arm64':
specifier: ^1.6.2 specifier: ^1.6.3
version: 1.6.2 version: 1.6.3
'@biomejs/cli-linux-x64': '@biomejs/cli-linux-x64':
specifier: ^1.6.2 specifier: ^1.6.3
version: 1.6.2 version: 1.6.3
'@types/node': '@types/node':
specifier: 20.11.30 specifier: 20.11.30
version: 20.11.30 version: 20.11.30
@ -55,14 +55,14 @@ importers:
packages/backend: packages/backend:
dependencies: dependencies:
'@bull-board/api': '@bull-board/api':
specifier: 5.15.1 specifier: 5.15.2
version: 5.15.1(@bull-board/ui@5.15.1) version: 5.15.2(@bull-board/ui@5.15.2)
'@bull-board/koa': '@bull-board/koa':
specifier: 5.15.1 specifier: 5.15.2
version: 5.15.1(@types/koa@2.15.0)(pug@3.0.2) version: 5.15.2(@types/koa@2.15.0)(pug@3.0.2)
'@bull-board/ui': '@bull-board/ui':
specifier: 5.15.1 specifier: 5.15.2
version: 5.15.1 version: 5.15.2
'@discordapp/twemoji': '@discordapp/twemoji':
specifier: ^15.0.2 specifier: ^15.0.2
version: 15.0.2 version: 15.0.2
@ -82,8 +82,8 @@ importers:
specifier: 1.7.0 specifier: 1.7.0
version: 1.7.0 version: 1.7.0
'@redocly/openapi-core': '@redocly/openapi-core':
specifier: 1.10.5 specifier: 1.10.6
version: 1.10.5 version: 1.10.6
'@sinonjs/fake-timers': '@sinonjs/fake-timers':
specifier: 11.2.2 specifier: 11.2.2
version: 11.2.2 version: 11.2.2
@ -103,8 +103,8 @@ importers:
specifier: ^0.40.1 specifier: ^0.40.1
version: 0.40.1 version: 0.40.1
aws-sdk: aws-sdk:
specifier: 2.1584.0 specifier: 2.1585.0
version: 2.1584.0 version: 2.1585.0
axios: axios:
specifier: ^1.6.8 specifier: ^1.6.8
version: 1.6.8 version: 1.6.8
@ -124,8 +124,8 @@ importers:
specifier: TheEssem/cacheable-lookup specifier: TheEssem/cacheable-lookup
version: github.com/TheEssem/cacheable-lookup/dd2fb616366a3c68dcf321a57a67295967b204bf version: github.com/TheEssem/cacheable-lookup/dd2fb616366a3c68dcf321a57a67295967b204bf
cbor-x: cbor-x:
specifier: ^1.5.8 specifier: ^1.5.9
version: 1.5.8 version: 1.5.9
chalk: chalk:
specifier: 5.3.0 specifier: 5.3.0
version: 5.3.0 version: 5.3.0
@ -175,8 +175,8 @@ importers:
specifier: ^1.4.2 specifier: ^1.4.2
version: 1.4.2 version: 1.4.2
happy-dom: happy-dom:
specifier: ^14.3.1 specifier: ^14.3.8
version: 14.3.1 version: 14.3.8
hpagent: hpagent:
specifier: 1.2.0 specifier: 1.2.0
version: 1.2.0 version: 1.2.0
@ -373,10 +373,10 @@ importers:
devDependencies: devDependencies:
'@swc/cli': '@swc/cli':
specifier: 0.3.10 specifier: 0.3.10
version: 0.3.10(@swc/core@1.4.8) version: 0.3.10(@swc/core@1.4.11)
'@swc/core': '@swc/core':
specifier: 1.4.8 specifier: 1.4.11
version: 1.4.8 version: 1.4.11
'@types/adm-zip': '@types/adm-zip':
specifier: ^0.5.5 specifier: ^0.5.5
version: 0.5.5 version: 0.5.5
@ -526,13 +526,13 @@ importers:
version: 2.0.0 version: 2.0.0
swc-loader: swc-loader:
specifier: ^0.2.6 specifier: ^0.2.6
version: 0.2.6(@swc/core@1.4.8)(webpack@5.91.0) version: 0.2.6(@swc/core@1.4.11)(webpack@5.91.0)
ts-loader: ts-loader:
specifier: 9.5.1 specifier: 9.5.1
version: 9.5.1(typescript@5.4.3)(webpack@5.91.0) version: 9.5.1(typescript@5.4.3)(webpack@5.91.0)
ts-node: ts-node:
specifier: 10.9.2 specifier: 10.9.2
version: 10.9.2(@swc/core@1.4.8)(@types/node@20.11.30)(typescript@5.4.3) version: 10.9.2(@swc/core@1.4.11)(@types/node@20.11.30)(typescript@5.4.3)
tsconfig-paths: tsconfig-paths:
specifier: 4.2.0 specifier: 4.2.0
version: 4.2.0 version: 4.2.0
@ -541,7 +541,7 @@ importers:
version: 5.4.3 version: 5.4.3
webpack: webpack:
specifier: ^5.91.0 specifier: ^5.91.0
version: 5.91.0(@swc/core@1.4.8) version: 5.91.0(@swc/core@1.4.11)
ws: ws:
specifier: 8.16.0 specifier: 8.16.0
version: 8.16.0 version: 8.16.0
@ -622,7 +622,7 @@ importers:
version: 9.0.8 version: 9.0.8
'@vitejs/plugin-vue': '@vitejs/plugin-vue':
specifier: 5.0.4 specifier: 5.0.4
version: 5.0.4(vite@5.2.4)(vue@3.4.21) version: 5.0.4(vite@5.2.6)(vue@3.4.21)
'@vue/runtime-core': '@vue/runtime-core':
specifier: 3.4.21 specifier: 3.4.21
version: 3.4.21 version: 3.4.21
@ -702,8 +702,8 @@ importers:
specifier: 2.2.3 specifier: 2.2.3
version: 2.2.3 version: 2.2.3
katex: katex:
specifier: 0.16.9 specifier: 0.16.10
version: 0.16.9 version: 0.16.10
libopenmpt-wasm: libopenmpt-wasm:
specifier: github:TheEssem/libopenmpt-packaging#build specifier: github:TheEssem/libopenmpt-packaging#build
version: github.com/TheEssem/libopenmpt-packaging/d05d151a72b638c6312227af0417aca69521172c version: github.com/TheEssem/libopenmpt-packaging/d05d151a72b638c6312227af0417aca69521172c
@ -774,11 +774,11 @@ importers:
specifier: 9.0.1 specifier: 9.0.1
version: 9.0.1 version: 9.0.1
vite: vite:
specifier: 5.2.4 specifier: 5.2.6
version: 5.2.4(@types/node@20.11.30)(sass@1.72.0) version: 5.2.6(@types/node@20.11.30)(sass@1.72.0)
vite-plugin-compression: vite-plugin-compression:
specifier: ^0.5.1 specifier: ^0.5.1
version: 0.5.1(vite@5.2.4) version: 0.5.1(vite@5.2.6)
vue: vue:
specifier: 3.4.21 specifier: 3.4.21
version: 3.4.21(typescript@5.4.3) version: 3.4.21(typescript@5.4.3)
@ -807,10 +807,10 @@ importers:
devDependencies: devDependencies:
'@swc/cli': '@swc/cli':
specifier: 0.3.10 specifier: 0.3.10
version: 0.3.10(@swc/core@1.4.8) version: 0.3.10(@swc/core@1.4.11)
'@swc/core': '@swc/core':
specifier: 1.4.8 specifier: 1.4.11
version: 1.4.8 version: 1.4.11
'@swc/types': '@swc/types':
specifier: ^0.1.6 specifier: ^0.1.6
version: 0.1.6 version: 0.1.6
@ -837,7 +837,7 @@ importers:
version: 29.1.2(@babel/core@7.23.2)(jest@29.7.0)(typescript@5.4.3) version: 29.1.2(@babel/core@7.23.2)(jest@29.7.0)(typescript@5.4.3)
ts-node: ts-node:
specifier: 10.9.2 specifier: 10.9.2
version: 10.9.2(@swc/core@1.4.8)(@types/node@20.11.30)(typescript@5.4.3) version: 10.9.2(@swc/core@1.4.11)(@types/node@20.11.30)(typescript@5.4.3)
tsd: tsd:
specifier: ^0.30.7 specifier: ^0.30.7
version: 0.30.7 version: 0.30.7
@ -972,11 +972,11 @@ importers:
specifier: ^6.2.1 specifier: ^6.2.1
version: 6.2.1 version: 6.2.1
vite: vite:
specifier: 5.2.4 specifier: 5.2.6
version: 5.2.4(@types/node@20.11.30)(sass@1.72.0) version: 5.2.6(@types/node@20.11.30)(sass@1.72.0)
vite-plugin-compression: vite-plugin-compression:
specifier: ^0.5.1 specifier: ^0.5.1
version: 0.5.1(vite@5.2.4) version: 0.5.1(vite@5.2.6)
packages: packages:
@ -1536,38 +1536,38 @@ packages:
resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==}
dev: true dev: true
/@biomejs/biome@1.6.2: /@biomejs/biome@1.6.3:
resolution: {integrity: sha512-vw6JhYnpLRRDaawI+d7NaQj17F7LSSJrgT03IQUETwRUG3Q1/a4ByJRphTVXPuhiTnaKVmUlEF3I5NSitcdD+g==} resolution: {integrity: sha512-Xnp/TIpIcTnRA4LwerJuoGYQJEqwXtn5AL0U0OPXll/QGbAKmcUAfizU880xTwZRD4f53iceqODLDaD3wxYlIw==}
engines: {node: '>=14.*'} engines: {node: '>=14.*'}
hasBin: true hasBin: true
requiresBuild: true requiresBuild: true
optionalDependencies: optionalDependencies:
'@biomejs/cli-darwin-arm64': 1.6.2 '@biomejs/cli-darwin-arm64': 1.6.3
'@biomejs/cli-darwin-x64': 1.6.2 '@biomejs/cli-darwin-x64': 1.6.3
'@biomejs/cli-linux-arm64': 1.6.2 '@biomejs/cli-linux-arm64': 1.6.3
'@biomejs/cli-linux-arm64-musl': 1.6.2 '@biomejs/cli-linux-arm64-musl': 1.6.3
'@biomejs/cli-linux-x64': 1.6.2 '@biomejs/cli-linux-x64': 1.6.3
'@biomejs/cli-linux-x64-musl': 1.6.2 '@biomejs/cli-linux-x64-musl': 1.6.3
'@biomejs/cli-win32-arm64': 1.6.2 '@biomejs/cli-win32-arm64': 1.6.3
'@biomejs/cli-win32-x64': 1.6.2 '@biomejs/cli-win32-x64': 1.6.3
dev: true dev: true
/@biomejs/cli-darwin-arm64@1.6.2: /@biomejs/cli-darwin-arm64@1.6.3:
resolution: {integrity: sha512-2sGcNO1wDuQ6r97/SDaPzP3ehrCL7qHXpVggcB/OonbVBEamqIkN1tHsID/snnX3R2ax2QTarjb4bQ+1BpEWzA==} resolution: {integrity: sha512-0E8PGu3/8HSkBJdtjno+niJE1ANS/12D7sPK65vw5lTBYmmaYwJdfclDp6XO0IAX7uVd3/YtXlsEua0SVrNt3Q==}
engines: {node: '>=14.*'} engines: {node: '>=14.*'}
cpu: [arm64] cpu: [arm64]
os: [darwin] os: [darwin]
dev: true dev: true
/@biomejs/cli-darwin-x64@1.6.2: /@biomejs/cli-darwin-x64@1.6.3:
resolution: {integrity: sha512-qtHDXIHd7eRIHv41XdG6pt1dbw+qiD0OgLlJn5rvW20kSSFfLxW8yc4upcC1PzlruP1BQpKFec3r5rx1duTtzw==} resolution: {integrity: sha512-UWu0We/aIRtWXgJKe6ygWt2xR0yXs64BwWqtZbfxBojRn3jgW8UdFAkV5yiUOX3TQlsV6BZH1EQaUAVsccUeeA==}
engines: {node: '>=14.*'} engines: {node: '>=14.*'}
cpu: [x64] cpu: [x64]
os: [darwin] os: [darwin]
dev: true dev: true
/@biomejs/cli-linux-arm64-musl@1.6.2: /@biomejs/cli-linux-arm64-musl@1.6.3:
resolution: {integrity: sha512-ej3Jj6O9KUSCJUWqVs+9aOo6IcRIALHaGFB20wnQTWtRMFhu1PluM48MrQtMKputgdk5/CopQ662IdKf1PeuEg==} resolution: {integrity: sha512-AntGCSfLN1nPcQj4VOk3X2JgnDw07DaPC8BuBmRcsRmn+7GPSWLllVN5awIKlRPZEbGJtSnLkTiDc5Bxw8OiuA==}
engines: {node: '>=14.*'} engines: {node: '>=14.*'}
cpu: [arm64] cpu: [arm64]
os: [linux] os: [linux]
@ -1575,15 +1575,15 @@ packages:
dev: true dev: true
optional: true optional: true
/@biomejs/cli-linux-arm64@1.6.2: /@biomejs/cli-linux-arm64@1.6.3:
resolution: {integrity: sha512-e1FJ59lx84QoqQgu1/uzAPIcYGcTkZY/m6Aj8ZHwi7KoWAE5xSogximFHNQ82lS4qkUfG7KaPTbYT6cGJjN9jQ==} resolution: {integrity: sha512-wFVkQw38kOssfnkbpSh6ums5TaElw3RAt5i/VZwHmgR2nQgE0fHXLO7HwIE9VBkOEdbiIFq+2PxvFIHuJF3z3Q==}
engines: {node: '>=14.*'} engines: {node: '>=14.*'}
cpu: [arm64] cpu: [arm64]
os: [linux] os: [linux]
dev: true dev: true
/@biomejs/cli-linux-x64-musl@1.6.2: /@biomejs/cli-linux-x64-musl@1.6.3:
resolution: {integrity: sha512-uOVt4UBkFTFtdXgPX3QuSHRPVIvj07FP0P7A0UOP++idd0r9Bxyt5iIBaAORM3eQyGQqzCGPln1GuM6GalYKzg==} resolution: {integrity: sha512-GelAvGsUwbxfFpKLG+7+dvDmbrfkGqn08sL8CMQrGnhjE1krAqHWiXQsjfmi0UMFdMsk7hbc4oSAP+1+mrXcHQ==}
engines: {node: '>=14.*'} engines: {node: '>=14.*'}
cpu: [x64] cpu: [x64]
os: [linux] os: [linux]
@ -1591,15 +1591,15 @@ packages:
dev: true dev: true
optional: true optional: true
/@biomejs/cli-linux-x64@1.6.2: /@biomejs/cli-linux-x64@1.6.3:
resolution: {integrity: sha512-S6Wc5YX6aLDLMzwlDmiw/kjK62Ex+xzE432M5ge9q8tSCluGeHIzrenrJlu8E0xPG2FEipDaK4iqwnjS9O6e2A==} resolution: {integrity: sha512-vyn8TQaTZg617hjqFitwGmb1St5XXvq6I3vmxU/QFalM74BryMSvYCrYWb2Yw/TkykdEwZTMGYp+SWHRb04fTg==}
engines: {node: '>=14.*'} engines: {node: '>=14.*'}
cpu: [x64] cpu: [x64]
os: [linux] os: [linux]
dev: true dev: true
/@biomejs/cli-win32-arm64@1.6.2: /@biomejs/cli-win32-arm64@1.6.3:
resolution: {integrity: sha512-5zuxNyvnKy7oLN7KLkqcYpsMKGubfMaeQ+RqnpFsmrofQAxpOo6EL/TyJvr8g533Z0a2/cQ/ALqnwl0mN3KQoQ==} resolution: {integrity: sha512-Gx8N2Tixke6pAI1BniteCVZgUUmaFEDYosdWxoaCus15BZI/7RcBxhsRM0ZL/lC66StSQ8vHl8JBrrld1k570Q==}
engines: {node: '>=14.*'} engines: {node: '>=14.*'}
cpu: [arm64] cpu: [arm64]
os: [win32] os: [win32]
@ -1607,8 +1607,8 @@ packages:
dev: true dev: true
optional: true optional: true
/@biomejs/cli-win32-x64@1.6.2: /@biomejs/cli-win32-x64@1.6.3:
resolution: {integrity: sha512-O3nf09/m3cb3/U3M+uO4l236iTZr4F4SmLNG3okKXPfyZqKLNnF6OjdTHOYEiNXnGEtlRuUeemqb3vht9JkXaw==} resolution: {integrity: sha512-meungPJw64SqoR7LXY1wG7GC4+4wgpyThdFUMGXa6PCe0BLFOIOcZ9VMj9PstuczMPdgmt/BUMPsj25dK1VO8A==}
engines: {node: '>=14.*'} engines: {node: '>=14.*'}
cpu: [x64] cpu: [x64]
os: [win32] os: [win32]
@ -1616,20 +1616,20 @@ packages:
dev: true dev: true
optional: true optional: true
/@bull-board/api@5.15.1(@bull-board/ui@5.15.1): /@bull-board/api@5.15.2(@bull-board/ui@5.15.2):
resolution: {integrity: sha512-yJqv2uhMTC5BE2SwK/zG7kTloZyOFOujzPtP09OF9S8GvTalCwSTk7EsLQOUMHTUhyiVZ8JpUyJz8oytZ77+xQ==} resolution: {integrity: sha512-HOqh5/Z0W5GR0WHVS/G83DTn8JwDn0NZs2H5u0bMFnvEmKZexysdnZyeox8Y31A6azRO/tqK3o/LrT1Hhtaxtw==}
peerDependencies: peerDependencies:
'@bull-board/ui': 5.15.1 '@bull-board/ui': 5.15.2
dependencies: dependencies:
'@bull-board/ui': 5.15.1 '@bull-board/ui': 5.15.2
redis-info: 3.1.0 redis-info: 3.1.0
dev: false dev: false
/@bull-board/koa@5.15.1(@types/koa@2.15.0)(pug@3.0.2): /@bull-board/koa@5.15.2(@types/koa@2.15.0)(pug@3.0.2):
resolution: {integrity: sha512-O6Mq0qoVK125YHXfNYUY7g3QrhvPcU0Vg81TC7mEbt+rrdPJa7twvP0VAqd/Ga3SiDS+cth+9S2bnPQQ3CoOoA==} resolution: {integrity: sha512-tT1gjfcEF/87ITR0Scfh5V3Qy74NOCEOwIPWV78F4/5oIcSvdhjhFWBvCMZ/RLQSozS49/2gK5AucJW5pmf2ww==}
dependencies: dependencies:
'@bull-board/api': 5.15.1(@bull-board/ui@5.15.1) '@bull-board/api': 5.15.2(@bull-board/ui@5.15.2)
'@bull-board/ui': 5.15.1 '@bull-board/ui': 5.15.2
ejs: 3.1.9 ejs: 3.1.9
koa: 2.15.2 koa: 2.15.2
koa-mount: 4.0.0 koa-mount: 4.0.0
@ -1693,10 +1693,10 @@ packages:
- whiskers - whiskers
dev: false dev: false
/@bull-board/ui@5.15.1: /@bull-board/ui@5.15.2:
resolution: {integrity: sha512-+jpHdBTaqC2D9QDlix9j0EeqiJgN+RB8aH/A7J0VwVMLnbM820ZFPbrlXIN3Ph0hX2hgc+aHabZjs4Rjmwpqng==} resolution: {integrity: sha512-OlDCAaBOjdR7ke3vGkm/vEwC8Cwrt/r9ivc8jL+hQbgDluauKl/o9NSPp3BgC2Fo0MRszAxTgSitR0pGLRhAwg==}
dependencies: dependencies:
'@bull-board/api': 5.15.1(@bull-board/ui@5.15.1) '@bull-board/api': 5.15.2(@bull-board/ui@5.15.2)
dev: false dev: false
/@cbor-extract/cbor-extract-darwin-arm64@2.2.0: /@cbor-extract/cbor-extract-darwin-arm64@2.2.0:
@ -3308,8 +3308,8 @@ packages:
resolution: {integrity: sha512-OEdCW1HRpFiZaZNrXQq8LoBxX3APijZaa/Xyoc6r44LnyAPWkjQqvPoBxE7IRqSvMihf8bl+ZRc1gtc1KuFLHw==} resolution: {integrity: sha512-OEdCW1HRpFiZaZNrXQq8LoBxX3APijZaa/Xyoc6r44LnyAPWkjQqvPoBxE7IRqSvMihf8bl+ZRc1gtc1KuFLHw==}
dev: false dev: false
/@redocly/openapi-core@1.10.5: /@redocly/openapi-core@1.10.6:
resolution: {integrity: sha512-RaVwWLbGuzQxK6ezbvPGnz4rtVMTo5DOrxyII/sKJiTexBHplZzUVqrpU6aeRckl3iY9xe9+w07c/kDiLEeWRQ==} resolution: {integrity: sha512-qWZszssMMe/UrJ4LN4qh2mdcIx5uMHwnvtkAEdmWYWlUv+LNaBeqazjDt0UrCOX5EsrD4d+21oxQJNdbyGMVVA==}
engines: {node: '>=14.19.0', npm: '>=7.0.0'} engines: {node: '>=14.19.0', npm: '>=7.0.0'}
dependencies: dependencies:
'@redocly/ajv': 8.11.0 '@redocly/ajv': 8.11.0
@ -3518,7 +3518,7 @@ packages:
resolution: {integrity: sha512-Uy0+khmZqUrUGm5dmMqVlnvufZRSK0FbYzVgp0UMstm+F5+W2/jnEEQyc9vo1ZR/E5ZI/B1WjjoTqBqwJL6Krw==} resolution: {integrity: sha512-Uy0+khmZqUrUGm5dmMqVlnvufZRSK0FbYzVgp0UMstm+F5+W2/jnEEQyc9vo1ZR/E5ZI/B1WjjoTqBqwJL6Krw==}
dev: false dev: false
/@swc/cli@0.3.10(@swc/core@1.4.8): /@swc/cli@0.3.10(@swc/core@1.4.11):
resolution: {integrity: sha512-YWfYo9kXdbmIuGwIPth9geKgb0KssCMTdZa44zAN5KoqcuCP2rTW9s60heQDSRNpbtCmUr7BKF1VivsoHXrvrQ==} resolution: {integrity: sha512-YWfYo9kXdbmIuGwIPth9geKgb0KssCMTdZa44zAN5KoqcuCP2rTW9s60heQDSRNpbtCmUr7BKF1VivsoHXrvrQ==}
engines: {node: '>= 16.14.0'} engines: {node: '>= 16.14.0'}
hasBin: true hasBin: true
@ -3530,7 +3530,7 @@ packages:
optional: true optional: true
dependencies: dependencies:
'@mole-inc/bin-wrapper': 8.0.1 '@mole-inc/bin-wrapper': 8.0.1
'@swc/core': 1.4.8 '@swc/core': 1.4.11
'@swc/counter': 0.1.3 '@swc/counter': 0.1.3
commander: 8.3.0 commander: 8.3.0
fast-glob: 3.3.2 fast-glob: 3.3.2
@ -3552,88 +3552,88 @@ packages:
dev: false dev: false
optional: true optional: true
/@swc/core-darwin-arm64@1.4.8: /@swc/core-darwin-arm64@1.4.11:
resolution: {integrity: sha512-hhQCffRTgzpTIbngSnC30vV6IJVTI9FFBF954WEsshsecVoCGFiMwazBbrkLG+RwXENTrMhgeREEFh6R3KRgKQ==} resolution: {integrity: sha512-C1j1Qp/IHSelVWdEnT7f0iONWxQz6FAqzjCF2iaL+0vFg4V5f2nlgrueY8vj5pNNzSGhrAlxsMxEIp4dj1MXkg==}
engines: {node: '>=10'} engines: {node: '>=10'}
cpu: [arm64] cpu: [arm64]
os: [darwin] os: [darwin]
requiresBuild: true requiresBuild: true
optional: true optional: true
/@swc/core-darwin-x64@1.4.8: /@swc/core-darwin-x64@1.4.11:
resolution: {integrity: sha512-P3ZBw8Jr8rKhY/J8d+6WqWriqngGTgHwtFeJ8MIakQJTbdYbFgXSZxcvDiERg3psbGeFXaUaPI0GO6BXv9k/OQ==} resolution: {integrity: sha512-0TTy3Ni8ncgaMCchSQ7FK8ZXQLlamy0FXmGWbR58c+pVZWYZltYPTmheJUvVcR0H2+gPAymRKyfC0iLszDALjg==}
engines: {node: '>=10'} engines: {node: '>=10'}
cpu: [x64] cpu: [x64]
os: [darwin] os: [darwin]
requiresBuild: true requiresBuild: true
optional: true optional: true
/@swc/core-linux-arm-gnueabihf@1.4.8: /@swc/core-linux-arm-gnueabihf@1.4.11:
resolution: {integrity: sha512-PP9JIJt19bUWhAGcQW6qMwTjZOcMyzkvZa0/LWSlDm0ORYVLmDXUoeQbGD3e0Zju9UiZxyulnpjEN0ZihJgPTA==} resolution: {integrity: sha512-XJLB71uw0rog4DjYAPxFGAuGCBQpgJDlPZZK6MTmZOvI/1t0+DelJ24IjHIxk500YYM26Yv47xPabqFPD7I2zQ==}
engines: {node: '>=10'} engines: {node: '>=10'}
cpu: [arm] cpu: [arm]
os: [linux] os: [linux]
requiresBuild: true requiresBuild: true
optional: true optional: true
/@swc/core-linux-arm64-gnu@1.4.8: /@swc/core-linux-arm64-gnu@1.4.11:
resolution: {integrity: sha512-HvEWnwKHkoVUr5iftWirTApFJ13hGzhAY2CMw4lz9lur2m+zhPviRRED0FCI6T95Knpv7+8eUOr98Z7ctrG6DQ==} resolution: {integrity: sha512-vYQwzJvm/iu052d5Iw27UFALIN5xSrGkPZXxLNMHPySVko2QMNNBv35HLatkEQHbQ3X+VKSW9J9SkdtAvAVRAQ==}
engines: {node: '>=10'} engines: {node: '>=10'}
cpu: [arm64] cpu: [arm64]
os: [linux] os: [linux]
requiresBuild: true requiresBuild: true
optional: true optional: true
/@swc/core-linux-arm64-musl@1.4.8: /@swc/core-linux-arm64-musl@1.4.11:
resolution: {integrity: sha512-kY8+qa7k/dEeBq9p0Hrta18QnJPpsiJvDQSLNaTIFpdM3aEM9zbkshWz8gaX5VVGUEALowCBUWqmzO4VaqM+2w==} resolution: {integrity: sha512-eV+KduiRYUFjPsvbZuJ9aknQH9Tj0U2/G9oIZSzLx/18WsYi+upzHbgxmIIHJ2VJgfd7nN40RI/hMtxNsUzR/g==}
engines: {node: '>=10'} engines: {node: '>=10'}
cpu: [arm64] cpu: [arm64]
os: [linux] os: [linux]
requiresBuild: true requiresBuild: true
optional: true optional: true
/@swc/core-linux-x64-gnu@1.4.8: /@swc/core-linux-x64-gnu@1.4.11:
resolution: {integrity: sha512-0WWyIw432wpO/zeGblwq4f2YWam4pn8Z/Ig4KzHMgthR/KmiLU3f0Z7eo45eVmq5vcU7Os1zi/Zb65OOt09q/w==} resolution: {integrity: sha512-WA1iGXZ2HpqM1OR9VCQZJ8sQ1KP2or9O4bO8vWZo6HZJIeoQSo7aa9waaCLRpkZvkng1ct/TF/l6ymqSNFXIzQ==}
engines: {node: '>=10'} engines: {node: '>=10'}
cpu: [x64] cpu: [x64]
os: [linux] os: [linux]
requiresBuild: true requiresBuild: true
optional: true optional: true
/@swc/core-linux-x64-musl@1.4.8: /@swc/core-linux-x64-musl@1.4.11:
resolution: {integrity: sha512-p4yxvVS05rBNCrBaSTa20KK88vOwtg8ifTW7ec/yoab0bD5EwzzB8KbDmLLxE6uziFa0sdjF0dfRDwSZPex37Q==} resolution: {integrity: sha512-UkVJToKf0owwQYRnGvjHAeYVDfeimCEcx0VQSbJoN7Iy0ckRZi7YPlmWJU31xtKvikE2bQWCOVe0qbSDqqcWXA==}
engines: {node: '>=10'} engines: {node: '>=10'}
cpu: [x64] cpu: [x64]
os: [linux] os: [linux]
requiresBuild: true requiresBuild: true
optional: true optional: true
/@swc/core-win32-arm64-msvc@1.4.8: /@swc/core-win32-arm64-msvc@1.4.11:
resolution: {integrity: sha512-jKuXihxAaqUnbFfvPxtmxjdJfs87F1GdBf33il+VUmSyWCP4BE6vW+/ReDAe8sRNsKyrZ3UH1vI5q1n64csBUA==} resolution: {integrity: sha512-35khwkyly7lF5NDSyvIrukBMzxPorgc5iTSDfVO/LvnmN5+fm4lTlrDr4tUfTdOhv3Emy7CsKlsNAeFRJ+Pm+w==}
engines: {node: '>=10'} engines: {node: '>=10'}
cpu: [arm64] cpu: [arm64]
os: [win32] os: [win32]
requiresBuild: true requiresBuild: true
optional: true optional: true
/@swc/core-win32-ia32-msvc@1.4.8: /@swc/core-win32-ia32-msvc@1.4.11:
resolution: {integrity: sha512-O0wT4AGHrX8aBeH6c2ADMHgagAJc5Kf6W48U5moyYDAkkVnKvtSc4kGhjWhe1Yl0sI0cpYh2In2FxvYsb44eWw==} resolution: {integrity: sha512-Wx8/6f0ufgQF2pbVPsJ2dAmFLwIOW+xBE5fxnb7VnEbGkTgP1qMDWiiAtD9rtvDSuODG3i1AEmAak/2HAc6i6A==}
engines: {node: '>=10'} engines: {node: '>=10'}
cpu: [ia32] cpu: [ia32]
os: [win32] os: [win32]
requiresBuild: true requiresBuild: true
optional: true optional: true
/@swc/core-win32-x64-msvc@1.4.8: /@swc/core-win32-x64-msvc@1.4.11:
resolution: {integrity: sha512-C2AYc3A2o+ECciqsJWRgIpp83Vk5EaRzHe7ed/xOWzVd0MsWR+fweEsyOjlmzHfpUxJSi46Ak3/BIZJlhZbXbg==} resolution: {integrity: sha512-0xRFW6K9UZQH2NVC/0pVB0GJXS45lY24f+6XaPBF1YnMHd8A8GoHl7ugyM5yNUTe2AKhSgk5fJV00EJt/XBtdQ==}
engines: {node: '>=10'} engines: {node: '>=10'}
cpu: [x64] cpu: [x64]
os: [win32] os: [win32]
requiresBuild: true requiresBuild: true
optional: true optional: true
/@swc/core@1.4.8: /@swc/core@1.4.11:
resolution: {integrity: sha512-uY2RSJcFPgNOEg12RQZL197LZX+MunGiKxsbxmh22VfVxrOYGRvh4mPANFlrD1yb38CgmW1wI6YgIi8LkIwmWg==} resolution: {integrity: sha512-WKEakMZxkVwRdgMN4AMJ9K5nysY8g8npgQPczmjBeNK5In7QEAZAJwnyccrWwJZU0XjVeHn2uj+XbOKdDW17rg==}
engines: {node: '>=10'} engines: {node: '>=10'}
requiresBuild: true requiresBuild: true
peerDependencies: peerDependencies:
@ -3643,30 +3643,26 @@ packages:
optional: true optional: true
dependencies: dependencies:
'@swc/counter': 0.1.3 '@swc/counter': 0.1.3
'@swc/types': 0.1.5 '@swc/types': 0.1.6
optionalDependencies: optionalDependencies:
'@swc/core-darwin-arm64': 1.4.8 '@swc/core-darwin-arm64': 1.4.11
'@swc/core-darwin-x64': 1.4.8 '@swc/core-darwin-x64': 1.4.11
'@swc/core-linux-arm-gnueabihf': 1.4.8 '@swc/core-linux-arm-gnueabihf': 1.4.11
'@swc/core-linux-arm64-gnu': 1.4.8 '@swc/core-linux-arm64-gnu': 1.4.11
'@swc/core-linux-arm64-musl': 1.4.8 '@swc/core-linux-arm64-musl': 1.4.11
'@swc/core-linux-x64-gnu': 1.4.8 '@swc/core-linux-x64-gnu': 1.4.11
'@swc/core-linux-x64-musl': 1.4.8 '@swc/core-linux-x64-musl': 1.4.11
'@swc/core-win32-arm64-msvc': 1.4.8 '@swc/core-win32-arm64-msvc': 1.4.11
'@swc/core-win32-ia32-msvc': 1.4.8 '@swc/core-win32-ia32-msvc': 1.4.11
'@swc/core-win32-x64-msvc': 1.4.8 '@swc/core-win32-x64-msvc': 1.4.11
/@swc/counter@0.1.3: /@swc/counter@0.1.3:
resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==}
/@swc/types@0.1.5:
resolution: {integrity: sha512-myfUej5naTBWnqOCc/MdVOLVjXUXtIA+NpDrDBKJtLLg2shUjBu3cZmB/85RyitKc55+lUUyl7oRfLOvkr2hsw==}
/@swc/types@0.1.6: /@swc/types@0.1.6:
resolution: {integrity: sha512-/JLo/l2JsT/LRd80C3HfbmVpxOAJ11FO2RCEslFrgzLltoP9j8XIbsyDcfCt2WWyX+CM96rBoNM+IToAkFOugg==} resolution: {integrity: sha512-/JLo/l2JsT/LRd80C3HfbmVpxOAJ11FO2RCEslFrgzLltoP9j8XIbsyDcfCt2WWyX+CM96rBoNM+IToAkFOugg==}
dependencies: dependencies:
'@swc/counter': 0.1.3 '@swc/counter': 0.1.3
dev: true
/@swc/wasm@1.2.130: /@swc/wasm@1.2.130:
resolution: {integrity: sha512-rNcJsBxS70+pv8YUWwf5fRlWX6JoY/HJc25HD/F8m6Kv7XhJdqPPMhyX6TKkUBPAG7TWlZYoxa+rHAjPy4Cj3Q==} resolution: {integrity: sha512-rNcJsBxS70+pv8YUWwf5fRlWX6JoY/HJc25HD/F8m6Kv7XhJdqPPMhyX6TKkUBPAG7TWlZYoxa+rHAjPy4Cj3Q==}
@ -4790,14 +4786,14 @@ packages:
- supports-color - supports-color
dev: true dev: true
/@vitejs/plugin-vue@5.0.4(vite@5.2.4)(vue@3.4.21): /@vitejs/plugin-vue@5.0.4(vite@5.2.6)(vue@3.4.21):
resolution: {integrity: sha512-WS3hevEszI6CEVEx28F8RjTX97k3KsrcY6kvTg7+Whm5y3oYvcqzVeGCU3hxSAn4uY2CLCkeokkGKpoctccilQ==} resolution: {integrity: sha512-WS3hevEszI6CEVEx28F8RjTX97k3KsrcY6kvTg7+Whm5y3oYvcqzVeGCU3hxSAn4uY2CLCkeokkGKpoctccilQ==}
engines: {node: ^18.0.0 || >=20.0.0} engines: {node: ^18.0.0 || >=20.0.0}
peerDependencies: peerDependencies:
vite: ^5.0.0 vite: ^5.0.0
vue: ^3.2.25 vue: ^3.2.25
dependencies: dependencies:
vite: 5.2.4(@types/node@20.11.30)(sass@1.72.0) vite: 5.2.6(@types/node@20.11.30)(sass@1.72.0)
vue: 3.4.21(typescript@5.4.3) vue: 3.4.21(typescript@5.4.3)
dev: true dev: true
@ -4822,7 +4818,7 @@ packages:
resolution: {integrity: sha512-aNmNHyLPsw+sVvlQFQ2/8sjNuLtK54TC6cuKnVzAY93ks4ZBrvwQSnkkIh7bsbNhum5hJBS00wSDipQ937f5DA==} resolution: {integrity: sha512-aNmNHyLPsw+sVvlQFQ2/8sjNuLtK54TC6cuKnVzAY93ks4ZBrvwQSnkkIh7bsbNhum5hJBS00wSDipQ937f5DA==}
dependencies: dependencies:
'@babel/parser': 7.23.9 '@babel/parser': 7.23.9
postcss: 8.4.35 postcss: 8.4.38
source-map: 0.6.1 source-map: 0.6.1
dev: true dev: true
@ -5658,8 +5654,8 @@ packages:
resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==}
engines: {node: '>= 0.4'} engines: {node: '>= 0.4'}
/aws-sdk@2.1584.0: /aws-sdk@2.1585.0:
resolution: {integrity: sha512-57Qizb+bLOhrBLWQSWw6WXTtbO/lFKzLouHxTfm/QeXm38gs0Q0knFxhdH+sWc/DPPJYSRGy7MNiuQcmsq5zxA==} resolution: {integrity: sha512-zDJ76hivdnBLH2+hXTO0F5y3Sdx5RRSDCf4EqZILZCUkPLTwaVmKmaU6XO3pyhrMTcWk58m7UBgHFyARE5SCkQ==}
engines: {node: '>= 10.0.0'} engines: {node: '>= 10.0.0'}
requiresBuild: true requiresBuild: true
dependencies: dependencies:
@ -6272,8 +6268,8 @@ packages:
dev: false dev: false
optional: true optional: true
/cbor-x@1.5.8: /cbor-x@1.5.9:
resolution: {integrity: sha512-gc3bHBsvG6GClCY6c0/iip+ghlqizkVp+TtaL927lwvP4VP9xBdi1HmqPR5uj/Mj/0TOlngMkIYa25wKg+VNrQ==} resolution: {integrity: sha512-OEI5rEu3MeR0WWNUXuIGkxmbXVhABP+VtgAXzm48c9ulkrsvxshjjk94XSOGphyAKeNGLPfAxxzEtgQ6rEVpYQ==}
optionalDependencies: optionalDependencies:
cbor-extract: 2.2.0 cbor-extract: 2.2.0
dev: false dev: false
@ -7581,6 +7577,7 @@ packages:
/detect-libc@2.0.2: /detect-libc@2.0.2:
resolution: {integrity: sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==} resolution: {integrity: sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==}
engines: {node: '>=8'} engines: {node: '>=8'}
dev: true
/detect-libc@2.0.3: /detect-libc@2.0.3:
resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==} resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==}
@ -10087,8 +10084,8 @@ packages:
engines: {node: '>=0.8.0'} engines: {node: '>=0.8.0'}
dev: true dev: true
/happy-dom@14.3.1: /happy-dom@14.3.8:
resolution: {integrity: sha512-uv2mE7jUH0S3cTnDPqNQj+J+Z5wOevqzopc7e8URXtcCH2STubCjPFVyEJ1ONGSv/aL/uvNwo5WWjsinpWpADQ==} resolution: {integrity: sha512-jP7p/VQJ08lbIoCsw1Adna3RA86eE+2CNkqvJRWIhrKP7XKZ0e0s2TJSt5lwGS4b7x0z0Ztw0A9P4uQGMHPiiA==}
engines: {node: '>=16.0.0'} engines: {node: '>=16.0.0'}
dependencies: dependencies:
entities: 4.5.0 entities: 4.5.0
@ -11272,7 +11269,7 @@ packages:
pretty-format: 29.7.0 pretty-format: 29.7.0
slash: 3.0.0 slash: 3.0.0
strip-json-comments: 3.1.1 strip-json-comments: 3.1.1
ts-node: 10.9.2(@swc/core@1.4.8)(@types/node@20.11.30)(typescript@5.4.3) ts-node: 10.9.2(@swc/core@1.4.11)(@types/node@20.11.30)(typescript@5.4.3)
transitivePeerDependencies: transitivePeerDependencies:
- babel-plugin-macros - babel-plugin-macros
- supports-color - supports-color
@ -11867,8 +11864,8 @@ packages:
safe-buffer: 5.2.1 safe-buffer: 5.2.1
dev: false dev: false
/katex@0.16.9: /katex@0.16.10:
resolution: {integrity: sha512-fsSYjWS0EEOwvy81j3vRA8TEAhQhKiqO+FQaKWp0m39qwOzHVBgAUBIXWj1pB+O2W3fIpNa6Y9KSKCVbfPhyAQ==} resolution: {integrity: sha512-ZiqaC04tp2O5utMsl2TEZTXxa6WSC4yo0fv5ML++D3QZv/vx2Mct0mTlRx3O+uUkjfuAgOkzsCmq5MiUEsDDdA==}
hasBin: true hasBin: true
dependencies: dependencies:
commander: 8.3.0 commander: 8.3.0
@ -13077,7 +13074,7 @@ packages:
hasBin: true hasBin: true
requiresBuild: true requiresBuild: true
dependencies: dependencies:
detect-libc: 2.0.2 detect-libc: 2.0.3
dev: false dev: false
optional: true optional: true
@ -16027,15 +16024,15 @@ packages:
whet.extend: 0.9.9 whet.extend: 0.9.9
dev: false dev: false
/swc-loader@0.2.6(@swc/core@1.4.8)(webpack@5.91.0): /swc-loader@0.2.6(@swc/core@1.4.11)(webpack@5.91.0):
resolution: {integrity: sha512-9Zi9UP2YmDpgmQVbyOPJClY0dwf58JDyDMQ7uRc4krmc72twNI2fvlBWHLqVekBpPc7h5NJkGVT1zNDxFrqhvg==} resolution: {integrity: sha512-9Zi9UP2YmDpgmQVbyOPJClY0dwf58JDyDMQ7uRc4krmc72twNI2fvlBWHLqVekBpPc7h5NJkGVT1zNDxFrqhvg==}
peerDependencies: peerDependencies:
'@swc/core': ^1.2.147 '@swc/core': ^1.2.147
webpack: '>=2' webpack: '>=2'
dependencies: dependencies:
'@swc/core': 1.4.8 '@swc/core': 1.4.11
'@swc/counter': 0.1.3 '@swc/counter': 0.1.3
webpack: 5.91.0(@swc/core@1.4.8) webpack: 5.91.0(@swc/core@1.4.11)
dev: true dev: true
/swiper@11.0.7: /swiper@11.0.7:
@ -16122,7 +16119,7 @@ packages:
engines: {node: '>=14.16'} engines: {node: '>=14.16'}
dev: true dev: true
/terser-webpack-plugin@5.3.10(@swc/core@1.4.8)(webpack@5.91.0): /terser-webpack-plugin@5.3.10(@swc/core@1.4.11)(webpack@5.91.0):
resolution: {integrity: sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==} resolution: {integrity: sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==}
engines: {node: '>= 10.13.0'} engines: {node: '>= 10.13.0'}
peerDependencies: peerDependencies:
@ -16139,12 +16136,12 @@ packages:
optional: true optional: true
dependencies: dependencies:
'@jridgewell/trace-mapping': 0.3.20 '@jridgewell/trace-mapping': 0.3.20
'@swc/core': 1.4.8 '@swc/core': 1.4.11
jest-worker: 27.5.1 jest-worker: 27.5.1
schema-utils: 3.3.0 schema-utils: 3.3.0
serialize-javascript: 6.0.1 serialize-javascript: 6.0.1
terser: 5.27.0 terser: 5.27.0
webpack: 5.91.0(@swc/core@1.4.8) webpack: 5.91.0(@swc/core@1.4.11)
dev: true dev: true
/terser@5.19.2: /terser@5.19.2:
@ -16466,10 +16463,10 @@ packages:
semver: 7.6.0 semver: 7.6.0
source-map: 0.7.4 source-map: 0.7.4
typescript: 5.4.3 typescript: 5.4.3
webpack: 5.91.0(@swc/core@1.4.8) webpack: 5.91.0(@swc/core@1.4.11)
dev: true dev: true
/ts-node@10.9.2(@swc/core@1.4.8)(@types/node@20.11.30)(typescript@5.4.3): /ts-node@10.9.2(@swc/core@1.4.11)(@types/node@20.11.30)(typescript@5.4.3):
resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==}
hasBin: true hasBin: true
peerDependencies: peerDependencies:
@ -16484,7 +16481,7 @@ packages:
optional: true optional: true
dependencies: dependencies:
'@cspotcode/source-map-support': 0.8.1 '@cspotcode/source-map-support': 0.8.1
'@swc/core': 1.4.8 '@swc/core': 1.4.11
'@tsconfig/node10': 1.0.9 '@tsconfig/node10': 1.0.9
'@tsconfig/node12': 1.0.11 '@tsconfig/node12': 1.0.11
'@tsconfig/node14': 1.0.3 '@tsconfig/node14': 1.0.3
@ -16772,7 +16769,7 @@ packages:
pg: 8.11.3 pg: 8.11.3
reflect-metadata: 0.2.1 reflect-metadata: 0.2.1
sha.js: 2.4.11 sha.js: 2.4.11
ts-node: 10.9.2(@swc/core@1.4.8)(@types/node@20.11.30)(typescript@5.4.3) ts-node: 10.9.2(@swc/core@1.4.11)(@types/node@20.11.30)(typescript@5.4.3)
tslib: 2.6.1 tslib: 2.6.1
uuid: 9.0.1 uuid: 9.0.1
yargs: 17.7.2 yargs: 17.7.2
@ -17116,7 +17113,7 @@ packages:
replace-ext: 1.0.1 replace-ext: 1.0.1
dev: false dev: false
/vite-plugin-compression@0.5.1(vite@5.2.4): /vite-plugin-compression@0.5.1(vite@5.2.6):
resolution: {integrity: sha512-5QJKBDc+gNYVqL/skgFAP81Yuzo9R+EAf19d+EtsMF/i8kFUpNi3J/H01QD3Oo8zBQn+NzoCIFkpPLynoOzaJg==} resolution: {integrity: sha512-5QJKBDc+gNYVqL/skgFAP81Yuzo9R+EAf19d+EtsMF/i8kFUpNi3J/H01QD3Oo8zBQn+NzoCIFkpPLynoOzaJg==}
peerDependencies: peerDependencies:
vite: '>=2.0.0' vite: '>=2.0.0'
@ -17124,13 +17121,13 @@ packages:
chalk: 4.1.2 chalk: 4.1.2
debug: 4.3.4(supports-color@8.1.1) debug: 4.3.4(supports-color@8.1.1)
fs-extra: 10.1.0 fs-extra: 10.1.0
vite: 5.2.4(@types/node@20.11.30)(sass@1.72.0) vite: 5.2.6(@types/node@20.11.30)(sass@1.72.0)
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
dev: true dev: true
/vite@5.2.4(@types/node@20.11.30)(sass@1.72.0): /vite@5.2.6(@types/node@20.11.30)(sass@1.72.0):
resolution: {integrity: sha512-vjFghvHWidBTinu5TCymJk/lRHlR5ljqB83yugr0HA1xspUPdOZHqbqDLnZ8f9/jINrtFHTCYYyIUi+o+Q5iyg==} resolution: {integrity: sha512-FPtnxFlSIKYjZ2eosBQamz4CbyrTizbZ3hnGJlh/wMtCrlp1Hah6AzBLjGI5I2urTfNnpovpHdrL6YRuBOPnCA==}
engines: {node: ^18.0.0 || >=20.0.0} engines: {node: ^18.0.0 || >=20.0.0}
hasBin: true hasBin: true
peerDependencies: peerDependencies:
@ -17340,7 +17337,7 @@ packages:
engines: {node: '>=10.13.0'} engines: {node: '>=10.13.0'}
dev: true dev: true
/webpack@5.91.0(@swc/core@1.4.8): /webpack@5.91.0(@swc/core@1.4.11):
resolution: {integrity: sha512-rzVwlLeBWHJbmgTC/8TvAcu5vpJNII+MelQpylD4jNERPwpBJOE2lEcko1zJX3QJeLjTTAnQxn/OJ8bjDzVQaw==} resolution: {integrity: sha512-rzVwlLeBWHJbmgTC/8TvAcu5vpJNII+MelQpylD4jNERPwpBJOE2lEcko1zJX3QJeLjTTAnQxn/OJ8bjDzVQaw==}
engines: {node: '>=10.13.0'} engines: {node: '>=10.13.0'}
hasBin: true hasBin: true
@ -17371,7 +17368,7 @@ packages:
neo-async: 2.6.2 neo-async: 2.6.2
schema-utils: 3.3.0 schema-utils: 3.3.0
tapable: 2.2.1 tapable: 2.2.1
terser-webpack-plugin: 5.3.10(@swc/core@1.4.8)(webpack@5.91.0) terser-webpack-plugin: 5.3.10(@swc/core@1.4.11)(webpack@5.91.0)
watchpack: 2.4.1 watchpack: 2.4.1
webpack-sources: 3.2.3 webpack-sources: 3.2.3
transitivePeerDependencies: transitivePeerDependencies: