Merge branch 'develop' into ft/use-env-for-dburls
This commit is contained in:
commit
bc3a773cae
|
@ -0,0 +1,18 @@
|
|||
<!-- This template is used only when merging the develop branch into the main branch. Please don't use this for other merge requests. -->
|
||||
|
||||
## Checklist
|
||||
|
||||
- [ ] There are no pending changes on Weblate
|
||||
|
||||
I have updated...
|
||||
|
||||
- [ ] `package.json`
|
||||
- [ ] `docs/changelog.md`
|
||||
- [ ] `docs/notice-for-admins.md`
|
||||
- [ ] `docs/api-change.md`
|
||||
- [ ] OCI container image
|
||||
|
||||
<!-- TODO: Add automated tests (task runners are currently down) -->
|
||||
|
||||
## Remarks
|
||||
|
6
Makefile
6
Makefile
|
@ -1,7 +1,5 @@
|
|||
ifneq (dev,$(wildcard config.env))
|
||||
include ./dev/config.env
|
||||
export
|
||||
endif
|
||||
include ./dev/config.env
|
||||
export
|
||||
|
||||
|
||||
.PHONY: pre-commit
|
||||
|
|
|
@ -5,6 +5,16 @@ Critical security updates are indicated by the :warning: icon.
|
|||
- Server administrators should check [notice-for-admins.md](./notice-for-admins.md) as well.
|
||||
- Third-party client/bot developers may want to check [api-change.md](./api-change.md) as well.
|
||||
|
||||
## Unreleased
|
||||
|
||||
- Fix bugs
|
||||
|
||||
## [v20240326](https://firefish.dev/firefish/firefish/-/merge_requests/10713/commits)
|
||||
|
||||
- Fix bugs
|
||||
- Add an icon in the posting form to indicate that attached files have alt text
|
||||
- Add a toggleable setting to show a warning if the post language setting might be incorrect
|
||||
|
||||
## [v20240319](https://firefish.dev/firefish/firefish/-/compare/v20240301...v20240319?from_project_id=7&straight=false)
|
||||
|
||||
- Introduce new full-text search engine and post search filters
|
||||
|
|
|
@ -54,7 +54,7 @@
|
|||
POSTGRES_USER=user_name # user name
|
||||
POSTGRES_DB=database_name # database name
|
||||
```
|
||||
1. Change the image tag to `registry.firefish.dev/firefish/firefish:v20240206`
|
||||
1. Change Firefish image tag from `latest` to `v20240206`
|
||||
```sh
|
||||
vim docker-compose.yml
|
||||
```
|
||||
|
@ -66,6 +66,9 @@
|
|||
web:
|
||||
image: registry.firefish.dev/firefish/firefish:v20240206 # here
|
||||
```
|
||||
1. Change database image from `docker.io/groonga/pgroonga` to `docker.io/postgres`
|
||||
|
||||
Please make sure to use the same PostgreSQL version. For example, if you are using `docker.io/groonga/pgroonga:3.1.8-alpine-16`, you should change it to `docker.io/postgres:16-alpine`. PGroonga images are tagged as `{PGroonga version}-{alpine or debian}-{PostgreSQL major version}`. PostgreSQL image tags can be found at <https://hub.docker.com/_/postgres/tags>.
|
||||
1. Start the container and confirm that Firefish is downgraded
|
||||
```sh
|
||||
docker-compose up --detach
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
BEGIN;
|
||||
|
||||
DELETE FROM "migrations" WHERE name IN (
|
||||
'markLocalFilesNsfwByDefault1709305200000',
|
||||
'FixMutingIndices1710690239308',
|
||||
'NoteFile1710304584214',
|
||||
'RenameMetaColumns1705944717480',
|
||||
|
@ -18,6 +19,9 @@ DELETE FROM "migrations" WHERE name IN (
|
|||
'RemoveNativeUtilsMigration1705877093218'
|
||||
);
|
||||
|
||||
-- markLocalFilesNsfwByDefault
|
||||
ALTER TABLE "meta" DROP COLUMN "markLocalFilesNsfwByDefault";
|
||||
|
||||
-- fix-muting-indices
|
||||
DROP INDEX "IDX_renote_muting_createdAt";
|
||||
DROP INDEX "IDX_renote_muting_muteeId";
|
||||
|
|
|
@ -33,6 +33,13 @@ docker pull registry.firefish.dev/firefish/firefish:latest
|
|||
# or podman pull registry.firefish.dev/firefish/firefish:latest
|
||||
```
|
||||
|
||||
## Enable database extension
|
||||
|
||||
```sh
|
||||
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 && sleep 5 && podman-compose exec db sh -c 'psql --user="${POSTGRES_USER}" --dbname="${POSTGRES_DB}" --command="CREATE EXTENSION pgroonga;"'
|
||||
```
|
||||
|
||||
## Run
|
||||
|
||||
```sh
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
You can skip intermediate versions when upgrading from an old version, but please read the notices and follow the instructions for each intermediate version before [upgrading](./upgrade.md).
|
||||
|
||||
## Unreleased
|
||||
## v20240326
|
||||
|
||||
### For Docker/Podman users
|
||||
|
||||
|
@ -17,7 +17,9 @@ The full-text search engine used in Firefish has been changed to [PGroonga](http
|
|||
- Required Node.js version has been bumped from v18.16.0 to v18.17.0.
|
||||
- You need to install PGroonga on your system. Please follow the instructions below.
|
||||
|
||||
[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 (2024/03/25 22:31 UTC+9)] The Apache Arrow repository is now back up and running again.
|
||||
|
||||
#### 1. Install PGroonga
|
||||
|
||||
|
@ -33,7 +35,7 @@ There are official installation instructions for many operating systems on <http
|
|||
|
||||
##### Ubuntu
|
||||
|
||||
1. Add apt repository
|
||||
1. Install subdependencies and add apt repository
|
||||
```sh
|
||||
sudo apt install -y software-properties-common
|
||||
sudo add-apt-repository -y universe
|
||||
|
@ -129,8 +131,8 @@ db:
|
|||
After that, execute this command to enable PGroonga:
|
||||
|
||||
```sh
|
||||
docker-compose up db --detach && 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;"'
|
||||
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 && 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.
|
||||
|
@ -224,7 +226,7 @@ A new setting item has been added to control the log levels, so please consider
|
|||
### For systemd/pm2 users
|
||||
|
||||
- Required Rust version has been bumped from v1.68 to v1.70.
|
||||
- `libvips` is no longer required (unless your server os is *BSD), so you may uninstall it from your system. Make sure to execute the following commands after that:
|
||||
- `libvips` is no longer required (unless your server OS is *BSD), so you may uninstall it from your system. Make sure to execute the following commands after that:
|
||||
```sh
|
||||
pnpm clean-npm
|
||||
pnpm install
|
||||
|
|
|
@ -9,14 +9,14 @@ notifications: "Notificacions"
|
|||
username: "Nom d'usuari"
|
||||
password: "Contrasenya"
|
||||
forgotPassword: "Contrasenya oblidada"
|
||||
fetchingAsApObject: "Cercant en el Fediverse"
|
||||
fetchingAsApObject: "Obtenint des de el Fediverse"
|
||||
ok: "D'acord"
|
||||
gotIt: "Ho he entès!"
|
||||
cancel: "Cancel·la"
|
||||
enterUsername: "Introdueix el teu nom d'usuari"
|
||||
renotedBy: "Impulsat per {user}"
|
||||
noNotes: "Cap publicació"
|
||||
noNotifications: "Cap notificació"
|
||||
noNotes: "Sense publicacions"
|
||||
noNotifications: "Sense notificacions"
|
||||
instance: "Servidor"
|
||||
settings: "Preferències"
|
||||
basicSettings: "Configuració bàsica"
|
||||
|
@ -35,23 +35,23 @@ users: "Usuaris"
|
|||
addUser: "Afegeix un usuari"
|
||||
favorite: "Afegeix a les adreces d'interès"
|
||||
favorites: "Adreces d'interès"
|
||||
unfavorite: "Eliminar de les adreces d'interès"
|
||||
favorited: "Afegit a les adreces d'interès."
|
||||
alreadyFavorited: "Ja es troba a les adreces d'interès."
|
||||
unfavorite: "Suprimeix de les adreces d'interès"
|
||||
favorited: "S'ha afegit 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."
|
||||
pin: "Fixar al perfil"
|
||||
unpin: "Deixa de fixar al perfil"
|
||||
pin: "Fixa al perfil"
|
||||
unpin: "No fixis al perfil"
|
||||
copyContent: "Copia el contingut"
|
||||
copyLink: "Copia l'enllaç"
|
||||
delete: "Elimina"
|
||||
deleteAndEdit: "Elimina i edita"
|
||||
deleteAndEditConfirm: "Segur que vols eliminar la publicació i editar-la? Perdràs
|
||||
delete: "Suprimeix"
|
||||
deleteAndEdit: "Suprimeix i edita"
|
||||
deleteAndEditConfirm: "Segur que vols suprimir aquesta publicació i editar-la? Perdràs
|
||||
totes les reaccions, impulsos i respostes."
|
||||
addToList: "Afegeix a la llista"
|
||||
sendMessage: "Envia un missatge"
|
||||
copyUsername: "Copia el nom d'usuari"
|
||||
searchUser: "Cerca un usuari"
|
||||
reply: "Respon"
|
||||
reply: "Resposta"
|
||||
loadMore: "Carrega'n més"
|
||||
showMore: "Mostra'n més"
|
||||
youGotNewFollower: "t'ha seguit"
|
||||
|
@ -66,20 +66,20 @@ export: "Exporta"
|
|||
files: "Fitxers"
|
||||
download: "Baixa"
|
||||
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}?"
|
||||
exportRequested: "Has demanat exportar dades. Això pot trigar una estona. S'afegirà
|
||||
al teu Disc un cop completada."
|
||||
importRequested: "Has demanat importar dades. Això pot trigar una estona."
|
||||
exportRequested: "Has sol·licitat una exportació. Això pot trigar una estona. S'afegirà
|
||||
al teu Disc un cop finalitzada."
|
||||
importRequested: "Has sol·licitat una importació de dades. Això pot trigar una estona."
|
||||
lists: "Llistes"
|
||||
noLists: "No tens cap llista"
|
||||
note: "Publica"
|
||||
note: "Publicació"
|
||||
notes: "Publicacions"
|
||||
following: "Seguint"
|
||||
followers: "Seguidors"
|
||||
followsYou: "Et segueix"
|
||||
createList: "Crear una llista"
|
||||
manageLists: "Gestionar les llistes"
|
||||
createList: "Crea una llista"
|
||||
manageLists: "Gestiona les llistes"
|
||||
error: "Error"
|
||||
somethingHappened: "S'ha produït un error"
|
||||
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
|
||||
el vostre client."
|
||||
enterListName: "Introdueix un nom per a la llista"
|
||||
privacy: "Privadesa"
|
||||
privacy: "Privacitat"
|
||||
makeFollowManuallyApprove: "Les sol·licituds de seguiment requereixen aprovació"
|
||||
defaultNoteVisibility: "Visibilitat per defecte"
|
||||
follow: "Segueix"
|
||||
|
@ -135,7 +135,7 @@ userList: "Llistes"
|
|||
smtpUser: "Nom d'usuari"
|
||||
smtpPass: "Contrasenya"
|
||||
user: "Usuari"
|
||||
searchByGoogle: "Cercar"
|
||||
searchByGoogle: "Cerca"
|
||||
file: "Fitxer"
|
||||
_email:
|
||||
_follow:
|
||||
|
@ -145,7 +145,7 @@ _email:
|
|||
_mfm:
|
||||
mention: "Menció"
|
||||
quote: "Citar"
|
||||
search: "Cercar"
|
||||
search: "Cerca"
|
||||
dummy: Firefish amplia el món del Fediverse
|
||||
hashtag: Etiqueta
|
||||
intro: MFM és un llenguatge de marques utilitzat a Misskey, Firefish, Akkoma i més
|
||||
|
@ -2066,7 +2066,7 @@ _relayStatus:
|
|||
rejected: Rebutjat
|
||||
deleted: Eliminat
|
||||
editNote: Edita la publicació
|
||||
edited: 'Editat el {date} {time}'
|
||||
edited: 'Editat a les {time} {date}'
|
||||
signupsDisabled: Actualment, les inscripcions en aquest servidor estan desactivades.
|
||||
Si teniu un codi d'invitació per a aquest servidor, introduïu-lo a continuació.
|
||||
userSaysSomethingReasonQuote: '{name} ha citat una publicació que conté {reason}'
|
||||
|
@ -2096,7 +2096,7 @@ newer: Més nou
|
|||
older: Més antic
|
||||
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.
|
||||
jumpToPrevious: Vés a l'anterior
|
||||
jumpToPrevious: Salta a l'anterior
|
||||
cw: Avís de contingut
|
||||
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."
|
||||
|
@ -2104,7 +2104,7 @@ expandOnNoteClick: Obre la publicació amb un clic
|
|||
expandOnNoteClickDesc: Si està desactivat, encara pots obrir les publicacions al menú
|
||||
del botó dret o fent clic a la marca de temps.
|
||||
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
|
||||
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
|
||||
|
@ -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
|
||||
d'escriure-les?
|
||||
showNoAltTextWarning: Mostra un avís si públiques un fitxer sense descripció
|
||||
toReply: Respon
|
||||
toQuote: Cita
|
||||
toReply: Resposta
|
||||
toQuote: Citar
|
||||
toEdit: Edita
|
||||
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
|
||||
|
@ -2285,3 +2285,12 @@ searchRangeDescription: "Si vols filtrar per un període de temps, has de fer se
|
|||
moderationNote: Nota de moderació
|
||||
ipFirstAcknowledged: Data en què es va veure la adreça IP per primera vegada
|
||||
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
|
||||
|
|
|
@ -174,6 +174,9 @@ cacheRemoteFiles: "Cache remote files"
|
|||
cacheRemoteFilesDescription: "When this setting is disabled, remote files are loaded
|
||||
directly from the remote server. Disabling this will decrease storage usage, but
|
||||
increase traffic, as thumbnails will not be generated."
|
||||
markLocalFilesNsfwByDefault: "Mark all new local file as sensitive by default"
|
||||
markLocalFilesNsfwByDefaultDescription: "Regardless of this setting, users can remove
|
||||
the NSFW flag themselves. Existing files are unaffected."
|
||||
flagAsBot: "Mark this account as automated"
|
||||
flagAsBotDescription: "Enable this option if this account is controlled by a program.
|
||||
If enabled, it will act as a flag for other developers to prevent endless interaction
|
||||
|
@ -1193,16 +1196,16 @@ releaseToReload: "Release to reload"
|
|||
reloading: "Reloading"
|
||||
enableTimelineStreaming: "Update timelines automatically"
|
||||
searchWords: "Words to search / ID or URL to lookup"
|
||||
searchWordsDescription: "Enter the search term here to search for posts. Separate words
|
||||
with a space for an AND search, or 'OR' (without quotes) between words for an OR
|
||||
search.\nFor example, 'morning night' will find posts that contain both 'morning'
|
||||
searchWordsDescription: "Enter the search term here to search for posts. Separate
|
||||
words with a space for an AND search, or 'OR' (without quotes) between words for
|
||||
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'
|
||||
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
|
||||
must put it in double quotes, not to make it an AND search: \"Today I learned\"\n\n
|
||||
If you want to go to a specific user page or post page, enter
|
||||
the ID or URL in this field and click the 'Lookup' button. Clicking 'Search' will
|
||||
search for posts that literally contain the ID/URL."
|
||||
night) sleepy'.\nIf you want to search for a sequence of words (e.g., a sentence),
|
||||
you must put it in double quotes, not to make it an AND search: \"Today I learned\"\
|
||||
\n\n If you want to go to a specific user page or post page, enter the ID or URL
|
||||
in this field and click the 'Lookup' button. Clicking 'Search' will search for posts
|
||||
that literally contain the ID/URL."
|
||||
searchUsers: "Posted by (optional)"
|
||||
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
|
||||
|
@ -2227,3 +2230,7 @@ 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/"
|
||||
messagingUnencryptedInfo: "Chats on Firefish are not end-to-end encrypted. Don't share
|
||||
any sensitive infomation over Firefish."
|
||||
autocorrectNoteLanguage: "Show a warning if the post language does not match the auto-detected
|
||||
result"
|
||||
incorrectLanguageWarning: "It looks like your post is in {detected}, but you selected
|
||||
{current}.\nWould you like to set the language to {detected} instead?"
|
||||
|
|
|
@ -2277,15 +2277,18 @@ searchPostsWithFiles: Publications uniquement avec fichiers
|
|||
publishTimelines: Publier les fils d'actualité pour les visiteurs
|
||||
publishTimelinesDescription: Si cette option est activée, les fils Local et Global
|
||||
sera affichée sur {url} même en cas de déconnexion.
|
||||
searchWordsDescription: "Pour rechercher des publications, saisissez le terme de recherche.
|
||||
Des mots séparés avec un espace pour une recherche ET, ou « OR » (sans citations)
|
||||
searchWordsDescription: "Saisissez le terme de recherche ici pour rechercher des publications.
|
||||
Séparez les mots avec un espace pour une recherche ET, ou « OR » (sans guillemets)
|
||||
entre des mots pour une recherche OU.\nPar exemple, « matin nuit » trouvera des
|
||||
publications contenant à la fois « matin » et « nuit », et « matin ou nuit » trouveront
|
||||
des messages qui contiennent soit « matin » ou « nuit » (ou les deux).\nVous pouvez
|
||||
également combiner des conditions ET/OU comme « (matin OR nuit) ensommeillé ».\n
|
||||
\nSi vous souhaitez accéder à une page d'utilisateur ou à une page d'affichage spécifique,
|
||||
saisissez l'ID ou l'URL dans ce champ et cliquez sur le bouton « Rechercher ». Cliquez
|
||||
sur « Rechercher » recherchera des messages qui contiennent littéralement l'ID/URL."
|
||||
Si vous voulez chercher une séquence de mots (par exemple, une phrase), vous devez
|
||||
le mettre en double citations, pour ne pas en faire une recherche ET : \"Aujourd'hui
|
||||
j'ai appris\"\n\nSi vous souhaitez accéder à une page d'utilisateur ou à une page
|
||||
d'affichage spécifique, saisissez l'ID ou l'URL dans ce champ et cliquez sur le
|
||||
bouton « Rechercher ». Cliquez sur « Rechercher » recherchera des messages qui contiennent
|
||||
littéralement l'ID/URL."
|
||||
searchUsersDescription: "Pour rechercher des messages par un utilisateur/serveur spécifique,
|
||||
saisissez l'ID (@utilisateur@exemple.com, ou @utilisateur pour un utilisateur local)
|
||||
ou le nom de domaine (exemple.com).\n\nSi vous saisissez « me » (sans guillemets),
|
||||
|
@ -2312,3 +2315,12 @@ noAltTextWarning: Certains fichiers joints n'ont aucune description. Avez-vous o
|
|||
de l'écrire ?
|
||||
showNoAltTextWarning: Afficher un avertissement si vous essayez de publier des fichiers
|
||||
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.
|
||||
|
|
|
@ -2225,7 +2225,7 @@ searchPostsWithFiles: Hanya kiriman dengan berkas
|
|||
publishTimelines: Terbitkan lini masa untuk pengunjung
|
||||
publishTimelinesDescription: Jika diaktifkan, lini masa Lokal dan Global akan ditampilkan
|
||||
di {url} bahkan ketika keluar dari akun.
|
||||
searchWordsDescription: "Untuk mencari kiriman, masukkan istilah pencarian. Pisahkan
|
||||
searchWordsDescription: "Masukkan kata kunci di sini untuk mencari kiriman. Pisahkan
|
||||
kata dengan spasi untuk pencarian AND (dan), atau 'OR' ('atau', tanpa tanda kutip)
|
||||
di antara kata-kata untuk pencarian OR.\nMisalnya, 'pagi malam' akan menemukan postingan
|
||||
yang mengandung 'pagi' dan 'malam', dan 'pagi OR malam' akan menemukan postingan
|
||||
|
@ -2265,3 +2265,10 @@ messagingUnencryptedInfo: Percakapan di Firefish tidak terenkripsi secara ujung
|
|||
moderationNote: Catatan Moderasi
|
||||
driveCapacityOverride: Penimpaan Kapasitas Drive
|
||||
ipFirstAcknowledged: Tanggal akuisisi pertama dari alamat IP
|
||||
incorrectLanguageWarning: "Sepertinya kirimanmu dalam bahasa {detected}, tetapi Anda
|
||||
memilih {current}.\nApakah kamu ingin ubah bahasanya ke bahasa {detected} saja?"
|
||||
autocorrectNoteLanguage: Tampilkan peringatan jika bahasa kiriman tidak cocok dengan
|
||||
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.
|
||||
|
|
|
@ -2056,3 +2056,7 @@ messagingUnencryptedInfo: FirefishのチャットはE2E暗号化されていま
|
|||
moderationNote: モデレーション用のメモ
|
||||
ipFirstAcknowledged: IPアドレスが最初に取得された日
|
||||
driveCapacityOverride: ドライブ容量の変更
|
||||
autocorrectNoteLanguage: 設定した投稿言語が自動検出されたものと異なる場合に警告する
|
||||
incorrectLanguageWarning: "この投稿は{detected}で書かれていると判定されました。\n投稿言語を{current}ではなく{detected}にしますか?"
|
||||
markLocalFilesNsfwByDefault: このサーバーの全てのファイルをデフォルトでNSFWに設定する
|
||||
markLocalFilesNsfwByDefaultDescription: この設定が有効でも、ユーザーは自分でNSFWのフラグを外すことができます。また、この設定は既存のファイルには影響しません。
|
||||
|
|
|
@ -152,6 +152,8 @@ cacheRemoteFilesDescription: "当禁用此设定时远程文件将直接从远
|
|||
flagAsBot: "标记此账号为自动化账号"
|
||||
flagAsBotDescription: "如果此账号由程序控制,请启用此项。启用后,此标志可以帮助其它开发人员防止自动化账号之间产生无限互动的行为,并让 Firefish
|
||||
的内部系统将此账号识别为自动化账号。"
|
||||
markLocalFilesNsfwByDefault: "将所有新增本地文件默认标注为敏感内容"
|
||||
markLocalFilesNsfwByDefaultDescription: "无论此设置如何,用户都可以自行删除内容的敏感内容标志。现有文件也不受影响。"
|
||||
flagAsCat: "将这个账号设定为一只猫😺"
|
||||
flagAsCatDescription: "您会长出猫耳朵并像猫一样说话!"
|
||||
flagShowTimelineReplies: "在时间线上显示帖子的回复"
|
||||
|
@ -168,7 +170,7 @@ searchWith: "搜索:{q}"
|
|||
youHaveNoLists: "列表为空"
|
||||
followConfirm: "您确定要关注 {name} 吗?"
|
||||
proxyAccount: "代理账号"
|
||||
proxyAccountDescription: "代理账号是在某些情况下充当用户的远程关注者的账号。 例如,当一个用户添加一个远程用户为代理账号时,如果没有本地用户关注该用户,远程用户的活动将不会被传递到服务器,因此代理账号将被关注。"
|
||||
proxyAccountDescription: "代理账号是在某些情况下充当远程用户的关注者的账号。 例如,当一个用户把一个远程用户添加到列表时,如果没有本地用户关注该用户,远程用户的活动将不会被传递到服务器,为了避免此情况,代理账号将关注它。"
|
||||
host: "主机名"
|
||||
selectUser: "选择用户"
|
||||
recipient: "接收者"
|
||||
|
@ -849,7 +851,7 @@ auto: "自动"
|
|||
themeColor: "服务器滚动条颜色"
|
||||
size: "大小"
|
||||
numberOfColumn: "列数"
|
||||
searchByGoogle: "Google"
|
||||
searchByGoogle: "搜索"
|
||||
instanceDefaultLightTheme: "服务器默认浅色主题"
|
||||
instanceDefaultDarkTheme: "服务器默认深色主题"
|
||||
instanceDefaultThemeDescription: "以对象格式键入主题代码。"
|
||||
|
@ -2000,7 +2002,7 @@ _iconSets:
|
|||
bold: 加粗
|
||||
light: 减细
|
||||
emojiModPerm: 自定义表情符号管理权限
|
||||
squareCatAvatars: 猫模式账号显示圆形头像
|
||||
squareCatAvatars: 为猫账号显示方形头像图标
|
||||
makePrivate: 设为私有
|
||||
makePrivateConfirm: 此操作将向远程服务器发送删除请求并将可见性更改为私有。是否继续?
|
||||
_emojiModPerm:
|
||||
|
@ -2056,3 +2058,5 @@ searchRangeDescription: "如果您要过滤时间段,请按以下格式输入
|
|||
messagingUnencryptedInfo: "Firefish 上的聊天没有经过端到端加密,请不要在聊天中分享您的敏感信息。"
|
||||
noAltTextWarning: 有些附件没有描述。您是否忘记写描述了?
|
||||
showNoAltTextWarning: 当您尝试发布没有描述的帖子附件时显示警告
|
||||
autocorrectNoteLanguage: 当帖子语言不符合自动检测的结果的时候显示警告
|
||||
incorrectLanguageWarning: "看上去您帖子使用的语言是{detected},但您选择的语言是{current}。\n要改为以{detected}发帖吗?"
|
||||
|
|
|
@ -149,6 +149,8 @@ addEmoji: "加入表情符號"
|
|||
settingGuide: "推薦設定"
|
||||
cacheRemoteFiles: "快取遠端檔案"
|
||||
cacheRemoteFilesDescription: "禁用此設定會停止遠端檔案的緩存,從而節省儲存空間,但資料會因直接連線從而產生額外數據花費。"
|
||||
markLocalFilesNsfwByDefault: "將所有新增本地檔案預設標註為敏感內容"
|
||||
markLocalFilesNsfwByDefaultDescription: "無論此設置如何,使用者都可以自行刪除檔案的敏感內容標誌。現有檔案也不受影響。"
|
||||
flagAsBot: "標記此帳號為自動化帳號"
|
||||
flagAsBotDescription: "如果本帳戶是由程式控制,請啟用此選項。此選項將作為一個標示以幫助其他開發者防止自動化帳號之間產生無限互動的行為,並會調整Firefish內部系統將此帳號識別為自動化帳號。"
|
||||
flagAsCat: "你是喵咪嗎?w😺"
|
||||
|
@ -2054,3 +2056,5 @@ ipFirstAcknowledged: 首次取得此 IP 位址的日期
|
|||
driveCapacityOverride: 雲端硬碟容量變更
|
||||
showNoAltTextWarning: 在嘗試發佈包含沒有替代文字的貼文時顯示警告
|
||||
messagingUnencryptedInfo: Firefish 上的聊天沒有經過點對點加密,請不要發送敏感資訊。
|
||||
autocorrectNoteLanguage: 在設定的貼文語言不符合自動偵測的結果時顯示警告
|
||||
incorrectLanguageWarning: "此貼文的語言似乎為{detected},但您選擇的語言為{current}。\n要將貼文語言變更為{detected}嗎?"
|
||||
|
|
12
package.json
12
package.json
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "firefish",
|
||||
"version": "20240319",
|
||||
"version": "20240326",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://firefish.dev/firefish/firefish.git"
|
||||
|
@ -39,11 +39,11 @@
|
|||
"gulp-terser": "2.1.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@biomejs/biome": "1.6.2",
|
||||
"@biomejs/cli-darwin-arm64": "^1.6.2",
|
||||
"@biomejs/cli-darwin-x64": "^1.6.2",
|
||||
"@biomejs/cli-linux-arm64": "^1.6.2",
|
||||
"@biomejs/cli-linux-x64": "^1.6.2",
|
||||
"@biomejs/biome": "1.6.3",
|
||||
"@biomejs/cli-darwin-arm64": "^1.6.3",
|
||||
"@biomejs/cli-darwin-x64": "^1.6.3",
|
||||
"@biomejs/cli-linux-arm64": "^1.6.3",
|
||||
"@biomejs/cli-linux-x64": "^1.6.3",
|
||||
"@types/node": "20.11.30",
|
||||
"execa": "8.0.1",
|
||||
"pnpm": "8.15.5",
|
||||
|
|
|
@ -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/)
|
||||
- `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
|
||||
- `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
|
||||
|
|
|
@ -157,18 +157,18 @@ checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193"
|
|||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.53",
|
||||
"syn 2.0.55",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "async-trait"
|
||||
version = "0.1.78"
|
||||
version = "0.1.79"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "461abc97219de0eaaf81fe3ef974a540158f3d079c2ab200f891f1a2ef201e85"
|
||||
checksum = "a507401cad91ec6a857ed5513a2073c82a9b9048762b885bb98655b306964681"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.53",
|
||||
"syn 2.0.55",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -182,9 +182,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "autocfg"
|
||||
version = "1.1.0"
|
||||
version = "1.2.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
|
||||
checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80"
|
||||
|
||||
[[package]]
|
||||
name = "backend-rs"
|
||||
|
@ -326,7 +326,7 @@ dependencies = [
|
|||
"proc-macro-crate",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.53",
|
||||
"syn 2.0.55",
|
||||
"syn_derive",
|
||||
]
|
||||
|
||||
|
@ -411,9 +411,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "clap"
|
||||
version = "4.5.3"
|
||||
version = "4.5.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "949626d00e063efc93b6dca932419ceb5432f99769911c0b995f7e884c778813"
|
||||
checksum = "90bc066a67923782aa8515dbaea16946c5bcc5addbd668bb80af688e53e548a0"
|
||||
dependencies = [
|
||||
"clap_builder",
|
||||
"clap_derive",
|
||||
|
@ -433,14 +433,14 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "clap_derive"
|
||||
version = "4.5.3"
|
||||
version = "4.5.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "90239a040c80f5e14809ca132ddc4176ab33d5e17e49691793296e3fcb34d72f"
|
||||
checksum = "528131438037fd55894f62d6e9f068b8f45ac57ffa77517819645d10aed04f64"
|
||||
dependencies = [
|
||||
"heck 0.5.0",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.53",
|
||||
"syn 2.0.55",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -542,7 +542,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||
checksum = "ad291aa74992b9b7a7e88c38acbbf6ad7e107f1d90ee8775b7bc1fc3394f485c"
|
||||
dependencies = [
|
||||
"quote",
|
||||
"syn 2.0.53",
|
||||
"syn 2.0.55",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -688,9 +688,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "fastrand"
|
||||
version = "2.0.1"
|
||||
version = "2.0.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5"
|
||||
checksum = "658bd65b1cf4c852a3cc96f18a8ce7b5640f6b703f905c7d74532294c2a63984"
|
||||
|
||||
[[package]]
|
||||
name = "finl_unicode"
|
||||
|
@ -1066,7 +1066,7 @@ checksum = "0122b7114117e64a63ac49f752a5ca4624d534c7b1c7de796ac196381cd2d947"
|
|||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.53",
|
||||
"syn 2.0.55",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -1095,9 +1095,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "itoa"
|
||||
version = "1.0.10"
|
||||
version = "1.0.11"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c"
|
||||
checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b"
|
||||
|
||||
[[package]]
|
||||
name = "js-sys"
|
||||
|
@ -1261,9 +1261,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "napi"
|
||||
version = "2.16.0"
|
||||
version = "2.16.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "54a63d0570e4c3e0daf7a8d380563610e159f538e20448d6c911337246f40e84"
|
||||
checksum = "c4ca998356d8ff9fba7a070dae4508a2298439c98c9f3bc9c07669538b999e8f"
|
||||
dependencies = [
|
||||
"bitflags 2.5.0",
|
||||
"ctor",
|
||||
|
@ -1281,23 +1281,23 @@ checksum = "2f9130fccc5f763cf2069b34a089a18f0d0883c66aceb81f2fad541a3d823c43"
|
|||
|
||||
[[package]]
|
||||
name = "napi-derive"
|
||||
version = "2.16.0"
|
||||
version = "2.16.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "05bb7c37e3c1dda9312fdbe4a9fc7507fca72288ba154ec093e2d49114e727ce"
|
||||
checksum = "b138cecf1141ae0ff5d62f4aa0e2f269aec339f66070f346ba6fb4279f1fc178"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"convert_case",
|
||||
"napi-derive-backend",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.53",
|
||||
"syn 2.0.55",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "napi-derive-backend"
|
||||
version = "1.0.62"
|
||||
version = "1.0.63"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f785a8b8d7b83e925f5aa6d2ae3c159d17fe137ac368dc185bef410e7acdaeb4"
|
||||
checksum = "ce5126b64f6ad9e28e30e6d15213dd378626b38f556454afebc42f7f02a90902"
|
||||
dependencies = [
|
||||
"convert_case",
|
||||
"once_cell",
|
||||
|
@ -1305,7 +1305,7 @@ dependencies = [
|
|||
"quote",
|
||||
"regex",
|
||||
"semver",
|
||||
"syn 2.0.53",
|
||||
"syn 2.0.55",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -1487,7 +1487,7 @@ dependencies = [
|
|||
"proc-macro-error",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.53",
|
||||
"syn 2.0.55",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -1536,7 +1536,7 @@ dependencies = [
|
|||
"regex",
|
||||
"regex-syntax 0.7.5",
|
||||
"structmeta",
|
||||
"syn 2.0.53",
|
||||
"syn 2.0.55",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -2003,7 +2003,7 @@ dependencies = [
|
|||
"proc-macro-error",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.53",
|
||||
"syn 2.0.55",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -2044,7 +2044,7 @@ dependencies = [
|
|||
"proc-macro2",
|
||||
"quote",
|
||||
"sea-bae",
|
||||
"syn 2.0.53",
|
||||
"syn 2.0.55",
|
||||
"unicode-ident",
|
||||
]
|
||||
|
||||
|
@ -2110,7 +2110,7 @@ checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b"
|
|||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.53",
|
||||
"syn 2.0.55",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -2126,9 +2126,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "serde_json"
|
||||
version = "1.0.114"
|
||||
version = "1.0.115"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c5f09b1bd632ef549eaa9f60a1f8de742bdbc698e6cee2095fc84dde5f549ae0"
|
||||
checksum = "12dc5c46daa8e9fdf4f5e71b6cf9a53f2487da0e86e55808e2d35539666497dd"
|
||||
dependencies = [
|
||||
"itoa",
|
||||
"ryu",
|
||||
|
@ -2513,7 +2513,7 @@ dependencies = [
|
|||
"proc-macro2",
|
||||
"quote",
|
||||
"structmeta-derive",
|
||||
"syn 2.0.53",
|
||||
"syn 2.0.55",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -2524,7 +2524,7 @@ checksum = "a60bcaff7397072dca0017d1db428e30d5002e00b6847703e2e42005c95fbe00"
|
|||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.53",
|
||||
"syn 2.0.55",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -2552,9 +2552,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "syn"
|
||||
version = "2.0.53"
|
||||
version = "2.0.55"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7383cd0e49fff4b6b90ca5670bfd3e9d6a733b3f90c686605aa7eec8c4996032"
|
||||
checksum = "002a1b3dbf967edfafc32655d0f377ab0bb7b994aa1d32c8cc7e9b8bf3ebb8f0"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
|
@ -2570,7 +2570,7 @@ dependencies = [
|
|||
"proc-macro-error",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.53",
|
||||
"syn 2.0.55",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -2635,7 +2635,7 @@ checksum = "c61f3ba182994efc43764a46c018c347bc492c79f024e705f46567b418f6d4f7"
|
|||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.53",
|
||||
"syn 2.0.55",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -2711,7 +2711,7 @@ checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b"
|
|||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.53",
|
||||
"syn 2.0.55",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -2782,7 +2782,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7"
|
|||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.53",
|
||||
"syn 2.0.55",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -2931,7 +2931,7 @@ dependencies = [
|
|||
"once_cell",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.53",
|
||||
"syn 2.0.55",
|
||||
"wasm-bindgen-shared",
|
||||
]
|
||||
|
||||
|
@ -2965,7 +2965,7 @@ checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7"
|
|||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.53",
|
||||
"syn 2.0.55",
|
||||
"wasm-bindgen-backend",
|
||||
"wasm-bindgen-shared",
|
||||
]
|
||||
|
@ -3194,7 +3194,7 @@ checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6"
|
|||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.53",
|
||||
"syn 2.0.55",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
|
@ -12,7 +12,7 @@ napi = ["dep:napi", "dep:napi-derive"]
|
|||
crate-type = ["cdylib", "lib"]
|
||||
|
||||
[dependencies]
|
||||
async-trait = "0.1.78"
|
||||
async-trait = "0.1.79"
|
||||
cfg-if = "1.0.0"
|
||||
chrono = "0.4.35"
|
||||
cuid2 = "0.1.2"
|
||||
|
@ -23,13 +23,13 @@ rand = "0.8.5"
|
|||
schemars = { version = "0.8.16", features = ["chrono"] }
|
||||
sea-orm = { version = "0.12.15", features = ["sqlx-postgres", "runtime-tokio-rustls"] }
|
||||
serde = { version = "1.0.197", features = ["derive"] }
|
||||
serde_json = "1.0.114"
|
||||
serde_json = "1.0.115"
|
||||
thiserror = "1.0.58"
|
||||
tokio = { version = "1.36.0", features = ["full"] }
|
||||
|
||||
# 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-derive = { version = "2.16.0", optional = true }
|
||||
napi = { version = "2.16.1", default-features = false, features = ["napi9", "tokio_rt"], optional = true }
|
||||
napi-derive = { version = "2.16.1", optional = true }
|
||||
basen = "0.1.0"
|
||||
|
||||
[dev-dependencies]
|
||||
|
|
|
@ -33,10 +33,10 @@
|
|||
},
|
||||
"scripts": {
|
||||
"artifacts": "napi artifacts",
|
||||
"build": "napi build --features napi --platform --release --cargo-flags=--locked ./built/",
|
||||
"build:debug": "napi build --features napi --platform --cargo-flags=--locked ./built/",
|
||||
"build": "napi build --features napi --platform --release ./built/",
|
||||
"build:debug": "napi build --features napi --platform ./built/",
|
||||
"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",
|
||||
"version": "napi version",
|
||||
"format": "cargo fmt --all --",
|
||||
|
|
|
@ -36,6 +36,8 @@ pub struct Model {
|
|||
pub icon_url: Option<String>,
|
||||
#[sea_orm(column_name = "cacheRemoteFiles")]
|
||||
pub cache_remote_files: bool,
|
||||
#[sea_orm(column_name = "markLocalFilesNsfwByDefault")]
|
||||
pub always_make_server_file_nsfw: bool,
|
||||
#[sea_orm(column_name = "enableRecaptcha")]
|
||||
pub enable_recaptcha: bool,
|
||||
#[sea_orm(column_name = "recaptchaSiteKey")]
|
||||
|
|
|
@ -22,30 +22,30 @@
|
|||
"@swc/core-android-arm64": "1.3.11"
|
||||
},
|
||||
"dependencies": {
|
||||
"@bull-board/api": "5.15.1",
|
||||
"@bull-board/koa": "5.15.1",
|
||||
"@bull-board/ui": "5.15.1",
|
||||
"@bull-board/api": "5.15.2",
|
||||
"@bull-board/koa": "5.15.2",
|
||||
"@bull-board/ui": "5.15.2",
|
||||
"@discordapp/twemoji": "^15.0.2",
|
||||
"@koa/cors": "5.0.0",
|
||||
"@koa/multer": "3.0.2",
|
||||
"@koa/router": "12.0.1",
|
||||
"@ladjs/koa-views": "9.0.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",
|
||||
"@twemoji/parser": "^15.0.0",
|
||||
"adm-zip": "^0.5.12",
|
||||
"adm-zip": "0.5.10",
|
||||
"ajv": "8.12.0",
|
||||
"archiver": "7.0.1",
|
||||
"argon2": "^0.40.1",
|
||||
"aws-sdk": "2.1584.0",
|
||||
"aws-sdk": "2.1585.0",
|
||||
"axios": "^1.6.8",
|
||||
"backend-rs": "workspace:*",
|
||||
"bcryptjs": "2.4.3",
|
||||
"blurhash": "2.0.5",
|
||||
"bull": "4.12.2",
|
||||
"cacheable-lookup": "TheEssem/cacheable-lookup",
|
||||
"cbor-x": "^1.5.8",
|
||||
"cbor-x": "^1.5.9",
|
||||
"chalk": "5.3.0",
|
||||
"chalk-template": "1.1.0",
|
||||
"cli-highlight": "2.1.11",
|
||||
|
@ -62,7 +62,7 @@
|
|||
"form-data": "^4.0.0",
|
||||
"got": "14.2.1",
|
||||
"gunzip-maybe": "^1.4.2",
|
||||
"happy-dom": "^14.3.1",
|
||||
"happy-dom": "^14.3.8",
|
||||
"hpagent": "1.2.0",
|
||||
"ioredis": "5.3.2",
|
||||
"ip-cidr": "4.0.0",
|
||||
|
@ -129,7 +129,7 @@
|
|||
},
|
||||
"devDependencies": {
|
||||
"@swc/cli": "0.3.10",
|
||||
"@swc/core": "1.4.8",
|
||||
"@swc/core": "1.4.11",
|
||||
"@types/adm-zip": "^0.5.5",
|
||||
"@types/bcryptjs": "2.4.6",
|
||||
"@types/color-convert": "^2.0.3",
|
||||
|
|
|
@ -0,0 +1,18 @@
|
|||
import { MigrationInterface, QueryRunner } from "typeorm";
|
||||
|
||||
export class markLocalFilesNsfwByDefault1709305200000
|
||||
implements MigrationInterface
|
||||
{
|
||||
async up(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE "meta" ADD "markLocalFilesNsfwByDefault" boolean NOT NULL DEFAULT false`,
|
||||
undefined,
|
||||
);
|
||||
}
|
||||
async down(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE "meta" DROP COLUMN "markLocalFilesNsfwByDefault"`,
|
||||
undefined,
|
||||
);
|
||||
}
|
||||
}
|
|
@ -207,6 +207,11 @@ export class Meta {
|
|||
})
|
||||
public cacheRemoteFiles: boolean;
|
||||
|
||||
@Column("boolean", {
|
||||
default: false,
|
||||
})
|
||||
public markLocalFilesNsfwByDefault: boolean;
|
||||
|
||||
@Column({
|
||||
...id(),
|
||||
nullable: true,
|
||||
|
|
|
@ -296,7 +296,7 @@ export class Note {
|
|||
nullable: true,
|
||||
comment: "The updated date of the Note.",
|
||||
})
|
||||
public updatedAt: Date;
|
||||
public updatedAt: Date | null;
|
||||
//#endregion
|
||||
|
||||
constructor(data: Partial<Note>) {
|
||||
|
|
|
@ -3,7 +3,6 @@ import type { EndoRelation, Predicate } from "./relation.js";
|
|||
/**
|
||||
* Count the number of elements that satisfy the predicate
|
||||
*/
|
||||
|
||||
export function countIf<T>(f: Predicate<T>, xs: T[]): number {
|
||||
return xs.filter(f).length;
|
||||
}
|
||||
|
@ -60,6 +59,21 @@ export function maximum(xs: number[]): number {
|
|||
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.
|
||||
* The concatenation of the result is equal to the argument.
|
||||
|
|
|
@ -29,6 +29,11 @@ export const meta = {
|
|||
optional: false,
|
||||
nullable: false,
|
||||
},
|
||||
markLocalFilesNsfwByDefault: {
|
||||
type: "boolean",
|
||||
optional: false,
|
||||
nullable: false,
|
||||
},
|
||||
emailRequiredForSignup: {
|
||||
type: "boolean",
|
||||
optional: false,
|
||||
|
@ -506,6 +511,7 @@ export default define(meta, paramDef, async () => {
|
|||
pinnedPages: instance.pinnedPages,
|
||||
pinnedClipId: instance.pinnedClipId,
|
||||
cacheRemoteFiles: instance.cacheRemoteFiles,
|
||||
markLocalFilesNsfwByDefault: instance.markLocalFilesNsfwByDefault,
|
||||
defaultReaction: instance.defaultReaction,
|
||||
recommendedInstances: instance.recommendedInstances,
|
||||
pinnedUsers: instance.pinnedUsers,
|
||||
|
|
|
@ -95,6 +95,7 @@ export const paramDef = {
|
|||
localDriveCapacityMb: { type: "integer" },
|
||||
remoteDriveCapacityMb: { type: "integer" },
|
||||
cacheRemoteFiles: { type: "boolean" },
|
||||
markLocalFilesNsfwByDefault: { type: "boolean" },
|
||||
emailRequiredForSignup: { type: "boolean" },
|
||||
enableHcaptcha: { type: "boolean" },
|
||||
hcaptchaSiteKey: { type: "string", nullable: true },
|
||||
|
@ -330,6 +331,10 @@ export default define(meta, paramDef, async (ps, me) => {
|
|||
set.cacheRemoteFiles = ps.cacheRemoteFiles;
|
||||
}
|
||||
|
||||
if (ps.markLocalFilesNsfwByDefault !== undefined) {
|
||||
set.markLocalFilesNsfwByDefault = ps.markLocalFilesNsfwByDefault;
|
||||
}
|
||||
|
||||
if (ps.emailRequiredForSignup !== undefined) {
|
||||
set.emailRequiredForSignup = ps.emailRequiredForSignup;
|
||||
}
|
||||
|
|
|
@ -131,6 +131,11 @@ export const meta = {
|
|||
optional: false,
|
||||
nullable: false,
|
||||
},
|
||||
markLocalFilesNsfwByDefault: {
|
||||
type: "boolean",
|
||||
optional: false,
|
||||
nullable: false,
|
||||
},
|
||||
emailRequiredForSignup: {
|
||||
type: "boolean",
|
||||
optional: false,
|
||||
|
@ -490,6 +495,7 @@ export default define(meta, paramDef, async (ps, me) => {
|
|||
pinnedClipId:
|
||||
instance.privateMode && !me ? [] : instance.pinnedClipId,
|
||||
cacheRemoteFiles: instance.cacheRemoteFiles,
|
||||
markLocalFilesNsfwByDefault: instance.markLocalFilesNsfwByDefault,
|
||||
requireSetup:
|
||||
(await Users.countBy({
|
||||
host: IsNull(),
|
||||
|
|
|
@ -9,6 +9,7 @@ import {
|
|||
UserProfiles,
|
||||
Polls,
|
||||
NoteEdits,
|
||||
NoteFiles,
|
||||
} from "@/models/index.js";
|
||||
import type { DriveFile } from "@/models/entities/drive-file.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 { deliverQuestionUpdate } from "@/services/note/polls/update.js";
|
||||
import { langmap } from "@/misc/langmap.js";
|
||||
import detectLanguage from "@/misc/detect-language.js";
|
||||
|
||||
export const meta = {
|
||||
tags: ["notes"],
|
||||
|
@ -606,13 +606,20 @@ export default define(meta, paramDef, async (ps, user) => {
|
|||
update.updatedAt = new Date();
|
||||
await Notes.update(note.id, update);
|
||||
|
||||
// Add NoteEdit history
|
||||
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
|
||||
await NoteEdits.insert({
|
||||
id: genId(),
|
||||
noteId: note.id,
|
||||
text: ps.text || undefined,
|
||||
cw: ps.cw,
|
||||
fileIds: ps.fileIds,
|
||||
text: note.text || undefined,
|
||||
cw: note.cw,
|
||||
fileIds: note.fileIds,
|
||||
updatedAt: new Date(),
|
||||
});
|
||||
|
||||
|
|
|
@ -567,6 +567,7 @@ export async function addFile({
|
|||
: null;
|
||||
|
||||
const folder = await fetchFolder();
|
||||
const instance = await fetchMeta();
|
||||
|
||||
let file = new DriveFile();
|
||||
file.id = genId();
|
||||
|
@ -581,7 +582,8 @@ export async function addFile({
|
|||
file.requestIp = requestIp;
|
||||
file.requestHeaders = requestHeaders;
|
||||
file.isSensitive = user
|
||||
? Users.isLocalUser(user) && profile!.alwaysMarkNsfw
|
||||
? Users.isLocalUser(user) &&
|
||||
(instance!.markLocalFilesNsfwByDefault || profile!.alwaysMarkNsfw)
|
||||
? true
|
||||
: sensitive != null
|
||||
? sensitive
|
||||
|
|
|
@ -59,7 +59,7 @@
|
|||
"idb-keyval": "6.2.1",
|
||||
"insert-text-at-cursor": "0.3.0",
|
||||
"json5": "2.2.3",
|
||||
"katex": "0.16.9",
|
||||
"katex": "0.16.10",
|
||||
"libopenmpt-wasm": "github:TheEssem/libopenmpt-packaging#build",
|
||||
"matter-js": "0.19.0",
|
||||
"mfm-js": "0.24.0",
|
||||
|
@ -83,7 +83,7 @@
|
|||
"typescript": "5.4.3",
|
||||
"unicode-emoji-json": "^0.6.0",
|
||||
"uuid": "9.0.1",
|
||||
"vite": "5.2.4",
|
||||
"vite": "5.2.6",
|
||||
"vite-plugin-compression": "^0.5.1",
|
||||
"vue": "3.4.21",
|
||||
"vue-draggable-plus": "^0.3.5",
|
||||
|
|
|
@ -56,7 +56,7 @@ const ripples = ref<HTMLElement | null>(null);
|
|||
onMounted(() => {
|
||||
if (props.autofocus) {
|
||||
nextTick(() => {
|
||||
el.value!.focus();
|
||||
el.value?.focus();
|
||||
});
|
||||
}
|
||||
});
|
||||
|
|
|
@ -4,9 +4,10 @@
|
|||
v-if="isThumbnailAvailable"
|
||||
:hash="file.blurhash"
|
||||
:src="file.thumbnailUrl"
|
||||
:alt="file.name"
|
||||
:alt="file.comment"
|
||||
:title="file.name"
|
||||
:cover="fit !== 'contain'"
|
||||
:show-alt-indicator="showAltIndicator"
|
||||
/>
|
||||
<i v-else-if="is === 'image'" :class="icon('ph-file-image icon')"></i>
|
||||
<i v-else-if="is === 'video'" :class="icon('ph-file-video icon')"></i>
|
||||
|
@ -33,10 +34,16 @@ import type { entities } from "firefish-js";
|
|||
import ImgWithBlurhash from "@/components/MkImgWithBlurhash.vue";
|
||||
import icon from "@/scripts/icon";
|
||||
|
||||
const props = defineProps<{
|
||||
file: entities.DriveFile;
|
||||
fit: string;
|
||||
}>();
|
||||
const props = withDefaults(
|
||||
defineProps<{
|
||||
file: entities.DriveFile;
|
||||
fit: string;
|
||||
showAltIndicator?: boolean;
|
||||
}>(),
|
||||
{
|
||||
showAltIndicator: false,
|
||||
},
|
||||
);
|
||||
|
||||
const is = computed(() => {
|
||||
if (props.file.type.startsWith("image/")) return "image";
|
||||
|
|
|
@ -21,30 +21,44 @@
|
|||
loading="lazy"
|
||||
@load="onLoad"
|
||||
/>
|
||||
<i
|
||||
class="alt-indicator"
|
||||
:class="icon('ph-subtitles')"
|
||||
v-if="alt && showAltIndicator"
|
||||
v-tooltip.noLabel="
|
||||
`${i18n.ts.alt}: ${
|
||||
alt.length > 200 ? alt.trim().slice(0, 200) + '...' : alt.trim()
|
||||
}`
|
||||
"
|
||||
></i>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import { onMounted, ref } from "vue";
|
||||
import { decodeBlurHash } from "fast-blurhash";
|
||||
import icon from "@/scripts/icon";
|
||||
import { i18n } from "@/i18n";
|
||||
|
||||
const props = withDefaults(
|
||||
defineProps<{
|
||||
src?: string | null;
|
||||
hash?: string;
|
||||
alt?: string;
|
||||
alt?: string | null;
|
||||
type?: string | null;
|
||||
title?: string | null;
|
||||
size?: number;
|
||||
cover?: boolean;
|
||||
largestDimension?: "width" | "height";
|
||||
showAltIndicator?: boolean;
|
||||
}>(),
|
||||
{
|
||||
src: null,
|
||||
type: null,
|
||||
alt: "",
|
||||
alt: null,
|
||||
title: null,
|
||||
size: 64,
|
||||
cover: true,
|
||||
showAltIndicator: false,
|
||||
},
|
||||
);
|
||||
|
||||
|
@ -96,4 +110,21 @@ img {
|
|||
height: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
i.alt-indicator {
|
||||
display: flex;
|
||||
gap: 4px;
|
||||
position: absolute;
|
||||
border-radius: 6px;
|
||||
overflow: hidden;
|
||||
top: 0;
|
||||
right: 0;
|
||||
background-color: var(--accentedBg);
|
||||
-webkit-backdrop-filter: var(--blur, blur(15px));
|
||||
backdrop-filter: var(--blur, blur(15px));
|
||||
color: var(--accent);
|
||||
font-size: 1em;
|
||||
padding: 6px 8px;
|
||||
text-align: center;
|
||||
}
|
||||
</style>
|
||||
|
|
|
@ -286,7 +286,7 @@ import XStarButtonNoEmoji from "@/components/MkStarButtonNoEmoji.vue";
|
|||
import XQuoteButton from "@/components/MkQuoteButton.vue";
|
||||
import MkVisibility from "@/components/MkVisibility.vue";
|
||||
import copyToClipboard from "@/scripts/copy-to-clipboard";
|
||||
import detectLanguage from "@/scripts/detect-language";
|
||||
import { detectLanguage } from "@/scripts/language-utils";
|
||||
import { url } from "@/config";
|
||||
import { pleaseLogin } from "@/scripts/please-login";
|
||||
import { focusNext, focusPrev } from "@/scripts/focus";
|
||||
|
|
|
@ -201,7 +201,7 @@ import XStarButtonNoEmoji from "@/components/MkStarButtonNoEmoji.vue";
|
|||
import XRenoteButton from "@/components/MkRenoteButton.vue";
|
||||
import XQuoteButton from "@/components/MkQuoteButton.vue";
|
||||
import copyToClipboard from "@/scripts/copy-to-clipboard";
|
||||
import detectLanguage from "@/scripts/detect-language";
|
||||
import { detectLanguage } from "@/scripts/language-utils";
|
||||
import { url } from "@/config";
|
||||
import { pleaseLogin } from "@/scripts/please-login";
|
||||
import { getNoteMenu } from "@/scripts/get-note-menu";
|
||||
|
|
|
@ -329,8 +329,14 @@ import XCheatSheet from "@/components/MkCheatSheetDialog.vue";
|
|||
import preprocess from "@/scripts/preprocess";
|
||||
import { vibrate } from "@/scripts/vibrate";
|
||||
import { langmap } from "@/scripts/langmap";
|
||||
import {
|
||||
detectLanguage,
|
||||
isSupportedLang,
|
||||
isSameLanguage,
|
||||
languageContains,
|
||||
parentLanguage,
|
||||
} from "@/scripts/language-utils";
|
||||
import type { MenuItem } from "@/types/menu";
|
||||
import detectLanguage from "@/scripts/detect-language";
|
||||
import icon from "@/scripts/icon";
|
||||
|
||||
const modal = inject("modal");
|
||||
|
@ -758,22 +764,14 @@ const language = ref<string | null>(
|
|||
localStorage.getItem("lang")?.split("-")[0],
|
||||
);
|
||||
|
||||
function filterLangmapByPrefix(
|
||||
prefix: string,
|
||||
function filterSubclassLanguages(
|
||||
langCode: string,
|
||||
): { langCode: string; nativeName: string }[] {
|
||||
let to_return = Object.entries(langmap)
|
||||
.filter(([langCode, _]) => langCode.startsWith(prefix))
|
||||
return Object.entries(langmap)
|
||||
.filter(([lc, _]) => languageContains(langCode, lc))
|
||||
.map(([langCode, v]) => {
|
||||
return { langCode, nativeName: v.nativeName };
|
||||
});
|
||||
|
||||
if (prefix === "zh")
|
||||
to_return = to_return.concat([
|
||||
{ langCode: "yue", nativeName: langmap.yue.nativeName },
|
||||
{ langCode: "nan", nativeName: langmap.nan.nativeName },
|
||||
]);
|
||||
|
||||
return to_return;
|
||||
}
|
||||
|
||||
function setLanguage() {
|
||||
|
@ -785,7 +783,7 @@ function setLanguage() {
|
|||
type: "label",
|
||||
text: i18n.ts.suggested,
|
||||
});
|
||||
filterLangmapByPrefix(detectedLanguage).forEach((v) => {
|
||||
for (const v of filterSubclassLanguages(detectedLanguage)) {
|
||||
actions.push({
|
||||
text: v.nativeName,
|
||||
danger: false,
|
||||
|
@ -794,7 +792,7 @@ function setLanguage() {
|
|||
language.value = v.langCode;
|
||||
},
|
||||
});
|
||||
});
|
||||
}
|
||||
actions.push(null);
|
||||
}
|
||||
|
||||
|
@ -1020,6 +1018,39 @@ function deleteDraft() {
|
|||
}
|
||||
|
||||
async function post() {
|
||||
// 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) {
|
||||
const detectedLanguage: string = detectLanguage(text.value) ?? "";
|
||||
|
||||
const currentLanguageName: string | undefined | false =
|
||||
language.value && langmap[language.value]?.nativeName;
|
||||
const detectedLanguageName: string | undefined | false =
|
||||
detectedLanguage !== "" && langmap[detectedLanguage]?.nativeName;
|
||||
|
||||
if (
|
||||
currentLanguageName &&
|
||||
detectedLanguageName &&
|
||||
!isSameLanguage(detectedLanguage, language.value) &&
|
||||
isSupportedLang(parentLanguage(language.value))
|
||||
) {
|
||||
// "canceled" means "post with detected language".
|
||||
const { canceled } = await os.confirm({
|
||||
type: "warning",
|
||||
text: i18n.t("incorrectLanguageWarning", {
|
||||
detected: detectedLanguageName,
|
||||
current: currentLanguageName,
|
||||
}),
|
||||
okText: i18n.ts.no,
|
||||
cancelText: i18n.ts.yes,
|
||||
isPlaintext: true,
|
||||
});
|
||||
|
||||
if (canceled) {
|
||||
language.value = detectedLanguage;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (
|
||||
defaultStore.state.showNoAltTextWarning &&
|
||||
files.value.some((f) => f.comment == null || f.comment.length === 0)
|
||||
|
|
|
@ -19,6 +19,7 @@
|
|||
class="thumbnail"
|
||||
:file="element"
|
||||
fit="cover"
|
||||
:show-alt-indicator="true"
|
||||
/>
|
||||
<div v-if="element.isSensitive" class="sensitive">
|
||||
<i :class="icon('ph-warning icon')"></i>
|
||||
|
|
|
@ -142,6 +142,10 @@ function done(canceled: boolean, result?: searchQuery) {
|
|||
}
|
||||
|
||||
function search() {
|
||||
searchWords.value = searchWords.value.trim();
|
||||
searchUsers.value = searchUsers.value.trim();
|
||||
searchRange.value = searchRange.value.trim();
|
||||
|
||||
if (
|
||||
searchWords.value === "" &&
|
||||
searchUsers.value === "" &&
|
||||
|
@ -160,6 +164,8 @@ function search() {
|
|||
}
|
||||
|
||||
function lookup() {
|
||||
searchWords.value = searchWords.value.trim();
|
||||
|
||||
if (searchWords.value === "") return;
|
||||
|
||||
done(false, {
|
||||
|
|
|
@ -22,7 +22,7 @@ class I18n<T extends Record<string, any>> {
|
|||
|
||||
if (args) {
|
||||
for (const [k, v] of Object.entries(args)) {
|
||||
str = str.replace(`{${k}}`, v.toString());
|
||||
str = str.replaceAll(`{${k}}`, v.toString());
|
||||
}
|
||||
}
|
||||
return str;
|
||||
|
|
|
@ -305,6 +305,19 @@
|
|||
}}</template>
|
||||
</FormSwitch>
|
||||
|
||||
<FormSwitch
|
||||
v-model="markLocalFilesNsfwByDefault"
|
||||
class="_formBlock"
|
||||
>
|
||||
<template #label>{{
|
||||
i18n.ts.markLocalFilesNsfwByDefault
|
||||
}}</template>
|
||||
<template #caption>{{
|
||||
i18n.ts
|
||||
.markLocalFilesNsfwByDefaultDescription
|
||||
}}</template>
|
||||
</FormSwitch>
|
||||
|
||||
<FormSplit :min-width="280">
|
||||
<FormInput
|
||||
v-model="localDriveCapacityMb"
|
||||
|
@ -486,6 +499,7 @@ const customMOTD = ref("");
|
|||
const recommendedInstances = ref("");
|
||||
const customSplashIcons = ref("");
|
||||
const cacheRemoteFiles = ref(false);
|
||||
const markLocalFilesNsfwByDefault = ref(false);
|
||||
const localDriveCapacityMb = ref(0);
|
||||
const remoteDriveCapacityMb = ref(0);
|
||||
const enableRegistration = ref(false);
|
||||
|
@ -561,6 +575,7 @@ async function init() {
|
|||
customSplashIcons.value = meta.customSplashIcons.join("\n");
|
||||
recommendedInstances.value = meta.recommendedInstances.join("\n");
|
||||
cacheRemoteFiles.value = meta.cacheRemoteFiles;
|
||||
markLocalFilesNsfwByDefault.value = meta.markLocalFilesNsfwByDefault;
|
||||
localDriveCapacityMb.value = meta.driveCapacityPerLocalUserMb;
|
||||
remoteDriveCapacityMb.value = meta.driveCapacityPerRemoteUserMb;
|
||||
enableRegistration.value = !meta.disableRegistration;
|
||||
|
@ -614,6 +629,7 @@ function save() {
|
|||
customSplashIcons: customSplashIcons.value.split("\n"),
|
||||
recommendedInstances: recommendedInstances.value.split("\n"),
|
||||
cacheRemoteFiles: cacheRemoteFiles.value,
|
||||
markLocalFilesNsfwByDefault: markLocalFilesNsfwByDefault.value,
|
||||
localDriveCapacityMb: localDriveCapacityMb.value,
|
||||
remoteDriveCapacityMb: remoteDriveCapacityMb.value,
|
||||
disableRegistration: !enableRegistration.value,
|
||||
|
|
|
@ -40,9 +40,11 @@
|
|||
>
|
||||
</div>
|
||||
|
||||
<FormSwitch v-model="isSensitive">{{
|
||||
i18n.ts.markAsSensitive
|
||||
}}</FormSwitch>
|
||||
<FormSwitch
|
||||
v-if="!instance.markLocalFilesNsfwByDefault"
|
||||
v-model="isSensitive"
|
||||
>{{ i18n.ts.markAsSensitive }}</FormSwitch
|
||||
>
|
||||
|
||||
<FormButton v-if="postId" primary @click="save"
|
||||
><i :class="icon('ph-floppy-disk-back')"></i>
|
||||
|
@ -73,6 +75,7 @@ import { selectFiles } from "@/scripts/select-file";
|
|||
import * as os from "@/os";
|
||||
import { useRouter } from "@/router";
|
||||
import { definePageMetadata } from "@/scripts/page-metadata";
|
||||
import { instance } from "@/instance";
|
||||
import { i18n } from "@/i18n";
|
||||
import icon from "@/scripts/icon";
|
||||
|
||||
|
|
|
@ -124,6 +124,9 @@
|
|||
<FormSwitch v-model="showNoAltTextWarning" class="_formBlock">{{
|
||||
i18n.ts.showNoAltTextWarning
|
||||
}}</FormSwitch>
|
||||
<FormSwitch v-model="autocorrectNoteLanguage" class="_formBlock">{{
|
||||
i18n.ts.autocorrectNoteLanguage
|
||||
}}</FormSwitch>
|
||||
|
||||
<FormSelect v-model="serverDisconnectedBehavior" class="_formBlock">
|
||||
<template #label>{{ i18n.ts.whenServerDisconnected }}</template>
|
||||
|
@ -530,6 +533,9 @@ const pullToRefreshThreshold = computed(
|
|||
const showNoAltTextWarning = computed(
|
||||
defaultStore.makeGetterSetter("showNoAltTextWarning"),
|
||||
);
|
||||
const autocorrectNoteLanguage = computed(
|
||||
defaultStore.makeGetterSetter("autocorrectNoteLanguage"),
|
||||
);
|
||||
|
||||
// This feature (along with injectPromo) is currently disabled
|
||||
// function onChangeInjectFeaturedNote(v) {
|
||||
|
|
|
@ -125,6 +125,7 @@ const defaultStoreSaveKeys: (keyof (typeof defaultStore)["state"])[] = [
|
|||
"enablePullToRefresh",
|
||||
"pullToRefreshThreshold",
|
||||
"showNoAltTextWarning",
|
||||
"autocorrectNoteLanguage",
|
||||
];
|
||||
const coldDeviceStorageSaveKeys: (keyof typeof ColdDeviceStorage.default)[] = [
|
||||
"lightTheme",
|
||||
|
|
|
@ -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);
|
||||
}
|
|
@ -380,3 +380,131 @@ export const iso639Regional = {
|
|||
};
|
||||
|
||||
export const langmap = Object.assign({}, langmapNoRegion, iso639Regional);
|
||||
|
||||
/**
|
||||
* @see https://github.com/komodojp/tinyld/blob/develop/docs/langs.md
|
||||
*/
|
||||
export const supportedLangs: Record<string, boolean> = {
|
||||
af: true,
|
||||
afr: true,
|
||||
am: true,
|
||||
amh: true,
|
||||
ber: true,
|
||||
rn: true,
|
||||
run: true,
|
||||
my: true,
|
||||
mya: true,
|
||||
id: true,
|
||||
ind: true,
|
||||
km: true,
|
||||
khm: true,
|
||||
tl: true,
|
||||
tgl: true,
|
||||
th: true,
|
||||
tha: true,
|
||||
vi: true,
|
||||
vie: true,
|
||||
zh: true,
|
||||
cmn: true,
|
||||
ja: true,
|
||||
jpn: true,
|
||||
ko: true,
|
||||
kor: true,
|
||||
bn: true,
|
||||
ben: true,
|
||||
gu: true,
|
||||
guj: true,
|
||||
hi: true,
|
||||
hin: true,
|
||||
kn: true,
|
||||
kan: true,
|
||||
ta: true,
|
||||
tam: true,
|
||||
te: true,
|
||||
tel: true,
|
||||
ur: true,
|
||||
urd: true,
|
||||
cs: true,
|
||||
ces: true,
|
||||
el: true,
|
||||
ell: true,
|
||||
la: true,
|
||||
lat: true,
|
||||
mk: true,
|
||||
mkd: true,
|
||||
sr: true,
|
||||
srp: true,
|
||||
sk: true,
|
||||
slk: true,
|
||||
be: true,
|
||||
bel: true,
|
||||
bg: true,
|
||||
bul: true,
|
||||
et: true,
|
||||
est: true,
|
||||
hu: true,
|
||||
hun: true,
|
||||
lv: true,
|
||||
lvs: 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,
|
||||
vo: true,
|
||||
vol: true,
|
||||
};
|
||||
|
|
|
@ -0,0 +1,54 @@
|
|||
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) {
|
||||
if (!langCode) return false;
|
||||
return supportedLangs[langCode] ?? false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Compare two language codes to determine whether they are decisively different
|
||||
* @returns false if they are close enough
|
||||
*/
|
||||
export function isSameLanguage(
|
||||
langCode1: string | null,
|
||||
langCode2: string | null,
|
||||
) {
|
||||
return (
|
||||
languageContains(langCode1, langCode2) ||
|
||||
languageContains(langCode2, langCode1)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns true if langCode1 contains langCode2
|
||||
*/
|
||||
export function languageContains(
|
||||
langCode1: string | null,
|
||||
langCode2: string | null,
|
||||
) {
|
||||
if (!langCode1 || !langCode2) return false;
|
||||
|
||||
return parentLanguage(langCode2) === langCode1;
|
||||
}
|
||||
|
||||
export function parentLanguage(langCode: string | null) {
|
||||
if (!langCode) return null;
|
||||
if (["zh-hant", "zh-hans", "yue", "nan"].includes(langCode)) {
|
||||
return "zh";
|
||||
}
|
||||
if (["nb", "nn"].includes(langCode)) {
|
||||
return "no";
|
||||
}
|
||||
return langCode;
|
||||
}
|
|
@ -432,6 +432,10 @@ export const defaultStore = markRaw(
|
|||
where: "account",
|
||||
default: true,
|
||||
},
|
||||
autocorrectNoteLanguage: {
|
||||
where: "account",
|
||||
default: true,
|
||||
},
|
||||
}),
|
||||
);
|
||||
|
||||
|
|
|
@ -4,11 +4,10 @@
|
|||
"description": "Firefish SDK for JavaScript",
|
||||
"homepage": "https://firefish.dev/firefish/firefish/-/tree/develop/packages/firefish-js",
|
||||
"main": "./built/index.js",
|
||||
"types": "./built/index.d.ts",
|
||||
"types": "./src/index.ts",
|
||||
"license": "MIT",
|
||||
"scripts": {
|
||||
"build": "pnpm swc src --out-dir built --source-maps false --copy-files --strip-leading-paths",
|
||||
"build:types": "pnpm tsc --emitDeclarationOnly",
|
||||
"build:debug": "pnpm swc src --out-dir built --source-maps true --copy-files --strip-leading-paths",
|
||||
"watch": "pnpm swc src --out-dir built --source-maps true --copy-files --strip-leading-paths --watch",
|
||||
"lint": "pnpm biome check --apply src",
|
||||
|
@ -22,7 +21,7 @@
|
|||
},
|
||||
"devDependencies": {
|
||||
"@swc/cli": "0.3.10",
|
||||
"@swc/core": "1.4.8",
|
||||
"@swc/core": "1.4.11",
|
||||
"@swc/types": "^0.1.6",
|
||||
"@types/jest": "^29.5.12",
|
||||
"@types/node": "20.11.30",
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
"devDependencies": {
|
||||
"firefish-js": "workspace:*",
|
||||
"idb-keyval": "^6.2.1",
|
||||
"vite": "5.2.4",
|
||||
"vite": "5.2.6",
|
||||
"vite-plugin-compression": "^0.5.1"
|
||||
}
|
||||
}
|
||||
|
|
305
pnpm-lock.yaml
305
pnpm-lock.yaml
|
@ -25,20 +25,20 @@ importers:
|
|||
version: 4.1.0
|
||||
devDependencies:
|
||||
'@biomejs/biome':
|
||||
specifier: 1.6.2
|
||||
version: 1.6.2
|
||||
specifier: 1.6.3
|
||||
version: 1.6.3
|
||||
'@biomejs/cli-darwin-arm64':
|
||||
specifier: ^1.6.2
|
||||
version: 1.6.2
|
||||
specifier: ^1.6.3
|
||||
version: 1.6.3
|
||||
'@biomejs/cli-darwin-x64':
|
||||
specifier: ^1.6.2
|
||||
version: 1.6.2
|
||||
specifier: ^1.6.3
|
||||
version: 1.6.3
|
||||
'@biomejs/cli-linux-arm64':
|
||||
specifier: ^1.6.2
|
||||
version: 1.6.2
|
||||
specifier: ^1.6.3
|
||||
version: 1.6.3
|
||||
'@biomejs/cli-linux-x64':
|
||||
specifier: ^1.6.2
|
||||
version: 1.6.2
|
||||
specifier: ^1.6.3
|
||||
version: 1.6.3
|
||||
'@types/node':
|
||||
specifier: 20.11.30
|
||||
version: 20.11.30
|
||||
|
@ -55,14 +55,14 @@ importers:
|
|||
packages/backend:
|
||||
dependencies:
|
||||
'@bull-board/api':
|
||||
specifier: 5.15.1
|
||||
version: 5.15.1(@bull-board/ui@5.15.1)
|
||||
specifier: 5.15.2
|
||||
version: 5.15.2(@bull-board/ui@5.15.2)
|
||||
'@bull-board/koa':
|
||||
specifier: 5.15.1
|
||||
version: 5.15.1(@types/koa@2.15.0)(pug@3.0.2)
|
||||
specifier: 5.15.2
|
||||
version: 5.15.2(@types/koa@2.15.0)(pug@3.0.2)
|
||||
'@bull-board/ui':
|
||||
specifier: 5.15.1
|
||||
version: 5.15.1
|
||||
specifier: 5.15.2
|
||||
version: 5.15.2
|
||||
'@discordapp/twemoji':
|
||||
specifier: ^15.0.2
|
||||
version: 15.0.2
|
||||
|
@ -82,8 +82,8 @@ importers:
|
|||
specifier: 1.7.0
|
||||
version: 1.7.0
|
||||
'@redocly/openapi-core':
|
||||
specifier: 1.10.5
|
||||
version: 1.10.5
|
||||
specifier: 1.10.6
|
||||
version: 1.10.6
|
||||
'@sinonjs/fake-timers':
|
||||
specifier: 11.2.2
|
||||
version: 11.2.2
|
||||
|
@ -91,8 +91,8 @@ importers:
|
|||
specifier: ^15.0.0
|
||||
version: 15.0.0
|
||||
adm-zip:
|
||||
specifier: ^0.5.12
|
||||
version: 0.5.12
|
||||
specifier: 0.5.10
|
||||
version: 0.5.10
|
||||
ajv:
|
||||
specifier: 8.12.0
|
||||
version: 8.12.0
|
||||
|
@ -103,8 +103,8 @@ importers:
|
|||
specifier: ^0.40.1
|
||||
version: 0.40.1
|
||||
aws-sdk:
|
||||
specifier: 2.1584.0
|
||||
version: 2.1584.0
|
||||
specifier: 2.1585.0
|
||||
version: 2.1585.0
|
||||
axios:
|
||||
specifier: ^1.6.8
|
||||
version: 1.6.8
|
||||
|
@ -124,8 +124,8 @@ importers:
|
|||
specifier: TheEssem/cacheable-lookup
|
||||
version: github.com/TheEssem/cacheable-lookup/dd2fb616366a3c68dcf321a57a67295967b204bf
|
||||
cbor-x:
|
||||
specifier: ^1.5.8
|
||||
version: 1.5.8
|
||||
specifier: ^1.5.9
|
||||
version: 1.5.9
|
||||
chalk:
|
||||
specifier: 5.3.0
|
||||
version: 5.3.0
|
||||
|
@ -175,8 +175,8 @@ importers:
|
|||
specifier: ^1.4.2
|
||||
version: 1.4.2
|
||||
happy-dom:
|
||||
specifier: ^14.3.1
|
||||
version: 14.3.1
|
||||
specifier: ^14.3.8
|
||||
version: 14.3.8
|
||||
hpagent:
|
||||
specifier: 1.2.0
|
||||
version: 1.2.0
|
||||
|
@ -373,10 +373,10 @@ importers:
|
|||
devDependencies:
|
||||
'@swc/cli':
|
||||
specifier: 0.3.10
|
||||
version: 0.3.10(@swc/core@1.4.8)
|
||||
version: 0.3.10(@swc/core@1.4.11)
|
||||
'@swc/core':
|
||||
specifier: 1.4.8
|
||||
version: 1.4.8
|
||||
specifier: 1.4.11
|
||||
version: 1.4.11
|
||||
'@types/adm-zip':
|
||||
specifier: ^0.5.5
|
||||
version: 0.5.5
|
||||
|
@ -526,13 +526,13 @@ importers:
|
|||
version: 2.0.0
|
||||
swc-loader:
|
||||
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:
|
||||
specifier: 9.5.1
|
||||
version: 9.5.1(typescript@5.4.3)(webpack@5.91.0)
|
||||
ts-node:
|
||||
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:
|
||||
specifier: 4.2.0
|
||||
version: 4.2.0
|
||||
|
@ -541,7 +541,7 @@ importers:
|
|||
version: 5.4.3
|
||||
webpack:
|
||||
specifier: ^5.91.0
|
||||
version: 5.91.0(@swc/core@1.4.8)
|
||||
version: 5.91.0(@swc/core@1.4.11)
|
||||
ws:
|
||||
specifier: 8.16.0
|
||||
version: 8.16.0
|
||||
|
@ -622,7 +622,7 @@ importers:
|
|||
version: 9.0.8
|
||||
'@vitejs/plugin-vue':
|
||||
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':
|
||||
specifier: 3.4.21
|
||||
version: 3.4.21
|
||||
|
@ -702,8 +702,8 @@ importers:
|
|||
specifier: 2.2.3
|
||||
version: 2.2.3
|
||||
katex:
|
||||
specifier: 0.16.9
|
||||
version: 0.16.9
|
||||
specifier: 0.16.10
|
||||
version: 0.16.10
|
||||
libopenmpt-wasm:
|
||||
specifier: github:TheEssem/libopenmpt-packaging#build
|
||||
version: github.com/TheEssem/libopenmpt-packaging/d05d151a72b638c6312227af0417aca69521172c
|
||||
|
@ -774,11 +774,11 @@ importers:
|
|||
specifier: 9.0.1
|
||||
version: 9.0.1
|
||||
vite:
|
||||
specifier: 5.2.4
|
||||
version: 5.2.4(@types/node@20.11.30)(sass@1.72.0)
|
||||
specifier: 5.2.6
|
||||
version: 5.2.6(@types/node@20.11.30)(sass@1.72.0)
|
||||
vite-plugin-compression:
|
||||
specifier: ^0.5.1
|
||||
version: 0.5.1(vite@5.2.4)
|
||||
version: 0.5.1(vite@5.2.6)
|
||||
vue:
|
||||
specifier: 3.4.21
|
||||
version: 3.4.21(typescript@5.4.3)
|
||||
|
@ -807,10 +807,10 @@ importers:
|
|||
devDependencies:
|
||||
'@swc/cli':
|
||||
specifier: 0.3.10
|
||||
version: 0.3.10(@swc/core@1.4.8)
|
||||
version: 0.3.10(@swc/core@1.4.11)
|
||||
'@swc/core':
|
||||
specifier: 1.4.8
|
||||
version: 1.4.8
|
||||
specifier: 1.4.11
|
||||
version: 1.4.11
|
||||
'@swc/types':
|
||||
specifier: ^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)
|
||||
ts-node:
|
||||
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:
|
||||
specifier: ^0.30.7
|
||||
version: 0.30.7
|
||||
|
@ -972,11 +972,11 @@ importers:
|
|||
specifier: ^6.2.1
|
||||
version: 6.2.1
|
||||
vite:
|
||||
specifier: 5.2.4
|
||||
version: 5.2.4(@types/node@20.11.30)(sass@1.72.0)
|
||||
specifier: 5.2.6
|
||||
version: 5.2.6(@types/node@20.11.30)(sass@1.72.0)
|
||||
vite-plugin-compression:
|
||||
specifier: ^0.5.1
|
||||
version: 0.5.1(vite@5.2.4)
|
||||
version: 0.5.1(vite@5.2.6)
|
||||
|
||||
packages:
|
||||
|
||||
|
@ -1536,38 +1536,38 @@ packages:
|
|||
resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==}
|
||||
dev: true
|
||||
|
||||
/@biomejs/biome@1.6.2:
|
||||
resolution: {integrity: sha512-vw6JhYnpLRRDaawI+d7NaQj17F7LSSJrgT03IQUETwRUG3Q1/a4ByJRphTVXPuhiTnaKVmUlEF3I5NSitcdD+g==}
|
||||
/@biomejs/biome@1.6.3:
|
||||
resolution: {integrity: sha512-Xnp/TIpIcTnRA4LwerJuoGYQJEqwXtn5AL0U0OPXll/QGbAKmcUAfizU880xTwZRD4f53iceqODLDaD3wxYlIw==}
|
||||
engines: {node: '>=14.*'}
|
||||
hasBin: true
|
||||
requiresBuild: true
|
||||
optionalDependencies:
|
||||
'@biomejs/cli-darwin-arm64': 1.6.2
|
||||
'@biomejs/cli-darwin-x64': 1.6.2
|
||||
'@biomejs/cli-linux-arm64': 1.6.2
|
||||
'@biomejs/cli-linux-arm64-musl': 1.6.2
|
||||
'@biomejs/cli-linux-x64': 1.6.2
|
||||
'@biomejs/cli-linux-x64-musl': 1.6.2
|
||||
'@biomejs/cli-win32-arm64': 1.6.2
|
||||
'@biomejs/cli-win32-x64': 1.6.2
|
||||
'@biomejs/cli-darwin-arm64': 1.6.3
|
||||
'@biomejs/cli-darwin-x64': 1.6.3
|
||||
'@biomejs/cli-linux-arm64': 1.6.3
|
||||
'@biomejs/cli-linux-arm64-musl': 1.6.3
|
||||
'@biomejs/cli-linux-x64': 1.6.3
|
||||
'@biomejs/cli-linux-x64-musl': 1.6.3
|
||||
'@biomejs/cli-win32-arm64': 1.6.3
|
||||
'@biomejs/cli-win32-x64': 1.6.3
|
||||
dev: true
|
||||
|
||||
/@biomejs/cli-darwin-arm64@1.6.2:
|
||||
resolution: {integrity: sha512-2sGcNO1wDuQ6r97/SDaPzP3ehrCL7qHXpVggcB/OonbVBEamqIkN1tHsID/snnX3R2ax2QTarjb4bQ+1BpEWzA==}
|
||||
/@biomejs/cli-darwin-arm64@1.6.3:
|
||||
resolution: {integrity: sha512-0E8PGu3/8HSkBJdtjno+niJE1ANS/12D7sPK65vw5lTBYmmaYwJdfclDp6XO0IAX7uVd3/YtXlsEua0SVrNt3Q==}
|
||||
engines: {node: '>=14.*'}
|
||||
cpu: [arm64]
|
||||
os: [darwin]
|
||||
dev: true
|
||||
|
||||
/@biomejs/cli-darwin-x64@1.6.2:
|
||||
resolution: {integrity: sha512-qtHDXIHd7eRIHv41XdG6pt1dbw+qiD0OgLlJn5rvW20kSSFfLxW8yc4upcC1PzlruP1BQpKFec3r5rx1duTtzw==}
|
||||
/@biomejs/cli-darwin-x64@1.6.3:
|
||||
resolution: {integrity: sha512-UWu0We/aIRtWXgJKe6ygWt2xR0yXs64BwWqtZbfxBojRn3jgW8UdFAkV5yiUOX3TQlsV6BZH1EQaUAVsccUeeA==}
|
||||
engines: {node: '>=14.*'}
|
||||
cpu: [x64]
|
||||
os: [darwin]
|
||||
dev: true
|
||||
|
||||
/@biomejs/cli-linux-arm64-musl@1.6.2:
|
||||
resolution: {integrity: sha512-ej3Jj6O9KUSCJUWqVs+9aOo6IcRIALHaGFB20wnQTWtRMFhu1PluM48MrQtMKputgdk5/CopQ662IdKf1PeuEg==}
|
||||
/@biomejs/cli-linux-arm64-musl@1.6.3:
|
||||
resolution: {integrity: sha512-AntGCSfLN1nPcQj4VOk3X2JgnDw07DaPC8BuBmRcsRmn+7GPSWLllVN5awIKlRPZEbGJtSnLkTiDc5Bxw8OiuA==}
|
||||
engines: {node: '>=14.*'}
|
||||
cpu: [arm64]
|
||||
os: [linux]
|
||||
|
@ -1575,15 +1575,15 @@ packages:
|
|||
dev: true
|
||||
optional: true
|
||||
|
||||
/@biomejs/cli-linux-arm64@1.6.2:
|
||||
resolution: {integrity: sha512-e1FJ59lx84QoqQgu1/uzAPIcYGcTkZY/m6Aj8ZHwi7KoWAE5xSogximFHNQ82lS4qkUfG7KaPTbYT6cGJjN9jQ==}
|
||||
/@biomejs/cli-linux-arm64@1.6.3:
|
||||
resolution: {integrity: sha512-wFVkQw38kOssfnkbpSh6ums5TaElw3RAt5i/VZwHmgR2nQgE0fHXLO7HwIE9VBkOEdbiIFq+2PxvFIHuJF3z3Q==}
|
||||
engines: {node: '>=14.*'}
|
||||
cpu: [arm64]
|
||||
os: [linux]
|
||||
dev: true
|
||||
|
||||
/@biomejs/cli-linux-x64-musl@1.6.2:
|
||||
resolution: {integrity: sha512-uOVt4UBkFTFtdXgPX3QuSHRPVIvj07FP0P7A0UOP++idd0r9Bxyt5iIBaAORM3eQyGQqzCGPln1GuM6GalYKzg==}
|
||||
/@biomejs/cli-linux-x64-musl@1.6.3:
|
||||
resolution: {integrity: sha512-GelAvGsUwbxfFpKLG+7+dvDmbrfkGqn08sL8CMQrGnhjE1krAqHWiXQsjfmi0UMFdMsk7hbc4oSAP+1+mrXcHQ==}
|
||||
engines: {node: '>=14.*'}
|
||||
cpu: [x64]
|
||||
os: [linux]
|
||||
|
@ -1591,15 +1591,15 @@ packages:
|
|||
dev: true
|
||||
optional: true
|
||||
|
||||
/@biomejs/cli-linux-x64@1.6.2:
|
||||
resolution: {integrity: sha512-S6Wc5YX6aLDLMzwlDmiw/kjK62Ex+xzE432M5ge9q8tSCluGeHIzrenrJlu8E0xPG2FEipDaK4iqwnjS9O6e2A==}
|
||||
/@biomejs/cli-linux-x64@1.6.3:
|
||||
resolution: {integrity: sha512-vyn8TQaTZg617hjqFitwGmb1St5XXvq6I3vmxU/QFalM74BryMSvYCrYWb2Yw/TkykdEwZTMGYp+SWHRb04fTg==}
|
||||
engines: {node: '>=14.*'}
|
||||
cpu: [x64]
|
||||
os: [linux]
|
||||
dev: true
|
||||
|
||||
/@biomejs/cli-win32-arm64@1.6.2:
|
||||
resolution: {integrity: sha512-5zuxNyvnKy7oLN7KLkqcYpsMKGubfMaeQ+RqnpFsmrofQAxpOo6EL/TyJvr8g533Z0a2/cQ/ALqnwl0mN3KQoQ==}
|
||||
/@biomejs/cli-win32-arm64@1.6.3:
|
||||
resolution: {integrity: sha512-Gx8N2Tixke6pAI1BniteCVZgUUmaFEDYosdWxoaCus15BZI/7RcBxhsRM0ZL/lC66StSQ8vHl8JBrrld1k570Q==}
|
||||
engines: {node: '>=14.*'}
|
||||
cpu: [arm64]
|
||||
os: [win32]
|
||||
|
@ -1607,8 +1607,8 @@ packages:
|
|||
dev: true
|
||||
optional: true
|
||||
|
||||
/@biomejs/cli-win32-x64@1.6.2:
|
||||
resolution: {integrity: sha512-O3nf09/m3cb3/U3M+uO4l236iTZr4F4SmLNG3okKXPfyZqKLNnF6OjdTHOYEiNXnGEtlRuUeemqb3vht9JkXaw==}
|
||||
/@biomejs/cli-win32-x64@1.6.3:
|
||||
resolution: {integrity: sha512-meungPJw64SqoR7LXY1wG7GC4+4wgpyThdFUMGXa6PCe0BLFOIOcZ9VMj9PstuczMPdgmt/BUMPsj25dK1VO8A==}
|
||||
engines: {node: '>=14.*'}
|
||||
cpu: [x64]
|
||||
os: [win32]
|
||||
|
@ -1616,20 +1616,20 @@ packages:
|
|||
dev: true
|
||||
optional: true
|
||||
|
||||
/@bull-board/api@5.15.1(@bull-board/ui@5.15.1):
|
||||
resolution: {integrity: sha512-yJqv2uhMTC5BE2SwK/zG7kTloZyOFOujzPtP09OF9S8GvTalCwSTk7EsLQOUMHTUhyiVZ8JpUyJz8oytZ77+xQ==}
|
||||
/@bull-board/api@5.15.2(@bull-board/ui@5.15.2):
|
||||
resolution: {integrity: sha512-HOqh5/Z0W5GR0WHVS/G83DTn8JwDn0NZs2H5u0bMFnvEmKZexysdnZyeox8Y31A6azRO/tqK3o/LrT1Hhtaxtw==}
|
||||
peerDependencies:
|
||||
'@bull-board/ui': 5.15.1
|
||||
'@bull-board/ui': 5.15.2
|
||||
dependencies:
|
||||
'@bull-board/ui': 5.15.1
|
||||
'@bull-board/ui': 5.15.2
|
||||
redis-info: 3.1.0
|
||||
dev: false
|
||||
|
||||
/@bull-board/koa@5.15.1(@types/koa@2.15.0)(pug@3.0.2):
|
||||
resolution: {integrity: sha512-O6Mq0qoVK125YHXfNYUY7g3QrhvPcU0Vg81TC7mEbt+rrdPJa7twvP0VAqd/Ga3SiDS+cth+9S2bnPQQ3CoOoA==}
|
||||
/@bull-board/koa@5.15.2(@types/koa@2.15.0)(pug@3.0.2):
|
||||
resolution: {integrity: sha512-tT1gjfcEF/87ITR0Scfh5V3Qy74NOCEOwIPWV78F4/5oIcSvdhjhFWBvCMZ/RLQSozS49/2gK5AucJW5pmf2ww==}
|
||||
dependencies:
|
||||
'@bull-board/api': 5.15.1(@bull-board/ui@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.2
|
||||
ejs: 3.1.9
|
||||
koa: 2.15.2
|
||||
koa-mount: 4.0.0
|
||||
|
@ -1693,10 +1693,10 @@ packages:
|
|||
- whiskers
|
||||
dev: false
|
||||
|
||||
/@bull-board/ui@5.15.1:
|
||||
resolution: {integrity: sha512-+jpHdBTaqC2D9QDlix9j0EeqiJgN+RB8aH/A7J0VwVMLnbM820ZFPbrlXIN3Ph0hX2hgc+aHabZjs4Rjmwpqng==}
|
||||
/@bull-board/ui@5.15.2:
|
||||
resolution: {integrity: sha512-OlDCAaBOjdR7ke3vGkm/vEwC8Cwrt/r9ivc8jL+hQbgDluauKl/o9NSPp3BgC2Fo0MRszAxTgSitR0pGLRhAwg==}
|
||||
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
|
||||
|
||||
/@cbor-extract/cbor-extract-darwin-arm64@2.2.0:
|
||||
|
@ -3308,8 +3308,8 @@ packages:
|
|||
resolution: {integrity: sha512-OEdCW1HRpFiZaZNrXQq8LoBxX3APijZaa/Xyoc6r44LnyAPWkjQqvPoBxE7IRqSvMihf8bl+ZRc1gtc1KuFLHw==}
|
||||
dev: false
|
||||
|
||||
/@redocly/openapi-core@1.10.5:
|
||||
resolution: {integrity: sha512-RaVwWLbGuzQxK6ezbvPGnz4rtVMTo5DOrxyII/sKJiTexBHplZzUVqrpU6aeRckl3iY9xe9+w07c/kDiLEeWRQ==}
|
||||
/@redocly/openapi-core@1.10.6:
|
||||
resolution: {integrity: sha512-qWZszssMMe/UrJ4LN4qh2mdcIx5uMHwnvtkAEdmWYWlUv+LNaBeqazjDt0UrCOX5EsrD4d+21oxQJNdbyGMVVA==}
|
||||
engines: {node: '>=14.19.0', npm: '>=7.0.0'}
|
||||
dependencies:
|
||||
'@redocly/ajv': 8.11.0
|
||||
|
@ -3518,7 +3518,7 @@ packages:
|
|||
resolution: {integrity: sha512-Uy0+khmZqUrUGm5dmMqVlnvufZRSK0FbYzVgp0UMstm+F5+W2/jnEEQyc9vo1ZR/E5ZI/B1WjjoTqBqwJL6Krw==}
|
||||
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==}
|
||||
engines: {node: '>= 16.14.0'}
|
||||
hasBin: true
|
||||
|
@ -3530,7 +3530,7 @@ packages:
|
|||
optional: true
|
||||
dependencies:
|
||||
'@mole-inc/bin-wrapper': 8.0.1
|
||||
'@swc/core': 1.4.8
|
||||
'@swc/core': 1.4.11
|
||||
'@swc/counter': 0.1.3
|
||||
commander: 8.3.0
|
||||
fast-glob: 3.3.2
|
||||
|
@ -3552,88 +3552,88 @@ packages:
|
|||
dev: false
|
||||
optional: true
|
||||
|
||||
/@swc/core-darwin-arm64@1.4.8:
|
||||
resolution: {integrity: sha512-hhQCffRTgzpTIbngSnC30vV6IJVTI9FFBF954WEsshsecVoCGFiMwazBbrkLG+RwXENTrMhgeREEFh6R3KRgKQ==}
|
||||
/@swc/core-darwin-arm64@1.4.11:
|
||||
resolution: {integrity: sha512-C1j1Qp/IHSelVWdEnT7f0iONWxQz6FAqzjCF2iaL+0vFg4V5f2nlgrueY8vj5pNNzSGhrAlxsMxEIp4dj1MXkg==}
|
||||
engines: {node: '>=10'}
|
||||
cpu: [arm64]
|
||||
os: [darwin]
|
||||
requiresBuild: true
|
||||
optional: true
|
||||
|
||||
/@swc/core-darwin-x64@1.4.8:
|
||||
resolution: {integrity: sha512-P3ZBw8Jr8rKhY/J8d+6WqWriqngGTgHwtFeJ8MIakQJTbdYbFgXSZxcvDiERg3psbGeFXaUaPI0GO6BXv9k/OQ==}
|
||||
/@swc/core-darwin-x64@1.4.11:
|
||||
resolution: {integrity: sha512-0TTy3Ni8ncgaMCchSQ7FK8ZXQLlamy0FXmGWbR58c+pVZWYZltYPTmheJUvVcR0H2+gPAymRKyfC0iLszDALjg==}
|
||||
engines: {node: '>=10'}
|
||||
cpu: [x64]
|
||||
os: [darwin]
|
||||
requiresBuild: true
|
||||
optional: true
|
||||
|
||||
/@swc/core-linux-arm-gnueabihf@1.4.8:
|
||||
resolution: {integrity: sha512-PP9JIJt19bUWhAGcQW6qMwTjZOcMyzkvZa0/LWSlDm0ORYVLmDXUoeQbGD3e0Zju9UiZxyulnpjEN0ZihJgPTA==}
|
||||
/@swc/core-linux-arm-gnueabihf@1.4.11:
|
||||
resolution: {integrity: sha512-XJLB71uw0rog4DjYAPxFGAuGCBQpgJDlPZZK6MTmZOvI/1t0+DelJ24IjHIxk500YYM26Yv47xPabqFPD7I2zQ==}
|
||||
engines: {node: '>=10'}
|
||||
cpu: [arm]
|
||||
os: [linux]
|
||||
requiresBuild: true
|
||||
optional: true
|
||||
|
||||
/@swc/core-linux-arm64-gnu@1.4.8:
|
||||
resolution: {integrity: sha512-HvEWnwKHkoVUr5iftWirTApFJ13hGzhAY2CMw4lz9lur2m+zhPviRRED0FCI6T95Knpv7+8eUOr98Z7ctrG6DQ==}
|
||||
/@swc/core-linux-arm64-gnu@1.4.11:
|
||||
resolution: {integrity: sha512-vYQwzJvm/iu052d5Iw27UFALIN5xSrGkPZXxLNMHPySVko2QMNNBv35HLatkEQHbQ3X+VKSW9J9SkdtAvAVRAQ==}
|
||||
engines: {node: '>=10'}
|
||||
cpu: [arm64]
|
||||
os: [linux]
|
||||
requiresBuild: true
|
||||
optional: true
|
||||
|
||||
/@swc/core-linux-arm64-musl@1.4.8:
|
||||
resolution: {integrity: sha512-kY8+qa7k/dEeBq9p0Hrta18QnJPpsiJvDQSLNaTIFpdM3aEM9zbkshWz8gaX5VVGUEALowCBUWqmzO4VaqM+2w==}
|
||||
/@swc/core-linux-arm64-musl@1.4.11:
|
||||
resolution: {integrity: sha512-eV+KduiRYUFjPsvbZuJ9aknQH9Tj0U2/G9oIZSzLx/18WsYi+upzHbgxmIIHJ2VJgfd7nN40RI/hMtxNsUzR/g==}
|
||||
engines: {node: '>=10'}
|
||||
cpu: [arm64]
|
||||
os: [linux]
|
||||
requiresBuild: true
|
||||
optional: true
|
||||
|
||||
/@swc/core-linux-x64-gnu@1.4.8:
|
||||
resolution: {integrity: sha512-0WWyIw432wpO/zeGblwq4f2YWam4pn8Z/Ig4KzHMgthR/KmiLU3f0Z7eo45eVmq5vcU7Os1zi/Zb65OOt09q/w==}
|
||||
/@swc/core-linux-x64-gnu@1.4.11:
|
||||
resolution: {integrity: sha512-WA1iGXZ2HpqM1OR9VCQZJ8sQ1KP2or9O4bO8vWZo6HZJIeoQSo7aa9waaCLRpkZvkng1ct/TF/l6ymqSNFXIzQ==}
|
||||
engines: {node: '>=10'}
|
||||
cpu: [x64]
|
||||
os: [linux]
|
||||
requiresBuild: true
|
||||
optional: true
|
||||
|
||||
/@swc/core-linux-x64-musl@1.4.8:
|
||||
resolution: {integrity: sha512-p4yxvVS05rBNCrBaSTa20KK88vOwtg8ifTW7ec/yoab0bD5EwzzB8KbDmLLxE6uziFa0sdjF0dfRDwSZPex37Q==}
|
||||
/@swc/core-linux-x64-musl@1.4.11:
|
||||
resolution: {integrity: sha512-UkVJToKf0owwQYRnGvjHAeYVDfeimCEcx0VQSbJoN7Iy0ckRZi7YPlmWJU31xtKvikE2bQWCOVe0qbSDqqcWXA==}
|
||||
engines: {node: '>=10'}
|
||||
cpu: [x64]
|
||||
os: [linux]
|
||||
requiresBuild: true
|
||||
optional: true
|
||||
|
||||
/@swc/core-win32-arm64-msvc@1.4.8:
|
||||
resolution: {integrity: sha512-jKuXihxAaqUnbFfvPxtmxjdJfs87F1GdBf33il+VUmSyWCP4BE6vW+/ReDAe8sRNsKyrZ3UH1vI5q1n64csBUA==}
|
||||
/@swc/core-win32-arm64-msvc@1.4.11:
|
||||
resolution: {integrity: sha512-35khwkyly7lF5NDSyvIrukBMzxPorgc5iTSDfVO/LvnmN5+fm4lTlrDr4tUfTdOhv3Emy7CsKlsNAeFRJ+Pm+w==}
|
||||
engines: {node: '>=10'}
|
||||
cpu: [arm64]
|
||||
os: [win32]
|
||||
requiresBuild: true
|
||||
optional: true
|
||||
|
||||
/@swc/core-win32-ia32-msvc@1.4.8:
|
||||
resolution: {integrity: sha512-O0wT4AGHrX8aBeH6c2ADMHgagAJc5Kf6W48U5moyYDAkkVnKvtSc4kGhjWhe1Yl0sI0cpYh2In2FxvYsb44eWw==}
|
||||
/@swc/core-win32-ia32-msvc@1.4.11:
|
||||
resolution: {integrity: sha512-Wx8/6f0ufgQF2pbVPsJ2dAmFLwIOW+xBE5fxnb7VnEbGkTgP1qMDWiiAtD9rtvDSuODG3i1AEmAak/2HAc6i6A==}
|
||||
engines: {node: '>=10'}
|
||||
cpu: [ia32]
|
||||
os: [win32]
|
||||
requiresBuild: true
|
||||
optional: true
|
||||
|
||||
/@swc/core-win32-x64-msvc@1.4.8:
|
||||
resolution: {integrity: sha512-C2AYc3A2o+ECciqsJWRgIpp83Vk5EaRzHe7ed/xOWzVd0MsWR+fweEsyOjlmzHfpUxJSi46Ak3/BIZJlhZbXbg==}
|
||||
/@swc/core-win32-x64-msvc@1.4.11:
|
||||
resolution: {integrity: sha512-0xRFW6K9UZQH2NVC/0pVB0GJXS45lY24f+6XaPBF1YnMHd8A8GoHl7ugyM5yNUTe2AKhSgk5fJV00EJt/XBtdQ==}
|
||||
engines: {node: '>=10'}
|
||||
cpu: [x64]
|
||||
os: [win32]
|
||||
requiresBuild: true
|
||||
optional: true
|
||||
|
||||
/@swc/core@1.4.8:
|
||||
resolution: {integrity: sha512-uY2RSJcFPgNOEg12RQZL197LZX+MunGiKxsbxmh22VfVxrOYGRvh4mPANFlrD1yb38CgmW1wI6YgIi8LkIwmWg==}
|
||||
/@swc/core@1.4.11:
|
||||
resolution: {integrity: sha512-WKEakMZxkVwRdgMN4AMJ9K5nysY8g8npgQPczmjBeNK5In7QEAZAJwnyccrWwJZU0XjVeHn2uj+XbOKdDW17rg==}
|
||||
engines: {node: '>=10'}
|
||||
requiresBuild: true
|
||||
peerDependencies:
|
||||
|
@ -3643,30 +3643,26 @@ packages:
|
|||
optional: true
|
||||
dependencies:
|
||||
'@swc/counter': 0.1.3
|
||||
'@swc/types': 0.1.5
|
||||
'@swc/types': 0.1.6
|
||||
optionalDependencies:
|
||||
'@swc/core-darwin-arm64': 1.4.8
|
||||
'@swc/core-darwin-x64': 1.4.8
|
||||
'@swc/core-linux-arm-gnueabihf': 1.4.8
|
||||
'@swc/core-linux-arm64-gnu': 1.4.8
|
||||
'@swc/core-linux-arm64-musl': 1.4.8
|
||||
'@swc/core-linux-x64-gnu': 1.4.8
|
||||
'@swc/core-linux-x64-musl': 1.4.8
|
||||
'@swc/core-win32-arm64-msvc': 1.4.8
|
||||
'@swc/core-win32-ia32-msvc': 1.4.8
|
||||
'@swc/core-win32-x64-msvc': 1.4.8
|
||||
'@swc/core-darwin-arm64': 1.4.11
|
||||
'@swc/core-darwin-x64': 1.4.11
|
||||
'@swc/core-linux-arm-gnueabihf': 1.4.11
|
||||
'@swc/core-linux-arm64-gnu': 1.4.11
|
||||
'@swc/core-linux-arm64-musl': 1.4.11
|
||||
'@swc/core-linux-x64-gnu': 1.4.11
|
||||
'@swc/core-linux-x64-musl': 1.4.11
|
||||
'@swc/core-win32-arm64-msvc': 1.4.11
|
||||
'@swc/core-win32-ia32-msvc': 1.4.11
|
||||
'@swc/core-win32-x64-msvc': 1.4.11
|
||||
|
||||
/@swc/counter@0.1.3:
|
||||
resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==}
|
||||
|
||||
/@swc/types@0.1.5:
|
||||
resolution: {integrity: sha512-myfUej5naTBWnqOCc/MdVOLVjXUXtIA+NpDrDBKJtLLg2shUjBu3cZmB/85RyitKc55+lUUyl7oRfLOvkr2hsw==}
|
||||
|
||||
/@swc/types@0.1.6:
|
||||
resolution: {integrity: sha512-/JLo/l2JsT/LRd80C3HfbmVpxOAJ11FO2RCEslFrgzLltoP9j8XIbsyDcfCt2WWyX+CM96rBoNM+IToAkFOugg==}
|
||||
dependencies:
|
||||
'@swc/counter': 0.1.3
|
||||
dev: true
|
||||
|
||||
/@swc/wasm@1.2.130:
|
||||
resolution: {integrity: sha512-rNcJsBxS70+pv8YUWwf5fRlWX6JoY/HJc25HD/F8m6Kv7XhJdqPPMhyX6TKkUBPAG7TWlZYoxa+rHAjPy4Cj3Q==}
|
||||
|
@ -4790,14 +4786,14 @@ packages:
|
|||
- supports-color
|
||||
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==}
|
||||
engines: {node: ^18.0.0 || >=20.0.0}
|
||||
peerDependencies:
|
||||
vite: ^5.0.0
|
||||
vue: ^3.2.25
|
||||
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)
|
||||
dev: true
|
||||
|
||||
|
@ -4822,7 +4818,7 @@ packages:
|
|||
resolution: {integrity: sha512-aNmNHyLPsw+sVvlQFQ2/8sjNuLtK54TC6cuKnVzAY93ks4ZBrvwQSnkkIh7bsbNhum5hJBS00wSDipQ937f5DA==}
|
||||
dependencies:
|
||||
'@babel/parser': 7.23.9
|
||||
postcss: 8.4.35
|
||||
postcss: 8.4.38
|
||||
source-map: 0.6.1
|
||||
dev: true
|
||||
|
||||
|
@ -5068,8 +5064,8 @@ packages:
|
|||
hasBin: true
|
||||
dev: true
|
||||
|
||||
/adm-zip@0.5.12:
|
||||
resolution: {integrity: sha512-6TVU49mK6KZb4qG6xWaaM4C7sA/sgUMLy/JYMOzkcp3BvVLpW0fXDFQiIzAuxFCt/2+xD7fNIiPFAoLZPhVNLQ==}
|
||||
/adm-zip@0.5.10:
|
||||
resolution: {integrity: sha512-x0HvcHqVJNTPk/Bw8JbLWlWoo6Wwnsug0fnYYro1HBrjxZ3G7/AZk7Ahv8JwDe1uIcz8eBqvu86FuF1POiG7vQ==}
|
||||
engines: {node: '>=6.0'}
|
||||
dev: false
|
||||
|
||||
|
@ -5658,8 +5654,8 @@ packages:
|
|||
resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==}
|
||||
engines: {node: '>= 0.4'}
|
||||
|
||||
/aws-sdk@2.1584.0:
|
||||
resolution: {integrity: sha512-57Qizb+bLOhrBLWQSWw6WXTtbO/lFKzLouHxTfm/QeXm38gs0Q0knFxhdH+sWc/DPPJYSRGy7MNiuQcmsq5zxA==}
|
||||
/aws-sdk@2.1585.0:
|
||||
resolution: {integrity: sha512-zDJ76hivdnBLH2+hXTO0F5y3Sdx5RRSDCf4EqZILZCUkPLTwaVmKmaU6XO3pyhrMTcWk58m7UBgHFyARE5SCkQ==}
|
||||
engines: {node: '>= 10.0.0'}
|
||||
requiresBuild: true
|
||||
dependencies:
|
||||
|
@ -6272,8 +6268,8 @@ packages:
|
|||
dev: false
|
||||
optional: true
|
||||
|
||||
/cbor-x@1.5.8:
|
||||
resolution: {integrity: sha512-gc3bHBsvG6GClCY6c0/iip+ghlqizkVp+TtaL927lwvP4VP9xBdi1HmqPR5uj/Mj/0TOlngMkIYa25wKg+VNrQ==}
|
||||
/cbor-x@1.5.9:
|
||||
resolution: {integrity: sha512-OEI5rEu3MeR0WWNUXuIGkxmbXVhABP+VtgAXzm48c9ulkrsvxshjjk94XSOGphyAKeNGLPfAxxzEtgQ6rEVpYQ==}
|
||||
optionalDependencies:
|
||||
cbor-extract: 2.2.0
|
||||
dev: false
|
||||
|
@ -7581,6 +7577,7 @@ packages:
|
|||
/detect-libc@2.0.2:
|
||||
resolution: {integrity: sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==}
|
||||
engines: {node: '>=8'}
|
||||
dev: true
|
||||
|
||||
/detect-libc@2.0.3:
|
||||
resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==}
|
||||
|
@ -10087,8 +10084,8 @@ packages:
|
|||
engines: {node: '>=0.8.0'}
|
||||
dev: true
|
||||
|
||||
/happy-dom@14.3.1:
|
||||
resolution: {integrity: sha512-uv2mE7jUH0S3cTnDPqNQj+J+Z5wOevqzopc7e8URXtcCH2STubCjPFVyEJ1ONGSv/aL/uvNwo5WWjsinpWpADQ==}
|
||||
/happy-dom@14.3.8:
|
||||
resolution: {integrity: sha512-jP7p/VQJ08lbIoCsw1Adna3RA86eE+2CNkqvJRWIhrKP7XKZ0e0s2TJSt5lwGS4b7x0z0Ztw0A9P4uQGMHPiiA==}
|
||||
engines: {node: '>=16.0.0'}
|
||||
dependencies:
|
||||
entities: 4.5.0
|
||||
|
@ -11272,7 +11269,7 @@ packages:
|
|||
pretty-format: 29.7.0
|
||||
slash: 3.0.0
|
||||
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:
|
||||
- babel-plugin-macros
|
||||
- supports-color
|
||||
|
@ -11867,8 +11864,8 @@ packages:
|
|||
safe-buffer: 5.2.1
|
||||
dev: false
|
||||
|
||||
/katex@0.16.9:
|
||||
resolution: {integrity: sha512-fsSYjWS0EEOwvy81j3vRA8TEAhQhKiqO+FQaKWp0m39qwOzHVBgAUBIXWj1pB+O2W3fIpNa6Y9KSKCVbfPhyAQ==}
|
||||
/katex@0.16.10:
|
||||
resolution: {integrity: sha512-ZiqaC04tp2O5utMsl2TEZTXxa6WSC4yo0fv5ML++D3QZv/vx2Mct0mTlRx3O+uUkjfuAgOkzsCmq5MiUEsDDdA==}
|
||||
hasBin: true
|
||||
dependencies:
|
||||
commander: 8.3.0
|
||||
|
@ -13077,7 +13074,7 @@ packages:
|
|||
hasBin: true
|
||||
requiresBuild: true
|
||||
dependencies:
|
||||
detect-libc: 2.0.2
|
||||
detect-libc: 2.0.3
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
|
@ -16027,15 +16024,15 @@ packages:
|
|||
whet.extend: 0.9.9
|
||||
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==}
|
||||
peerDependencies:
|
||||
'@swc/core': ^1.2.147
|
||||
webpack: '>=2'
|
||||
dependencies:
|
||||
'@swc/core': 1.4.8
|
||||
'@swc/core': 1.4.11
|
||||
'@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
|
||||
|
||||
/swiper@11.0.7:
|
||||
|
@ -16122,7 +16119,7 @@ packages:
|
|||
engines: {node: '>=14.16'}
|
||||
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==}
|
||||
engines: {node: '>= 10.13.0'}
|
||||
peerDependencies:
|
||||
|
@ -16139,12 +16136,12 @@ packages:
|
|||
optional: true
|
||||
dependencies:
|
||||
'@jridgewell/trace-mapping': 0.3.20
|
||||
'@swc/core': 1.4.8
|
||||
'@swc/core': 1.4.11
|
||||
jest-worker: 27.5.1
|
||||
schema-utils: 3.3.0
|
||||
serialize-javascript: 6.0.1
|
||||
terser: 5.27.0
|
||||
webpack: 5.91.0(@swc/core@1.4.8)
|
||||
webpack: 5.91.0(@swc/core@1.4.11)
|
||||
dev: true
|
||||
|
||||
/terser@5.19.2:
|
||||
|
@ -16466,10 +16463,10 @@ packages:
|
|||
semver: 7.6.0
|
||||
source-map: 0.7.4
|
||||
typescript: 5.4.3
|
||||
webpack: 5.91.0(@swc/core@1.4.8)
|
||||
webpack: 5.91.0(@swc/core@1.4.11)
|
||||
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==}
|
||||
hasBin: true
|
||||
peerDependencies:
|
||||
|
@ -16484,7 +16481,7 @@ packages:
|
|||
optional: true
|
||||
dependencies:
|
||||
'@cspotcode/source-map-support': 0.8.1
|
||||
'@swc/core': 1.4.8
|
||||
'@swc/core': 1.4.11
|
||||
'@tsconfig/node10': 1.0.9
|
||||
'@tsconfig/node12': 1.0.11
|
||||
'@tsconfig/node14': 1.0.3
|
||||
|
@ -16772,7 +16769,7 @@ packages:
|
|||
pg: 8.11.3
|
||||
reflect-metadata: 0.2.1
|
||||
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
|
||||
uuid: 9.0.1
|
||||
yargs: 17.7.2
|
||||
|
@ -17116,7 +17113,7 @@ packages:
|
|||
replace-ext: 1.0.1
|
||||
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==}
|
||||
peerDependencies:
|
||||
vite: '>=2.0.0'
|
||||
|
@ -17124,13 +17121,13 @@ packages:
|
|||
chalk: 4.1.2
|
||||
debug: 4.3.4(supports-color@8.1.1)
|
||||
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:
|
||||
- supports-color
|
||||
dev: true
|
||||
|
||||
/vite@5.2.4(@types/node@20.11.30)(sass@1.72.0):
|
||||
resolution: {integrity: sha512-vjFghvHWidBTinu5TCymJk/lRHlR5ljqB83yugr0HA1xspUPdOZHqbqDLnZ8f9/jINrtFHTCYYyIUi+o+Q5iyg==}
|
||||
/vite@5.2.6(@types/node@20.11.30)(sass@1.72.0):
|
||||
resolution: {integrity: sha512-FPtnxFlSIKYjZ2eosBQamz4CbyrTizbZ3hnGJlh/wMtCrlp1Hah6AzBLjGI5I2urTfNnpovpHdrL6YRuBOPnCA==}
|
||||
engines: {node: ^18.0.0 || >=20.0.0}
|
||||
hasBin: true
|
||||
peerDependencies:
|
||||
|
@ -17340,7 +17337,7 @@ packages:
|
|||
engines: {node: '>=10.13.0'}
|
||||
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==}
|
||||
engines: {node: '>=10.13.0'}
|
||||
hasBin: true
|
||||
|
@ -17371,7 +17368,7 @@ packages:
|
|||
neo-async: 2.6.2
|
||||
schema-utils: 3.3.0
|
||||
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
|
||||
webpack-sources: 3.2.3
|
||||
transitivePeerDependencies:
|
||||
|
|
Loading…
Reference in New Issue