Merge branch 'develop' into firefish-docs/develop

This commit is contained in:
naskya 2024-03-07 04:09:38 +09:00
commit 9ddc5096b3
No known key found for this signature in database
GPG key ID: 712D413B3A9FED5C
61 changed files with 369 additions and 271 deletions

View file

@ -2,7 +2,6 @@
"recommendations": [
"editorconfig.editorconfig",
"vue.volar",
"vue.vscode-typescript-vue-plugin",
"arcanis.vscode-zipfs",
"orta.vscode-twoslash-queries",
"antfu.iconify",

View file

@ -60,7 +60,7 @@ For install production environment details, read [this document](https://firefis
## Dependencies
- At least [NodeJS](https://nodejs.org/en/) v18.16.0 (v20/v21 recommended)
- At least [NodeJS](https://nodejs.org/en/) v18.17.0 (v20/v21 recommended)
- At least [PostgreSQL](https://www.postgresql.org/) v12 (v16 recommended) with [PGroonga](https://pgroonga.github.io/) extension
- At least [Redis](https://redis.io/) v7
- Web Proxy (one of the following)

View file

@ -0,0 +1,10 @@
# Firefish's ActivityPub extensions
These are the extensions to ActivityPub that Firefish implements. This page uses [compact IRIs](https://www.w3.org/TR/json-ld/#dfn-compact-iri). The `firefish` prefix is used to refer to `https://firefish.dev/ns#`.
## speakAsCat
- Compact IRI: `firefish:speakAsCat`
- Canonical IRI: `https://firefish.dev/ns#speakascat`
Used on actors to indicate that they not only identify as a cat, but also want to have their text be transformed to speak like one, expressed as a boolean value. If this property is set to true, displaying the actors posts will make them speak with “nya” instead of “na” and other cat-related text mannerisms. Used in combination with [misskey:isCat](https://misskey-hub.net/ns/#iscat).

View file

@ -8,6 +8,10 @@ Critical security updates are indicated by the :warning: icon.
- Refactoring
- Show unlisted posts from following users in antennas (similar to [Fedibird](https://github.com/fedibird/mastodon/tree/fedibird) and [kmyblue](https://github.com/kmycode/mastodon), unlisted posts from people you don't follow won't be shown)
- Add ability to publish the Local and Global timelines on `/timeline` page
- Add langage annotation to post contents (!10687)
- Add a toggleable setting to show a warning when you attempt to post files without alt text
- Fix bugs
- Update documents
## v20240301

View file

@ -4,6 +4,9 @@ The full-text search engine used in Firefish has been changed to [PGroonga](http
## For systemd/pm2 users
- 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.
### 1. Install PGroonga
Please execute `psql --version` to check your PostgreSQL major version. This will print a message like this:

View file

@ -14,8 +14,8 @@ unpin: Откачане от профила
copyLink: Копиране на връзката
pin: Закачане в профила
deleted: Изтрито
deleteAndEditConfirm: Сигурен ли си, че искаш да изтриеш тази публикация и да я редактираш?
Ще загубиш всички реакции, подсилвания и отговори към нея.
deleteAndEditConfirm: Сигурни ли сте, че искате да изтриете тази публикация и да я
редактирате? Ще загубите всички реакции, подсилвания и отговори към нея.
copyUsername: Копиране на потребителското име
searchUser: Търсене на потребител
reply: Отговор
@ -549,8 +549,8 @@ _sfx:
antenna: Антени
note: Нова публикация
_permissions:
"read:favorites": Виж списъка си с отметки
"write:favorites": Редактирай списъка си с отметки
"read:favorites": Преглед на списъка ви с отметки
"write:favorites": Редактиране на списъка ви с отметки
_visibility:
followers: Последователи
specified: Директна
@ -595,18 +595,18 @@ _tutorial:
step5_1: Инфопотоци, инфопотоци навсякъде!
step3_1: Сега е време да последвате няколко хора!
step1_2: Нека да ви настроим. Ще бъдете готови за нула време!
step5_3: Началният {icon} инфопоток е мястото, където можеш да видиш публикации
от акаунтите, които следваш.
step5_3: Началният {icon} инфопоток е мястото, където можете да видите публикации
от акаунтите, които следвате.
step6_1: И така, какво е това място?
step5_7: Глобалният {icon} инфопоток е мястото, където можете да видиш публикации
step5_7: Глобалният {icon} инфопоток е мястото, където можете да видите публикации
от всеки друг свързан сървър.
step4_2: За първата си публикация някои хора обичат да правят публикация {introduction}
или просто „Здравей свят!“
step5_2: Вашият сървър има активирани {timelines} различни инфопотоци.
step5_4: Местният {icon} инфопоток е мястото, където можеш да видиш публикации от
всички останали на този сървър.
step5_4: Местният {icon} инфопоток е мястото, където можете да видите публикации
от всички останали на този сървър.
step5_5: Социалният {icon} инфопоток е комбинация от Началния и Местния инфопоток.
step5_6: Препоръчаният {icon} инфопоток е мястото, където можеш да видиш публикации
step5_6: Препоръчаният {icon} инфопоток е мястото, където можете да видите публикации
от сървъри, препоръчани от администраторите.
step6_4: Сега отидете, изследвайте и се забавлявайте!
step6_3: Всеки сървър работи по различни начини и не всички сървъри работят с Firefish.
@ -663,7 +663,7 @@ operations: Операции
mutedUsers: Заглушени потребители
imageUrl: URL адрес на изображение
announcements: Оповестявания
removeAreYouSure: Сигурен ли си, че искаш да премахнеш "{x}"?
removeAreYouSure: Сигурни ли сте, че искате да премахнете "{x}"?
fromUrl: От URL адрес
manageGroups: Управление на групи
nUsersRead: прочетено от {n}
@ -758,7 +758,7 @@ reload: Опресняване
invites: Покани
blockedInstances: Блокирани сървъри
inMb: В мегабайти
unfollowConfirm: Сигурен ли си, че искаш да спреш да следваш {name}?
unfollowConfirm: Сигурни ли сте, че искате да прекратите следването на {name}?
somethingHappened: Възникна грешка
pageLoadError: Възникна грешка при зареждането на страницата.
enterListName: Въведи име за списъка
@ -768,9 +768,9 @@ selectChannel: Избор на канал
all: Всичко
muteAndBlock: Заглушени и блокирани
blockedUsers: Блокирани потребители
noteDeleteConfirm: Сигурен ли си, че искаш да изтриеш тази публикация?
noteDeleteConfirm: Сигурни ли сте, че искате да изтриете тази публикация?
hiddenTags: Скрити хаштагове
deleteAreYouSure: Сигурен ли си, че искаш да изтриеш "{x}"?
deleteAreYouSure: Сигурни ли сте, че искате да изтриете "{x}"?
startMessaging: Започване на нов чат
uploadFromUrl: Качване от URL адрес
instanceName: Име на сървъра
@ -778,7 +778,6 @@ instanceDescription: Описание на сървъра
accept: Приемане
enableLocalTimeline: Включване на местния инфопоток
enableGlobalTimeline: Включване на глобалния инфопоток
findOtherInstance: Намиране на друг сървър
removeMember: Премахване на член
isAdmin: Администратор
isModerator: Модератор
@ -858,3 +857,13 @@ apply: Прилагане
selectAccount: Избор на акаунт
muteThread: Заглушаване на нишката
ffVisibility: Видимост на Последвани/Последователи
renoteMute: Заглушаване на подсилванията в инфопотоците
replyMute: Заглушаване на отговорите в инфопотоците
blockConfirm: Сигурни ли сте, че искате да блокирате този акаунт?
appearance: Облик
fontSize: Размер на шрифта
describeFile: Добавяне на описание
unblockConfirm: Сигурни ли сте, че искате да отблокирате този акаунт?
followConfirm: Сигурни ли сте, че искате да последвате {name}?
accountMoved: 'Потребителят се премести на нов акаунт:'
inputNewDescription: Въведете ново описание

View file

@ -15,10 +15,10 @@ ok: "ঠিক"
gotIt: "বুঝেছি"
cancel: "বাতিল"
enterUsername: "ইউজারনেম লিখুন"
renotedBy: "{user} রিনোট করেছেন"
noNotes: "কোন নোট নেই"
renotedBy: "{user} দ্বারা বুস্ট করা হয়েছে"
noNotes: "No posts"
noNotifications: "কোনো বিজ্ঞপ্তি নেই"
instance: "ইন্সট্যান্স"
instance: "সার্ভার"
settings: "সেটিংস"
basicSettings: "সাধারণ সেটিংস"
otherSettings: "অন্যান্য সেটিংস"
@ -46,8 +46,8 @@ copyContent: "বিষয়বস্তু কপি করুন"
copyLink: "লিঙ্ক কপি করুন"
delete: "মুছুন"
deleteAndEdit: "মুছুন এবং সম্পাদনা করুন"
deleteAndEditConfirm: "আপনি কি এই নোটটি মুছে এটি সম্পাদনা করার বিষয়ে নিশ্চিত? আপনি
এটির সমস্ত রিঅ্যাকশন, রিনোট এবং জবাব হারাবেন।"
deleteAndEditConfirm: "আপনি কি এই পোস্টটি মুছে ফেলার এবং এটি সম্পাদনা করার বিষয়ে
নিশ্চিত? আপনি এটির সমস্ত প্রতিক্রিয়া, বুস্ট এবং উত্তর হারাবেন।"
addToList: "লিস্ট এ যোগ করুন"
sendMessage: "একটি বার্তা পাঠান"
copyUsername: "ব্যবহারকারীর নাম কপি করুন"
@ -61,18 +61,18 @@ receiveFollowRequest: "অনুসরণ করার জন্য অনুর
followRequestAccepted: "অনুসরণ করার অনুরোধ গৃহীত হয়েছে"
mention: "উল্লেখ"
mentions: "উল্লেখসমূহ"
directNotes: "ডাইরেক্ট নোটগুলি"
importAndExport: "আমদানি এবং রপ্তানি"
import: "আমদানি করুণ"
export: "রপ্তানি"
directNotes: "প্রত্যক্ষ বার্তা"
importAndExport: "ডেটা ইমপোর্ট/এক্সপোর্ট"
import: "ইমপোর্ট করুণ"
export: "এক্সপোর্ট করুন"
files: "ফাইলগুলি"
download: "ডাউনলোড"
driveFileDeleteConfirm: "আপনি কি নিশ্চিত যে আপনি \"{name}\" ডিলিট করতে চান? যে সকল
নোটের সাথে এই ফাইলটি সংযুক্ত সেগুলোও ডিলিট করা হবে।"
পোস্ট এর সাথে এই ফাইলটি সংযুক্ত সেগুলোও ডিলিট করা হবে।"
unfollowConfirm: "{name} কে আনফলোও করার ব্যাপারে নিশ্চিত?"
exportRequested: "আপনার তথ্যসমূহ রপ্তানির জন্য অনুরোধ করেছেন। এতে কিছু সময় লাগতে পারে।
রপ্তানি সম্পন্ন হলে তা আপনার ড্রাইভে সংরক্ষিত হবে।"
importRequested: "আপনার তথ্যসমূহ আমদানির জন্য অনুরোধ করেছেন। এতে কিছু সময় লাগতে পারে। "
exportRequested: "আপনার তথ্যসমূহ এক্সপোর্ট জন্য অনুরোধ করেছেন। এতে কিছু সময় লাগতে
পারে। এক্সপোর্ট সম্পন্ন হলে তা আপনার ড্রাইভে সংরক্ষিত হবে।"
importRequested: "আপনার তথ্যসমূহ আমদানির জন্য অনুরোধ করেছেন। এতে কিছু সময় লাগতে পারে।"
lists: "লিস্ট"
noLists: "কোন লিস্ট নেই"
note: "নোট"
@ -87,7 +87,7 @@ somethingHappened: "একটি ত্রুটি হয়েছে"
retry: "আবার চেষ্টা করুন"
pageLoadError: "পেজ লোড করা যায়নি"
pageLoadErrorDescription: "এটি সাধারনত নেটওয়ার্কের সমস্যার বা ব্রাউজার ক্যাশের কারণে
ঘটে থাকে। ব্রাউজার এর ক্যাশ পরিষ্কার করুন এবং একটু পর আবার চেষ্টা করুন। "
ঘটে থাকে। ব্রাউজার এর ক্যাশ পরিষ্কার করুন এবং একটু পর আবার চেষ্টা করুন।"
serverIsDead: "এই সার্ভার বর্তমানে সাড়া দিচ্ছে না। একটু পরে আবার চেষ্টা করুন।"
youShouldUpgradeClient: "এই পেজ দেখার জন্য আপনার ব্রাউজার রিফ্রেশ করে ক্লায়েন্ট আপডেট
করুন। "
@ -102,13 +102,13 @@ unfollow: "অনুসরণ বাতিল"
followRequestPending: "অনুসরণ করার অনুরোধ বিচারাধীন"
enterEmoji: "ইমোজি প্রবেশ করান"
renote: "রিনোট"
unrenote: "রিনোট সরান "
renoted: "রিনোট করা হয়েছে"
cantRenote: "এই নোটটি রিনোট করা যাবে না।"
cantReRenote: "রিনোটকে রিনোট করা যাবে না।"
quote: "উদ্ধৃতি"
pinnedNote: "পিন করা নোট"
pinned: "পিন করা"
unrenote: "বুস্ট ফিরিয়ে নিন"
renoted: "বুস্ট করা হয়েছে।"
cantRenote: "এই পোস্টটি বুস্ট করা যাবে না।"
cantReRenote: "বুস্টকে বুস্ট করা যাবে না।"
quote: "উক্তি"
pinnedNote: "পিন করা পোস্ট"
pinned: "প্রোফাইলে পিন করুন"
you: "আপনি"
clickToShow: "দেখার জন্য ক্লিক করুন"
sensitive: "সংবেদনশীল বিষয়বস্তু"
@ -1761,3 +1761,14 @@ _deck:
list: "লিস্ট"
mentions: "উল্লেখসমূহ"
direct: "ডাইরেক্ট নোটগুলি"
removeReaction: আপনার প্রতিক্রিয়া সরান
addInstance: একটি সার্ভার যোগ করুন
deleted: মুছে ফেলা হয়েছে
editNote: পোস্ট এডিট করুন
edited: '{date} {time} এ সম্পাদিত'
searchPlaceholder: ফায়ারফিশে খুঁজুন
noThankYou: না, ধন্যবাদ
cw: সতর্কবার্তা
replies: উত্তর
quotes: উক্তি গুলো
reactions: প্রতিক্রিয়াগুলি

View file

@ -2031,6 +2031,7 @@ _wordMute:
de temps.
muteLangs: Llenguatges silenciats
muteLangsDescription: Separar amb espais o línies no es per una condició OR.
mutePatterns: Patrons per silenciar
_auth:
shareAccessAsk: Estàs segur que vols autoritzar aquesta aplicació per accedir al
teu compte?
@ -2066,7 +2067,6 @@ _relayStatus:
deleted: Eliminat
editNote: Edita la publicació
edited: 'Editat el {date} {time}'
findOtherInstance: Cercar un altre servidor
signupsDisabled: Actualment, les inscripcions en aquest servidor estan desactivades,
però sempre podeu registrar-vos en un altre servidor. Si teniu un codi d'invitació
per a aquest servidor, introduïu-lo a continuació.
@ -2244,3 +2244,16 @@ noSentFollowRequests: No tens cap sol·licitud de seguiment enviada
sentFollowRequests: Enviar sol·licituds de seguiment
replyMute: Silencia les respostes a les línies de temps
replyUnmute: Treu el silencia de les respostes a les línies de temps
searchWordsDescription: "Per cercar publicacions, escriu el terme a buscar. Separa
les paraules amb espais per fer condicions AND o escriules dins de cometes per fer
una cerca OR.\nPer exemple, 'dia nit' trobarà publicacions que continguin tan 'dia'
com 'nit', i 'dia OR nit' trobaran publicacions que continguin tan 'dia' com 'nit'
o ambdues.\nPots combinar condicions AND/OR per exemple '(dia OR nit) endormiscar'.\n
\nSi vols anar a una pàgina d'usuari o publicació en concret, escriu la adreça URL
o la ID en aquest camp i fes clic al botó 'Trobar'. Fent clic a 'Cercar' trobarà
publicacions que, literalment , continguin la ID/adreça URL."
searchPostsWithFiles: Només publicacions amb fitxers
searchCwAndAlt: Inclou avisos de contingut i arxius amb descripcions.
searchUsers: Publicat per (opcional)
searchRange: Publicat dintre de (opcional)
publishTimelines: Publica línies de temps per visitants

View file

@ -2024,7 +2024,6 @@ moveAccountDescription: 'Dieser Vorgang kann nicht rückgängig gemacht werden!
sie vor dem Umzug dieses Nutzerkontos sicher, dass Sie einen Namen für Ihr neues
Nutzerkonto eingerichtet haben. Bitte geben sie die Bezeichnung des neuen Nutzerkontos
wie folgt ein: @name@server.xyz'
findOtherInstance: Einen anderen Server finden
sendPushNotificationReadMessage: Löschung der Push-Benachrichtigungen sobald die entsprechenden
Benachrichtigungen oder Nachrichten gelesen wurden
signupsDisabled: Derzeit sind keine Anmeldungen auf diesem Server möglich! Anmeldungen

View file

@ -59,6 +59,7 @@ copyUsername: "Copy username"
searchUser: "Search for a user"
reply: "Reply"
replies: "Replies"
toReply: "Reply"
jumpToPrevious: "Jump to previous"
loadMore: "Load more"
showMore: "Show more"
@ -89,6 +90,7 @@ listsDesc: "Lists let you create timelines with specified users. They can be acc
noLists: "You don't have any lists"
note: "Post"
notes: "Posts"
toPost: "Post"
following: "Following"
followers: "Followers"
followsYou: "Follows you"
@ -121,6 +123,7 @@ cantRenote: "This post can't be boosted."
cantReRenote: "A boost can't be boosted."
quote: "Quote"
quotes: "Quotes"
toQuote: "Quote"
pinnedNote: "Pinned post"
pinned: "Pin to profile"
you: "You"
@ -671,6 +674,7 @@ pluginTokenRequestedDescription: "This plugin will be able to use the permission
set here."
notificationType: "Notification type"
edit: "Edit"
toEdit: "Edit"
emailServer: "Email server"
enableEmail: "Enable email distribution"
emailConfigInfo: "Used to confirm your email during sign-up or if you forget your
@ -1104,10 +1108,8 @@ customKaTeXMacroDescription: "Set up macros to write mathematical expressions ea
advanced syntax, such as conditional branching, cannot be used here."
enableCustomKaTeXMacro: "Enable custom KaTeX macros"
noteId: "Post ID"
signupsDisabled: "Signups on this server are currently disabled, but you can always
sign up at another server! If you have an invitation code for this server, please
enter it below."
findOtherInstance: "Find another server"
signupsDisabled: "Signups on this server are currently disabled. If you have an invitation
code for this server, please enter it below."
apps: "Apps"
sendModMail: "Send Moderation Notice"
preventAiLearning: "Prevent AI bot scraping"
@ -1214,6 +1216,8 @@ searchCwAndAlt: "Include content warnings and file descriptions"
publishTimelines: "Publish timelines for visitors"
publishTimelinesDescription: "If enabled, the Local and Global timeline will be shown
on {url} even when signed out."
noAltTextWarning: "Some attached file(s) have no description. Did you forget to write?"
showNoAltTextWarning: "Show a warning if you attempt to post files without a description"
_emojiModPerm:
unauthorized: "None"
@ -2216,3 +2220,4 @@ _iconSets:
moreUrls: "Pinned pages"
moreUrlsDescription: "Enter the pages you want to pin to the help menu in the lower
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."

View file

@ -1985,7 +1985,6 @@ deleted: Eliminado
edited: 'Editado a las {date} {time}'
editNote: Editar publicación
silenceThisInstance: Silenciar este servidor
findOtherInstance: Buscar otro servidor
userSaysSomethingReasonRenote: '{name} impulsó una publicación que contiene {reason]'
enableRecommendedTimeline: Habilitar línea de tiempo "Recomendado"
searchPlaceholder: Buscar en Firefish

View file

@ -2090,7 +2090,6 @@ _experiments:
de leurs anciens comptes Firefish, Misskey, Mastodon, Akkoma et Pleroma. Cela
peut entraîner des ralentissements lors du chargement si votre file d'attente
est congestionnée.
findOtherInstance: Trouver un autre serveur
userSaysSomethingReasonQuote: '{name} a cité une publication contenant {reason}'
signupsDisabled: Les inscriptions sur ce serveur sont actuellement désactivés, mais
vous pouvez toujours vous inscrire sur un autre serveur ! Si vous avez un code d'invitation

View file

@ -2007,7 +2007,6 @@ enterSendsMessage: Tekan Enter pada Pesan untuk mengirim pesan (matikan dengan C
+ Enter)
showAdminUpdates: Indikasi versi Firefish baru tersedia (hanya admin)
noteId: ID Postingan
findOtherInstance: Cari server lain
caption: Deskripsi itomatis
splash: Layar Percik
migration: Migrasi

View file

@ -1839,7 +1839,6 @@ customKaTeXMacro: Macro KaTeX personalizzate
signupsDisabled: Le iscrizioni su questo server al momento non sono possibili, ma
puoi sempre iscriverti su un altro server! Se invece hai un codice di invito per
questo server, inseriscilo qua sotto.
findOtherInstance: Scegli un altro server
apps: App
expandOnNoteClick: Apri i post con un click
userSaysSomethingReasonReply: '{name} ha risposto a un post che contiene {reason}'

View file

@ -53,6 +53,7 @@ copyUsername: "ユーザー名をコピー"
searchUser: "ユーザーを検索"
reply: "返信"
replies: "返信"
toReply: "返信"
loadMore: "もっと読み込む"
showMore: "もっと見る"
showLess: "閉じる"
@ -75,6 +76,7 @@ lists: "リスト"
noLists: "リストはありません"
note: "投稿"
notes: "投稿"
toPost: "投稿する"
following: "フォロー"
followers: "フォロワー"
followsYou: "フォローされています"
@ -105,6 +107,7 @@ cantRenote: "この投稿はブーストできません。"
cantReRenote: "ブーストをブーストすることはできません。"
quote: "引用"
quotes: "引用"
toQuote: "引用"
pinnedNote: "ピン留めされた投稿"
pinned: "ピン留め"
you: "あなた"
@ -606,6 +609,7 @@ tokenRequested: "アカウントへのアクセス許可"
pluginTokenRequestedDescription: "このプラグインはここで設定した権限を行使できるようになります。"
notificationType: "通知の種類"
edit: "編集"
toEdit: "編集する"
emailServer: "メールサーバー"
enableEmail: "メール配信機能を有効化する"
emailConfigInfo: "メールアドレスの確認やパスワードリセットの際に使います"
@ -1018,6 +1022,8 @@ searchPostsWithFiles: "添付ファイルのある投稿のみ"
searchCwAndAlt: "閲覧注意の注釈と添付ファイルの代替テキストも検索する"
publishTimelines: "非ログインユーザーにもタイムラインを公開する"
publishTimelinesDescription: "有効にすると、{url} でローカルタイムラインとグローバルタイムラインが公開されます。"
noAltTextWarning: "説明が書かれていない添付ファイルがあります。書き忘れてはいませんか?"
showNoAltTextWarning: "説明が書かれていない添付ファイルを投稿しようとした場合に警告する"
_sensitiveMediaDetection:
description: "機械学習を使って自動でセンシティブなメディアを検出し、モデレーションに役立てられます。サーバーの負荷が少し増えます。"
@ -1941,9 +1947,7 @@ sendModMail: モデレーション通知を送る
deleted: 削除済み
editNote: 投稿を編集
edited: '編集済み: {date} {time}'
signupsDisabled:
現在、このサーバーでは新規登録が一般開放されていません。招待コードをお持ちの場合には、以下の欄に入力してください。招待コードをお持ちでない場合にも、新規登録を開放している他のサーバーには入れますよ!
findOtherInstance: 他のサーバーを探す
signupsDisabled: 現在、このサーバーでは新規登録が一般開放されていません。招待コードをお持ちの場合には、以下の欄に入力してください。
newer: 新しい投稿
older: 古い投稿
accessibility: アクセシビリティ

View file

@ -1824,7 +1824,6 @@ pushNotificationNotSupported: 브라우저 및 서버가 푸시 알림을 지원
enableRecommendedTimeline: 추천 타임라인을 활성화
pushNotificationAlreadySubscribed: 푸시 알림이 활성화되었습니다
caption: 자동으로 설명 붙이기
findOtherInstance: 다른 서버 둘러보기
enableIdenticonGeneration: 유저 별 Identicon의 생성을 활성화
secureModeInfo: 인증 정보가 없는 리모트 서버로부터의 요청에 응답하지 않습니다.
allowedInstances: 허가된 서버

View file

@ -1196,7 +1196,6 @@ customKaTeXMacroDescription: 'Sett opp makroer for å skrive matematiske uttrykk
signupsDisabled: Registreringer av nye konti på denne tjeneren er slått av, men du
kan alltids registrere deg på en annen tjener! Hvis du har en invitasjonskode for
denne tjeneren, skriv den inn under.
findOtherInstance: Finn en annen tjener
preventAiLearningDescription: Ber tredjeparts AI-språkmodeller om å ikke bruke innhold
du laster opp, sliks om poster og bilder.
enableCustomKaTeXMacro: Slå på egne KaTeX-makroer

View file

@ -1992,7 +1992,6 @@ deleted: Usunięte
editNote: Edytuj wpis
edited: 'Edytowano o {date} {time}'
silenced: Wyciszony
findOtherInstance: Znajdź inny serwer
userSaysSomethingReasonReply: '{name} odpowiedział na wpis zawierający {reason}'
userSaysSomethingReasonRenote: '{name} podbił post zawierający {reason}'
signupsDisabled: Rejestracja na tym serwerze jest obecnie zamknięta, ale zawsze możesz

View file

@ -2086,7 +2086,6 @@ enableServerMachineStats: Включить статистику серверно
enableIdenticonGeneration: Включить генерацию Identicon
reactionPickerSkinTone: Предпочитаемый цвет кожи эмодзи
sendModMail: Отправить сообщение о модерации
findOtherInstance: Найти другой сервер
signupsDisabled: Регистрация на этом сервере сейчас отключена, но вы всегда можете
зарегистрироваться на другом сервере! Если у вас есть код приглашения на этот сервер,
пожалуйста, введите его ниже.

View file

@ -1288,7 +1288,6 @@ customMOTD: ข้อความหน้าจอเริ่มต้นท
swipeOnMobile: อนุญาตให้ปัดระหว่างหน้า
breakFollowConfirm: คุณแน่ใจหรือไม่ที่จะลบผู้ติดตาม?
defaultReaction: ค่าเริ่มต้นของปฏิกิริยาอีโมจิสำหรับโพสต์ขาออกและขาเข้า
findOtherInstance: ค้นหาเซิร์ฟเวอร์อื่น
silenceThisInstance: ปิดเงียบสำหรับเซิร์ฟเวอร์นี้
antennaInstancesDescription: เขียนชื่อเซิร์ฟเวอร์ได้ 1 ชื่อต่อ 1 บรรทัด
splash: หน้าจอเริ่มต้น

View file

@ -1284,7 +1284,6 @@ _emailUnavailable:
used: Bu mail zaten kullanılıyor
format: Bu mail adresi yanlış
apps: Uygulamalar
findOtherInstance: Başka bir sunucu bul
showWithSparkles: Parıltılarla göster
showPopup: Kullanıcıları pop-up ile bilgilendirin
silencedWarning: Bu sayfa, bu kullanıcılar yöneticinizin susturduğu sunuculardan olduğu

View file

@ -1977,7 +1977,6 @@ license: Ліцензія
signupsDisabled: Реєстрація на цьому сервері наразі відключена, але ви завжди можете
зареєструватися на іншому сервері! Якщо у вас є код запрошення на цей сервер, будь
ласка, введіть його нижче.
findOtherInstance: Знайти інший сервер
customKaTeXMacro: Користувацькі макроси KaTeX
enableCustomKaTeXMacro: Увімкнути користувацькі макроси KaTeX
apps: Додатки

View file

@ -1908,7 +1908,6 @@ renoteMute: Ẩn lượt chia sẻ
renoteUnmute: Bỏ ẩn lượt chia sẻ
searchPlaceholder: Lướt Firefish
edited: Đã sửa {date} {time}
findOtherInstance: Tìm máy chủ khác
noThankYou: Từ chối
_filters:
withFile: Có file

View file

@ -50,6 +50,7 @@ copyUsername: "复制用户名"
searchUser: "搜索用户"
reply: "回复"
replies: "回复"
toReply: "回复"
loadMore: "加载更多"
showMore: "查看更多"
showLess: "关闭"
@ -70,8 +71,9 @@ exportRequested: "导出请求已提交,这可能需要花一些时间,导
importRequested: "导入请求已提交,这可能需要花一点时间。"
lists: "列表"
noLists: "列表为空"
note: "帖"
note: ""
notes: "帖子"
toPost: "发帖"
following: "关注中"
followers: "关注者"
followsYou: "关注了您"
@ -103,6 +105,7 @@ cantRenote: "此帖子无法被转发。"
cantReRenote: "转发无法被再次转发。"
quote: "引用"
quotes: "引用"
toQuote: "引用"
pinnedNote: "已置顶的帖子"
pinned: "置顶"
you: "您"
@ -589,6 +592,7 @@ tokenRequested: "允许访问账号"
pluginTokenRequestedDescription: "此插件将能够拥有这里设置的权限。"
notificationType: "通知类型"
edit: "编辑"
toEdit: "编辑"
emailServer: "邮件服务器"
enableEmail: "启用发送邮件功能"
emailConfigInfo: "用于确认电子邮件和密码重置"
@ -1912,10 +1916,9 @@ _skinTones:
mediumDark: 中等偏深
isModerator: 监察员
isAdmin: 管理员
findOtherInstance: 寻找其它服务器
moveFromDescription: 这将为您的旧账号设置一个别名,以便您可以从该旧账号迁移到当前账号。在从旧账号迁移之前执行此操作。请输入格式如 @person@server.com
的账号标签
signupsDisabled: 该服务器目前关闭注册,但您随时可以在另一台服务器上注册!如果您有该服务器的邀请码,请在下面输入。
signupsDisabled: 该服务器目前关闭注册如果您有该服务器的邀请码,请在下面输入。
silencedWarning: 显示这个页面是因为这些用户来自您的管理员设置的禁言服务器,所以他们有可能是垃圾信息。
isBot: 这个账号是一个自动化账号
moveAccountDescription: 这个过程是不可逆的。在迁移之前,请确保您已在新账号上为当前账号设置了别名。请输入格式如 @person@server.com
@ -2030,7 +2033,7 @@ emojiModPermDescription: "添加:允许该用户添加新的自定义表情符
权限的基础上,允许该用户编辑现有自定义表情符号的名称/类别/标签/授权。\n全部允许在 “添加和编辑” 权限的基础上,允许该用户删除现有的自定义表情符号。"
replyMute: 静音回复
replyUnmute: 取消静音回复
searchWords: 要搜索的词 / ID 或者要查找的 URL
searchWords: 要搜索的关键词 / 要查询的用户 ID 或 URL
searchRange: 发表于(可选)
searchUsers: 发布者(可选)
searchUsersDescription: "要搜索特定用户/服务器的帖子,请输入 ID@user@example.com或 @user 对于本地用户或域名example.com。\n
@ -2039,10 +2042,11 @@ searchPostsWithFiles: 只带有文件的帖子
searchCwAndAlt: 包括内容警告和文件描述
publishTimelines: 为访客发布时间线
publishTimelinesDescription: 如果启用,在用户登出时本地和全局时间线也会显示在 {url} 上。
searchWordsDescription: "要搜索帖子,请输入搜索词。交集搜索用空格分隔单词,并集搜索单词之间用 OR 分隔。\n例如 '早上 晚上' 将查找包含
'早上' 和 '晚上' 的帖子,而 '早上 OR 晚上' 将查找包含 '早上' 或 '晚上' (以及同时包含两者)的帖子。\n您还可以组合交集/并集条件,例如
'(早上 OR 晚上) 困了' 。\n\n如果您想转到特定的用户页面或帖子页面请在此字段中输入 ID 或 URL然后单击 “查找” 按钮。 单击 “搜索”
将搜索字面包含 ID/URL 的帖子。"
searchWordsDescription: "要搜索帖子,请输入关键词。交集搜索关键词之间使用空格进行区分,并集搜索关键词之间使用 OR 进行区分。\n例如 '早上
晚上' 将查找包含 '早上' 和 '晚上' 的帖子,而 '早上 OR 晚上' 将查找包含 '早上' 或 '晚上' (以及同时包含两者)的帖子。\n您还可以组合交集/并集条件,例如
'(早上 OR 晚上) 困了' 。\n\n如果您想转到特定的用户页面或帖子页面请在此字段中输入用户 ID 或 URL然后单击 “查询” 按钮。 单击 “搜索”
将搜索字面包含用户 ID/URL 的帖子。"
searchRangeDescription: "如果您要过滤时间段请按以下格式输入20220615-20231031\n\n如果您省略年份例如 0105-0106
或 20231105-0110它将被解释为当前年份。\n\n您还可以省略开始日期或结束日期。 例如 -0102 将过滤搜索结果以仅显示今年 1 月 2 日之前发布的帖子,而
20231026- 将过滤结果以仅显示 2023 年 10 月 26 日之后发布的帖子。"
messagingUnencryptedInfo: "Firefish 上的聊天没有经过端到端加密,请不要在聊天中分享您的敏感信息。"

View file

@ -50,6 +50,7 @@ copyUsername: "複製使用者名稱"
searchUser: "搜尋使用者"
reply: "回覆"
replies: "回覆"
toReply: "回覆"
loadMore: "載入更多"
showMore: "載入更多"
showLess: "關閉"
@ -72,6 +73,7 @@ lists: "清單"
noLists: "你沒有任何清單"
note: "貼文"
notes: "貼文"
toPost: "發貼文"
following: "追隨中"
followers: "追隨者"
followsYou: "追隨你的人"
@ -103,6 +105,7 @@ cantRenote: "無法轉發此貼文。"
cantReRenote: "無法轉發之前已經轉發過的內容。"
quote: "引用"
quotes: "引用"
toQuote: "引用"
pinnedNote: "已置頂的貼文"
pinned: "置頂"
you: "您"
@ -585,6 +588,7 @@ tokenRequested: "允許存取帳戶"
pluginTokenRequestedDescription: "此外掛將擁有在此設定的權限。"
notificationType: "通知形式"
edit: "編輯"
toEdit: "編輯"
emailServer: "電郵伺服器"
enableEmail: "啟用發送電郵功能"
emailConfigInfo: "用於確認電郵地址及密碼重置"
@ -1870,7 +1874,6 @@ _experiments:
enablePostImports: 啟用匯入貼文的功能
postImportsCaption:
允許使用者從舊有的Firefish・Misskey・Mastodon・Akkoma・Pleroma帳號匯入貼文。在伺服器佇列堵塞時匯入貼文可能會導致載入速度變慢。
findOtherInstance: 找找另一個伺服器
noGraze: 瀏覽器擴充元件 "Graze for Mastodon" 會與Firefish發生衝突請停用該擴充元件。
userSaysSomethingReasonRenote: '{name} 轉發了包含 {reason} 的貼文'
pushNotificationNotSupported: 你的瀏覽器或伺服器不支援推送通知
@ -1928,7 +1931,7 @@ isModerator: 板主
isAdmin: 管理員
isPatron: Firefish 項目贊助者
silencedWarning: 顯示此頁面是因為這些使用者來自您伺服器管理員已靜音的伺服器,因此他們可能是垃圾訊息。
signupsDisabled: 此伺服器目前停止註冊,但您隨時可以在另一台伺服器上註冊!如果您有此伺服器的邀請碼,請在下面輸入。
signupsDisabled: 此伺服器目前停止註冊如果您有此伺服器的邀請碼,請在下面輸入。
showPopup: 通過彈出式視窗通知使用者
showWithSparkles: 讓標題閃閃發光
youHaveUnreadAnnouncements: 您有未讀的公告

View file

@ -30,9 +30,9 @@ dependencies = [
[[package]]
name = "ahash"
version = "0.8.10"
version = "0.8.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8b79b82693f705137f8fb9b37871d99e4f9a7df12b917eed79c3d3954830a60b"
checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011"
dependencies = [
"cfg-if",
"getrandom",
@ -182,9 +182,9 @@ dependencies = [
[[package]]
name = "atomic-write-file"
version = "0.1.2"
version = "0.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "edcdbedc2236483ab103a53415653d6b4442ea6141baf1ffa85df29635e88436"
checksum = "a8204db279bf648d64fe845bd8840f78b39c8132ed4d6a4194c3b10d4b4cfb0b"
dependencies = [
"nix",
"rand",
@ -388,9 +388,9 @@ checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223"
[[package]]
name = "cc"
version = "1.0.88"
version = "1.0.89"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "02f341c093d19155a6e41631ce5971aac4e9a868262212153124c15fa22d1cdc"
checksum = "a0ba8f7aaa012f30d5b2861462f6708eccd49c3c39863fe083a308035f63d723"
[[package]]
name = "cfg-if"
@ -406,9 +406,9 @@ checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e"
[[package]]
name = "chrono"
version = "0.4.34"
version = "0.4.35"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5bc015644b92d5890fab7489e49d21f879d5c990186827d42ec511919404f38b"
checksum = "8eaf5903dcbc0a39312feb77df2ff4c76387d591b9fc7b04a238dcf8bb62639a"
dependencies = [
"android-tzdata",
"iana-time-zone",
@ -421,9 +421,9 @@ dependencies = [
[[package]]
name = "clap"
version = "4.5.1"
version = "4.5.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c918d541ef2913577a0f9566e9ce27cb35b6df072075769e0b26cb5a554520da"
checksum = "b230ab84b0ffdf890d5a10abdbc8b83ae1c4918275daea1ab8801f71536b2651"
dependencies = [
"clap_builder",
"clap_derive",
@ -431,9 +431,9 @@ dependencies = [
[[package]]
name = "clap_builder"
version = "4.5.1"
version = "4.5.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9f3e7391dad68afb0c2ede1bf619f579a3dc9c2ec67f089baa397123a2f3d1eb"
checksum = "ae129e2e766ae0ec03484e609954119f123cc1fe650337e155d03b022f24f7b4"
dependencies = [
"anstream",
"anstyle",
@ -900,7 +900,7 @@ version = "0.14.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604"
dependencies = [
"ahash 0.8.10",
"ahash 0.8.11",
"allocator-api2",
]
@ -963,9 +963,9 @@ dependencies = [
[[package]]
name = "http"
version = "0.2.11"
version = "0.2.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8947b1a6fad4393052c7ba1f4cd97bed3e953a95c79c92ad9b051a04611d9fbb"
checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1"
dependencies = [
"bytes",
"fnv",
@ -1105,9 +1105,9 @@ checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c"
[[package]]
name = "js-sys"
version = "0.3.68"
version = "0.3.69"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "406cda4b368d531c842222cf9d2600a9a4acce8d29423695379c6868a143a9ee"
checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d"
dependencies = [
"wasm-bindgen",
]
@ -1118,7 +1118,7 @@ version = "0.17.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2a071f4f7efc9a9118dfb627a0a94ef247986e1ab8606a4c806ae2b3aa3b6978"
dependencies = [
"ahash 0.8.10",
"ahash 0.8.11",
"anyhow",
"base64",
"bytecount",
@ -1168,12 +1168,12 @@ checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd"
[[package]]
name = "libloading"
version = "0.8.1"
version = "0.8.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c571b676ddfc9a8c12f1f3d3085a7b163966a8fd8098a90640953ce5f6170161"
checksum = "0c2a198fb6b0eada2a8df47933734e6d35d350665a33a3593d7164fa52c75c19"
dependencies = [
"cfg-if",
"windows-sys 0.48.0",
"windows-targets 0.52.4",
]
[[package]]
@ -1254,9 +1254,9 @@ dependencies = [
[[package]]
name = "mio"
version = "0.8.10"
version = "0.8.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8f3d0b296e374a4e6f3c7b0a1f5a51d748a0d34c85e7dc48fc3fa9a87657fe09"
checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c"
dependencies = [
"libc",
"wasi",
@ -1323,12 +1323,13 @@ dependencies = [
[[package]]
name = "nix"
version = "0.27.1"
version = "0.28.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2eb04e9c688eff1c89d72b407f168cf79bb9e867a9d3323ed6c01519eb9cc053"
checksum = "ab2156c4fce2f8df6c499cc1c763e4394b7482525bf2a9701c9d79d215f519e4"
dependencies = [
"bitflags 2.4.2",
"cfg-if",
"cfg_aliases",
"libc",
]
@ -1766,9 +1767,9 @@ dependencies = [
[[package]]
name = "regex-automata"
version = "0.4.5"
version = "0.4.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5bb987efffd3c6d0d8f5f89510bb458559eab11e4f869acb20bf845e016259cd"
checksum = "86b83b8b9847f9bf95ef68afb0b8e6cdb80f498442f5179a29fad448fcc1eaea"
dependencies = [
"aho-corasick",
"memchr",
@ -2299,7 +2300,7 @@ version = "0.7.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d84b0a3c3739e220d94b3239fd69fb1f74bc36e16643423bd99de3b43c21bfbd"
dependencies = [
"ahash 0.8.10",
"ahash 0.8.11",
"atoi",
"bigdecimal",
"byteorder",
@ -2923,10 +2924,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
[[package]]
name = "wasm-bindgen"
version = "0.2.91"
name = "wasite"
version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c1e124130aee3fb58c5bdd6b639a0509486b0338acaaae0c84a5124b0f588b7f"
checksum = "b8dad83b4f25e74f184f64c43b150b91efe7647395b42289f38e50566d82855b"
[[package]]
name = "wasm-bindgen"
version = "0.2.92"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8"
dependencies = [
"cfg-if",
"wasm-bindgen-macro",
@ -2934,9 +2941,9 @@ dependencies = [
[[package]]
name = "wasm-bindgen-backend"
version = "0.2.91"
version = "0.2.92"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c9e7e1900c352b609c8488ad12639a311045f40a35491fb69ba8c12f758af70b"
checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da"
dependencies = [
"bumpalo",
"log",
@ -2949,9 +2956,9 @@ dependencies = [
[[package]]
name = "wasm-bindgen-futures"
version = "0.4.41"
version = "0.4.42"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "877b9c3f61ceea0e56331985743b13f3d25c406a7098d45180fb5f09bc19ed97"
checksum = "76bc14366121efc8dbb487ab05bcc9d346b3b5ec0eaa76e46594cabbe51762c0"
dependencies = [
"cfg-if",
"js-sys",
@ -2961,9 +2968,9 @@ dependencies = [
[[package]]
name = "wasm-bindgen-macro"
version = "0.2.91"
version = "0.2.92"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b30af9e2d358182b5c7449424f017eba305ed32a7010509ede96cdc4696c46ed"
checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726"
dependencies = [
"quote",
"wasm-bindgen-macro-support",
@ -2971,9 +2978,9 @@ dependencies = [
[[package]]
name = "wasm-bindgen-macro-support"
version = "0.2.91"
version = "0.2.92"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "642f325be6301eb8107a83d12a8ac6c1e1c54345a7ef1a9261962dfefda09e66"
checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7"
dependencies = [
"proc-macro2",
"quote",
@ -2984,15 +2991,15 @@ dependencies = [
[[package]]
name = "wasm-bindgen-shared"
version = "0.2.91"
version = "0.2.92"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4f186bd2dcf04330886ce82d6f33dd75a7bfcf69ecf5763b89fcde53b6ac9838"
checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96"
[[package]]
name = "web-sys"
version = "0.3.68"
version = "0.3.69"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "96565907687f7aceb35bc5fc03770a8a0471d82e479f25832f54a0e3f4b28446"
checksum = "77afa9a11836342370f4817622a2f0f418b134426d91a82dfb48f532d2ec13ef"
dependencies = [
"js-sys",
"wasm-bindgen",
@ -3006,9 +3013,13 @@ checksum = "5f20c57d8d7db6d3b86154206ae5d8fba62dd39573114de97c2cb0578251f8e1"
[[package]]
name = "whoami"
version = "1.4.1"
version = "1.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "22fc3756b8a9133049b26c7f61ab35416c130e8c09b660f5b3958b446f52cc50"
checksum = "0fec781d48b41f8163426ed18e8fc2864c12937df9ce54c88ede7bd47270893e"
dependencies = [
"redox_syscall",
"wasite",
]
[[package]]
name = "windows-core"

View file

@ -28,8 +28,8 @@ thiserror = "1.0.52"
tokio = { version = "1.35.1", features = ["full"] }
# Default enable napi4 feature, see https://nodejs.org/api/n-api.html#node-api-version-matrix
napi = { version = "2.14.1", default-features = false, features = ["napi6", "tokio_rt"], optional = true }
napi-derive = { version = "2.14.5", optional = true }
napi = { version = "2.16.0", default-features = false, features = ["napi9", "tokio_rt"], optional = true }
napi-derive = { version = "2.16.0", optional = true }
basen = "0.1.0"
[dev-dependencies]

View file

@ -14,11 +14,9 @@
"keepImportAssertions": true,
"emitAssertForImportAttributes": true
},
"baseUrl": ".",
"baseUrl": "src",
"paths": {
"@/*": [
"./src/*"
]
"@/*": ["*"]
},
"target": "es2022"
},

View file

@ -31,14 +31,14 @@
"@koa/router": "12.0.1",
"@ladjs/koa-views": "9.0.0",
"@peertube/http-signature": "1.7.0",
"@redocly/openapi-core": "1.10.1",
"@redocly/openapi-core": "1.10.3",
"@sinonjs/fake-timers": "11.2.2",
"@twemoji/parser": "^15.0.0",
"adm-zip": "^0.5.10",
"ajv": "8.12.0",
"archiver": "7.0.0",
"argon2": "^0.40.1",
"aws-sdk": "2.1569.0",
"aws-sdk": "2.1571.0",
"axios": "^1.6.7",
"backend-rs": "workspace:*",
"bcryptjs": "2.4.3",
@ -103,8 +103,8 @@
"qs": "6.11.2",
"random-seed": "0.3.0",
"ratelimiter": "3.4.1",
"re2": "1.20.9",
"redis-semaphore": "5.5.0",
"re2": "1.20.10",
"redis-semaphore": "5.5.1",
"reflect-metadata": "0.2.1",
"rename": "1.0.4",
"rndstr": "1.0.0",
@ -129,7 +129,7 @@
},
"devDependencies": {
"@swc/cli": "0.3.10",
"@swc/core": "1.4.2",
"@swc/core": "1.4.4",
"@types/adm-zip": "^0.5.5",
"@types/bcryptjs": "2.4.6",
"@types/color-convert": "^2.0.3",

View file

@ -149,7 +149,7 @@ function showNodejsVersion(): void {
nodejsLogger.info(`Version ${process.version} detected.`);
const minVersion = "v18.16.0";
const minVersion = "v18.17.0";
if (semver.lt(process.version, minVersion)) {
nodejsLogger.error(`At least Node.js ${minVersion} required!`);
process.exit(1);

View file

@ -494,9 +494,7 @@ export const UserRepository = db.getRepository(User).extend({
url: profile!.url,
uri: user.uri,
movedToUri: user.movedToUri
? await this.userFromURI(user.movedToUri).catch(
() => user.movedToUri,
)
? await this.userFromURI(user.movedToUri).catch(() => null)
: null,
alsoKnownAs: user.alsoKnownAs,
createdAt: user.createdAt.toISOString(),

View file

@ -36,7 +36,7 @@ export const renderActivity = (x: any): IActivity | null => {
PropertyValue: "schema:PropertyValue",
value: "schema:value",
// Firefish
firefish: "https://joinfirefish.org/ns#",
firefish: "https://firefish.dev/ns#",
speakAsCat: "firefish:speakAsCat",
// Misskey
misskey: "https://misskey-hub.net/ns#",

View file

@ -53,7 +53,7 @@ const nodeinfo2 = async () => {
name: "firefish",
version: config.version,
repository: meta.repositoryUrl,
homepage: "https://joinfirefish.org/",
homepage: "https://firefish.dev/firefish/firefish",
},
protocols: ["activitypub"],
services: {

View file

@ -55,33 +55,33 @@ describe("fromHtml", () => {
it("link with different text", () => {
assert.deepStrictEqual(
fromHtml('<p>a <a href="https://joinfirefish.org/b">c</a> d</p>'),
"a [c](https://joinfirefish.org/b) d",
fromHtml('<p>a <a href="https://firefish.dev/firefish">c</a> d</p>'),
"a [c](https://firefish.dev/firefish) d",
);
});
it("link with different text, but not encoded", () => {
assert.deepStrictEqual(
fromHtml('<p>a <a href="https://joinfirefish.org/ä">c</a> d</p>'),
"a [c](<https://joinfirefish.org/ä>) d",
fromHtml('<p>a <a href="https://firefish.dev/ä">c</a> d</p>'),
"a [c](<https://firefish.dev/ä>) d",
);
});
it("link with same text", () => {
assert.deepStrictEqual(
fromHtml(
'<p>a <a href="https://joinfirefish.org/b">https://joinfirefish.org/b</a> d</p>',
'<p>a <a href="https://firefish.dev/firefish/firefish">https://firefish.dev/firefish/firefish</a> d</p>',
),
"a https://joinfirefish.org/b d",
"a https://firefish.dev/firefish/firefish d",
);
});
it("link with same text, but not encoded", () => {
assert.deepStrictEqual(
fromHtml(
'<p>a <a href="https://joinfirefish.org/ä">https://joinfirefish.org/ä</a> d</p>',
'<p>a <a href="https://firefish.dev/ä">https://firefish.dev/ä</a> d</p>',
),
"a <https://joinfirefish.org/ä> d",
"a <https://firefish.dev/ä> d",
);
});
@ -98,8 +98,8 @@ describe("fromHtml", () => {
it("link without text", () => {
assert.deepStrictEqual(
fromHtml('<p>a <a href="https://joinfirefish.org/b"></a> d</p>'),
"a https://joinfirefish.org/b d",
fromHtml('<p>a <a href="https://firefish.dev/b"></a> d</p>'),
"a https://firefish.dev/b d",
);
});
@ -110,15 +110,15 @@ describe("fromHtml", () => {
it("mention", () => {
assert.deepStrictEqual(
fromHtml(
'<p>a <a href="https://joinfirefish.org/@user" class="u-url mention">@user</a> d</p>',
'<p>a <a href="https://info.firefish.dev/@firefish" class="u-url mention">@firefish</a> d</p>',
),
"a @user@joinfirefish.org d",
"a @firefish@info.firefish.dev d",
);
});
it("hashtag", () => {
assert.deepStrictEqual(
fromHtml('<p>a <a href="https://joinfirefish.org/tags/a">#a</a> d</p>', [
fromHtml('<p>a <a href="https://info.firefish.dev/tags/a">#a</a> d</p>', [
"#a",
]),
"a #a d",

View file

@ -84,7 +84,7 @@
"typescript": "5.3.3",
"unicode-emoji-json": "^0.4.0",
"uuid": "9.0.1",
"vite": "5.1.4",
"vite": "5.1.5",
"vite-plugin-compression": "^0.5.1",
"vue": "3.4.21",
"vue-draggable-plus": "^0.3.5",

View file

@ -144,16 +144,17 @@
:disabled="okButtonDisabled"
@click="ok"
>{{
showCancelButton || input || select
okText ??
(showCancelButton || input || select
? i18n.ts.ok
: i18n.ts.gotIt
: i18n.ts.gotIt)
}}</MkButton
>
<MkButton
v-if="showCancelButton || input || select"
inline
@click="cancel"
>{{ i18n.ts.cancel }}</MkButton
>{{ cancelText ?? i18n.ts.cancel }}</MkButton
>
</div>
<div v-else>
@ -194,13 +195,11 @@
<script lang="ts" setup>
import { computed, onBeforeUnmount, onMounted, ref, shallowRef } from "vue";
import { acct } from "firefish-js";
import MkModal from "@/components/MkModal.vue";
import MkButton from "@/components/MkButton.vue";
import MkInput from "@/components/form/input.vue";
import MkTextarea from "@/components/form/textarea.vue";
import MkSelect from "@/components/form/select.vue";
import * as os from "@/os";
import { i18n } from "@/i18n";
import iconClass from "@/scripts/icon";

View file

@ -380,7 +380,7 @@ const showBigPostButton = defaultStore.state.showBigPostButton;
const posting = ref(false);
const text = ref(props.initialText ?? "");
const files = ref(props.initialFiles ?? []);
const files = ref(props.initialFiles ?? ([] as entities.DriveFile[]));
const poll = ref<{
choices: string[];
multiple: boolean;
@ -461,12 +461,12 @@ const placeholder = computed((): string => {
const submitText = computed((): string => {
return props.editId
? i18n.ts.edit
? i18n.ts.toEdit
: props.renote
? i18n.ts.quote
? i18n.ts.toQuote
: props.reply
? i18n.ts.reply
: i18n.ts.note;
? i18n.ts.toReply
: i18n.ts.toPost;
});
const textLength = computed((): number => {
@ -1020,6 +1020,22 @@ function deleteDraft() {
}
async function post() {
if (
defaultStore.state.showNoAltTextWarning &&
files.value.some((f) => f.comment == null || f.comment.length === 0)
) {
// "canceled" means "post anyway"
const { canceled } = await os.confirm({
type: "warning",
text: i18n.ts.noAltTextWarning,
okText: i18n.ts.goBack,
cancelText: i18n.ts.toPost,
isPlaintext: true,
});
if (!canceled) return;
}
const processedText = preprocess(text.value);
let postData = {

View file

@ -55,7 +55,7 @@ export default defineComponent({
this.$i ? this.$i.username : "guest"
}.\nAlso, here is ${config.url} and [example link](${
config.url
}). for more details, see https://joinfirefish.org.\nAs you know #misskey is open-source software.`,
}). for more details, see <https://firefish.dev/firefish/firefish>.\nAs you know #Firefish is open-source software.`,
};
},

View file

@ -229,7 +229,7 @@ onBeforeUnmount(() => {
}
.input {
margin: 10px 0;
margin: 12px 0;
}
.title {

View file

@ -1,11 +1,6 @@
<template>
<div v-if="instance.disableRegistration" style="margin-bottom: 1rem">
<p>{{ i18n.ts.signupsDisabled }}</p>
<a href="https://joinfirefish.org/join">
<MkButton rounded gradate
>{{ i18n.ts.findOtherInstance }}
</MkButton>
</a>
</div>
<form
class="qlvuhzng _formRoot"

View file

@ -32,6 +32,12 @@ const emit = defineEmits<{
.thppypvi {
max-height: 70%;
overflow-y: scroll;
-ms-overflow-style: none;
scrollbar-width: none;
}
.thppypvi::-webkit-scrollbar {
display: none;
}
.zrgnubda {

View file

@ -97,6 +97,7 @@ function toggle(x) {
display: block;
transition: inherit;
color: var(--fg);
text-align: initial;
> span {
display: block;

View file

@ -136,7 +136,7 @@ const headerActions = computed(() => [
? [
{
icon: `${icon("ph-gear-six")}`,
text: i18n.ts.edit,
text: i18n.ts.toEdit,
handler: edit,
},
]

View file

@ -73,7 +73,7 @@ const headerActions = computed(() =>
? [
{
icon: `${icon("ph-pencil")}`,
text: i18n.ts.edit,
text: i18n.ts.toEdit,
handler: async (): Promise<void> => {
const { canceled, result } = await os.form(
clip.value.name,

View file

@ -159,7 +159,7 @@ definePageMetadata(
computed(() =>
props.postId
? {
title: i18n.ts.edit,
title: i18n.ts.toEdit,
icon: `${icon("ph-pencil")}`,
}
: {

View file

@ -61,7 +61,7 @@
v-if="
isSignedIn && $i.id === post.user.id
"
v-tooltip="i18n.ts.edit"
v-tooltip="i18n.ts.toEdit"
v-click-anime
class="_button"
@click="edit"

View file

@ -8,6 +8,9 @@
/></template>
<div>
<MkSpacer :content-max="800">
<MkInfo :closeable="false" class="_gap">
<I18n :src="i18n.ts.messagingUnencryptedInfo"> </I18n>
</MkInfo>
<swiper
:round-lengths="true"
:touch-angle="25"
@ -94,6 +97,7 @@ import { Virtual } from "swiper/modules";
import { Swiper, SwiperSlide } from "swiper/vue";
import MkButton from "@/components/MkButton.vue";
import MkChatPreview from "@/components/MkChatPreview.vue";
import MkInfo from "@/components/MkInfo.vue";
import MkPagination from "@/components/MkPagination.vue";
import * as os from "@/os";
import { useStream } from "@/stream";

View file

@ -121,6 +121,9 @@
<FormSwitch v-model="openServerInfo" class="_formBlock">{{
i18n.ts.openServerInfo
}}</FormSwitch>
<FormSwitch v-model="showNoAltTextWarning" class="_formBlock">{{
i18n.ts.showNoAltTextWarning
}}</FormSwitch>
<FormSelect v-model="serverDisconnectedBehavior" class="_formBlock">
<template #label>{{ i18n.ts.whenServerDisconnected }}</template>
@ -524,6 +527,9 @@ const enablePullToRefresh = computed(
const pullToRefreshThreshold = computed(
defaultStore.makeGetterSetter("pullToRefreshThreshold"),
);
const showNoAltTextWarning = computed(
defaultStore.makeGetterSetter("showNoAltTextWarning"),
);
// This feature (along with injectPromo) is currently disabled
// function onChangeInjectFeaturedNote(v) {

View file

@ -124,6 +124,7 @@ const defaultStoreSaveKeys: (keyof (typeof defaultStore)["state"])[] = [
"enableTimelineStreaming",
"enablePullToRefresh",
"pullToRefreshThreshold",
"showNoAltTextWarning",
];
const coldDeviceStorageSaveKeys: (keyof typeof ColdDeviceStorage.default)[] = [
"lightTheme",

View file

@ -67,7 +67,7 @@
rounded
style="margin-left: 12px; margin-top: 12px"
onclick="window.location.href='/explore'"
>Explore</MkButton
>{{ i18n.ts.explore }}</MkButton
>
</div>
</div>

View file

@ -445,7 +445,7 @@ export function getNoteMenu(props: {
isAppearAuthor
? {
icon: `${icon("ph-pencil-line")}`,
text: i18n.ts.edit,
text: i18n.ts.toEdit,
accent: true,
action: edit,
}

View file

@ -1,4 +1,5 @@
import XTutorial from "../components/MkTutorialDialog.vue";
import XTutorial from "@/components/MkTutorialDialog.vue";
import XCheatSheet from "@/components/MkCheatSheetDialog.vue";
import { defaultStore } from "@/store";
import { instance } from "@/instance";
import { host } from "@/config";
@ -53,14 +54,6 @@ export function openHelpMenu_(ev: MouseEvent) {
...(instanceSpecificItems.length >= 2 ? [null] : []),
...instanceSpecificItems,
null,
{
type: "button",
text: i18n.ts.apps,
icon: `${icon("ph-device-mobile")}`,
action: () => {
window.open("https://joinfirefish.org/apps", "_blank");
},
},
{
type: "button",
action: async () => {
@ -70,6 +63,14 @@ export function openHelpMenu_(ev: MouseEvent) {
text: i18n.ts.replayTutorial,
icon: `${icon("ph-circle-wavy-question")}`,
},
{
type: "button",
text: i18n.ts._mfm.cheatSheet,
icon: "ph-question ph-bold ph-lg",
action: async () => {
os.popup(XCheatSheet, {}, {}, "closed");
},
},
null,
{
type: "parent",

View file

@ -428,6 +428,10 @@ export const defaultStore = markRaw(
where: "device",
default: 150,
},
showNoAltTextWarning: {
where: "account",
default: true,
},
}),
);

View file

@ -120,7 +120,7 @@
@click="os.post"
>
<i :class="icon('ph-pencil icon ph-fw')"></i
><span class="text">{{ i18n.ts.note }}</span>
><span class="text">{{ i18n.ts.toPost }}</span>
</button>
<button
v-tooltip.noDelay.right="i18n.ts.help"

View file

@ -128,13 +128,13 @@
</nav>
<div class="bottom">
<button
v-tooltip.noDelay.right="i18n.ts.note"
v-tooltip.noDelay.right="i18n.ts.toPost"
class="item _button post"
data-cy-open-post-form
@click="os.post"
>
<i :class="icon('icon ph-pencil ph-fw ph-lg')"></i
><span class="text">{{ i18n.ts.note }}</span>
><span class="text">{{ i18n.ts.toPost }}</span>
</button>
<button
v-tooltip.noDelay.right="i18n.ts.help"

View file

@ -63,7 +63,9 @@
>
<small
>Powered by
<a href="https://joinfirefish.org/" target="_blank"
<a
href="https://firefish.dev/firefish/firefish"
target="_blank"
>Firefish</a
></small
>

View file

@ -18,7 +18,9 @@
>
<small
>Powered by
<a href="https://joinfirefish.org/" target="_blank"
<a
href="https://firefish.dev/firefish/firefish"
target="_blank"
>Firefish</a
></small
>

View file

@ -69,7 +69,9 @@
>
<small
>Powered by
<a href="https://joinfirefish.org/" target="_blank"
<a
href="https://firefish.dev/firefish/firefish"
target="_blank"
>Firefish</a
></small
>

View file

@ -22,7 +22,7 @@
},
"devDependencies": {
"@swc/cli": "0.3.10",
"@swc/core": "1.4.2",
"@swc/core": "1.4.4",
"@swc/types": "^0.1.5",
"@types/jest": "^29.5.12",
"@types/node": "20.11.24",

View file

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

View file

@ -82,8 +82,8 @@ importers:
specifier: 1.7.0
version: 1.7.0
'@redocly/openapi-core':
specifier: 1.10.1
version: 1.10.1
specifier: 1.10.3
version: 1.10.3
'@sinonjs/fake-timers':
specifier: 11.2.2
version: 11.2.2
@ -103,8 +103,8 @@ importers:
specifier: ^0.40.1
version: 0.40.1
aws-sdk:
specifier: 2.1569.0
version: 2.1569.0
specifier: 2.1571.0
version: 2.1571.0
axios:
specifier: ^1.6.7
version: 1.6.7
@ -298,11 +298,11 @@ importers:
specifier: 3.4.1
version: 3.4.1
re2:
specifier: 1.20.9
version: 1.20.9
specifier: 1.20.10
version: 1.20.10
redis-semaphore:
specifier: 5.5.0
version: 5.5.0(ioredis@5.3.2)
specifier: 5.5.1
version: 5.5.1(ioredis@5.3.2)
reflect-metadata:
specifier: 0.2.1
version: 0.2.1
@ -373,10 +373,10 @@ importers:
devDependencies:
'@swc/cli':
specifier: 0.3.10
version: 0.3.10(@swc/core@1.4.2)
version: 0.3.10(@swc/core@1.4.4)
'@swc/core':
specifier: 1.4.2
version: 1.4.2
specifier: 1.4.4
version: 1.4.4
'@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.2)(webpack@5.90.3)
version: 0.2.6(@swc/core@1.4.4)(webpack@5.90.3)
ts-loader:
specifier: 9.5.1
version: 9.5.1(typescript@5.3.3)(webpack@5.90.3)
ts-node:
specifier: 10.9.2
version: 10.9.2(@swc/core@1.4.2)(@types/node@20.11.24)(typescript@5.3.3)
version: 10.9.2(@swc/core@1.4.4)(@types/node@20.11.24)(typescript@5.3.3)
tsconfig-paths:
specifier: 4.2.0
version: 4.2.0
@ -541,7 +541,7 @@ importers:
version: 5.3.3
webpack:
specifier: ^5.90.3
version: 5.90.3(@swc/core@1.4.2)
version: 5.90.3(@swc/core@1.4.4)
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.1.4)(vue@3.4.21)
version: 5.0.4(vite@5.1.5)(vue@3.4.21)
'@vue/runtime-core':
specifier: 3.4.21
version: 3.4.21
@ -777,11 +777,11 @@ importers:
specifier: 9.0.1
version: 9.0.1
vite:
specifier: 5.1.4
version: 5.1.4(@types/node@20.11.24)(sass@1.71.1)
specifier: 5.1.5
version: 5.1.5(@types/node@20.11.24)(sass@1.71.1)
vite-plugin-compression:
specifier: ^0.5.1
version: 0.5.1(vite@5.1.4)
version: 0.5.1(vite@5.1.5)
vue:
specifier: 3.4.21
version: 3.4.21(typescript@5.3.3)
@ -810,10 +810,10 @@ importers:
devDependencies:
'@swc/cli':
specifier: 0.3.10
version: 0.3.10(@swc/core@1.4.2)
version: 0.3.10(@swc/core@1.4.4)
'@swc/core':
specifier: 1.4.2
version: 1.4.2
specifier: 1.4.4
version: 1.4.4
'@swc/types':
specifier: ^0.1.5
version: 0.1.5
@ -840,7 +840,7 @@ importers:
version: 29.1.2(@babel/core@7.23.2)(jest@29.7.0)(typescript@5.3.3)
ts-node:
specifier: 10.9.2
version: 10.9.2(@swc/core@1.4.2)(@types/node@20.11.24)(typescript@5.3.3)
version: 10.9.2(@swc/core@1.4.4)(@types/node@20.11.24)(typescript@5.3.3)
tsd:
specifier: ^0.30.7
version: 0.30.7
@ -975,11 +975,11 @@ importers:
specifier: ^6.2.1
version: 6.2.1
vite:
specifier: 5.1.4
version: 5.1.4(@types/node@20.11.24)(sass@1.71.1)
specifier: 5.1.5
version: 5.1.5(@types/node@20.11.24)(sass@1.71.1)
vite-plugin-compression:
specifier: ^0.5.1
version: 0.5.1(vite@5.1.4)
version: 0.5.1(vite@5.1.5)
packages:
@ -3298,8 +3298,8 @@ packages:
uri-js: 4.4.1
dev: false
/@redocly/openapi-core@1.10.1:
resolution: {integrity: sha512-WpVmNsIRqWmK4LuE2OER4s4iYu/cAm+djyZZy9ciUflJtew7aIXsC1/7/SsKmWKpoPGzWEfNPRs1/OZ9CeKvAA==}
/@redocly/openapi-core@1.10.3:
resolution: {integrity: sha512-4SnIWh8r3EM1ylcoHIJSnQnuvqRTpQMnf2RU3BfVdcCBa0A1uEyH6XSxgcO5ehxfQGuGGpUXJ+vPh32PUaQDkA==}
engines: {node: '>=14.19.0', npm: '>=7.0.0'}
dependencies:
'@redocly/ajv': 8.11.0
@ -3507,7 +3507,7 @@ packages:
resolution: {integrity: sha512-Uy0+khmZqUrUGm5dmMqVlnvufZRSK0FbYzVgp0UMstm+F5+W2/jnEEQyc9vo1ZR/E5ZI/B1WjjoTqBqwJL6Krw==}
dev: false
/@swc/cli@0.3.10(@swc/core@1.4.2):
/@swc/cli@0.3.10(@swc/core@1.4.4):
resolution: {integrity: sha512-YWfYo9kXdbmIuGwIPth9geKgb0KssCMTdZa44zAN5KoqcuCP2rTW9s60heQDSRNpbtCmUr7BKF1VivsoHXrvrQ==}
engines: {node: '>= 16.14.0'}
hasBin: true
@ -3519,7 +3519,7 @@ packages:
optional: true
dependencies:
'@mole-inc/bin-wrapper': 8.0.1
'@swc/core': 1.4.2
'@swc/core': 1.4.4
'@swc/counter': 0.1.3
commander: 8.3.0
fast-glob: 3.3.2
@ -3541,88 +3541,88 @@ packages:
dev: false
optional: true
/@swc/core-darwin-arm64@1.4.2:
resolution: {integrity: sha512-1uSdAn1MRK5C1m/TvLZ2RDvr0zLvochgrZ2xL+lRzugLlCTlSA+Q4TWtrZaOz+vnnFVliCpw7c7qu0JouhgQIw==}
/@swc/core-darwin-arm64@1.4.4:
resolution: {integrity: sha512-goSHS8yvDgha93RHIV2Vn50neYasqbc4K1g/nKOV6T8kiKVv4w/rmqNJu9Aa0mPGVJtjcr0NvX6bBwE0T4HIzg==}
engines: {node: '>=10'}
cpu: [arm64]
os: [darwin]
requiresBuild: true
optional: true
/@swc/core-darwin-x64@1.4.2:
resolution: {integrity: sha512-TYD28+dCQKeuxxcy7gLJUCFLqrwDZnHtC2z7cdeGfZpbI2mbfppfTf2wUPzqZk3gEC96zHd4Yr37V3Tvzar+lQ==}
/@swc/core-darwin-x64@1.4.4:
resolution: {integrity: sha512-PLfgL355qsl5c5kUPsFGITgVXoaqjp9sCd0Y5Z5uN7RtSOvwIX28e23eCxj02dOr7OBr8sq6qBlEMDV03T24Iw==}
engines: {node: '>=10'}
cpu: [x64]
os: [darwin]
requiresBuild: true
optional: true
/@swc/core-linux-arm-gnueabihf@1.4.2:
resolution: {integrity: sha512-Eyqipf7ZPGj0vplKHo8JUOoU1un2sg5PjJMpEesX0k+6HKE2T8pdyeyXODN0YTFqzndSa/J43EEPXm+rHAsLFQ==}
/@swc/core-linux-arm-gnueabihf@1.4.4:
resolution: {integrity: sha512-BVEZVOGnaZvEcHm//KyYzhte46vdF67wLVtmQEXPAlrkRgZ3b/JSySeLXqeocAcOANWb1/SPHlEmPK5azP+JvQ==}
engines: {node: '>=10'}
cpu: [arm]
os: [linux]
requiresBuild: true
optional: true
/@swc/core-linux-arm64-gnu@1.4.2:
resolution: {integrity: sha512-wZn02DH8VYPv3FC0ub4my52Rttsus/rFw+UUfzdb3tHMHXB66LqN+rR0ssIOZrH6K+VLN6qpTw9VizjyoH0BxA==}
/@swc/core-linux-arm64-gnu@1.4.4:
resolution: {integrity: sha512-ZbOJfVbCjVMKdfvvJDOTpa3tGqU6tfxng1CDjA62RUcqa7sRbovrjSiw6mq5/4EoOF4zK8CtPIG+TlxKPapnuw==}
engines: {node: '>=10'}
cpu: [arm64]
os: [linux]
requiresBuild: true
optional: true
/@swc/core-linux-arm64-musl@1.4.2:
resolution: {integrity: sha512-3G0D5z9hUj9bXNcwmA1eGiFTwe5rWkuL3DsoviTj73TKLpk7u64ND0XjEfO0huVv4vVu9H1jodrKb7nvln/dlw==}
/@swc/core-linux-arm64-musl@1.4.4:
resolution: {integrity: sha512-+Gjo1W4tY/4kgEe5h22iuCWkpKcPMccXwYaSLNvgBCBQADB0zKFfF0lNf7y6U+81NFEjhRsdwXMsRGZtgTpUrg==}
engines: {node: '>=10'}
cpu: [arm64]
os: [linux]
requiresBuild: true
optional: true
/@swc/core-linux-x64-gnu@1.4.2:
resolution: {integrity: sha512-LFxn9U8cjmYHw3jrdPNqPAkBGglKE3tCZ8rA7hYyp0BFxuo7L2ZcEnPm4RFpmSCCsExFH+LEJWuMGgWERoktvg==}
/@swc/core-linux-x64-gnu@1.4.4:
resolution: {integrity: sha512-PR/VbGm0LEkhpm5qClovZWhE/jYoQSyIeyPh8XY39uUI1u2yEfuz5UCW2sJJIWOvNiAfu7+TjW+9H/I7zBBDJA==}
engines: {node: '>=10'}
cpu: [x64]
os: [linux]
requiresBuild: true
optional: true
/@swc/core-linux-x64-musl@1.4.2:
resolution: {integrity: sha512-dp0fAmreeVVYTUcb4u9njTPrYzKnbIH0EhH2qvC9GOYNNREUu2GezSIDgonjOXkHiTCvopG4xU7y56XtXj4VrQ==}
/@swc/core-linux-x64-musl@1.4.4:
resolution: {integrity: sha512-poT9zub4CyVcH1cxwGdrGiZD3urfOaYs/Kd52ve3ymPPeQZq7qQwKqAB/9NxoSiJDaSzJv5OwTEfgaBYCyw0iw==}
engines: {node: '>=10'}
cpu: [x64]
os: [linux]
requiresBuild: true
optional: true
/@swc/core-win32-arm64-msvc@1.4.2:
resolution: {integrity: sha512-HlVIiLMQkzthAdqMslQhDkoXJ5+AOLUSTV6fm6shFKZKqc/9cJvr4S8UveNERL9zUficA36yM3bbfo36McwnvQ==}
/@swc/core-win32-arm64-msvc@1.4.4:
resolution: {integrity: sha512-29V5/fBd6XXFb7J/ri9ZeSS/GTqXfSWa3BiE0zTNbASpQbEXf+YPYiAtO6c1HqNyQobKB9ni+w7sa8KkAGhHXw==}
engines: {node: '>=10'}
cpu: [arm64]
os: [win32]
requiresBuild: true
optional: true
/@swc/core-win32-ia32-msvc@1.4.2:
resolution: {integrity: sha512-WCF8faPGjCl4oIgugkp+kL9nl3nUATlzKXCEGFowMEmVVCFM0GsqlmGdPp1pjZoWc9tpYanoXQDnp5IvlDSLhA==}
/@swc/core-win32-ia32-msvc@1.4.4:
resolution: {integrity: sha512-2lKEGEjpBOq0z4Nk0tFP9wxVwxgz7FonmjCkzJ95GBb5KNvMrgQQrGNGX6L0hoBo/a1kE752I6V5pOaMyIq5xQ==}
engines: {node: '>=10'}
cpu: [ia32]
os: [win32]
requiresBuild: true
optional: true
/@swc/core-win32-x64-msvc@1.4.2:
resolution: {integrity: sha512-oV71rwiSpA5xre2C5570BhCsg1HF97SNLsZ/12xv7zayGzqr3yvFALFJN8tHKpqUdCB4FGPjoP3JFdV3i+1wUw==}
/@swc/core-win32-x64-msvc@1.4.4:
resolution: {integrity: sha512-xuN0oJhAewga8jNJkT5Wx25RPVnIEMZCYf4irqA5jiK6GckOdcXB8jvEJhggOxnJSW8RDsAtY5q+zw5kNkU+eA==}
engines: {node: '>=10'}
cpu: [x64]
os: [win32]
requiresBuild: true
optional: true
/@swc/core@1.4.2:
resolution: {integrity: sha512-vWgY07R/eqj1/a0vsRKLI9o9klGZfpLNOVEnrv4nrccxBgYPjcf22IWwAoaBJ+wpA7Q4fVjCUM8lP0m01dpxcg==}
/@swc/core@1.4.4:
resolution: {integrity: sha512-P88AHGWM8xPY3Tjj5360V6vqKCS5UfsyffPJVnr7BKSr45rlG4/pjEGGmFYQjg6ztgPyrGLYz1jSyzajTqTVIA==}
engines: {node: '>=10'}
requiresBuild: true
peerDependencies:
@ -3634,16 +3634,16 @@ packages:
'@swc/counter': 0.1.3
'@swc/types': 0.1.5
optionalDependencies:
'@swc/core-darwin-arm64': 1.4.2
'@swc/core-darwin-x64': 1.4.2
'@swc/core-linux-arm-gnueabihf': 1.4.2
'@swc/core-linux-arm64-gnu': 1.4.2
'@swc/core-linux-arm64-musl': 1.4.2
'@swc/core-linux-x64-gnu': 1.4.2
'@swc/core-linux-x64-musl': 1.4.2
'@swc/core-win32-arm64-msvc': 1.4.2
'@swc/core-win32-ia32-msvc': 1.4.2
'@swc/core-win32-x64-msvc': 1.4.2
'@swc/core-darwin-arm64': 1.4.4
'@swc/core-darwin-x64': 1.4.4
'@swc/core-linux-arm-gnueabihf': 1.4.4
'@swc/core-linux-arm64-gnu': 1.4.4
'@swc/core-linux-arm64-musl': 1.4.4
'@swc/core-linux-x64-gnu': 1.4.4
'@swc/core-linux-x64-musl': 1.4.4
'@swc/core-win32-arm64-msvc': 1.4.4
'@swc/core-win32-ia32-msvc': 1.4.4
'@swc/core-win32-x64-msvc': 1.4.4
/@swc/counter@0.1.3:
resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==}
@ -4777,14 +4777,14 @@ packages:
- supports-color
dev: true
/@vitejs/plugin-vue@5.0.4(vite@5.1.4)(vue@3.4.21):
/@vitejs/plugin-vue@5.0.4(vite@5.1.5)(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.1.4(@types/node@20.11.24)(sass@1.71.1)
vite: 5.1.5(@types/node@20.11.24)(sass@1.71.1)
vue: 3.4.21(typescript@5.3.3)
dev: true
@ -5644,8 +5644,8 @@ packages:
resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==}
engines: {node: '>= 0.4'}
/aws-sdk@2.1569.0:
resolution: {integrity: sha512-9puKjesHKOjAYPqFurW/9nv3qhQ+STu3bVa5PN158SCeZPE6NsxZIWnHLglJvKU7N8UXJo1aJHmKDUGrsS7rXw==}
/aws-sdk@2.1571.0:
resolution: {integrity: sha512-Hixs1aD+7IwsP/Bkb7StFCrOC9ejmw8zBv8xVqEtEughRX6AF8bLKFRoJRbD4V6TrM+gPGpCqoFlpa84HLHkSA==}
engines: {node: '>= 10.0.0'}
dependencies:
buffer: 4.9.2
@ -11183,7 +11183,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.2)(@types/node@20.11.24)(typescript@5.3.3)
ts-node: 10.9.2(@swc/core@1.4.4)(@types/node@20.11.24)(typescript@5.3.3)
transitivePeerDependencies:
- babel-plugin-macros
- supports-color
@ -14585,8 +14585,8 @@ packages:
setimmediate: 1.0.5
dev: false
/re2@1.20.9:
resolution: {integrity: sha512-ZYcPTFr5ha2xq3WQjBDTF9CWPSDK1z28MLh5UFRxc//7X8BNQ3A7yR7ITnP0jO346661ertdKVFqw1qoL3FMEQ==}
/re2@1.20.10:
resolution: {integrity: sha512-/5JjSPXobSDaKFL6rD5Gb4qD4CVBITQb7NAxfQ/NA7o0HER3SJAPV3lPO2kvzw0/PN1pVJNVATEUk4y9j7oIIA==}
requiresBuild: true
dependencies:
install-artifact-from-github: 1.3.5
@ -14734,8 +14734,8 @@ packages:
redis-errors: 1.2.0
dev: false
/redis-semaphore@5.5.0(ioredis@5.3.2):
resolution: {integrity: sha512-JSoCtkcXRr5hN2Hs7cmP/998bKAkZbJJ6C9T+UYh6BlEhYevWkQ6b5IHPRrZxCepPwwJnt/piacmB3a5UoXIYw==}
/redis-semaphore@5.5.1(ioredis@5.3.2):
resolution: {integrity: sha512-wqeYg3xWDCR81DRlS2y9lx/5TVKr1Qq0w9QuN6WK9i+R3exGPM8QGwnYarSrb6G/aZFMAJffGgLdmvR3jls9cQ==}
engines: {node: '>= 14.17.0'}
peerDependencies:
ioredis: ^4.1.0 || ^5
@ -15896,15 +15896,15 @@ packages:
whet.extend: 0.9.9
dev: false
/swc-loader@0.2.6(@swc/core@1.4.2)(webpack@5.90.3):
/swc-loader@0.2.6(@swc/core@1.4.4)(webpack@5.90.3):
resolution: {integrity: sha512-9Zi9UP2YmDpgmQVbyOPJClY0dwf58JDyDMQ7uRc4krmc72twNI2fvlBWHLqVekBpPc7h5NJkGVT1zNDxFrqhvg==}
peerDependencies:
'@swc/core': ^1.2.147
webpack: '>=2'
dependencies:
'@swc/core': 1.4.2
'@swc/core': 1.4.4
'@swc/counter': 0.1.3
webpack: 5.90.3(@swc/core@1.4.2)
webpack: 5.90.3(@swc/core@1.4.4)
dev: true
/swiper@11.0.7:
@ -15991,7 +15991,7 @@ packages:
engines: {node: '>=14.16'}
dev: true
/terser-webpack-plugin@5.3.10(@swc/core@1.4.2)(webpack@5.90.3):
/terser-webpack-plugin@5.3.10(@swc/core@1.4.4)(webpack@5.90.3):
resolution: {integrity: sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==}
engines: {node: '>= 10.13.0'}
peerDependencies:
@ -16008,12 +16008,12 @@ packages:
optional: true
dependencies:
'@jridgewell/trace-mapping': 0.3.20
'@swc/core': 1.4.2
'@swc/core': 1.4.4
jest-worker: 27.5.1
schema-utils: 3.3.0
serialize-javascript: 6.0.1
terser: 5.27.0
webpack: 5.90.3(@swc/core@1.4.2)
webpack: 5.90.3(@swc/core@1.4.4)
dev: true
/terser@5.19.2:
@ -16335,10 +16335,10 @@ packages:
semver: 7.6.0
source-map: 0.7.4
typescript: 5.3.3
webpack: 5.90.3(@swc/core@1.4.2)
webpack: 5.90.3(@swc/core@1.4.4)
dev: true
/ts-node@10.9.2(@swc/core@1.4.2)(@types/node@20.11.24)(typescript@5.3.3):
/ts-node@10.9.2(@swc/core@1.4.4)(@types/node@20.11.24)(typescript@5.3.3):
resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==}
hasBin: true
peerDependencies:
@ -16353,7 +16353,7 @@ packages:
optional: true
dependencies:
'@cspotcode/source-map-support': 0.8.1
'@swc/core': 1.4.2
'@swc/core': 1.4.4
'@tsconfig/node10': 1.0.9
'@tsconfig/node12': 1.0.11
'@tsconfig/node14': 1.0.3
@ -16641,7 +16641,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.2)(@types/node@20.11.24)(typescript@5.3.3)
ts-node: 10.9.2(@swc/core@1.4.4)(@types/node@20.11.24)(typescript@5.3.3)
tslib: 2.6.1
uuid: 9.0.1
yargs: 17.7.2
@ -16985,7 +16985,7 @@ packages:
replace-ext: 1.0.1
dev: false
/vite-plugin-compression@0.5.1(vite@5.1.4):
/vite-plugin-compression@0.5.1(vite@5.1.5):
resolution: {integrity: sha512-5QJKBDc+gNYVqL/skgFAP81Yuzo9R+EAf19d+EtsMF/i8kFUpNi3J/H01QD3Oo8zBQn+NzoCIFkpPLynoOzaJg==}
peerDependencies:
vite: '>=2.0.0'
@ -16993,13 +16993,13 @@ packages:
chalk: 4.1.2
debug: 4.3.4(supports-color@8.1.1)
fs-extra: 10.1.0
vite: 5.1.4(@types/node@20.11.24)(sass@1.71.1)
vite: 5.1.5(@types/node@20.11.24)(sass@1.71.1)
transitivePeerDependencies:
- supports-color
dev: true
/vite@5.1.4(@types/node@20.11.24)(sass@1.71.1):
resolution: {integrity: sha512-n+MPqzq+d9nMVTKyewqw6kSt+R3CkvF9QAKY8obiQn8g1fwTscKxyfaYnC632HtBXAQGc1Yjomphwn1dtwGAHg==}
/vite@5.1.5(@types/node@20.11.24)(sass@1.71.1):
resolution: {integrity: sha512-BdN1xh0Of/oQafhU+FvopafUp6WaYenLU/NFoL5WyJL++GxkNfieKzBhM24H3HVsPQrlAqB7iJYTHabzaRed5Q==}
engines: {node: ^18.0.0 || >=20.0.0}
hasBin: true
peerDependencies:
@ -17209,7 +17209,7 @@ packages:
engines: {node: '>=10.13.0'}
dev: true
/webpack@5.90.3(@swc/core@1.4.2):
/webpack@5.90.3(@swc/core@1.4.4):
resolution: {integrity: sha512-h6uDYlWCctQRuXBs1oYpVe6sFcWedl0dpcVaTf/YF67J9bKvwJajFulMVSYKHrksMB3I/pIagRzDxwxkebuzKA==}
engines: {node: '>=10.13.0'}
hasBin: true
@ -17240,7 +17240,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.2)(webpack@5.90.3)
terser-webpack-plugin: 5.3.10(@swc/core@1.4.4)(webpack@5.90.3)
watchpack: 2.4.0
webpack-sources: 3.2.3
transitivePeerDependencies: