diff --git a/CHANGELOG.md b/CHANGELOG.md
index ca8379bcfd..1841be3fb3 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -9,6 +9,15 @@
You should also include the user name that made the change.
-->
+## 13.1.1 (2023/01/22)
+
+### Improvements
+- ローカルのカスタム絵文字を表示する際のパフォーマンスを改善
+- Client: 瞬間的に大量の実績を解除した際の挙動を改善
+
+### Bugfixes
+- Client: アップデート時にローカリゼーションデータが更新されないことがあるのを修正
+
## 13.1.0 (2023/01/21)
### Improvements
diff --git a/locales/de-DE.yml b/locales/de-DE.yml
index f6095e4db6..ecead98c32 100644
--- a/locales/de-DE.yml
+++ b/locales/de-DE.yml
@@ -938,6 +938,234 @@ cannotPerformTemporary: "Vorübergehend nicht verfügbar"
cannotPerformTemporaryDescription: "Diese Aktion ist wegen des Überschreitenes des Ausführungslimits temporär nicht verfügbar. Bitte versuche es nach einiger Zeit erneut."
preset: "Vorlage"
selectFromPresets: "Aus Vorlagen wählen"
+achievements: "Errungenschaften"
+_achievements:
+ earnedAt: "Freigeschaltet am"
+ _types:
+ _notes1:
+ title: "Hallo Misskey!"
+ description: "Sende deine erste Notiz"
+ flavor: "Hab eine schöne Zeit mit Misskey!"
+ _notes10:
+ title: "Ein paar Notizen"
+ description: "10 Notizen gesendet"
+ _notes100:
+ title: "Viele Notizen"
+ description: "100 Notizen gesendet"
+ _notes500:
+ title: "Überschüttet mit Notizen"
+ description: "500 Notizen gesendet"
+ _notes1000:
+ title: "Berg an Notizen"
+ description: "1.000 Notizen gesendet"
+ _notes5000:
+ title: "Überquellende Notizen"
+ description: "5.000 Notizen gesendet"
+ _notes10000:
+ title: "Supernotiz"
+ description: "10.000 Notizen gesendet"
+ _notes20000:
+ title: "Brauche... mehr... Notizen"
+ description: "20.000 Notizen gesendet"
+ _notes30000:
+ title: "Notizen, Notizen, Notizen"
+ description: "30.000 Notizen gesendet"
+ _notes40000:
+ title: "Notizfabrik"
+ description: "40.000 Notizen gesendet"
+ _notes50000:
+ title: "Planet der Notizen"
+ description: "50.000 Notizen gesendet"
+ _notes60000:
+ title: "Notizquasar"
+ description: "60.000 Notizen gesendet"
+ _notes70000:
+ title: "Schwarzes Notizloch"
+ description: "70.000 Notizen gesendet"
+ _notes80000:
+ title: "Notizgalaxie"
+ description: "80.000 Notizen gesendet"
+ _notes90000:
+ title: "Notizversum"
+ description: "90.000 Notizen gesendet"
+ _notes100000:
+ title: "ALL YOUR NOTE ARE BELONG TO US"
+ description: "100.000 Notizen gesendet"
+ flavor: "Du hast wirklich viel zu sagen."
+ _login3:
+ title: "Anfänger Ⅰ"
+ description: "An 3 Tagen eingeloggt"
+ flavor: "Nenn' mich ab heute Misskist"
+ _login7:
+ title: "Anfänger Ⅱ"
+ description: "An 7 Tagen eingeloggt"
+ flavor: "Na, eingewöht?"
+ _login15:
+ title: "Anfänger Ⅲ"
+ description: "An 15 Tagen eingeloggt"
+ _login30:
+ title: "Misskist Ⅰ"
+ description: "An 30 Tagen eingeloggt"
+ _login60:
+ title: "Misskist Ⅱ"
+ description: "An 60 Tagen eingeloggt"
+ _login100:
+ title: "Misskist Ⅲ"
+ description: "An 100 Tagen eingeloggt"
+ flavor: "Violent Misskist"
+ _login200:
+ title: "Stammbesucher Ⅰ"
+ description: "An 200 Tagen eingeloggt"
+ _login300:
+ title: "Stammbesucher Ⅱ"
+ description: "An 300 Tagen eingeloggt"
+ _login400:
+ title: "Stammbesucher Ⅲ"
+ description: "An 400 Tagen eingeloggt"
+ _login500:
+ title: "Veteran Ⅰ"
+ description: "An 500 Tagen eingeloggt"
+ flavor: "Meine Kameraden, ich liebe sie, die Notizen."
+ _login600:
+ title: "Veteran Ⅱ"
+ description: "An 600 Tagen eingeloggt"
+ _login700:
+ title: "Veteran Ⅲ"
+ description: "An 700 Tagen eingeloggt"
+ _login800:
+ title: "Meister der Notizen Ⅰ"
+ description: "An 800 Tagen eingeloggt"
+ _login900:
+ title: "Meister der Notizen Ⅱ"
+ description: "An 900 Tagen eingeloggt"
+ _login1000:
+ title: "Meister der Notizen Ⅲ"
+ description: "An 1000 Tagen eingeloggt"
+ flavor: "Danke, dass du Misskey nutzt!"
+ _noteClipped1:
+ title: "Muss... clippen..."
+ description: "Die erste Notiz geclippt"
+ _noteFavorited1:
+ title: "Sternengucker"
+ description: "Eine Notiz als Favorit markiert"
+ _profileFilled:
+ title: "Perfekte Vorbereitung"
+ description: "Fülle dein Profil aus"
+ _markedAsCat:
+ title: "Ich der Kater"
+ description: "Markiere dein Konto als Katze"
+ flavor: "Einen Namen bekommst du später. "
+ _following1:
+ title: "Das Folgen beginnt"
+ description: "Du folgst deiner ersten Person"
+ _following10:
+ title: "Folge ihnen... folge ihnen..."
+ description: "Du folgst über 10 Leuten"
+ _following50:
+ title: "Viele Freunde"
+ description: "Du folgst über 50 Leuten"
+ _following100:
+ title: "100 Freunde"
+ description: "Du folgst über 100 Leuten"
+ _following300:
+ title: "Freundeüberschuss"
+ description: "Du folgst über 300 Leuten"
+ _followers1:
+ title: "Der erste Follower"
+ description: "Du hast deinen ersten Follower erhalten"
+ _followers10:
+ title: "Mir nach!"
+ description: "Die Anzahl deiner Follower hat 10 überschritten"
+ _followers50:
+ title: "Wirrwarr"
+ description: "Die Anzahl deiner Follower hat 50 überschritten"
+ _followers100:
+ title: "Beliebt"
+ description: "Die Anzahl deiner Follower hat 100 überschritten"
+ _followers300:
+ title: "Stellt euch bitte in einer Reihe auf"
+ description: "Die Anzahl deiner Follower hat 300 überschritten"
+ _followers500:
+ title: "Funkmast"
+ description: "Die Anzahl deiner Follower hat 500 überschritten"
+ _followers1000:
+ title: "Influencer"
+ description: "Die Anzahl deiner Follower hat 1000 überschritten"
+ _collectAchievements30:
+ title: "Sammler der Errungenschaften"
+ description: "Schalte 30 Errungenschaften frei"
+ _viewAchievements3min:
+ title: "Fan von Errungenschaften"
+ description: "Schau dir die Liste deiner Errungenschaften für mindestens 3 Minuten an"
+ _iLoveMisskey:
+ title: "I Love Misskey"
+ description: "Sende \"I ❤ #Misskey\""
+ flavor: "Danke, dass du Misskey verwendest! - vom Entwicklerteam"
+ _client30min:
+ title: "Kleine Pause"
+ description: "Seit dem Öffnen deines Clients sind 30 Minuten vergangen"
+ _noteDeletedWithin1min:
+ title: "Ups"
+ description: "Lösche eine Notiz innerhalb von 1 Minute nachdem sie gesendet wurde"
+ _postedAtLateNight:
+ title: "Nachtaktiv"
+ description: "Sende mitten in der Nacht eine Notiz"
+ flavor: "Geh bald schlafen."
+ _postedAt0min0sec:
+ title: "Zeitansage"
+ description: "Sende um 00:00 eine Notiz"
+ flavor: "Klick Klick Klick Dooong"
+ _selfQuote:
+ title: "Selbstzitat"
+ description: "Zitiere eine eigene Notiz"
+ _htl20npm:
+ title: "Fließende Chronik"
+ description: "Deine Startseitenchronik erreicht eine Geschwindigkeit von 20 npm (Notizen pro Minute)"
+ _outputHelloWorldOnScratchpad:
+ title: "Hallo Welt!"
+ description: "Gib \"hello world\" in der Testumgebung aus"
+ _open3windows:
+ title: "Splitscreen"
+ description: "Habe zur gleichen Zeit mindestens 3 Fenster offen"
+ _driveFolderCircularReference:
+ title: "Zyklischer Verweis"
+ description: "Versuche, in Drive einen Zirkelbezug von Ordnern herzustellen"
+ _reactWithoutRead:
+ title: "Hast du das wirklich gelesen?"
+ description: "Reagiere auf eine Notiz mit mindestens 100 Zeichen innerhalb von 3 Sekunden der Erstellung der Notiz"
+ _clickedClickHere:
+ title: "Klicke hier"
+ description: "Du hast hier geklickt"
+ _justPlainLucky:
+ title: "Pures Glück"
+ description: "Kann alle 10 Sekunden mit einer Warscheinlichkeit von 0.01% erhalten werden"
+ _setNameToSyuilo:
+ title: "Gottkomplex"
+ description: "Setze deinen Namen auf \"syuilo\""
+ _passedSinceAccountCreated1:
+ title: "Einjahresjubiläum"
+ description: "Seit der Erstellung deines Kontos ist 1 Jahr vergangen"
+ _passedSinceAccountCreated2:
+ title: "Zweijahresjubiläum"
+ description: "Seit der Erstellung deines Kontos sind 2 Jahre vergangen"
+ _passedSinceAccountCreated3:
+ title: "Dreijahresjubiläum"
+ description: "Seit der Erstellung deines Kontos sind 3 Jahre vergangen"
+ _loggedInOnBirthday:
+ title: "Alles Gute Zum Geburtstag"
+ description: "Logge dich an deinem Geburtstag ein"
+ _loggedInOnNewYearsDay:
+ title: "Frohes Neujahr"
+ description: "Logge dich am Neujahrstag ein"
+ flavor: "Auf ein weiteres tolles Jahr in dieser Instanz"
+ _cookieClicked:
+ title: "Ein Spiel, in dem du auf einen Keks klickst"
+ description: "Den Keks geklickt"
+ flavor: "Bist du hier richtig?"
+ _brainDiver:
+ title: "Brain Diver"
+ description: "Sende den Link zu Brain Diver"
+ flavor: "Misskey-Misskey La-Tu-Ma"
_role:
new: "Rolle erstellen"
edit: "Rolle bearbeiten"
@@ -1587,6 +1815,7 @@ _notification:
pollEnded: "Umfrageergebnisse sind verfügbar"
unreadAntennaNote: "Antenne {name}"
emptyPushNotificationMessage: "Push-Benachrichtigungen wurden aktualisiert"
+ achievementEarned: "Errungenschaft freigeschaltet"
_types:
all: "Alle"
follow: "Neue Follower"
diff --git a/locales/en-US.yml b/locales/en-US.yml
index b9f1603d26..e398f1fd58 100644
--- a/locales/en-US.yml
+++ b/locales/en-US.yml
@@ -938,8 +938,198 @@ cannotPerformTemporary: "Temporarily unavailable"
cannotPerformTemporaryDescription: "This action cannot be performed temporarily due to exceeding the execution limit. Please wait for a while and then try again."
preset: "Preset"
selectFromPresets: "Choose from presets"
+achievements: "Achievements"
_achievements:
+ earnedAt: "Unlocked at"
_types:
+ _notes1:
+ title: "just setting up my msky"
+ description: "Post your first note"
+ flavor: "Have a good Misskey life!"
+ _notes10:
+ title: "Some notes"
+ description: "Post 10 notes"
+ _notes100:
+ title: "A lot of notes"
+ description: "Post 100 notes"
+ _notes500:
+ title: "Covered in notes"
+ description: "Post 500 notes"
+ _notes1000:
+ title: "A mountain of notes"
+ description: "Post 1,000 notes"
+ _notes5000:
+ title: "Overflowing notes"
+ description: "Post 5,000 notes"
+ _notes10000:
+ title: "Supernote"
+ description: "Post 10,000 notes"
+ _notes20000:
+ title: "Need... more... notes..."
+ description: "Post 20,000 notes"
+ _notes30000:
+ title: "Notes notes notes!"
+ description: "Post 30,000 notes"
+ _notes40000:
+ title: "Note factory"
+ description: "Post 40,000 notes"
+ _notes50000:
+ title: "Planet of notes"
+ description: "Post 50,000 notes"
+ _notes60000:
+ title: "Note quasar"
+ description: "Post 60,000 notes"
+ _notes70000:
+ title: "Note black hole"
+ description: "Post 70,000 notes"
+ _notes80000:
+ title: "Note galaxy"
+ description: "Post 80,000 notes"
+ _notes90000:
+ title: "Note universe"
+ description: "Post 90,000 notes"
+ _notes100000:
+ title: "ALL YOUR NOTE ARE BELONG TO US"
+ description: "Post 100,000 notes"
+ flavor: "You sure have a lot to say."
+ _login3:
+ title: "Beginner I"
+ description: "Log in for a total of 3 days"
+ flavor: "Starting today, just call me Misskist"
+ _login7:
+ title: "Beginner II"
+ description: "Log in for a total of 7 days"
+ flavor: "Feel like you've gotten the hang of things yet?"
+ _login15:
+ title: "Beginner III"
+ description: "Log in for a total of 15 days"
+ _login30:
+ title: "Misskist I"
+ description: "Log in for a total of 30 days"
+ _login60:
+ title: "Misskist II"
+ description: "Log in for a total of 60 days"
+ _login100:
+ title: "Misskist III"
+ description: "Log in for a total of 100 days"
+ flavor: "Violent Misskist"
+ _login200:
+ title: "Regular I"
+ description: "Log in for a total of 200 days"
+ _login300:
+ title: "Regular II"
+ description: "Log in for a total of 300 days"
+ _login400:
+ title: "Regular III"
+ description: "Log in for a total of 400 days"
+ _login500:
+ title: "Expert I"
+ description: "Log in for a total of 500 days"
+ flavor: "My friends, it has often been said that I like notes"
+ _login600:
+ title: "Expert II"
+ description: "Log in for a total of 600 days"
+ _login700:
+ title: "Expert III"
+ description: "Log in for a total of 700 days"
+ _login800:
+ title: "Master of Notes I"
+ description: "Log in for a total of 800 days"
+ _login900:
+ title: "Master of Notes II"
+ description: "Log in for a total of 900 days"
+ _login1000:
+ title: "Master of Notes III"
+ description: "Log in for a total of 1,000 days"
+ flavor: "Thank you for using Misskey!"
+ _noteClipped1:
+ title: "Must... clip..."
+ description: "Clip your first note"
+ _noteFavorited1:
+ title: "Stargazer"
+ description: "Favorite your first note"
+ _profileFilled:
+ title: "Well-prepared"
+ description: "Set up your profile"
+ _markedAsCat:
+ title: "I Am a Cat"
+ description: "Mark your account as a cat"
+ flavor: "I'll give you a name later."
+ _following1:
+ title: "Following your first user"
+ description: "Follow a user"
+ _following10:
+ title: "Keep up... keep up..."
+ description: "Follow 10 users"
+ _following50:
+ title: "Lots of friends"
+ description: "Follow 50 accounts"
+ _following100:
+ title: "100 Friends"
+ description: "Follow 100 accounts"
+ _following300:
+ title: "Friend overload"
+ description: "Follow 300 accounts"
+ _followers1:
+ title: "First follower"
+ description: "Gain 1 follower"
+ _followers10:
+ title: "Follow me!"
+ description: "Gain 10 followers"
+ _followers50:
+ title: "Coming in crowds"
+ description: "Gain 50 followers"
+ _followers100:
+ title: "Popular"
+ description: "Gain 100 followers"
+ _followers300:
+ title: "Please form a single line"
+ description: "Gain 300 followers"
+ _followers500:
+ title: "Radio Tower"
+ description: "Gain 500 followers"
+ _followers1000:
+ title: "Influencer"
+ description: "Gain 1,000 followers"
+ _collectAchievements30:
+ title: "Achievement Collector"
+ description: "Earn 30 achievements"
+ _viewAchievements3min:
+ title: "Likes Achievements"
+ description: "Look at your list of achievements for at least 3 minutes"
+ _iLoveMisskey:
+ title: "I Love Misskey"
+ description: "Post \"I ❤ #Misskey\""
+ flavor: "Misskey's development team greatly appreciates your support!"
+ _client30min:
+ title: "Short break"
+ description: "Spend 30 minutes on Misskey"
+ _noteDeletedWithin1min:
+ title: "Nevermind"
+ description: "Delete a note within a minute of posting it"
+ _postedAtLateNight:
+ title: "Nocturnal"
+ description: "Post a note late at night"
+ flavor: "It's about time to go to bed."
+ _postedAt0min0sec:
+ title: "Speaking Clock"
+ description: "Post a note at 00:00"
+ flavor: "Click Click Click Claaang"
+ _selfQuote:
+ title: "Self-Reference"
+ description: "Quote your own note"
+ _htl20npm:
+ title: "Flowing Timeline"
+ description: "Have the speed of your home timeline exceed 20 npm (notes per minute)"
+ _outputHelloWorldOnScratchpad:
+ title: "Hello, world!"
+ description: "Output \"hello world\" in the Scratchpad"
+ _open3windows:
+ title: "Multi-Window"
+ description: "Have at least 3 windows open at the same time"
+ _driveFolderCircularReference:
+ title: "Circular Reference"
+ description: "Attempt to create a recursively nested folder in Drive"
_reactWithoutRead:
title: "Did you really read that?"
description: "React on a note that's over 100 characters long within 3 seconds of it being posted"
@@ -963,10 +1153,15 @@ _achievements:
description: "Three years have passed since your account was created"
_loggedInOnBirthday:
title: "Happy Birthday"
- description: "Logged in on your birthday"
+ description: "Log in on your birthday"
+ _loggedInOnNewYearsDay:
+ title: "Happy New Year!"
+ description: "Logged in on the first day of the year"
+ flavor: "To another great year on this instance"
_cookieClicked:
title: "A game in which you click cookies"
description: "Clicked the cookie"
+ flavor: "Wait, are you on the correct website?"
_brainDiver:
title: "Brain Diver"
description: "Post the link to Brain Diver"
diff --git a/locales/ko-KR.yml b/locales/ko-KR.yml
index 3e6ab5a2f5..bf747e3cb7 100644
--- a/locales/ko-KR.yml
+++ b/locales/ko-KR.yml
@@ -1094,6 +1094,9 @@ _achievements:
_collectAchievements30:
title: "도전과제 콜렉터"
description: "30개의 도전과제를 획득했습니다"
+ _viewAchievements3min:
+ title: "저 도전과제 좋아해요"
+ description: "도전과제 목록을 3분 이상 보세요"
_iLoveMisskey:
title: "I Love Misskey"
description: "\"I ❤ #Misskey\"를 포스트했습니다"
@@ -1118,6 +1121,12 @@ _achievements:
_htl20npm:
title: "타임라인 폭주 중"
description: "1분 사이에 홈 타임라인에 노트가 20개 넘게 생성되었습니다"
+ _outputHelloWorldOnScratchpad:
+ title: "Hello, world!"
+ description: "스크래치패드에서 hello world를 출력하세요"
+ _open3windows:
+ title: "멀티 윈도우"
+ description: "3개 이상의 창을 여세요"
_driveFolderCircularReference:
title: "순환 참조"
description: "드라이브 폴더를 자신을 가리키도록 만드려 시도했습니다"
@@ -1145,6 +1154,10 @@ _achievements:
_loggedInOnBirthday:
title: "생일 축하합니다!"
description: "설정한 생일에 로그인했습니다"
+ _loggedInOnNewYearsDay:
+ title: "새해 복 많이 받으세요"
+ description: "새해 첫 날에 로그인했습니다"
+ flavor: "올해에도 저희 인스턴스에 관심을 가져 주셔서 감사합니다"
_cookieClicked:
title: "쿠키 클리커 게임"
description: "쿠키를 클릭했습니다"
diff --git a/locales/ru-RU.yml b/locales/ru-RU.yml
index d7aca1c9fc..133169e8da 100644
--- a/locales/ru-RU.yml
+++ b/locales/ru-RU.yml
@@ -2,6 +2,7 @@
_lang_: "Русский"
headlineMisskey: "Сеть, сплетённая из заметок"
introMisskey: "Добро пожаловать! Misskey — это децентрализованный сервис микроблогов с открытым исходным кодом.\nПишите «заметки» — делитесь со всеми происходящим вокруг или рассказывайте о себе 📡\nСтавьте «реакции» — выражайте свои чувства и эмоции от заметок других 👍\nОткройте для себя новый мир 🚀"
+poweredByMisskeyDescription: "{name} – один из инстансов (также называемый экземпляром Misskey), использующий платформу с открытым исходным кодом Misskey."
monthAndDay: "{day}.{month}"
search: "Поиск"
notifications: "Уведомления"
@@ -12,6 +13,7 @@ fetchingAsApObject: "Приём с других сайтов"
ok: "Окей"
gotIt: "Ясно!"
cancel: "Отмена"
+noThankYou: "Нет, спасибо"
enterUsername: "Введите имя пользователя"
renotedBy: "{user} делится"
noNotes: "Нет ни одной заметки"
@@ -47,6 +49,7 @@ deleteAndEdit: "Удалить и отредактировать"
deleteAndEditConfirm: "Удалить эту заметку и создать отредактированную? Все реакции, ссылки и ответы на существующую будут будут потеряны."
addToList: "Добавить в список"
sendMessage: "Отправить сообщение"
+copyRSS: "Скопировать RSS"
copyUsername: "Скопировать имя пользователя"
searchUser: "Поиск людей"
reply: "Ответить"
@@ -452,6 +455,7 @@ language: "Язык"
uiLanguage: "Язык интерфейса"
groupInvited: "Приглашение в группу"
aboutX: "Описание {x}"
+emojiStyle: "Стиль эмодзи"
disableDrawer: "Не использовать выдвижные меню"
youHaveNoGroups: "У вас нет ни одной группы"
joinOrCreateGroup: "Получайте приглашения в группы или создавайте свои собственные"
@@ -709,6 +713,7 @@ accentColor: "Акцент"
textColor: "Текст"
saveAs: "Сохранить под названием…"
advanced: "Для продвинутых"
+advancedSettings: "Расширенные настройки "
value: "Значения"
createdAt: "Создано"
updatedAt: "Обновлено"
@@ -840,34 +845,254 @@ numberOfColumn: "Количество столбцов"
searchByGoogle: "Поиск"
instanceDefaultLightTheme: "Светлая тема по умолчанию"
instanceDefaultDarkTheme: "Темная тема по умолчанию"
+instanceDefaultThemeDescription: "Описание темы по умолчанию для инстанса"
mutePeriod: "Продолжительность скрытия"
indefinitely: "вечно"
tenMinutes: "10 минут"
oneHour: "1 час"
oneDay: "1 день"
oneWeek: "1 неделя"
+reflectMayTakeTime: "Изменения могут занять время для отображения"
+failedToFetchAccountInformation: "Не удалось получить информацию об аккаунте"
cropImage: "Кадрирование"
cropImageAsk: "Нужно ли кадрировать изображение?"
file: "Файлы"
recentNHours: "Последние {n} ч"
recentNDays: "Последние {n} сут"
+noEmailServerWarning: "Почтовый сервер не установлен "
+thereIsUnresolvedAbuseReportWarning: "Остались нерешённые жалобы"
recommended: "Рекомендуем"
check: "Проверить"
driveCapOverrideLabel: "Изменение лимита дискового пространства для этого пользователя"
+driveCapOverrideCaption: "Укажите меньше или равное нулю для отмены"
+requireAdminForView: "Для просмотра необходимо иметь аккаунт администратора"
+isSystemAccount: "Данная учётная запись создана автоматически и управляется системой"
+typeToConfirm: "Введите {x} для продолжения"
deleteAccount: "Удаление учётной записи"
+document: "Документ"
+numberOfPageCache: "Количество сохранённых страниц в кэше"
+numberOfPageCacheDescription: "Описание количества страниц в кэше"
+logoutConfirm: "Вы хотите выйти из аккаунта?"
+lastActiveDate: "Последняя дата использования"
+statusbar: "Статусбар"
+pleaseSelect: "Пожалуйста, выберите"
reverse: "Переворот"
colored: "Выделена цветом"
+refreshInterval: "Интервал перезагрузки"
label: "Метка"
+type: "Тип"
+speed: "Скорость"
+sensitiveMediaDetection: "Определение содержимого деликатного характера"
localOnly: "Локально"
+remoteOnly: "Только удалённо"
+failedToUpload: "Сбой выгрузки"
+cannotUploadBecauseInappropriate: "Файл не может быть загружен, так как было установлено, что он может содержать неприемлемое содержимое."
+cannotUploadBecauseNoFreeSpace: "Файл не может быть загружен, так как не осталось места на диске"
beta: "Бета"
enableAutoSensitive: "Автоматическое определение NSFW"
enableAutoSensitiveDescription: "Если доступно, используйте машинное обучение для автоматической установки флага NSFW на носителе. Даже если эта функция отключена, она может быть установлена автоматически в зависимости от инстанта."
account: "Учётные записи"
windowMaximize: "Развернуть"
windowRestore: "Восстановить"
+loggedInAsBot: "Вы под аккаунтом бота!"
like: "Нравится!"
+unlike: "Отменить «нравится»"
show: "Отображение"
+pleaseDonate: "Сайт {host} работает на Misskey. Это бесплатное программное обеспечение, и ваши пожертвования очень бы помогли продолжать его разработку!"
color: "Цвет"
+_achievements:
+ _types:
+ _notes1:
+ title: "Первые шаги в Misskey"
+ description: "Опубликована первая заметка"
+ _notes10:
+ title: "Несколько заметок"
+ description: "Опубликовано 10 заметок"
+ _notes100:
+ title: "Много заметок"
+ description: "Опубликовано 100 заметок"
+ _notes500:
+ title: "Всё в заметках"
+ description: "Опубликовано 500 заметок"
+ _notes1000:
+ title: "Гора заметок"
+ description: "Опубликовано 1000 заметок"
+ _notes5000:
+ title: "Заметки льются рекой"
+ description: "Опубликовано 5000 заметок"
+ _notes10000:
+ title: "Превосходство в заметках"
+ description: "Опубликовано 10 000 заметок"
+ _notes20000:
+ title: "Нужно больше заметок!"
+ description: "Опубликовано 20 000 заметок"
+ _notes30000:
+ title: "Заметки, заметки, заметки"
+ description: "Опубликовано 30 000 заметок"
+ _notes40000:
+ title: "Фабрика заметок"
+ description: "Опубликовано 40 000 заметок"
+ _notes50000:
+ title: "Планета заметок"
+ description: "Опубликовано 50 000 заметок"
+ _notes60000:
+ title: "Замет-квазар"
+ description: "Опубликовано 60 000 заметок"
+ _notes70000:
+ title: "Чёрная дыра из заметок"
+ description: "Опубликовано 70 000 заметок"
+ _notes80000:
+ title: "Галактика заметок"
+ description: "Опубликовано 80 000 заметок"
+ _notes90000:
+ title: "Вселенная заметок"
+ description: "Опубликовано 90 000 заметок"
+ _notes100000:
+ title: "ALL YOUR NOTE ARE BELONG TO US"
+ description: "Опубликовано 100 000 заметок"
+ _login3:
+ title: "Новичок Ⅰ"
+ description: "3 дня на сайте"
+ _login7:
+ title: "Новичок Ⅱ"
+ description: "Неделя на сайте"
+ flavor: "Кажется, вы начали свыкаться с этим, нет?"
+ _login15:
+ title: "Новичок Ⅲ"
+ description: "15 дней на сайте"
+ _login30:
+ title: "Мискиец Ⅰ"
+ description: "30 дней на сайте"
+ _login60:
+ title: "Мискиец Ⅱ"
+ description: "60 дней на сайте"
+ _login100:
+ title: "Мискиец Ⅲ"
+ description: "100 дней на сайте"
+ _login200:
+ title: "Завсегдатай Ⅰ"
+ description: "200 дней на сайте"
+ _login300:
+ title: "Завсегдатай Ⅱ"
+ description: "300 дней на сайте"
+ _login400:
+ title: "Завсегдатай Ⅲ"
+ description: "400 дней на сайте"
+ _login500:
+ title: "Ветеран Ⅰ"
+ description: "500 дней на сайте"
+ _login600:
+ title: "Ветеран Ⅱ"
+ description: "600 дней на сайте"
+ _login700:
+ title: "Ветеран Ⅲ"
+ description: "700 дней на сайте"
+ _login800:
+ title: "Повелитель заметок Ⅰ"
+ description: "800 дней на сайте"
+ _login900:
+ title: "Повелитель заметок Ⅱ"
+ description: "900 дней на сайте"
+ _login1000:
+ title: "Повелитель заметок Ⅲ"
+ description: "1000 дней на сайте"
+ _noteClipped1:
+ title: "Нельзя не сохранить"
+ description: "Первая заметка в подборке"
+ _noteFavorited1:
+ title: "Смотрящий на звёзды"
+ description: "Первое добавление в избранное"
+ _profileFilled:
+ title: "Приготовления закончены"
+ description: "Заполнен профиль"
+ _markedAsCat:
+ description: "Включена опция «Аккаунт кота»"
+ _followers50:
+ title: "Один за другим"
+ description: "Подписчиков больше 50"
+ _followers100:
+ title: "Всеобщий любимец"
+ description: "Подписчиков больше 100"
+ _followers300:
+ title: "В очередь!"
+ description: "Подписчиков больше 300"
+ _followers500:
+ title: "Радиостанция"
+ description: "Подписчиков больше 300"
+ _followers1000:
+ title: "Авторитет"
+ description: "Подписчиков больше 1000"
+ _collectAchievements30:
+ title: "Достигатор"
+ description: "Получено 30 достижений"
+ _viewAchievements3min:
+ title: "Любовь к успехам"
+ description: "Более 3 минут любования достижениями"
+ _iLoveMisskey:
+ title: "Я люблю Misskey"
+ description: "Написана заметка «I ❤ #Misskey»"
+ _client30min:
+ title: "Перерыв на обед"
+ description: "Прошло 30 минут с момента запуска клиента"
+ _noteDeletedWithin1min:
+ title: "Ой, нет!"
+ description: "Заметка удалена через минуту после публикации"
+ _postedAtLateNight:
+ title: "Житель ночи"
+ description: "Заметка опубликована в глухую ночь"
+ _postedAt0min0sec:
+ title: "Говорящие часы"
+ description: "Заметка опубликована ровно в 0 минут 0 секунд"
+ flavor: "Дин-дон дин-дон"
+ _selfQuote:
+ title: "Самовоспроизведение"
+ description: "Процитирована собственная заметка"
+ _htl20npm:
+ title: "В потоке"
+ description: "Достигнута скорость домашней ленты в 20 з/мин (заметок минуту)"
+ _outputHelloWorldOnScratchpad:
+ title: "Привет, мир!"
+ description: "Выведен текст «hello world» в Когтеточке"
+ _open3windows:
+ title: "Многооконный"
+ description: "Открыто одновременно 3 окна"
+ _driveFolderCircularReference:
+ description: "Попытка создать на «диске» рекурсивно вложенную папку"
+ _reactWithoutRead:
+ title: "Не читай @ отвечай!"
+ description: "На заметку более чем 100 знаков написан ответ в первые же 3 секунды с её появления."
+ _clickedClickHere:
+ title: "Нажмите здесь"
+ description: "Нажато здесь"
+ _justPlainLucky:
+ title: "Чистая удача"
+ description: "Может достаться с вероятностью 0,01% каждые 10 секунд."
+ _setNameToSyuilo:
+ title: "Комплекс бога"
+ description: "Установлено «syuilo» в качестве имени"
+ _passedSinceAccountCreated1:
+ title: "Первая годовщина"
+ description: "Прошёл 1 год с момента регистрации"
+ _passedSinceAccountCreated2:
+ title: "Вторая годовщина"
+ description: "Прошло 2 года с момента регистрации"
+ _passedSinceAccountCreated3:
+ title: "Третья годовщина"
+ description: "Прошло 3 года с момента регистрации"
+ _loggedInOnBirthday:
+ title: "С днём рождения!"
+ description: "Вход на сайт в свой день рождения"
+ _loggedInOnNewYearsDay:
+ title: "С Новым годом!"
+ description: "Вход на сайт в первый день года"
+ _cookieClicked:
+ title: "Игра, в которой вы щёлкаете по печенькам"
+ description: "Нажато печенье"
+ flavor: "Стоп, вы вообще на том сайте-то?"
+ _brainDiver:
+ title: "Brain Diver"
+ description: "Опубликована ссылка на песню «Brain Diver»"
+ flavor: "Мисски-Мисски Ла-Ту-Ма"
_role:
priority: "Приоритет"
_priority:
diff --git a/locales/zh-CN.yml b/locales/zh-CN.yml
index 817fc69462..33127264b6 100644
--- a/locales/zh-CN.yml
+++ b/locales/zh-CN.yml
@@ -938,6 +938,82 @@ cannotPerformTemporary: "暂时不可用"
cannotPerformTemporaryDescription: "因操作过于频繁,暂时不可用,请稍后再试。"
preset: "預設值"
selectFromPresets: "從預設值中選擇"
+achievements: "成就"
+_achievements:
+ earnedAt: "达成时间"
+ _types:
+ _notes1:
+ title: "初来乍到"
+ description: "第一次发帖"
+ flavor: "祝您在Misskey玩的愉快~"
+ _notes10:
+ title: "一些帖子"
+ description: "发布了10篇帖子"
+ _notes100:
+ title: "很多帖子"
+ description: "发布了100篇帖子"
+ _notes500:
+ title: "满是帖子"
+ description: "发布了500篇帖子"
+ _notes1000:
+ title: "帖子成山"
+ description: "发布了1,000篇帖子"
+ _notes5000:
+ title: "帖如泉涌"
+ description: "发布了5,000篇帖子"
+ _notes10000:
+ title: "超级帖"
+ description: "发布了10,000篇帖子"
+ _notes20000:
+ title: "还想要更多帖子"
+ description: "发布了20,000篇帖子"
+ _notes30000:
+ title: "帖子帖子帖子"
+ description: "发布了30,000篇帖子"
+ _notes40000:
+ title: "帖子工厂"
+ description: "发布了40,000篇帖子"
+ _notes50000:
+ title: "帖子星球"
+ description: "发布了50,000篇帖子"
+ _notes60000:
+ title: "帖子类星体"
+ description: "发布了60,000篇帖子"
+ _notes70000:
+ title: "帖子黑洞"
+ description: "发布了70,000篇帖子"
+ _notes80000:
+ title: "帖子星系"
+ description: "发布了80,000篇帖子"
+ _notes90000:
+ title: "帖子起源"
+ description: "发布了90,000篇帖子"
+ _notes100000:
+ title: "ALL YOUR NOTE ARE BELONG TO US"
+ description: "发布了100,000篇帖子"
+ flavor: "真的有那么多可以写的东西吗?"
+ _login1000:
+ flavor: "感谢您使用Misskey!"
+ _noteFavorited1:
+ title: "观星者"
+ _markedAsCat:
+ title: "我是猫"
+ _following50:
+ title: "我的朋友很多"
+ _viewAchievements3min:
+ description: "盯着成就看三分钟"
+ _iLoveMisskey:
+ title: "I Love Misskey"
+ description: "发布\"I ❤ #Misskey\"帖子"
+ flavor: "感谢您使用 Misskey ! by 开发团队"
+ _outputHelloWorldOnScratchpad:
+ title: "Hello, world!"
+ _loggedInOnBirthday:
+ title: "生日快乐"
+ description: "在生日当天登录"
+ _loggedInOnNewYearsDay:
+ title: "恭贺新禧"
+ description: "在元旦登入"
_role:
new: "创建角色"
edit: "编辑角色"
@@ -1587,6 +1663,7 @@ _notification:
pollEnded: "问卷调查结果已生成。"
unreadAntennaNote: "天线 {name}"
emptyPushNotificationMessage: "推送通知已更新"
+ achievementEarned: "获得成就"
_types:
all: "全部"
follow: "关注中"
diff --git a/locales/zh-TW.yml b/locales/zh-TW.yml
index 025a4c3e5d..b88cfd91ae 100644
--- a/locales/zh-TW.yml
+++ b/locales/zh-TW.yml
@@ -989,11 +989,115 @@ _achievements:
title: "貼文宇宙"
description: "發表了90000則貼文"
_notes100000:
+ title: "ALL YOUR NOTE ARE BELONG TO US"
description: "發表了100,000則貼文"
flavor: "有這麼多東西要寫嗎?"
_login3:
- title: "初學者 I"
+ title: "初學者Ⅰ"
description: "總登入天數為3天"
+ flavor: "從今天開始,我就是Misskeyist"
+ _login7:
+ title: "初學者ⅠⅠ"
+ description: "總登入天數為7天"
+ flavor: "您開始習慣了嗎?"
+ _login15:
+ title: "初學者III"
+ description: "總登入天數為15天"
+ _login30:
+ title: "Misskeyist Ⅰ"
+ description: "總登入天數為30天"
+ _login60:
+ title: "Misskeyist ⅠⅠ"
+ description: "總登入天數為60天"
+ _login100:
+ title: "Misskeyist ⅠⅠⅠ"
+ description: "總登入天數為100天"
+ flavor: "辣個 Misskeyist 用戶"
+ _login200:
+ title: "普通Ⅰ"
+ description: "總登入天數為200天"
+ _login300:
+ title: "普通IⅠ"
+ description: "總登入天數為300天"
+ _login400:
+ title: "普通IIⅠ"
+ description: "總登入天數為400天"
+ _login500:
+ title: "老兵Ⅰ"
+ description: "總登入天數為500天"
+ flavor: "諸君,我喜歡貼文"
+ _login600:
+ title: "老兵ⅠⅠ"
+ description: "總登入天數為600天"
+ _login700:
+ title: "老兵ⅠⅠⅠ"
+ description: "總登入天數為700天"
+ _login800:
+ title: "貼文大師Ⅰ"
+ description: "總登入天數為800天"
+ _login900:
+ title: "貼文大師ⅠⅠ"
+ description: "總登入天數為900天"
+ _login1000:
+ title: "貼文大師ⅠⅠⅠ"
+ description: "總登入天數為1,000天"
+ flavor: "感謝您使用Misskey!"
+ _followers500:
+ title: "基站"
+ description: "超過500名追隨者"
+ _followers1000:
+ title: "影響者"
+ description: "超過1000名追隨者"
+ _collectAchievements30:
+ title: "成就收藏家"
+ description: "獲得30個以上的成就"
+ _viewAchievements3min:
+ title: "喜愛成就"
+ description: "看成就列表要花了3分鐘以上"
+ _iLoveMisskey:
+ title: "I Love Misskey"
+ description: "發布「I ❤ #Misskey」"
+ flavor: "感謝您使用Misskey! by 開發團隊"
+ _client30min:
+ title: "休息一下"
+ description: "用戶端啟動已超過30分鐘"
+ _noteDeletedWithin1min:
+ title: "現在沒有"
+ description: "發文後1分鐘內刪文"
+ _postedAtLateNight:
+ title: "夜行性"
+ description: "在深夜發佈貼文"
+ flavor: "該去睡覺了。"
+ _postedAt0min0sec:
+ title: "報時"
+ description: "在0分0秒發佈貼文"
+ _selfQuote:
+ title: "自我引用"
+ description: "引用了自己的貼文"
+ _htl20npm:
+ title: "流動的TL"
+ description: "在首頁時間軸的流速超過20npm"
+ _outputHelloWorldOnScratchpad:
+ title: "Hello world!"
+ description: "在暫存記憶體輸出了 hello world"
+ _open3windows:
+ title: "多重視窗"
+ description: "開啟3個以上的視窗"
+ _driveFolderCircularReference:
+ title: "循環引用"
+ description: "試圖遞迴套入雲端硬碟資料夾"
+ _reactWithoutRead:
+ title: "有好好讀過嗎?"
+ description: "對包含100字以上內容的貼文做出情感反應"
+ _clickedClickHere:
+ title: "點擊這裡"
+ description: "已點擊這裡了"
+ _justPlainLucky:
+ title: "只是運氣好"
+ description: "每10秒有0.01%的機率獲得"
+ _setNameToSyuilo:
+ title: "神的情結"
+ description: "將名稱設定為 syuilo"
_role:
new: "建立角色"
edit: "編輯角色"
diff --git a/package.json b/package.json
index 25a74d4040..d30ea8eea3 100644
--- a/package.json
+++ b/package.json
@@ -54,11 +54,11 @@
"devDependencies": {
"@types/gulp": "4.0.10",
"@types/gulp-rename": "2.0.1",
- "@typescript-eslint/eslint-plugin": "5.48.1",
- "@typescript-eslint/parser": "5.48.1",
+ "@typescript-eslint/eslint-plugin": "5.48.2",
+ "@typescript-eslint/parser": "5.48.2",
"cross-env": "7.0.3",
"cypress": "12.3.0",
- "eslint": "^8.31.0",
+ "eslint": "^8.32.0",
"start-server-and-test": "1.15.2"
},
"optionalDependencies": {
diff --git a/packages/backend/package.json b/packages/backend/package.json
index 68cfbb05ad..be9012021f 100644
--- a/packages/backend/package.json
+++ b/packages/backend/package.json
@@ -58,9 +58,9 @@
"date-fns": "2.29.3",
"deep-email-validator": "0.1.21",
"escape-regexp": "0.0.1",
- "fastify": "4.11.0",
+ "fastify": "4.12.0",
"feed": "4.2.2",
- "file-type": "18.1.0",
+ "file-type": "18.2.0",
"fluent-ffmpeg": "2.1.2",
"form-data": "^4.0.0",
"got": "12.5.3",
@@ -89,7 +89,7 @@
"probe-image-size": "7.2.3",
"promise-limit": "2.7.0",
"pug": "3.0.2",
- "punycode": "2.2.0",
+ "punycode": "2.3.0",
"pureimage": "0.3.15",
"qrcode": "1.5.1",
"random-seed": "0.3.0",
@@ -120,7 +120,7 @@
"typeorm": "0.3.11",
"typescript": "4.9.4",
"ulid": "2.3.0",
- "undici": "^5.15.0",
+ "undici": "^5.15.1",
"unzipper": "0.10.11",
"uuid": "9.0.0",
"vary": "1.1.2",
@@ -132,7 +132,7 @@
"devDependencies": {
"@redocly/openapi-core": "1.0.0-beta.120",
"@swc/cli": "^0.1.59",
- "@swc/core": "1.3.26",
+ "@swc/core": "1.3.27",
"@swc/jest": "0.2.24",
"@types/accepts": "1.3.5",
"@types/archiver": "5.3.1",
@@ -144,7 +144,7 @@
"@types/escape-regexp": "0.0.1",
"@types/fluent-ffmpeg": "2.1.20",
"@types/ioredis": "4.28.10",
- "@types/jest": "29.2.5",
+ "@types/jest": "29.2.6",
"@types/js-yaml": "4.0.5",
"@types/jsdom": "20.0.1",
"@types/jsonld": "1.5.8",
@@ -176,11 +176,11 @@
"@types/web-push": "3.3.2",
"@types/websocket": "1.0.5",
"@types/ws": "8.5.4",
- "@typescript-eslint/eslint-plugin": "5.48.1",
- "@typescript-eslint/parser": "5.48.1",
+ "@typescript-eslint/eslint-plugin": "5.48.2",
+ "@typescript-eslint/parser": "5.48.2",
"cross-env": "7.0.3",
- "eslint": "8.31.0",
- "eslint-plugin-import": "2.27.4",
+ "eslint": "8.32.0",
+ "eslint-plugin-import": "2.27.5",
"execa": "6.1.0",
"jest": "29.3.1",
"jest-mock": "^29.3.1",
diff --git a/packages/backend/src/core/entities/EmojiEntityService.ts b/packages/backend/src/core/entities/EmojiEntityService.ts
index 2a4e09519f..cee85a5688 100644
--- a/packages/backend/src/core/entities/EmojiEntityService.ts
+++ b/packages/backend/src/core/entities/EmojiEntityService.ts
@@ -22,7 +22,7 @@ export class EmojiEntityService {
@bindThis
public async pack(
src: Emoji['id'] | Emoji,
- opts: { omitHost?: boolean; omitId?: boolean; } = {},
+ opts: { omitHost?: boolean; omitId?: boolean; withUrl?: boolean; } = {},
): Promise> {
const emoji = typeof src === 'object' ? src : await this.emojisRepository.findOneByOrFail({ id: src });
@@ -32,13 +32,15 @@ export class EmojiEntityService {
name: emoji.name,
category: emoji.category,
host: opts.omitHost ? undefined : emoji.host,
+ // ?? emoji.originalUrl してるのは後方互換性のため
+ url: opts.withUrl ? (emoji.publicUrl ?? emoji.originalUrl) : undefined,
};
}
@bindThis
public packMany(
emojis: any[],
- opts: { omitHost?: boolean; omitId?: boolean; } = {},
+ opts: { omitHost?: boolean; omitId?: boolean; withUrl?: boolean; } = {},
) {
return Promise.all(emojis.map(x => this.pack(x, opts)));
}
diff --git a/packages/backend/src/models/schema/emoji.ts b/packages/backend/src/models/schema/emoji.ts
index d897a0fc05..143f25373c 100644
--- a/packages/backend/src/models/schema/emoji.ts
+++ b/packages/backend/src/models/schema/emoji.ts
@@ -29,5 +29,9 @@ export const packedEmojiSchema = {
optional: true, nullable: true,
description: 'The local host is represented with `null`.',
},
+ url: {
+ type: 'string',
+ optional: true, nullable: false,
+ },
},
} as const;
diff --git a/packages/backend/src/server/api/endpoints/emojis.ts b/packages/backend/src/server/api/endpoints/emojis.ts
index 97dcfde596..db1eddc80a 100644
--- a/packages/backend/src/server/api/endpoints/emojis.ts
+++ b/packages/backend/src/server/api/endpoints/emojis.ts
@@ -83,6 +83,7 @@ export default class extends Endpoint {
emojis: await this.emojiEntityService.packMany(emojis, {
omitId: true,
omitHost: true,
+ withUrl: true,
}),
};
});
diff --git a/packages/frontend/package.json b/packages/frontend/package.json
index 730389a2e6..cdfa96ea82 100644
--- a/packages/frontend/package.json
+++ b/packages/frontend/package.json
@@ -8,7 +8,7 @@
},
"dependencies": {
"@discordapp/twemoji": "14.0.2",
- "@rollup/plugin-alias": "4.0.2",
+ "@rollup/plugin-alias": "4.0.3",
"@rollup/plugin-json": "6.0.0",
"@rollup/pluginutils": "5.0.2",
"@syuilo/aiscript": "0.12.2",
@@ -18,10 +18,10 @@
"autobind-decorator": "2.4.0",
"autosize": "5.0.2",
"blurhash": "2.0.4",
- "broadcast-channel": "4.20.1",
+ "broadcast-channel": "4.20.2",
"browser-image-resizer": "git+https://github.com/misskey-dev/browser-image-resizer#v2.2.1-misskey.3",
"canvas-confetti": "^1.6.0",
- "chart.js": "4.1.2",
+ "chart.js": "4.2.0",
"chartjs-adapter-date-fns": "3.0.0",
"chartjs-chart-matrix": "^1.3.0",
"chartjs-plugin-gradient": "0.6.1",
@@ -41,10 +41,10 @@
"misskey-js": "0.0.14",
"photoswipe": "5.3.4",
"prismjs": "1.29.0",
- "punycode": "2.2.0",
+ "punycode": "2.3.0",
"querystring": "0.2.1",
"rndstr": "1.0.0",
- "rollup": "3.10.0",
+ "rollup": "3.10.1",
"s-age": "1.1.2",
"sanitize-html": "^2.8.1",
"sass": "1.57.1",
@@ -69,7 +69,7 @@
},
"devDependencies": {
"@types/escape-regexp": "0.0.1",
- "@types/glob": "8.0.0",
+ "@types/glob": "8.0.1",
"@types/gulp": "4.0.10",
"@types/gulp-rename": "2.0.1",
"@types/matter-js": "0.18.2",
@@ -82,13 +82,13 @@
"@types/uuid": "9.0.0",
"@types/websocket": "1.0.5",
"@types/ws": "8.5.4",
- "@typescript-eslint/eslint-plugin": "5.48.1",
- "@typescript-eslint/parser": "5.48.1",
+ "@typescript-eslint/eslint-plugin": "5.48.2",
+ "@typescript-eslint/parser": "5.48.2",
"@vue/runtime-core": "3.2.45",
"cross-env": "7.0.3",
"cypress": "12.3.0",
- "eslint": "8.31.0",
- "eslint-plugin-import": "2.27.4",
+ "eslint": "8.32.0",
+ "eslint-plugin-import": "2.27.5",
"eslint-plugin-vue": "9.9.0",
"start-server-and-test": "1.15.2",
"vue-eslint-parser": "^9.1.0",
diff --git a/packages/frontend/src/components/global/MkEmoji.vue b/packages/frontend/src/components/global/MkEmoji.vue
index b7dd0296cd..aaad81c656 100644
--- a/packages/frontend/src/components/global/MkEmoji.vue
+++ b/packages/frontend/src/components/global/MkEmoji.vue
@@ -12,6 +12,7 @@ import { getStaticImageUrl } from '@/scripts/media-proxy';
import { char2twemojiFilePath, char2fluentEmojiFilePath } from '@/scripts/emoji-base';
import { defaultStore } from '@/store';
import { getEmojiName } from '@/scripts/emojilist';
+import { customEmojis } from '@/custom-emojis';
const props = defineProps<{
emoji: string;
@@ -30,6 +31,9 @@ const useOsNativeEmojis = computed(() => defaultStore.state.emojiStyle === 'nati
const url = computed(() => {
if (char.value) {
return char2path(char.value);
+ } else if (props.host == null) {
+ const found = customEmojis.find(x => x.name === customEmojiName);
+ return found ? found.url : null;
} else {
const rawUrl = props.host ? `/emoji/${customEmojiName}@${props.host}.webp` : `/emoji/${customEmojiName}.webp`;
return defaultStore.state.disableShowingAnimatedImages
@@ -38,7 +42,7 @@ const url = computed(() => {
}
});
const alt = computed(() => isCustom.value ? `:${customEmojiName}:` : char.value);
-let errored = $ref(false);
+let errored = $ref(isCustom.value && url.value == null);
// Searching from an array with 2000 items for every emoji felt like too energy-consuming, so I decided to do it lazily on pointerenter
function computeTitle(event: PointerEvent): void {
diff --git a/packages/frontend/src/custom-emojis.ts b/packages/frontend/src/custom-emojis.ts
index 19469999b6..a7ac4e03ca 100644
--- a/packages/frontend/src/custom-emojis.ts
+++ b/packages/frontend/src/custom-emojis.ts
@@ -2,14 +2,17 @@ import { api } from './os';
import { miLocalStorage } from './local-storage';
const storageCache = miLocalStorage.getItem('emojis');
-export let customEmojis = storageCache ? JSON.parse(storageCache) : [];
-
-fetchCustomEmojis();
+export let customEmojis: {
+ name: string;
+ aliases: string[];
+ category: string;
+ url: string;
+}[] = storageCache ? JSON.parse(storageCache) : [];
export async function fetchCustomEmojis() {
const now = Date.now();
const lastFetchedAt = miLocalStorage.getItem('lastEmojisFetchedAt');
- if (lastFetchedAt && (now - parseInt(lastFetchedAt)) < 1000 * 60 * 60) return;
+ if (lastFetchedAt && (now - parseInt(lastFetchedAt)) < 1000 * 60 * 60 * 24) return;
const res = await api('emojis', {});
diff --git a/packages/frontend/src/init.ts b/packages/frontend/src/init.ts
index 09fb7caf14..079003ee83 100644
--- a/packages/frontend/src/init.ts
+++ b/packages/frontend/src/init.ts
@@ -45,6 +45,7 @@ import { getUrlWithoutLoginId } from '@/scripts/login-id';
import { getAccountFromId } from '@/scripts/get-account-from-id';
import { miLocalStorage } from './local-storage';
import { claimAchievement, claimedAchievements } from './scripts/achievements';
+import { fetchCustomEmojis } from './custom-emojis';
(async () => {
console.info(`Misskey v${version}`);
@@ -80,6 +81,19 @@ import { claimAchievement, claimedAchievements } from './scripts/achievements';
});
}
+ //#region Detect language & fetch translations
+ const localeVersion = miLocalStorage.getItem('localeVersion');
+ const localeOutdated = (localeVersion == null || localeVersion !== version);
+ if (localeOutdated) {
+ const res = await window.fetch(`/assets/locales/${lang}.${version}.json`);
+ if (res.status === 200) {
+ miLocalStorage.setItem('locale', await res.text());
+ miLocalStorage.setItem('localeVersion', version);
+ location.reload();
+ }
+ }
+ //#endregion
+
// タッチデバイスでCSSの:hoverを機能させる
document.addEventListener('touchend', () => {}, { passive: true });
@@ -165,6 +179,10 @@ import { claimAchievement, claimedAchievements } from './scripts/achievements';
initializeSw();
});
+ try {
+ await fetchCustomEmojis();
+ } catch (err) {}
+
const app = createApp(
window.location.search === '?zen' ? defineAsyncComponent(() => import('@/ui/zen.vue')) :
!$i ? defineAsyncComponent(() => import('@/ui/visitor.vue')) :
diff --git a/packages/frontend/src/local-storage.ts b/packages/frontend/src/local-storage.ts
index bb8192e980..68dc9ebe41 100644
--- a/packages/frontend/src/local-storage.ts
+++ b/packages/frontend/src/local-storage.ts
@@ -19,6 +19,7 @@ type Keys =
'fontSize' |
'ui' |
'locale' |
+ 'localeVersion' |
'theme' |
'customCss' |
'message_drafts' |
diff --git a/packages/frontend/src/scripts/achievements.ts b/packages/frontend/src/scripts/achievements.ts
index 8f484f8925..c97358e880 100644
--- a/packages/frontend/src/scripts/achievements.ts
+++ b/packages/frontend/src/scripts/achievements.ts
@@ -433,16 +433,22 @@ export const ACHIEVEMENT_BADGES = {
export const claimedAchievements = ($i && $i.achievements) ? $i.achievements.map(x => x.name) : [];
-export function claimAchievement(type: typeof ACHIEVEMENT_TYPES[number]) {
+const claimingQueue = new Set();
+
+export async function claimAchievement(type: typeof ACHIEVEMENT_TYPES[number]) {
if (claimedAchievements.includes(type)) return;
- os.api('i/claim-achievement', { name: type });
+ claimingQueue.add(type);
claimedAchievements.push(type);
+ await new Promise(resolve => setTimeout(resolve, (claimingQueue.size - 1) * 500));
+ window.setTimeout(() => {
+ claimingQueue.delete(type);
+ }, 500);
+ os.api('i/claim-achievement', { name: type });
}
if (_DEV_) {
- (window as any).unlockAllAchievements = async () => {
+ (window as any).unlockAllAchievements = () => {
for (const t of ACHIEVEMENT_TYPES) {
- await new Promise(resolve => setTimeout(resolve, 100));
claimAchievement(t);
}
};
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index e0ffafd129..13b709bb24 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -11,11 +11,11 @@ importers:
'@tensorflow/tfjs-core': ^4.2.0
'@types/gulp': 4.0.10
'@types/gulp-rename': 2.0.1
- '@typescript-eslint/eslint-plugin': 5.48.1
- '@typescript-eslint/parser': 5.48.1
+ '@typescript-eslint/eslint-plugin': 5.48.2
+ '@typescript-eslint/parser': 5.48.2
cross-env: 7.0.3
cypress: 12.3.0
- eslint: ^8.31.0
+ eslint: ^8.32.0
execa: 5.1.1
gulp: 4.0.2
gulp-cssnano: 2.1.3
@@ -39,11 +39,11 @@ importers:
devDependencies:
'@types/gulp': 4.0.10
'@types/gulp-rename': 2.0.1
- '@typescript-eslint/eslint-plugin': 5.48.1_3jon24igvnqaqexgwtxk6nkpse
- '@typescript-eslint/parser': 5.48.1_iukboom6ndih5an6iafl45j2fe
+ '@typescript-eslint/eslint-plugin': 5.48.2_caon6io6stgpr7lz2rtbhekxqy
+ '@typescript-eslint/parser': 5.48.2_7uibuqfxkfaozanbtbziikiqje
cross-env: 7.0.3
cypress: 12.3.0
- eslint: 8.31.0
+ eslint: 8.32.0
start-server-and-test: 1.15.2
packages/backend:
@@ -66,7 +66,7 @@ importers:
'@redocly/openapi-core': 1.0.0-beta.120
'@sinonjs/fake-timers': 10.0.2
'@swc/cli': ^0.1.59
- '@swc/core': 1.3.26
+ '@swc/core': 1.3.27
'@swc/jest': 0.2.24
'@tensorflow/tfjs': ^4.1.0
'@tensorflow/tfjs-node': 4.1.0
@@ -80,7 +80,7 @@ importers:
'@types/escape-regexp': 0.0.1
'@types/fluent-ffmpeg': 2.1.20
'@types/ioredis': 4.28.10
- '@types/jest': 29.2.5
+ '@types/jest': 29.2.6
'@types/js-yaml': 4.0.5
'@types/jsdom': 20.0.1
'@types/jsonld': 1.5.8
@@ -112,8 +112,8 @@ importers:
'@types/web-push': 3.3.2
'@types/websocket': 1.0.5
'@types/ws': 8.5.4
- '@typescript-eslint/eslint-plugin': 5.48.1
- '@typescript-eslint/parser': 5.48.1
+ '@typescript-eslint/eslint-plugin': 5.48.2
+ '@typescript-eslint/parser': 5.48.2
accepts: ^1.3.8
ajv: 8.12.0
archiver: 5.3.1
@@ -134,12 +134,12 @@ importers:
date-fns: 2.29.3
deep-email-validator: 0.1.21
escape-regexp: 0.0.1
- eslint: 8.31.0
- eslint-plugin-import: 2.27.4
+ eslint: 8.32.0
+ eslint-plugin-import: 2.27.5
execa: 6.1.0
- fastify: 4.11.0
+ fastify: 4.12.0
feed: 4.2.2
- file-type: 18.1.0
+ file-type: 18.2.0
fluent-ffmpeg: 2.1.2
form-data: ^4.0.0
got: 12.5.3
@@ -171,7 +171,7 @@ importers:
probe-image-size: 7.2.3
promise-limit: 2.7.0
pug: 3.0.2
- punycode: 2.2.0
+ punycode: 2.3.0
pureimage: 0.3.15
qrcode: 1.5.1
random-seed: 0.3.0
@@ -202,7 +202,7 @@ importers:
typeorm: 0.3.11
typescript: 4.9.4
ulid: 2.3.0
- undici: ^5.15.0
+ undici: ^5.15.1
unzipper: 0.10.11
uuid: 9.0.0
vary: 1.1.2
@@ -246,9 +246,9 @@ importers:
date-fns: 2.29.3
deep-email-validator: 0.1.21
escape-regexp: 0.0.1
- fastify: 4.11.0
+ fastify: 4.12.0
feed: 4.2.2
- file-type: 18.1.0
+ file-type: 18.2.0
fluent-ffmpeg: 2.1.2
form-data: 4.0.0
got: 12.5.3
@@ -277,7 +277,7 @@ importers:
probe-image-size: 7.2.3
promise-limit: 2.7.0
pug: 3.0.2
- punycode: 2.2.0
+ punycode: 2.3.0
pureimage: 0.3.15
qrcode: 1.5.1
random-seed: 0.3.0
@@ -308,7 +308,7 @@ importers:
typeorm: 0.3.11_ioredis@4.28.5+pg@8.8.0
typescript: 4.9.4
ulid: 2.3.0
- undici: 5.15.0
+ undici: 5.15.1
unzipper: 0.10.11
uuid: 9.0.0
vary: 1.1.2
@@ -321,9 +321,9 @@ importers:
'@tensorflow/tfjs-node': 4.1.0_seedrandom@3.0.5
devDependencies:
'@redocly/openapi-core': 1.0.0-beta.120
- '@swc/cli': 0.1.59_cr4os3zuq4gmhe2qzzjtw2pxeu
- '@swc/core': 1.3.26
- '@swc/jest': 0.2.24_@swc+core@1.3.26
+ '@swc/cli': 0.1.59_2w2rsb5d2wh3txrlxuiknf4vra
+ '@swc/core': 1.3.27
+ '@swc/jest': 0.2.24_@swc+core@1.3.27
'@types/accepts': 1.3.5
'@types/archiver': 5.3.1
'@types/bcryptjs': 2.4.2
@@ -334,7 +334,7 @@ importers:
'@types/escape-regexp': 0.0.1
'@types/fluent-ffmpeg': 2.1.20
'@types/ioredis': 4.28.10
- '@types/jest': 29.2.5
+ '@types/jest': 29.2.6
'@types/js-yaml': 4.0.5
'@types/jsdom': 20.0.1
'@types/jsonld': 1.5.8
@@ -366,11 +366,11 @@ importers:
'@types/web-push': 3.3.2
'@types/websocket': 1.0.5
'@types/ws': 8.5.4
- '@typescript-eslint/eslint-plugin': 5.48.1_3jon24igvnqaqexgwtxk6nkpse
- '@typescript-eslint/parser': 5.48.1_iukboom6ndih5an6iafl45j2fe
+ '@typescript-eslint/eslint-plugin': 5.48.2_caon6io6stgpr7lz2rtbhekxqy
+ '@typescript-eslint/parser': 5.48.2_7uibuqfxkfaozanbtbziikiqje
cross-env: 7.0.3
- eslint: 8.31.0
- eslint-plugin-import: 2.27.4_qdjeohovcytra7xto5vgmxssaq
+ eslint: 8.32.0
+ eslint-plugin-import: 2.27.5_2l6piu6guil2f63lj3qmhzbnn4
execa: 6.1.0
jest: 29.3.1_@types+node@18.11.18
jest-mock: 29.3.1
@@ -379,13 +379,13 @@ importers:
packages/frontend:
specifiers:
'@discordapp/twemoji': 14.0.2
- '@rollup/plugin-alias': 4.0.2
+ '@rollup/plugin-alias': 4.0.3
'@rollup/plugin-json': 6.0.0
'@rollup/pluginutils': 5.0.2
'@syuilo/aiscript': 0.12.2
'@tabler/icons': ^1.118.0
'@types/escape-regexp': 0.0.1
- '@types/glob': 8.0.0
+ '@types/glob': 8.0.1
'@types/gulp': 4.0.10
'@types/gulp-rename': 2.0.1
'@types/matter-js': 0.18.2
@@ -398,18 +398,18 @@ importers:
'@types/uuid': 9.0.0
'@types/websocket': 1.0.5
'@types/ws': 8.5.4
- '@typescript-eslint/eslint-plugin': 5.48.1
- '@typescript-eslint/parser': 5.48.1
+ '@typescript-eslint/eslint-plugin': 5.48.2
+ '@typescript-eslint/parser': 5.48.2
'@vitejs/plugin-vue': 4.0.0
'@vue/compiler-sfc': 3.2.45
'@vue/runtime-core': 3.2.45
autobind-decorator: 2.4.0
autosize: 5.0.2
blurhash: 2.0.4
- broadcast-channel: 4.20.1
+ broadcast-channel: 4.20.2
browser-image-resizer: git+https://github.com/misskey-dev/browser-image-resizer#v2.2.1-misskey.3
canvas-confetti: ^1.6.0
- chart.js: 4.1.2
+ chart.js: 4.2.0
chartjs-adapter-date-fns: 3.0.0
chartjs-chart-matrix: ^1.3.0
chartjs-plugin-gradient: 0.6.1
@@ -420,8 +420,8 @@ importers:
cypress: 12.3.0
date-fns: 2.29.3
escape-regexp: 0.0.1
- eslint: 8.31.0
- eslint-plugin-import: 2.27.4
+ eslint: 8.32.0
+ eslint-plugin-import: 2.27.5
eslint-plugin-vue: 9.9.0
eventemitter3: 5.0.0
gsap: ^3.11.4
@@ -434,10 +434,10 @@ importers:
misskey-js: 0.0.14
photoswipe: 5.3.4
prismjs: 1.29.0
- punycode: 2.2.0
+ punycode: 2.3.0
querystring: 0.2.1
rndstr: 1.0.0
- rollup: 3.10.0
+ rollup: 3.10.1
s-age: 1.1.2
sanitize-html: ^2.8.1
sass: 1.57.1
@@ -464,9 +464,9 @@ importers:
vuedraggable: next
dependencies:
'@discordapp/twemoji': 14.0.2
- '@rollup/plugin-alias': 4.0.2_rollup@3.10.0
- '@rollup/plugin-json': 6.0.0_rollup@3.10.0
- '@rollup/pluginutils': 5.0.2_rollup@3.10.0
+ '@rollup/plugin-alias': 4.0.3_rollup@3.10.1
+ '@rollup/plugin-json': 6.0.0_rollup@3.10.1
+ '@rollup/pluginutils': 5.0.2_rollup@3.10.1
'@syuilo/aiscript': 0.12.2
'@tabler/icons': 1.119.0
'@vitejs/plugin-vue': 4.0.0_vite@4.0.4+vue@3.2.45
@@ -474,14 +474,14 @@ importers:
autobind-decorator: 2.4.0
autosize: 5.0.2
blurhash: 2.0.4
- broadcast-channel: 4.20.1
+ broadcast-channel: 4.20.2
browser-image-resizer: github.com/misskey-dev/browser-image-resizer/0227e860621e55cbed0aabe6dc601096a7748c4a
canvas-confetti: 1.6.0
- chart.js: 4.1.2
- chartjs-adapter-date-fns: 3.0.0_kluv2ktejb2igagp3yc56zuwiy
- chartjs-chart-matrix: 1.3.0_chart.js@4.1.2
- chartjs-plugin-gradient: 0.6.1_chart.js@4.1.2
- chartjs-plugin-zoom: 2.0.0_chart.js@4.1.2
+ chart.js: 4.2.0
+ chartjs-adapter-date-fns: 3.0.0_n6szoxj4ax2zhp2sxsxxj6zdla
+ chartjs-chart-matrix: 1.3.0_chart.js@4.2.0
+ chartjs-plugin-gradient: 0.6.1_chart.js@4.2.0
+ chartjs-plugin-zoom: 2.0.0_chart.js@4.2.0
compare-versions: 5.0.1
cropperjs: 2.0.0-beta.2
date-fns: 2.29.3
@@ -497,10 +497,10 @@ importers:
misskey-js: 0.0.14
photoswipe: 5.3.4
prismjs: 1.29.0
- punycode: 2.2.0
+ punycode: 2.3.0
querystring: 0.2.1
rndstr: 1.0.0
- rollup: 3.10.0
+ rollup: 3.10.1
s-age: 1.1.2
sanitize-html: 2.8.1
sass: 1.57.1
@@ -524,7 +524,7 @@ importers:
vuedraggable: 4.1.0_vue@3.2.45
devDependencies:
'@types/escape-regexp': 0.0.1
- '@types/glob': 8.0.0
+ '@types/glob': 8.0.1
'@types/gulp': 4.0.10
'@types/gulp-rename': 2.0.1
'@types/matter-js': 0.18.2
@@ -537,16 +537,16 @@ importers:
'@types/uuid': 9.0.0
'@types/websocket': 1.0.5
'@types/ws': 8.5.4
- '@typescript-eslint/eslint-plugin': 5.48.1_3jon24igvnqaqexgwtxk6nkpse
- '@typescript-eslint/parser': 5.48.1_iukboom6ndih5an6iafl45j2fe
+ '@typescript-eslint/eslint-plugin': 5.48.2_caon6io6stgpr7lz2rtbhekxqy
+ '@typescript-eslint/parser': 5.48.2_7uibuqfxkfaozanbtbziikiqje
'@vue/runtime-core': 3.2.45
cross-env: 7.0.3
cypress: 12.3.0
- eslint: 8.31.0
- eslint-plugin-import: 2.27.4_qdjeohovcytra7xto5vgmxssaq
- eslint-plugin-vue: 9.9.0_eslint@8.31.0
+ eslint: 8.32.0
+ eslint-plugin-import: 2.27.5_2l6piu6guil2f63lj3qmhzbnn4
+ eslint-plugin-vue: 9.9.0_eslint@8.32.0
start-server-and-test: 1.15.2
- vue-eslint-parser: 9.1.0_eslint@8.31.0
+ vue-eslint-parser: 9.1.0_eslint@8.32.0
vue-tsc: 1.0.24_typescript@4.9.4
packages/sw:
@@ -1077,7 +1077,7 @@ packages:
dependencies:
ky: 0.30.0
ky-universal: 0.10.1_ky@0.30.0
- undici: 5.15.0
+ undici: 5.15.1
transitivePeerDependencies:
- web-streams-polyfill
dev: false
@@ -1402,7 +1402,7 @@ packages:
fastify-plugin: 4.5.0
pump: 3.0.0
tiny-lru: 10.0.1
- undici: 5.15.0
+ undici: 5.15.1
dev: false
/@fastify/send/1.0.0:
@@ -2059,8 +2059,8 @@ packages:
- encoding
dev: true
- /@rollup/plugin-alias/4.0.2_rollup@3.10.0:
- resolution: {integrity: sha512-1hv7dBOZZwo3SEupxn4UA2N0EDThqSSS+wI1St1TNTBtOZvUchyIClyHcnDcjjrReTPZ47Faedrhblv4n+T5UQ==}
+ /@rollup/plugin-alias/4.0.3_rollup@3.10.1:
+ resolution: {integrity: sha512-ZuDWE1q4PQDhvm/zc5Prun8sBpLJy41DMptYrS6MhAy9s9kL/doN1613BWfEchGVfKxzliJ3BjbOPizXX38DbQ==}
engines: {node: '>=14.0.0'}
peerDependencies:
rollup: ^1.20.0||^2.0.0||^3.0.0
@@ -2068,11 +2068,11 @@ packages:
rollup:
optional: true
dependencies:
- rollup: 3.10.0
+ rollup: 3.10.1
slash: 4.0.0
dev: false
- /@rollup/plugin-json/6.0.0_rollup@3.10.0:
+ /@rollup/plugin-json/6.0.0_rollup@3.10.1:
resolution: {integrity: sha512-i/4C5Jrdr1XUarRhVu27EEwjt4GObltD7c+MkCIpO2QIbojw8MUs+CCTqOphQi3Qtg1FLmYt+l+6YeoIf51J7w==}
engines: {node: '>=14.0.0'}
peerDependencies:
@@ -2081,11 +2081,11 @@ packages:
rollup:
optional: true
dependencies:
- '@rollup/pluginutils': 5.0.2_rollup@3.10.0
- rollup: 3.10.0
+ '@rollup/pluginutils': 5.0.2_rollup@3.10.1
+ rollup: 3.10.1
dev: false
- /@rollup/pluginutils/5.0.2_rollup@3.10.0:
+ /@rollup/pluginutils/5.0.2_rollup@3.10.1:
resolution: {integrity: sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==}
engines: {node: '>=14.0.0'}
peerDependencies:
@@ -2097,7 +2097,7 @@ packages:
'@types/estree': 1.0.0
estree-walker: 2.0.2
picomatch: 2.3.1
- rollup: 3.10.0
+ rollup: 3.10.1
dev: false
/@sideway/address/4.1.4:
@@ -2161,7 +2161,7 @@ packages:
resolution: {integrity: sha512-Uy0+khmZqUrUGm5dmMqVlnvufZRSK0FbYzVgp0UMstm+F5+W2/jnEEQyc9vo1ZR/E5ZI/B1WjjoTqBqwJL6Krw==}
dev: false
- /@swc/cli/0.1.59_cr4os3zuq4gmhe2qzzjtw2pxeu:
+ /@swc/cli/0.1.59_2w2rsb5d2wh3txrlxuiknf4vra:
resolution: {integrity: sha512-BlX3wIxYTwdtR22dIqZ3FEIOJPqnlByAp4JY46OMZi2UXMB3ZbOzefawD2ZlLafRUWyy5NtiZZty5waKzaYRnA==}
engines: {node: '>= 12.13'}
hasBin: true
@@ -2172,7 +2172,7 @@ packages:
chokidar:
optional: true
dependencies:
- '@swc/core': 1.3.26
+ '@swc/core': 1.3.27
bin-wrapper: 4.1.0
chokidar: 3.5.3
commander: 7.2.0
@@ -2182,8 +2182,8 @@ packages:
source-map: 0.7.4
dev: true
- /@swc/core-darwin-arm64/1.3.26:
- resolution: {integrity: sha512-FWWflBfKRYrUJtko2xiedC5XCa31O75IZZqnTWuLpe9g3C5tnUuF3M8LSXZS/dn6wprome1MhtG9GMPkSYkhkg==}
+ /@swc/core-darwin-arm64/1.3.27:
+ resolution: {integrity: sha512-IKlxkhEy99CnP9nduaf5IJWIFcr6D5cZCjYmCs7nWkjMV+aAieyDO9AX4LT8AcHy6CF7ByOX7SKoqk+gVMAaKw==}
engines: {node: '>=10'}
cpu: [arm64]
os: [darwin]
@@ -2191,8 +2191,8 @@ packages:
dev: true
optional: true
- /@swc/core-darwin-x64/1.3.26:
- resolution: {integrity: sha512-0uQeebAtsewqJ2b35aPZstGrylwd6oJjUyAJOfVJNbremFSJ5JzytB3NoDCIw7CT5UQrSRpvD3mU95gfdQjDGA==}
+ /@swc/core-darwin-x64/1.3.27:
+ resolution: {integrity: sha512-MtabZIhFf/dL3vs6UMbd+vJsjIkm2NaFqulGV0Jofy2bfVZPTj/b5pXeOlUsTWy7JcH1uixjdx4RvJRyvqJxQA==}
engines: {node: '>=10'}
cpu: [x64]
os: [darwin]
@@ -2200,8 +2200,8 @@ packages:
dev: true
optional: true
- /@swc/core-linux-arm-gnueabihf/1.3.26:
- resolution: {integrity: sha512-06T+LbVFlyciQtwrUB5/a16A1ju1jFoYvd/hq9TWhf7GrtL43U7oJIgqMOPHx2j0+Ps2R3S6R/UUN5YXu618zA==}
+ /@swc/core-linux-arm-gnueabihf/1.3.27:
+ resolution: {integrity: sha512-XELMoGcUTAkk+G4buwIIhu6AIr1U418Odt22HUW8+ZvV+Wty2ICgR/myOIhM3xMb6U2L8ay+evMqoVNMQ0RRTg==}
engines: {node: '>=10'}
cpu: [arm]
os: [linux]
@@ -2209,8 +2209,8 @@ packages:
dev: true
optional: true
- /@swc/core-linux-arm64-gnu/1.3.26:
- resolution: {integrity: sha512-2NT/0xALPfK+U01qIlHxjkGdIj6F0txhu1U2v6B0YP2+k0whL2gCgYeg9QUvkYEXSD5r1Yx+vcb2R/vaSCSClg==}
+ /@swc/core-linux-arm64-gnu/1.3.27:
+ resolution: {integrity: sha512-O6vtT6bnrVR9PzEIuA5U7tIfYo7bv97H9K9Vqy2oyHNeGN0H36DKwS4UqPreHtziXNF5+7ubdUYUkrG/j8UnUQ==}
engines: {node: '>=10'}
cpu: [arm64]
os: [linux]
@@ -2218,8 +2218,8 @@ packages:
dev: true
optional: true
- /@swc/core-linux-arm64-musl/1.3.26:
- resolution: {integrity: sha512-64KrTay9hC0mTvZ1AmEFmNEwV5QDjw9U7PJU5riotSc28I+Q/ZoM0qcSFW9JRRa6F2Tr+IfMtyv8+eB2//BQ5g==}
+ /@swc/core-linux-arm64-musl/1.3.27:
+ resolution: {integrity: sha512-Oa0E1i7dOTWpaEZumKoNbTE/Ap+da6nlhqKVUdYrFDrOBi25tz76SdxZIyvAszzmgY89b5yd1naourKmkPXpww==}
engines: {node: '>=10'}
cpu: [arm64]
os: [linux]
@@ -2227,8 +2227,8 @@ packages:
dev: true
optional: true
- /@swc/core-linux-x64-gnu/1.3.26:
- resolution: {integrity: sha512-Te8G13l3dcRM1Mf3J4JzGUngzNXLKnMYlUmBOYN/ORsx7e+VNelR3zsTLHC0+0jGqELDgqvMyzDfk+dux/C/bQ==}
+ /@swc/core-linux-x64-gnu/1.3.27:
+ resolution: {integrity: sha512-S3v9H8oL2a8Ur6AjQyhkC6HfBVPOxKMdBhcZmdNuVgEUHbHdbf/Lka85F9IOYXEarMn0FtQw3ywowS22O9L5Uw==}
engines: {node: '>=10'}
cpu: [x64]
os: [linux]
@@ -2236,8 +2236,8 @@ packages:
dev: true
optional: true
- /@swc/core-linux-x64-musl/1.3.26:
- resolution: {integrity: sha512-nqQWuSM6OTKepUiQ9+rXgERq/JiO72RBOpXKO2afYppsL96sngjIRewV74v5f6IAfyzw+k+AhC5pgRA4Xu/Jkg==}
+ /@swc/core-linux-x64-musl/1.3.27:
+ resolution: {integrity: sha512-6DDkdXlOADpwICFZTRphCR+cIeS8aEYh4NlyzBito0mOWwIIdfCgALzhkTQOzTOkcD42bP97CIoZ97hqV/puOg==}
engines: {node: '>=10'}
cpu: [x64]
os: [linux]
@@ -2245,8 +2245,8 @@ packages:
dev: true
optional: true
- /@swc/core-win32-arm64-msvc/1.3.26:
- resolution: {integrity: sha512-xx34mx+9IBV1sun7sxoNFiqNom9wiOuvsQFJUyQptCnZHgYwOr9OI204LBF95dCcBCZsTm2hT1wBnySJOeimYw==}
+ /@swc/core-win32-arm64-msvc/1.3.27:
+ resolution: {integrity: sha512-baxfH4AbEcaTNo08wxV0W6hiMXwVCxPS4qc0amHpXPti92unvSqeDR1W3C9GjHqzXlWtmCRsq8Ww1pal6ZVLrw==}
engines: {node: '>=10'}
cpu: [arm64]
os: [win32]
@@ -2254,8 +2254,8 @@ packages:
dev: true
optional: true
- /@swc/core-win32-ia32-msvc/1.3.26:
- resolution: {integrity: sha512-48LZ/HKNuU9zl8c7qG6IQKb5rBCwmJgysGOmEGzTRBYxAf/x6Scmt0aqxCoV4J02HOs2WduCBDnhUKsSQ2kcXQ==}
+ /@swc/core-win32-ia32-msvc/1.3.27:
+ resolution: {integrity: sha512-7iLJnH71k5qCwxv9NcM/P7nIEzTsC7r1sIiQW6bu+CpC8qZvwl0PS+XvQRlLly2gCZM+Le98tksYG14MEh+Hrw==}
engines: {node: '>=10'}
cpu: [ia32]
os: [win32]
@@ -2263,8 +2263,8 @@ packages:
dev: true
optional: true
- /@swc/core-win32-x64-msvc/1.3.26:
- resolution: {integrity: sha512-UPe7S+MezD/S6cKBIc50TduGzmw6PBz1Ms5p+5wDLOKYNS/LSEM4iRmLwvePzP5X8mOyesXrsbwxLy8KHP65Yw==}
+ /@swc/core-win32-x64-msvc/1.3.27:
+ resolution: {integrity: sha512-mFM907PDw/jrQ44+TRjIVGEOy2Mu06mMMz0HPMFuRsBzl5t0Kajp3vmn8FkkpS9wH5982VPi6hPYVTb7QJo5Qg==}
engines: {node: '>=10'}
cpu: [x64]
os: [win32]
@@ -2272,31 +2272,31 @@ packages:
dev: true
optional: true
- /@swc/core/1.3.26:
- resolution: {integrity: sha512-U7vEsaLn3IGg0XCRLJX/GTkK9WIfFHUX5USdrp1L2QD29sWPe25HqNndXmUR9KytzKmpDMNoUuHyiuhpVrnNeQ==}
+ /@swc/core/1.3.27:
+ resolution: {integrity: sha512-praRNgpeYGvwDIm/Cl6JU+yHMvwVraL0U6ejMgGyzvpcm1FVsZd1/EYXGqzbBJ0ALv7Gx4eK56h4GnwV6d4L0w==}
engines: {node: '>=10'}
requiresBuild: true
optionalDependencies:
- '@swc/core-darwin-arm64': 1.3.26
- '@swc/core-darwin-x64': 1.3.26
- '@swc/core-linux-arm-gnueabihf': 1.3.26
- '@swc/core-linux-arm64-gnu': 1.3.26
- '@swc/core-linux-arm64-musl': 1.3.26
- '@swc/core-linux-x64-gnu': 1.3.26
- '@swc/core-linux-x64-musl': 1.3.26
- '@swc/core-win32-arm64-msvc': 1.3.26
- '@swc/core-win32-ia32-msvc': 1.3.26
- '@swc/core-win32-x64-msvc': 1.3.26
+ '@swc/core-darwin-arm64': 1.3.27
+ '@swc/core-darwin-x64': 1.3.27
+ '@swc/core-linux-arm-gnueabihf': 1.3.27
+ '@swc/core-linux-arm64-gnu': 1.3.27
+ '@swc/core-linux-arm64-musl': 1.3.27
+ '@swc/core-linux-x64-gnu': 1.3.27
+ '@swc/core-linux-x64-musl': 1.3.27
+ '@swc/core-win32-arm64-msvc': 1.3.27
+ '@swc/core-win32-ia32-msvc': 1.3.27
+ '@swc/core-win32-x64-msvc': 1.3.27
dev: true
- /@swc/jest/0.2.24_@swc+core@1.3.26:
+ /@swc/jest/0.2.24_@swc+core@1.3.27:
resolution: {integrity: sha512-fwgxQbM1wXzyKzl1+IW0aGrRvAA8k0Y3NxFhKigbPjOJ4mCKnWEcNX9HQS3gshflcxq8YKhadabGUVfdwjCr6Q==}
engines: {npm: '>= 7.0.0'}
peerDependencies:
'@swc/core': '*'
dependencies:
'@jest/create-cache-key-function': 27.5.1
- '@swc/core': 1.3.26
+ '@swc/core': 1.3.27
jsonc-parser: 3.2.0
dev: true
@@ -2583,7 +2583,7 @@ packages:
/@types/glob-stream/6.1.1:
resolution: {integrity: sha512-AGOUTsTdbPkRS0qDeyeS+6KypmfVpbT5j23SN8UPG63qjKXNKjXn6V9wZUr8Fin0m9l8oGYaPK8b2WUMF8xI1A==}
dependencies:
- '@types/glob': 8.0.0
+ '@types/glob': 8.0.1
'@types/node': 18.11.18
dev: true
@@ -2594,6 +2594,13 @@ packages:
'@types/node': 18.11.18
dev: true
+ /@types/glob/8.0.1:
+ resolution: {integrity: sha512-8bVUjXZvJacUFkJXHdyZ9iH1Eaj5V7I8c4NdH5sQJsdXkqT4CA5Dhb4yb4VE/3asyx4L9ayZr1NIhTsWHczmMw==}
+ dependencies:
+ '@types/minimatch': 5.1.2
+ '@types/node': 18.11.18
+ dev: true
+
/@types/graceful-fs/4.1.6:
resolution: {integrity: sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==}
dependencies:
@@ -2641,8 +2648,8 @@ packages:
'@types/istanbul-lib-report': 3.0.0
dev: true
- /@types/jest/29.2.5:
- resolution: {integrity: sha512-H2cSxkKgVmqNHXP7TC2L/WUorrZu8ZigyRywfVzv6EyBlxj39n4C00hjXYQWsbwqgElaj/CiAeSRmk5GoaKTgw==}
+ /@types/jest/29.2.6:
+ resolution: {integrity: sha512-XEUC/Tgw3uMh6Ho8GkUtQ2lPhY5Fmgyp3TdlkTJs1W9VgNxs+Ow/x3Elh8lHQKqCbZL0AubQuqWjHVT033Hhrw==}
dependencies:
expect: 29.3.1
pretty-format: 29.3.1
@@ -2949,8 +2956,8 @@ packages:
dev: true
optional: true
- /@typescript-eslint/eslint-plugin/5.48.1_3jon24igvnqaqexgwtxk6nkpse:
- resolution: {integrity: sha512-9nY5K1Rp2ppmpb9s9S2aBiF3xo5uExCehMDmYmmFqqyxgenbHJ3qbarcLt4ITgaD6r/2ypdlcFRdcuVPnks+fQ==}
+ /@typescript-eslint/eslint-plugin/5.48.2_caon6io6stgpr7lz2rtbhekxqy:
+ resolution: {integrity: sha512-sR0Gja9Ky1teIq4qJOl0nC+Tk64/uYdX+mi+5iB//MH8gwyx8e3SOyhEzeLZEFEEfCaLf8KJq+Bd/6je1t+CAg==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
'@typescript-eslint/parser': ^5.0.0
@@ -2960,13 +2967,13 @@ packages:
typescript:
optional: true
dependencies:
- '@typescript-eslint/parser': 5.48.1_iukboom6ndih5an6iafl45j2fe
- '@typescript-eslint/scope-manager': 5.48.1
- '@typescript-eslint/type-utils': 5.48.1_iukboom6ndih5an6iafl45j2fe
- '@typescript-eslint/utils': 5.48.1_iukboom6ndih5an6iafl45j2fe
+ '@typescript-eslint/parser': 5.48.2_7uibuqfxkfaozanbtbziikiqje
+ '@typescript-eslint/scope-manager': 5.48.2
+ '@typescript-eslint/type-utils': 5.48.2_7uibuqfxkfaozanbtbziikiqje
+ '@typescript-eslint/utils': 5.48.2_7uibuqfxkfaozanbtbziikiqje
debug: 4.3.4
- eslint: 8.31.0
- ignore: 5.2.1
+ eslint: 8.32.0
+ ignore: 5.2.4
natural-compare-lite: 1.4.0
regexpp: 3.2.0
semver: 7.3.8
@@ -2996,6 +3003,26 @@ packages:
- supports-color
dev: true
+ /@typescript-eslint/parser/5.48.2_7uibuqfxkfaozanbtbziikiqje:
+ resolution: {integrity: sha512-38zMsKsG2sIuM5Oi/olurGwYJXzmtdsHhn5mI/pQogP+BjYVkK5iRazCQ8RGS0V+YLk282uWElN70zAAUmaYHw==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ peerDependencies:
+ eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
+ typescript: '*'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+ dependencies:
+ '@typescript-eslint/scope-manager': 5.48.2
+ '@typescript-eslint/types': 5.48.2
+ '@typescript-eslint/typescript-estree': 5.48.2_typescript@4.9.4
+ debug: 4.3.4
+ eslint: 8.32.0
+ typescript: 4.9.4
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
/@typescript-eslint/scope-manager/5.48.1:
resolution: {integrity: sha512-S035ueRrbxRMKvSTv9vJKIWgr86BD8s3RqoRZmsSh/s8HhIs90g6UlK8ZabUSjUZQkhVxt7nmZ63VJ9dcZhtDQ==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
@@ -3004,8 +3031,16 @@ packages:
'@typescript-eslint/visitor-keys': 5.48.1
dev: true
- /@typescript-eslint/type-utils/5.48.1_iukboom6ndih5an6iafl45j2fe:
- resolution: {integrity: sha512-Hyr8HU8Alcuva1ppmqSYtM/Gp0q4JOp1F+/JH5D1IZm/bUBrV0edoewQZiEc1r6I8L4JL21broddxK8HAcZiqQ==}
+ /@typescript-eslint/scope-manager/5.48.2:
+ resolution: {integrity: sha512-zEUFfonQid5KRDKoI3O+uP1GnrFd4tIHlvs+sTJXiWuypUWMuDaottkJuR612wQfOkjYbsaskSIURV9xo4f+Fw==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ dependencies:
+ '@typescript-eslint/types': 5.48.2
+ '@typescript-eslint/visitor-keys': 5.48.2
+ dev: true
+
+ /@typescript-eslint/type-utils/5.48.2_7uibuqfxkfaozanbtbziikiqje:
+ resolution: {integrity: sha512-QVWx7J5sPMRiOMJp5dYshPxABRoZV1xbRirqSk8yuIIsu0nvMTZesKErEA3Oix1k+uvsk8Cs8TGJ6kQ0ndAcew==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
eslint: '*'
@@ -3014,10 +3049,10 @@ packages:
typescript:
optional: true
dependencies:
- '@typescript-eslint/typescript-estree': 5.48.1_typescript@4.9.4
- '@typescript-eslint/utils': 5.48.1_iukboom6ndih5an6iafl45j2fe
+ '@typescript-eslint/typescript-estree': 5.48.2_typescript@4.9.4
+ '@typescript-eslint/utils': 5.48.2_7uibuqfxkfaozanbtbziikiqje
debug: 4.3.4
- eslint: 8.31.0
+ eslint: 8.32.0
tsutils: 3.21.0_typescript@4.9.4
typescript: 4.9.4
transitivePeerDependencies:
@@ -3029,6 +3064,11 @@ packages:
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
dev: true
+ /@typescript-eslint/types/5.48.2:
+ resolution: {integrity: sha512-hE7dA77xxu7ByBc6KCzikgfRyBCTst6dZQpwaTy25iMYOnbNljDT4hjhrGEJJ0QoMjrfqrx+j1l1B9/LtKeuqA==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ dev: true
+
/@typescript-eslint/typescript-estree/5.48.1_typescript@4.9.4:
resolution: {integrity: sha512-Hut+Osk5FYr+sgFh8J/FHjqX6HFcDzTlWLrFqGoK5kVUN3VBHF/QzZmAsIXCQ8T/W9nQNBTqalxi1P3LSqWnRA==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
@@ -3050,20 +3090,41 @@ packages:
- supports-color
dev: true
- /@typescript-eslint/utils/5.48.1_iukboom6ndih5an6iafl45j2fe:
- resolution: {integrity: sha512-SmQuSrCGUOdmGMwivW14Z0Lj8dxG1mOFZ7soeJ0TQZEJcs3n5Ndgkg0A4bcMFzBELqLJ6GTHnEU+iIoaD6hFGA==}
+ /@typescript-eslint/typescript-estree/5.48.2_typescript@4.9.4:
+ resolution: {integrity: sha512-bibvD3z6ilnoVxUBFEgkO0k0aFvUc4Cttt0dAreEr+nrAHhWzkO83PEVVuieK3DqcgL6VAK5dkzK8XUVja5Zcg==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ peerDependencies:
+ typescript: '*'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+ dependencies:
+ '@typescript-eslint/types': 5.48.2
+ '@typescript-eslint/visitor-keys': 5.48.2
+ debug: 4.3.4
+ globby: 11.1.0
+ is-glob: 4.0.3
+ semver: 7.3.8
+ tsutils: 3.21.0_typescript@4.9.4
+ typescript: 4.9.4
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@typescript-eslint/utils/5.48.2_7uibuqfxkfaozanbtbziikiqje:
+ resolution: {integrity: sha512-2h18c0d7jgkw6tdKTlNaM7wyopbLRBiit8oAxoP89YnuBOzCZ8g8aBCaCqq7h208qUTroL7Whgzam7UY3HVLow==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
dependencies:
'@types/json-schema': 7.0.11
'@types/semver': 7.3.13
- '@typescript-eslint/scope-manager': 5.48.1
- '@typescript-eslint/types': 5.48.1
- '@typescript-eslint/typescript-estree': 5.48.1_typescript@4.9.4
- eslint: 8.31.0
+ '@typescript-eslint/scope-manager': 5.48.2
+ '@typescript-eslint/types': 5.48.2
+ '@typescript-eslint/typescript-estree': 5.48.2_typescript@4.9.4
+ eslint: 8.32.0
eslint-scope: 5.1.1
- eslint-utils: 3.0.0_eslint@8.31.0
+ eslint-utils: 3.0.0_eslint@8.32.0
semver: 7.3.8
transitivePeerDependencies:
- supports-color
@@ -3078,6 +3139,14 @@ packages:
eslint-visitor-keys: 3.3.0
dev: true
+ /@typescript-eslint/visitor-keys/5.48.2:
+ resolution: {integrity: sha512-z9njZLSkwmjFWUelGEwEbdf4NwKvfHxvGC0OcGN1Hp/XNDIcJ7D5DpPNPv6x6/mFvc1tQHsaWmpD/a4gOvvCJQ==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ dependencies:
+ '@typescript-eslint/types': 5.48.2
+ eslint-visitor-keys: 3.3.0
+ dev: true
+
/@vitejs/plugin-vue/4.0.0_vite@4.0.4+vue@3.2.45:
resolution: {integrity: sha512-e0X4jErIxAB5oLtDqbHvHpJe/uWNkdpYV83AOG2xo2tEVSzCzewgJMtREZM30wXnM5ls90hxiOtAuVU6H5JgbA==}
engines: {node: ^14.18.0 || >=16.0.0}
@@ -4039,8 +4108,8 @@ packages:
dependencies:
fill-range: 7.0.1
- /broadcast-channel/4.20.1:
- resolution: {integrity: sha512-ob5xyUEMWJRBOggwVGEZpKCXK/Pkfe3LkrokNTwgywhKXFNETRkD5IanLqmpY/roy7bqBsijb7lMEDyc1qlnHQ==}
+ /broadcast-channel/4.20.2:
+ resolution: {integrity: sha512-v0lJgMzC+MX4e2KCFWYXChZ2mKTqm5mnJGId6tqJp3NfylggbNd8c2uKeP4MQxD2ucKOesY68aN98zwl9d6Tvg==}
dependencies:
'@babel/runtime': 7.20.7
oblivious-set: 1.1.1
@@ -4403,45 +4472,45 @@ packages:
is-regex: 1.1.4
dev: false
- /chart.js/4.1.2:
- resolution: {integrity: sha512-9L1w6WLPq6ztiWVVOYtDtpo0CUsBKDWPrUEdwChAyzczaikqeSwNKEv3QpJ7EO4ICcLSi6UDVhgvcnUhRJidRA==}
+ /chart.js/4.2.0:
+ resolution: {integrity: sha512-wbtcV+QKeH0F7gQZaCJEIpsNriFheacouJQTVIjITi3eQA8bTlIBoknz0+dgV79aeKLNMAX+nDslIVE/nJ3rzA==}
engines: {pnpm: ^7.0.0}
dependencies:
'@kurkle/color': 0.3.2
dev: false
- /chartjs-adapter-date-fns/3.0.0_kluv2ktejb2igagp3yc56zuwiy:
+ /chartjs-adapter-date-fns/3.0.0_n6szoxj4ax2zhp2sxsxxj6zdla:
resolution: {integrity: sha512-Rs3iEB3Q5pJ973J93OBTpnP7qoGwvq3nUnoMdtxO+9aoJof7UFcRbWcIDteXuYd1fgAvct/32T9qaLyLuZVwCg==}
peerDependencies:
chart.js: '>=2.8.0'
date-fns: '>=2.0.0'
dependencies:
- chart.js: 4.1.2
+ chart.js: 4.2.0
date-fns: 2.29.3
dev: false
- /chartjs-chart-matrix/1.3.0_chart.js@4.1.2:
+ /chartjs-chart-matrix/1.3.0_chart.js@4.2.0:
resolution: {integrity: sha512-oPmyxY60tJDBFbnhXcmcJujs+F1a2uMvb9HOhSeV2/5k8L9LApWtyRJzwNWawMl8vDbWdhAfobq06b4AcdwE3Q==}
peerDependencies:
chart.js: '>=3.0.0'
dependencies:
- chart.js: 4.1.2
+ chart.js: 4.2.0
dev: false
- /chartjs-plugin-gradient/0.6.1_chart.js@4.1.2:
+ /chartjs-plugin-gradient/0.6.1_chart.js@4.2.0:
resolution: {integrity: sha512-TGHNIh8KqQMLdb+UfY80cBHYRyOC47eeokmgkeajRdKGbFt462lJiyiq4ZJ25fiM7BGsmzoBLhmVyEw4B3gQxw==}
peerDependencies:
chart.js: '>=2.6.0'
dependencies:
- chart.js: 4.1.2
+ chart.js: 4.2.0
dev: false
- /chartjs-plugin-zoom/2.0.0_chart.js@4.1.2:
+ /chartjs-plugin-zoom/2.0.0_chart.js@4.2.0:
resolution: {integrity: sha512-bqpi7DGy9a5hX7ThKl/xQaLzXvneSwhS0w/lNimZ8AJaoRVMKz5JfUoqwciJYV5ixKXJbgyvwC9HcJnyVsYmjg==}
peerDependencies:
chart.js: '>=3.2.0'
dependencies:
- chart.js: 4.1.2
+ chart.js: 4.2.0
hammerjs: 2.0.8
dev: false
@@ -6040,6 +6109,35 @@ packages:
- supports-color
dev: true
+ /eslint-module-utils/2.7.4_kvyj4idustix6trhy5lyssy2sq:
+ resolution: {integrity: sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==}
+ engines: {node: '>=4'}
+ peerDependencies:
+ '@typescript-eslint/parser': '*'
+ eslint: '*'
+ eslint-import-resolver-node: '*'
+ eslint-import-resolver-typescript: '*'
+ eslint-import-resolver-webpack: '*'
+ peerDependenciesMeta:
+ '@typescript-eslint/parser':
+ optional: true
+ eslint:
+ optional: true
+ eslint-import-resolver-node:
+ optional: true
+ eslint-import-resolver-typescript:
+ optional: true
+ eslint-import-resolver-webpack:
+ optional: true
+ dependencies:
+ '@typescript-eslint/parser': 5.48.2_7uibuqfxkfaozanbtbziikiqje
+ debug: 3.2.7
+ eslint: 8.32.0
+ eslint-import-resolver-node: 0.3.7
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
/eslint-module-utils/2.7.4_sqt5xxn4ciiurbqrzlaarm6ama:
resolution: {integrity: sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==}
engines: {node: '>=4'}
@@ -6102,19 +6200,52 @@ packages:
- supports-color
dev: true
- /eslint-plugin-vue/9.9.0_eslint@8.31.0:
+ /eslint-plugin-import/2.27.5_2l6piu6guil2f63lj3qmhzbnn4:
+ resolution: {integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==}
+ engines: {node: '>=4'}
+ peerDependencies:
+ '@typescript-eslint/parser': '*'
+ eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8
+ peerDependenciesMeta:
+ '@typescript-eslint/parser':
+ optional: true
+ dependencies:
+ '@typescript-eslint/parser': 5.48.2_7uibuqfxkfaozanbtbziikiqje
+ array-includes: 3.1.6
+ array.prototype.flat: 1.3.1
+ array.prototype.flatmap: 1.3.1
+ debug: 3.2.7
+ doctrine: 2.1.0
+ eslint: 8.32.0
+ eslint-import-resolver-node: 0.3.7
+ eslint-module-utils: 2.7.4_kvyj4idustix6trhy5lyssy2sq
+ has: 1.0.3
+ is-core-module: 2.11.0
+ is-glob: 4.0.3
+ minimatch: 3.1.2
+ object.values: 1.1.6
+ resolve: 1.22.1
+ semver: 6.3.0
+ tsconfig-paths: 3.14.1
+ transitivePeerDependencies:
+ - eslint-import-resolver-typescript
+ - eslint-import-resolver-webpack
+ - supports-color
+ dev: true
+
+ /eslint-plugin-vue/9.9.0_eslint@8.32.0:
resolution: {integrity: sha512-YbubS7eK0J7DCf0U2LxvVP7LMfs6rC6UltihIgval3azO3gyDwEGVgsCMe1TmDiEkl6GdMKfRpaME6QxIYtzDQ==}
engines: {node: ^14.17.0 || >=16.0.0}
peerDependencies:
eslint: ^6.2.0 || ^7.0.0 || ^8.0.0
dependencies:
- eslint: 8.31.0
- eslint-utils: 3.0.0_eslint@8.31.0
+ eslint: 8.32.0
+ eslint-utils: 3.0.0_eslint@8.32.0
natural-compare: 1.4.0
nth-check: 2.1.1
postcss-selector-parser: 6.0.11
semver: 7.3.8
- vue-eslint-parser: 9.1.0_eslint@8.31.0
+ vue-eslint-parser: 9.1.0_eslint@8.32.0
xml-name-validator: 4.0.0
transitivePeerDependencies:
- supports-color
@@ -6146,6 +6277,16 @@ packages:
eslint-visitor-keys: 2.1.0
dev: true
+ /eslint-utils/3.0.0_eslint@8.32.0:
+ resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==}
+ engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0}
+ peerDependencies:
+ eslint: '>=5'
+ dependencies:
+ eslint: 8.32.0
+ eslint-visitor-keys: 2.1.0
+ dev: true
+
/eslint-visitor-keys/2.1.0:
resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==}
engines: {node: '>=10'}
@@ -6204,6 +6345,54 @@ packages:
- supports-color
dev: true
+ /eslint/8.32.0:
+ resolution: {integrity: sha512-nETVXpnthqKPFyuY2FNjz/bEd6nbosRgKbkgS/y1C7LJop96gYHWpiguLecMHQ2XCPxn77DS0P+68WzG6vkZSQ==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ hasBin: true
+ dependencies:
+ '@eslint/eslintrc': 1.4.1
+ '@humanwhocodes/config-array': 0.11.8
+ '@humanwhocodes/module-importer': 1.0.1
+ '@nodelib/fs.walk': 1.2.8
+ ajv: 6.12.6
+ chalk: 4.1.2
+ cross-spawn: 7.0.3
+ debug: 4.3.4
+ doctrine: 3.0.0
+ escape-string-regexp: 4.0.0
+ eslint-scope: 7.1.1
+ eslint-utils: 3.0.0_eslint@8.32.0
+ eslint-visitor-keys: 3.3.0
+ espree: 9.4.1
+ esquery: 1.4.0
+ esutils: 2.0.3
+ fast-deep-equal: 3.1.3
+ file-entry-cache: 6.0.1
+ find-up: 5.0.0
+ glob-parent: 6.0.2
+ globals: 13.19.0
+ grapheme-splitter: 1.0.4
+ ignore: 5.2.4
+ import-fresh: 3.3.0
+ imurmurhash: 0.1.4
+ is-glob: 4.0.3
+ is-path-inside: 3.0.3
+ js-sdsl: 4.2.0
+ js-yaml: 4.1.0
+ json-stable-stringify-without-jsonify: 1.0.1
+ levn: 0.4.1
+ lodash.merge: 4.6.2
+ minimatch: 3.1.2
+ natural-compare: 1.4.0
+ optionator: 0.9.1
+ regexpp: 3.2.0
+ strip-ansi: 6.0.1
+ strip-json-comments: 3.1.1
+ text-table: 0.2.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
/espree/9.4.1:
resolution: {integrity: sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
@@ -6501,6 +6690,10 @@ packages:
time-stamp: 1.1.0
dev: false
+ /fast-content-type-parse/1.0.0:
+ resolution: {integrity: sha512-Xbc4XcysUXcsP5aHUU7Nq3OwvHq97C+WnbkeIefpeYLX+ryzFJlU6OStFJhs6Ol0LkUGpcK+wL0JwfM+FCU5IA==}
+ dev: false
+
/fast-decode-uri-component/1.0.1:
resolution: {integrity: sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg==}
dev: false
@@ -6569,15 +6762,15 @@ packages:
resolution: {integrity: sha512-79ak0JxddO0utAXAQ5ccKhvs6vX2MGyHHMMsmZkBANrq3hXc1CHzvNPHOcvTsVMEPl5I+NT+RO4YKMGehOfSIg==}
dev: false
- /fastify/4.11.0:
- resolution: {integrity: sha512-JteZ8pjEqd+6n+azQnQfSJV8MUMxAmxbvC2Dx/Mybj039Lf/u3kda9Kq84uy/huCpqCzZoyHIZS5JFGF3wLztw==}
+ /fastify/4.12.0:
+ resolution: {integrity: sha512-Hh2GCsOCqnOuewWSvqXlpq5V/9VA+/JkVoooQWUhrU6gryO9+/UGOoF/dprGcKSDxkM/9TkMXSffYp8eA/YhYQ==}
dependencies:
'@fastify/ajv-compiler': 3.5.0
'@fastify/error': 3.2.0
'@fastify/fast-json-stringify-compiler': 4.2.0
abstract-logging: 2.0.1
avvio: 8.2.0
- content-type: 1.0.4
+ fast-content-type-parse: 1.0.0
find-my-way: 7.4.0
light-my-request: 5.8.0
pino: 8.8.0
@@ -6636,8 +6829,8 @@ packages:
flat-cache: 3.0.4
dev: true
- /file-type/18.1.0:
- resolution: {integrity: sha512-FqjmVvHjX5C/EnibCENAsCMIg7HgUYO0vDypt5V8RmtKDk7eUa+/6mEWSrY4PStFhUt0K3CoE8stjLJCcMsJFQ==}
+ /file-type/18.2.0:
+ resolution: {integrity: sha512-M3RQMWY3F2ykyWZ+IHwNCjpnUmukYhtdkGGC1ZVEUb0ve5REGF7NNJ4Q9ehCUabtQKtSVFOMbFTXgJlFb0DQIg==}
engines: {node: '>=14.16'}
dependencies:
readable-web-to-node-stream: 3.0.2
@@ -7778,11 +7971,6 @@ packages:
/ieee754/1.2.1:
resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==}
- /ignore/5.2.1:
- resolution: {integrity: sha512-d2qQLzTJ9WxQftPAuEQpSPmKqzxePjzVbpAVv62AQ64NTL+wR4JkrVqR/LqFsFEUsHDAiId52mJteHDFuDkElA==}
- engines: {node: '>= 4'}
- dev: true
-
/ignore/5.2.4:
resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==}
engines: {node: '>= 4'}
@@ -11415,8 +11603,8 @@ packages:
resolution: {integrity: sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==}
dev: false
- /punycode/2.2.0:
- resolution: {integrity: sha512-LN6QV1IJ9ZhxWTNdktaPClrNfp8xdSAYS0Zk2ddX7XsXZAxckMHPCBcHRo0cTcEIgYPRiGEkmji3Idkh2yFtYw==}
+ /punycode/2.3.0:
+ resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==}
engines: {node: '>=6'}
/pureimage/0.3.15:
@@ -11971,8 +12159,8 @@ packages:
seedrandom: 2.4.2
dev: false
- /rollup/3.10.0:
- resolution: {integrity: sha512-JmRYz44NjC1MjVF2VKxc0M1a97vn+cDxeqWmnwyAF4FvpjK8YFdHpaqvQB+3IxCvX05vJxKZkoMDU8TShhmJVA==}
+ /rollup/3.10.1:
+ resolution: {integrity: sha512-3Er+yel3bZbZX1g2kjVM+FW+RUWDxbG87fcqFM5/9HbPCTpbVp6JOLn7jlxnNlbu7s/N/uDA4EV/91E2gWnxzw==}
engines: {node: '>=14.18.0', npm: '>=8.0.0'}
hasBin: true
optionalDependencies:
@@ -13065,14 +13253,14 @@ packages:
engines: {node: '>=0.8'}
dependencies:
psl: 1.9.0
- punycode: 2.2.0
+ punycode: 2.3.0
/tough-cookie/4.1.2:
resolution: {integrity: sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==}
engines: {node: '>=6'}
dependencies:
psl: 1.9.0
- punycode: 2.2.0
+ punycode: 2.3.0
universalify: 0.2.0
url-parse: 1.5.10
dev: false
@@ -13084,7 +13272,7 @@ packages:
resolution: {integrity: sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==}
engines: {node: '>=12'}
dependencies:
- punycode: 2.2.0
+ punycode: 2.3.0
dev: false
/trace-redirect/1.0.6:
@@ -13353,8 +13541,8 @@ packages:
undertaker-registry: 1.0.1
dev: false
- /undici/5.15.0:
- resolution: {integrity: sha512-wCAZJDyjw9Myv+Ay62LAoB+hZLPW9SmKbQkbHIhMw/acKSlpn7WohdMUc/Vd4j1iSMBO0hWwU8mjB7a5p5bl8g==}
+ /undici/5.15.1:
+ resolution: {integrity: sha512-XLk8g0WAngdvFqTI+VKfBtM4YWXgdxkf1WezC771Es0Dd+Pm1KmNx8t93WTC+Hh9tnghmVxkclU1HN+j+CvIUA==}
engines: {node: '>=12.18'}
dependencies:
busboy: 1.6.0
@@ -13460,7 +13648,7 @@ packages:
/uri-js/4.4.1:
resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
dependencies:
- punycode: 2.2.0
+ punycode: 2.3.0
/urix/0.1.0:
resolution: {integrity: sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==}
@@ -13675,7 +13863,7 @@ packages:
esbuild: 0.16.17
postcss: 8.4.21
resolve: 1.22.1
- rollup: 3.10.0
+ rollup: 3.10.1
sass: 1.57.1
optionalDependencies:
fsevents: 2.3.2
@@ -13686,14 +13874,14 @@ packages:
engines: {node: '>=0.10.0'}
dev: false
- /vue-eslint-parser/9.1.0_eslint@8.31.0:
+ /vue-eslint-parser/9.1.0_eslint@8.32.0:
resolution: {integrity: sha512-NGn/iQy8/Wb7RrRa4aRkokyCZfOUWk19OP5HP6JEozQFX5AoS/t+Z0ZN7FY4LlmWc4FNI922V7cvX28zctN8dQ==}
engines: {node: ^14.17.0 || >=16.0.0}
peerDependencies:
eslint: '>=6.0.0'
dependencies:
debug: 4.3.4
- eslint: 8.31.0
+ eslint: 8.32.0
eslint-scope: 7.1.1
eslint-visitor-keys: 3.3.0
espree: 9.4.1