Merge branch 'notification-read-api' into swn

This commit is contained in:
tamaina 2022-03-12 00:47:44 +09:00
commit 2c698e48cc
88 changed files with 2368 additions and 1236 deletions

View file

@ -15,10 +15,7 @@ url: https://example.tld/
#───┘ Port and TLS settings └─────────────────────────────────── #───┘ Port and TLS settings └───────────────────────────────────
# #
# Misskey supports two deployment options for public. # Misskey requires a reverse proxy to support HTTPS connections.
#
# Option 1: With Reverse Proxy
# #
# +----- https://example.tld/ ------------+ # +----- https://example.tld/ ------------+
# +------+ |+-------------+ +----------------+| # +------+ |+-------------+ +----------------+|
@ -26,30 +23,12 @@ url: https://example.tld/
# +------+ |+-------------+ +----------------+| # +------+ |+-------------+ +----------------+|
# +---------------------------------------+ # +---------------------------------------+
# #
# You need to setup reverse proxy. (eg. nginx) # You need to set up a reverse proxy. (e.g. nginx)
# You do not define 'https' section. # An encrypted connection with HTTPS is highly recommended
# because tokens may be transferred in GET requests.
# Option 2: Standalone # The port that your Misskey server should listen on.
# port: 3000
# +- https://example.tld/ -+
# +------+ | +---------------+ |
# | User | ---> | | Misskey (443) | |
# +------+ | +---------------+ |
# +------------------------+
#
# You need to run Misskey as root.
# You need to set Certificate in 'https' section.
# To use option 1, uncomment below line.
#port: 3000 # A port that your Misskey server should listen.
# To use option 2, uncomment below lines.
#port: 443
#https:
# # path for certification
# key: /etc/letsencrypt/live/example.tld/privkey.pem
# cert: /etc/letsencrypt/live/example.tld/fullchain.pem
# ┌──────────────────────────┐ # ┌──────────────────────────┐
#───┘ PostgreSQL configuration └──────────────────────────────── #───┘ PostgreSQL configuration └────────────────────────────────

View file

@ -12,23 +12,36 @@
You should also include the user name that made the change. You should also include the user name that made the change.
--> -->
## 12.x.x (unreleased) ## 12.108.0 (2022/03/09)
### NOTE ### NOTE
このバージョンからNode v16.14.0以降が必要です このバージョンからNode v16.14.0以降が必要です
### Changes ### Changes
- ートの最大文字数を設定できる機能が廃止され、デフォルトで一律3000文字になりました @syuilo - ートの最大文字数を設定できる機能が廃止され、デフォルトで一律3000文字になりました @syuilo
- Misskey can no longer terminate HTTPS connections. @Johann150
- If you did not use a reverse proxy (e.g. nginx) before, you will probably need to adjust
your configuration file and set up a reverse proxy. The `https` configuration key is no
longer recognized!
### Improvements ### Improvements
- インスタンスデフォルトテーマを設定できるように @syuilo - インスタンスデフォルトテーマを設定できるように @syuilo
- ミュートに期限を設定できるように @syuilo
- アンケートが終了したときに通知が作成されるように @syuilo
- プロフィールの追加情報を最大16まで保存できるように @syuilo - プロフィールの追加情報を最大16まで保存できるように @syuilo
- 連合チャートにPub&Subを追加 @syuilo - 連合チャートにPub&Subを追加 @syuilo
- 連合チャートにActiveを追加 @syuilo
- デフォルトで10秒以上時間がかかるデータベースへのクエリは中断されるように @syuilo
- 設定ファイルの`db.extra`に`statement_timeout`を設定することでタイムアウト時間を変更できます
- Client: スプラッシュスクリーンにインスタンスのアイコンを表示するように @syuilo
### Bugfixes ### Bugfixes
- Client: リアクションピッカーの高さが低くなったまま戻らないことがあるのを修正 @syuilo - Client: リアクションピッカーの高さが低くなったまま戻らないことがあるのを修正 @syuilo
- Client: ユーザー名オートコンプリートが正しく動作しない問題を修正 @syuilo - Client: ユーザー名オートコンプリートが正しく動作しない問題を修正 @syuilo
- Client: タッチ操作だとウィジェットの編集がしにくいのを修正 @xianonn - Client: タッチ操作だとウィジェットの編集がしにくいのを修正 @xianonn
- Client: register_note_view_interruptor()が動かないのを修正 @syuilo
- Client: iPhone X以降(?)でページの内容が全て表示しきれないのを修正 @tamaina
- Client: fix image caption on mobile @nullobsi
## 12.107.0 (2022/02/12) ## 12.107.0 (2022/02/12)

View file

@ -48,7 +48,7 @@
## Sponsors ## Sponsors
<div align="center"> <div align="center">
<a class="rss3" title="RSS3" href="https://rss3.io/" target="_blank" style="display: inline-block;"><img src="https://rss3.io/assets/images/Logo.svg" alt="RSS3" style="display: inline-block; height: 60px;"></a> <a class="rss3" title="RSS3" href="https://rss3.io/" target="_blank"><img src="https://rss3.mypinata.cloud/ipfs/QmUG6H3Z7D5P511shn7sB4CPmpjH5uZWu4m5mWX7U3Gqbu" alt="RSS3" height="60"></a>
</div> </div>
## Backers ## Backers

View file

@ -32,7 +32,7 @@ uploading: "يرفع..."
save: "حفظ" save: "حفظ"
users: "المستخدمون" users: "المستخدمون"
addUser: "اضافة مستخدم" addUser: "اضافة مستخدم"
favorite: "إضافة إلى المفضلة" favorite: "أضفها للمفضلة"
favorites: "المفضلات" favorites: "المفضلات"
unfavorite: "إزالة من المفضلة" unfavorite: "إزالة من المفضلة"
favorited: "أُضيف إلى المفضلة." favorited: "أُضيف إلى المفضلة."
@ -106,6 +106,7 @@ clickToShow: "اضغط للعرض"
sensitive: "محتوى حساس" sensitive: "محتوى حساس"
add: "إضافة" add: "إضافة"
reaction: "التفاعلات" reaction: "التفاعلات"
reactionSetting: "التفاعلات المراد عرضها في منتقي التفاعلات."
reactionSettingDescription2: "اسحب لترتيب ، انقر للحذف ، استخدم \"+\" للإضافة." reactionSettingDescription2: "اسحب لترتيب ، انقر للحذف ، استخدم \"+\" للإضافة."
rememberNoteVisibility: "تذكر إعدادت مدى رؤية الملاحظات" rememberNoteVisibility: "تذكر إعدادت مدى رؤية الملاحظات"
attachCancel: "أزل المرفق" attachCancel: "أزل المرفق"
@ -139,6 +140,8 @@ flagAsBot: "علّمه كحساب آلي"
flagAsBotDescription: "فعّل هذا الخيار إذا كان هذا الحساب يُدار عبر برمجية. إذا فُعل فسيكون بمثابة علامة للمطورين الآخرين لتجنب سلاسل لا متناهية من التفاعل بين حسابات الآلية وضبط أنظمة ميسكي للتعامل مع هذا الحساب كآلي." flagAsBotDescription: "فعّل هذا الخيار إذا كان هذا الحساب يُدار عبر برمجية. إذا فُعل فسيكون بمثابة علامة للمطورين الآخرين لتجنب سلاسل لا متناهية من التفاعل بين حسابات الآلية وضبط أنظمة ميسكي للتعامل مع هذا الحساب كآلي."
flagAsCat: "علّم هذا الحساب كحساب قط" flagAsCat: "علّم هذا الحساب كحساب قط"
flagAsCatDescription: "فعّل هذا الخيار لوضع علامة على الحساب لتوضيح أنه حساب قط." flagAsCatDescription: "فعّل هذا الخيار لوضع علامة على الحساب لتوضيح أنه حساب قط."
flagShowTimelineReplies: "أظهر التعليقات في الخيط الزمني"
flagShowTimelineRepliesDescription: "يظهر الردود في الخط الزمني"
autoAcceptFollowed: "اقبل طلبات المتابعة تلقائيا من الحسابات المتابَعة" autoAcceptFollowed: "اقبل طلبات المتابعة تلقائيا من الحسابات المتابَعة"
addAccount: "أضف حساباً" addAccount: "أضف حساباً"
loginFailed: "فشل الولوج" loginFailed: "فشل الولوج"
@ -230,6 +233,8 @@ resetAreYouSure: "هل تريد إعادة التعيين؟"
saved: "حُفظ" saved: "حُفظ"
messaging: "المحادثة" messaging: "المحادثة"
upload: "ارفع" upload: "ارفع"
keepOriginalUploading: "ابق الصورة الأصلية"
keepOriginalUploadingDescription: "يحفظ الصور المرفوعة على حالتها الأصلية، وان عطّل ستولد نسخة مخصصة من الصورة."
fromDrive: "من المخزن" fromDrive: "من المخزن"
fromUrl: "عبر رابط" fromUrl: "عبر رابط"
uploadFromUrl: "ارفع عبر رابط" uploadFromUrl: "ارفع عبر رابط"
@ -276,6 +281,7 @@ emptyDrive: "قرص التخزين فارغ"
emptyFolder: "هذا المجلد فارغ" emptyFolder: "هذا المجلد فارغ"
unableToDelete: "لا يمكن حذفه" unableToDelete: "لا يمكن حذفه"
inputNewFileName: "ادخل الإسم الجديد للملف" inputNewFileName: "ادخل الإسم الجديد للملف"
inputNewDescription: "أدخل تعليقًا توضيحيًا"
inputNewFolderName: "ادخل الإسم الجديد للمجلد" inputNewFolderName: "ادخل الإسم الجديد للمجلد"
circularReferenceFolder: "المجلد المستهدف ينتمي للمجلد الذي تريد حذفه" circularReferenceFolder: "المجلد المستهدف ينتمي للمجلد الذي تريد حذفه"
hasChildFilesOrFolders: "الان الملف غير فارغ. لا يمكن حذفه" hasChildFilesOrFolders: "الان الملف غير فارغ. لا يمكن حذفه"
@ -315,8 +321,6 @@ disablingTimelinesInfo: "سيتمكن المديرون والمشرفون من
registration: "إنشاء حساب" registration: "إنشاء حساب"
enableRegistration: "تفعيل إنشاء الحسابات الجديدة" enableRegistration: "تفعيل إنشاء الحسابات الجديدة"
invite: "دعوة" invite: "دعوة"
proxyRemoteFiles: "جلب الملفات البعيدة عبر وكيل"
proxyRemoteFilesDescription: "إذا فُعّل هذا الإعداد ، ستُجلب الملفات البعيدة غير الموجودة في التخزين المحلي للخادم عبر وكيل وتُنشأ لها صور مصغرة. لن يأثر على تخزين الخادم."
driveCapacityPerLocalAccount: "حصة التخزين لكل مستخدم محلي" driveCapacityPerLocalAccount: "حصة التخزين لكل مستخدم محلي"
driveCapacityPerRemoteAccount: "حصة التخزين لكل مستخدم بعيد" driveCapacityPerRemoteAccount: "حصة التخزين لكل مستخدم بعيد"
inMb: "بالميغابايت" inMb: "بالميغابايت"
@ -345,6 +349,7 @@ name: "الإسم"
antennaSource: "مصدر الهوائي" antennaSource: "مصدر الهوائي"
antennaKeywords: "الكلمات المفتاحية للإستقبال" antennaKeywords: "الكلمات المفتاحية للإستقبال"
antennaExcludeKeywords: "الكلمات المفتاحية المستثناة" antennaExcludeKeywords: "الكلمات المفتاحية المستثناة"
antennaKeywordsDescription: "افصل بينهم بمسافة لاستخدام معامل \"و\" أو بسطر لاستخدام معامل \"أو\""
notifyAntenna: "نبهني بصول ملاحظات جديدة" notifyAntenna: "نبهني بصول ملاحظات جديدة"
withFileAntenna: "ملاحظات تحوي ملفات فقط" withFileAntenna: "ملاحظات تحوي ملفات فقط"
antennaUsersDescription: "اكتب اسم مستخدم لكل سطر" antennaUsersDescription: "اكتب اسم مستخدم لكل سطر"
@ -410,7 +415,6 @@ next: "التالية"
retype: "أعد الكتابة" retype: "أعد الكتابة"
noteOf: "ملاحظات {user}" noteOf: "ملاحظات {user}"
inviteToGroup: "دعوة إلى فريق" inviteToGroup: "دعوة إلى فريق"
maxNoteTextLength: "حد عدد المحارف لكل ملاحظة"
quoteAttached: "اِقتُبسَ" quoteAttached: "اِقتُبسَ"
quoteQuestion: "أتريد تضمينها كاقتباس" quoteQuestion: "أتريد تضمينها كاقتباس"
noMessagesYet: "ليس هناك رسائل بعد" noMessagesYet: "ليس هناك رسائل بعد"
@ -469,6 +473,7 @@ hideThisNote: "إخفاء هذه الملاحظة"
showFeaturedNotesInTimeline: "أظهر الملاحظات الشائعة في الخيط الزمني" showFeaturedNotesInTimeline: "أظهر الملاحظات الشائعة في الخيط الزمني"
objectStorageBaseUrl: "الرابط الأساسي" objectStorageBaseUrl: "الرابط الأساسي"
objectStoragePrefix: "البادئة" objectStoragePrefix: "البادئة"
objectStoragePrefixDesc: "ستُحفظ الملفات في مجلدات تحوي اسماءها هذه البادئة."
objectStorageEndpoint: "نقطة النهاية" objectStorageEndpoint: "نقطة النهاية"
objectStorageRegion: "المنطقة" objectStorageRegion: "المنطقة"
objectStorageUseSSL: "استخدم SSL" objectStorageUseSSL: "استخدم SSL"
@ -630,7 +635,10 @@ experimentalFeatures: "ميّزات اختبارية"
developer: "المطور" developer: "المطور"
makeExplorable: "أظهر الحساب في صفحة \"استكشاف\"" makeExplorable: "أظهر الحساب في صفحة \"استكشاف\""
makeExplorableDescription: "بتعطيل هذا الخيار لن يظهر حسابك في صفحة \"استكشاف\"" makeExplorableDescription: "بتعطيل هذا الخيار لن يظهر حسابك في صفحة \"استكشاف\""
wide: "عريض"
narrow: "رفيع"
reloadToApplySetting: "سيُطبق هذا الإعداد بعد إعادة تحميل الصفحة، أتريد إعادة تحميلها الآن؟" reloadToApplySetting: "سيُطبق هذا الإعداد بعد إعادة تحميل الصفحة، أتريد إعادة تحميلها الآن؟"
needReloadToApply: "سيطبق هذا بعد إعادة التحميل."
showTitlebar: "اعرض شريط العنوان" showTitlebar: "اعرض شريط العنوان"
clearCache: "امسح التخزين المؤقت" clearCache: "امسح التخزين المؤقت"
onlineUsersCount: "{n} مستخدم متصل" onlineUsersCount: "{n} مستخدم متصل"
@ -661,6 +669,7 @@ capacity: "السعة"
inUse: "مستخدم" inUse: "مستخدم"
editCode: "حرر الشفرة" editCode: "حرر الشفرة"
apply: "تطبيق" apply: "تطبيق"
receiveAnnouncementFromInstance: "استلم إشعارات من هذا المثيل"
emailNotification: "إشعارات البريد الكتروني" emailNotification: "إشعارات البريد الكتروني"
inChannelSearch: "ابحث عن قناة" inChannelSearch: "ابحث عن قناة"
useReactionPickerForContextMenu: "افتح منتقي التفاعلات عند النقر بالزر الأيمن" useReactionPickerForContextMenu: "افتح منتقي التفاعلات عند النقر بالزر الأيمن"
@ -674,6 +683,7 @@ unlikeConfirm: "أتريد إلغاء إعجابك؟"
fullView: "ملء الشاشة" fullView: "ملء الشاشة"
quitFullView: "اخرج من وضع ملء للشاشة" quitFullView: "اخرج من وضع ملء للشاشة"
addDescription: "أضف وصفًا" addDescription: "أضف وصفًا"
userPagePinTip: "لعرض ملاحظة هنا اختر \"دبسها على الصفحة الشخصية\" من قائمة تلك الملاحظة."
notSpecifiedMentionWarning: "في الملاحظة ذكر لمستخدمين لن يستلموها." notSpecifiedMentionWarning: "في الملاحظة ذكر لمستخدمين لن يستلموها."
info: "عن" info: "عن"
userInfo: "معلومات المستخدم" userInfo: "معلومات المستخدم"
@ -748,11 +758,30 @@ makeReactionsPublicDescription: "هذا سيجعل قائمة تفاعلاتك
classic: "تقليدي" classic: "تقليدي"
muteThread: "اكتم النقاش" muteThread: "اكتم النقاش"
unmuteThread: "ارفع الكتم عن النقاش" unmuteThread: "ارفع الكتم عن النقاش"
ffVisibility: "مرئية المتابِعين/المتابَعين"
ffVisibilityDescription: "يسمح لك بتحديد من يمكنهم رؤية متابِعيك ومتابَعيك."
deleteAccountConfirm: "سيحذف حسابك نهائيًا، أتريد المتابعة؟" deleteAccountConfirm: "سيحذف حسابك نهائيًا، أتريد المتابعة؟"
incorrectPassword: "كلمة السر خاطئة." incorrectPassword: "كلمة السر خاطئة."
voteConfirm: "متيقِّن من تصويتك لـ {choice}؟"
hide: "إخفاء" hide: "إخفاء"
leaveGroup: "مغادرة الفريق" leaveGroup: "مغادرة الفريق"
leaveGroupConfirm: "متيقن من مغادرة \"{name}\"؟"
welcomeBackWithName: "مرحبًا بك مجددًا {name}" welcomeBackWithName: "مرحبًا بك مجددًا {name}"
clickToFinishEmailVerification: "انقر [{ok}] لاستيثاق بريدك الإلكتروني."
overridedDeviceKind: "نوع الجهاز"
smartphone: "هاتف ذكي"
tablet: "جهاز لوحي"
auto: "تلقائي"
themeColor: "لون السمة"
size: "الحجم"
numberOfColumn: "عدد الأعمدة"
searchByGoogle: "غوغل"
mutePeriod: "مدة الكتم"
indefinitely: "أبدًا"
tenMinutes: "10 دقائق"
oneHour: "ساعة"
oneDay: "يوم"
oneWeek: "أسبوع"
_emailUnavailable: _emailUnavailable:
used: "هذا البريد الإلكتروني مستخدم" used: "هذا البريد الإلكتروني مستخدم"
format: "صيغة البريد الإلكتروني غير صالحة" format: "صيغة البريد الإلكتروني غير صالحة"
@ -775,6 +804,7 @@ _accountDelete:
inProgress: "عملية الحذف جارية" inProgress: "عملية الحذف جارية"
_ad: _ad:
back: "رجوع" back: "رجوع"
reduceFrequencyOfThisAd: "قلل عرض هذا الإعلان"
_forgotPassword: _forgotPassword:
enterEmail: "أدخل البريد الإلكتروني المرتبط بحسابك لكي يرسل إليك رابط لإعادة تعيين كلمة المرور." enterEmail: "أدخل البريد الإلكتروني المرتبط بحسابك لكي يرسل إليك رابط لإعادة تعيين كلمة المرور."
ifNoEmail: "إذا لم تربط حسابك ببريد إلكتروني سيتوجب عليك التواصل مع مدير الموقع." ifNoEmail: "إذا لم تربط حسابك ببريد إلكتروني سيتوجب عليك التواصل مع مدير الموقع."
@ -801,7 +831,7 @@ _registry:
createKey: "أنشئ مفتاحًا" createKey: "أنشئ مفتاحًا"
_aboutMisskey: _aboutMisskey:
about: "ميسكي هو برمجية مفتوحة المصدر يطورها syuilo منذ 2014." about: "ميسكي هو برمجية مفتوحة المصدر يطورها syuilo منذ 2014."
contributors: "المساهم الرئيسي" contributors: "المساهمون الرئيسيون"
allContributors: "كل المساهمين" allContributors: "كل المساهمين"
source: "الشفرة المصدرية" source: "الشفرة المصدرية"
translation: "ترجم ميسكي" translation: "ترجم ميسكي"
@ -823,8 +853,11 @@ _mfm:
urlDescription: "يمكن عرض الروابط" urlDescription: "يمكن عرض الروابط"
link: "رابط" link: "رابط"
bold: "عريض" bold: "عريض"
boldDescription: "جعل الحروف أثخن لإبرازها."
small: "صغير" small: "صغير"
smallDescription: "يعرض المحتوى صغيرًا ورفيعًا."
center: "وسط" center: "وسط"
centerDescription: "يمركز المحتوى في الوَسَط."
quote: "اقتبس" quote: "اقتبس"
emoji: "إيموجي مخصص" emoji: "إيموجي مخصص"
search: "البحث" search: "البحث"
@ -1088,9 +1121,12 @@ _postForm:
quotePlaceholder: "اقتبس هذه الملاحظة…" quotePlaceholder: "اقتبس هذه الملاحظة…"
channelPlaceholder: "انشر في قناة..." channelPlaceholder: "انشر في قناة..."
_placeholders: _placeholders:
a: "ما الذي تنوي فعله؟"
b: "ماذا يحدث حولك ؟"
c: "ما الذي تفكر فيه؟" c: "ما الذي تفكر فيه؟"
d: "ما الذي تريد قوله؟" d: "ما الذي تريد قوله؟"
e: "أكتب..." e: "أكتب..."
f: "بانتظارك لتكتب..."
_profile: _profile:
name: "الإسم" name: "الإسم"
username: "اسم المستخدم" username: "اسم المستخدم"
@ -1109,23 +1145,25 @@ _exportOrImport:
muteList: "المستخدمون المكتومون" muteList: "المستخدمون المكتومون"
blockingList: "المستخدمون المحجوبون" blockingList: "المستخدمون المحجوبون"
userLists: "القوائم" userLists: "القوائم"
excludeMutingUsers: "استثن الحسابات المكتومة"
excludeInactiveUsers: "استثن المستخدمين الخاملين"
_charts: _charts:
federation: "الفديرالية" federation: "الفديرالية"
apRequest: "الطلبات" apRequest: "الطلبات"
usersIncDec: "اختلاف عدد المستخدمين" usersIncDec: "تباين عدد المستخدمين"
usersTotal: "مجموع عدد المستخدمين والمستخدمات" usersTotal: "مجموع عدد المستخدمين والمستخدمات"
activeUsers: "المستخدمون النشطون" activeUsers: "المستخدمون النشطون"
notesIncDec: "اختلاف عدد الملاحظات" notesIncDec: "تباين عدد الملاحظات"
localNotesIncDec: "اختلاف عدد الملاحظات المحلية" localNotesIncDec: "تباين عدد الملاحظات المحلية"
remoteNotesIncDec: "اختلاف عدد الملاحظات البعيدة" remoteNotesIncDec: "تباين عدد الملاحظات البعيدة"
notesTotal: "إجمالي الملاحظات" notesTotal: "إجمالي الملاحظات"
filesIncDec: "اختلاف عدد الملفات" filesIncDec: "تباين عدد الملفات"
filesTotal: "العدد الإجمالي للملفات" filesTotal: "العدد الإجمالي للملفات"
_instanceCharts: _instanceCharts:
requests: "الطلبات" requests: "الطلبات"
users: "اختلاف عدد المستخدمين" users: "تباين عدد المستخدمين"
notes: "اختلاف عدد الملاحظات" notes: "تباين عدد الملاحظات"
files: "اختلاف عدد الملفات" files: "تباين عدد الملفات"
_timelines: _timelines:
home: "الرئيسي" home: "الرئيسي"
local: "المحلي" local: "المحلي"
@ -1139,14 +1177,21 @@ _pages:
updated: "نجح تعديل الصفحة" updated: "نجح تعديل الصفحة"
deleted: "نجح حذف الصفحة" deleted: "نجح حذف الصفحة"
pageSetting: "إعدادات الصفحة" pageSetting: "إعدادات الصفحة"
nameAlreadyExists: "رابط الصفحة موجود مسبقًا"
invalidNameTitle: "رابط الصفحة ليس صالحًا"
invalidNameText: "تأكد أن عنوان الصفحة ليس فارغًا"
editThisPage: "عدّل هذه الصفحة"
viewSource: "اظهر المصدر" viewSource: "اظهر المصدر"
viewPage: "اعرض صفحاتك" viewPage: "اعرض صفحاتك"
like: "أعجبني" like: "أعجبني"
unlike: "أزل الإعجاب" unlike: "أزل الإعجاب"
my: "صفحاتي" my: "صفحاتي"
liked: "الصفحات المُعجب بها"
featured: "الأكثر شعبية" featured: "الأكثر شعبية"
contents: "المحتوى" contents: "المحتوى"
variables: "متغيّرات"
title: "العنوان" title: "العنوان"
url: "رابط الصفحة"
summary: "ملخص الصفحة" summary: "ملخص الصفحة"
alignCenter: "توسيط العناصر" alignCenter: "توسيط العناصر"
hideTitleWhenPinned: "اخف عنوان الصفحة عند تدبيسها في ملف الشخصي" hideTitleWhenPinned: "اخف عنوان الصفحة عند تدبيسها في ملف الشخصي"
@ -1401,6 +1446,7 @@ _notification:
youReceivedFollowRequest: "تلقيتَ طلب متابعة" youReceivedFollowRequest: "تلقيتَ طلب متابعة"
yourFollowRequestAccepted: "قُبل طلب المتابعة" yourFollowRequestAccepted: "قُبل طلب المتابعة"
youWereInvitedToGroup: "دُعيت إلى فريقٍ" youWereInvitedToGroup: "دُعيت إلى فريقٍ"
pollEnded: "ظهرت نتائج الاستطلاع"
_types: _types:
all: "الكل" all: "الكل"
follow: "متابِعون جدد" follow: "متابِعون جدد"
@ -1409,6 +1455,7 @@ _notification:
renote: "أعد النشر" renote: "أعد النشر"
quote: "الاقتباسات" quote: "الاقتباسات"
reaction: "التفاعلات" reaction: "التفاعلات"
pollVote: "مصوِت شارك في الاستطلاع"
receiveFollowRequest: "طلبات المتابعة المتلقاة" receiveFollowRequest: "طلبات المتابعة المتلقاة"
followRequestAccepted: "طلبات المتابعة المقبولة" followRequestAccepted: "طلبات المتابعة المقبولة"
app: "إشعارات التطبيقات المرتبطة" app: "إشعارات التطبيقات المرتبطة"

View file

@ -325,8 +325,6 @@ disablingTimelinesInfo: "আপনি এই টাইমলাইনগুল
registration: "নিবন্ধন" registration: "নিবন্ধন"
enableRegistration: "নতুন ব্যাবহারকারী নিবন্ধন চালু করুন" enableRegistration: "নতুন ব্যাবহারকারী নিবন্ধন চালু করুন"
invite: "আমন্ত্রণ" invite: "আমন্ত্রণ"
proxyRemoteFiles: "রিমোট ফাইলসমুহ প্রক্সি করুন"
proxyRemoteFilesDescription: "যখন এই সেটিংটি চালু থাকে, তখন অসংরক্ষিত বা অতিরিক্ত ক্ষমতার কারণে দূরবর্তী ফাইলগুলিকে স্থানীয়ভাবে প্রক্সি করা হবে এবং থাম্বনেলগুলিও তৈরি করা হবে৷ সার্ভার স্টোরেজ ব্যাবহার করে না,"
driveCapacityPerLocalAccount: "প্রত্যেক স্থানীয় ব্যাবহারকারীর জন্য ড্রাইভের জায়গা" driveCapacityPerLocalAccount: "প্রত্যেক স্থানীয় ব্যাবহারকারীর জন্য ড্রাইভের জায়গা"
driveCapacityPerRemoteAccount: "প্রত্যেক রিমোট ব্যাবহারকারীর জন্য ড্রাইভের জায়গা" driveCapacityPerRemoteAccount: "প্রত্যেক রিমোট ব্যাবহারকারীর জন্য ড্রাইভের জায়গা"
inMb: "মেগাবাইটে লিখুন" inMb: "মেগাবাইটে লিখুন"
@ -422,7 +420,6 @@ next: "পরবর্তী"
retype: "পুনঃ প্রবেশ" retype: "পুনঃ প্রবেশ"
noteOf: "{user} এর নোট" noteOf: "{user} এর নোট"
inviteToGroup: "গ্রুপে আমন্ত্রণ জানান" inviteToGroup: "গ্রুপে আমন্ত্রণ জানান"
maxNoteTextLength: "নোট এর সর্বোচ্চ দৈর্ঘ্য"
quoteAttached: "উদ্ধৃত" quoteAttached: "উদ্ধৃত"
quoteQuestion: "উদ্ধৃতি হিসাবে সংযুক্ত করবেন?" quoteQuestion: "উদ্ধৃতি হিসাবে সংযুক্ত করবেন?"
noMessagesYet: "কোন মেসেজ নেই" noMessagesYet: "কোন মেসেজ নেই"
@ -831,6 +828,10 @@ smartphone: "স্মার্টফোন"
tablet: "ট্যাবলেট" tablet: "ট্যাবলেট"
auto: "স্বয়ংক্রিয়" auto: "স্বয়ংক্রিয়"
themeColor: "থিমের রং" themeColor: "থিমের রং"
size: "আকার"
numberOfColumn: "কলামের সংখ্যা"
searchByGoogle: "গুগল"
indefinitely: "অনির্দিষ্ট"
_emailUnavailable: _emailUnavailable:
used: "এই ইমেইল ঠিকানাটি ইতোমধ্যে ব্যবহৃত হয়েছে" used: "এই ইমেইল ঠিকানাটি ইতোমধ্যে ব্যবহৃত হয়েছে"
format: "এই ইমেল ঠিকানাটি সঠিকভাবে লিখা হয়নি" format: "এই ইমেল ঠিকানাটি সঠিকভাবে লিখা হয়নি"

25
locales/ca-ES.yml Normal file
View file

@ -0,0 +1,25 @@
---
_lang_: "Català"
headlineMisskey: "Una xarxa connectada per notes"
search: "Cercar"
notifications: "Notificacions"
username: "Nom d'usuari"
password: "Contrasenya"
forgotPassword: "Contrasenya oblidada"
fetchingAsApObject: "Cercant en el Fediverse..."
ok: "OK"
gotIt: "Ho he entès!"
cancel: "Cancel·lar"
smtpUser: "Nom d'usuari"
smtpPass: "Contrasenya"
_mfm:
search: "Cercar"
_sfx:
notification: "Notificacions"
_widgets:
notifications: "Notificacions"
_profile:
username: "Nom d'usuari"
_deck:
_columns:
notifications: "Notificacions"

View file

@ -14,16 +14,16 @@ gotIt: "Verstanden!"
cancel: "Abbrechen" cancel: "Abbrechen"
enterUsername: "Benutzername eingeben" enterUsername: "Benutzername eingeben"
renotedBy: "Renote von {user}" renotedBy: "Renote von {user}"
noNotes: "Keine Notizen" noNotes: "Keine Notizen gefunden"
noNotifications: "Keine Benachrichtigungen" noNotifications: "Keine Benachrichtigungen gefunden"
instance: "Instanz" instance: "Instanz"
settings: "Einstellungen" settings: "Einstellungen"
basicSettings: "Allgemeine Einstellungen" basicSettings: "Allgemeine Einstellungen"
otherSettings: "Weitere Einstellungen" otherSettings: "Weitere Einstellungen"
openInWindow: "In Fenster öffnen" openInWindow: "In einem Fenster öffnen"
profile: "Profil" profile: "Profil"
timeline: "Chronik" timeline: "Chronik"
noAccountDescription: "Dieser Nutzer hat seine Profilbeschreibung noch nicht ausgefüllt." noAccountDescription: "Dieser Nutzer hat seine Profilbeschreibung noch nicht ausgefüllt"
login: "Anmelden" login: "Anmelden"
loggingIn: "Du wirst angemeldet …" loggingIn: "Du wirst angemeldet …"
logout: "Abmelden" logout: "Abmelden"
@ -38,8 +38,8 @@ unfavorite: "Aus Favoriten entfernen"
favorited: "Zu Favoriten hinzugefügt." favorited: "Zu Favoriten hinzugefügt."
alreadyFavorited: "Bereits zu den Favoriten hinzugefügt." alreadyFavorited: "Bereits zu den Favoriten hinzugefügt."
cantFavorite: "Hinzufügen zu Favoriten fehlgeschlagen." cantFavorite: "Hinzufügen zu Favoriten fehlgeschlagen."
pin: "Anheften" pin: "An dein Profil anheften"
unpin: "Lösen" unpin: "Von deinem Profil lösen"
copyContent: "Inhalt kopieren" copyContent: "Inhalt kopieren"
copyLink: "Link kopieren" copyLink: "Link kopieren"
delete: "Löschen" delete: "Löschen"
@ -47,7 +47,7 @@ deleteAndEdit: "Löschen und Bearbeiten"
deleteAndEditConfirm: "Möchtest du diese Notiz wirklich löschen und bearbeiten? Alle Reaktionen, Renotes und Antworten dieser Notiz werden verloren gehen." deleteAndEditConfirm: "Möchtest du diese Notiz wirklich löschen und bearbeiten? Alle Reaktionen, Renotes und Antworten dieser Notiz werden verloren gehen."
addToList: "Zu Liste hinzufügen" addToList: "Zu Liste hinzufügen"
sendMessage: "Nachricht senden" sendMessage: "Nachricht senden"
copyUsername: "Benutzername kopieren" copyUsername: "Benutzernamen kopieren"
searchUser: "Nach einem Benutzer suchen" searchUser: "Nach einem Benutzer suchen"
reply: "Antworten" reply: "Antworten"
loadMore: "Mehr laden" loadMore: "Mehr laden"
@ -63,12 +63,12 @@ import: "Import"
export: "Export" export: "Export"
files: "Dateien" files: "Dateien"
download: "Herunterladen" download: "Herunterladen"
driveFileDeleteConfirm: "Möchtest du die Datei „{name}“ wirklich löschen? Die zugehörige Notiz wird ebenso verschwinden." driveFileDeleteConfirm: "Möchtest du die Datei „{name}“ wirklich löschen? Notizen mit dieser Datei werden ebenso verschwinden."
unfollowConfirm: "Möchtest du {name} nicht mehr folgen?" unfollowConfirm: "Möchtest du {name} nicht mehr folgen?"
exportRequested: "Du hast einen Export angefragt. Dies kann etwas Zeit in Anspruch nehmen. Sobald der Export abgeschlossen ist, wird er deiner Drive hinzugefügt." exportRequested: "Du hast einen Export angefragt. Dies kann etwas Zeit in Anspruch nehmen. Sobald der Export abgeschlossen ist, wird er deiner Drive hinzugefügt."
importRequested: "Du hast einen Import angefragt. Dies kann etwas Zeit in Anspruch nehmen." importRequested: "Du hast einen Import angefragt. Dies kann etwas Zeit in Anspruch nehmen."
lists: "Listen" lists: "Listen"
noLists: "Keine Listen" noLists: "Keine Listen gefunden"
note: "Notiz" note: "Notiz"
notes: "Notizen" notes: "Notizen"
following: "Folgt" following: "Folgt"
@ -79,16 +79,16 @@ manageLists: "Listen verwalten"
error: "Fehler" error: "Fehler"
somethingHappened: "Ein Fehler ist aufgetreten" somethingHappened: "Ein Fehler ist aufgetreten"
retry: "Wiederholen" retry: "Wiederholen"
pageLoadError: "Laden der Seite fehlgeschlagen." pageLoadError: "Die Seite konnte nicht geladen werden."
pageLoadErrorDescription: "Dieser Fehler wird meist durch Netzwerkfehler oder den Browser-Cache verursacht. Bitte leere den Cache oder versuche es nach einiger Zeit erneut." pageLoadErrorDescription: "Dieser Fehler wird meist durch Netzwerkfehler oder den Browser-Cache verursacht. Bitte leere den Cache oder versuche es nach einiger Zeit erneut."
serverIsDead: "Dieser Server antwortet nicht. Bitte warte einen Moment und versuche es dann erneut." serverIsDead: "Dieser Server antwortet nicht. Bitte warte einen Moment und versuche es dann erneut."
youShouldUpgradeClient: "Bitte aktualisiere diese Seite, um eine neuere Version deines Clients zu verwenden." youShouldUpgradeClient: "Bitte aktualisiere diese Seite, um eine neuere Version deines Clients zu verwenden."
enterListName: "Name der Liste eingeben" enterListName: "Listennamen eingeben"
privacy: "Privatsphäre" privacy: "Privatsphäre"
makeFollowManuallyApprove: "Follow-Anfragen benötigen Bestätigung" makeFollowManuallyApprove: "Follow-Anfragen benötigen Bestätigung"
defaultNoteVisibility: "Standardsichtbarkeit" defaultNoteVisibility: "Standardsichtbarkeit"
follow: "Folgen" follow: "Folgen"
followRequest: "Follow-Anfrage" followRequest: "Follow-Anfrage senden"
followRequests: "Follow-Anfragen" followRequests: "Follow-Anfragen"
unfollow: "Nicht mehr folgen" unfollow: "Nicht mehr folgen"
followRequestPending: "Follow-Anfrage ausstehend" followRequestPending: "Follow-Anfrage ausstehend"
@ -107,11 +107,11 @@ sensitive: "NSFW"
add: "Hinzufügen" add: "Hinzufügen"
reaction: "Reaktionen" reaction: "Reaktionen"
reactionSetting: "In der Reaktionsauswahl anzuzeigende Reaktionen" reactionSetting: "In der Reaktionsauswahl anzuzeigende Reaktionen"
reactionSettingDescription2: "Ziehe zum Anordnen, klicke zum Löschen, drücke + zum Hinzufügen" reactionSettingDescription2: "Ziehe um Anzuordnen, klicke um zu löschen, drücke „+“ um hinzuzufügen"
rememberNoteVisibility: "Notizsichtbarkeit merken" rememberNoteVisibility: "Notizsichtbarkeit merken"
attachCancel: "Anhang entfernen" attachCancel: "Anhang entfernen"
markAsSensitive: "Als NSFW markieren" markAsSensitive: "Als NSFW markieren"
unmarkAsSensitive: "NSFW-Markierung entfernen" unmarkAsSensitive: "Als nicht NSFW markieren"
enterFileName: "Dateinamen eingeben" enterFileName: "Dateinamen eingeben"
mute: "Stummschalten" mute: "Stummschalten"
unmute: "Stummschaltung aufheben" unmute: "Stummschaltung aufheben"
@ -129,20 +129,20 @@ selectWidget: "Widget auswählen"
editWidgets: "Widgets bearbeiten" editWidgets: "Widgets bearbeiten"
editWidgetsExit: "Fertig" editWidgetsExit: "Fertig"
customEmojis: "Benutzerdefinierte Emojis" customEmojis: "Benutzerdefinierte Emojis"
emoji: "Emojis" emoji: "Emoji"
emojis: "Emojis" emojis: "Emojis"
emojiName: "Emoji-Name" emojiName: "Emoji-Name"
emojiUrl: "Emoji-URL" emojiUrl: "Emoji-URL"
addEmoji: "Emoji hinzufügen" addEmoji: "Emoji hinzufügen"
settingGuide: "Empfohlene Einstellung" settingGuide: "Empfohlene Einstellung"
cacheRemoteFiles: "Dateien von fremden Instanzen im Cache speichern" cacheRemoteFiles: "Dateien von fremden Instanzen im Cache speichern"
cacheRemoteFilesDescription: "Ist diese Einstellung deaktiviert, so werden Dateien fremder Instanzen direkt von dort geladen. Hierdurch wird Speicherplatz auf dem Server gespart, aber durch fehlende Generierung von Vorschaubildern mehr Bandbreite verwendet." cacheRemoteFilesDescription: "Ist diese Einstellung deaktiviert, so werden Dateien fremder Instanzen direkt von dort geladen. Hierdurch wird Speicherplatz auf diesem Server gespart, aber durch fehlende Generierung von Vorschaubildern mehr Bandbreite verwendet."
flagAsBot: "Als Bot markieren" flagAsBot: "Als Bot markieren"
flagAsBotDescription: "Aktiviere diese Option, falls dieses Benutzerkonto durch ein Programm gesteuert wird. Falls aktiviert, agiert es als Flag für andere Entwickler zur Verhinderung von endlosen Kettenreaktionen mit anderen Bots und lässt Misskeys interne Systeme dieses Benutzerkonto als Bot behandeln." flagAsBotDescription: "Aktiviere diese Option, falls dieses Benutzerkonto durch ein Programm gesteuert wird. Falls aktiviert, agiert es als Flag für andere Entwickler zur Verhinderung von endlosen Kettenreaktionen mit anderen Bots und lässt Misskeys interne Systeme dieses Benutzerkonto als Bot behandeln."
flagAsCat: "Als Katze markieren" flagAsCat: "Als Katze markieren"
flagAsCatDescription: "Aktiviere diese Option, um dieses Benutzerkonto als Katze zu markieren." flagAsCatDescription: "Aktiviere diese Option, um dieses Benutzerkonto als Katze zu markieren."
flagShowTimelineReplies: "Antworten in der Chronik anzeigen" flagShowTimelineReplies: "Antworten in der Chronik anzeigen"
flagShowTimelineRepliesDescription: "Ist diese Option aktiviert, so werden Antworten von Benutzern auf die Notizen anderer Benuzter in der Chronik an angezeigt." flagShowTimelineRepliesDescription: "Ist diese Option aktiviert, so werden Antworten von Benutzern auf die Notizen anderer Benutzer in der Chronik angezeigt."
autoAcceptFollowed: "Follow-Anfragen von Benutzern, denen du folgst, automatisch akzeptieren" autoAcceptFollowed: "Follow-Anfragen von Benutzern, denen du folgst, automatisch akzeptieren"
addAccount: "Benutzerkonto hinzufügen" addAccount: "Benutzerkonto hinzufügen"
loginFailed: "Anmeldung fehlgeschlagen" loginFailed: "Anmeldung fehlgeschlagen"
@ -151,12 +151,12 @@ general: "Allgemein"
wallpaper: "Hintergrund" wallpaper: "Hintergrund"
setWallpaper: "Hintergrund festlegen" setWallpaper: "Hintergrund festlegen"
removeWallpaper: "Hintergrund entfernen" removeWallpaper: "Hintergrund entfernen"
searchWith: "Suche: {q}" searchWith: "Suchen: {q}"
youHaveNoLists: "Du hast keine Listen" youHaveNoLists: "Du hast keine Listen"
followConfirm: "Möchtest du {name} wirklich folgen?" followConfirm: "Möchtest du {name} wirklich folgen?"
proxyAccount: "Proxy-Benutzerkonto" proxyAccount: "Proxy-Benutzerkonto"
proxyAccountDescription: "Ein Proxy-Benutzerkonto ist ein Benutzerkonto, das sich für Nutzer unter bestimmten Konditionen wie ein Follower aus einer fremden Instanz verhält. Zum Beispiel wird die Aktivität eines Nutzers aus einer fremden Instanz nicht an diese Instanz übermittelt, falls es keinen Benutzer dieser Instanz gibt, der diesem Nutzer aus fremder Instanz folgt. In diesem Fall folgt stattdessen das Proxy-Benutzerkonto." proxyAccountDescription: "Ein Proxy-Benutzerkonto ist ein Benutzerkonto, das sich für Nutzer unter bestimmten Konditionen wie ein Follower aus einer fremden Instanz verhält. Zum Beispiel wird die Aktivität eines Nutzers aus einer fremden Instanz nicht an diese Instanz übermittelt, falls es keinen Benutzer dieser Instanz gibt, der diesem Nutzer aus fremder Instanz folgt. In diesem Fall folgt stattdessen das Proxy-Benutzerkonto."
host: "Host" host: "Hostname"
selectUser: "Benutzer auswählen" selectUser: "Benutzer auswählen"
recipient: "Empfänger" recipient: "Empfänger"
annotation: "Anmerkung" annotation: "Anmerkung"
@ -194,17 +194,17 @@ blockedInstancesDescription: "Gib die Hostnamen der Instanzen, welche blockiert
muteAndBlock: "Stummschaltungen und Blockierungen" muteAndBlock: "Stummschaltungen und Blockierungen"
mutedUsers: "Stummgeschaltete Benutzer" mutedUsers: "Stummgeschaltete Benutzer"
blockedUsers: "Blockierte Benutzer" blockedUsers: "Blockierte Benutzer"
noUsers: "Keine Benutzer" noUsers: "Keine Benutzer gefunden"
editProfile: "Profil bearbeiten" editProfile: "Profil bearbeiten"
noteDeleteConfirm: "Möchtest du diese Notiz wirklich löschen?" noteDeleteConfirm: "Möchtest du diese Notiz wirklich löschen?"
pinLimitExceeded: "Es können nicht noch mehr Notizen angeheftet werden" pinLimitExceeded: "Du kannst nicht noch mehr Notizen anheften."
intro: "Misskey Installation abgeschlossen! Lass uns nun ein Administratorkonto erstellen." intro: "Misskey ist installiert! Lass uns nun ein Administratorkonto einrichten."
done: "Fertig" done: "Fertig"
processing: "In Bearbeitung …" processing: "In Bearbeitung …"
preview: "Vorschau" preview: "Vorschau"
default: "Standard" default: "Standard"
noCustomEmojis: "Keine benutzerdefinierten Emojis vorhanden" noCustomEmojis: "Keine benutzerdefinierten Emojis gefunden"
noJobs: "Es gibt keine Jobs" noJobs: "Keine Jobs vorhanden"
federating: "Wird föderiert" federating: "Wird föderiert"
blocked: "Blockiert" blocked: "Blockiert"
suspended: "Gesperrt" suspended: "Gesperrt"
@ -217,10 +217,10 @@ instanceFollowers: "Follower der Instanz"
instanceUsers: "Benutzer der Instanz" instanceUsers: "Benutzer der Instanz"
changePassword: "Passwort ändern" changePassword: "Passwort ändern"
security: "Sicherheit" security: "Sicherheit"
retypedNotMatch: "Beide Eingaben stimmen nicht überein." retypedNotMatch: "Die Eingaben stimmen nicht überein."
currentPassword: "Aktuelles Passwort" currentPassword: "Aktuelles Passwort"
newPassword: "Neues Passwort" newPassword: "Neues Passwort"
newPasswordRetype: "Neues Passwort (wiederholen)" newPasswordRetype: "Neues Passwort bestätigen"
attachFile: "Datei anhängen" attachFile: "Datei anhängen"
more: "Mehr!" more: "Mehr!"
featured: "Beliebt" featured: "Beliebt"
@ -234,7 +234,7 @@ removed: "Erfolgreich gelöscht"
removeAreYouSure: "Möchtest du „{x}“ wirklich entfernen?" removeAreYouSure: "Möchtest du „{x}“ wirklich entfernen?"
deleteAreYouSure: "Möchtest du „{x}“ wirklich löschen?" deleteAreYouSure: "Möchtest du „{x}“ wirklich löschen?"
resetAreYouSure: "Wirklich zurücksetzen?" resetAreYouSure: "Wirklich zurücksetzen?"
saved: "Gespeichert" saved: "Erfolgreich gespeichert"
messaging: "Chat" messaging: "Chat"
upload: "Hochladen" upload: "Hochladen"
keepOriginalUploading: "Originalbild speichern" keepOriginalUploading: "Originalbild speichern"
@ -295,7 +295,7 @@ avatar: "Profilbild"
banner: "Banner" banner: "Banner"
nsfw: "NSFW" nsfw: "NSFW"
whenServerDisconnected: "Bei Verbindungsverlust zum Server" whenServerDisconnected: "Bei Verbindungsverlust zum Server"
disconnectedFromServer: "Verbindung zum Server wurde getrennt" disconnectedFromServer: "Die Verbindung zum Server wurde getrennt"
reload: "Aktualisieren" reload: "Aktualisieren"
doNothing: "Ignorieren" doNothing: "Ignorieren"
reloadConfirm: "Seite neu laden?" reloadConfirm: "Seite neu laden?"
@ -307,7 +307,7 @@ normal: "Normal"
instanceName: "Name der Instanz" instanceName: "Name der Instanz"
instanceDescription: "Beschreibung der Instanz" instanceDescription: "Beschreibung der Instanz"
maintainerName: "Betreiber" maintainerName: "Betreiber"
maintainerEmail: "Betreiber-E-Mail" maintainerEmail: "Betreiber-Email"
tosUrl: "URL der Nutzungsbedingungen" tosUrl: "URL der Nutzungsbedingungen"
thisYear: "Jahr" thisYear: "Jahr"
thisMonth: "Monat" thisMonth: "Monat"
@ -325,20 +325,18 @@ disablingTimelinesInfo: "Administratoren und Moderatoren haben immer Zugriff auf
registration: "Registrieren" registration: "Registrieren"
enableRegistration: "Registration neuer Benutzer erlauben" enableRegistration: "Registration neuer Benutzer erlauben"
invite: "Einladen" invite: "Einladen"
proxyRemoteFiles: "Dateien fremder Instanzen durch Proxy leiten" driveCapacityPerLocalAccount: "Drive-Kapazität pro lokalem Benutzerkonto"
proxyRemoteFilesDescription: "Wenn diese Einstellung aktiviert ist, dann werden Dateien von fremdem Instanzen, welche entweder nicht lokal gespeichert sind oder durch Überschreiten des Speicherlimits gelöscht wurden, durch einen Proxy geleitet. Hierbei wird auch ein Vorschaubild generiert. \n Dies hat keinen Effekt auf den Speicherplatz des Servers."
driveCapacityPerLocalAccount: "Drive-Kapazität pro lokales Benutzerkonto"
driveCapacityPerRemoteAccount: "Drive-Kapazität pro Benutzer fremder Instanzen" driveCapacityPerRemoteAccount: "Drive-Kapazität pro Benutzer fremder Instanzen"
inMb: "In Megabytes" inMb: "In Megabytes"
iconUrl: "Icon-URL (favicon etc)" iconUrl: "Icon-URL (favicon etc)"
bannerUrl: "Banner-URL" bannerUrl: "Banner-URL"
backgroundImageUrl: "Hintergrundbild-URL" backgroundImageUrl: "Hintergrundbild-URL"
basicInfo: "Basisdaten" basicInfo: "Grundlegende Informationen"
pinnedUsers: "Angeheftete Benutzer" pinnedUsers: "Angeheftete Benutzer"
pinnedUsersDescription: "Gib durch Leerzeichen getrennte Benutzer an, die an die \"Erkunden\"-Seite angeheftet werden sollen." pinnedUsersDescription: "Gib durch Leerzeichen getrennte Benutzer an, die an die \"Erkunden\"-Seite angeheftet werden sollen."
pinnedPages: "Angeheftete Seiten" pinnedPages: "Angeheftete Seiten"
pinnedPagesDescription: "Gib durch Leerzeilen getrennte Pfäde zu Seiten an, die du an die Startseite dieser Instanz anheften möchtest.\n" pinnedPagesDescription: "Gib durch Leerzeilen getrennte Pfäde zu Seiten an, die an die Startseite dieser Instanz angeheftet werden sollen.\n"
pinnedClipId: "ID des angehefteten Clips" pinnedClipId: "ID des anzuheftenden Clips"
pinnedNotes: "Angeheftete Notizen" pinnedNotes: "Angeheftete Notizen"
hcaptcha: "hCaptcha" hcaptcha: "hCaptcha"
enableHcaptcha: "hCaptcha aktivieren" enableHcaptcha: "hCaptcha aktivieren"
@ -348,14 +346,14 @@ recaptcha: "reCAPTCHA"
enableRecaptcha: "reCAPTCHA aktivieren" enableRecaptcha: "reCAPTCHA aktivieren"
recaptchaSiteKey: "Site key" recaptchaSiteKey: "Site key"
recaptchaSecretKey: "Secret key" recaptchaSecretKey: "Secret key"
avoidMultiCaptchaConfirm: "Das Verwenden von mehreren Captcha-Systemen kann zu Störungen führen. Möchtest du die anderen Systeme deaktivieren? Du kannst mehrere Systeme aktiviert lassen, in dem du auf Abbrechen drückst." avoidMultiCaptchaConfirm: "Das Verwenden von mehreren Captcha-Systemen kann zu Störungen führen. Sollen die anderen Systeme deaktiviert werden? Durch Abbrechen können mehrere Systeme aktiviert bleiben."
antennas: "Antennen" antennas: "Antennen"
manageAntennas: "Antennen verwalten" manageAntennas: "Antennen verwalten"
name: "Name" name: "Name"
antennaSource: "Antennenquelle" antennaSource: "Antennenquelle"
antennaKeywords: "Zu beobachtende Schlüsselwörter" antennaKeywords: "Zu beobachtende Schlüsselwörter"
antennaExcludeKeywords: "Zu ignorierende Schlüsselwörter" antennaExcludeKeywords: "Zu ignorierende Schlüsselwörter"
antennaKeywordsDescription: "Mit Leerzeichen für eine \"UND\"-Verknüpfung trennen, durch Zeilenumbrüche für eine \"ODER\"-Verknüpfung trennen" antennaKeywordsDescription: "Zum Nutzen einer \"UND\"-Verknüpfung Einträge mit Leerzeichen trennen, zum Nutzen einer \"ODER\"-Verknüpfung Einträge mit einem Zeilenumbruch trennen"
notifyAntenna: "Über neue Notizen benachrichtigen" notifyAntenna: "Über neue Notizen benachrichtigen"
withFileAntenna: "Nur Notizen mit Dateien" withFileAntenna: "Nur Notizen mit Dateien"
enableServiceworker: "ServiceWorker aktivieren" enableServiceworker: "ServiceWorker aktivieren"
@ -376,14 +374,14 @@ recentlyDiscoveredUsers: "Vor kurzem gefundene Benutzer"
exploreUsersCount: "Es gibt {count} Benutzer" exploreUsersCount: "Es gibt {count} Benutzer"
exploreFediverse: "Das Fediverse erkunden" exploreFediverse: "Das Fediverse erkunden"
popularTags: "Beliebte Schlagwörter" popularTags: "Beliebte Schlagwörter"
userList: "Listen" userList: "Liste"
about: "Über" about: "Über"
aboutMisskey: "Über Misskey" aboutMisskey: "Über Misskey"
administrator: "Administrator" administrator: "Administrator"
token: "Token" token: "Token"
twoStepAuthentication: "Zwei-Faktor-Authentifizierung" twoStepAuthentication: "Zwei-Faktor-Authentifizierung"
moderator: "Moderator" moderator: "Moderator"
nUsersMentioned: "{n} Benutzer reden darüber" nUsersMentioned: "Von {n} Benutzern erwähnt"
securityKey: "Sicherheitsschlüssel" securityKey: "Sicherheitsschlüssel"
securityKeyName: "Schlüsselname" securityKeyName: "Schlüsselname"
registerSecurityKey: "Sicherheitsschlüssel registrieren" registerSecurityKey: "Sicherheitsschlüssel registrieren"
@ -391,7 +389,7 @@ lastUsed: "Zuletzt benutzt"
unregister: "Deaktivieren" unregister: "Deaktivieren"
passwordLessLogin: "Passwortloses Anmelden einrichten" passwordLessLogin: "Passwortloses Anmelden einrichten"
resetPassword: "Passwort zurücksetzen" resetPassword: "Passwort zurücksetzen"
newPasswordIs: "Das neue Passwort ist \"{password}\"" newPasswordIs: "Das neue Passwort ist „{password}“"
reduceUiAnimation: "Animationen der Benutzeroberfläche reduzieren" reduceUiAnimation: "Animationen der Benutzeroberfläche reduzieren"
share: "Teilen" share: "Teilen"
notFound: "Nicht gefunden" notFound: "Nicht gefunden"
@ -407,7 +405,7 @@ close: "Schließen"
group: "Gruppe" group: "Gruppe"
groups: "Gruppen" groups: "Gruppen"
createGroup: "Gruppe erstellen" createGroup: "Gruppe erstellen"
ownedGroups: "Eigene Gruppen" ownedGroups: "Meine Gruppen"
joinedGroups: "Beigetretene Gruppen" joinedGroups: "Beigetretene Gruppen"
invites: "Einladungen" invites: "Einladungen"
groupName: "Gruppenname" groupName: "Gruppenname"
@ -415,30 +413,29 @@ members: "Mitglieder"
transfer: "Übertragen" transfer: "Übertragen"
messagingWithUser: "Privatchat" messagingWithUser: "Privatchat"
messagingWithGroup: "Gruppenchat" messagingWithGroup: "Gruppenchat"
title: "Betreff" title: "Titel"
text: "Text" text: "Text"
enable: "Aktivieren" enable: "Aktivieren"
next: "Weiter" next: "Weiter"
retype: "Erneut eingeben" retype: "Erneut eingeben"
noteOf: "Notiz von {user}" noteOf: "Notiz von {user}"
inviteToGroup: "Zu Gruppe einladen" inviteToGroup: "Zu Gruppe einladen"
maxNoteTextLength: "Maximale Länge von Notizen" quoteAttached: "Zitat"
quoteAttached: "Zitiert" quoteQuestion: "Als Zitat anhängen?"
quoteQuestion: "Als Zitat anfügen?" noMessagesYet: "Noch keine Nachrichten vorhanden"
noMessagesYet: "Noch keine Nachrichten"
newMessageExists: "Du hast eine neue Nachricht" newMessageExists: "Du hast eine neue Nachricht"
onlyOneFileCanBeAttached: "Es kann pro Nachricht nur eine Datei angehängt werden" onlyOneFileCanBeAttached: "Es kann pro Nachricht nur eine Datei angehängt werden"
signinRequired: "Anmeldung erforderlich" signinRequired: "Bitte melde dich an"
invitations: "Einladungen" invitations: "Einladungen"
invitationCode: "Einladungscode" invitationCode: "Einladungscode"
checking: "Wird überprüft..." checking: "Wird überprüft"
available: "Verfügbar" available: "Verfügbar"
unavailable: "Unverfügbar" unavailable: "Unverfügbar"
usernameInvalidFormat: "Klein- und Großbuchstaben, Zahlen sowie Unterstriche sind verwendbar." usernameInvalidFormat: "Du kannst Klein- und Großbuchstaben, Zahlen sowie Unterstriche verwenden"
tooShort: "Zu kurz" tooShort: "Zu kurz"
tooLong: "Zu lang" tooLong: "Zu lang"
weakPassword: "Schwaches Passwort" weakPassword: "Schwaches Passwort"
normalPassword: "Normales Passwort" normalPassword: "Durchschnittliches Passwort"
strongPassword: "Starkes Passwort" strongPassword: "Starkes Passwort"
passwordMatched: "Stimmt überein" passwordMatched: "Stimmt überein"
passwordNotMatched: "Stimmt nicht überein" passwordNotMatched: "Stimmt nicht überein"
@ -454,18 +451,18 @@ useOsNativeEmojis: "Eingebaute Emojis des Betriebssystems benutzen"
disableDrawer: "Keine ausfahrbaren Menüs verwenden" disableDrawer: "Keine ausfahrbaren Menüs verwenden"
youHaveNoGroups: "Keine Gruppen vorhanden" youHaveNoGroups: "Keine Gruppen vorhanden"
joinOrCreateGroup: "Lass dich zu einer Gruppe einladen oder erstelle deine eigene." joinOrCreateGroup: "Lass dich zu einer Gruppe einladen oder erstelle deine eigene."
noHistory: "Kein Verlauf" noHistory: "Kein Verlauf gefunden"
signinHistory: "Anmeldungsverlauf" signinHistory: "Anmeldungsverlauf"
disableAnimatedMfm: "MFM, die Animationen enthalten, deaktivieren" disableAnimatedMfm: "MFM, die Animationen enthalten, deaktivieren"
doing: "In Bearbeitung..." doing: "In Bearbeitung"
category: "Kategorie" category: "Kategorie"
tags: "Schlagwörter" tags: "Schlagwörter"
docSource: "Quelle dieses Dokuments" docSource: "Quellcode dieses Dokuments"
createAccount: "Benutzerkonto erstellen" createAccount: "Benutzerkonto erstellen"
existingAccount: "Bestehendes Benutzerkonto" existingAccount: "Bestehendes Benutzerkonto"
regenerate: "Regenerieren" regenerate: "Regenerieren"
fontSize: "Schriftgröße" fontSize: "Schriftgröße"
noFollowRequests: "Du hast keine ausstehende Follow-Anfragen" noFollowRequests: "Keine ausstehenden Follow-Anfragen vorhanden"
openImageInNewTab: "Bilder in neuem Tab öffnen" openImageInNewTab: "Bilder in neuem Tab öffnen"
dashboard: "Dashboard" dashboard: "Dashboard"
local: "Lokal" local: "Lokal"
@ -476,25 +473,25 @@ dayOverDayChanges: "Veränderung zu Gestern"
appearance: "Aussehen" appearance: "Aussehen"
clientSettings: "Client-Einstellungen" clientSettings: "Client-Einstellungen"
accountSettings: "Benutzerkonto-Einstellungen" accountSettings: "Benutzerkonto-Einstellungen"
promotion: "Hervorgehoben" promotion: "Werbung"
promote: "Hervorheben" promote: "Werbung schalten"
numberOfDays: "Anzahl der Tage" numberOfDays: "Anzahl der Tage"
hideThisNote: "Diese Notiz verstecken" hideThisNote: "Diese Notiz verstecken"
showFeaturedNotesInTimeline: "Beliebte Notizen in Chronik anzeigen" showFeaturedNotesInTimeline: "Beliebte Notizen in der Chronik anzeigen"
objectStorage: "Objektspeicher" objectStorage: "Objektspeicher"
useObjectStorage: "Objektspeicher verwenden" useObjectStorage: "Objektspeicher verwenden"
objectStorageBaseUrl: "Basis-URL" objectStorageBaseUrl: "Basis-URL"
objectStorageBaseUrlDesc: "Als Referenz verwendete URL. Verwendest du einen CDN oder Proxy, gib dessen URL an. S3: 'https://<bucket>.s3.amazonaws.com', GCS: 'https://storage.googleapis.com/<bucket>' etc." objectStorageBaseUrlDesc: "Die als Referenz verwendete URL. Verwendest du einen CDN oder Proxy, gib dessen URL an. Für S3 verwende 'https://<bucket>.s3.amazonaws.com'. Für GCS o.ä. verwende 'https://storage.googleapis.com/<bucket>'."
objectStorageBucket: "Bucket" objectStorageBucket: "Bucket"
objectStorageBucketDesc: "Bitte gib den Bucket-Namen an, der bei deinem Anbieter verwendet wird." objectStorageBucketDesc: "Bitte gib den Namen des Buckets an, der bei deinem Anbieter verwendet wird."
objectStoragePrefix: "Prefix" objectStoragePrefix: "Prefix"
objectStoragePrefixDesc: "Dateien werden in Ordnern unter diesem Prefix gespeichert." objectStoragePrefixDesc: "Dateien werden in Ordnern unter diesem Prefix gespeichert."
objectStorageEndpoint: "Endpoint" objectStorageEndpoint: "Endpoint"
objectStorageEndpointDesc: "Im Falle von S3 leerlassen, für andere Anbieter den relevanten Endpoint im Format \"<host>\" oder \"<host>:<port>\" angeben." objectStorageEndpointDesc: "Im Falle von S3 leerlassen, für andere Anbieter den relevanten Endpoint im Format „<host>“ oder „<host>:<port>“ angeben."
objectStorageRegion: "Region" objectStorageRegion: "Region"
objectStorageRegionDesc: "Gib eine Region wie z.B. \"xx-east-1\" an. Falls dein Anbieter nicht zwischen Regionen unterscheidet, lass dieses Feld leer oder gib \"us-east-1\" an." objectStorageRegionDesc: "Gib eine Region wie z.B. „xx-east-1“ an. Falls dein Anbieter nicht zwischen Regionen unterscheidet, lass dieses Feld leer oder gib „us-east-1“ an."
objectStorageUseSSL: "SSL verwenden" objectStorageUseSSL: "SSL verwenden"
objectStorageUseSSLDesc: "Deaktiviere dies, falls du für die API-Verbindungen kein HTTPS verwenden wirst" objectStorageUseSSLDesc: "Deaktiviere dies, falls du für API-Verbindungen kein HTTPS verwenden wirst"
objectStorageUseProxy: "Über Proxy verbinden" objectStorageUseProxy: "Über Proxy verbinden"
objectStorageUseProxyDesc: "Deaktiviere dies, falls du keinen Proxy für den Objektspeicher verwenden wirst" objectStorageUseProxyDesc: "Deaktiviere dies, falls du keinen Proxy für den Objektspeicher verwenden wirst"
objectStorageSetPublicRead: "Bei Upload auf \"public-read\" stellen" objectStorageSetPublicRead: "Bei Upload auf \"public-read\" stellen"
@ -505,7 +502,7 @@ newNoteRecived: "Es gibt neue Notizen"
sounds: "Töne" sounds: "Töne"
listen: "Anhören" listen: "Anhören"
none: "Nichts" none: "Nichts"
showInPage: "In Seite anzeigen" showInPage: "In einer Seite anzeigen"
popout: "Pop-Up" popout: "Pop-Up"
volume: "Lautstärke" volume: "Lautstärke"
masterVolume: "Gesamtlautstärke" masterVolume: "Gesamtlautstärke"
@ -524,7 +521,7 @@ sort: "Sortieren"
ascendingOrder: "Aufsteigende Reihenfolge" ascendingOrder: "Aufsteigende Reihenfolge"
descendingOrder: "Absteigende Reihenfolge" descendingOrder: "Absteigende Reihenfolge"
scratchpad: "Testumgebung" scratchpad: "Testumgebung"
scratchpadDescription: "Die Testumgebung bietet eine Umgebung für AiScript-Experimente. Dort kannst du AiScript schreiben, ausführen sowie dessen Auswirkungen auf Misskey überprüfen." scratchpadDescription: "Die Testumgebung bietet einen Bereich für AiScript-Experimente. Dort kannst du AiScript schreiben, ausführen sowie dessen Auswirkungen auf Misskey überprüfen."
output: "Ausgabe" output: "Ausgabe"
script: "Skript" script: "Skript"
disablePagesScript: "AiScript auf Seiten deaktivieren" disablePagesScript: "AiScript auf Seiten deaktivieren"
@ -547,14 +544,14 @@ addedRelays: "Hinzugefügte Relays"
serviceworkerInfo: "Muss für Push-Benachrichtigungen aktiviert sein." serviceworkerInfo: "Muss für Push-Benachrichtigungen aktiviert sein."
deletedNote: "Gelöschte Notiz" deletedNote: "Gelöschte Notiz"
invisibleNote: "Private Notiz" invisibleNote: "Private Notiz"
enableInfiniteScroll: "Automatisch mehr Notizen laden" enableInfiniteScroll: "Automatisch mehr laden"
visibility: "Sichtbarkeit" visibility: "Sichtbarkeit"
poll: "Umfrage" poll: "Umfrage"
useCw: "Inhaltswarnung verwenden" useCw: "Inhaltswarnung verwenden"
enablePlayer: "Video-Player öffnen" enablePlayer: "Video-Player öffnen"
disablePlayer: "Video-Player schließen" disablePlayer: "Video-Player schließen"
expandTweet: "Tweet ausklappen" expandTweet: "Tweet ausklappen"
themeEditor: "Farbthemen-Editor" themeEditor: "Farbschema-Editor"
description: "Beschreibung" description: "Beschreibung"
describeFile: "Beschreibung hinzufügen" describeFile: "Beschreibung hinzufügen"
enterFileDescription: "Beschreibung eingeben" enterFileDescription: "Beschreibung eingeben"
@ -590,13 +587,13 @@ smtpHost: "Host"
smtpPort: "Port" smtpPort: "Port"
smtpUser: "Benutzername" smtpUser: "Benutzername"
smtpPass: "Passwort" smtpPass: "Passwort"
emptyToDisableSmtpAuth: "Benutzername und Passwort leer lassen um SMTP-Verifizierung zu deaktivieren" emptyToDisableSmtpAuth: "Benutzername und Passwort leer lassen, um SMTP-Verifizierung zu deaktivieren"
smtpSecure: "Für SMTP-Verbindungen implizit SSL/TLS verwenden" smtpSecure: "Für SMTP-Verbindungen implizit SSL/TLS verwenden"
smtpSecureInfo: "Schalte dies aus, falls du STARTTLS verwendest" smtpSecureInfo: "Schalte dies aus, falls du STARTTLS verwendest."
testEmail: "Email-Versand testen" testEmail: "Emailversand testen"
wordMute: "Wort-Stummschaltung" wordMute: "Wortstummschaltung"
regexpError: "Regular Expression error" regexpError: "Fehler in einem regulären Ausdruck"
regexpErrorDescription: "Error in the regular expression on line {line} in your {tab} word mutes:" regexpErrorDescription: "Im regulären Ausdruck deiner {tab}en Wortstummschaltungen ist ein Fehler aufgetreten:"
instanceMute: "Instanzstummschaltungen" instanceMute: "Instanzstummschaltungen"
userSaysSomething: "{name} hat etwas gesagt" userSaysSomething: "{name} hat etwas gesagt"
makeActive: "Aktivieren" makeActive: "Aktivieren"
@ -610,11 +607,11 @@ database: "Datenbank"
channel: "Kanäle" channel: "Kanäle"
create: "Erstellen" create: "Erstellen"
notificationSetting: "Benachrichtigungseinstellungen" notificationSetting: "Benachrichtigungseinstellungen"
notificationSettingDesc: "Wähle die Art der anzuzeigenden Benachrichtigung" notificationSettingDesc: "Wähle die Art der anzuzeigenden Benachrichtigungen."
useGlobalSetting: "Globale Einstellung verwenden" useGlobalSetting: "Globale Einstellung verwenden"
useGlobalSettingDesc: "Ist dies eingeschaltet, so werden die Benachrichtigungseinstellungen deines Benutzerkontos verwendet. Wenn dies ausgeschaltet ist, können individuelle Einstellungen vorgenommen werden." useGlobalSettingDesc: "Ist diese Option aktiviert, werden die Benachrichtigungseinstellungen deines Benutzerkontos verwendet. Durch ausschalten dieser Option können individuelle Einstellungen vorgenommen werden."
other: "Andere" other: "Anderes"
regenerateLoginToken: "Anmeldungstoken regenerieren" regenerateLoginToken: "Anmeldetoken regenerieren"
regenerateLoginTokenDescription: "Den zur Anmeldung intern verwendeten Token regenerieren. Normalerweise wird dies nicht benötigt. Bei Regeneration werden alle Geräte ausgeloggt." regenerateLoginTokenDescription: "Den zur Anmeldung intern verwendeten Token regenerieren. Normalerweise wird dies nicht benötigt. Bei Regeneration werden alle Geräte ausgeloggt."
setMultipleBySeparatingWithSpace: "Trenne Elemente durch ein Leerzeichen um mehrere Einstellungen zu kofigurieren." setMultipleBySeparatingWithSpace: "Trenne Elemente durch ein Leerzeichen um mehrere Einstellungen zu kofigurieren."
fileIdOrUrl: "Datei-ID oder URL" fileIdOrUrl: "Datei-ID oder URL"
@ -624,7 +621,7 @@ abuseReports: "Meldungen"
reportAbuse: "Melden" reportAbuse: "Melden"
reportAbuseOf: "{name} melden" reportAbuseOf: "{name} melden"
fillAbuseReportDescription: "Bitte gib zusätzliche Informationen zu dieser Meldung an. Falls es sich um eine spezielle Notiz handelt, bitte gib dessen URL an." fillAbuseReportDescription: "Bitte gib zusätzliche Informationen zu dieser Meldung an. Falls es sich um eine spezielle Notiz handelt, bitte gib dessen URL an."
abuseReported: "Die Meldung wurde versendet. Vielen Dank." abuseReported: "Deine Meldung wurde versendet. Vielen Dank."
reporter: "Melder" reporter: "Melder"
reporteeOrigin: "Herkunft des Gemeldeten" reporteeOrigin: "Herkunft des Gemeldeten"
reporterOrigin: "Herkunft des Meldenden" reporterOrigin: "Herkunft des Meldenden"
@ -637,18 +634,18 @@ openInSideView: "In Seitenansicht öffnen"
defaultNavigationBehaviour: "Standardnavigationsverhalten" defaultNavigationBehaviour: "Standardnavigationsverhalten"
editTheseSettingsMayBreakAccount: "Bei Bearbeitung dieser Einstellungen besteht die Gefahr, dein Benutzerkonto zu beschädigen." editTheseSettingsMayBreakAccount: "Bei Bearbeitung dieser Einstellungen besteht die Gefahr, dein Benutzerkonto zu beschädigen."
instanceTicker: "Instanz-Informationen von Notizen" instanceTicker: "Instanz-Informationen von Notizen"
waitingFor: "Warte auf {x}" waitingFor: "Warte auf {x}"
random: "Zufällig" random: "Zufällig"
system: "System" system: "System"
switchUi: "UI wechseln" switchUi: "UI wechseln"
desktop: "Desktop" desktop: "Desktop"
clip: "Clip" clip: "Clip erstellen"
createNew: "Neu erstellen" createNew: "Neu erstellen"
optional: "Optional" optional: "Optional"
createNewClip: "Neuen Clip erstellen" createNewClip: "Neuen Clip erstellen"
public: "Öffentlich" public: "Öffentlich"
i18nInfo: "Misskey wird durch freiwillige Helfer in viele verschiedene Sprachen übersetzt. Auf {link} kannst du mithelfen." i18nInfo: "Misskey wird durch freiwillige Helfer in viele verschiedene Sprachen übersetzt. Auf {link} kannst du mithelfen."
manageAccessTokens: "Zugriffstoken verwalten" manageAccessTokens: "Zugriffstokens verwalten"
accountInfo: "Benutzerkonto-Informationen" accountInfo: "Benutzerkonto-Informationen"
notesCount: "Anzahl der Notizen" notesCount: "Anzahl der Notizen"
repliesCount: "Anzahl gesendeter Antworten" repliesCount: "Anzahl gesendeter Antworten"
@ -663,15 +660,15 @@ pollVotesCount: "Anzahl gesendeter Antworten auf Umfragen"
pollVotedCount: "Anzahl erhaltener Antworten auf Umfragen" pollVotedCount: "Anzahl erhaltener Antworten auf Umfragen"
yes: "Ja" yes: "Ja"
no: "Nein" no: "Nein"
driveFilesCount: "Anzahl an Drive-Dateien" driveFilesCount: "Anzahl der Dateien in Drive"
driveUsage: "Drive-Auslastung" driveUsage: "Drive-Auslastung"
noCrawle: "Crawler-Indexierung ablehnen" noCrawle: "Crawler-Indexierung ablehnen"
noCrawleDescription: "Suchmaschinen bitten, die eigene Profilseite, Notizen, Seiten usw. nicht zu indexieren" noCrawleDescription: "Suchmaschinen bitten, die eigene Profilseite, Notizen, Seiten usw. nicht zu indexieren."
lockedAccountInfo: "Auch wenn du Follow-Anfragen auf manuelle Bestätigung setzt, wird jeder deine Notizen öffentlich sehen können, sofern du die Notizsichtbarkeit nicht auf \"Nur Follower\" setzt." lockedAccountInfo: "Auch wenn du Follow-Anfragen auf manuelle Bestätigung setzt, wird jede deiner Notizen öffentlich sichtbar sein, sofern du ihre Notizsichtbarkeit nicht auf \"Nur Follower\" setzt."
alwaysMarkSensitive: "Medien standardmäßig als NSFW markieren" alwaysMarkSensitive: "Medien standardmäßig als NSFW markieren"
loadRawImages: "Anstatt Vorschaubilder immer Originalbilder anzeigen" loadRawImages: "Anstatt Vorschaubilder immer Originalbilder anzeigen"
disableShowingAnimatedImages: "Animierte Bilder nicht abspielen" disableShowingAnimatedImages: "Animierte Bilder nicht abspielen"
verificationEmailSent: "Eine Verifizierungsnachricht wurde versendet. Besuche den dort enthaltenen Link, um die Verifizierung abzuschließen." verificationEmailSent: "Eine Bestätigungsmail wurde an deine Email-Adresse versendet. Besuche den dort enthaltenen Link, um die Verifizierung abzuschließen."
notSet: "Nicht konfiguriert" notSet: "Nicht konfiguriert"
emailVerified: "Email-Adresse bestätigt" emailVerified: "Email-Adresse bestätigt"
noteFavoritesCount: "Anzahl an als Favorit markierter Notizen" noteFavoritesCount: "Anzahl an als Favorit markierter Notizen"
@ -682,12 +679,12 @@ useSystemFont: "Standardschriftart des Systems verwenden"
clips: "Clips" clips: "Clips"
experimentalFeatures: "Experimentelle Funktionalitäten" experimentalFeatures: "Experimentelle Funktionalitäten"
developer: "Entwickler" developer: "Entwickler"
makeExplorable: "Benutzerkonto in \"Erkunden\" sichtbar machen" makeExplorable: "Benutzerkonto in „Erkunden“ sichtbar machen"
makeExplorableDescription: "Wenn diese Option deaktiviert ist, ist dein Benutzerkonto nicht im \"Erkunden\"-Bereich sichtbar." makeExplorableDescription: "Wenn diese Option deaktiviert ist, ist dein Benutzerkonto nicht im „Erkunden“-Bereich sichtbar."
showGapBetweenNotesInTimeline: "Abstände zwischen Notizen auf der Chronik anzeigen" showGapBetweenNotesInTimeline: "Abstände zwischen Notizen auf der Chronik anzeigen"
duplicate: "Duplizieren" duplicate: "Duplizieren"
left: "Links" left: "Links"
center: "Mitte" center: "Mittig"
wide: "Breit" wide: "Breit"
narrow: "Schmal" narrow: "Schmal"
reloadToApplySetting: "Diese Einstellung tritt nach einer Aktualisierung der Seite in Kraft. Jetzt aktualisieren?" reloadToApplySetting: "Diese Einstellung tritt nach einer Aktualisierung der Seite in Kraft. Jetzt aktualisieren?"
@ -698,19 +695,19 @@ onlineUsersCount: "{n} Benutzer sind online"
nUsers: "{n} Benutzer" nUsers: "{n} Benutzer"
nNotes: "{n} Notizen" nNotes: "{n} Notizen"
sendErrorReports: "Fehlerberichte senden" sendErrorReports: "Fehlerberichte senden"
sendErrorReportsDescription: "Ist diese Option aktiviert, so werden beim Auftreten von Fehlern detaillierte Fehlerinformationen an Misskey weitergegeben, was zur Verbesserung der Qualität von Misskey beiträgt.\nEnthalten in diesen Informationen sind u.a. die Version deines Betriebssystems, welchen Browser du verwendest und ein Verlauf deiner Aktivitäten." sendErrorReportsDescription: "Ist diese Option aktiviert, so werden beim Auftreten von Fehlern detaillierte Fehlerinformationen an Misskey weitergegeben, was zur Verbesserung der Qualität von Misskey beiträgt.\nEnthalten in diesen Informationen sind u.a. die Version deines Betriebssystems, welchen Browser du verwendest und ein Verlauf deiner Aktivitäten innerhalb Misskey."
myTheme: "Mein Farbthema" myTheme: "Mein Farbschema"
backgroundColor: "Hintergrundfarbe" backgroundColor: "Hintergrundfarbe"
accentColor: "Akzentfarbe" accentColor: "Akzentfarbe"
textColor: "Textfarbe" textColor: "Textfarbe"
saveAs: "Speichern als…" saveAs: "Speichern als …"
advanced: "Fortgeschritten" advanced: "Fortgeschritten"
value: "Wert" value: "Wert"
createdAt: "Erstellt am" createdAt: "Erstellt am"
updatedAt: "Zuletzt geändert am" updatedAt: "Zuletzt geändert am"
saveConfirm: "Änderungen speichern?" saveConfirm: "Änderungen speichern?"
deleteConfirm: "Wirklich löschen?" deleteConfirm: "Wirklich löschen?"
invalidValue: "Ungültiger Wert." invalidValue: "Dieser Wert ist ungültig."
registry: "Registry" registry: "Registry"
closeAccount: "Benutzerkonto schließen" closeAccount: "Benutzerkonto schließen"
currentVersion: "Momentane Version" currentVersion: "Momentane Version"
@ -723,11 +720,11 @@ inUse: "Verwendet"
editCode: "Code bearbeiten" editCode: "Code bearbeiten"
apply: "Anwenden" apply: "Anwenden"
receiveAnnouncementFromInstance: "Benachrichtigungen von dieser Instanz empfangen" receiveAnnouncementFromInstance: "Benachrichtigungen von dieser Instanz empfangen"
emailNotification: "E-Mail-Benachrichtigungen" emailNotification: "Email-Benachrichtigungen"
publish: "Veröffentlichen" publish: "Veröffentlichen"
inChannelSearch: "In Kanal suchen" inChannelSearch: "In Kanal suchen"
useReactionPickerForContextMenu: "Reaktionsauswahl durch Rechtsklick öffnen" useReactionPickerForContextMenu: "Reaktionsauswahl durch Rechtsklick öffnen"
typingUsers: "{users} ist/sind am schreiben..." typingUsers: "{users} ist/sind am schreiben"
jumpToSpecifiedDate: "Zu bestimmtem Datum springen" jumpToSpecifiedDate: "Zu bestimmtem Datum springen"
showingPastTimeline: "Es wird eine alte Chronik angezeigt" showingPastTimeline: "Es wird eine alte Chronik angezeigt"
clear: "Zurückkehren" clear: "Zurückkehren"
@ -737,19 +734,19 @@ unlikeConfirm: "\"Gefällt mir\" wirklich entfernen?"
fullView: "Vollansicht" fullView: "Vollansicht"
quitFullView: "Vollansicht verlassen" quitFullView: "Vollansicht verlassen"
addDescription: "Beschreibung hinzufügen" addDescription: "Beschreibung hinzufügen"
userPagePinTip: "Um Notizen hier erscheinen zu lassen, drücke \"Anheften\" im Menü individueller Notizen." userPagePinTip: "Um Notizen hier erscheinen zu lassen, drücke \"An dein Profil anheften\" im Menü individueller Notizen."
notSpecifiedMentionWarning: "Diese Notiz enthält Erwähnungen von Nutzern, die nicht als Empfänger ausgewählt sind" notSpecifiedMentionWarning: "Diese Notiz enthält Erwähnungen von Nutzern, die nicht als Empfänger ausgewählt sind"
info: "Über" info: "Über"
userInfo: "Benutzerinformation" userInfo: "Benutzerinformation"
unknown: "Unbekannt" unknown: "Unbekannt"
onlineStatus: "Online-Status" onlineStatus: "Onlinestatus"
hideOnlineStatus: "Online-Status verbergen" hideOnlineStatus: "Onlinestatus verbergen"
hideOnlineStatusDescription: "Das Verbergen deines Online-Statuses reduziert die Nützlichkeit von Funktionen wie der Suche." hideOnlineStatusDescription: "Das Verbergen deines Onlinestatuses reduziert die Nützlichkeit von Funktionen wie der Suche."
online: "Online" online: "Online"
active: "Aktiv" active: "Aktiv"
offline: "Offline" offline: "Offline"
notRecommended: "Nicht empfohlen" notRecommended: "Nicht empfohlen"
botProtection: "Bot-Schutz" botProtection: "Schutz vor Bots"
instanceBlocking: "Blockierte Instanzen" instanceBlocking: "Blockierte Instanzen"
selectAccount: "Benutzerkonto auswählen" selectAccount: "Benutzerkonto auswählen"
switchAccount: "Konto wechseln" switchAccount: "Konto wechseln"
@ -761,9 +758,9 @@ administration: "Verwaltung"
accounts: "Benutzerkonten" accounts: "Benutzerkonten"
switch: "Wechseln" switch: "Wechseln"
noMaintainerInformationWarning: "Betreiberinformationen sind nicht konfiguriert." noMaintainerInformationWarning: "Betreiberinformationen sind nicht konfiguriert."
noBotProtectionWarning: "Bot-Schutz ist nicht konfiguriert." noBotProtectionWarning: "Schutz vor Bots ist nicht konfiguriert."
configure: "Konfigurieren" configure: "Konfigurieren"
postToGallery: "Neuen Galerie-Beitrag erstellen" postToGallery: "Neuen Galeriebeitrag erstellen"
gallery: "Galerie" gallery: "Galerie"
recentPosts: "Neue Beiträge" recentPosts: "Neue Beiträge"
popularPosts: "Beliebte Beiträge" popularPosts: "Beliebte Beiträge"
@ -775,7 +772,7 @@ priority: "Priorität"
high: "Hoch" high: "Hoch"
middle: "Mittel" middle: "Mittel"
low: "Niedrig" low: "Niedrig"
emailNotConfiguredWarning: "Keine Email-Adresse hinterlegt" emailNotConfiguredWarning: "Keine Email-Adresse hinterlegt."
ratio: "Verhältnis" ratio: "Verhältnis"
previewNoteText: "Vorschau anzeigen" previewNoteText: "Vorschau anzeigen"
customCss: "Benutzerdefiniertes CSS" customCss: "Benutzerdefiniertes CSS"
@ -793,9 +790,9 @@ misskeyUpdated: "Misskey wurde aktualisiert!"
whatIsNew: "Änderungen anzeigen" whatIsNew: "Änderungen anzeigen"
translate: "Übersetzen" translate: "Übersetzen"
translatedFrom: "Aus {x} übersetzt" translatedFrom: "Aus {x} übersetzt"
accountDeletionInProgress: "Löschung des Benutzerkontos momentan in Bearbeitung" accountDeletionInProgress: "Die Löschung deines Benutzerkontos ist momentan in Bearbeitung."
usernameInfo: "Ein Name, durch den dein Benutzerkonto auf diesem Server identifiziert werden kann. Du kannst das Alphabet (a~z, A~Z), Ziffern (0~9) oder Unterstriche (_) verwenden. Benutzernamen können später nicht geändert werden." usernameInfo: "Ein Name, durch den dein Benutzerkonto auf diesem Server identifiziert werden kann. Du kannst das Alphabet (a~z, A~Z), Ziffern (0~9) oder Unterstriche (_) verwenden. Benutzernamen können später nicht geändert werden."
aiChanMode: "Ai Modus" aiChanMode: "Ai-Modus"
keepCw: "Inhaltswarnungen beibehalten" keepCw: "Inhaltswarnungen beibehalten"
pubSub: "Pub/Sub Benutzerkonten" pubSub: "Pub/Sub Benutzerkonten"
lastCommunication: "Letzte Kommunikation" lastCommunication: "Letzte Kommunikation"
@ -804,7 +801,7 @@ unresolved: "Ungelöst"
breakFollow: "Follower entfernen" breakFollow: "Follower entfernen"
itsOn: "Eingeschaltet" itsOn: "Eingeschaltet"
itsOff: "Ausgeschaltet" itsOff: "Ausgeschaltet"
emailRequiredForSignup: "Angaben einer Email-Adresse als benötigt markieren" emailRequiredForSignup: "Angabe einer Email-Adresse als benötigt markieren"
unread: "Ungelesen" unread: "Ungelesen"
filter: "Filter" filter: "Filter"
controlPanel: "Systemsteuerung" controlPanel: "Systemsteuerung"
@ -819,10 +816,10 @@ ffVisibilityDescription: "Konfiguriere wer sehen kann, wem du folgst sowie wer d
continueThread: "Weiteren Threadverlauf anzeigen" continueThread: "Weiteren Threadverlauf anzeigen"
deleteAccountConfirm: "Dein Benutzerkonto wird unwiderruflich gelöscht. Trotzdem fortfahren?" deleteAccountConfirm: "Dein Benutzerkonto wird unwiderruflich gelöscht. Trotzdem fortfahren?"
incorrectPassword: "Falsches Passwort." incorrectPassword: "Falsches Passwort."
voteConfirm: "Wirklich für \"{choice}\" abstimmen?" voteConfirm: "Wirklich für „{choice}“ abstimmen?"
hide: "Inhalt verbergen" hide: "Inhalt verbergen"
leaveGroup: "Gruppe verlassen" leaveGroup: "Gruppe verlassen"
leaveGroupConfirm: "Möchtest du \"{name}\" wirklich verlassen?" leaveGroupConfirm: "Möchtest du „{name}“ wirklich verlassen?"
useDrawerReactionPickerForMobile: "Auf mobilen Geräten ausfahrbare Reaktionsauswahl anzeigen" useDrawerReactionPickerForMobile: "Auf mobilen Geräten ausfahrbare Reaktionsauswahl anzeigen"
welcomeBackWithName: "Willkommen zurück, {name}" welcomeBackWithName: "Willkommen zurück, {name}"
clickToFinishEmailVerification: "Drücke bitte auf [{ok}], um die Email-Bestätigung abzuschließen." clickToFinishEmailVerification: "Drücke bitte auf [{ok}], um die Email-Bestätigung abzuschließen."
@ -833,6 +830,16 @@ auto: "Automatisch"
themeColor: "Instanzfarbe" themeColor: "Instanzfarbe"
size: "Größe" size: "Größe"
numberOfColumn: "Spaltenanzahl" numberOfColumn: "Spaltenanzahl"
searchByGoogle: "Googlen"
instanceDefaultLightTheme: "Instanzweites Standardfarbschema (Hell)"
instanceDefaultDarkTheme: "Instanzweites Standardfarbschema (Dunkel)"
instanceDefaultThemeDescription: "Gib den Farbschemencode im Objektformat ein."
mutePeriod: "Stummschaltungsdauer"
indefinitely: "Dauerhaft"
tenMinutes: "10 Minuten"
oneHour: "Eine Stunde"
oneDay: "Einen Tag"
oneWeek: "Eine Woche"
_emailUnavailable: _emailUnavailable:
used: "Diese Email-Adresse wird bereits verwendet" used: "Diese Email-Adresse wird bereits verwendet"
format: "Das Format dieser Email-Adresse ist ungültig" format: "Das Format dieser Email-Adresse ist ungültig"
@ -845,20 +852,20 @@ _ffVisibility:
private: "Privat" private: "Privat"
_signup: _signup:
almostThere: "Fast geschafft" almostThere: "Fast geschafft"
emailAddressInfo: "Bitte gib deine Email-Adresse ein." emailAddressInfo: "Bitte gib deine Email-Adresse ein. Sie wird nicht öffentlich einsehbar sein."
emailSent: "An deine Email-Adresse ({email}) wurde soeben eine Bestätigungsmail geschickt. Bitte klicke auf den enthaltenen Link, um die Erstellung deines Benutzerkontos abzuschließen." emailSent: "An deine Email-Adresse ({email}) wurde soeben eine Bestätigungsmail geschickt. Bitte klicke auf den enthaltenen Link, um die Erstellung deines Benutzerkontos abzuschließen."
_accountDelete: _accountDelete:
accountDelete: "Benutzerkonto löschen" accountDelete: "Benutzerkonto löschen"
mayTakeTime: "Da die Löschung eines Benutzerkontos ein aufwendiger Prozess ist, kann dessen Dauer davon abhängen, wie viel Inhalt in diesem erstellt wurde oder wie viele Dateien hochgeladen wurden." mayTakeTime: "Da die Löschung eines Benutzerkontos ein aufwendiger Prozess ist, kann dessen Dauer davon abhängen, wie viel Inhalt von diesem erstellt wurde oder wie viele Dateien von diesem hochgeladen wurden."
sendEmail: "Sobald die Löschung abgeschlossen ist, wird an die mit ihm verknüpfte Email-Adresse eine Benachrichtigung versendet." sendEmail: "Sobald die Löschung abgeschlossen ist, wird an die mit ihm verknüpfte Email-Adresse eine Benachrichtigung versendet."
requestAccountDelete: "Löschung des Benutzerkontos anfordern" requestAccountDelete: "Löschung deines Benutzerkontos anfordern"
started: "Löschung wurde eingeleitet." started: "Die Löschung wurde eingeleitet."
inProgress: "Löschung in Bearbeitung" inProgress: "Löschung in Bearbeitung"
_ad: _ad:
back: "Zurück" back: "Zurück"
reduceFrequencyOfThisAd: "Diese Werbung weniger anzeigen" reduceFrequencyOfThisAd: "Diese Werbung weniger anzeigen"
_forgotPassword: _forgotPassword:
enterEmail: "Gib die Email-Adresse ein, mit der du dich registriert hast. An diese wird ein Link gesendet, mit der du dein Passwort zurücksetzen kannst." enterEmail: "Gib die Email-Adresse ein, mit der du dich registriert hast. An diese wird ein Link gesendet, mit dem du dein Passwort zurücksetzen kannst."
ifNoEmail: "Solltest du bei der Registrierung keine Email-Adresse angegeben haben, wende dich bitte an den Administrator." ifNoEmail: "Solltest du bei der Registrierung keine Email-Adresse angegeben haben, wende dich bitte an den Administrator."
contactAdmin: "Diese Instanz unterstützt die Verwendung von Email-Adressen nicht. Wende dich an den Administrator, um dein Passwort zurückzusetzen." contactAdmin: "Diese Instanz unterstützt die Verwendung von Email-Adressen nicht. Wende dich an den Administrator, um dein Passwort zurückzusetzen."
_gallery: _gallery:
@ -882,7 +889,7 @@ _registry:
domain: "Domain" domain: "Domain"
createKey: "Schlüssel erstellen" createKey: "Schlüssel erstellen"
_aboutMisskey: _aboutMisskey:
about: "Misskey ist Open-Source-Software die von syuilo seit 2014 entwickelt wird." about: "Misskey ist Open-Source-Software, welche von syuilo seit 2014 entwickelt wird."
contributors: "Hauptmitwirkende" contributors: "Hauptmitwirkende"
allContributors: "Alle Mitwirkenden" allContributors: "Alle Mitwirkenden"
source: "Quellcode" source: "Quellcode"
@ -899,13 +906,13 @@ _mfm:
intro: "MFM ist eine Misskey-exklusive Markup-Sprache, die in Misskey an vielen Stellen verwendet werden kann. Hier kannst du eine Liste von verfügbarer MFM-Syntax einsehen." intro: "MFM ist eine Misskey-exklusive Markup-Sprache, die in Misskey an vielen Stellen verwendet werden kann. Hier kannst du eine Liste von verfügbarer MFM-Syntax einsehen."
dummy: "Misskey erweitert die Welt des Fediverse" dummy: "Misskey erweitert die Welt des Fediverse"
mention: "Erwähnung" mention: "Erwähnung"
mentionDescription: "Mit At-Zeichen und Nutzername kann ein individueller Nutzer angegeben werden." mentionDescription: "Mit At-Zeichen und Benutzername kann ein individueller Nutzer angegeben werden."
hashtag: "Hashtag" hashtag: "Hashtag"
hashtagDescription: "Mit einer Raute und Text kann ein Hashtag angegeben werden." hashtagDescription: "Mit einer Raute und Text kann ein Hashtag angegeben werden."
url: "URL" url: "URL"
urlDescription: "Zeigt URLs an." urlDescription: "Zeigt URLs an."
link: "Link" link: "Link"
linkDescription: "Spezifische Textabschnitte als URL anzeigen." linkDescription: "Zeigt spezifische Textabschnitte als URL an."
bold: "Fett" bold: "Fett"
boldDescription: "Zeichen zur Betonung dicker erscheinen lassen." boldDescription: "Zeichen zur Betonung dicker erscheinen lassen."
small: "Klein" small: "Klein"
@ -929,19 +936,19 @@ _mfm:
flip: "Spiegelung" flip: "Spiegelung"
flipDescription: "Inhalt horizontal oder vertikal gespiegelt anzeigen." flipDescription: "Inhalt horizontal oder vertikal gespiegelt anzeigen."
jelly: "Animation (Dehnen)" jelly: "Animation (Dehnen)"
jellyDescription: "Verleiht dem Inhalt eine sich dehnende Animation." jellyDescription: "Verleiht Inhalt eine sich dehnende Animation."
tada: "Animation (Tada)" tada: "Animation (Tada)"
tadaDescription: "Verleiht eine Animation mit \"Tada!\"-Gefühl" tadaDescription: "Verleiht Inhalt eine Animation mit \"Tada!\"-Gefühl"
jump: "Animation (Sprung)" jump: "Animation (Sprung)"
jumpDescription: "Verleiht dem Inhalt eine springende Animation." jumpDescription: "Verleiht Inhalt eine springende Animation."
bounce: "Animation (Federn)" bounce: "Animation (Federn)"
bounceDescription: "Verleiht dem Inhalt eine federnde Animation." bounceDescription: "Verleiht Inhalt eine federnde Animation."
shake: "Animation (Zittern)" shake: "Animation (Zittern)"
shakeDescription: "Verleiht dem Inhalt eine zitternde Animation." shakeDescription: "Verleiht Inhalt eine zitternde Animation."
twitch: "Animation (Zucken)" twitch: "Animation (Zucken)"
twitchDescription: "Verleiht dem Inhalt eine sehr stark zuckende Animation." twitchDescription: "Verleiht Inhalt eine sehr stark zuckende Animation."
spin: "Animation (Rotieren)" spin: "Animation (Rotieren)"
spinDescription: "Verleiht dem Inhalt eine rotierende Animation." spinDescription: "Verleiht Inhalt eine rotierende Animation."
x2: "Groß" x2: "Groß"
x2Description: "Inhalte größer anzeigen." x2Description: "Inhalte größer anzeigen."
x3: "Sehr groß" x3: "Sehr groß"
@ -949,7 +956,7 @@ _mfm:
x4: "Unglaublich groß" x4: "Unglaublich groß"
x4Description: "Lässt Inhalte noch größer als größer als groß angezeigt werden." x4Description: "Lässt Inhalte noch größer als größer als groß angezeigt werden."
blur: "Weichzeichnen" blur: "Weichzeichnen"
blurDescription: "Inhalte durch Weihzeichnung verschwimmen lassen. Durch das Bewegen des Mauszeigers auf den Inhalt wird er klar angezeigt." blurDescription: "Inhalte durch Weihzeichnung verschwimmen lassen. Durch das Bewegen des Mauszeigers über den Inhalt wird er klar angezeigt."
font: "Schriftart" font: "Schriftart"
fontDescription: "Setzt die Schriftart des Inhaltes fest." fontDescription: "Setzt die Schriftart des Inhaltes fest."
rainbow: "Regenbogen" rainbow: "Regenbogen"
@ -957,7 +964,7 @@ _mfm:
sparkle: "Glitzer" sparkle: "Glitzer"
sparkleDescription: "Verleiht Inhalt einen glitzernden Partikeleffekt." sparkleDescription: "Verleiht Inhalt einen glitzernden Partikeleffekt."
rotate: "Drehen" rotate: "Drehen"
rotateDescription: "Dreht den Inhalt um einen angegebenen Winkel" rotateDescription: "Dreht den Inhalt um einen angegebenen Winkel."
_instanceTicker: _instanceTicker:
none: "Nie anzeigen" none: "Nie anzeigen"
remote: "Für Benutzer fremder Instanzen anzeigen" remote: "Für Benutzer fremder Instanzen anzeigen"
@ -983,7 +990,7 @@ _menuDisplay:
hide: "Ausblenden" hide: "Ausblenden"
_wordMute: _wordMute:
muteWords: "Stummgeschaltete Wörter" muteWords: "Stummgeschaltete Wörter"
muteWordsDescription: "Mit Leerzeichen für eine \"UND\"-Verknüpfung trennen, durch Zeilenumbrüche für eine \"ODER\"-Verknüpfung trennen." muteWordsDescription: "Zum Nutzen einer \"UND\"-Verknüpfung Einträge mit Leerzeichen trennen, zum Nutzen einer \"ODER\"-Verknüpfung Einträge mit einem Zeilenumbruch trennen."
muteWordsDescription2: "Umgib Schlüsselworter mit Schrägstrichen, um Reguläre Ausdrücke zu verwenden." muteWordsDescription2: "Umgib Schlüsselworter mit Schrägstrichen, um Reguläre Ausdrücke zu verwenden."
softDescription: "Notizen, die die angegebenen Konditionen erfüllen, in der Chronik ausblenden." softDescription: "Notizen, die die angegebenen Konditionen erfüllen, in der Chronik ausblenden."
hardDescription: "Verhindern, dass Notizen, die die angegebenen Konditionen erfüllen, der Chronik hinzugefügt werden. Zudem werden diese Notizen auch nicht der Chronik hinzugefügt, falls die Konditionen geändert werden." hardDescription: "Verhindern, dass Notizen, die die angegebenen Konditionen erfüllen, der Chronik hinzugefügt werden. Zudem werden diese Notizen auch nicht der Chronik hinzugefügt, falls die Konditionen geändert werden."
@ -996,17 +1003,17 @@ _instanceMute:
title: "Blendet Notizen von stummgeschalteten Instanzen aus." title: "Blendet Notizen von stummgeschalteten Instanzen aus."
heading: "Liste der stummzuschaltenden Instanzen" heading: "Liste der stummzuschaltenden Instanzen"
_theme: _theme:
explore: "Themen erforschen" explore: "Farbschemata erforschen"
install: "Thema installieren" install: "Farbschmata installieren"
manage: "Themaverwaltung" manage: "Farbschemaverwaltung"
code: "Themencode" code: "Farbschemencode"
description: "Beschreibung" description: "Beschreibung"
installed: "{name} wurde installiert" installed: "{name} wurde installiert"
installedThemes: "Installierte Themen" installedThemes: "Installierte Farbschemata"
builtinThemes: "Eingebaute Themen" builtinThemes: "Eingebaute Farbschemata"
alreadyInstalled: "Dieses Thema ist bereits installiert" alreadyInstalled: "Dieses Farbschema ist bereits installiert"
invalid: "Der Themencode dieses Themas ist ungültig" invalid: "Der Code dieses Farbschemas ist ungültig"
make: "Farbthema erstellen" make: "Farbschema erstellen"
base: "Vorlage" base: "Vorlage"
addConstant: "Konstante hinzufügen" addConstant: "Konstante hinzufügen"
constant: "Konstante" constant: "Konstante"
@ -1023,7 +1030,7 @@ _theme:
darken: "Verdunkeln" darken: "Verdunkeln"
lighten: "Erhellen" lighten: "Erhellen"
inputConstantName: "Name der Konstanten eingeben" inputConstantName: "Name der Konstanten eingeben"
importInfo: "Du kannst hier Themencode einfügen, um ihn in den Editor zu importieren" importInfo: "Hier kannst du Farbschemencode einfügen, um ihn in den Editor zu importieren"
deleteConstantConfirm: "Die Konstante {const} wirklich löschen?" deleteConstantConfirm: "Die Konstante {const} wirklich löschen?"
keys: keys:
accent: "Akzentfarbe" accent: "Akzentfarbe"
@ -1060,7 +1067,7 @@ _theme:
toastFg: "Text von Benachrichtigungen" toastFg: "Text von Benachrichtigungen"
buttonBg: "Hintergrund von Schaltflächen" buttonBg: "Hintergrund von Schaltflächen"
buttonHoverBg: "Hintergrund von Schaltflächen (Mouseover)" buttonHoverBg: "Hintergrund von Schaltflächen (Mouseover)"
inputBorder: "Rahmen des Eingabefelds" inputBorder: "Rahmen von Eingabefeldern"
listItemHoverBg: "Hintergrund von Listeneinträgen (Mouseover)" listItemHoverBg: "Hintergrund von Listeneinträgen (Mouseover)"
driveFolderBg: "Hintergrund von Drive-Ordnern" driveFolderBg: "Hintergrund von Drive-Ordnern"
wallpaperOverlay: "Hintergrundbild-Overlay" wallpaperOverlay: "Hintergrundbild-Overlay"
@ -1101,7 +1108,7 @@ _tutorial:
step2_1: "Lass uns zuerst dein Profil vervollständigen, bevor du Notizen schreibst oder jemandem folgst." step2_1: "Lass uns zuerst dein Profil vervollständigen, bevor du Notizen schreibst oder jemandem folgst."
step2_2: "Informationen darüber, was für eine Person du bist, macht es anderen leichter zu wissen, ob sie deine Notizen sehen wollen und ob sie dir folgen möchten." step2_2: "Informationen darüber, was für eine Person du bist, macht es anderen leichter zu wissen, ob sie deine Notizen sehen wollen und ob sie dir folgen möchten."
step3_1: "Mit dem Einrichten deines Profils fertig?" step3_1: "Mit dem Einrichten deines Profils fertig?"
step3_2: "Dann lass uns als nächstes versuchen, eine Notiz zu schreiben. Dies kannst du tun, indem du auf das Stift-Icon oben auf dem Bildschirm drückst." step3_2: "Dann lass uns als nächstes versuchen, eine Notiz zu schreiben. Dies kannst du tun, indem du auf den Knopf mit dem Stift-Icon auf dem Bildschirm drückst."
step3_3: "Fülle das Fenster aus und drücke auf den Knopf oben rechts zum Senden." step3_3: "Fülle das Fenster aus und drücke auf den Knopf oben rechts zum Senden."
step3_4: "Fällt dir nichts ein, das du schreiben möchtest? Versuch's mit \"Hallo Misskey!\"" step3_4: "Fällt dir nichts ein, das du schreiben möchtest? Versuch's mit \"Hallo Misskey!\""
step4_1: "Fertig mit dem Senden deiner ersten Notiz?" step4_1: "Fertig mit dem Senden deiner ersten Notiz?"
@ -1111,8 +1118,8 @@ _tutorial:
step5_3: "Klicke zum Anzeigen des Profils eines Benutzers auf dessen Profilbild und dann auf den \"Folgen\"-Knopf, um diesem zu folgen." step5_3: "Klicke zum Anzeigen des Profils eines Benutzers auf dessen Profilbild und dann auf den \"Folgen\"-Knopf, um diesem zu folgen."
step5_4: "Je nach Benutzer kann es etwas Zeit in Anspruch nehmen, bis dieser deine Follow-Anfrage bestätigt." step5_4: "Je nach Benutzer kann es etwas Zeit in Anspruch nehmen, bis dieser deine Follow-Anfrage bestätigt."
step6_1: "Wenn du nun auch die Notizen anderer Benutzer in deiner Chronik siehst, hast du auch diesmal alles richtig gemacht." step6_1: "Wenn du nun auch die Notizen anderer Benutzer in deiner Chronik siehst, hast du auch diesmal alles richtig gemacht."
step6_2: "Du kannst ebenso \"Reaktionen\" verwenden, um schnell auf Notizen anderer Benutzer zu reagieren." step6_2: "Du kannst ebenso „Reaktionen“ verwenden, um schnell auf Notizen anderer Benutzer zu reagieren."
step6_3: "Um eine Reaktion anzufügen, klicke auf das \"+\"-Symbol in der Notiz und wähle ein Emoji aus, mit dem du reagieren möchtest." step6_3: "Um eine Reaktion anzufügen, klicke auf das „+“-Symbol in der Notiz und wähle ein Emoji aus, mit dem du reagieren möchtest."
step7_1: "Glückwunsch! Du hast die Einführung in die Verwendung von Misskey abgeschlossen." step7_1: "Glückwunsch! Du hast die Einführung in die Verwendung von Misskey abgeschlossen."
step7_2: "Wenn du mehr über Misskey lernen möchtest, schau dich im {help}-Bereich um." step7_2: "Wenn du mehr über Misskey lernen möchtest, schau dich im {help}-Bereich um."
step7_3: "Und nun, viel Spaß mit Misskey! 🚀" step7_3: "Und nun, viel Spaß mit Misskey! 🚀"
@ -1159,7 +1166,7 @@ _permissions:
"read:gallery-likes": "Liste deiner mit \"Gefällt mir\" markierten Galerie-Beiträge lesen" "read:gallery-likes": "Liste deiner mit \"Gefällt mir\" markierten Galerie-Beiträge lesen"
"write:gallery-likes": "Liste deiner mit \"Gefällt mir\" markierten Galerie-Beiträge bearbeiten" "write:gallery-likes": "Liste deiner mit \"Gefällt mir\" markierten Galerie-Beiträge bearbeiten"
_auth: _auth:
shareAccess: "Möchtest du \"{name}\" authorisieren, auf dieses Benuzerkonto zugreifen zu können?" shareAccess: "Möchtest du „{name}“ authorisieren, auf dieses Benutzerkonto zugreifen zu können?"
shareAccessAsk: "Bist du dir sicher, dass du diese Anwendung authorisieren möchtest, auf dein Benutzerkonto zugreifen zu können?" shareAccessAsk: "Bist du dir sicher, dass du diese Anwendung authorisieren möchtest, auf dein Benutzerkonto zugreifen zu können?"
permissionAsk: "Diese Anwendung fordert folgende Berechtigungen" permissionAsk: "Diese Anwendung fordert folgende Berechtigungen"
pleaseGoBack: "Bitte kehre zur Anwendung zurück" pleaseGoBack: "Bitte kehre zur Anwendung zurück"
@ -1180,7 +1187,7 @@ _weekday:
friday: "Freitag" friday: "Freitag"
saturday: "Samstag" saturday: "Samstag"
_widgets: _widgets:
memo: "Memo" memo: "Merkzettel"
notifications: "Benachrichtigungen" notifications: "Benachrichtigungen"
timeline: "Chronik" timeline: "Chronik"
calendar: "Kalender" calendar: "Kalender"
@ -1211,8 +1218,8 @@ _poll:
canMultipleVote: "Auswahl mehrerer Antworten erlauben" canMultipleVote: "Auswahl mehrerer Antworten erlauben"
expiration: "Abstimmung beenden" expiration: "Abstimmung beenden"
infinite: "Nie" infinite: "Nie"
at: "Beenden am..." at: "Beenden am"
after: "Beenden nach..." after: "Beenden nach"
deadlineDate: "Enddatum" deadlineDate: "Enddatum"
deadlineTime: "Zeit" deadlineTime: "Zeit"
duration: "Dauer" duration: "Dauer"
@ -1238,24 +1245,24 @@ _visibility:
localOnly: "Nur Lokal" localOnly: "Nur Lokal"
localOnlyDescription: "Unsichtbar für Benutzer anderer Instanzen" localOnlyDescription: "Unsichtbar für Benutzer anderer Instanzen"
_postForm: _postForm:
replyPlaceholder: "Dieser Notiz antworten..." replyPlaceholder: "Dieser Notiz antworten"
quotePlaceholder: "Diese Notiz zitieren..." quotePlaceholder: "Diese Notiz zitieren"
channelPlaceholder: "In einen Kanal senden" channelPlaceholder: "In einen Kanal senden"
_placeholders: _placeholders:
a: "Was machst du momentan?" a: "Was machst du momentan?"
b: "Was ist um dich herum los?" b: "Was ist um dich herum los?"
c: "Was geht dir durch den Kopf?" c: "Was geht dir durch den Kopf?"
d: "Was möchtest du sagen?" d: "Was möchtest du sagen?"
e: "Fang an zu schreiben..." e: "Fang an zu schreiben"
f: "Ich warte darauf, dass du schreibst..." f: "Ich warte darauf, dass du schreibst"
_profile: _profile:
name: "Name" name: "Name"
username: "Benutzername" username: "Benutzername"
description: "Über mich" description: "Profilbeschreibung"
youCanIncludeHashtags: "Du kannst auch Hashtags in deiner Beschreibung verwenden." youCanIncludeHashtags: "Du kannst auch Hashtags in deiner Profilbeschreibung verwenden."
metadata: "Zusätzliche Informationen" metadata: "Zusätzliche Informationen"
metadataEdit: "Zusätzliche Informationen bearbeiten" metadataEdit: "Zusätzliche Informationen bearbeiten"
metadataDescription: "Du kannst auf deinem Profil vier zusätzliche Informationsblöcke anzeigen lassen." metadataDescription: "Hierdurch kannst du auf deinem Profil zusätzliche Informationsblöcke anzeigen lassen."
metadataLabel: "Beschriftung" metadataLabel: "Beschriftung"
metadataContent: "Inhalt" metadataContent: "Inhalt"
changeAvatar: "Profilbild ändern" changeAvatar: "Profilbild ändern"
@ -1274,25 +1281,25 @@ _charts:
usersIncDec: "Unterschied in der Anzahl von Benutzern" usersIncDec: "Unterschied in der Anzahl von Benutzern"
usersTotal: "Anzahl aller Benutzer" usersTotal: "Anzahl aller Benutzer"
activeUsers: "Aktive Benutzer" activeUsers: "Aktive Benutzer"
notesIncDec: "Unterschied in der Anzahl von Notizen" notesIncDec: "Unterschied in der Anzahl an Notizen"
localNotesIncDec: "Unterschied in der Anzahl von lokalen Notizen" localNotesIncDec: "Unterschied in der Anzahl an lokalen Notizen"
remoteNotesIncDec: "Unterschied in Anzahl der Notizen von fremden Instanzen" remoteNotesIncDec: "Unterschied in der Anzahl an Notizen von fremden Instanzen"
notesTotal: "Anzahl aller Notizen" notesTotal: "Anzahl aller Notizen"
filesIncDec: "Unterschied an Dateien" filesIncDec: "Unterschied in der Anzahl an Dateien"
filesTotal: "Summe der Dateien" filesTotal: "Anzahl aller Dateien"
storageUsageIncDec: "Unterschied in der Höhe der Speichernutzung" storageUsageIncDec: "Unterschied in der Höhe der Speichernutzung"
storageUsageTotal: "Gesamte Speichernutzung" storageUsageTotal: "Gesamte Speichernutzung"
_instanceCharts: _instanceCharts:
requests: "Anfragen" requests: "Anfragen"
users: "Unterschied in der Anzahl von Benutzern" users: "Unterschied in der Anzahl an Benutzern"
usersTotal: "Gesamtanzahl an Benutzern" usersTotal: "Gesamtanzahl an Benutzern"
notes: "Unterschied in der Anzahl von Notizen" notes: "Unterschied in der Anzahl an Notizen"
notesTotal: "Gesamtanzahl an Notizen" notesTotal: "Gesamtanzahl an Notizen"
ff: "Unterschied in der Anzahl von gefolgten Benutzern und Followern" ff: "Unterschied in der Anzahl an gefolgten Benutzern und Followern"
ffTotal: "Gesamtanzahl an gefolgten Benutzern und Followern" ffTotal: "Gesamtanzahl an gefolgten Benutzern und Followern"
cacheSize: "Unterschied in der Größe des Caches" cacheSize: "Unterschied in der Größe des Caches"
cacheSizeTotal: "Gesamtgröße des Caches" cacheSizeTotal: "Gesamtgröße des Caches"
files: "Unterschied in der Anzahl der Dateien" files: "Unterschied in der Anzahl an Dateien"
filesTotal: "Gesamtanzahl an Dateien" filesTotal: "Gesamtanzahl an Dateien"
_timelines: _timelines:
home: "Startseite" home: "Startseite"
@ -1302,7 +1309,7 @@ _timelines:
_pages: _pages:
newPage: "Seite erstellen" newPage: "Seite erstellen"
editPage: "Seite bearbeiten" editPage: "Seite bearbeiten"
readPage: "Quelltext-Ansicht" readPage: "Quelltextansicht"
created: "Seite erfolgreich erstellt" created: "Seite erfolgreich erstellt"
updated: "Seite erfolgreich aktualisiert" updated: "Seite erfolgreich aktualisiert"
deleted: "Seite erfolgreich gelöscht" deleted: "Seite erfolgreich gelöscht"
@ -1326,7 +1333,7 @@ _pages:
url: "Seiten-URL" url: "Seiten-URL"
summary: "Zusammenfassung" summary: "Zusammenfassung"
alignCenter: "Zentrieren" alignCenter: "Zentrieren"
hideTitleWhenPinned: "Seitentitel ausblenden, wenn angeheftet" hideTitleWhenPinned: "Seitentitel wenn angeheftet ausblenden"
font: "Schriftart" font: "Schriftart"
fontSerif: "Serif" fontSerif: "Serif"
fontSansSerif: "Sans Serif" fontSansSerif: "Sans Serif"
@ -1363,7 +1370,7 @@ _pages:
name: "Variablenname" name: "Variablenname"
text: "Titel" text: "Titel"
default: "Standardwert" default: "Standardwert"
numberInput: "Nummereingabe" numberInput: "Zahleneingabe"
_numberInput: _numberInput:
name: "Variablenname" name: "Variablenname"
text: "Titel" text: "Titel"
@ -1387,7 +1394,7 @@ _pages:
_counter: _counter:
name: "Variablenname" name: "Variablenname"
text: "Titel" text: "Titel"
inc: "Erhöhen um" inc: "Schrittgröße"
_button: _button:
text: "Titel" text: "Titel"
colored: "Farbig" colored: "Farbig"
@ -1433,10 +1440,10 @@ _pages:
strLen: "Textlänge" strLen: "Textlänge"
_strLen: _strLen:
arg1: "Text" arg1: "Text"
strPick: "Zeichen extrahieren" strPick: "Text extrahieren"
_strPick: _strPick:
arg1: "Text" arg1: "Text"
arg2: "Zeichenposition" arg2: "Textposition"
strReplace: "Textersetzung" strReplace: "Textersetzung"
_strReplace: _strReplace:
arg1: "Text" arg1: "Text"
@ -1447,7 +1454,7 @@ _pages:
arg1: "Text" arg1: "Text"
join: "Text zusammenfügen" join: "Text zusammenfügen"
_join: _join:
arg1: "Listen" arg1: "Liste"
arg2: "Trennzeichen" arg2: "Trennzeichen"
add: "Addieren" add: "Addieren"
_add: _add:
@ -1576,7 +1583,7 @@ _pages:
_for: _for:
arg1: "Anzahl der Schleifendurchläufe" arg1: "Anzahl der Schleifendurchläufe"
arg2: "Aktion" arg2: "Aktion"
typeError: "Slot {slot} akzeptiert Werte vom Typ \"{expect}\", aber es wurde ein \"{actual}\" Wert angegeben!" typeError: "Slot {slot} akzeptiert Werte vom Typ „{expect}“, aber es wurde ein „{actual}“ Wert angegeben!"
thereIsEmptySlot: "Slot {slot} ist leer!" thereIsEmptySlot: "Slot {slot} ist leer!"
types: types:
string: "Text" string: "Text"
@ -1587,7 +1594,7 @@ _pages:
emptySlot: "Leerer Slot" emptySlot: "Leerer Slot"
enviromentVariables: "Umgebungsvariable" enviromentVariables: "Umgebungsvariable"
pageVariables: "Seitenelemente" pageVariables: "Seitenelemente"
argVariables: "Eingabe-Slots" argVariables: "Eingabeslots"
_relayStatus: _relayStatus:
requesting: "Ausstehend" requesting: "Ausstehend"
accepted: "Akzeptiert" accepted: "Akzeptiert"
@ -1605,6 +1612,7 @@ _notification:
youReceivedFollowRequest: "Du hast eine Follow-Anfrage erhalten" youReceivedFollowRequest: "Du hast eine Follow-Anfrage erhalten"
yourFollowRequestAccepted: "Deine Follow-Anfrage wurde akzeptiert" yourFollowRequestAccepted: "Deine Follow-Anfrage wurde akzeptiert"
youWereInvitedToGroup: "Du wurdest in eine Gruppe eingeladen" youWereInvitedToGroup: "Du wurdest in eine Gruppe eingeladen"
pollEnded: "Umfrageergebnisse sind verfügbar"
_types: _types:
all: "Alle" all: "Alle"
follow: "Neue Follower" follow: "Neue Follower"
@ -1614,6 +1622,7 @@ _notification:
quote: "Zitationen" quote: "Zitationen"
reaction: "Reaktionen" reaction: "Reaktionen"
pollVote: "Antworten auf Umfragen" pollVote: "Antworten auf Umfragen"
pollEnded: "Ende von Umfragen"
receiveFollowRequest: "Erhaltene Follow-Anfragen" receiveFollowRequest: "Erhaltene Follow-Anfragen"
followRequestAccepted: "Akzeptierte Follow-Anfragen" followRequestAccepted: "Akzeptierte Follow-Anfragen"
groupInvited: "Erhaltene Gruppeneinladungen" groupInvited: "Erhaltene Gruppeneinladungen"
@ -1624,10 +1633,10 @@ _deck:
columnMargin: "Spaltenabstand" columnMargin: "Spaltenabstand"
columnHeaderHeight: "Spaltenkopfhöhe" columnHeaderHeight: "Spaltenkopfhöhe"
addColumn: "Spalte hinzufügen" addColumn: "Spalte hinzufügen"
swapLeft: "Nach links verschieben" swapLeft: "Mit linker Spalte tauschen"
swapRight: "Nach rechts verschieben" swapRight: "Mit rechter Spalte tauschen"
swapUp: "Nach oben verschieben" swapUp: "Mit oberer Spalte tauschen"
swapDown: "Nach unten verschieben" swapDown: "Mit unterer Spalte tauschen"
stackLeft: "Auf linke Spalte stapeln" stackLeft: "Auf linke Spalte stapeln"
popRight: "Nach rechts vom Stapel nehmen" popRight: "Nach rechts vom Stapel nehmen"
profile: "Profil" profile: "Profil"

View file

@ -8,7 +8,7 @@ notifications: "Notifications"
username: "Username" username: "Username"
password: "Password" password: "Password"
forgotPassword: "Forgot password" forgotPassword: "Forgot password"
fetchingAsApObject: "Fetching from Fediverse..." fetchingAsApObject: "Fetching from the Fediverse..."
ok: "OK" ok: "OK"
gotIt: "Got it!" gotIt: "Got it!"
cancel: "Cancel" cancel: "Cancel"
@ -32,9 +32,9 @@ uploading: "Uploading..."
save: "Save" save: "Save"
users: "Users" users: "Users"
addUser: "Add a user" addUser: "Add a user"
favorite: "Favorite" favorite: "Add to favorites"
favorites: "Favorites" favorites: "Favorites"
unfavorite: "Unfavorite" unfavorite: "Remove from favorites"
favorited: "Added to favorites." favorited: "Added to favorites."
alreadyFavorited: "Already added to favorites." alreadyFavorited: "Already added to favorites."
cantFavorite: "Couldn't add to favorites." cantFavorite: "Couldn't add to favorites."
@ -43,7 +43,7 @@ unpin: "Unpin from profile"
copyContent: "Copy contents" copyContent: "Copy contents"
copyLink: "Copy link" copyLink: "Copy link"
delete: "Delete" delete: "Delete"
deleteAndEdit: "Delete and Edit" deleteAndEdit: "Delete and edit"
deleteAndEditConfirm: "Are you sure you want to delete this note and edit it? You will lose all reactions, renotes and replies to it." deleteAndEditConfirm: "Are you sure you want to delete this note and edit it? You will lose all reactions, renotes and replies to it."
addToList: "Add to list" addToList: "Add to list"
sendMessage: "Send a message" sendMessage: "Send a message"
@ -77,21 +77,21 @@ followsYou: "Follows you"
createList: "Create list" createList: "Create list"
manageLists: "Manage lists" manageLists: "Manage lists"
error: "Error" error: "Error"
somethingHappened: "An error occurred" somethingHappened: "An error has occurred"
retry: "Retry" retry: "Retry"
pageLoadError: "Failed to load page." pageLoadError: "An error occurred loading the page."
pageLoadErrorDescription: "This is normally caused by network errors or the browser's cache. Try clearing the cache and then try again after waiting a little while." pageLoadErrorDescription: "This is normally caused by network errors or the browser's cache. Try clearing the cache and then try again after waiting a little while."
serverIsDead: "This server is not responding. Please wait for a while and try again." serverIsDead: "This server is not responding. Please wait for a while and try again."
youShouldUpgradeClient: "To view this page, please refresh to update your client." youShouldUpgradeClient: "To view this page, please refresh to update your client."
enterListName: "Enter a list name" enterListName: "Enter a name for the list"
privacy: "Privacy" privacy: "Privacy"
makeFollowManuallyApprove: "Follow requests require approval" makeFollowManuallyApprove: "Follow requests require approval"
defaultNoteVisibility: "Default visibility" defaultNoteVisibility: "Default visibility"
follow: "Follow" follow: "Follow"
followRequest: "Request follow" followRequest: "Send follow request"
followRequests: "Follow requests" followRequests: "Follow requests"
unfollow: "Unfollow" unfollow: "Unfollow"
followRequestPending: "Pending follow request" followRequestPending: "Follow request pending"
enterEmoji: "Enter an emoji" enterEmoji: "Enter an emoji"
renote: "Renote" renote: "Renote"
unrenote: "Take back renote" unrenote: "Take back renote"
@ -107,12 +107,12 @@ sensitive: "NSFW"
add: "Add" add: "Add"
reaction: "Reactions" reaction: "Reactions"
reactionSetting: "Reactions to show in the reaction picker" reactionSetting: "Reactions to show in the reaction picker"
reactionSettingDescription2: "Drag to reorder, Click to delete, Press \"+\" to add" reactionSettingDescription2: "Drag to reorder, click to delete, press \"+\" to add."
rememberNoteVisibility: "Remember note visibility settings" rememberNoteVisibility: "Remember note visibility settings"
attachCancel: "Remove attachment" attachCancel: "Remove attachment"
markAsSensitive: "Mark as NSFW" markAsSensitive: "Mark as NSFW"
unmarkAsSensitive: "Undo NSFW" unmarkAsSensitive: "Unmark as NSFW"
enterFileName: "Enter file name" enterFileName: "Enter filename"
mute: "Mute" mute: "Mute"
unmute: "Unmute" unmute: "Unmute"
block: "Block" block: "Block"
@ -168,8 +168,8 @@ latestRequestReceivedAt: "Last request received"
latestStatus: "Latest status" latestStatus: "Latest status"
storageUsage: "Storage usage" storageUsage: "Storage usage"
charts: "Charts" charts: "Charts"
perHour: "per Hour" perHour: "Per Hour"
perDay: "per Day" perDay: "Per Day"
stopActivityDelivery: "Stop sending activities" stopActivityDelivery: "Stop sending activities"
blockThisInstance: "Block this instance" blockThisInstance: "Block this instance"
operations: "Operations" operations: "Operations"
@ -190,7 +190,7 @@ clearQueueConfirmText: "Any undelivered notes remaining in the queue will not be
clearCachedFiles: "Clear cache" clearCachedFiles: "Clear cache"
clearCachedFilesConfirm: "Are you sure that you want to delete all cached remote files?" clearCachedFilesConfirm: "Are you sure that you want to delete all cached remote files?"
blockedInstances: "Blocked Instances" blockedInstances: "Blocked Instances"
blockedInstancesDescription: "List the hosts of the instances to be blocked separated by line breaks. Blocked instances will no longer be able to communicate with this instance." blockedInstancesDescription: "List the hostnames of the instances that you want to block. Listed instances will no longer be able to communicate with this instance."
muteAndBlock: "Mutes and Blocks" muteAndBlock: "Mutes and Blocks"
mutedUsers: "Muted users" mutedUsers: "Muted users"
blockedUsers: "Blocked users" blockedUsers: "Blocked users"
@ -325,8 +325,6 @@ disablingTimelinesInfo: "Adminstrators and Moderators will always have access to
registration: "Register" registration: "Register"
enableRegistration: "Enable new user registration" enableRegistration: "Enable new user registration"
invite: "Invite" invite: "Invite"
proxyRemoteFiles: "Proxy remote files"
proxyRemoteFilesDescription: "If enabled, remote files that are either not stored locally or were deleted due to exceeding the storage limit will be proxied, including generation of thumbnails. This does not affect the server's storage."
driveCapacityPerLocalAccount: "Drive capacity per local user" driveCapacityPerLocalAccount: "Drive capacity per local user"
driveCapacityPerRemoteAccount: "Drive capacity per remote user" driveCapacityPerRemoteAccount: "Drive capacity per remote user"
inMb: "In megabytes" inMb: "In megabytes"
@ -336,9 +334,9 @@ backgroundImageUrl: "Background image URL"
basicInfo: "Basic info" basicInfo: "Basic info"
pinnedUsers: "Pinned users" pinnedUsers: "Pinned users"
pinnedUsersDescription: "List usernames separated by line breaks to be pinned in the \"Explore\" tab." pinnedUsersDescription: "List usernames separated by line breaks to be pinned in the \"Explore\" tab."
pinnedPages: "Pinned pages" pinnedPages: "Pinned Pages"
pinnedPagesDescription: "Enter the paths of the pages you want to pin to the top page of this instance, separated by line breaks." pinnedPagesDescription: "Enter the paths of the Pages you want to pin to the top page of this instance, separated by line breaks."
pinnedClipId: "ID of the pinned clip" pinnedClipId: "ID of the clip to pin"
pinnedNotes: "Pinned notes" pinnedNotes: "Pinned notes"
hcaptcha: "hCaptcha" hcaptcha: "hCaptcha"
enableHcaptcha: "Enable hCaptcha" enableHcaptcha: "Enable hCaptcha"
@ -348,7 +346,7 @@ recaptcha: "reCAPTCHA"
enableRecaptcha: "Enable reCAPTCHA" enableRecaptcha: "Enable reCAPTCHA"
recaptchaSiteKey: "Site key" recaptchaSiteKey: "Site key"
recaptchaSecretKey: "Secret key" recaptchaSecretKey: "Secret key"
avoidMultiCaptchaConfirm: "Using multiple Captcha systems may cause interferences. Would you like to disable the other Captcha systems? You can leave multiple enabled by pressing cancel." avoidMultiCaptchaConfirm: "Using multiple Captcha systems may cause interference between them. Would you like to disable the other Captcha systems currently active? If you would like them to stay enabled, press cancel."
antennas: "Antennas" antennas: "Antennas"
manageAntennas: "Manage Antennas" manageAntennas: "Manage Antennas"
name: "Name" name: "Name"
@ -369,13 +367,13 @@ silence: "Silence"
silenceConfirm: "Are you sure that you want to silence this user?" silenceConfirm: "Are you sure that you want to silence this user?"
unsilence: "Undo silencing" unsilence: "Undo silencing"
unsilenceConfirm: "Are you sure that you want to undo the silencing of this user?" unsilenceConfirm: "Are you sure that you want to undo the silencing of this user?"
popularUsers: "Trending users" popularUsers: "Popular users"
recentlyUpdatedUsers: "Users with recent activity" recentlyUpdatedUsers: "Recently active users"
recentlyRegisteredUsers: "Newly joined users" recentlyRegisteredUsers: "Newly joined users"
recentlyDiscoveredUsers: "Newly discovered users" recentlyDiscoveredUsers: "Newly discovered users"
exploreUsersCount: "There are {count} users" exploreUsersCount: "There are {count} users"
exploreFediverse: "Explore the Fediverse" exploreFediverse: "Explore the Fediverse"
popularTags: "Trending Tags" popularTags: "Popular tags"
userList: "Lists" userList: "Lists"
about: "About" about: "About"
aboutMisskey: "About Misskey" aboutMisskey: "About Misskey"
@ -383,13 +381,13 @@ administrator: "Administrator"
token: "Token" token: "Token"
twoStepAuthentication: "Two-factor authentication" twoStepAuthentication: "Two-factor authentication"
moderator: "Moderator" moderator: "Moderator"
nUsersMentioned: "{n} users mentioned" nUsersMentioned: "Mentioned by {n} users"
securityKey: "Security key" securityKey: "Security key"
securityKeyName: "Key name" securityKeyName: "Key name"
registerSecurityKey: "Register a security key" registerSecurityKey: "Register a security key"
lastUsed: "Last used" lastUsed: "Last used"
unregister: "Unregister" unregister: "Unregister"
passwordLessLogin: "Set up password-less login" passwordLessLogin: "Password-less login"
resetPassword: "Reset password" resetPassword: "Reset password"
newPasswordIs: "The new password is \"{password}\"" newPasswordIs: "The new password is \"{password}\""
reduceUiAnimation: "Reduce UI animations" reduceUiAnimation: "Reduce UI animations"
@ -422,11 +420,10 @@ next: "Next"
retype: "Enter again" retype: "Enter again"
noteOf: "Note by {user}" noteOf: "Note by {user}"
inviteToGroup: "Invite to group" inviteToGroup: "Invite to group"
maxNoteTextLength: "Character limit for notes" quoteAttached: "Quote"
quoteAttached: "Quoted"
quoteQuestion: "Append as quote?" quoteQuestion: "Append as quote?"
noMessagesYet: "No messages yet" noMessagesYet: "No messages yet"
newMessageExists: "You've got a new message" newMessageExists: "There are new messages"
onlyOneFileCanBeAttached: "You can only attach one file to a message" onlyOneFileCanBeAttached: "You can only attach one file to a message"
signinRequired: "Please sign in" signinRequired: "Please sign in"
invitations: "Invites" invitations: "Invites"
@ -438,7 +435,7 @@ usernameInvalidFormat: "You can use upper- and lowercase letters, numbers, and u
tooShort: "Too short" tooShort: "Too short"
tooLong: "Too long" tooLong: "Too long"
weakPassword: "Weak password" weakPassword: "Weak password"
normalPassword: "Normal password" normalPassword: "Average password"
strongPassword: "Strong password" strongPassword: "Strong password"
passwordMatched: "Matches" passwordMatched: "Matches"
passwordNotMatched: "Does not match" passwordNotMatched: "Does not match"
@ -466,7 +463,7 @@ existingAccount: "Existing account"
regenerate: "Regenerate" regenerate: "Regenerate"
fontSize: "Font size" fontSize: "Font size"
noFollowRequests: "You don't have any pending follow requests" noFollowRequests: "You don't have any pending follow requests"
openImageInNewTab: "Open image in new tab" openImageInNewTab: "Open images in new tab"
dashboard: "Dashboard" dashboard: "Dashboard"
local: "Local" local: "Local"
remote: "Remote" remote: "Remote"
@ -474,17 +471,17 @@ total: "Total"
weekOverWeekChanges: "Changes to last week" weekOverWeekChanges: "Changes to last week"
dayOverDayChanges: "Changes to yesterday" dayOverDayChanges: "Changes to yesterday"
appearance: "Appearance" appearance: "Appearance"
clientSettings: "Client settings" clientSettings: "Client Settings"
accountSettings: "Account Settings" accountSettings: "Account Settings"
promotion: "Promoted" promotion: "Promoted"
promote: "Promote" promote: "Promote"
numberOfDays: "Number of days" numberOfDays: "Number of days"
hideThisNote: "Hide this note" hideThisNote: "Hide this note"
showFeaturedNotesInTimeline: "Show Featured notes in Timelines" showFeaturedNotesInTimeline: "Show featured notes in timelines"
objectStorage: "Object Storage" objectStorage: "Object Storage"
useObjectStorage: "Use object storage" useObjectStorage: "Use object storage"
objectStorageBaseUrl: "Base URL" objectStorageBaseUrl: "Base URL"
objectStorageBaseUrlDesc: "URL used as reference. Specify the URL of your CDN or Proxy if you are using either. S3: 'https://<bucket>.s3.amazonaws.com', GCS: 'https://storage.googleapis.com/<bucket>' etc." objectStorageBaseUrlDesc: "The URL used as reference. Specify the URL of your CDN or Proxy if you are using either.\nFor S3 use 'https://<bucket>.s3.amazonaws.com' and for GCS or equivalent services use 'https://storage.googleapis.com/<bucket>', etc."
objectStorageBucket: "Bucket" objectStorageBucket: "Bucket"
objectStorageBucketDesc: "Please specify the bucket name used at your provider." objectStorageBucketDesc: "Please specify the bucket name used at your provider."
objectStoragePrefix: "Prefix" objectStoragePrefix: "Prefix"
@ -492,7 +489,7 @@ objectStoragePrefixDesc: "Files will be stored under directories with this prefi
objectStorageEndpoint: "Endpoint" objectStorageEndpoint: "Endpoint"
objectStorageEndpointDesc: "Leave this empty if you are using AWS S3, otherwise specify the endpoint as '<host>' or '<host>:<port>', depending on the service you are using." objectStorageEndpointDesc: "Leave this empty if you are using AWS S3, otherwise specify the endpoint as '<host>' or '<host>:<port>', depending on the service you are using."
objectStorageRegion: "Region" objectStorageRegion: "Region"
objectStorageRegionDesc: "Specify a region like 'xx-east-1'. If your service does not distinct between regions, leave this blank or enter 'us-east-1'." objectStorageRegionDesc: "Specify a region like 'xx-east-1'. If your service does not distinguish between regions, leave this blank or enter 'us-east-1'."
objectStorageUseSSL: "Use SSL" objectStorageUseSSL: "Use SSL"
objectStorageUseSSLDesc: "Turn this off if you are not going to use HTTPS for API connections" objectStorageUseSSLDesc: "Turn this off if you are not going to use HTTPS for API connections"
objectStorageUseProxy: "Connect over Proxy" objectStorageUseProxy: "Connect over Proxy"
@ -524,17 +521,17 @@ sort: "Sort"
ascendingOrder: "Ascending" ascendingOrder: "Ascending"
descendingOrder: "Descending" descendingOrder: "Descending"
scratchpad: "Scratchpad" scratchpad: "Scratchpad"
scratchpadDescription: "The Scratchpad provides an environment for AiScript experiments. You can write, execute, and check the results of it interacting with Misskey." scratchpadDescription: "The Scratchpad provides an environment for AiScript experiments. You can write, execute, and check the results of it interacting with Misskey in it."
output: "Output" output: "Output"
script: "Script" script: "Script"
disablePagesScript: "Disable AiScript on Pages" disablePagesScript: "Disable AiScript on Pages"
updateRemoteUser: "Update remote user information" updateRemoteUser: "Update remote user information"
deleteAllFiles: "Delete All Files" deleteAllFiles: "Delete all files"
deleteAllFilesConfirm: "Are you sure that you want to delete all files?" deleteAllFilesConfirm: "Are you sure that you want to delete all files?"
removeAllFollowing: "Unfollow all followed users" removeAllFollowing: "Unfollow all followed users"
removeAllFollowingDescription: "Executing this unfollows all accounts from {host}. Please run this if the instance e.g. no longer exists." removeAllFollowingDescription: "Executing this unfollows all accounts from {host}. Please run this if the instance e.g. no longer exists."
userSuspended: "This user has been suspended." userSuspended: "This user has been suspended."
userSilenced: "This user has been silenced." userSilenced: "This user is being silenced."
yourAccountSuspendedTitle: "This account is suspended" yourAccountSuspendedTitle: "This account is suspended"
yourAccountSuspendedDescription: "This account has been suspended due to breaking the server's terms of services or similar. Contact the administrator if you would like to know a more detailed reason. Please do not create a new account." yourAccountSuspendedDescription: "This account has been suspended due to breaking the server's terms of services or similar. Contact the administrator if you would like to know a more detailed reason. Please do not create a new account."
menu: "Menu" menu: "Menu"
@ -547,7 +544,7 @@ addedRelays: "Added Relays"
serviceworkerInfo: "Must be enabled for push notifications." serviceworkerInfo: "Must be enabled for push notifications."
deletedNote: "Deleted note" deletedNote: "Deleted note"
invisibleNote: "Invisible note" invisibleNote: "Invisible note"
enableInfiniteScroll: "Enable infinite scrolling" enableInfiniteScroll: "Automatically load more"
visibility: "Visiblility" visibility: "Visiblility"
poll: "Poll" poll: "Poll"
useCw: "Hide content" useCw: "Hide content"
@ -585,7 +582,7 @@ enableEmail: "Enable email distribution"
emailConfigInfo: "Used to confirm your email during sign-up or if you forget your password" emailConfigInfo: "Used to confirm your email during sign-up or if you forget your password"
email: "Email" email: "Email"
emailAddress: "Email address" emailAddress: "Email address"
smtpConfig: "SMTP Server configuration" smtpConfig: "SMTP Server Configuration"
smtpHost: "Host" smtpHost: "Host"
smtpPort: "Port" smtpPort: "Port"
smtpUser: "Username" smtpUser: "Username"
@ -595,7 +592,9 @@ smtpSecure: "Use implicit SSL/TLS for SMTP connections"
smtpSecureInfo: "Turn this off when using STARTTLS" smtpSecureInfo: "Turn this off when using STARTTLS"
testEmail: "Test email delivery" testEmail: "Test email delivery"
wordMute: "Word mute" wordMute: "Word mute"
instanceMute: "Instance mutes" regexpError: "Regular Expression error"
regexpErrorDescription: "An error occurred in the regular expression on line {line} of your {tab} word mutes:"
instanceMute: "Instance Mutes"
userSaysSomething: "{name} said something" userSaysSomething: "{name} said something"
makeActive: "Activate" makeActive: "Activate"
display: "Display" display: "Display"
@ -608,14 +607,14 @@ database: "Database"
channel: "Channels" channel: "Channels"
create: "Create" create: "Create"
notificationSetting: "Notification settings" notificationSetting: "Notification settings"
notificationSettingDesc: "Select the type of notification to display" notificationSettingDesc: "Select the types of notification to display."
useGlobalSetting: "Use global setting" useGlobalSetting: "Use global settings"
useGlobalSettingDesc: "If turned on, your account's notification settings will be used. If turned off, individual configurations can be made." useGlobalSettingDesc: "If turned on, your account's notification settings will be used. If turned off, individual configurations can be made."
other: "Other" other: "Other"
regenerateLoginToken: "Regenerate login token" regenerateLoginToken: "Regenerate login token"
regenerateLoginTokenDescription: "Regenerate the token used internally during login. Normally this action is not necessary. If regenerated, all devices will be logged out." regenerateLoginTokenDescription: "Regenerates the token used internally during login. Normally this action is not necessary. If regenerated, all devices will be logged out."
setMultipleBySeparatingWithSpace: "Separate multiple entries with spaces." setMultipleBySeparatingWithSpace: "Separate multiple entries with spaces."
fileIdOrUrl: "File-ID or URL" fileIdOrUrl: "File ID or URL"
behavior: "Behavior" behavior: "Behavior"
sample: "Sample" sample: "Sample"
abuseReports: "Reports" abuseReports: "Reports"
@ -689,14 +688,14 @@ center: "Center"
wide: "Wide" wide: "Wide"
narrow: "Narrow" narrow: "Narrow"
reloadToApplySetting: "This setting will only apply after a page reload. Reload now?" reloadToApplySetting: "This setting will only apply after a page reload. Reload now?"
needReloadToApply: "This setting will only apply after a page reload." needReloadToApply: "A reload is required for this to be reflected."
showTitlebar: "Show title bar" showTitlebar: "Show title bar"
clearCache: "Clear cache" clearCache: "Clear cache"
onlineUsersCount: "{n} users are online" onlineUsersCount: "{n} users are online"
nUsers: "{n} Users" nUsers: "{n} Users"
nNotes: "{n} Notes" nNotes: "{n} Notes"
sendErrorReports: "Send error reports" sendErrorReports: "Send error reports"
sendErrorReportsDescription: "When turned on, detailed error information will be shared with Misskey when a problem occurs, helping to improve the quality of Misskey.\nThis will include information such the version of your OS, what browser you're using, your activity history, etc." sendErrorReportsDescription: "When turned on, detailed error information will be shared with Misskey when a problem occurs, helping to improve the quality of Misskey.\nThis will include information such the version of your OS, what browser you're using, your activity in Misskey, etc."
myTheme: "My theme" myTheme: "My theme"
backgroundColor: "Background color" backgroundColor: "Background color"
accentColor: "Accent color" accentColor: "Accent color"
@ -794,12 +793,12 @@ translatedFrom: "Translated from {x}"
accountDeletionInProgress: "Account deletion is currently in progress" accountDeletionInProgress: "Account deletion is currently in progress"
usernameInfo: "A name that identifies your account from others on this server. You can use the alphabet (a~z, A~Z), digits (0~9) or underscores (_). Usernames cannot be changed later." usernameInfo: "A name that identifies your account from others on this server. You can use the alphabet (a~z, A~Z), digits (0~9) or underscores (_). Usernames cannot be changed later."
aiChanMode: "Ai Mode" aiChanMode: "Ai Mode"
keepCw: "Keep Content Warnings" keepCw: "Keep content warnings"
pubSub: "Pub/Sub Accounts" pubSub: "Pub/Sub Accounts"
lastCommunication: "Last communication" lastCommunication: "Last communication"
resolved: "Resolved" resolved: "Resolved"
unresolved: "Unresolved" unresolved: "Unresolved"
breakFollow: "Unfollow" breakFollow: "Remove follower"
itsOn: "Enabled" itsOn: "Enabled"
itsOff: "Disabled" itsOff: "Disabled"
emailRequiredForSignup: "Require email address for sign-up" emailRequiredForSignup: "Require email address for sign-up"
@ -819,7 +818,7 @@ deleteAccountConfirm: "This will irreversibly delete your account. Proceed?"
incorrectPassword: "Incorrect password." incorrectPassword: "Incorrect password."
voteConfirm: "Confirm your vote for \"{choice}\"?" voteConfirm: "Confirm your vote for \"{choice}\"?"
hide: "Hide" hide: "Hide"
leaveGroup: "Leave Group" leaveGroup: "Leave group"
leaveGroupConfirm: "Are you sure you want to leave \"{name}\"?" leaveGroupConfirm: "Are you sure you want to leave \"{name}\"?"
useDrawerReactionPickerForMobile: "Display reaction picker as drawer on mobile" useDrawerReactionPickerForMobile: "Display reaction picker as drawer on mobile"
welcomeBackWithName: "Welcome back, {name}" welcomeBackWithName: "Welcome back, {name}"
@ -831,6 +830,16 @@ auto: "Auto"
themeColor: "Theme Color" themeColor: "Theme Color"
size: "Size" size: "Size"
numberOfColumn: "Number of columns" numberOfColumn: "Number of columns"
searchByGoogle: "Google"
instanceDefaultLightTheme: "Instance-wide default light theme"
instanceDefaultDarkTheme: "Instance-wide default dark theme"
instanceDefaultThemeDescription: "Enter the theme code in object format."
mutePeriod: "Mute duration"
indefinitely: "Permanently"
tenMinutes: "10 minutes"
oneHour: "One hour"
oneDay: "One day"
oneWeek: "One week"
_emailUnavailable: _emailUnavailable:
used: "This email address is already being used" used: "This email address is already being used"
format: "The format of this email address is invalid" format: "The format of this email address is invalid"
@ -843,10 +852,10 @@ _ffVisibility:
private: "Private" private: "Private"
_signup: _signup:
almostThere: "Almost there" almostThere: "Almost there"
emailAddressInfo: "Please enter your email address." emailAddressInfo: "Please enter your email address. It will not be made public."
emailSent: "A confirmation email has been sent to your email address ({email}). Please click the included link to complete account creation." emailSent: "A confirmation email has been sent to your email address ({email}). Please click the included link to complete account creation."
_accountDelete: _accountDelete:
accountDelete: "Delete Account" accountDelete: "Delete account"
mayTakeTime: "As account deletion is a resource-heavy process, it may take some time to complete depending on how much content you have created and how many files you have uploaded." mayTakeTime: "As account deletion is a resource-heavy process, it may take some time to complete depending on how much content you have created and how many files you have uploaded."
sendEmail: "Once account deletion has been completed, an email will be sent to the email address registered to this account." sendEmail: "Once account deletion has been completed, an email will be sent to the email address registered to this account."
requestAccountDelete: "Request account deletion" requestAccountDelete: "Request account deletion"
@ -857,8 +866,8 @@ _ad:
reduceFrequencyOfThisAd: "Show this ad less" reduceFrequencyOfThisAd: "Show this ad less"
_forgotPassword: _forgotPassword:
enterEmail: "Enter the email address you used to register. A link with which you can reset your password will then be sent to it." enterEmail: "Enter the email address you used to register. A link with which you can reset your password will then be sent to it."
ifNoEmail: "If you did not use an email during registration, please contact the administrator instead." ifNoEmail: "If you did not use an email during registration, please contact the instance administrator instead."
contactAdmin: "This instance does not support using email addresses, please contact the administrator to reset your password instead." contactAdmin: "This instance does not support using email addresses, please contact the instance administrator to reset your password instead."
_gallery: _gallery:
my: "My Gallery" my: "My Gallery"
liked: "Liked Posts" liked: "Liked Posts"
@ -910,14 +919,14 @@ _mfm:
smallDescription: "Displays content small and thin." smallDescription: "Displays content small and thin."
center: "Center" center: "Center"
centerDescription: "Displays content centered." centerDescription: "Displays content centered."
inlineCode: "Code (In-line)" inlineCode: "Code (Inline)"
inlineCodeDescription: "Displays inline syntax highlighting for (program) code." inlineCodeDescription: "Displays inline syntax highlighting for (program) code."
blockCode: "Code (Block)" blockCode: "Code (Block)"
blockCodeDescription: "Displays syntax highlighting for multi-line (program) code in a block." blockCodeDescription: "Displays syntax highlighting for multi-line (program) code in a block."
inlineMath: "Math (In-line)" inlineMath: "Math (Inline)"
inlineMathDescription: "Display math formulas (KaTeX) in-line" inlineMathDescription: "Display math formulas (KaTeX) in-line"
blockMath: "Math (Block)" blockMath: "Math (Block)"
blockMathDescription: "Display multi-line Math formulas (KaTeX) in a block" blockMathDescription: "Display multi-line math formulas (KaTeX) in a block"
quote: "Quote" quote: "Quote"
quoteDescription: "Displays content as a quote." quoteDescription: "Displays content as a quote."
emoji: "Custom Emoji" emoji: "Custom Emoji"
@ -947,7 +956,7 @@ _mfm:
x4: "Unbelievably big" x4: "Unbelievably big"
x4Description: "Displays content even bigger than bigger than big." x4Description: "Displays content even bigger than bigger than big."
blur: "Blur" blur: "Blur"
blurDescription: "Content can be blurred via this effect. It will be displayed clearly when hovered over." blurDescription: "Blurs content. It will be displayed clearly when hovered over."
font: "Font" font: "Font"
fontDescription: "Sets the font to display content in." fontDescription: "Sets the font to display content in."
rainbow: "Rainbow" rainbow: "Rainbow"
@ -1079,10 +1088,10 @@ _ago:
unknown: "Unknown" unknown: "Unknown"
future: "Future" future: "Future"
justNow: "Just now" justNow: "Just now"
secondsAgo: "{n} seconds ago" secondsAgo: "{n} second(s) ago"
minutesAgo: "{n} minutes ago" minutesAgo: "{n} minute(s) ago"
hoursAgo: "{n} hours ago" hoursAgo: "{n} hour(s) ago"
daysAgo: "{n} days ago" daysAgo: "{n} day(s) ago"
weeksAgo: "{n} week(s) ago" weeksAgo: "{n} week(s) ago"
monthsAgo: "{n} month(s) ago" monthsAgo: "{n} month(s) ago"
yearsAgo: "{n} year(s) ago" yearsAgo: "{n} year(s) ago"
@ -1099,17 +1108,17 @@ _tutorial:
step2_1: "Let's finish setting up your profile before writing a note or following anyone." step2_1: "Let's finish setting up your profile before writing a note or following anyone."
step2_2: "Providing some information about who you are will make it easier for others to tell if they want to see your notes or follow you." step2_2: "Providing some information about who you are will make it easier for others to tell if they want to see your notes or follow you."
step3_1: "Finished setting up your profile?" step3_1: "Finished setting up your profile?"
step3_2: "Then let's try posting a note next. You can do this by pressing the pencil icon on the top of the screen." step3_2: "Then let's try posting a note next. You can do so by pressing the button with a pencil icon on the screen."
step3_3: "Fill in the modal and press the button on the top right to post." step3_3: "Fill in the modal and press the button on the top right to post."
step3_4: "Have nothing to say? Try \"just setting up my msky\"!" step3_4: "Have nothing to say? Try \"just setting up my msky\"!"
step4_1: "Finished posting your first note?" step4_1: "Finished posting your first note?"
step4_2: "Hurray! Now your first note should be displayed on your timeline." step4_2: "Hurray! Now your first note should be displayed on your timeline."
step5_1: "Now, let's try making your timeline more lively by following other people." step5_1: "Now, let's try making your timeline more lively by following other people."
step5_2: "{featured} will show you trending notes in this instance. {explore} will let you find trending users. Try finding people you'd like to follow there!" step5_2: "{featured} will show you popular notes in this instance. {explore} will let you find popular users. Try finding people you'd like to follow there!"
step5_3: "To follow other users, click on their icon and press the \"Follow\" button on their profile." step5_3: "To follow other users, click on their icon and press the \"Follow\" button on their profile."
step5_4: "If the other user has a lock icon next to their name, it may take some time for that user to manually approve your follow request." step5_4: "If the other user has a lock icon next to their name, it may take some time for that user to manually approve your follow request."
step6_1: "You should be able to see other users' notes on your timeline now." step6_1: "You should be able to see other users' notes on your timeline now."
step6_2: "You can also put \"reactions\" on other people's notes to quickly respond." step6_2: "You can also put \"reactions\" on other people's notes to quickly respond to them."
step6_3: "To attach a \"reaction\", press the \"+\" mark on another user's note and choose an emoji you'd like to react with." step6_3: "To attach a \"reaction\", press the \"+\" mark on another user's note and choose an emoji you'd like to react with."
step7_1: "Congratulations! You have now finished Misskey's basic tutorial." step7_1: "Congratulations! You have now finished Misskey's basic tutorial."
step7_2: "If you would like to learn more about Misskey, try the {help} section." step7_2: "If you would like to learn more about Misskey, try the {help} section."
@ -1140,7 +1149,7 @@ _permissions:
"write:mutes": "Edit your list of muted users" "write:mutes": "Edit your list of muted users"
"write:notes": "Compose or delete notes" "write:notes": "Compose or delete notes"
"read:notifications": "View your notifications" "read:notifications": "View your notifications"
"write:notifications": "Work with your notifications" "write:notifications": "Manage your notifications"
"read:reactions": "View your reactions" "read:reactions": "View your reactions"
"write:reactions": "Edit your reactions" "write:reactions": "Edit your reactions"
"write:votes": "Vote on a poll" "write:votes": "Vote on a poll"
@ -1150,18 +1159,18 @@ _permissions:
"write:page-likes": "Edit your likes on pages" "write:page-likes": "Edit your likes on pages"
"read:user-groups": "View your user groups" "read:user-groups": "View your user groups"
"write:user-groups": "Edit or delete your user groups" "write:user-groups": "Edit or delete your user groups"
"read:channels": "Read your channels" "read:channels": "View your channels"
"write:channels": "Modify your channels" "write:channels": "Edit your channels"
"read:gallery": "View your gallery" "read:gallery": "View your gallery"
"write:gallery": "Edit your gallery" "write:gallery": "Edit your gallery"
"read:gallery-likes": "View list of liked gallery posts" "read:gallery-likes": "View your list of liked gallery posts"
"write:gallery-likes": "Edit list of liked gallery posts" "write:gallery-likes": "Edit your list of liked gallery posts"
_auth: _auth:
shareAccess: "Would you like to authorize \"{name}\" to access this account?" shareAccess: "Would you like to authorize \"{name}\" to access this account?"
shareAccessAsk: "Are you sure you want to authorize this application to access your account?" shareAccessAsk: "Are you sure you want to authorize this application to access your account?"
permissionAsk: "This application requests the following permissions" permissionAsk: "This application requests the following permissions"
pleaseGoBack: "Please go back to the application" pleaseGoBack: "Please go back to the application"
callback: "Returning back to the application" callback: "Returning to the application"
denied: "Access denied" denied: "Access denied"
_antennaSources: _antennaSources:
all: "All notes" all: "All notes"
@ -1189,7 +1198,7 @@ _widgets:
photos: "Photos" photos: "Photos"
digitalClock: "Digital clock" digitalClock: "Digital clock"
federation: "Federation" federation: "Federation"
postForm: "Compose a note" postForm: "Posting form"
slideshow: "Slideshow" slideshow: "Slideshow"
button: "Button" button: "Button"
onlineUsers: "Online users" onlineUsers: "Online users"
@ -1220,10 +1229,10 @@ _poll:
showResult: "View results" showResult: "View results"
voted: "Voted" voted: "Voted"
closed: "Ended" closed: "Ended"
remainingDays: "{d} days {h} hours remaining" remainingDays: "{d} day(s) {h} hour(s) remaining"
remainingHours: "{h} hours {m} minutes remaining" remainingHours: "{h} hour(s) {m} minute(s) remaining"
remainingMinutes: "{m} minutes {s} seconds remaining" remainingMinutes: "{m} minute(s) {s} second(s) remaining"
remainingSeconds: "{s} seconds remaining" remainingSeconds: "{s} second(s) remaining"
_visibility: _visibility:
public: "Public" public: "Public"
publicDescription: "Your note will be visible for all users" publicDescription: "Your note will be visible for all users"
@ -1253,7 +1262,7 @@ _profile:
youCanIncludeHashtags: "You can also include hashtags in your bio." youCanIncludeHashtags: "You can also include hashtags in your bio."
metadata: "Additional Information" metadata: "Additional Information"
metadataEdit: "Edit additional Information" metadataEdit: "Edit additional Information"
metadataDescription: "You can display up to four additional information fields in your profile." metadataDescription: "Using these, you can display additional information fields in your profile."
metadataLabel: "Label" metadataLabel: "Label"
metadataContent: "Content" metadataContent: "Content"
changeAvatar: "Change avatar" changeAvatar: "Change avatar"
@ -1269,29 +1278,29 @@ _exportOrImport:
_charts: _charts:
federation: "Federation" federation: "Federation"
apRequest: "Requests" apRequest: "Requests"
usersIncDec: "Difference in # of users" usersIncDec: "Difference in the number of users"
usersTotal: "Total # of users" usersTotal: "Total number of users"
activeUsers: "Active users" activeUsers: "Active users"
notesIncDec: "Difference in # of notes" notesIncDec: "Difference in the number of notes"
localNotesIncDec: "Difference in # of local notes" localNotesIncDec: "Difference in the number of local notes"
remoteNotesIncDec: "Difference in # of remote notes" remoteNotesIncDec: "Difference in the number of remote notes"
notesTotal: "Total # of notes" notesTotal: "Total number of notes"
filesIncDec: "Difference in # of files" filesIncDec: "Difference in the number of files"
filesTotal: "Total # of files" filesTotal: "Total number of files"
storageUsageIncDec: "Difference in storage usage" storageUsageIncDec: "Difference in storage usage"
storageUsageTotal: "Total storage usage" storageUsageTotal: "Total storage usage"
_instanceCharts: _instanceCharts:
requests: "Requests" requests: "Requests"
users: "Difference in # of users" users: "Difference in the number of users"
usersTotal: "Cumulative total # of users" usersTotal: "Cumulative number of users"
notes: "Difference in # of notes" notes: "Difference in the number of notes"
notesTotal: "Cumulative total # of notes" notesTotal: "Cumulative number of notes"
ff: "Difference in # of followed users / followers " ff: "Difference in the number of followed users / followers "
ffTotal: "Cumulative total # of followed users / followers" ffTotal: "Cumulative number of followed users / followers"
cacheSize: "Difference in cache size" cacheSize: "Difference in cache size"
cacheSizeTotal: "Cumulative total cache size" cacheSizeTotal: "Cumulative total cache size"
files: "Difference in # of files" files: "Difference in the number of files"
filesTotal: "Cumulative total # of files" filesTotal: "Cumulative number of files"
_timelines: _timelines:
home: "Home" home: "Home"
local: "Local" local: "Local"
@ -1300,7 +1309,7 @@ _timelines:
_pages: _pages:
newPage: "Create a new Page" newPage: "Create a new Page"
editPage: "Edit this Page" editPage: "Edit this Page"
readPage: "Source view activated" readPage: "Viewing this Page's source"
created: "Page successfully created" created: "Page successfully created"
updated: "Page successfully edited" updated: "Page successfully edited"
deleted: "Page successfully deleted" deleted: "Page successfully deleted"
@ -1315,7 +1324,7 @@ _pages:
unlike: "Remove like" unlike: "Remove like"
my: "My Pages" my: "My Pages"
liked: "Liked Pages" liked: "Liked Pages"
featured: "Featured" featured: "Popular"
inspector: "Inspector" inspector: "Inspector"
contents: "Contents" contents: "Contents"
content: "Page block" content: "Page block"
@ -1346,10 +1355,10 @@ _pages:
if: "If" if: "If"
_if: _if:
variable: "Variable" variable: "Variable"
post: "Compose a note" post: "Posting form"
_post: _post:
text: "Content" text: "Content"
attachCanvasImage: "Post with canvas image" attachCanvasImage: "Attach canvas image"
canvasId: "Canvas ID" canvasId: "Canvas ID"
textInput: "Text input" textInput: "Text input"
_textInput: _textInput:
@ -1385,11 +1394,11 @@ _pages:
_counter: _counter:
name: "Variable name" name: "Variable name"
text: "Title" text: "Title"
inc: "Increase by" inc: "Step"
_button: _button:
text: "Title" text: "Title"
colored: "Colored" colored: "Colored"
action: "Operation when the button is pressed" action: "Behavior when the button is pressed"
_action: _action:
dialog: "Show a dialog" dialog: "Show a dialog"
_dialog: _dialog:
@ -1431,11 +1440,11 @@ _pages:
strLen: "Text length" strLen: "Text length"
_strLen: _strLen:
arg1: "Text" arg1: "Text"
strPick: "Extract character" strPick: "Extract string"
_strPick: _strPick:
arg1: "Text" arg1: "Text"
arg2: "Character location" arg2: "String location"
strReplace: "Text replacement" strReplace: "Replacement string"
_strReplace: _strReplace:
arg1: "Text" arg1: "Text"
arg2: "Text to be replaced" arg2: "Text to be replaced"
@ -1529,7 +1538,7 @@ _pages:
arg2: "Maximum value" arg2: "Maximum value"
dailyRandomPick: "Randomly choose from a list (Changes once a day for each user)" dailyRandomPick: "Randomly choose from a list (Changes once a day for each user)"
_dailyRandomPick: _dailyRandomPick:
arg1: "Lists" arg1: "List"
seedRandom: "Random (with seed)" seedRandom: "Random (with seed)"
_seedRandom: _seedRandom:
arg1: "Seed" arg1: "Seed"
@ -1603,6 +1612,7 @@ _notification:
youReceivedFollowRequest: "You've received a follow request" youReceivedFollowRequest: "You've received a follow request"
yourFollowRequestAccepted: "Your follow request was accepted" yourFollowRequestAccepted: "Your follow request was accepted"
youWereInvitedToGroup: "You've been invited to a group" youWereInvitedToGroup: "You've been invited to a group"
pollEnded: "Poll results have become available"
_types: _types:
all: "All" all: "All"
follow: "New followers" follow: "New followers"
@ -1612,6 +1622,7 @@ _notification:
quote: "Quotes" quote: "Quotes"
reaction: "Reactions" reaction: "Reactions"
pollVote: "Votes on polls" pollVote: "Votes on polls"
pollEnded: "Polls ending"
receiveFollowRequest: "Received follow requests" receiveFollowRequest: "Received follow requests"
followRequestAccepted: "Accepted follow requests" followRequestAccepted: "Accepted follow requests"
groupInvited: "Group invitations" groupInvited: "Group invitations"
@ -1622,12 +1633,12 @@ _deck:
columnMargin: "Margin between columns" columnMargin: "Margin between columns"
columnHeaderHeight: "Column header height" columnHeaderHeight: "Column header height"
addColumn: "Add column" addColumn: "Add column"
swapLeft: "Swap left" swapLeft: "Swap with the left column"
swapRight: "Swap right" swapRight: "Swap with the right column"
swapUp: "Swap with above" swapUp: "Swap with the above column"
swapDown: "Swap with below" swapDown: "Swap with the below column"
stackLeft: "Stack on left column" stackLeft: "Stack with the left column"
popRight: "Pop to the right" popRight: "Pop column to the right"
profile: "Profile" profile: "Profile"
_columns: _columns:
main: "Main" main: "Main"

View file

@ -9,7 +9,7 @@ username: "Uzantnomo"
password: "Pasvorto" password: "Pasvorto"
forgotPassword: "Ĉu vi forgesis pasvorton?" forgotPassword: "Ĉu vi forgesis pasvorton?"
fetchingAsApObject: "Informpetado de la Fediverso…" fetchingAsApObject: "Informpetado de la Fediverso…"
ok: "Bone" ok: "Okej"
gotIt: "Kompreni" gotIt: "Kompreni"
cancel: "Nuligi" cancel: "Nuligi"
enterUsername: "Entajpu uzantnomon" enterUsername: "Entajpu uzantnomon"
@ -71,7 +71,7 @@ lists: "Listoj"
noLists: "Neniu listo" noLists: "Neniu listo"
note: "Noti" note: "Noti"
notes: "Notoj" notes: "Notoj"
following: "Sekvata" following: "Sekvatoj"
followers: "Sekvantoj" followers: "Sekvantoj"
followsYou: "Sekvas vin" followsYou: "Sekvas vin"
createList: "Krei liston" createList: "Krei liston"
@ -224,7 +224,7 @@ resetAreYouSure: "Ĉu vi certas restarigi?"
saved: "Konservita" saved: "Konservita"
messaging: "Retbabili" messaging: "Retbabili"
upload: "Alŝuti" upload: "Alŝuti"
keepOriginalUploading: "Konservi la originalan bildon" keepOriginalUploading: "Konservi originalon"
fromDrive: "De la disko" fromDrive: "De la disko"
fromUrl: "De URL" fromUrl: "De URL"
uploadFromUrl: "Alŝuti de URL" uploadFromUrl: "Alŝuti de URL"
@ -278,6 +278,7 @@ rename: "Alinomi"
avatar: "Bildsimbolo" avatar: "Bildsimbolo"
banner: "Standardo" banner: "Standardo"
nsfw: "Enhavo ne estas deca por laborejo (NSFW)" nsfw: "Enhavo ne estas deca por laborejo (NSFW)"
whenServerDisconnected: "Kiam vi malligiĝas de servilo"
disconnectedFromServer: "Malkonektita de servilo" disconnectedFromServer: "Malkonektita de servilo"
reload: "Reŝargi" reload: "Reŝargi"
doNothing: "Ignori" doNothing: "Ignori"
@ -396,7 +397,6 @@ next: "Sekve"
retype: "Retajpu" retype: "Retajpu"
noteOf: "Noto de {user}" noteOf: "Noto de {user}"
inviteToGroup: "Inviti al grupo" inviteToGroup: "Inviti al grupo"
maxNoteTextLength: "Limnombro de leteroj en noto"
quoteAttached: "Kun citaĵo" quoteAttached: "Kun citaĵo"
quoteQuestion: "Ĉu vi volas aldoni citaĵon?" quoteQuestion: "Ĉu vi volas aldoni citaĵon?"
noMessagesYet: "Ankoraŭ neniu mesaĝo" noMessagesYet: "Ankoraŭ neniu mesaĝo"
@ -420,7 +420,7 @@ signinWith: "Saluti kun {x}"
signinFailed: "Fuŝiĝis ensaluti. Bonvolu kontroli uzantnomon kaj pasvorton." signinFailed: "Fuŝiĝis ensaluti. Bonvolu kontroli uzantnomon kaj pasvorton."
or: "Aŭ" or: "Aŭ"
language: "Lingvo" language: "Lingvo"
uiLanguage: "Lingvo de fasado" uiLanguage: "Lingvo de la fasado"
groupInvited: "Invitita al grupo" groupInvited: "Invitita al grupo"
aboutX: "Pri {x}" aboutX: "Pri {x}"
useOsNativeEmojis: "Uzi la emoĵiojn implicitan de la operaciumo" useOsNativeEmojis: "Uzi la emoĵiojn implicitan de la operaciumo"
@ -648,7 +648,7 @@ high: "Alta"
middle: "Meza" middle: "Meza"
low: "Malalta" low: "Malalta"
emailNotConfiguredWarning: "Vi ne agordis retpoŝtadreso." emailNotConfiguredWarning: "Vi ne agordis retpoŝtadreso."
customCss: "Personecigita CSS" customCss: "Propra CSS"
global: "Malloka" global: "Malloka"
squareAvatars: "Montri bildsimbolon kiel kvadrata" squareAvatars: "Montri bildsimbolon kiel kvadrata"
sent: "Sendi" sent: "Sendi"
@ -683,14 +683,20 @@ hide: "Kaŝi"
leaveGroup: "Eliĝi el la grupo" leaveGroup: "Eliĝi el la grupo"
leaveGroupConfirm: "Ĉu vi certas ke vi volas eliĝi el la grupo {name}?" leaveGroupConfirm: "Ĉu vi certas ke vi volas eliĝi el la grupo {name}?"
welcomeBackWithName: "Bonrevenon, {name}!" welcomeBackWithName: "Bonrevenon, {name}!"
clickToFinishEmailVerification: "Volu klaki [{ok}] por fini la konfirmon de vian retadreson" clickToFinishEmailVerification: "Volu klaki [{ok}] por fini konfirmon de via retadreso."
smartphone: "Saĝtelefono" smartphone: "Saĝtelefono"
tablet: "Platkomputilo" tablet: "Platkomputilo"
auto: "Aŭtomate" auto: "Aŭtomate"
searchByGoogle: "Serĉi en Google-Serĉo"
tenMinutes: "10 minutoj"
oneHour: "1 horo"
oneDay: "1 tago"
oneWeek: "1 semajno"
_emailUnavailable: _emailUnavailable:
used: "La retpoŝto jam estas uzita." used: "La retpoŝto jam estas uzita."
format: "Nevalida formato." format: "Nevalida formato."
disposable: "Dumtempa retpoŝto ne estas uzebla." disposable: "Dumtempa retpoŝto ne estas uzebla."
mx: "Ĉi retpoŝto-servilo ne estas uzebla."
smtp: "Tiu retpoŝta servilo ne respondas" smtp: "Tiu retpoŝta servilo ne respondas"
_ffVisibility: _ffVisibility:
public: "Publika" public: "Publika"
@ -770,9 +776,9 @@ _channel:
usersCount: "{n} partoprenantoj" usersCount: "{n} partoprenantoj"
notesCount: "{n} notoj" notesCount: "{n} notoj"
_menuDisplay: _menuDisplay:
sideFull: "Flanko" sideFull: "Sur la flanko"
sideIcon: "Flanko (bildsimbolo)" sideIcon: "Sur la flanko (bildsimbolo)"
top: "Supro" top: "Sur la supro"
hide: "Kaŝi" hide: "Kaŝi"
_wordMute: _wordMute:
muteWords: "Silentigitaj vortoj" muteWords: "Silentigitaj vortoj"
@ -920,7 +926,6 @@ _postForm:
c: "Kio estas sur via penso?" c: "Kio estas sur via penso?"
d: "Kion vi volas diri?" d: "Kion vi volas diri?"
e: "Komencu skribi tie" e: "Komencu skribi tie"
f: "Atendanta de vi skribon…"
_profile: _profile:
name: "Nomo" name: "Nomo"
username: "Uzantnomo" username: "Uzantnomo"

View file

@ -321,8 +321,6 @@ disablingTimelinesInfo: "Aunque se desactiven estas lineas de tiempo, por conven
registration: "Registro" registration: "Registro"
enableRegistration: "Permitir nuevos registros" enableRegistration: "Permitir nuevos registros"
invite: "Invitar" invite: "Invitar"
proxyRemoteFiles: "Hacer proxy de archivos remotos"
proxyRemoteFilesDescription: "Si activa esta configuración, los archivos remotos no almacenados o borrados por exceso de capacidad serán mostrados via proxy local y generarán una miniatura. Eso no afectará el almacenamiento del servidor."
driveCapacityPerLocalAccount: "Capacidad del drive por usuario local" driveCapacityPerLocalAccount: "Capacidad del drive por usuario local"
driveCapacityPerRemoteAccount: "Capacidad del drive por usuario remoto" driveCapacityPerRemoteAccount: "Capacidad del drive por usuario remoto"
inMb: "En megabytes" inMb: "En megabytes"
@ -418,7 +416,6 @@ next: "Siguiente"
retype: "Intentar de nuevo" retype: "Intentar de nuevo"
noteOf: "Notas de {user}" noteOf: "Notas de {user}"
inviteToGroup: "Invitar al grupo" inviteToGroup: "Invitar al grupo"
maxNoteTextLength: "Límite de caracteres en una nota"
quoteAttached: "Cita añadida" quoteAttached: "Cita añadida"
quoteQuestion: "¿Quiere añadir una cita?" quoteQuestion: "¿Quiere añadir una cita?"
noMessagesYet: "Aún no hay chat" noMessagesYet: "Aún no hay chat"
@ -765,6 +762,7 @@ muteThread: "Ocultar hilo"
unmuteThread: "Mostrar hilo" unmuteThread: "Mostrar hilo"
ffVisibility: "Visibilidad de seguidores y seguidos" ffVisibility: "Visibilidad de seguidores y seguidos"
hide: "Ocultar" hide: "Ocultar"
indefinitely: "Sin límite de tiempo"
_ffVisibility: _ffVisibility:
public: "Publicar" public: "Publicar"
_accountDelete: _accountDelete:

View file

@ -323,8 +323,6 @@ disablingTimelinesInfo: "Même si vous désactivez ces fils, les administrateur
registration: "Sinscrire" registration: "Sinscrire"
enableRegistration: "Autoriser les nouvelles inscriptions" enableRegistration: "Autoriser les nouvelles inscriptions"
invite: "Inviter" invite: "Inviter"
proxyRemoteFiles: "Utiliser les fichiers distants comme proxy"
proxyRemoteFilesDescription: "Si vous activez ce paramètre, les fichiers distants non stockés ou supprimés en raison d'une capacité excédentaire seront affichés via un proxy local et généreront une miniature. Cela n'affectera pas le stockage du serveur."
driveCapacityPerLocalAccount: "Volume du Drive par utilisateur local" driveCapacityPerLocalAccount: "Volume du Drive par utilisateur local"
driveCapacityPerRemoteAccount: "Volume du Drive par utilisateur distant" driveCapacityPerRemoteAccount: "Volume du Drive par utilisateur distant"
inMb: "en mégaoctets" inMb: "en mégaoctets"
@ -420,7 +418,6 @@ next: "Suivant"
retype: "Confirmation" retype: "Confirmation"
noteOf: "Notes de {user}" noteOf: "Notes de {user}"
inviteToGroup: "Inviter dans un groupe" inviteToGroup: "Inviter dans un groupe"
maxNoteTextLength: "Limite du nombre de caractères pour les notes"
quoteAttached: "Avec citation" quoteAttached: "Avec citation"
quoteQuestion: "Souhaitez-vous ajouter une citation ?" quoteQuestion: "Souhaitez-vous ajouter une citation ?"
noMessagesYet: "Pas encore de discussion" noMessagesYet: "Pas encore de discussion"
@ -592,6 +589,7 @@ smtpSecure: "Utiliser SSL/TLS implicitement dans les connexions SMTP"
smtpSecureInfo: "Désactiver cette option lorsque STARTTLS est utilisé" smtpSecureInfo: "Désactiver cette option lorsque STARTTLS est utilisé"
testEmail: "Tester la distribution de courriel" testEmail: "Tester la distribution de courriel"
wordMute: "Filtre de mots" wordMute: "Filtre de mots"
regexpError: "Erreur dexpression régulière"
instanceMute: "Instance en sourdine" instanceMute: "Instance en sourdine"
userSaysSomething: "{name} a dit quelque chose" userSaysSomething: "{name} a dit quelque chose"
makeActive: "Activer" makeActive: "Activer"
@ -620,6 +618,7 @@ reportAbuse: "Signaler"
reportAbuseOf: "Signaler {name}" reportAbuseOf: "Signaler {name}"
fillAbuseReportDescription: "Veuillez expliquer les raisons du signalement. S'il s'agit d'une note précise, veuillez en donner le lien." fillAbuseReportDescription: "Veuillez expliquer les raisons du signalement. S'il s'agit d'une note précise, veuillez en donner le lien."
abuseReported: "Le rapport est envoyé. Merci." abuseReported: "Le rapport est envoyé. Merci."
reporter: "Signalé par"
reporteeOrigin: "Origine du signalement" reporteeOrigin: "Origine du signalement"
reporterOrigin: "Signalé par" reporterOrigin: "Signalé par"
forwardReport: "Transférer le signalement à linstance distante" forwardReport: "Transférer le signalement à linstance distante"
@ -818,6 +817,22 @@ leaveGroup: "Quitter le groupe"
leaveGroupConfirm: "Êtes vous sûr de vouloir quitter \"{name}\" ?" leaveGroupConfirm: "Êtes vous sûr de vouloir quitter \"{name}\" ?"
welcomeBackWithName: "Heureux de vous revoir, {name}" welcomeBackWithName: "Heureux de vous revoir, {name}"
clickToFinishEmailVerification: "Veuillez cliquer sur [{ok}] afin de compléter la vérification par courriel." clickToFinishEmailVerification: "Veuillez cliquer sur [{ok}] afin de compléter la vérification par courriel."
overridedDeviceKind: "Type dappareil"
smartphone: "Smartphone"
tablet: "Tablette"
auto: "Automatique"
themeColor: "Couleur du thème"
size: "Taille"
numberOfColumn: "Nombre de colonnes"
searchByGoogle: "Google"
instanceDefaultLightTheme: "Thème clair par défaut sur toute linstance"
instanceDefaultDarkTheme: "Thème sombre par défaut sur toute linstance"
mutePeriod: "Durée de mise en sourdine"
indefinitely: "Illimité"
tenMinutes: "10 minutes"
oneHour: "1 heure"
oneDay: "1 jour"
oneWeek: "1 semaine"
_emailUnavailable: _emailUnavailable:
used: "Non disponible" used: "Non disponible"
format: "Le format de cette adresse de courriel est invalide" format: "Le format de cette adresse de courriel est invalide"

1
locales/hr-HR.yml Normal file
View file

@ -0,0 +1 @@
---

View file

@ -325,8 +325,6 @@ disablingTimelinesInfo: "Admin dan Moderator akan selalu memiliki akses ke semua
registration: "Pendaftaran" registration: "Pendaftaran"
enableRegistration: "Nyalakan pendaftaran pengguna baru" enableRegistration: "Nyalakan pendaftaran pengguna baru"
invite: "Undang" invite: "Undang"
proxyRemoteFiles: "Proksi berkas remote"
proxyRemoteFilesDescription: "Jika diaktifkan, berkas luar yang (1) tidak disimpan secara lokal atau (2) terhapus dari melewati batas penyimpanan akan diproksi secara lokal (dengan thumbnail). Ini tidak akan mempengaruhi server penyimpanan."
driveCapacityPerLocalAccount: "Kapasitas drive per pengguna lokal" driveCapacityPerLocalAccount: "Kapasitas drive per pengguna lokal"
driveCapacityPerRemoteAccount: "Kapasitas drive per pengguna remote" driveCapacityPerRemoteAccount: "Kapasitas drive per pengguna remote"
inMb: "dalam Megabytes" inMb: "dalam Megabytes"
@ -422,7 +420,6 @@ next: "Selanjutnya"
retype: "Masukkan ulang" retype: "Masukkan ulang"
noteOf: "Catatan milik {user}" noteOf: "Catatan milik {user}"
inviteToGroup: "Undang ke grup" inviteToGroup: "Undang ke grup"
maxNoteTextLength: "Batas karakter catatan"
quoteAttached: "Dikutip" quoteAttached: "Dikutip"
quoteQuestion: "Apakah kamu ingin menambahkan kutipan?" quoteQuestion: "Apakah kamu ingin menambahkan kutipan?"
noMessagesYet: "Tidak ada pesan" noMessagesYet: "Tidak ada pesan"
@ -828,6 +825,7 @@ overridedDeviceKind: "Tipe perangkat"
smartphone: "Ponsel" smartphone: "Ponsel"
tablet: "Tablet" tablet: "Tablet"
auto: "Otomatis" auto: "Otomatis"
indefinitely: "Selamanya"
_emailUnavailable: _emailUnavailable:
used: "Alamat surel ini telah digunakan" used: "Alamat surel ini telah digunakan"
format: "Format tidak valid." format: "Format tidak valid."

View file

@ -321,8 +321,6 @@ disablingTimelinesInfo: "Anche se disabiliti queste timeline, gli amministratori
registration: "Iscriviti" registration: "Iscriviti"
enableRegistration: "Permettere nuove registrazioni" enableRegistration: "Permettere nuove registrazioni"
invite: "Invita" invite: "Invita"
proxyRemoteFiles: "Usare file remoti come proxy"
proxyRemoteFilesDescription: "Attivando questa opzione i file remoti non salvati o cancellati perché eccedenti il limite di archiviazione verranno inoltrati tramite proxy, inclusa la generazione di anteprime. Non ha effetto sullo spazio di archiviazione del server."
driveCapacityPerLocalAccount: "Volume del Drive per utente locale" driveCapacityPerLocalAccount: "Volume del Drive per utente locale"
driveCapacityPerRemoteAccount: "Volume del Drive per utente remoto" driveCapacityPerRemoteAccount: "Volume del Drive per utente remoto"
inMb: "in Megabytes" inMb: "in Megabytes"
@ -418,7 +416,6 @@ next: "Avanti"
retype: "Conferma" retype: "Conferma"
noteOf: "Note di {user}" noteOf: "Note di {user}"
inviteToGroup: "Invitare al gruppo" inviteToGroup: "Invitare al gruppo"
maxNoteTextLength: "Lunghezza massima delle note"
quoteAttached: "Citazione allegata" quoteAttached: "Citazione allegata"
quoteQuestion: "Vuoi aggiungere una citazione?" quoteQuestion: "Vuoi aggiungere una citazione?"
noMessagesYet: "Ancora nessuna chat" noMessagesYet: "Ancora nessuna chat"
@ -805,6 +802,7 @@ leaveGroupConfirm: "Uscire da「{name}」?"
useDrawerReactionPickerForMobile: "Mostra sul drawer da dispositivo mobile" useDrawerReactionPickerForMobile: "Mostra sul drawer da dispositivo mobile"
welcomeBackWithName: "Bentornato/a, {name}" welcomeBackWithName: "Bentornato/a, {name}"
clickToFinishEmailVerification: "Fai click su [{ok}] per completare la verifica dell'indirizzo email." clickToFinishEmailVerification: "Fai click su [{ok}] per completare la verifica dell'indirizzo email."
indefinitely: "Non scade"
_emailUnavailable: _emailUnavailable:
used: "Email già in uso" used: "Email già in uso"
format: "Formato email non valido" format: "Formato email non valido"

View file

@ -834,6 +834,12 @@ searchByGoogle: "ググる"
instanceDefaultLightTheme: "インスタンスデフォルトのライトテーマ" instanceDefaultLightTheme: "インスタンスデフォルトのライトテーマ"
instanceDefaultDarkTheme: "インスタンスデフォルトのダークテーマ" instanceDefaultDarkTheme: "インスタンスデフォルトのダークテーマ"
instanceDefaultThemeDescription: "オブジェクト形式のテーマコードを記入します。" instanceDefaultThemeDescription: "オブジェクト形式のテーマコードを記入します。"
mutePeriod: "ミュートする期限"
indefinitely: "無期限"
tenMinutes: "10分"
oneHour: "1時間"
oneDay: "1日"
oneWeek: "1週間"
_emailUnavailable: _emailUnavailable:
used: "既に使用されています" used: "既に使用されています"
@ -1661,6 +1667,7 @@ _notification:
youReceivedFollowRequest: "フォローリクエストが来ました" youReceivedFollowRequest: "フォローリクエストが来ました"
yourFollowRequestAccepted: "フォローリクエストが承認されました" yourFollowRequestAccepted: "フォローリクエストが承認されました"
youWereInvitedToGroup: "{userName}があなたをグループに招待しました" youWereInvitedToGroup: "{userName}があなたをグループに招待しました"
pollEnded: "アンケートの結果が出ました"
emptyPushNotificationMessage: "プッシュ通知の更新をしました" emptyPushNotificationMessage: "プッシュ通知の更新をしました"
_types: _types:
@ -1672,6 +1679,7 @@ _notification:
quote: "引用" quote: "引用"
reaction: "リアクション" reaction: "リアクション"
pollVote: "アンケートに投票された" pollVote: "アンケートに投票された"
pollEnded: "アンケートが終了"
receiveFollowRequest: "フォロー申請を受け取った" receiveFollowRequest: "フォロー申請を受け取った"
followRequestAccepted: "フォローが受理された" followRequestAccepted: "フォローが受理された"
groupInvited: "グループに招待された" groupInvited: "グループに招待された"

View file

@ -323,8 +323,6 @@ disablingTimelinesInfo: "ここらへんのタイムラインを使えんよう
registration: "登録" registration: "登録"
enableRegistration: "一見さんでも誰でもいらっしゃ~い" enableRegistration: "一見さんでも誰でもいらっしゃ~い"
invite: "来てや" invite: "来てや"
proxyRemoteFiles: "リモートのファイルをプロキシする"
proxyRemoteFilesDescription: "この設定を有効にしたら、保存してなかったり容量が足らんくて消されたリモートファイルをローカルでプロキシして、サムネイルを作るようになるで。サーバーの容量には関係ないで。"
driveCapacityPerLocalAccount: "ローカルユーザーひとりあたりのドライブ容量" driveCapacityPerLocalAccount: "ローカルユーザーひとりあたりのドライブ容量"
driveCapacityPerRemoteAccount: "リモートユーザーひとりあたりのドライブ容量" driveCapacityPerRemoteAccount: "リモートユーザーひとりあたりのドライブ容量"
inMb: "メガバイト単位" inMb: "メガバイト単位"
@ -417,7 +415,6 @@ next: "次"
retype: "もっかい入力" retype: "もっかい入力"
noteOf: "{user}のノート" noteOf: "{user}のノート"
inviteToGroup: "グループに招く" inviteToGroup: "グループに招く"
maxNoteTextLength: "ノートの文字数制限"
quoteAttached: "引用付いとるで" quoteAttached: "引用付いとるで"
quoteQuestion: "引用として添付してもええか?" quoteQuestion: "引用として添付してもええか?"
noMessagesYet: "まだチャットはあらへんで" noMessagesYet: "まだチャットはあらへんで"
@ -658,6 +655,7 @@ global: "グローバル"
sent: "送信" sent: "送信"
hashtags: "ハッシュタグ" hashtags: "ハッシュタグ"
hide: "隠す" hide: "隠す"
indefinitely: "無期限"
_ad: _ad:
back: "戻る" back: "戻る"
_gallery: _gallery:

View file

@ -325,8 +325,6 @@ disablingTimelinesInfo: "특정 타임라인을 비활성화하더라도 관리
registration: "등록" registration: "등록"
enableRegistration: "신규 회원가입을 활성화" enableRegistration: "신규 회원가입을 활성화"
invite: "초대" invite: "초대"
proxyRemoteFiles: "리모트 파일 프록시"
proxyRemoteFilesDescription: "이 설정을 활성화할 경우, 저장되지 않았거나 저장용량 초과로 삭제된 리모트 파일을 로컬에서 프록시하여 썸네일을 생성하게 됩니다. 서버의 스토리지에는 영향을 주지 않습니다."
driveCapacityPerLocalAccount: "로컬 유저 한 명당 드라이브 용량" driveCapacityPerLocalAccount: "로컬 유저 한 명당 드라이브 용량"
driveCapacityPerRemoteAccount: "리모트 유저 한 명당 드라이브 용량" driveCapacityPerRemoteAccount: "리모트 유저 한 명당 드라이브 용량"
inMb: "메가바이트 단위" inMb: "메가바이트 단위"
@ -422,7 +420,6 @@ next: "다음"
retype: "다시 입력" retype: "다시 입력"
noteOf: "{user}의 노트" noteOf: "{user}의 노트"
inviteToGroup: "그룹에 초대하기" inviteToGroup: "그룹에 초대하기"
maxNoteTextLength: "노트의 문자 수 제한"
quoteAttached: "인용함" quoteAttached: "인용함"
quoteQuestion: "인용해서 작성하시겠습니까?" quoteQuestion: "인용해서 작성하시겠습니까?"
noMessagesYet: "아직 대화가 없습니다" noMessagesYet: "아직 대화가 없습니다"
@ -828,6 +825,7 @@ overridedDeviceKind: "장치 유형"
smartphone: "스마트폰" smartphone: "스마트폰"
tablet: "태블릿" tablet: "태블릿"
auto: "자동" auto: "자동"
indefinitely: "무기한"
_emailUnavailable: _emailUnavailable:
used: "이 메일 주소는 사용중입니다" used: "이 메일 주소는 사용중입니다"
format: "형식이 올바르지 않습니다" format: "형식이 올바르지 않습니다"

View file

@ -320,8 +320,6 @@ disablingTimelinesInfo: "Administratorzy i moderatorzy będą zawsze mieć dost
registration: "Zarejestruj się" registration: "Zarejestruj się"
enableRegistration: "Włącz rejestrację nowych użytkowników" enableRegistration: "Włącz rejestrację nowych użytkowników"
invite: "Zaproś" invite: "Zaproś"
proxyRemoteFiles: "Przekierowuj pliki obcych instancji przez proxy"
proxyRemoteFilesDescription: "Gdy ta opcja jest włączona, zdalne pliki które nie są przechowywane lokalnie, lub zostały usunięte z powodu przekroczenia limitu miejsca będą kierowane przez proxy, razem z generowaniem miniatur. Nie ma to żadnego wpływu na przestrzeń dyskową serwera."
driveCapacityPerLocalAccount: "Powierzchnia dyskowa na lokalnego użytkownika" driveCapacityPerLocalAccount: "Powierzchnia dyskowa na lokalnego użytkownika"
driveCapacityPerRemoteAccount: "Powierzchnia dyskowa na zdalnego użytkownika" driveCapacityPerRemoteAccount: "Powierzchnia dyskowa na zdalnego użytkownika"
inMb: "W megabajtach" inMb: "W megabajtach"
@ -417,7 +415,6 @@ next: "Dalej"
retype: "Wprowadź ponownie" retype: "Wprowadź ponownie"
noteOf: "Wpisy {user}" noteOf: "Wpisy {user}"
inviteToGroup: "Zaproś do grupy" inviteToGroup: "Zaproś do grupy"
maxNoteTextLength: "Limit znaków dla wpisów"
quoteAttached: "Zacytowano" quoteAttached: "Zacytowano"
quoteQuestion: "Czy na pewno chcesz umieścić cytat?" quoteQuestion: "Czy na pewno chcesz umieścić cytat?"
noMessagesYet: "Nie napisano jeszcze wiadomości" noMessagesYet: "Nie napisano jeszcze wiadomości"
@ -761,6 +758,7 @@ received: "Otrzymane"
hashtags: "Hashtag" hashtags: "Hashtag"
pubSub: "Konta Pub/Sub" pubSub: "Konta Pub/Sub"
hide: "Ukryj" hide: "Ukryj"
indefinitely: "Nigdy"
_ffVisibility: _ffVisibility:
public: "Publikuj" public: "Publikuj"
_ad: _ad:

555
locales/ro-RO.yml Normal file
View file

@ -0,0 +1,555 @@
---
_lang_: "Română"
headlineMisskey: "O rețea conectată prin note"
introMisskey: "Bine ai venit! Misskey este un serviciu de microblogging open source și decentralizat.\nCreează \"note\" cu care să îți poți împărți gândurile cu oricine din jurul tău. 📡\nCu \"reacții\" îți poți expirma rapid părerea despre notele oricui. 👍\nHai să explorăm o lume nouă! 🚀"
monthAndDay: "{day}/{month}"
search: "Caută"
notifications: "Notificări"
username: "Nume de utilizator"
password: "Parolă"
forgotPassword: "Am uitat parola"
fetchingAsApObject: "Se aduce din Fediverse..."
ok: "OK"
gotIt: "Am înțeles!"
cancel: "Anulează"
enterUsername: "Introdu numele de utilizator"
renotedBy: "Re-notat de {user}"
noNotes: "Nicio notă"
noNotifications: "Nicio notificare"
instance: "Instanță"
settings: "Setări"
basicSettings: "Setări generale"
otherSettings: "Alte Setări"
openInWindow: "Deschide într-o fereastră"
profile: "Profil"
timeline: "Cronologie"
noAccountDescription: "Acest utilizator încă nu a scris un bio."
login: "Autentifică-te"
loggingIn: "Se autentifică"
logout: "Deconectează-te"
signup: "Înregistrează-te"
uploading: "Se încarcă"
save: "Salvează"
users: "Utilizatori"
addUser: "Adăugă utilizator"
favorite: "Adaugă la favorite"
favorites: "Favorite"
unfavorite: "Elimină din favorite"
favorited: "Adăugat la favorite."
alreadyFavorited: "Deja adăugat la favorite."
cantFavorite: "Nu se poate adăuga la favorite."
pin: "Fixează pe profil"
unpin: "Anulati fixare"
copyContent: "Copiază conținutul"
copyLink: "Copiază link-ul"
delete: "Şterge"
deleteAndEdit: "Șterge și editează"
deleteAndEditConfirm: "Ești sigur că vrei să ștergi această notă și să o editezi? Vei pierde reacțiile, re-notele și răspunsurile acesteia."
addToList: "Adaugă în listă"
sendMessage: "Trimite un mesaj"
copyUsername: "Copiază numele de utilizator"
searchUser: "Caută un utilizator"
reply: "Răspunde"
loadMore: "Incarcă mai mult"
showMore: "Arată mai mult"
youGotNewFollower: "te-a urmărit"
receiveFollowRequest: "Cerere de urmărire primită"
followRequestAccepted: "Cerere de urmărire acceptată"
mention: "Mențiune"
mentions: "Mențiuni"
directNotes: "Note directe"
importAndExport: "Importă / Exportă"
import: "Importă"
export: "Exportă"
files: "Fișiere"
download: "Descarcă"
driveFileDeleteConfirm: "Ești sigur ca vrei să ștergi fișierul \"{name}\"? Notele atașate fișierului vor fi șterse și ele."
unfollowConfirm: "Ești sigur ca vrei să nu mai urmărești pe {name}?"
exportRequested: "Ai cerut un export. S-ar putea să ia un pic. Va fi adăugat in Drive-ul tău odată completat."
importRequested: "Ai cerut un import. S-ar putea să ia un pic."
lists: "Liste"
noLists: "Nu ai nici o listă"
note: "Notă"
notes: "Note"
following: "Urmărești"
followers: "Urmăritori"
followsYou: "Te urmărește"
createList: "Creează listă"
manageLists: "Gestionează listele"
error: "Eroare"
somethingHappened: "A survenit o eroare"
retry: "Reîncearcă"
pageLoadError: "A apărut o eroare la încărcarea paginii."
pageLoadErrorDescription: "De obicei asta este cauzat de o eroare de rețea sau cache-ul browser-ului. Încearcă să cureți cache-ul și apoi să încerci din nou puțin mai târziu."
serverIsDead: "Serverul nu răspunde. Te rugăm să aștepți o perioadă și să încerci din nou."
youShouldUpgradeClient: "Pentru a vedea această pagină, te rugăm să îți actualizezi clientul."
enterListName: "Introdu un nume pentru listă"
privacy: "Confidenţialitate"
makeFollowManuallyApprove: "Fă cererile de urmărire să necesite aprobare"
defaultNoteVisibility: "Vizibilitate implicită"
follow: "Urmărești"
followRequest: "Trimite cerere de urmărire"
followRequests: "Cereri de urmărire"
unfollow: "Nu mai urmări"
followRequestPending: "Cerere de urmărire în așteptare"
enterEmoji: "Introdu un emoji"
renote: "Re-notează"
unrenote: "Ia înapoi re-nota"
renoted: "Re-notat."
cantRenote: "Această postare nu poate fi re-notată."
cantReRenote: "O re-notă nu poate fi re-notată."
quote: "Citează"
pinnedNote: "Notă fixată"
pinned: "Fixat pe profil"
you: "Tu"
clickToShow: "Click pentru a afișa"
sensitive: "NSFW"
add: "Adaugă"
reaction: "Reacție"
reactionSetting: "Reacții care să apară in selectorul de reacții"
reactionSettingDescription2: "Trage pentru a rearanja, apasă pe \"+\" pentru a adăuga."
rememberNoteVisibility: "Amintește setarea de vizibilitate a notelor"
attachCancel: "Înlătură atașament"
markAsSensitive: "Marchează ca NSFW"
unmarkAsSensitive: "Demarchează ca NSFW"
enterFileName: "Introduceţi numele fişierului"
mute: "Amuțește"
unmute: "Înlătură amuțirea"
block: "Blochează"
unblock: "Deblochează"
suspend: "Suspendă"
unsuspend: "Anulează suspendare"
blockConfirm: "Ești sigur că vrei să blochezi acest cont?"
unblockConfirm: "Ești sigur ca vrei să deblochezi acest cont?"
suspendConfirm: "Ești sigur ca vrei să suspendezi acest cont?"
unsuspendConfirm: "Ești sigur ca vrei să nu mai suspendezi acest cont?"
selectList: "Selectează o listă"
selectAntenna: "Selectează o antenă"
selectWidget: "Selectați un widget"
editWidgets: "Editează widget-urile"
editWidgetsExit: "Terminat"
customEmojis: "Emoji personalizat"
emoji: "Emoji"
emojis: "Emoji-uri"
emojiName: "Numele emoji-ului"
emojiUrl: "URL-ul emoji-ului"
addEmoji: "Adaugă un emoji"
settingGuide: "Setări recomandate"
cacheRemoteFiles: "Ține fișierele externe in cache"
cacheRemoteFilesDescription: "Când această setare este dezactivată, fișierele externe sunt încărcate direct din instanța externă. Dezactivarea va scădea utilizarea spațiului de stocare, dar va crește traficul, deoarece thumbnail-urile nu vor fi generate."
flagAsBot: "Marchează acest cont ca bot"
flagAsBotDescription: "Activează această opțiune dacă acest cont este controlat de un program. Daca e activată, aceasta va juca rolul unui indicator pentru dezvoltatori pentru a preveni interacțiunea în lanțuri infinite cu ceilalți boți și ajustează sistemele interne al Misskey pentru a trata acest cont drept un bot."
flagAsCat: "Marchează acest cont ca pisică"
flagAsCatDescription: "Activează această opțiune dacă acest cont este o pisică."
flagShowTimelineReplies: "Arată răspunsurile în cronologie"
flagShowTimelineRepliesDescription: "Dacă e activată vor fi arătate în cronologie răspunsurile utilizatorilor către alte notele altor utilizatori."
autoAcceptFollowed: "Aprobă automat cererile de urmărire de la utilizatorii pe care îi urmărești"
addAccount: "Adaugă un cont"
loginFailed: "Autentificare eșuată"
showOnRemote: "Vezi mai multe pe instanța externă"
general: "General"
wallpaper: "Imagine de fundal"
setWallpaper: "Setați imaginea de fundal"
removeWallpaper: "Șterge imagine de fundal"
searchWith: "Caută: {q}"
youHaveNoLists: "Nu ai nici o listă"
followConfirm: "Ești sigur ca vrei să urmărești pe {name}?"
proxyAccount: "Cont proxy"
proxyAccountDescription: "Un cont proxy este un cont care se comportă ca un urmăritor extern pentru utilizatorii puși sub anumite condiții. De exemplu, când un cineva adaugă un utilizator extern intr-o listă, activitatea utilizatorului extern nu va fi adusă în instanță daca nici un utilizator local nu urmărește acel utilizator, așa că în schimb contul proxy îl va urmări."
host: "Gazdă"
selectUser: "Selectează un utilizator"
recipient: "Destinatar"
annotation: "Adnotări"
federation: "Federație"
instances: "Instanțe"
registeredAt: "Înregistrat în"
latestRequestSentAt: "Ultima cerere trimisă"
latestRequestReceivedAt: "Ultima cerere primită"
latestStatus: "Ultimul status"
storageUsage: "Utilizare stocare"
charts: "Diagrame"
perHour: "Pe oră"
perDay: "Pe zi"
stopActivityDelivery: "Nu mai trimite activități"
blockThisInstance: "Blochează această instanță"
operations: "Operațiuni"
software: "Software"
version: "Versiune"
metadata: "Metadata"
withNFiles: "{n} fișier(e)"
monitor: "Monitor"
jobQueue: "coada de job-uri"
cpuAndMemory: "CPU și memorie"
network: "Rețea"
disk: "Disk"
instanceInfo: "Informații despre instanță"
statistics: "Statistici"
clearQueue: "Șterge coada"
clearQueueConfirmTitle: "Ești sigur că vrei să cureți coada?"
clearQueueConfirmText: "Orice notă rămasă în coadă nu va fi federată. De obicei această operație nu este necesară."
clearCachedFiles: "Golește cache-ul"
clearCachedFilesConfirm: "Ești sigur că vrei să ștergi toate fișierele externe din cache?"
blockedInstances: "Instanțe blocate"
blockedInstancesDescription: "Scrie hostname-urile instanțelor pe care dorești să le blochezi. Instanțele listate nu vor mai putea să comunice cu această instanță."
muteAndBlock: "Amuțiri și Blocări"
mutedUsers: "Utilizatori amuțiți"
blockedUsers: "Utilizatori blocați"
noUsers: "Niciun utilizator"
editProfile: "Editează profilul"
noteDeleteConfirm: "Ești sigur că vrei să ștergi această notă?"
pinLimitExceeded: "Nu poți mai fixa mai multe note"
intro: "Misskey s-a instalat! Te rog crează un utilizator admin."
done: "Gata"
processing: "Se procesează"
preview: "Previzualizare"
default: "Prestabilit"
noCustomEmojis: "Nu e niciun emoji"
noJobs: "Nu e niciun job"
federating: "Federație"
blocked: "Blocat"
suspended: "Suspendat"
all: "Tot"
subscribing: "Abonare"
publishing: "Publicare"
notResponding: "Nu răspunde"
instanceFollowing: "Urmărind în instanță"
instanceFollowers: "Urmăritori ai instanței"
instanceUsers: "Utilizatori ai acestei instanțe"
changePassword: "Schimbă parolă"
security: "Securitate"
retypedNotMatch: "Intrările nu corespund"
currentPassword: "Parola curentă"
newPassword: "Parola nouă"
newPasswordRetype: "Rescrie parola nouă"
attachFile: "Atașează fișiere"
more: "Mai mult!"
featured: "Evidențiat"
usernameOrUserId: "Nume sau ID de utilizator"
noSuchUser: "Utilizatorul nu a fost găsit"
lookup: "Privire"
announcements: "Anunțuri"
imageUrl: "URL-ul imaginii"
remove: "Şterge"
removed: "Șterș cu succes"
removeAreYouSure: "Ești sigur că vrei să înlături {x}?"
deleteAreYouSure: "Ești sigur că vrei să ștergi {x}?"
resetAreYouSure: "Sigur vrei să resetezi?"
saved: "Salvat"
messaging: "Chat"
upload: "Încarcă"
keepOriginalUploading: "Păstrează imaginea originală"
keepOriginalUploadingDescription: "Salvează imaginea originala încărcată fără modificări. Dacă e oprită, o versiune pentru afișarea pe web va fi generată la încărcare."
fromDrive: "Din Drive"
fromUrl: "Din URL"
uploadFromUrl: "Încarcă dintr-un URL"
uploadFromUrlDescription: "URL-ul fișierului pe care dorești să îl încarci"
uploadFromUrlRequested: "Încărcare solicitată"
uploadFromUrlMayTakeTime: "S-ar putea să ia puțin până se finalizează încărcarea."
explore: "Explorează"
messageRead: "Citit"
noMoreHistory: "Nu există mai mult istoric"
startMessaging: "Începe un chat nou"
nUsersRead: "citit de {n}"
agreeTo: "Sunt de acord cu {0}"
tos: "Termenii de utilizare"
start: "Să începem"
home: "Acasă"
remoteUserCaution: "Deoarece acest utilizator este dintr-o instanță externă, informația afișată poate fi incompletă."
activity: "Activitate"
images: "Imagini"
birthday: "Zi de naștere"
yearsOld: "{age} ani"
registeredDate: "Data înregistrării"
location: "Locație"
theme: "Teme"
themeForLightMode: "Temă folosită pentru Modul Luminat"
themeForDarkMode: "Temă folosită pentru Modul Întunecat"
light: "Luminos"
dark: "Întunecat"
lightThemes: "Teme luminoase"
darkThemes: "Teme întunecate"
syncDeviceDarkMode: "Sincronizează Modul Întunecat cu setările dispozitivului"
drive: "Drive"
fileName: "Nume fișier"
selectFile: "Alege un fisier"
selectFiles: "Alege fișiere"
selectFolder: "Selectează un folder"
selectFolders: "Selectează folderele"
renameFile: "Redenumește fișier"
folderName: "Nume folder"
createFolder: "Crează folder"
renameFolder: "Redenumește acest folder"
deleteFolder: "Șterge acest folder"
addFile: "Adăugați un fișier"
emptyDrive: "Drive-ul tău e gol"
emptyFolder: "Folder-ul acesta este gol"
unableToDelete: "Nu se poate șterge"
inputNewFileName: "Introdu un nou nume de fișier"
inputNewDescription: "Introdu o descriere nouă"
inputNewFolderName: "Introdu un nume de folder nou"
circularReferenceFolder: "Destinația folderului este un subfolder al folderului pe care dorești să îl muți."
hasChildFilesOrFolders: "Acest folder nu este gol, așa că nu poate fi șters."
copyUrl: "Copiază URL"
rename: "Redenumește"
avatar: "Avatar"
banner: "Banner"
nsfw: "NSFW"
whenServerDisconnected: "Când pierzi conexiunea cu serverul"
disconnectedFromServer: "Conecțiunea cu serverul a fost pierdută"
reload: "Reîncarcă"
doNothing: "Ignoră"
reloadConfirm: "Ai dori să reîmprospătezi cronologia?"
watch: "Vezi"
unwatch: "Oprește-te din văzut"
accept: "Acceptă"
reject: "Respinge"
normal: "Normal"
instanceName: "Numele instanței"
instanceDescription: "Descrierea instanței"
maintainerName: "Administrator"
maintainerEmail: "Email-ul administratorului"
tosUrl: "URL-ul Termenilor de utilizare"
thisYear: "An"
thisMonth: "Lună"
today: "Azi"
dayX: "{day}"
monthX: "{month}"
yearX: "{year}"
pages: "Pagini"
integration: "Integrare"
connectService: "Conectează"
disconnectService: "Deconectează"
enableLocalTimeline: "Activează cronologia locală"
enableGlobalTimeline: "Activeaza cronologia globală"
disablingTimelinesInfo: "Administratorii și Moderatorii vor avea mereu access la toate cronologiile, chiar dacă nu sunt activate."
registration: "Inregistrare"
enableRegistration: "Activează înregistrările pentru utilizatori noi"
invite: "Invită"
driveCapacityPerLocalAccount: "Capacitatea Drive-ului per utilizator local"
driveCapacityPerRemoteAccount: "Capacitatea Drive-ului per utilizator extern"
inMb: "În megabytes"
iconUrl: "URL-ul iconiței"
bannerUrl: "URL-ul imaginii de banner"
backgroundImageUrl: "URL-ul imaginii de fundal"
basicInfo: "Informații de bază"
pinnedUsers: "Utilizatori fixați"
pinnedUsersDescription: "Scrie utilizatorii, separați prin pauză de rând, care vor fi fixați pe pagina \"Explorează\"."
pinnedPages: "Pagini fixate"
pinnedPagesDescription: "Introdu linkurile Paginilor pe care le vrei fixate in vâruful paginii acestei instanțe, separate de pauze de rând."
pinnedClipId: "ID-ul clip-ului pe care să îl fixezi"
pinnedNotes: "Notă fixată"
hcaptcha: "hCaptcha"
enableHcaptcha: "Activează hCaptcha"
hcaptchaSiteKey: "Site key"
hcaptchaSecretKey: "Secret key"
recaptcha: "reCAPTCHA"
enableRecaptcha: "Activează reCAPTCHA"
recaptchaSiteKey: "Site key"
recaptchaSecretKey: "Secret key"
avoidMultiCaptchaConfirm: "Folosirea mai multor sisteme Captcha poate cauza interferență între acestea. Ai dori să dezactivezi alte sisteme Captcha acum active? Dacă preferi să rămână activate, apasă Anulare."
antennas: "Antene"
manageAntennas: "Gestionează Antenele"
name: "Nume"
antennaSource: "Sursa antenei"
antennaKeywords: "Cuvinte cheie ascultate"
antennaExcludeKeywords: "Cuvinte cheie excluse"
antennaKeywordsDescription: "Separă cu spații pentru o condiție ȘI sau cu o întrerupere de rând pentru o condiție SAU."
notifyAntenna: "Notifică-mă pentru note noi"
withFileAntenna: "Doar note cu fișiere"
enableServiceworker: "Activează ServiceWorker"
antennaUsersDescription: "Scrie un nume de utilizator per linie"
caseSensitive: "Sensibil la majuscule și minuscule"
withReplies: "Include răspunsuri"
connectedTo: "Următoarele conturi sunt conectate"
notesAndReplies: "Note și răspunsuri"
withFiles: "Incluzând fișiere"
silence: "Amuțește"
silenceConfirm: "Ești sigur că vrei să amuțești acest utilizator?"
unsilence: "Anulează amuțirea"
unsilenceConfirm: "Ești sigur că vrei să anulezi amuțirea acestui utilizator?"
popularUsers: "Utilizatori populari"
recentlyUpdatedUsers: "Utilizatori activi recent"
recentlyRegisteredUsers: "Utilizatori ce s-au alăturat recent"
recentlyDiscoveredUsers: "Utilizatori descoperiți recent"
exploreUsersCount: "Aici sunt {count} utilizatori"
exploreFediverse: "Explorează Fediverse-ul"
popularTags: "Taguri populare"
userList: "Liste"
about: "Despre"
aboutMisskey: "Despre Misskey"
administrator: "Administrator"
token: "Token"
twoStepAuthentication: "Autentificare în doi pași"
moderator: "Moderator"
nUsersMentioned: "Menționat de {n} utilizatori"
securityKey: "Cheie de securitate"
securityKeyName: "Numele cheii"
registerSecurityKey: "Înregistrează o cheie de securitate"
lastUsed: "Ultima utilizată"
unregister: "Dezînregistrează"
passwordLessLogin: "Autentificare fără parolă"
resetPassword: "Resetează parola"
newPasswordIs: "Noua parolă este \"{password}\""
reduceUiAnimation: "Redu animațiile interfeței"
share: "Distribuie"
notFound: "Nu a fost găsit"
notFoundDescription: "N-a fost găsită nicio pagină cu acest URL."
uploadFolder: "Folder implicit pentru încărcări"
cacheClear: "Golește cache-ul"
markAsReadAllNotifications: "Marchează toate notificările drept citit"
markAsReadAllUnreadNotes: "Marchează toate notele drept citit"
markAsReadAllTalkMessages: "Marchează toate mesajele drept citit"
help: "Ajutor"
inputMessageHere: "Introdu un mesaj aici"
close: "Închide"
group: "Grup"
groups: "Grupuri"
createGroup: "Crează un grup"
ownedGroups: "Grupuri deținute"
joinedGroups: "Grupuri alăturate"
invites: "Invită"
groupName: "Numele grupului"
members: "Membri"
transfer: "Transferă"
messagingWithUser: "Chat privat"
messagingWithGroup: "Chat de grup"
title: "Titlu"
text: "Text"
enable: "Activează"
next: "Următorul"
retype: "Introdu din nou"
noteOf: "Notă de {user}"
inviteToGroup: "Invită în grup"
quoteAttached: "Citat"
quoteQuestion: "Vrei să adaugi ca citat?"
noMessagesYet: "Niciun mesaj încă"
newMessageExists: "Ai mesaje noi"
onlyOneFileCanBeAttached: "Poți atașa un singur fișier la un mesaj"
signinRequired: "Te rog autentifică-te"
invitations: "Invită"
invitationCode: "Cod de invitație"
checking: "Se verifică..."
available: "Disponibil"
unavailable: "Indisponibil"
usernameInvalidFormat: "Poți folosi litere mari și mici, numere și underscore-uri."
tooShort: "Prea scurt"
tooLong: "Prea lung"
weakPassword: "Parolă slabă"
normalPassword: "Parolă medie"
strongPassword: "Parolă puternică"
passwordMatched: "Se potrivește!"
passwordNotMatched: "Nu se potrivește"
signinWith: "Autentifică-te cu {x}"
signinFailed: "Nu se poate autentifica. Numele de utilizator sau parola introduse sunt incorecte."
tapSecurityKey: "Apasă pe cheia ta de securitate."
or: "Sau"
language: "Limbă"
uiLanguage: "Limba interfeței"
groupInvited: "Ai fost invitat într-un grup"
aboutX: "Despre {x}"
useOsNativeEmojis: "Folosește emojiuri native OS-ului"
disableDrawer: "Nu folosi meniuri în stil sertar"
sounds: "Sunete"
listen: "Ascultă"
none: "Nimic"
showInPage: "Arată în pagină"
popout: "Scoate în afară"
volume: "Volum"
masterVolume: "Volumul principal"
details: "Detalii"
chooseEmoji: "Alege un emoji"
unableToProcess: "Această operație nu poate fi completată"
recentUsed: "Folosit recent"
install: "Instalează"
uninstall: "Dezinstalează"
installedApps: "Aplicații autorizate"
nothing: "Nu e nimic de văzut aici"
installedDate: "Autorizat la data de"
lastUsedDate: "Folosit ultima oara la"
state: "Stare"
sort: "Sortează"
ascendingOrder: "Crescător"
descendingOrder: "Descrescător"
scratchpad: "Scratchpad"
smtpHost: "Gazdă"
smtpUser: "Nume de utilizator"
smtpPass: "Parolă"
clearCache: "Golește cache-ul"
info: "Despre"
user: "Utilizatori"
_email:
_follow:
title: "te-a urmărit"
_mfm:
mention: "Mențiune"
quote: "Citează"
emoji: "Emoji personalizat"
search: "Caută"
_theme:
keys:
mention: "Mențiune"
renote: "Re-notează"
_sfx:
note: "Note"
notification: "Notificări"
chat: "Chat"
_widgets:
notifications: "Notificări"
timeline: "Cronologie"
activity: "Activitate"
federation: "Federație"
jobQueue: "coada de job-uri"
_cw:
show: "Incarcă mai mult"
_visibility:
home: "Acasă"
followers: "Urmăritori"
_profile:
name: "Nume"
username: "Nume de utilizator"
_exportOrImport:
followingList: "Urmărești"
muteList: "Amuțește"
blockingList: "Blochează"
userLists: "Liste"
_charts:
federation: "Federație"
_timelines:
home: "Acasă"
_pages:
blocks:
image: "Imagini"
script:
categories:
list: "Liste"
blocks:
_join:
arg1: "Liste"
_randomPick:
arg1: "Liste"
_dailyRandomPick:
arg1: "Liste"
_seedRandomPick:
arg2: "Liste"
_pick:
arg1: "Liste"
_listLen:
arg1: "Liste"
types:
array: "Liste"
_notification:
youWereFollowed: "te-a urmărit"
youWereInvitedToGroup: "Ai fost invitat într-un grup"
_types:
follow: "Urmărești"
mention: "Mențiune"
renote: "Re-notează"
quote: "Citează"
reaction: "Reacție"
_deck:
_columns:
notifications: "Notificări"
tl: "Cronologie"
antenna: "Antene"
list: "Liste"
mentions: "Mențiuni"

View file

@ -322,8 +322,6 @@ disablingTimelinesInfo: "У администраторов и модератор
registration: "Регистрация" registration: "Регистрация"
enableRegistration: "Разрешить регистрацию" enableRegistration: "Разрешить регистрацию"
invite: "Пригласить" invite: "Пригласить"
proxyRemoteFiles: "Файлы с других сайтов пускать через прокси"
proxyRemoteFilesDescription: "Когда эта настройка включена, файлы с других серверов, которые не сохранены или удалены для освобождения места, будут проксироваться локально, а так же для них будут создаваться миниатюры. Эта настройка не затрагивает хранение на сервере."
driveCapacityPerLocalAccount: "Объём диска на одного локального пользователя" driveCapacityPerLocalAccount: "Объём диска на одного локального пользователя"
driveCapacityPerRemoteAccount: "Объём диска на одного пользователя с другого сайта" driveCapacityPerRemoteAccount: "Объём диска на одного пользователя с другого сайта"
inMb: "В мегабайтах" inMb: "В мегабайтах"
@ -419,7 +417,6 @@ next: "Дальше"
retype: "Введите ещё раз" retype: "Введите ещё раз"
noteOf: "Что пишет {user}" noteOf: "Что пишет {user}"
inviteToGroup: "Пригласить в группу" inviteToGroup: "Пригласить в группу"
maxNoteTextLength: "Максимальная длина текста"
quoteAttached: "Цитата" quoteAttached: "Цитата"
quoteQuestion: "Хотите добавить цитату?" quoteQuestion: "Хотите добавить цитату?"
noMessagesYet: "Пока ни одного сообщения" noMessagesYet: "Пока ни одного сообщения"
@ -818,6 +815,7 @@ leaveGroupConfirm: "Покинуть группу «{name}»?"
useDrawerReactionPickerForMobile: "Выдвижная палитра на мобильном устройстве" useDrawerReactionPickerForMobile: "Выдвижная палитра на мобильном устройстве"
welcomeBackWithName: "С возвращением, {name}!" welcomeBackWithName: "С возвращением, {name}!"
clickToFinishEmailVerification: "Пожалуйста, нажмите [{ok}], чтобы завершить подтверждение адреса электронной почты." clickToFinishEmailVerification: "Пожалуйста, нажмите [{ok}], чтобы завершить подтверждение адреса электронной почты."
indefinitely: "вечно"
_emailUnavailable: _emailUnavailable:
used: "Уже используется" used: "Уже используется"
format: "Неверный формат" format: "Неверный формат"

1
locales/si-LK.yml Normal file
View file

@ -0,0 +1 @@
---

View file

@ -325,8 +325,6 @@ disablingTimelinesInfo: "Administrátori a moderátori majú vždy prístup ku v
registration: "Registrácia" registration: "Registrácia"
enableRegistration: "Povoliť registráciu nových používateľov" enableRegistration: "Povoliť registráciu nových používateľov"
invite: "Pozvať" invite: "Pozvať"
proxyRemoteFiles: "Proxy vzdialených súborov"
proxyRemoteFilesDescription: "Ak je zapnuté, vzdialené súbory, ktoré nie sú uložené lokálne alebo boli odstránené kvôli obmedzeniam úložiska, budú vyžiadané cez proxy, vrátane generovani miniatúr. Neovplyvní to úložisko na serveri."
driveCapacityPerLocalAccount: "Kapacita disku pre používateľa" driveCapacityPerLocalAccount: "Kapacita disku pre používateľa"
driveCapacityPerRemoteAccount: "Kapacita disku pre vzdialeného používateľa" driveCapacityPerRemoteAccount: "Kapacita disku pre vzdialeného používateľa"
inMb: "V megabajtoch" inMb: "V megabajtoch"
@ -422,7 +420,6 @@ next: "Ďalší"
retype: "Zadajte znovu" retype: "Zadajte znovu"
noteOf: "Poznámky používateľa {user}" noteOf: "Poznámky používateľa {user}"
inviteToGroup: "Pozvať do skupiny" inviteToGroup: "Pozvať do skupiny"
maxNoteTextLength: "Maximálny počet znakov poznámky"
quoteAttached: "Citované" quoteAttached: "Citované"
quoteQuestion: "Pripojiť ako citát?" quoteQuestion: "Pripojiť ako citát?"
noMessagesYet: "Zatiaľ žiadne správy" noMessagesYet: "Zatiaľ žiadne správy"
@ -832,6 +829,16 @@ auto: "Automaticky"
themeColor: "Farba témy" themeColor: "Farba témy"
size: "Veľkosť" size: "Veľkosť"
numberOfColumn: "Počet stĺpcov" numberOfColumn: "Počet stĺpcov"
searchByGoogle: "Hľadať cez Google"
instanceDefaultLightTheme: "Predvolená svetlá téma"
instanceDefaultDarkTheme: "Predvolená tmavá téma"
instanceDefaultThemeDescription: "Vložte kód témy v objektovom formáte"
mutePeriod: "Trvanie stíšenia"
indefinitely: "Navždy"
tenMinutes: "10 minút"
oneHour: "1 hodina"
oneDay: "1 deň"
oneWeek: "1 týždeň"
_emailUnavailable: _emailUnavailable:
used: "Táto emailová adresa sa už používa" used: "Táto emailová adresa sa už používa"
format: "Formát emailovej adresy je nesprávny" format: "Formát emailovej adresy je nesprávny"
@ -1604,6 +1611,7 @@ _notification:
youReceivedFollowRequest: "Dostali ste žiadosť o sledovanie" youReceivedFollowRequest: "Dostali ste žiadosť o sledovanie"
yourFollowRequestAccepted: "Vaša žiadosť o sledovanie bola prijatá" yourFollowRequestAccepted: "Vaša žiadosť o sledovanie bola prijatá"
youWereInvitedToGroup: "Pozvať do skupiny" youWereInvitedToGroup: "Pozvať do skupiny"
pollEnded: "Výsledky hlasovania sú k dispozícii."
_types: _types:
all: "Všetky" all: "Všetky"
follow: "Sledujete" follow: "Sledujete"
@ -1613,6 +1621,7 @@ _notification:
quote: "Citovať" quote: "Citovať"
reaction: "Reakcie" reaction: "Reakcie"
pollVote: "Hlasy v hlasovaniach" pollVote: "Hlasy v hlasovaniach"
pollEnded: "Hlasovanie skončilo"
receiveFollowRequest: "Doručené žiadosti o sledovanie" receiveFollowRequest: "Doručené žiadosti o sledovanie"
followRequestAccepted: "Schválené žiadosti o sledovanie" followRequestAccepted: "Schválené žiadosti o sledovanie"
groupInvited: "Pozvánky do skupín" groupInvited: "Pozvánky do skupín"

View file

@ -312,8 +312,6 @@ disablingTimelinesInfo: "Адміністратори та модератори
registration: "Реєстрація" registration: "Реєстрація"
enableRegistration: "Дозволити реєстрацію" enableRegistration: "Дозволити реєстрацію"
invite: "Запросити" invite: "Запросити"
proxyRemoteFiles: "Проксувати файли з інших інстансів"
proxyRemoteFilesDescription: "При увімкненні віддалені файли, які не зберігаються локально або були видалені через недостатнії обсяг пам'яті, будуть локально проксовані включаючи обкладинки. Це налаштування не впливає на пам'ять серверу. "
driveCapacityPerLocalAccount: "Об'єм диска на одного локального користувача" driveCapacityPerLocalAccount: "Об'єм диска на одного локального користувача"
driveCapacityPerRemoteAccount: "Об'єм диска на одного віддаленого користувача" driveCapacityPerRemoteAccount: "Об'єм диска на одного віддаленого користувача"
inMb: "В мегабайтах" inMb: "В мегабайтах"
@ -407,7 +405,6 @@ next: "Далі"
retype: "Введіть ще раз" retype: "Введіть ще раз"
noteOf: "Нотатка {user}" noteOf: "Нотатка {user}"
inviteToGroup: "Запрошення до групи" inviteToGroup: "Запрошення до групи"
maxNoteTextLength: "Максимальна довжина нотатки"
quoteAttached: "Цитата" quoteAttached: "Цитата"
quoteQuestion: "Ви хочете додати цитату?" quoteQuestion: "Ви хочете додати цитату?"
noMessagesYet: "Ще немає повідомлень" noMessagesYet: "Ще немає повідомлень"
@ -688,6 +685,7 @@ global: "Глобальна"
sent: "Відправити" sent: "Відправити"
hashtags: "Хештеґ" hashtags: "Хештеґ"
hide: "Сховати" hide: "Сховати"
indefinitely: "Ніколи"
_ad: _ad:
back: "Назад" back: "Назад"
_gallery: _gallery:

48
locales/vi-VN.yml Normal file
View file

@ -0,0 +1,48 @@
---
_lang_: "Tiếng Việt"
headlineMisskey: "Mạng xã hội liên hợp"
monthAndDay: "{day} tháng {month}"
search: "Tìm kiếm"
notifications: "Thông báo"
username: "Tên người dùng"
password: "Mật khẩu"
forgotPassword: "Quên mật khẩu"
ok: "Đồng ý"
renotedBy: "Chia sẻ bởi {user}"
flagAsBot: "Đánh dấu đây là tài khoản bot"
searchWith: "Tìm kiếm: {q}"
followConfirm: "Bạn có chắc muốn theo dõi {name}"
cpuAndMemory: "CPU và Dung lượng"
dayX: "{day}"
yearX: "{year}"
aboutMisskey: "Về Misskey"
smtpUser: "Tên người dùng"
smtpPass: "Mật khẩu"
reportAbuseOf: "Báo cáo {name}"
renotedCount: "Lượt chia sẻ"
translatedFrom: "Dịch từ {x}"
searchByGoogle: "Google"
_mfm:
search: "Tìm kiếm"
_theme:
installed: "{name} đã được cài đặt"
_sfx:
notification: "Thông báo"
_ago:
unknown: "Không rõ"
future: "Tương lai"
justNow: "Vừa xong"
secondsAgo: "{n}s trước"
minutesAgo: "{n} phút trước"
hoursAgo: "{n} giờ trước"
daysAgo: "{n} ngày trước"
weeksAgo: "{n} tuần trước"
monthsAgo: "{n} tháng trước"
yearsAgo: "{n} năm trước"
_widgets:
notifications: "Thông báo"
_profile:
username: "Tên người dùng"
_deck:
_columns:
notifications: "Thông báo"

View file

@ -325,8 +325,6 @@ disablingTimelinesInfo: "即使时间线功能被禁用,出于便利性的原
registration: "注册" registration: "注册"
enableRegistration: "允许新用户注册" enableRegistration: "允许新用户注册"
invite: "邀请" invite: "邀请"
proxyRemoteFiles: "代理远程文件"
proxyRemoteFilesDescription: "启用此设置后,由于超出存储容量而导致未保存被删除的远程文件将被本地代理,并且会生成缩略图。不会影响服务器的存储。"
driveCapacityPerLocalAccount: "每个用户的网盘空间" driveCapacityPerLocalAccount: "每个用户的网盘空间"
driveCapacityPerRemoteAccount: "每个远程用户的网盘容量" driveCapacityPerRemoteAccount: "每个远程用户的网盘容量"
inMb: "以兆字节(MegaByte)为单位" inMb: "以兆字节(MegaByte)为单位"
@ -422,7 +420,6 @@ next: "下一个"
retype: "重新输入" retype: "重新输入"
noteOf: "{user}的帖子" noteOf: "{user}的帖子"
inviteToGroup: "群组邀请" inviteToGroup: "群组邀请"
maxNoteTextLength: "帖子的字数限制"
quoteAttached: "已引用" quoteAttached: "已引用"
quoteQuestion: "是否引用此链接内容?" quoteQuestion: "是否引用此链接内容?"
noMessagesYet: "现在没有新的聊天" noMessagesYet: "现在没有新的聊天"
@ -833,6 +830,16 @@ auto: "自动"
themeColor: "主题颜色" themeColor: "主题颜色"
size: "大小" size: "大小"
numberOfColumn: "列数" numberOfColumn: "列数"
searchByGoogle: "Google"
instanceDefaultLightTheme: "实例默认浅色主题"
instanceDefaultDarkTheme: "实例默认深色主题"
instanceDefaultThemeDescription: "以对象格式键入主题代码"
mutePeriod: "屏蔽期限"
indefinitely: "永久"
tenMinutes: "10分钟"
oneHour: "1小时"
oneDay: "1天"
oneWeek: "1周"
_emailUnavailable: _emailUnavailable:
used: "已经被使用过" used: "已经被使用过"
format: "无效的格式" format: "无效的格式"
@ -1210,7 +1217,7 @@ _poll:
noMore: "无法再添加更多了" noMore: "无法再添加更多了"
canMultipleVote: "允许多个投票" canMultipleVote: "允许多个投票"
expiration: "截止时间" expiration: "截止时间"
infinite: "不限时间" infinite: "永久"
at: "指定日期" at: "指定日期"
after: "指定时间" after: "指定时间"
deadlineDate: "截止日期" deadlineDate: "截止日期"
@ -1605,6 +1612,7 @@ _notification:
youReceivedFollowRequest: "您有新的关注请求" youReceivedFollowRequest: "您有新的关注请求"
yourFollowRequestAccepted: "您的关注请求已通过" yourFollowRequestAccepted: "您的关注请求已通过"
youWereInvitedToGroup: "您有新的群组邀请" youWereInvitedToGroup: "您有新的群组邀请"
pollEnded: "问卷调查结果已生成。"
_types: _types:
all: "全部" all: "全部"
follow: "关注中" follow: "关注中"
@ -1614,6 +1622,7 @@ _notification:
quote: "引用" quote: "引用"
reaction: "回应" reaction: "回应"
pollVote: "问卷调查被投票" pollVote: "问卷调查被投票"
pollEnded: "问卷调查结束"
receiveFollowRequest: "收到关注请求" receiveFollowRequest: "收到关注请求"
followRequestAccepted: "关注请求已通过" followRequestAccepted: "关注请求已通过"
groupInvited: "加入群组邀请" groupInvited: "加入群组邀请"

View file

@ -318,8 +318,6 @@ disablingTimelinesInfo: "即使您關閉了時間線功能,管理員和協調
registration: "註冊" registration: "註冊"
enableRegistration: "開啟新使用者註冊" enableRegistration: "開啟新使用者註冊"
invite: "邀請" invite: "邀請"
proxyRemoteFiles: "遠端代理檔案"
proxyRemoteFilesDescription: "啟用此設置後,由於超出存儲容量而未保存或刪除的遠程文件將被本地代理,並且將生成預覽圖。這不影響伺服器的存儲。"
driveCapacityPerLocalAccount: "每個本地用戶的雲端空間大小" driveCapacityPerLocalAccount: "每個本地用戶的雲端空間大小"
driveCapacityPerRemoteAccount: "每個非本地用戶的雲端容量" driveCapacityPerRemoteAccount: "每個非本地用戶的雲端容量"
inMb: "以Mbps為單位" inMb: "以Mbps為單位"
@ -415,7 +413,6 @@ next: "下一步"
retype: "重新輸入" retype: "重新輸入"
noteOf: "{user}的貼文" noteOf: "{user}的貼文"
inviteToGroup: "邀請至群組" inviteToGroup: "邀請至群組"
maxNoteTextLength: "貼文的字數限制"
quoteAttached: "引用" quoteAttached: "引用"
quoteQuestion: "是否要引用?" quoteQuestion: "是否要引用?"
noMessagesYet: "沒有訊息" noMessagesYet: "沒有訊息"
@ -750,6 +747,7 @@ global: "公開"
sent: "發送" sent: "發送"
hashtags: "#tag" hashtags: "#tag"
hide: "隱藏" hide: "隱藏"
indefinitely: "無期限"
_ffVisibility: _ffVisibility:
public: "發佈" public: "發佈"
_ad: _ad:

View file

@ -1,6 +1,6 @@
{ {
"name": "misskey", "name": "misskey",
"version": "12.107.0", "version": "12.108.0",
"codename": "indigo", "codename": "indigo",
"repository": { "repository": {
"type": "git", "type": "git",
@ -42,10 +42,10 @@
"js-yaml": "4.1.0" "js-yaml": "4.1.0"
}, },
"devDependencies": { "devDependencies": {
"@typescript-eslint/parser": "5.12.0", "@typescript-eslint/parser": "5.14.0",
"cross-env": "7.0.3", "cross-env": "7.0.3",
"cypress": "9.5.0", "cypress": "9.5.0",
"start-server-and-test": "1.14.0", "start-server-and-test": "1.14.0",
"typescript": "4.5.5" "typescript": "4.6.2"
} }
} }

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

View file

@ -0,0 +1,13 @@
export class muteExpiresAt1646387162108 {
name = 'muteExpiresAt1646387162108'
async up(queryRunner) {
await queryRunner.query(`ALTER TABLE "muting" ADD "expiresAt" TIMESTAMP WITH TIME ZONE`);
await queryRunner.query(`CREATE INDEX "IDX_c1fd1c3dfb0627aa36c253fd14" ON "muting" ("expiresAt") `);
}
async down(queryRunner) {
await queryRunner.query(`DROP INDEX "public"."IDX_c1fd1c3dfb0627aa36c253fd14"`);
await queryRunner.query(`ALTER TABLE "muting" DROP COLUMN "expiresAt"`);
}
}

View file

@ -0,0 +1,18 @@
export class pollEndedNotification1646549089451 {
name = 'pollEndedNotification1646549089451'
async up(queryRunner) {
await queryRunner.query(`ALTER TYPE "public"."notification_type_enum" RENAME TO "notification_type_enum_old"`);
await queryRunner.query(`CREATE TYPE "public"."notification_type_enum" AS ENUM('follow', 'mention', 'reply', 'renote', 'quote', 'reaction', 'pollVote', 'pollEnded', 'receiveFollowRequest', 'followRequestAccepted', 'groupInvited', 'app')`);
await queryRunner.query(`ALTER TABLE "notification" ALTER COLUMN "type" TYPE "public"."notification_type_enum" USING "type"::"text"::"public"."notification_type_enum"`);
await queryRunner.query(`DROP TYPE "public"."notification_type_enum_old"`);
}
async down(queryRunner) {
await queryRunner.query(`CREATE TYPE "public"."notification_type_enum_old" AS ENUM('follow', 'mention', 'reply', 'renote', 'quote', 'reaction', 'pollVote', 'receiveFollowRequest', 'followRequestAccepted', 'groupInvited', 'app')`);
await queryRunner.query(`ALTER TABLE "notification" ALTER COLUMN "type" TYPE "public"."notification_type_enum_old" USING "type"::"text"::"public"."notification_type_enum_old"`);
await queryRunner.query(`DROP TYPE "public"."notification_type_enum"`);
await queryRunner.query(`ALTER TYPE "public"."notification_type_enum_old" RENAME TO "notification_type_enum"`);
}
}

View file

@ -0,0 +1,13 @@
export class chartFederationActive1646633030285 {
name = 'chartFederationActive1646633030285'
async up(queryRunner) {
await queryRunner.query(`ALTER TABLE "__chart__federation" ADD "___active" smallint NOT NULL DEFAULT '0'`);
await queryRunner.query(`ALTER TABLE "__chart_day__federation" ADD "___active" smallint NOT NULL DEFAULT '0'`);
}
async down(queryRunner) {
await queryRunner.query(`ALTER TABLE "__chart_day__federation" DROP COLUMN "___active"`);
await queryRunner.query(`ALTER TABLE "__chart__federation" DROP COLUMN "___active"`);
}
}

View file

@ -0,0 +1,13 @@
export class removeInstanceDriveColumns1646655454495 {
name = 'removeInstanceDriveColumns1646655454495'
async up(queryRunner) {
await queryRunner.query(`ALTER TABLE "instance" DROP COLUMN "driveUsage"`);
await queryRunner.query(`ALTER TABLE "instance" DROP COLUMN "driveFiles"`);
}
async down(queryRunner) {
await queryRunner.query(`ALTER TABLE "instance" ADD "driveFiles" integer NOT NULL DEFAULT '0'`);
await queryRunner.query(`ALTER TABLE "instance" ADD "driveUsage" bigint NOT NULL DEFAULT '0'`);
}
}

View file

@ -0,0 +1,21 @@
export class chartFederationActiveSubPub1646732390560 {
name = 'chartFederationActiveSubPub1646732390560'
async up(queryRunner) {
await queryRunner.query(`ALTER TABLE "__chart__federation" DROP COLUMN "___active"`);
await queryRunner.query(`ALTER TABLE "__chart_day__federation" DROP COLUMN "___active"`);
await queryRunner.query(`ALTER TABLE "__chart__federation" ADD "___subActive" smallint NOT NULL DEFAULT '0'`);
await queryRunner.query(`ALTER TABLE "__chart__federation" ADD "___pubActive" smallint NOT NULL DEFAULT '0'`);
await queryRunner.query(`ALTER TABLE "__chart_day__federation" ADD "___subActive" smallint NOT NULL DEFAULT '0'`);
await queryRunner.query(`ALTER TABLE "__chart_day__federation" ADD "___pubActive" smallint NOT NULL DEFAULT '0'`);
}
async down(queryRunner) {
await queryRunner.query(`ALTER TABLE "__chart_day__federation" DROP COLUMN "___pubActive"`);
await queryRunner.query(`ALTER TABLE "__chart_day__federation" DROP COLUMN "___subActive"`);
await queryRunner.query(`ALTER TABLE "__chart__federation" DROP COLUMN "___pubActive"`);
await queryRunner.query(`ALTER TABLE "__chart__federation" DROP COLUMN "___subActive"`);
await queryRunner.query(`ALTER TABLE "__chart_day__federation" ADD "___active" smallint NOT NULL DEFAULT '0'`);
await queryRunner.query(`ALTER TABLE "__chart__federation" ADD "___active" smallint NOT NULL DEFAULT '0'`);
}
}

View file

@ -20,7 +20,7 @@
"@koa/cors": "3.1.0", "@koa/cors": "3.1.0",
"@koa/multer": "3.0.0", "@koa/multer": "3.0.0",
"@koa/router": "10.1.1", "@koa/router": "10.1.1",
"@sinonjs/fake-timers": "9.1.0", "@sinonjs/fake-timers": "9.1.1",
"@syuilo/aiscript": "0.11.1", "@syuilo/aiscript": "0.11.1",
"@types/bcryptjs": "2.4.2", "@types/bcryptjs": "2.4.2",
"@types/bull": "3.15.8", "@types/bull": "3.15.8",
@ -31,7 +31,7 @@
"@types/jsdom": "16.2.14", "@types/jsdom": "16.2.14",
"@types/jsonld": "1.5.6", "@types/jsonld": "1.5.6",
"@types/koa": "2.13.4", "@types/koa": "2.13.4",
"@types/koa-bodyparser": "4.3.5", "@types/koa-bodyparser": "4.3.6",
"@types/koa-cors": "0.0.2", "@types/koa-cors": "0.0.2",
"@types/koa-favicon": "2.0.21", "@types/koa-favicon": "2.0.21",
"@types/koa-logger": "3.1.2", "@types/koa-logger": "3.1.2",
@ -42,7 +42,7 @@
"@types/koa__multer": "2.0.4", "@types/koa__multer": "2.0.4",
"@types/koa__router": "8.0.11", "@types/koa__router": "8.0.11",
"@types/mocha": "9.1.0", "@types/mocha": "9.1.0",
"@types/node": "17.0.19", "@types/node": "17.0.21",
"@types/node-fetch": "3.0.3", "@types/node-fetch": "3.0.3",
"@types/nodemailer": "6.4.4", "@types/nodemailer": "6.4.4",
"@types/oauth": "0.9.1", "@types/oauth": "0.9.1",
@ -56,7 +56,6 @@
"@types/redis": "4.0.11", "@types/redis": "4.0.11",
"@types/rename": "1.0.4", "@types/rename": "1.0.4",
"@types/sanitize-html": "2.6.2", "@types/sanitize-html": "2.6.2",
"@types/seedrandom": "3.0.1",
"@types/sharp": "0.29.5", "@types/sharp": "0.29.5",
"@types/sinonjs__fake-timers": "8.1.1", "@types/sinonjs__fake-timers": "8.1.1",
"@types/speakeasy": "2.0.7", "@types/speakeasy": "2.0.7",
@ -66,9 +65,9 @@
"@types/uuid": "8.3.4", "@types/uuid": "8.3.4",
"@types/web-push": "3.3.2", "@types/web-push": "3.3.2",
"@types/websocket": "1.0.5", "@types/websocket": "1.0.5",
"@types/ws": "8.2.3", "@types/ws": "8.5.2",
"@typescript-eslint/eslint-plugin": "5.12.1", "@typescript-eslint/eslint-plugin": "5.14.0",
"@typescript-eslint/parser": "5.12.1", "@typescript-eslint/parser": "5.14.0",
"abort-controller": "3.0.0", "abort-controller": "3.0.0",
"ajv": "8.10.0", "ajv": "8.10.0",
"archiver": "5.3.0", "archiver": "5.3.0",
@ -78,25 +77,24 @@
"bcryptjs": "2.4.3", "bcryptjs": "2.4.3",
"blurhash": "1.1.5", "blurhash": "1.1.5",
"broadcast-channel": "4.10.0", "broadcast-channel": "4.10.0",
"bull": "4.6.2", "bull": "4.7.0",
"cacheable-lookup": "6.0.4", "cacheable-lookup": "6.0.4",
"cafy": "15.2.1", "cafy": "15.2.1",
"cbor": "8.1.0", "cbor": "8.1.0",
"chalk": "5.0.0", "chalk": "5.0.1",
"chalk-template": "0.3.1", "chalk-template": "0.4.0",
"cli-highlight": "2.1.11", "cli-highlight": "2.1.11",
"color-convert": "2.0.1", "color-convert": "2.0.1",
"content-disposition": "0.5.4", "content-disposition": "0.5.4",
"date-fns": "2.28.0", "date-fns": "2.28.0",
"deep-email-validator": "0.1.21", "deep-email-validator": "0.1.21",
"escape-regexp": "0.0.1", "escape-regexp": "0.0.1",
"eslint": "8.9.0", "eslint": "8.10.0",
"eslint-plugin-import": "2.25.4", "eslint-plugin-import": "2.25.4",
"eventemitter3": "4.0.7",
"feed": "4.2.2", "feed": "4.2.2",
"file-type": "16.5.3", "file-type": "17.1.1",
"fluent-ffmpeg": "2.1.2", "fluent-ffmpeg": "2.1.2",
"got": "11.8.2", "got": "12.0.1",
"hpagent": "0.1.2", "hpagent": "0.1.2",
"http-signature": "1.3.6", "http-signature": "1.3.6",
"ip-cidr": "3.0.4", "ip-cidr": "3.0.4",
@ -123,7 +121,7 @@
"ms": "3.0.0-canary.1", "ms": "3.0.0-canary.1",
"multer": "1.4.4", "multer": "1.4.4",
"nested-property": "4.0.0", "nested-property": "4.0.0",
"node-fetch": "2.6.7", "node-fetch": "3.2.2",
"nodemailer": "6.7.2", "nodemailer": "6.7.2",
"os-utils": "0.0.14", "os-utils": "0.0.14",
"parse5": "6.0.1", "parse5": "6.0.1",
@ -147,25 +145,24 @@
"rndstr": "1.0.0", "rndstr": "1.0.0",
"s-age": "1.1.2", "s-age": "1.1.2",
"sanitize-html": "2.7.0", "sanitize-html": "2.7.0",
"seedrandom": "3.0.5", "sharp": "0.30.2",
"sharp": "0.30.1",
"speakeasy": "2.0.0", "speakeasy": "2.0.0",
"strict-event-emitter-types": "2.0.0", "strict-event-emitter-types": "2.0.0",
"stringz": "2.1.0", "stringz": "2.1.0",
"style-loader": "3.3.1", "style-loader": "3.3.1",
"summaly": "2.5.0", "summaly": "2.5.0",
"syslog-pro": "1.0.0", "syslog-pro": "1.0.0",
"systeminformation": "5.11.4", "systeminformation": "5.11.6",
"throttle-debounce": "3.0.1", "throttle-debounce": "3.0.1",
"tinycolor2": "1.4.2", "tinycolor2": "1.4.2",
"tmp": "0.2.1", "tmp": "0.2.1",
"ts-loader": "9.2.6", "ts-loader": "9.2.7",
"ts-node": "10.5.0", "ts-node": "10.7.0",
"tsc-alias": "1.4.1", "tsc-alias": "1.4.1",
"tsconfig-paths": "3.12.0", "tsconfig-paths": "3.13.0",
"twemoji-parser": "13.1.0", "twemoji-parser": "13.1.0",
"typeorm": "0.2.44", "typeorm": "0.2.45",
"typescript": "4.5.5", "typescript": "4.6.2",
"ulid": "2.3.0", "ulid": "2.3.0",
"unzipper": "0.10.11", "unzipper": "0.10.11",
"uuid": "8.3.2", "uuid": "8.3.2",

View file

@ -6,7 +6,6 @@ export type Source = {
feedback_url?: string; feedback_url?: string;
url: string; url: string;
port: number; port: number;
https?: { [x: string]: string };
disableHsts?: boolean; disableHsts?: boolean;
db: { db: {
host: string; host: string;

View file

@ -184,7 +184,7 @@ export function initDb(justBorrow = false, sync = false, forceRecreate = false)
} catch (e) {} } catch (e) {}
} }
const log = process.env.NODE_ENV != 'production'; const log = process.env.NODE_ENV !== 'production';
return createConnection({ return createConnection({
type: 'postgres', type: 'postgres',
@ -193,7 +193,10 @@ export function initDb(justBorrow = false, sync = false, forceRecreate = false)
username: config.db.user, username: config.db.user,
password: config.db.pass, password: config.db.pass,
database: config.db.db, database: config.db.db,
extra: config.db.extra, extra: {
statement_timeout: 1000 * 10,
...config.db.extra,
},
synchronize: process.env.NODE_ENV === 'test' || sync, synchronize: process.env.NODE_ENV === 'test' || sync,
dropSchema: process.env.NODE_ENV === 'test' && !justBorrow, dropSchema: process.env.NODE_ENV === 'test' && !justBorrow,
cache: !config.db.disableCache ? { cache: !config.db.disableCache ? {

View file

@ -2,7 +2,7 @@ import * as fs from 'node:fs';
import * as crypto from 'node:crypto'; import * as crypto from 'node:crypto';
import * as stream from 'node:stream'; import * as stream from 'node:stream';
import * as util from 'node:util'; import * as util from 'node:util';
import fileType from 'file-type'; import { fileTypeFromFile } from 'file-type';
import isSvg from 'is-svg'; import isSvg from 'is-svg';
import probeImageSize from 'probe-image-size'; import probeImageSize from 'probe-image-size';
import sharp from 'sharp'; import sharp from 'sharp';
@ -109,7 +109,7 @@ export async function detectType(path: string): Promise<{
return TYPE_OCTET_STREAM; return TYPE_OCTET_STREAM;
} }
const type = await fileType.fromFile(path); const type = await fileTypeFromFile(path);
if (type) { if (type) {
// XMLはSVGかもしれない // XMLはSVGかもしれない

View file

@ -59,22 +59,6 @@ export class Instance {
}) })
public followersCount: number; public followersCount: number;
/**
* 使
*/
@Column('bigint', {
default: 0,
})
public driveUsage: number;
/**
*
*/
@Column('integer', {
default: 0,
})
public driveFiles: number;
/** /**
* *
*/ */

View file

@ -14,6 +14,13 @@ export class Muting {
}) })
public createdAt: Date; public createdAt: Date;
@Index()
@Column('timestamp with time zone', {
nullable: true,
default: null,
})
public expiresAt: Date | null;
@Index() @Index()
@Column({ @Column({
...id(), ...id(),

View file

@ -59,7 +59,8 @@ export class Notification {
* renote - (Watchしている)稿Renoteされた * renote - (Watchしている)稿Renoteされた
* quote - (Watchしている)稿Renoteされた * quote - (Watchしている)稿Renoteされた
* reaction - (Watchしている)稿 * reaction - (Watchしている)稿
* pollVote - (Watchしている)稿 * pollVote - (Watchしている)稿
* pollEnded -
* receiveFollowRequest - * receiveFollowRequest -
* followRequestAccepted - * followRequestAccepted -
* groupInvited - * groupInvited -

View file

@ -16,6 +16,7 @@ export class MutingRepository extends Repository<Muting> {
return await awaitAll({ return await awaitAll({
id: muting.id, id: muting.id,
createdAt: muting.createdAt.toISOString(), createdAt: muting.createdAt.toISOString(),
expiresAt: muting.expiresAt ? muting.expiresAt.toISOString() : null,
muteeId: muting.muteeId, muteeId: muting.muteeId,
mutee: Users.pack(muting.muteeId, me, { mutee: Users.pack(muting.muteeId, me, {
detail: true, detail: true,

View file

@ -67,6 +67,12 @@ export class NotificationRepository extends Repository<Notification> {
}), }),
choice: notification.choice, choice: notification.choice,
} : {}), } : {}),
...(notification.type === 'pollEnded' ? {
note: Notes.pack(notification.note || notification.noteId!, { id: notification.notifieeId }, {
detail: true,
_hint_: options._hintForEachNotes_,
}),
} : {}),
...(notification.type === 'groupInvited' ? { ...(notification.type === 'groupInvited' ? {
invitation: UserGroupInvitations.pack(notification.userGroupInvitationId!), invitation: UserGroupInvitations.pack(notification.userGroupInvitationId!),
} : {}), } : {}),

View file

@ -12,6 +12,11 @@ export const packedMutingSchema = {
optional: false, nullable: false, optional: false, nullable: false,
format: 'date-time', format: 'date-time',
}, },
expiresAt: {
type: 'string',
optional: false, nullable: true,
format: 'date-time',
},
muteeId: { muteeId: {
type: 'string', type: 'string',
optional: false, nullable: false, optional: false, nullable: false,

View file

@ -8,10 +8,11 @@ import processInbox from './processors/inbox.js';
import processDb from './processors/db/index.js'; import processDb from './processors/db/index.js';
import processObjectStorage from './processors/object-storage/index.js'; import processObjectStorage from './processors/object-storage/index.js';
import processSystemQueue from './processors/system/index.js'; import processSystemQueue from './processors/system/index.js';
import { endedPollNotification } from './processors/ended-poll-notification.js';
import { queueLogger } from './logger.js'; import { queueLogger } from './logger.js';
import { DriveFile } from '@/models/entities/drive-file.js'; import { DriveFile } from '@/models/entities/drive-file.js';
import { getJobInfo } from './get-job-info.js'; import { getJobInfo } from './get-job-info.js';
import { systemQueue, dbQueue, deliverQueue, inboxQueue, objectStorageQueue } from './queues.js'; import { systemQueue, dbQueue, deliverQueue, inboxQueue, objectStorageQueue, endedPollNotificationQueue } from './queues.js';
import { ThinUser } from './types.js'; import { ThinUser } from './types.js';
import { IActivity } from '@/remote/activitypub/type.js'; import { IActivity } from '@/remote/activitypub/type.js';
@ -255,6 +256,7 @@ export default function() {
deliverQueue.process(config.deliverJobConcurrency || 128, processDeliver); deliverQueue.process(config.deliverJobConcurrency || 128, processDeliver);
inboxQueue.process(config.inboxJobConcurrency || 16, processInbox); inboxQueue.process(config.inboxJobConcurrency || 16, processInbox);
endedPollNotificationQueue.process(endedPollNotification);
processDb(dbQueue); processDb(dbQueue);
processObjectStorage(objectStorageQueue); processObjectStorage(objectStorageQueue);
@ -273,6 +275,11 @@ export default function() {
repeat: { cron: '0 0 * * *' }, repeat: { cron: '0 0 * * *' },
}); });
systemQueue.add('checkExpiredMutings', {
}, {
repeat: { cron: '*/5 * * * *' },
});
processSystemQueue(systemQueue); processSystemQueue(systemQueue);
} }

View file

@ -7,7 +7,7 @@ import { addFile } from '@/services/drive/add-file.js';
import { format as dateFormat } from 'date-fns'; import { format as dateFormat } from 'date-fns';
import { getFullApAccount } from '@/misc/convert-host.js'; import { getFullApAccount } from '@/misc/convert-host.js';
import { Users, Mutings } from '@/models/index.js'; import { Users, Mutings } from '@/models/index.js';
import { MoreThan } from 'typeorm'; import { IsNull, MoreThan } from 'typeorm';
import { DbUserJobData } from '@/queue/types.js'; import { DbUserJobData } from '@/queue/types.js';
const logger = queueLogger.createSubLogger('export-mute'); const logger = queueLogger.createSubLogger('export-mute');
@ -40,6 +40,7 @@ export async function exportMute(job: Bull.Job<DbUserJobData>, done: any): Promi
const mutes = await Mutings.find({ const mutes = await Mutings.find({
where: { where: {
muterId: user.id, muterId: user.id,
expiresAt: IsNull(),
...(cursor ? { id: MoreThan(cursor) } : {}), ...(cursor ? { id: MoreThan(cursor) } : {}),
}, },
take: 100, take: 100,

View file

@ -0,0 +1,33 @@
import Bull from 'bull';
import { In } from 'typeorm';
import { Notes, Polls, PollVotes } from '@/models/index.js';
import { queueLogger } from '../logger.js';
import { EndedPollNotificationJobData } from '@/queue/types.js';
import { createNotification } from '@/services/create-notification.js';
const logger = queueLogger.createSubLogger('ended-poll-notification');
export async function endedPollNotification(job: Bull.Job<EndedPollNotificationJobData>, done: any): Promise<void> {
const note = await Notes.findOne(job.data.noteId);
if (note == null || !note.hasPoll) {
done();
return;
}
const votes = await PollVotes.createQueryBuilder('vote')
.select('vote.userId')
.where('vote.noteId = :noteId', { noteId: note.id })
.innerJoinAndSelect('vote.user', 'user')
.andWhere('user.host IS NULL')
.getMany();
const userIds = [...new Set([note.userId, ...votes.map(v => v.userId)])];
for (const userId of userIds) {
createNotification(userId, 'pollEnded', {
noteId: note.id,
});
}
done();
}

View file

@ -0,0 +1,30 @@
import Bull from 'bull';
import { In } from 'typeorm';
import { Mutings } from '@/models/index.js';
import { queueLogger } from '../../logger.js';
import { publishUserEvent } from '@/services/stream.js';
const logger = queueLogger.createSubLogger('check-expired-mutings');
export async function checkExpiredMutings(job: Bull.Job<Record<string, unknown>>, done: any): Promise<void> {
logger.info(`Checking expired mutings...`);
const expired = await Mutings.createQueryBuilder('muting')
.where('muting.expiresAt IS NOT NULL')
.andWhere('muting.expiresAt < :now', { now: new Date() })
.innerJoinAndSelect('muting.mutee', 'mutee')
.getMany();
if (expired.length > 0) {
await Mutings.delete({
id: In(expired.map(m => m.id)),
});
for (const m of expired) {
publishUserEvent(m.muterId, 'unmute', m.mutee!);
}
}
logger.succ(`All expired mutings checked.`);
done();
}

View file

@ -2,11 +2,13 @@ import Bull from 'bull';
import { tickCharts } from './tick-charts.js'; import { tickCharts } from './tick-charts.js';
import { resyncCharts } from './resync-charts.js'; import { resyncCharts } from './resync-charts.js';
import { cleanCharts } from './clean-charts.js'; import { cleanCharts } from './clean-charts.js';
import { checkExpiredMutings } from './check-expired-mutings.js';
const jobs = { const jobs = {
tickCharts, tickCharts,
resyncCharts, resyncCharts,
cleanCharts, cleanCharts,
checkExpiredMutings,
} as Record<string, Bull.ProcessCallbackFunction<Record<string, unknown>> | Bull.ProcessPromiseFunction<Record<string, unknown>>>; } as Record<string, Bull.ProcessCallbackFunction<Record<string, unknown>> | Bull.ProcessPromiseFunction<Record<string, unknown>>>;
export default function(dbQueue: Bull.Queue<Record<string, unknown>>) { export default function(dbQueue: Bull.Queue<Record<string, unknown>>) {

View file

@ -1,8 +1,9 @@
import config from '@/config/index.js'; import config from '@/config/index.js';
import { initialize as initializeQueue } from './initialize.js'; import { initialize as initializeQueue } from './initialize.js';
import { DeliverJobData, InboxJobData, DbJobData, ObjectStorageJobData } from './types.js'; import { DeliverJobData, InboxJobData, DbJobData, ObjectStorageJobData, EndedPollNotificationJobData } from './types.js';
export const systemQueue = initializeQueue<Record<string, unknown>>('system'); export const systemQueue = initializeQueue<Record<string, unknown>>('system');
export const endedPollNotificationQueue = initializeQueue<EndedPollNotificationJobData>('endedPollNotification');
export const deliverQueue = initializeQueue<DeliverJobData>('deliver', config.deliverJobPerSec || 128); export const deliverQueue = initializeQueue<DeliverJobData>('deliver', config.deliverJobPerSec || 128);
export const inboxQueue = initializeQueue<InboxJobData>('inbox', config.inboxJobPerSec || 16); export const inboxQueue = initializeQueue<InboxJobData>('inbox', config.inboxJobPerSec || 16);
export const dbQueue = initializeQueue<DbJobData>('db'); export const dbQueue = initializeQueue<DbJobData>('db');

View file

@ -1,4 +1,5 @@
import { DriveFile } from '@/models/entities/drive-file.js'; import { DriveFile } from '@/models/entities/drive-file.js';
import { Note } from '@/models/entities/note';
import { User } from '@/models/entities/user.js'; import { User } from '@/models/entities/user.js';
import { IActivity } from '@/remote/activitypub/type.js'; import { IActivity } from '@/remote/activitypub/type.js';
import httpSignature from 'http-signature'; import httpSignature from 'http-signature';
@ -41,6 +42,10 @@ export type ObjectStorageFileJobData = {
key: string; key: string;
}; };
export type EndedPollNotificationJobData = {
noteId: Note['id'];
};
export type ThinUser = { export type ThinUser = {
id: User['id']; id: User['id'];
}; };

View file

@ -31,7 +31,7 @@ const ajv = new Ajv({
useDefaults: true, useDefaults: true,
}); });
ajv.addFormat('misskey:id', /^[a-z0-9]+$/); ajv.addFormat('misskey:id', /^[a-zA-Z0-9]+$/);
export default function <T extends IEndpointMeta, Ps extends Schema>(meta: T, paramDef: Ps, cb: executor<T, Ps>) export default function <T extends IEndpointMeta, Ps extends Schema>(meta: T, paramDef: Ps, cb: executor<T, Ps>)
: (params: any, user: T['requireCredential'] extends true ? SimpleUserInfo : SimpleUserInfo | null, token: AccessToken | null, file?: any) => Promise<any> { : (params: any, user: T['requireCredential'] extends true ? SimpleUserInfo : SimpleUserInfo | null, token: AccessToken | null, file?: any) => Promise<any> {

View file

@ -55,10 +55,6 @@ export default define(meta, paramDef, async (ps, me) => {
case '-caughtAt': query.orderBy('instance.caughtAt', 'ASC'); break; case '-caughtAt': query.orderBy('instance.caughtAt', 'ASC'); break;
case '+lastCommunicatedAt': query.orderBy('instance.lastCommunicatedAt', 'DESC'); break; case '+lastCommunicatedAt': query.orderBy('instance.lastCommunicatedAt', 'DESC'); break;
case '-lastCommunicatedAt': query.orderBy('instance.lastCommunicatedAt', 'ASC'); break; case '-lastCommunicatedAt': query.orderBy('instance.lastCommunicatedAt', 'ASC'); break;
case '+driveUsage': query.orderBy('instance.driveUsage', 'DESC'); break;
case '-driveUsage': query.orderBy('instance.driveUsage', 'ASC'); break;
case '+driveFiles': query.orderBy('instance.driveFiles', 'DESC'); break;
case '-driveFiles': query.orderBy('instance.driveFiles', 'ASC'); break;
default: query.orderBy('instance.id', 'DESC'); break; default: query.orderBy('instance.id', 'DESC'); break;
} }

View file

@ -64,11 +64,6 @@ export const meta = {
optional: false, nullable: false, optional: false, nullable: false,
default: 'https://github.com/misskey-dev/misskey/issues/new', default: 'https://github.com/misskey-dev/misskey/issues/new',
}, },
secure: {
type: 'boolean',
optional: false, nullable: false,
default: false,
},
defaultDarkTheme: { defaultDarkTheme: {
type: 'string', type: 'string',
optional: false, nullable: true, optional: false, nullable: true,
@ -489,9 +484,6 @@ export default define(meta, paramDef, async (ps, me) => {
tosUrl: instance.ToSUrl, tosUrl: instance.ToSUrl,
repositoryUrl: instance.repositoryUrl, repositoryUrl: instance.repositoryUrl,
feedbackUrl: instance.feedbackUrl, feedbackUrl: instance.feedbackUrl,
secure: config.https != null,
disableRegistration: instance.disableRegistration, disableRegistration: instance.disableRegistration,
disableLocalTimeline: instance.disableLocalTimeline, disableLocalTimeline: instance.disableLocalTimeline,
disableGlobalTimeline: instance.disableGlobalTimeline, disableGlobalTimeline: instance.disableGlobalTimeline,

View file

@ -38,6 +38,7 @@ export const paramDef = {
type: 'object', type: 'object',
properties: { properties: {
userId: { type: 'string', format: 'misskey:id' }, userId: { type: 'string', format: 'misskey:id' },
expiresAt: { type: 'integer', nullable: true },
}, },
required: ['userId'], required: ['userId'],
} as const; } as const;
@ -67,10 +68,15 @@ export default define(meta, paramDef, async (ps, user) => {
throw new ApiError(meta.errors.alreadyMuting); throw new ApiError(meta.errors.alreadyMuting);
} }
if (ps.expiresAt && ps.expiresAt <= Date.now()) {
return;
}
// Create mute // Create mute
await Mutings.insert({ await Mutings.insert({
id: genId(), id: genId(),
createdAt: new Date(), createdAt: new Date(),
expiresAt: ps.expiresAt ? new Date(ps.expiresAt) : null,
muterId: muter.id, muterId: muter.id,
muteeId: mutee.id, muteeId: mutee.id,
} as Muting); } as Muting);

View file

@ -4,8 +4,6 @@
import * as fs from 'node:fs'; import * as fs from 'node:fs';
import * as http from 'http'; import * as http from 'http';
import * as http2 from 'http2';
import * as https from 'https';
import Koa from 'koa'; import Koa from 'koa';
import Router from '@koa/router'; import Router from '@koa/router';
import mount from 'koa-mount'; import mount from 'koa-mount';
@ -123,16 +121,7 @@ app.use(router.routes());
app.use(mount(webServer)); app.use(mount(webServer));
function createServer() { function createServer() {
if (config.https) { return http.createServer(app.callback());
const certs: any = {};
for (const k of Object.keys(config.https)) {
certs[k] = fs.readFileSync(config.https[k]);
}
certs['allowHTTP1'] = true;
return http2.createSecureServer(certs, app.callback()) as https.Server;
} else {
return http.createServer(app.callback());
}
} }
// For testing // For testing

View file

@ -59,5 +59,5 @@ html
br br
| Please turn on your JavaScript | Please turn on your JavaScript
div#splash div#splash
img(src='/favicon.ico') img(src= icon || '/static-assets/splash.png')
block content block content

View file

@ -9,6 +9,8 @@ export const schema = {
'sub': { accumulate: true, range: 'small' }, 'sub': { accumulate: true, range: 'small' },
'pub': { accumulate: true, range: 'small' }, 'pub': { accumulate: true, range: 'small' },
'pubsub': { accumulate: true, range: 'small' }, 'pubsub': { accumulate: true, range: 'small' },
'subActive': { accumulate: true, range: 'small' },
'pubActive': { accumulate: true, range: 'small' },
} as const; } as const;
export const entity = Chart.schemaToEntity(name, schema); export const entity = Chart.schemaToEntity(name, schema);

View file

@ -1,6 +1,7 @@
import Chart, { KVs } from '../core.js'; import Chart, { KVs } from '../core.js';
import { Followings } from '@/models/index.js'; import { Followings, Instances } from '@/models/index.js';
import { name, schema } from './entities/federation.js'; import { name, schema } from './entities/federation.js';
import { fetchMeta } from '@/misc/fetch-meta.js';
/** /**
* *
@ -17,34 +18,72 @@ export default class FederationChart extends Chart<typeof schema> {
} }
protected async tickMinor(): Promise<Partial<KVs<typeof schema>>> { protected async tickMinor(): Promise<Partial<KVs<typeof schema>>> {
const meta = await fetchMeta();
const suspendedInstancesQuery = Instances.createQueryBuilder('instance')
.select('instance.host')
.where('instance.isSuspended = true');
const pubsubSubQuery = Followings.createQueryBuilder('f') const pubsubSubQuery = Followings.createQueryBuilder('f')
.select('f.followerHost') .select('f.followerHost')
.where('f.followerHost IS NOT NULL'); .where('f.followerHost IS NOT NULL');
const [sub, pub, pubsub] = await Promise.all([ const subInstancesQuery = Followings.createQueryBuilder('f')
.select('f.followeeHost')
.where('f.followeeHost IS NOT NULL');
const pubInstancesQuery = Followings.createQueryBuilder('f')
.select('f.followerHost')
.where('f.followerHost IS NOT NULL');
const [sub, pub, pubsub, subActive, pubActive] = await Promise.all([
Followings.createQueryBuilder('following') Followings.createQueryBuilder('following')
.select('COUNT(DISTINCT following.followeeHost)') .select('COUNT(DISTINCT following.followeeHost)')
.where('following.followeeHost IS NOT NULL') .where('following.followeeHost IS NOT NULL')
.andWhere(meta.blockedHosts.length === 0 ? '1=1' : `following.followeeHost NOT IN (:...blocked)`, { blocked: meta.blockedHosts })
.andWhere(`following.followeeHost NOT IN (${ suspendedInstancesQuery.getQuery() })`)
.getRawOne() .getRawOne()
.then(x => parseInt(x.count, 10)), .then(x => parseInt(x.count, 10)),
Followings.createQueryBuilder('following') Followings.createQueryBuilder('following')
.select('COUNT(DISTINCT following.followerHost)') .select('COUNT(DISTINCT following.followerHost)')
.where('following.followerHost IS NOT NULL') .where('following.followerHost IS NOT NULL')
.andWhere(meta.blockedHosts.length === 0 ? '1=1' : `following.followerHost NOT IN (:...blocked)`, { blocked: meta.blockedHosts })
.andWhere(`following.followerHost NOT IN (${ suspendedInstancesQuery.getQuery() })`)
.getRawOne() .getRawOne()
.then(x => parseInt(x.count, 10)), .then(x => parseInt(x.count, 10)),
Followings.createQueryBuilder('following') Followings.createQueryBuilder('following')
.select('COUNT(DISTINCT following.followeeHost)') .select('COUNT(DISTINCT following.followeeHost)')
.where('following.followeeHost IS NOT NULL') .where('following.followeeHost IS NOT NULL')
.andWhere(meta.blockedHosts.length === 0 ? '1=1' : `following.followeeHost NOT IN (:...blocked)`, { blocked: meta.blockedHosts })
.andWhere(`following.followeeHost NOT IN (${ suspendedInstancesQuery.getQuery() })`)
.andWhere(`following.followeeHost IN (${ pubsubSubQuery.getQuery() })`) .andWhere(`following.followeeHost IN (${ pubsubSubQuery.getQuery() })`)
.setParameters(pubsubSubQuery.getParameters()) .setParameters(pubsubSubQuery.getParameters())
.getRawOne() .getRawOne()
.then(x => parseInt(x.count, 10)), .then(x => parseInt(x.count, 10)),
Instances.createQueryBuilder('instance')
.select('COUNT(instance.id)')
.where(`instance.host IN (${ subInstancesQuery.getQuery() })`)
.andWhere(meta.blockedHosts.length === 0 ? '1=1' : `instance.host NOT IN (:...blocked)`, { blocked: meta.blockedHosts })
.andWhere(`instance.isSuspended = false`)
.andWhere(`instance.lastCommunicatedAt > :gt`, { gt: new Date(Date.now() - (1000 * 60 * 60 * 24 * 30)) })
.getRawOne()
.then(x => parseInt(x.count, 10)),
Instances.createQueryBuilder('instance')
.select('COUNT(instance.id)')
.where(`instance.host IN (${ pubInstancesQuery.getQuery() })`)
.andWhere(meta.blockedHosts.length === 0 ? '1=1' : `instance.host NOT IN (:...blocked)`, { blocked: meta.blockedHosts })
.andWhere(`instance.isSuspended = false`)
.andWhere(`instance.lastCommunicatedAt > :gt`, { gt: new Date(Date.now() - (1000 * 60 * 60 * 24 * 30)) })
.getRawOne()
.then(x => parseInt(x.count, 10)),
]); ]);
return { return {
'sub': sub, 'sub': sub,
'pub': pub, 'pub': pub,
'pubsub': pubsub, 'pubsub': pubsub,
'subActive': subActive,
'pubActive': pubActive,
}; };
} }

View file

@ -21,14 +21,12 @@ export default class InstanceChart extends Chart<typeof schema> {
followingCount, followingCount,
followersCount, followersCount,
driveFiles, driveFiles,
//driveUsage,
] = await Promise.all([ ] = await Promise.all([
Notes.count({ userHost: group }), Notes.count({ userHost: group }),
Users.count({ host: group }), Users.count({ host: group }),
Followings.count({ followerHost: group }), Followings.count({ followerHost: group }),
Followings.count({ followeeHost: group }), Followings.count({ followeeHost: group }),
DriveFiles.count({ userHost: group }), DriveFiles.count({ userHost: group }),
//DriveFiles.calcDriveUsageOfHost(group),
]); ]);
return { return {

View file

@ -484,8 +484,6 @@ export async function addFile({
perUserDriveChart.update(file, true); perUserDriveChart.update(file, true);
if (file.userHost !== null) { if (file.userHost !== null) {
instanceChart.updateDrive(file, true); instanceChart.updateDrive(file, true);
Instances.increment({ host: file.userHost }, 'driveUsage', file.size);
Instances.increment({ host: file.userHost }, 'driveFiles', 1);
} }
return file; return file;

View file

@ -86,8 +86,6 @@ async function postProcess(file: DriveFile, isExpired = false) {
perUserDriveChart.update(file, false); perUserDriveChart.update(file, false);
if (file.userHost !== null) { if (file.userHost !== null) {
instanceChart.updateDrive(file, false); instanceChart.updateDrive(file, false);
Instances.decrement({ host: file.userHost }, 'driveUsage', file.size);
Instances.decrement({ host: file.userHost }, 'driveFiles', 1);
} }
} }

View file

@ -34,6 +34,7 @@ import { deliverToRelays } from '../relay.js';
import { Channel } from '@/models/entities/channel.js'; import { Channel } from '@/models/entities/channel.js';
import { normalizeForSearch } from '@/misc/normalize-for-search.js'; import { normalizeForSearch } from '@/misc/normalize-for-search.js';
import { getAntennas } from '@/misc/antenna-cache.js'; import { getAntennas } from '@/misc/antenna-cache.js';
import { endedPollNotificationQueue } from '@/queue/queues.js';
type NotificationType = 'reply' | 'renote' | 'quote' | 'mention'; type NotificationType = 'reply' | 'renote' | 'quote' | 'mention';
@ -296,6 +297,15 @@ export default async (user: { id: User['id']; username: User['username']; host:
incRenoteCount(data.renote); incRenoteCount(data.renote);
} }
if (data.poll && data.poll.expiresAt) {
const delay = data.poll.expiresAt.getTime() - Date.now();
endedPollNotificationQueue.add({
noteId: note.id,
}, {
delay
});
}
if (!silent) { if (!silent) {
if (Users.isLocalUser(user)) activeUsersChart.write(user); if (Users.isLocalUser(user)) activeUsersChart.write(user);

View file

@ -1,4 +1,4 @@
export const notificationTypes = ['follow', 'mention', 'reply', 'renote', 'quote', 'reaction', 'pollVote', 'receiveFollowRequest', 'followRequestAccepted', 'groupInvited', 'app'] as const; export const notificationTypes = ['follow', 'mention', 'reply', 'renote', 'quote', 'reaction', 'pollVote', 'pollEnded', 'receiveFollowRequest', 'followRequestAccepted', 'groupInvited', 'app'] as const;
export const noteVisibilities = ['public', 'home', 'followers', 'specified'] as const; export const noteVisibilities = ['public', 'home', 'followers', 'specified'] as const;

View file

@ -82,10 +82,10 @@
pump "^3.0.0" pump "^3.0.0"
secure-json-parse "^2.1.0" secure-json-parse "^2.1.0"
"@eslint/eslintrc@^1.1.0": "@eslint/eslintrc@^1.2.0":
version "1.1.0" version "1.2.0"
resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.1.0.tgz#583d12dbec5d4f22f333f9669f7d0b7c7815b4d3" resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.2.0.tgz#7ce1547a5c46dfe56e1e45c3c9ed18038c721c6a"
integrity sha512-C1DfL7XX4nPqGd6jcP01W9pVM1HYCuUkFk1432D7F0v3JSlUIeOYn9oCoi3eoLZ+iwBSb29BMFxxny0YrrEZqg== integrity sha512-igm9SjJHNEJRiUnecP/1R5T3wKLEJ7pL6e2P+GUSfCd0dGjPYYZve08uzw8L2J8foVHFz+NGu12JxRcU2gGo6w==
dependencies: dependencies:
ajv "^6.12.4" ajv "^6.12.4"
debug "^4.3.2" debug "^4.3.2"
@ -237,10 +237,10 @@
resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-3.1.2.tgz#548650de521b344e3781fbdb0ece4aa6f729afb8" resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-3.1.2.tgz#548650de521b344e3781fbdb0ece4aa6f729afb8"
integrity sha512-JiX9vxoKMmu8Y3Zr2RVathBL1Cdu4Nt4MuNWemt1Nc06A0RAin9c5FArkhGsyMBWfCu4zj+9b+GxtjAnE4qqLQ== integrity sha512-JiX9vxoKMmu8Y3Zr2RVathBL1Cdu4Nt4MuNWemt1Nc06A0RAin9c5FArkhGsyMBWfCu4zj+9b+GxtjAnE4qqLQ==
"@sindresorhus/is@^4.0.0": "@sindresorhus/is@^4.2.0":
version "4.4.0" version "4.6.0"
resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-4.4.0.tgz#e277e5bdbdf7cb1e20d320f02f5e2ed113cd3185" resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-4.6.0.tgz#3c7c9c46e678feefe7a2e5bb609d3dbd665ffb3f"
integrity sha512-QppPM/8l3Mawvh4rn9CNEYIU9bxpXUCRMaX9yUpvBk1nMKusLKpfXGDEKExKaPhLzcn3lzil7pR6rnJ11HgeRQ== integrity sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==
"@sinonjs/commons@^1.7.0": "@sinonjs/commons@^1.7.0":
version "1.7.2" version "1.7.2"
@ -249,10 +249,10 @@
dependencies: dependencies:
type-detect "4.0.8" type-detect "4.0.8"
"@sinonjs/fake-timers@9.1.0": "@sinonjs/fake-timers@9.1.1":
version "9.1.0" version "9.1.1"
resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-9.1.0.tgz#8c92c56f195e0bed4c893ba59c8e3d55831ca0df" resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-9.1.1.tgz#7b698e0b9d12d93611f06ee143c30ced848e2840"
integrity sha512-M8vapsv9qQupMdzrVzkn5rb9jG7aUTEPAZdMtME2PuBaefksFZVE2C1g4LBRTkF/k3nRDNbDc5tp5NFC1PEYxA== integrity sha512-Wp5vwlZ0lOqpSYGKqr53INws9HLkt6JDc/pDZcPf7bchQnrXJMXPns8CXx0hFikMSGSWfvtvvpb2gtMVfkWagA==
dependencies: dependencies:
"@sinonjs/commons" "^1.7.0" "@sinonjs/commons" "^1.7.0"
@ -279,6 +279,13 @@
dependencies: dependencies:
defer-to-connect "^2.0.0" defer-to-connect "^2.0.0"
"@szmarczak/http-timer@^5.0.1":
version "5.0.1"
resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-5.0.1.tgz#c7c1bf1141cdd4751b0399c8fc7b8b664cd5be3a"
integrity sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==
dependencies:
defer-to-connect "^2.0.1"
"@tokenizer/token@^0.3.0": "@tokenizer/token@^0.3.0":
version "0.3.0" version "0.3.0"
resolved "https://registry.yarnpkg.com/@tokenizer/token/-/token-0.3.0.tgz#fe98a93fe789247e998c75e74e9c7c63217aa276" resolved "https://registry.yarnpkg.com/@tokenizer/token/-/token-0.3.0.tgz#fe98a93fe789247e998c75e74e9c7c63217aa276"
@ -352,6 +359,16 @@
"@types/node" "*" "@types/node" "*"
"@types/responselike" "*" "@types/responselike" "*"
"@types/cacheable-request@^6.0.2":
version "6.0.2"
resolved "https://registry.yarnpkg.com/@types/cacheable-request/-/cacheable-request-6.0.2.tgz#c324da0197de0a98a2312156536ae262429ff6b9"
integrity sha512-B3xVo+dlKM6nnKTcmm5ZtY/OL8bOAOd2Olee9M1zft65ox50OzjEHW91sDiU9j6cvW8Ejg1/Qkf4xd2kugApUA==
dependencies:
"@types/http-cache-semantics" "*"
"@types/keyv" "*"
"@types/node" "*"
"@types/responselike" "*"
"@types/cbor@6.0.0": "@types/cbor@6.0.0":
version "6.0.0" version "6.0.0"
resolved "https://registry.yarnpkg.com/@types/cbor/-/cbor-6.0.0.tgz#ddead015e14ef4463287d40cd92a6297a34dac8d" resolved "https://registry.yarnpkg.com/@types/cbor/-/cbor-6.0.0.tgz#ddead015e14ef4463287d40cd92a6297a34dac8d"
@ -494,10 +511,10 @@
dependencies: dependencies:
"@types/node" "*" "@types/node" "*"
"@types/koa-bodyparser@4.3.5": "@types/koa-bodyparser@4.3.6":
version "4.3.5" version "4.3.6"
resolved "https://registry.yarnpkg.com/@types/koa-bodyparser/-/koa-bodyparser-4.3.5.tgz#0c5fa44d7150202ffc16b89bd730ce1b6c7bc250" resolved "https://registry.yarnpkg.com/@types/koa-bodyparser/-/koa-bodyparser-4.3.6.tgz#99a7d215560fdc168334ebb6a259c6cec9381a56"
integrity sha512-NRqqoTtt7cfdDk/KNo+EwCIKRuzPAu/wsaZ7tgIvSIBtNfxuZHYueaLoWdxX3ZftWavQv07NE46TcpyoZGqpgQ== integrity sha512-keCpj2kmoooL2oHC9YIVvciN66uDT21uMp4rvrosyjLsHD1aAipn6cg3xSxav9tR2Ly/NMvs8jdlNPTTQvn8SA==
dependencies: dependencies:
"@types/koa" "*" "@types/koa" "*"
@ -621,10 +638,10 @@
resolved "https://registry.yarnpkg.com/@types/node/-/node-16.6.2.tgz#331b7b9f8621c638284787c5559423822fdffc50" resolved "https://registry.yarnpkg.com/@types/node/-/node-16.6.2.tgz#331b7b9f8621c638284787c5559423822fdffc50"
integrity sha512-LSw8TZt12ZudbpHc6EkIyDM3nHVWKYrAvGy6EAJfNfjusbwnThqjqxUKKRwuV3iWYeW/LYMzNgaq3MaLffQ2xA== integrity sha512-LSw8TZt12ZudbpHc6EkIyDM3nHVWKYrAvGy6EAJfNfjusbwnThqjqxUKKRwuV3iWYeW/LYMzNgaq3MaLffQ2xA==
"@types/node@17.0.19": "@types/node@17.0.21":
version "17.0.19" version "17.0.21"
resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.19.tgz#726171367f404bfbe8512ba608a09ebad810c7e6" resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.21.tgz#864b987c0c68d07b4345845c3e63b75edd143644"
integrity sha512-PfeQhvcMR4cPFVuYfBN4ifG7p9c+Dlh3yUZR6k+5yQK7wX3gDgVxBly4/WkBRs9x4dmcy1TVl08SY67wwtEvmA== integrity sha512-DBZCJbhII3r90XbQxI8Y9IjjiiOGlZ0Hr32omXIZvwwZ7p4DMMXGrKXVyPfuoBOri9XNtL0UK69jYIBIsRX3QQ==
"@types/node@^14.11.8": "@types/node@^14.11.8":
version "14.17.9" version "14.17.9"
@ -699,14 +716,6 @@
dependencies: dependencies:
"@types/redis" "^2.8.0" "@types/redis" "^2.8.0"
"@types/readable-stream@^2.3.9":
version "2.3.9"
resolved "https://registry.yarnpkg.com/@types/readable-stream/-/readable-stream-2.3.9.tgz#40a8349e6ace3afd2dd1b6d8e9b02945de4566a9"
integrity sha512-sqsgQqFT7HmQz/V5jH1O0fvQQnXAJO46Gg9LRO/JPfjmVmGUlcx831TZZO3Y3HtWhIkzf3kTsNT0Z0kzIhIvZw==
dependencies:
"@types/node" "*"
safe-buffer "*"
"@types/redis@4.0.11": "@types/redis@4.0.11":
version "4.0.11" version "4.0.11"
resolved "https://registry.yarnpkg.com/@types/redis/-/redis-4.0.11.tgz#0bb4c11ac9900a21ad40d2a6768ec6aaf651c0e1" resolved "https://registry.yarnpkg.com/@types/redis/-/redis-4.0.11.tgz#0bb4c11ac9900a21ad40d2a6768ec6aaf651c0e1"
@ -740,11 +749,6 @@
dependencies: dependencies:
htmlparser2 "^6.0.0" htmlparser2 "^6.0.0"
"@types/seedrandom@3.0.1":
version "3.0.1"
resolved "https://registry.yarnpkg.com/@types/seedrandom/-/seedrandom-3.0.1.tgz#1254750a4fec4aff2ebec088ccd0bb02e91fedb4"
integrity sha512-giB9gzDeiCeloIXDgzFBCgjj1k4WxcDrZtGl6h1IqmUPlxF+Nx8Ve+96QCyDZ/HseB/uvDsKbpib9hU5cU53pw==
"@types/serve-static@*": "@types/serve-static@*":
version "1.13.3" version "1.13.3"
resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.13.3.tgz#eb7e1c41c4468272557e897e9171ded5e2ded9d1" resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.13.3.tgz#eb7e1c41c4468272557e897e9171ded5e2ded9d1"
@ -811,10 +815,10 @@
dependencies: dependencies:
"@types/node" "*" "@types/node" "*"
"@types/ws@8.2.3": "@types/ws@8.5.2":
version "8.2.3" version "8.5.2"
resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.2.3.tgz#0bca6b03ba2f41e0fab782d4a573fe284aa907ae" resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.2.tgz#77e0c2e360e9579da930ffcfa53c5975ea3bdd26"
integrity sha512-ahRJZquUYCdOZf/rCsWg88S0/+cb9wazUBHv6HZEe3XdYaBe2zr/slM8J28X07Hn88Pnm4ezo7N8/ofnOgrPVQ== integrity sha512-VXI82ykONr5tacHEojnErTQk+KQSoYbW1NB6iz6wUwrNd+BqfkfggQNoNdCqhJSzbNumShPERbM+Pc5zpfhlbw==
dependencies: dependencies:
"@types/node" "*" "@types/node" "*"
@ -823,14 +827,14 @@
resolved "https://registry.yarnpkg.com/@types/zen-observable/-/zen-observable-0.8.2.tgz#808c9fa7e4517274ed555fa158f2de4b4f468e71" resolved "https://registry.yarnpkg.com/@types/zen-observable/-/zen-observable-0.8.2.tgz#808c9fa7e4517274ed555fa158f2de4b4f468e71"
integrity sha512-HrCIVMLjE1MOozVoD86622S7aunluLb2PJdPfb3nYiEtohm8mIB/vyv0Fd37AdeMFrTUQXEunw78YloMA3Qilg== integrity sha512-HrCIVMLjE1MOozVoD86622S7aunluLb2PJdPfb3nYiEtohm8mIB/vyv0Fd37AdeMFrTUQXEunw78YloMA3Qilg==
"@typescript-eslint/eslint-plugin@5.12.1": "@typescript-eslint/eslint-plugin@5.14.0":
version "5.12.1" version "5.14.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.12.1.tgz#b2cd3e288f250ce8332d5035a2ff65aba3374ac4" resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.14.0.tgz#5119b67152356231a0e24b998035288a9cd21335"
integrity sha512-M499lqa8rnNK7mUv74lSFFttuUsubIRdAbHcVaP93oFcKkEmHmLqy2n7jM9C8DVmFMYK61ExrZU6dLYhQZmUpw== integrity sha512-ir0wYI4FfFUDfLcuwKzIH7sMVA+db7WYen47iRSaCGl+HMAZI9fpBwfDo45ZALD3A45ZGyHWDNLhbg8tZrMX4w==
dependencies: dependencies:
"@typescript-eslint/scope-manager" "5.12.1" "@typescript-eslint/scope-manager" "5.14.0"
"@typescript-eslint/type-utils" "5.12.1" "@typescript-eslint/type-utils" "5.14.0"
"@typescript-eslint/utils" "5.12.1" "@typescript-eslint/utils" "5.14.0"
debug "^4.3.2" debug "^4.3.2"
functional-red-black-tree "^1.0.1" functional-red-black-tree "^1.0.1"
ignore "^5.1.8" ignore "^5.1.8"
@ -838,69 +842,69 @@
semver "^7.3.5" semver "^7.3.5"
tsutils "^3.21.0" tsutils "^3.21.0"
"@typescript-eslint/parser@5.12.1": "@typescript-eslint/parser@5.14.0":
version "5.12.1" version "5.14.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.12.1.tgz#b090289b553b8aa0899740d799d0f96e6f49771b" resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.14.0.tgz#7c79f898aa3cff0ceee6f1d34eeed0f034fb9ef3"
integrity sha512-6LuVUbe7oSdHxUWoX/m40Ni8gsZMKCi31rlawBHt7VtW15iHzjbpj2WLiToG2758KjtCCiLRKZqfrOdl3cNKuw== integrity sha512-aHJN8/FuIy1Zvqk4U/gcO/fxeMKyoSv/rS46UXMXOJKVsLQ+iYPuXNbpbH7cBLcpSbmyyFbwrniLx5+kutu1pw==
dependencies: dependencies:
"@typescript-eslint/scope-manager" "5.12.1" "@typescript-eslint/scope-manager" "5.14.0"
"@typescript-eslint/types" "5.12.1" "@typescript-eslint/types" "5.14.0"
"@typescript-eslint/typescript-estree" "5.12.1" "@typescript-eslint/typescript-estree" "5.14.0"
debug "^4.3.2" debug "^4.3.2"
"@typescript-eslint/scope-manager@5.12.1": "@typescript-eslint/scope-manager@5.14.0":
version "5.12.1" version "5.14.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.12.1.tgz#58734fd45d2d1dec49641aacc075fba5f0968817" resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.14.0.tgz#ea518962b42db8ed0a55152ea959c218cb53ca7b"
integrity sha512-J0Wrh5xS6XNkd4TkOosxdpObzlYfXjAFIm9QxYLCPOcHVv1FyyFCPom66uIh8uBr0sZCrtS+n19tzufhwab8ZQ== integrity sha512-LazdcMlGnv+xUc5R4qIlqH0OWARyl2kaP8pVCS39qSL3Pd1F7mI10DbdXeARcE62sVQE4fHNvEqMWsypWO+yEw==
dependencies: dependencies:
"@typescript-eslint/types" "5.12.1" "@typescript-eslint/types" "5.14.0"
"@typescript-eslint/visitor-keys" "5.12.1" "@typescript-eslint/visitor-keys" "5.14.0"
"@typescript-eslint/type-utils@5.12.1": "@typescript-eslint/type-utils@5.14.0":
version "5.12.1" version "5.14.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.12.1.tgz#8d58c6a0bb176b5e9a91581cda1a7f91a114d3f0" resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.14.0.tgz#711f08105860b12988454e91df433567205a8f0b"
integrity sha512-Gh8feEhsNLeCz6aYqynh61Vsdy+tiNNkQtc+bN3IvQvRqHkXGUhYkUi+ePKzP0Mb42se7FDb+y2SypTbpbR/Sg== integrity sha512-d4PTJxsqaUpv8iERTDSQBKUCV7Q5yyXjqXUl3XF7Sd9ogNLuKLkxz82qxokqQ4jXdTPZudWpmNtr/JjbbvUixw==
dependencies: dependencies:
"@typescript-eslint/utils" "5.12.1" "@typescript-eslint/utils" "5.14.0"
debug "^4.3.2" debug "^4.3.2"
tsutils "^3.21.0" tsutils "^3.21.0"
"@typescript-eslint/types@5.12.1": "@typescript-eslint/types@5.14.0":
version "5.12.1" version "5.14.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.12.1.tgz#46a36a28ff4d946821b58fe5a73c81dc2e12aa89" resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.14.0.tgz#96317cf116cea4befabc0defef371a1013f8ab11"
integrity sha512-hfcbq4qVOHV1YRdhkDldhV9NpmmAu2vp6wuFODL71Y0Ixak+FLeEU4rnPxgmZMnGreGEghlEucs9UZn5KOfHJA== integrity sha512-BR6Y9eE9360LNnW3eEUqAg6HxS9Q35kSIs4rp4vNHRdfg0s+/PgHgskvu5DFTM7G5VKAVjuyaN476LCPrdA7Mw==
"@typescript-eslint/typescript-estree@5.12.1": "@typescript-eslint/typescript-estree@5.14.0":
version "5.12.1" version "5.14.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.12.1.tgz#6a9425b9c305bcbc38e2d1d9a24c08e15e02b722" resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.14.0.tgz#78b7f7385d5b6f2748aacea5c9b7f6ae62058314"
integrity sha512-ahOdkIY9Mgbza7L9sIi205Pe1inCkZWAHE1TV1bpxlU4RZNPtXaDZfiiFWcL9jdxvW1hDYZJXrFm+vlMkXRbBw== integrity sha512-QGnxvROrCVtLQ1724GLTHBTR0lZVu13izOp9njRvMkCBgWX26PKvmMP8k82nmXBRD3DQcFFq2oj3cKDwr0FaUA==
dependencies: dependencies:
"@typescript-eslint/types" "5.12.1" "@typescript-eslint/types" "5.14.0"
"@typescript-eslint/visitor-keys" "5.12.1" "@typescript-eslint/visitor-keys" "5.14.0"
debug "^4.3.2" debug "^4.3.2"
globby "^11.0.4" globby "^11.0.4"
is-glob "^4.0.3" is-glob "^4.0.3"
semver "^7.3.5" semver "^7.3.5"
tsutils "^3.21.0" tsutils "^3.21.0"
"@typescript-eslint/utils@5.12.1": "@typescript-eslint/utils@5.14.0":
version "5.12.1" version "5.14.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.12.1.tgz#447c24a05d9c33f9c6c64cb48f251f2371eef920" resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.14.0.tgz#6c8bc4f384298cbbb32b3629ba7415f9f80dc8c4"
integrity sha512-Qq9FIuU0EVEsi8fS6pG+uurbhNTtoYr4fq8tKjBupsK5Bgbk2I32UGm0Sh+WOyjOPgo/5URbxxSNV6HYsxV4MQ== integrity sha512-EHwlII5mvUA0UsKYnVzySb/5EE/t03duUTweVy8Zqt3UQXBrpEVY144OTceFKaOe4xQXZJrkptCf7PjEBeGK4w==
dependencies: dependencies:
"@types/json-schema" "^7.0.9" "@types/json-schema" "^7.0.9"
"@typescript-eslint/scope-manager" "5.12.1" "@typescript-eslint/scope-manager" "5.14.0"
"@typescript-eslint/types" "5.12.1" "@typescript-eslint/types" "5.14.0"
"@typescript-eslint/typescript-estree" "5.12.1" "@typescript-eslint/typescript-estree" "5.14.0"
eslint-scope "^5.1.1" eslint-scope "^5.1.1"
eslint-utils "^3.0.0" eslint-utils "^3.0.0"
"@typescript-eslint/visitor-keys@5.12.1": "@typescript-eslint/visitor-keys@5.14.0":
version "5.12.1" version "5.14.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.12.1.tgz#f722da106c8f9695ae5640574225e45af3e52ec3" resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.14.0.tgz#1927005b3434ccd0d3ae1b2ecf60e65943c36986"
integrity sha512-l1KSLfupuwrXx6wc0AuOmC7Ko5g14ZOQ86wJJqRbdLbXLK02pK/DPiDDqCc7BqqiiA04/eAA6ayL0bgOrAkH7A== integrity sha512-yL0XxfzR94UEkjBqyymMLgCBdojzEuy/eim7N9/RIcTNxpJudAcqsU8eRyfzBbcEzGoPWfdM3AGak3cN08WOIw==
dependencies: dependencies:
"@typescript-eslint/types" "5.12.1" "@typescript-eslint/types" "5.14.0"
eslint-visitor-keys "^3.0.0" eslint-visitor-keys "^3.0.0"
"@ungap/promise-all-settled@1.1.2": "@ungap/promise-all-settled@1.1.2":
@ -1463,10 +1467,10 @@ bufferutil@^4.0.1:
dependencies: dependencies:
node-gyp-build "~3.7.0" node-gyp-build "~3.7.0"
bull@4.6.2: bull@4.7.0:
version "4.6.2" version "4.7.0"
resolved "https://registry.yarnpkg.com/bull/-/bull-4.6.2.tgz#fdde3b13245cff79571d85c4702884dfbf419b27" resolved "https://registry.yarnpkg.com/bull/-/bull-4.7.0.tgz#89442d4676117edd9f9a1359bb0edfb489595e70"
integrity sha512-RA6wnL+rZ2GRHMhz+UxFEn7hlLBpxPEiW4A0UY3YwWnheRA55AT4MC0PknxqO1K55pGFKSh/GpHQaj8flJMm+w== integrity sha512-rnJIsuXrDjDlz3HMHz6xobiRZAWe3o4MJBkzx7FdUjO+K2nSYrhR2KpcL+ZCNUMPKtONxL4DqmRjat5SBHFlAw==
dependencies: dependencies:
cron-parser "^4.2.1" cron-parser "^4.2.1"
debuglog "^1.0.0" debuglog "^1.0.0"
@ -1523,7 +1527,7 @@ cache-content-type@^1.0.0:
mime-types "^2.1.18" mime-types "^2.1.18"
ylru "^1.2.0" ylru "^1.2.0"
cacheable-lookup@6.0.4: cacheable-lookup@6.0.4, cacheable-lookup@^6.0.4:
version "6.0.4" version "6.0.4"
resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-6.0.4.tgz#65c0e51721bb7f9f2cb513aed6da4a1b93ad7dc8" resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-6.0.4.tgz#65c0e51721bb7f9f2cb513aed6da4a1b93ad7dc8"
integrity sha512-mbcDEZCkv2CZF4G01kr8eBd/5agkt9oCqz75tJMSIsquvRZ2sL6Hi5zGVKi/0OSC9oO1GHfJ2AV0ZIOY9vye0A== integrity sha512-mbcDEZCkv2CZF4G01kr8eBd/5agkt9oCqz75tJMSIsquvRZ2sL6Hi5zGVKi/0OSC9oO1GHfJ2AV0ZIOY9vye0A==
@ -1546,6 +1550,19 @@ cacheable-request@^7.0.1:
normalize-url "^4.1.0" normalize-url "^4.1.0"
responselike "^2.0.0" responselike "^2.0.0"
cacheable-request@^7.0.2:
version "7.0.2"
resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-7.0.2.tgz#ea0d0b889364a25854757301ca12b2da77f91d27"
integrity sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew==
dependencies:
clone-response "^1.0.2"
get-stream "^5.1.0"
http-cache-semantics "^4.0.0"
keyv "^4.0.0"
lowercase-keys "^2.0.0"
normalize-url "^6.0.1"
responselike "^2.0.0"
cafy@15.2.1: cafy@15.2.1:
version "15.2.1" version "15.2.1"
resolved "https://registry.yarnpkg.com/cafy/-/cafy-15.2.1.tgz#5a55eaeb721c604c7dca652f3d555c392e5f995a" resolved "https://registry.yarnpkg.com/cafy/-/cafy-15.2.1.tgz#5a55eaeb721c604c7dca652f3d555c392e5f995a"
@ -1601,10 +1618,10 @@ chainsaw@~0.1.0:
dependencies: dependencies:
traverse ">=0.3.0 <0.4" traverse ">=0.3.0 <0.4"
chalk-template@0.3.1: chalk-template@0.4.0:
version "0.3.1" version "0.4.0"
resolved "https://registry.yarnpkg.com/chalk-template/-/chalk-template-0.3.1.tgz#9511cd31ec3c4911448410d49645526c1c7a3a22" resolved "https://registry.yarnpkg.com/chalk-template/-/chalk-template-0.4.0.tgz#692c034d0ed62436b9062c1707fadcd0f753204b"
integrity sha512-sbWkBbb9Tfo81aTtQrfP9eBSVCTL8biVvZ0tA1rH9xqVrKoV2T9Y6Bp94wB+DRXtSGl/UXsgV83Np5hLhNRXww== integrity sha512-/ghrgmhfY8RaSdeo43hNXxpoHAtxdbskUHjPpfqUWGttFgycUhYPGx3YZBCnUCvOa7Doivn1IZec3DEGFoMgLg==
dependencies: dependencies:
chalk "^4.1.2" chalk "^4.1.2"
@ -1616,10 +1633,10 @@ chalk@4.0.0:
ansi-styles "^4.1.0" ansi-styles "^4.1.0"
supports-color "^7.1.0" supports-color "^7.1.0"
chalk@5.0.0: chalk@5.0.1:
version "5.0.0" version "5.0.1"
resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.0.0.tgz#bd96c6bb8e02b96e08c0c3ee2a9d90e050c7b832" resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.0.1.tgz#ca57d71e82bb534a296df63bbacc4a1c22b2a4b6"
integrity sha512-/duVOqst+luxCQRKEo4bNxinsOQtMP80ZYm7mMqzuh5PociNL0PvmHFvREJ9ueYL2TxlHjBcmLCdmocx9Vg+IQ== integrity sha512-Fo07WOYGqMfCWHOzSXOt2CxDbC6skS/jO9ynEcmpANMoPrD+W1r1K6Vx7iNm+AQmETU1Xr2t+n8nzkV9t6xh3w==
chalk@^2.4.2: chalk@^2.4.2:
version "2.4.2" version "2.4.2"
@ -1819,10 +1836,10 @@ color-support@^1.1.2:
resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2"
integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==
color@^4.2.0: color@^4.2.1:
version "4.2.0" version "4.2.1"
resolved "https://registry.yarnpkg.com/color/-/color-4.2.0.tgz#0c782459a3e98838ea01e4bc0fb43310ca35af78" resolved "https://registry.yarnpkg.com/color/-/color-4.2.1.tgz#498aee5fce7fc982606c8875cab080ac0547c884"
integrity sha512-hHTcrbvEnGjC7WBMk6ibQWFVDgEFTVmjrz2Q5HlU6ltwxv0JJN2Z8I7uRbWeQLF04dikxs8zgyZkazRJvSMtyQ== integrity sha512-MFJr0uY4RvTQUKvPq7dh9grVOTYSFeXja2mBXioCGjnjJoXrAp9jJ1NQTDR73c9nwBSAQiNKloKl5zq9WB9UPw==
dependencies: dependencies:
color-convert "^2.0.1" color-convert "^2.0.1"
color-string "^1.9.0" color-string "^1.9.0"
@ -2167,6 +2184,11 @@ defer-to-connect@^2.0.0:
resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-2.0.0.tgz#83d6b199db041593ac84d781b5222308ccf4c2c1" resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-2.0.0.tgz#83d6b199db041593ac84d781b5222308ccf4c2c1"
integrity sha512-bYL2d05vOSf1JEZNx5vSAtPuBMkX8K9EUutg7zlKvTqKXHt7RhWJFbmd7qakVuf13i+IkGmp6FwSsONOf6VYIg== integrity sha512-bYL2d05vOSf1JEZNx5vSAtPuBMkX8K9EUutg7zlKvTqKXHt7RhWJFbmd7qakVuf13i+IkGmp6FwSsONOf6VYIg==
defer-to-connect@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-2.0.1.tgz#8016bdb4143e4632b77a3449c6236277de520587"
integrity sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==
define-properties@^1.1.3: define-properties@^1.1.3:
version "1.1.3" version "1.1.3"
resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1"
@ -2219,6 +2241,11 @@ detect-libc@^2.0.0:
resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.0.tgz#c528bc09bc6d1aa30149228240917c225448f204" resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.0.tgz#c528bc09bc6d1aa30149228240917c225448f204"
integrity sha512-S55LzUl8HUav8l9E2PBTlC5PAJrHK7tkM+XXFGD+fbsbkTzhCpG6K05LxJcUOEWzMa4v6ptcMZ9s3fOdJDu0Zw== integrity sha512-S55LzUl8HUav8l9E2PBTlC5PAJrHK7tkM+XXFGD+fbsbkTzhCpG6K05LxJcUOEWzMa4v6ptcMZ9s3fOdJDu0Zw==
detect-libc@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.1.tgz#e1897aa88fa6ad197862937fbc0441ef352ee0cd"
integrity sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==
detect-node@2.1.0, detect-node@^2.1.0: detect-node@2.1.0, detect-node@^2.1.0:
version "2.1.0" version "2.1.0"
resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1" resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1"
@ -2646,12 +2673,12 @@ eslint-visitor-keys@^3.3.0:
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826"
integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==
eslint@8.9.0: eslint@8.10.0:
version "8.9.0" version "8.10.0"
resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.9.0.tgz#a2a8227a99599adc4342fd9b854cb8d8d6412fdb" resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.10.0.tgz#931be395eb60f900c01658b278e05b6dae47199d"
integrity sha512-PB09IGwv4F4b0/atrbcMFboF/giawbBLVC7fyDamk5Wtey4Jh2K+rYaBhCAbUyEI4QzB1ly09Uglc9iCtFaG2Q== integrity sha512-tcI1D9lfVec+R4LE1mNDnzoJ/f71Kl/9Cv4nG47jOueCMBrCCKYXr4AUVS7go6mWYGFD4+EoN6+eXSrEbRzXVw==
dependencies: dependencies:
"@eslint/eslintrc" "^1.1.0" "@eslint/eslintrc" "^1.2.0"
"@humanwhocodes/config-array" "^0.9.2" "@humanwhocodes/config-array" "^0.9.2"
ajv "^6.10.0" ajv "^6.10.0"
chalk "^4.0.0" chalk "^4.0.0"
@ -2745,7 +2772,7 @@ event-target-shim@^5.0.0:
resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789"
integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==
eventemitter3@4.0.7, eventemitter3@^4.0.4, eventemitter3@^4.0.7: eventemitter3@^4.0.4, eventemitter3@^4.0.7:
version "4.0.7" version "4.0.7"
resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f"
integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==
@ -2882,14 +2909,14 @@ file-entry-cache@^6.0.1:
dependencies: dependencies:
flat-cache "^3.0.4" flat-cache "^3.0.4"
file-type@16.5.3: file-type@17.1.1:
version "16.5.3" version "17.1.1"
resolved "https://registry.yarnpkg.com/file-type/-/file-type-16.5.3.tgz#474b7e88c74724046abb505e9b8ed4db30c4fc06" resolved "https://registry.yarnpkg.com/file-type/-/file-type-17.1.1.tgz#24c59bc663df0c0c181b31dfacde25e06431afbe"
integrity sha512-uVsl7iFhHSOY4bEONLlTK47iAHtNsFHWP5YE4xJfZ4rnX7S1Q3wce09XgqSC7E/xh8Ncv/be1lNoyprlUH/x6A== integrity sha512-heRUMZHby2Qj6wZAA3YHeMlRmZNQTcb6VxctkGmM+mcM6ROQKvHpr7SS6EgdfEhH+s25LDshBjvPx/Ecm+bOVQ==
dependencies: dependencies:
readable-web-to-node-stream "^3.0.0" readable-web-to-node-stream "^3.0.2"
strtok3 "^6.2.4" strtok3 "^7.0.0-alpha.7"
token-types "^4.1.1" token-types "^5.0.0-alpha.2"
fill-range@^7.0.1: fill-range@^7.0.1:
version "7.0.1" version "7.0.1"
@ -2970,6 +2997,11 @@ follow-redirects@^1.14.4:
resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.7.tgz#2004c02eb9436eee9a21446a6477debf17e81685" resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.7.tgz#2004c02eb9436eee9a21446a6477debf17e81685"
integrity sha512-+hbxoLbFMbRKDwohX8GkTataGqO6Jb7jGwpAlwgy2bIz25XtRm7KEzJM76R1WiNT5SwZkX4Y75SwBolkpmE7iQ== integrity sha512-+hbxoLbFMbRKDwohX8GkTataGqO6Jb7jGwpAlwgy2bIz25XtRm7KEzJM76R1WiNT5SwZkX4Y75SwBolkpmE7iQ==
form-data-encoder@1.7.1:
version "1.7.1"
resolved "https://registry.yarnpkg.com/form-data-encoder/-/form-data-encoder-1.7.1.tgz#ac80660e4f87ee0d3d3c3638b7da8278ddb8ec96"
integrity sha512-EFRDrsMm/kyqbTQocNvRXMLjc7Es2Vk+IQFx/YW7hkUH1eBl4J1fqiP34l74Yt0pFLCNpc06fkbVk00008mzjg==
form-data@^4.0.0: form-data@^4.0.0:
version "4.0.0" version "4.0.0"
resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452"
@ -3235,21 +3267,23 @@ got@11.5.1:
p-cancelable "^2.0.0" p-cancelable "^2.0.0"
responselike "^2.0.0" responselike "^2.0.0"
got@11.8.2: got@12.0.1:
version "11.8.2" version "12.0.1"
resolved "https://registry.yarnpkg.com/got/-/got-11.8.2.tgz#7abb3959ea28c31f3576f1576c1effce23f33599" resolved "https://registry.yarnpkg.com/got/-/got-12.0.1.tgz#78747f1c5bc7069bbd739636ed8b70c7f2140a39"
integrity sha512-D0QywKgIe30ODs+fm8wMZiAcZjypcCodPNuMz5H9Mny7RJ+IjJ10BdmGW7OM7fHXP+O7r6ZwapQ/YQmMSvB0UQ== integrity sha512-1Zhoh+lDej3t7Ks1BP/Jufn+rNqdiHQgUOcTxHzg2Dao1LQfp5S4Iq0T3iBxN4Zdo7QqCJL+WJUNzDX6rCP2Ew==
dependencies: dependencies:
"@sindresorhus/is" "^4.0.0" "@sindresorhus/is" "^4.2.0"
"@szmarczak/http-timer" "^4.0.5" "@szmarczak/http-timer" "^5.0.1"
"@types/cacheable-request" "^6.0.1" "@types/cacheable-request" "^6.0.2"
"@types/responselike" "^1.0.0" "@types/responselike" "^1.0.0"
cacheable-lookup "^5.0.3" cacheable-lookup "^6.0.4"
cacheable-request "^7.0.1" cacheable-request "^7.0.2"
decompress-response "^6.0.0" decompress-response "^6.0.0"
http2-wrapper "^1.0.0-beta.5.2" form-data-encoder "1.7.1"
lowercase-keys "^2.0.0" get-stream "^6.0.1"
p-cancelable "^2.0.0" http2-wrapper "^2.1.9"
lowercase-keys "^3.0.0"
p-cancelable "^3.0.0"
responselike "^2.0.0" responselike "^2.0.0"
graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.4: graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.4:
@ -3438,7 +3472,7 @@ http-signature@1.3.6:
jsprim "^2.0.2" jsprim "^2.0.2"
sshpk "^1.14.1" sshpk "^1.14.1"
http2-wrapper@^1.0.0-beta.5.0, http2-wrapper@^1.0.0-beta.5.2: http2-wrapper@^1.0.0-beta.5.0:
version "1.0.3" version "1.0.3"
resolved "https://registry.yarnpkg.com/http2-wrapper/-/http2-wrapper-1.0.3.tgz#b8f55e0c1f25d4ebd08b3b0c2c079f9590800b3d" resolved "https://registry.yarnpkg.com/http2-wrapper/-/http2-wrapper-1.0.3.tgz#b8f55e0c1f25d4ebd08b3b0c2c079f9590800b3d"
integrity sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg== integrity sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==
@ -3446,6 +3480,14 @@ http2-wrapper@^1.0.0-beta.5.0, http2-wrapper@^1.0.0-beta.5.2:
quick-lru "^5.1.1" quick-lru "^5.1.1"
resolve-alpn "^1.0.0" resolve-alpn "^1.0.0"
http2-wrapper@^2.1.9:
version "2.1.10"
resolved "https://registry.yarnpkg.com/http2-wrapper/-/http2-wrapper-2.1.10.tgz#307cd0cee2564723692ad34c2d570d12f10e83be"
integrity sha512-QHgsdYkieKp+6JbXP25P+tepqiHYd+FVnDwXpxi/BlUcoIB0nsmTOymTNvETuTO+pDuwcSklPE72VR3DqV+Haw==
dependencies:
quick-lru "^5.1.1"
resolve-alpn "^1.2.0"
http_ece@1.1.0: http_ece@1.1.0:
version "1.1.0" version "1.1.0"
resolved "https://registry.yarnpkg.com/http_ece/-/http_ece-1.1.0.tgz#74780c6eb32d8ddfe9e36a83abcd81fe0cd4fb75" resolved "https://registry.yarnpkg.com/http_ece/-/http_ece-1.1.0.tgz#74780c6eb32d8ddfe9e36a83abcd81fe0cd4fb75"
@ -4445,6 +4487,11 @@ lowercase-keys@^2.0.0:
resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479"
integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==
lowercase-keys@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-3.0.0.tgz#c5e7d442e37ead247ae9db117a9d0a467c89d4f2"
integrity sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==
lru-cache@^4.1.5: lru-cache@^4.1.5:
version "4.1.5" version "4.1.5"
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd"
@ -4868,13 +4915,6 @@ node-fetch@*:
fetch-blob "^3.1.4" fetch-blob "^3.1.4"
formdata-polyfill "^4.0.10" formdata-polyfill "^4.0.10"
node-fetch@2.6.7, node-fetch@^2.6.1:
version "2.6.7"
resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad"
integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==
dependencies:
whatwg-url "^5.0.0"
node-fetch@3.0.0-beta.9: node-fetch@3.0.0-beta.9:
version "3.0.0-beta.9" version "3.0.0-beta.9"
resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-3.0.0-beta.9.tgz#0a7554cfb824380dd6812864389923c783c80d9b" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-3.0.0-beta.9.tgz#0a7554cfb824380dd6812864389923c783c80d9b"
@ -4883,6 +4923,22 @@ node-fetch@3.0.0-beta.9:
data-uri-to-buffer "^3.0.1" data-uri-to-buffer "^3.0.1"
fetch-blob "^2.1.1" fetch-blob "^2.1.1"
node-fetch@3.2.2:
version "3.2.2"
resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-3.2.2.tgz#16d33fbe32ca7c6ca1ca8ba5dfea1dd885c59f04"
integrity sha512-Cwhq1JFIoon15wcIkFzubVNFE5GvXGV82pKf4knXXjvGmn7RJKcypeuqcVNZMGDZsAFWyIRya/anwAJr7TWJ7w==
dependencies:
data-uri-to-buffer "^4.0.0"
fetch-blob "^3.1.4"
formdata-polyfill "^4.0.10"
node-fetch@^2.6.1:
version "2.6.7"
resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad"
integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==
dependencies:
whatwg-url "^5.0.0"
node-gyp-build@^4.2.3: node-gyp-build@^4.2.3:
version "4.3.0" version "4.3.0"
resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.3.0.tgz#9f256b03e5826150be39c764bf51e993946d71a3" resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.3.0.tgz#9f256b03e5826150be39c764bf51e993946d71a3"
@ -4951,6 +5007,11 @@ normalize-url@^4.1.0:
resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.1.tgz#0dd90cf1288ee1d1313b87081c9a5932ee48518a" resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.1.tgz#0dd90cf1288ee1d1313b87081c9a5932ee48518a"
integrity sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA== integrity sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==
normalize-url@^6.0.1:
version "6.1.0"
resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a"
integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==
npm-run-path@^5.1.0: npm-run-path@^5.1.0:
version "5.1.0" version "5.1.0"
resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-5.1.0.tgz#bc62f7f3f6952d9894bd08944ba011a6ee7b7e00" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-5.1.0.tgz#bc62f7f3f6952d9894bd08944ba011a6ee7b7e00"
@ -5122,6 +5183,11 @@ p-cancelable@^2.0.0:
resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-2.0.0.tgz#4a3740f5bdaf5ed5d7c3e34882c6fb5d6b266a6e" resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-2.0.0.tgz#4a3740f5bdaf5ed5d7c3e34882c6fb5d6b266a6e"
integrity sha512-wvPXDmbMmu2ksjkB4Z3nZWTSkJEb9lqVdMaCKpZUGJG9TMiNp9XcbG3fn9fPKjem04fJMJnXoyFPk2FmgiaiNg== integrity sha512-wvPXDmbMmu2ksjkB4Z3nZWTSkJEb9lqVdMaCKpZUGJG9TMiNp9XcbG3fn9fPKjem04fJMJnXoyFPk2FmgiaiNg==
p-cancelable@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-3.0.0.tgz#63826694b54d61ca1c20ebcb6d3ecf5e14cd8050"
integrity sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==
p-finally@^1.0.0: p-finally@^1.0.0:
version "1.0.0" version "1.0.0"
resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae"
@ -5295,10 +5361,10 @@ path-type@^4.0.0:
resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b"
integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==
peek-readable@^4.0.1: peek-readable@^5.0.0-alpha.5:
version "4.0.1" version "5.0.0-alpha.5"
resolved "https://registry.yarnpkg.com/peek-readable/-/peek-readable-4.0.1.tgz#9a045f291db254111c3412c1ce4fec27ddd4d202" resolved "https://registry.yarnpkg.com/peek-readable/-/peek-readable-5.0.0-alpha.5.tgz#ace5dfedf7bc33f17c9b5170b9d54f69a4fba79b"
integrity sha512-7qmhptnR0WMSpxT5rMHG9bW/mYSR1uqaPFj2MHvT+y/aOUu6msJijpKt5SkTDKySwg65OWG2JwTMBlgcbwMHrQ== integrity sha512-pJohF/tDwV3ntnT5+EkUo4E700q/j/OCDuPxtM+5/kFGjyOai/sK4/We4Cy1MB2OiTQliWU5DxPvYIKQAdPqAA==
pg-connection-string@^2.5.0: pg-connection-string@^2.5.0:
version "2.5.0" version "2.5.0"
@ -5779,12 +5845,11 @@ readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0:
string_decoder "^1.1.1" string_decoder "^1.1.1"
util-deprecate "^1.0.1" util-deprecate "^1.0.1"
readable-web-to-node-stream@^3.0.0: readable-web-to-node-stream@^3.0.2:
version "3.0.0" version "3.0.2"
resolved "https://registry.yarnpkg.com/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.0.tgz#4ca5408e70471069119d691934141a52de413955" resolved "https://registry.yarnpkg.com/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.2.tgz#5d52bb5df7b54861fd48d015e93a2cb87b3ee0bb"
integrity sha512-HNmLb3n0SteGAs8HQlErYPGeO+y7cvL/mVUKtXeUkl0iCZ/2GIgKGrCFHyS7UXFnO8uc9U+0y3pYIzAPsjFfvA== integrity sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw==
dependencies: dependencies:
"@types/readable-stream" "^2.3.9"
readable-stream "^3.6.0" readable-stream "^3.6.0"
readdir-glob@^1.0.0: readdir-glob@^1.0.0:
@ -5896,6 +5961,11 @@ resolve-alpn@^1.0.0:
resolved "https://registry.yarnpkg.com/resolve-alpn/-/resolve-alpn-1.0.0.tgz#745ad60b3d6aff4b4a48e01b8c0bdc70959e0e8c" resolved "https://registry.yarnpkg.com/resolve-alpn/-/resolve-alpn-1.0.0.tgz#745ad60b3d6aff4b4a48e01b8c0bdc70959e0e8c"
integrity sha512-rTuiIEqFmGxne4IovivKSDzld2lWW9QCjqv80SYjPgf+gS35eaCAjaP54CCwGAwBtnCsvNLYtqxe1Nw+i6JEmA== integrity sha512-rTuiIEqFmGxne4IovivKSDzld2lWW9QCjqv80SYjPgf+gS35eaCAjaP54CCwGAwBtnCsvNLYtqxe1Nw+i6JEmA==
resolve-alpn@^1.2.0:
version "1.2.1"
resolved "https://registry.yarnpkg.com/resolve-alpn/-/resolve-alpn-1.2.1.tgz#b7adbdac3546aaaec20b45e7d8265927072726f9"
integrity sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==
resolve-dir@^1.0.0, resolve-dir@^1.0.1: resolve-dir@^1.0.0, resolve-dir@^1.0.1:
version "1.0.1" version "1.0.1"
resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43" resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43"
@ -5974,16 +6044,16 @@ s-age@1.1.2:
resolved "https://registry.yarnpkg.com/s-age/-/s-age-1.1.2.tgz#c0cf15233ccc93f41de92ea42c36d957977d1ea2" resolved "https://registry.yarnpkg.com/s-age/-/s-age-1.1.2.tgz#c0cf15233ccc93f41de92ea42c36d957977d1ea2"
integrity sha512-aSN2TlF39WLoZA/6cgYSJZhKt63kJ4EaadejPWjWY9/h4rksIqvfWY3gfd+3uAegSM1IXsA9aWeEhJtkxkFQtA== integrity sha512-aSN2TlF39WLoZA/6cgYSJZhKt63kJ4EaadejPWjWY9/h4rksIqvfWY3gfd+3uAegSM1IXsA9aWeEhJtkxkFQtA==
safe-buffer@*, safe-buffer@5.2.1:
version "5.2.1"
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
version "5.1.2" version "5.1.2"
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
safe-buffer@5.2.1:
version "5.2.1"
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@~5.2.0: safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@~5.2.0:
version "5.2.0" version "5.2.0"
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519"
@ -6101,13 +6171,13 @@ sha.js@^2.4.11:
inherits "^2.0.1" inherits "^2.0.1"
safe-buffer "^5.0.1" safe-buffer "^5.0.1"
sharp@0.30.1: sharp@0.30.2:
version "0.30.1" version "0.30.2"
resolved "https://registry.yarnpkg.com/sharp/-/sharp-0.30.1.tgz#203efaf9acfc5c15c8a343800254621e56011c12" resolved "https://registry.yarnpkg.com/sharp/-/sharp-0.30.2.tgz#95b309b2740424702dc19b62a62595dd34a458b1"
integrity sha512-ycpz81q8AeVjz1pGvvirQBeJcYE2sXAjcLXR/69LWOe/oxavBLOrenZcTzvTXn83jqAGqY+OuwF+2kFXzbKtDA== integrity sha512-mrMeKI5ECTdYhslPlA2TbBtU3nZXMEBcQwI6qYXjPlu1LpW4HBZLFm6xshMI1HpIdEEJ3UcYp5AKifLT/fEHZQ==
dependencies: dependencies:
color "^4.2.0" color "^4.2.1"
detect-libc "^2.0.0" detect-libc "^2.0.1"
node-addon-api "^4.3.0" node-addon-api "^4.3.0"
prebuild-install "^7.0.1" prebuild-install "^7.0.1"
semver "^7.3.5" semver "^7.3.5"
@ -6402,13 +6472,13 @@ strip-json-comments@~2.0.1:
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo=
strtok3@^6.2.4: strtok3@^7.0.0-alpha.7:
version "6.2.4" version "7.0.0-alpha.8"
resolved "https://registry.yarnpkg.com/strtok3/-/strtok3-6.2.4.tgz#302aea64c0fa25d12a0385069ba66253fdc38a81" resolved "https://registry.yarnpkg.com/strtok3/-/strtok3-7.0.0-alpha.8.tgz#23a7870974e0494b58b14af6dd1c2c67cf13314d"
integrity sha512-GO8IcFF9GmFDvqduIspUBwCzCbqzegyVKIsSymcMgiZKeCfrN9SowtUoi8+b59WZMAjIzVZic/Ft97+pynR3Iw== integrity sha512-u+k19v+rTxBjGYxncRQjGvZYwYvEd0uP3D+uHKe/s4WB1eXS5ZwpZsTlBu5xSS4zEd89mTXECXg6WW3FSeV8cA==
dependencies: dependencies:
"@tokenizer/token" "^0.3.0" "@tokenizer/token" "^0.3.0"
peek-readable "^4.0.1" peek-readable "^5.0.0-alpha.5"
style-loader@3.3.1: style-loader@3.3.1:
version "3.3.1" version "3.3.1"
@ -6464,10 +6534,10 @@ syslog-pro@1.0.0:
dependencies: dependencies:
moment "^2.22.2" moment "^2.22.2"
systeminformation@5.11.4: systeminformation@5.11.6:
version "5.11.4" version "5.11.6"
resolved "https://registry.yarnpkg.com/systeminformation/-/systeminformation-5.11.4.tgz#3ed99533c67d0b4bd357871687e014f1c2a37194" resolved "https://registry.yarnpkg.com/systeminformation/-/systeminformation-5.11.6.tgz#8624cbb2e95e6fa98a4ebb0d10759427c0e88144"
integrity sha512-rh7bjpjP5whUaTknim5CiGdAiKZcgWhmbmxjzBRXDWqUc/k67bz2OP+03DdcX6/SN/CDSAi/NeUwM5o2gjHJoA== integrity sha512-7KBXgdnIDxABQ93w+GrPSrK/pup73+fM09VGka4A/+FhgzdlRY0JNGGDFmV8BHnFuzP9zwlI3n64yDbp7emasQ==
tapable@^2.2.0: tapable@^2.2.0:
version "2.2.0" version "2.2.0"
@ -6591,10 +6661,10 @@ token-stream@1.0.0:
resolved "https://registry.yarnpkg.com/token-stream/-/token-stream-1.0.0.tgz#cc200eab2613f4166d27ff9afc7ca56d49df6eb4" resolved "https://registry.yarnpkg.com/token-stream/-/token-stream-1.0.0.tgz#cc200eab2613f4166d27ff9afc7ca56d49df6eb4"
integrity sha1-zCAOqyYT9BZtJ/+a/HylbUnfbrQ= integrity sha1-zCAOqyYT9BZtJ/+a/HylbUnfbrQ=
token-types@^4.1.1: token-types@^5.0.0-alpha.2:
version "4.1.1" version "5.0.0-alpha.2"
resolved "https://registry.yarnpkg.com/token-types/-/token-types-4.1.1.tgz#ef9e8c8e2e0ded9f1b3f8dbaa46a3228b113ba1a" resolved "https://registry.yarnpkg.com/token-types/-/token-types-5.0.0-alpha.2.tgz#e43d63b2a8223a593d1c782a5149bec18f1abf97"
integrity sha512-hD+QyuUAyI2spzsI0B7gf/jJ2ggR4RjkAo37j3StuePhApJUwcWDjnHDOFdIWYSwNR28H14hpwm4EI+V1Ted1w== integrity sha512-EsG9UxAW4M6VATrEEjhPFTKEUi1OiJqTUMIZOGBN49fGxYjZB36k0p7to3HZSmWRoHm1QfZgrg3e02fpqAt5fQ==
dependencies: dependencies:
"@tokenizer/token" "^0.3.0" "@tokenizer/token" "^0.3.0"
ieee754 "^1.2.1" ieee754 "^1.2.1"
@ -6630,20 +6700,20 @@ trace-redirect@1.0.6:
resolved "https://registry.yarnpkg.com/traverse/-/traverse-0.3.9.tgz#717b8f220cc0bb7b44e40514c22b2e8bbc70d8b9" resolved "https://registry.yarnpkg.com/traverse/-/traverse-0.3.9.tgz#717b8f220cc0bb7b44e40514c22b2e8bbc70d8b9"
integrity sha1-cXuPIgzAu3tE5AUUwisui7xw2Lk= integrity sha1-cXuPIgzAu3tE5AUUwisui7xw2Lk=
ts-loader@9.2.6: ts-loader@9.2.7:
version "9.2.6" version "9.2.7"
resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-9.2.6.tgz#9937c4dd0a1e3dbbb5e433f8102a6601c6615d74" resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-9.2.7.tgz#948654099ca96992b62ec47bd9cee5632006e101"
integrity sha512-QMTC4UFzHmu9wU2VHZEmWWE9cUajjfcdcws+Gh7FhiO+Dy0RnR1bNz0YCHqhI0yRowCE9arVnNxYHqELOy9Hjw== integrity sha512-Fxh44mKli9QezgbdCXkEJWxnedQ0ead7DXTH+lfXEPedu+Y9EtMJ2aQ9G3Dj1j7Q612E8931rww8NDZha4Tibg==
dependencies: dependencies:
chalk "^4.1.0" chalk "^4.1.0"
enhanced-resolve "^5.0.0" enhanced-resolve "^5.0.0"
micromatch "^4.0.0" micromatch "^4.0.0"
semver "^7.3.4" semver "^7.3.4"
ts-node@10.5.0: ts-node@10.7.0:
version "10.5.0" version "10.7.0"
resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.5.0.tgz#618bef5854c1fbbedf5e31465cbb224a1d524ef9" resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.7.0.tgz#35d503d0fab3e2baa672a0e94f4b40653c2463f5"
integrity sha512-6kEJKwVxAJ35W4akuiysfKwKmjkbYxwQMTBaAxo9KKAx/Yd26mPUyhGz3ji+EsJoAgrLqVsYHNuuYwQe22lbtw== integrity sha512-TbIGS4xgJoX2i3do417KSaep1uRAW/Lu+WAL2doDHC0D6ummjirVOXU5/7aiZotbQ5p1Zp9tP7U6cYhA0O7M8A==
dependencies: dependencies:
"@cspotcode/source-map-support" "0.7.0" "@cspotcode/source-map-support" "0.7.0"
"@tsconfig/node10" "^1.0.7" "@tsconfig/node10" "^1.0.7"
@ -6671,7 +6741,17 @@ tsc-alias@1.4.1:
mylas "^2.1.4" mylas "^2.1.4"
normalize-path "^3.0.0" normalize-path "^3.0.0"
tsconfig-paths@3.12.0, tsconfig-paths@^3.12.0: tsconfig-paths@3.13.0:
version "3.13.0"
resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.13.0.tgz#f3e9b8f6876698581d94470c03c95b3a48c0e3d7"
integrity sha512-nWuffZppoaYK0vQ1SQmkSsQzJoHA4s6uzdb2waRpD806x9yfq153AdVsWz4je2qZcW+pENrMQXbGQ3sMCkXuhw==
dependencies:
"@types/json5" "^0.0.29"
json5 "^1.0.1"
minimist "^1.2.0"
strip-bom "^3.0.0"
tsconfig-paths@^3.12.0:
version "3.12.0" version "3.12.0"
resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.12.0.tgz#19769aca6ee8f6a1a341e38c8fa45dd9fb18899b" resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.12.0.tgz#19769aca6ee8f6a1a341e38c8fa45dd9fb18899b"
integrity sha512-e5adrnOYT6zqVnWqZu7i/BQ3BnhzvGbjEjejFXO20lKIKpwTaupkCPgEfv4GZK1IBciJUEhYs3J3p75FdaTFVg== integrity sha512-e5adrnOYT6zqVnWqZu7i/BQ3BnhzvGbjEjejFXO20lKIKpwTaupkCPgEfv4GZK1IBciJUEhYs3J3p75FdaTFVg==
@ -6774,10 +6854,10 @@ typedarray@^0.0.6:
resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=
typeorm@0.2.44: typeorm@0.2.45:
version "0.2.44" version "0.2.45"
resolved "https://registry.yarnpkg.com/typeorm/-/typeorm-0.2.44.tgz#4cc07eb1eb7a0e7f3ec9e65ded9eb3c3aedbb3e1" resolved "https://registry.yarnpkg.com/typeorm/-/typeorm-0.2.45.tgz#e5bbb3af822dc4646bad96cfa48cd22fa4687cea"
integrity sha512-yFyb9Ts73vGaS/O06TvLpzvT5U/ngO31GeciNc0eoH7P1QcG8kVZdOy9FHJqkTeDmIljMRgWjbYUoMw53ZY7Xw== integrity sha512-c0rCO8VMJ3ER7JQ73xfk0zDnVv0WDjpsP6Q1m6CVKul7DB9iVdWLRjPzc8v2eaeBuomsbZ2+gTaYr8k1gm3bYA==
dependencies: dependencies:
"@sqltools/formatter" "^1.2.2" "@sqltools/formatter" "^1.2.2"
app-root-path "^3.0.0" app-root-path "^3.0.0"
@ -6797,10 +6877,10 @@ typeorm@0.2.44:
yargs "^17.0.1" yargs "^17.0.1"
zen-observable-ts "^1.0.0" zen-observable-ts "^1.0.0"
typescript@4.5.5: typescript@4.6.2:
version "4.5.5" version "4.6.2"
resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.5.5.tgz#d8c953832d28924a9e3d37c73d729c846c5896f3" resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.6.2.tgz#fe12d2727b708f4eef40f51598b3398baa9611d4"
integrity sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA== integrity sha512-HM/hFigTBHZhLXshn9sN37H085+hQGeJHJ/X7LpBWLID/fbc2acUMfU+lGD98X81sKP+pFa9f0DZmCwB9GnbAg==
ulid@2.3.0: ulid@2.3.0:
version "2.3.0" version "2.3.0"

View file

@ -26,15 +26,15 @@
"@types/punycode": "2.1.0", "@types/punycode": "2.1.0",
"@types/qrcode": "1.4.2", "@types/qrcode": "1.4.2",
"@types/random-seed": "0.3.3", "@types/random-seed": "0.3.3",
"@types/seedrandom": "2.4.28", "@types/seedrandom": "3.0.2",
"@types/throttle-debounce": "2.1.0", "@types/throttle-debounce": "2.1.0",
"@types/tinycolor2": "1.4.3", "@types/tinycolor2": "1.4.3",
"@types/uuid": "8.3.4", "@types/uuid": "8.3.4",
"@types/webpack": "5.28.0", "@types/webpack": "5.28.0",
"@types/webpack-stream": "3.2.12", "@types/webpack-stream": "3.2.12",
"@types/websocket": "1.0.5", "@types/websocket": "1.0.5",
"@types/ws": "8.2.3", "@types/ws": "8.5.2",
"@typescript-eslint/parser": "5.12.1", "@typescript-eslint/parser": "5.14.0",
"@vue/compiler-sfc": "3.2.31", "@vue/compiler-sfc": "3.2.31",
"abort-controller": "3.0.0", "abort-controller": "3.0.0",
"autobind-decorator": "2.4.0", "autobind-decorator": "2.4.0",
@ -48,11 +48,11 @@
"chartjs-plugin-zoom": "1.2.0", "chartjs-plugin-zoom": "1.2.0",
"compare-versions": "4.1.3", "compare-versions": "4.1.3",
"content-disposition": "0.5.4", "content-disposition": "0.5.4",
"css-loader": "6.6.0", "css-loader": "6.7.1",
"cssnano": "5.0.17", "cssnano": "5.1.1",
"date-fns": "2.28.0", "date-fns": "2.28.0",
"escape-regexp": "0.0.1", "escape-regexp": "0.0.1",
"eslint": "8.9.0", "eslint": "8.10.0",
"eslint-plugin-vue": "8.5.0", "eslint-plugin-vue": "8.5.0",
"eventemitter3": "4.0.7", "eventemitter3": "4.0.7",
"feed": "4.2.2", "feed": "4.2.2",
@ -72,7 +72,7 @@
"parse5": "6.0.1", "parse5": "6.0.1",
"photoswipe": "git+https://github.com/dimsemenov/photoswipe#v5-beta", "photoswipe": "git+https://github.com/dimsemenov/photoswipe#v5-beta",
"portscanner": "2.2.0", "portscanner": "2.2.0",
"postcss": "8.4.6", "postcss": "8.4.8",
"postcss-loader": "6.2.1", "postcss-loader": "6.2.1",
"prismjs": "1.27.0", "prismjs": "1.27.0",
"private-ip": "2.3.3", "private-ip": "2.3.3",
@ -85,7 +85,7 @@
"reflect-metadata": "0.1.13", "reflect-metadata": "0.1.13",
"rndstr": "1.0.0", "rndstr": "1.0.0",
"s-age": "1.1.2", "s-age": "1.1.2",
"sass": "1.49.8", "sass": "1.49.9",
"sass-loader": "12.6.0", "sass-loader": "12.6.0",
"seedrandom": "3.0.5", "seedrandom": "3.0.5",
"strict-event-emitter-types": "2.0.0", "strict-event-emitter-types": "2.0.0",
@ -93,25 +93,25 @@
"style-loader": "3.3.1", "style-loader": "3.3.1",
"syuilo-password-strength": "0.0.1", "syuilo-password-strength": "0.0.1",
"textarea-caret": "3.1.0", "textarea-caret": "3.1.0",
"three": "0.136.0", "three": "0.138.3",
"throttle-debounce": "3.0.1", "throttle-debounce": "3.0.1",
"tinycolor2": "1.4.2", "tinycolor2": "1.4.2",
"ts-loader": "9.2.6", "ts-loader": "9.2.7",
"tsc-alias": "1.5.0", "tsc-alias": "1.5.0",
"tsconfig-paths": "3.12.0", "tsconfig-paths": "3.13.0",
"twemoji-parser": "13.1.0", "twemoji-parser": "13.1.0",
"typescript": "4.5.5", "typescript": "4.6.2",
"uuid": "8.3.2", "uuid": "8.3.2",
"v-debounce": "0.1.2", "v-debounce": "0.1.2",
"vanilla-tilt": "1.7.2", "vanilla-tilt": "1.7.2",
"vue": "3.2.31", "vue": "3.2.31",
"vue-loader": "17.0.0", "vue-loader": "17.0.0",
"vue-prism-editor": "2.0.0-alpha.2", "vue-prism-editor": "2.0.0-alpha.2",
"vue-router": "4.0.12", "vue-router": "4.0.13",
"vue-style-loader": "4.1.3", "vue-style-loader": "4.1.3",
"vue-svg-loader": "0.17.0-beta.2", "vue-svg-loader": "0.17.0-beta.2",
"vuedraggable": "4.0.1", "vuedraggable": "4.0.1",
"webpack": "5.69.1", "webpack": "5.70.0",
"webpack-cli": "4.9.2", "webpack-cli": "4.9.2",
"websocket": "1.0.34", "websocket": "1.0.34",
"ws": "8.5.0" "ws": "8.5.0"
@ -119,7 +119,7 @@
"devDependencies": { "devDependencies": {
"@typescript-eslint/eslint-plugin": "5.12.1", "@typescript-eslint/eslint-plugin": "5.12.1",
"cross-env": "7.0.3", "cross-env": "7.0.3",
"cypress": "9.5.0", "cypress": "9.5.1",
"eslint-plugin-import": "2.25.4", "eslint-plugin-import": "2.25.4",
"start-server-and-test": "1.14.0" "start-server-and-test": "1.14.0"
} }

View file

@ -70,7 +70,8 @@ const colors = {
red: '#FF4560', red: '#FF4560',
purple: '#e300db', purple: '#e300db',
orange: '#fe6919', orange: '#fe6919',
lime: '#c7f400', lime: '#bde800',
cyan: '#00efef',
}; };
const colorSets = [colors.blue, colors.green, colors.yellow, colors.red, colors.purple]; const colorSets = [colors.blue, colors.green, colors.yellow, colors.red, colors.purple];
const getColor = (i) => { const getColor = (i) => {
@ -274,7 +275,7 @@ export default defineComponent({
y: { y: {
position: 'left', position: 'left',
stacked: props.stacked, stacked: props.stacked,
suggestedMax: 100, suggestedMax: 50,
grid: { grid: {
color: gridColor, color: gridColor,
borderColor: 'rgb(0, 0, 0, 0)', borderColor: 'rgb(0, 0, 0, 0)',
@ -388,19 +389,29 @@ export default defineComponent({
type: 'area', type: 'area',
data: format(raw.stalled), data: format(raw.stalled),
color: colors.red, color: colors.red,
}, {
name: 'Pub Active',
type: 'line',
data: format(raw.pubActive),
color: colors.purple,
}, {
name: 'Sub Active',
type: 'line',
data: format(raw.subActive),
color: colors.orange,
}, { }, {
name: 'Pub & Sub', name: 'Pub & Sub',
type: 'area', type: 'line',
data: format(raw.pubsub), data: format(raw.pubsub),
color: colors.lime, color: colors.cyan,
}, { }, {
name: 'Pub', name: 'Pub',
type: 'area', type: 'line',
data: format(raw.pub), data: format(raw.pub),
color: colors.purple, color: colors.purple,
}, { }, {
name: 'Sub', name: 'Sub',
type: 'area', type: 'line',
data: format(raw.sub), data: format(raw.sub),
color: colors.orange, color: colors.orange,
}], }],

View file

@ -1,5 +1,5 @@
<template> <template>
<MkModal ref="modal" v-slot="{ type, maxHeight }" :prefer-type="preferedModalType" :transparent-bg="true" :src="src" @click="modal.close()" @closed="emit('closed')"> <MkModal ref="modal" v-slot="{ type, maxHeight }" :prefer-type="preferedModalType" :anchor="{ x: 'right', y: 'center' }" :transparent-bg="true" :src="src" @click="modal.close()" @closed="emit('closed')">
<div class="szkkfdyq _popup _shadow" :class="{ asDrawer: type === 'drawer' }" :style="{ maxHeight: maxHeight ? maxHeight + 'px' : '' }"> <div class="szkkfdyq _popup _shadow" :class="{ asDrawer: type === 'drawer' }" :style="{ maxHeight: maxHeight ? maxHeight + 'px' : '' }">
<div class="main"> <div class="main">
<template v-for="item in items"> <template v-for="item in items">

View file

@ -141,6 +141,10 @@ export default defineComponent({
width: 100%; width: 100%;
height: 100%; height: 100%;
flex-direction: row; flex-direction: row;
overflow: scroll;
position: fixed;
left: 0;
top: 0;
} }
@media (max-width: 850px) { @media (max-width: 850px) {
.container { .container {

View file

@ -154,7 +154,18 @@ const props = defineProps<{
const inChannel = inject('inChannel', null); const inChannel = inject('inChannel', null);
const note = $ref(JSON.parse(JSON.stringify(props.note))); let note = $ref(JSON.parse(JSON.stringify(props.note)));
// plugin
if (noteViewInterruptors.length > 0) {
onMounted(async () => {
let result = JSON.parse(JSON.stringify(note));
for (const interruptor of noteViewInterruptors) {
result = await interruptor.handler(result);
}
note = result;
});
}
const isRenote = ( const isRenote = (
note.renote != null && note.renote != null &&
@ -168,7 +179,7 @@ const menuButton = ref<HTMLElement>();
const renoteButton = ref<InstanceType<typeof XRenoteButton>>(); const renoteButton = ref<InstanceType<typeof XRenoteButton>>();
const renoteTime = ref<HTMLElement>(); const renoteTime = ref<HTMLElement>();
const reactButton = ref<HTMLElement>(); const reactButton = ref<HTMLElement>();
let appearNote = $ref(isRenote ? note.renote as misskey.entities.Note : note); let appearNote = $computed(() => isRenote ? note.renote as misskey.entities.Note : note);
const isMyRenote = $i && ($i.id === note.userId); const isMyRenote = $i && ($i.id === note.userId);
const showContent = ref(false); const showContent = ref(false);
const isDeleted = ref(false); const isDeleted = ref(false);

View file

@ -138,7 +138,18 @@ const props = defineProps<{
const inChannel = inject('inChannel', null); const inChannel = inject('inChannel', null);
const note = $ref(JSON.parse(JSON.stringify(props.note))); let note = $ref(JSON.parse(JSON.stringify(props.note)));
// plugin
if (noteViewInterruptors.length > 0) {
onMounted(async () => {
let result = JSON.parse(JSON.stringify(note));
for (const interruptor of noteViewInterruptors) {
result = await interruptor.handler(result);
}
note = result;
});
}
const isRenote = ( const isRenote = (
note.renote != null && note.renote != null &&
@ -152,7 +163,7 @@ const menuButton = ref<HTMLElement>();
const renoteButton = ref<InstanceType<typeof XRenoteButton>>(); const renoteButton = ref<InstanceType<typeof XRenoteButton>>();
const renoteTime = ref<HTMLElement>(); const renoteTime = ref<HTMLElement>();
const reactButton = ref<HTMLElement>(); const reactButton = ref<HTMLElement>();
let appearNote = $ref(isRenote ? note.renote as misskey.entities.Note : note); let appearNote = $computed(() => isRenote ? note.renote as misskey.entities.Note : note);
const isMyRenote = $i && ($i.id === note.userId); const isMyRenote = $i && ($i.id === note.userId);
const showContent = ref(false); const showContent = ref(false);
const collapsed = ref(appearNote.cw == null && appearNote.text != null && ( const collapsed = ref(appearNote.cw == null && appearNote.text != null && (

View file

@ -53,7 +53,7 @@ onMounted(() => {
} }
@media (max-width: 500px) { @media (max-width: 500px) {
bottom: 92px; bottom: calc(env(safe-area-inset-bottom, 0px) + 92px);
padding: 0 8px; padding: 0 8px;
} }

View file

@ -1,7 +1,8 @@
<template> <template>
<div ref="elRef" v-size="{ max: [500, 600] }" class="qglefbjs" :class="notification.type"> <div ref="elRef" v-size="{ max: [500, 600] }" class="qglefbjs" :class="notification.type">
<div class="head"> <div class="head">
<MkAvatar v-if="notification.user" class="icon" :user="notification.user"/> <MkAvatar v-if="notification.type === 'pollEnded'" class="icon" :user="notification.note.user"/>
<MkAvatar v-else-if="notification.user" class="icon" :user="notification.user"/>
<img v-else-if="notification.icon" class="icon" :src="notification.icon" alt=""/> <img v-else-if="notification.icon" class="icon" :src="notification.icon" alt=""/>
<div class="sub-icon" :class="notification.type"> <div class="sub-icon" :class="notification.type">
<i v-if="notification.type === 'follow'" class="fas fa-plus"></i> <i v-if="notification.type === 'follow'" class="fas fa-plus"></i>
@ -13,6 +14,7 @@
<i v-else-if="notification.type === 'mention'" class="fas fa-at"></i> <i v-else-if="notification.type === 'mention'" class="fas fa-at"></i>
<i v-else-if="notification.type === 'quote'" class="fas fa-quote-left"></i> <i v-else-if="notification.type === 'quote'" class="fas fa-quote-left"></i>
<i v-else-if="notification.type === 'pollVote'" class="fas fa-poll-h"></i> <i v-else-if="notification.type === 'pollVote'" class="fas fa-poll-h"></i>
<i v-else-if="notification.type === 'pollEnded'" class="fas fa-poll-h"></i>
<!-- notification.reaction null になることはまずないがここでoptional chaining使うと一部ブラウザで刺さるので念の為 --> <!-- notification.reaction null になることはまずないがここでoptional chaining使うと一部ブラウザで刺さるので念の為 -->
<XReactionIcon v-else-if="notification.type === 'reaction'" <XReactionIcon v-else-if="notification.type === 'reaction'"
ref="reactionRef" ref="reactionRef"
@ -24,7 +26,8 @@
</div> </div>
<div class="tail"> <div class="tail">
<header> <header>
<MkA v-if="notification.user" v-user-preview="notification.user.id" class="name" :to="userPage(notification.user)"><MkUserName :user="notification.user"/></MkA> <span v-if="notification.type === 'pollEnded'">{{ i18n.ts._notification.pollEnded }}</span>
<MkA v-else-if="notification.user" v-user-preview="notification.user.id" class="name" :to="userPage(notification.user)"><MkUserName :user="notification.user"/></MkA>
<span v-else>{{ notification.header }}</span> <span v-else>{{ notification.header }}</span>
<MkTime v-if="withTime" :time="notification.createdAt" class="time"/> <MkTime v-if="withTime" :time="notification.createdAt" class="time"/>
</header> </header>
@ -52,6 +55,11 @@
<Mfm :text="getNoteSummary(notification.note)" :plain="true" :nowrap="!full" :custom-emojis="notification.note.emojis"/> <Mfm :text="getNoteSummary(notification.note)" :plain="true" :nowrap="!full" :custom-emojis="notification.note.emojis"/>
<i class="fas fa-quote-right"></i> <i class="fas fa-quote-right"></i>
</MkA> </MkA>
<MkA v-if="notification.type === 'pollEnded'" class="text" :to="notePage(notification.note)" :title="getNoteSummary(notification.note)">
<i class="fas fa-quote-left"></i>
<Mfm :text="getNoteSummary(notification.note)" :plain="true" :nowrap="!full" :custom-emojis="notification.note.emojis"/>
<i class="fas fa-quote-right"></i>
</MkA>
<span v-if="notification.type === 'follow'" class="text" style="opacity: 0.6;">{{ $ts.youGotNewFollower }}<div v-if="full"><MkFollowButton :user="notification.user" :full="true"/></div></span> <span v-if="notification.type === 'follow'" class="text" style="opacity: 0.6;">{{ $ts.youGotNewFollower }}<div v-if="full"><MkFollowButton :user="notification.user" :full="true"/></div></span>
<span v-if="notification.type === 'followRequestAccepted'" class="text" style="opacity: 0.6;">{{ $ts.followRequestAccepted }}</span> <span v-if="notification.type === 'followRequestAccepted'" class="text" style="opacity: 0.6;">{{ $ts.followRequestAccepted }}</span>
<span v-if="notification.type === 'receiveFollowRequest'" class="text" style="opacity: 0.6;">{{ $ts.receiveFollowRequest }}<div v-if="full && !followRequestDone"><button class="_textButton" @click="acceptFollowRequest()">{{ $ts.accept }}</button> | <button class="_textButton" @click="rejectFollowRequest()">{{ $ts.reject }}</button></div></span> <span v-if="notification.type === 'receiveFollowRequest'" class="text" style="opacity: 0.6;">{{ $ts.receiveFollowRequest }}<div v-if="full && !followRequestDone"><button class="_textButton" @click="acceptFollowRequest()">{{ $ts.accept }}</button> | <button class="_textButton" @click="rejectFollowRequest()">{{ $ts.reject }}</button></div></span>
@ -173,6 +181,7 @@ export default defineComponent({
rejectGroupInvitation, rejectGroupInvitation,
elRef, elRef,
reactionRef, reactionRef,
i18n,
}; };
}, },
}); });
@ -278,6 +287,12 @@ export default defineComponent({
background: #88a6b7; background: #88a6b7;
pointer-events: none; pointer-events: none;
} }
&.pollEnded {
padding: 3px;
background: #88a6b7;
pointer-events: none;
}
} }
} }

View file

@ -35,19 +35,18 @@ const props = defineProps<{
const pagingComponent = ref<InstanceType<typeof MkPagination>>(); const pagingComponent = ref<InstanceType<typeof MkPagination>>();
const allIncludeTypes = computed(() => props.includeTypes ?? notificationTypes.filter(x => !$i.mutingNotificationTypes.includes(x)));
const pagination: Paging = { const pagination: Paging = {
endpoint: 'i/notifications' as const, endpoint: 'i/notifications' as const,
limit: 10, limit: 10,
params: computed(() => ({ params: computed(() => ({
includeTypes: allIncludeTypes.value || undefined, includeTypes: props.includeTypes ?? undefined,
excludeTypes: props.includeTypes ? undefined : $i.mutingNotificationTypes,
unreadOnly: props.unreadOnly, unreadOnly: props.unreadOnly,
})), })),
}; };
const onNotification = (notification) => { const onNotification = (notification) => {
const isMuted = !allIncludeTypes.value.includes(notification.type); const isMuted = props.includeTypes ? !props.includeTypes.includes(notification.type) : $i.mutingNotificationTypes.includes(notification.type);
if (isMuted || document.visibilityState === 'visible') { if (isMuted || document.visibilityState === 'visible') {
stream.send('readNotification', { stream.send('readNotification', {
id: notification.id id: notification.id

View file

@ -30,7 +30,7 @@ type ModalTypes = 'popup' | 'dialog' | 'dialog:top' | 'drawer';
const props = withDefaults(defineProps<{ const props = withDefaults(defineProps<{
manualShowing?: boolean | null; manualShowing?: boolean | null;
srcCenter?: boolean; anchor?: { x: string; y: string; };
src?: HTMLElement; src?: HTMLElement;
preferType?: ModalTypes | 'auto'; preferType?: ModalTypes | 'auto';
zPriority?: 'low' | 'middle' | 'high'; zPriority?: 'low' | 'middle' | 'high';
@ -39,6 +39,7 @@ const props = withDefaults(defineProps<{
}>(), { }>(), {
manualShowing: null, manualShowing: null,
src: null, src: null,
anchor: { x: 'center', y: 'bottom' },
preferType: 'auto', preferType: 'auto',
zPriority: 'low', zPriority: 'low',
noOverlap: true, noOverlap: true,
@ -113,16 +114,23 @@ const align = () => {
let left; let left;
let top; let top;
if (props.srcCenter) { const x = rect.left + (fixed.value ? 0 : window.pageXOffset);
const x = rect.left + (fixed.value ? 0 : window.pageXOffset) + (props.src.offsetWidth / 2); const y = rect.top + (fixed.value ? 0 : window.pageYOffset);
const y = rect.top + (fixed.value ? 0 : window.pageYOffset) + (props.src.offsetHeight / 2);
left = (x - (width / 2)); if (props.anchor.x === 'center') {
left = x + (props.src.offsetWidth / 2) - (width / 2);
} else if (props.anchor.x === 'left') {
// TODO
} else if (props.anchor.x === 'right') {
left = x + props.src.offsetWidth;
}
if (props.anchor.y === 'center') {
top = (y - (height / 2)); top = (y - (height / 2));
} else { } else if (props.anchor.y === 'top') {
const x = rect.left + (fixed.value ? 0 : window.pageXOffset) + (props.src.offsetWidth / 2); // TODO
const y = rect.top + (fixed.value ? 0 : window.pageYOffset) + props.src.offsetHeight; } else if (props.anchor.y === 'bottom') {
left = (x - (width / 2)); top = y + props.src.offsetHeight;
top = y;
} }
if (fixed.value) { if (fixed.value) {
@ -136,7 +144,7 @@ const align = () => {
// //
if (top + height > (window.innerHeight - MARGIN)) { if (top + height > (window.innerHeight - MARGIN)) {
if (props.noOverlap) { if (props.noOverlap && props.anchor.x === 'center') {
if (underSpace >= (upperSpace / 3)) { if (underSpace >= (upperSpace / 3)) {
maxHeight.value = underSpace; maxHeight.value = underSpace;
} else { } else {
@ -160,7 +168,7 @@ const align = () => {
// //
if (top + height - window.pageYOffset > (window.innerHeight - MARGIN)) { if (top + height - window.pageYOffset > (window.innerHeight - MARGIN)) {
if (props.noOverlap) { if (props.noOverlap && props.anchor.x === 'center') {
if (underSpace >= (upperSpace / 3)) { if (underSpace >= (upperSpace / 3)) {
maxHeight.value = underSpace; maxHeight.value = underSpace;
} else { } else {
@ -183,14 +191,23 @@ const align = () => {
left = 0; left = 0;
} }
let transformOriginX = 'center';
let transformOriginY = 'center';
if (top > rect.top + (fixed.value ? 0 : window.pageYOffset)) { if (top > rect.top + (fixed.value ? 0 : window.pageYOffset)) {
transformOrigin.value = 'center top'; transformOriginY = 'top';
} else if ((top + height) <= rect.top + (fixed.value ? 0 : window.pageYOffset)) { } else if ((top + height) <= rect.top + (fixed.value ? 0 : window.pageYOffset)) {
transformOrigin.value = 'center bottom'; transformOriginY = 'bottom';
} else {
transformOrigin.value = 'center';
} }
if (left > rect.left + (fixed.value ? 0 : window.pageXOffset)) {
transformOriginY = 'left';
} else if ((left + width) <= rect.left + (fixed.value ? 0 : window.pageXOffset)) {
transformOriginY = 'right';
}
transformOrigin.value = `${transformOriginX} ${transformOriginY}`;
popover.style.left = left + 'px'; popover.style.left = left + 'px';
popover.style.top = top + 'px'; popover.style.top = top + 'px';
}; };

View file

@ -3,6 +3,7 @@ import { defaultStore } from '@/store';
export default { export default {
mounted(el, binding, vn) { mounted(el, binding, vn) {
/*
if (!defaultStore.state.animation) return; if (!defaultStore.state.animation) return;
el.classList.add('_anime_bounce_standBy'); el.classList.add('_anime_bounce_standBy');
@ -25,5 +26,6 @@ export default {
el.classList.remove('_anime_bounce'); el.classList.remove('_anime_bounce');
el.classList.add('_anime_bounce_standBy'); el.classList.add('_anime_bounce_standBy');
}); });
*/
} }
} as Directive; } as Directive;

View file

@ -10,37 +10,6 @@
<template #label>{{ $ts.instanceDescription }}</template> <template #label>{{ $ts.instanceDescription }}</template>
</FormTextarea> </FormTextarea>
<FormInput v-model="iconUrl" class="_formBlock">
<template #prefix><i class="fas fa-link"></i></template>
<template #label>{{ $ts.iconUrl }}</template>
</FormInput>
<FormInput v-model="bannerUrl" class="_formBlock">
<template #prefix><i class="fas fa-link"></i></template>
<template #label>{{ $ts.bannerUrl }}</template>
</FormInput>
<FormInput v-model="backgroundImageUrl" class="_formBlock">
<template #prefix><i class="fas fa-link"></i></template>
<template #label>{{ $ts.backgroundImageUrl }}</template>
</FormInput>
<FormInput v-model="themeColor" class="_formBlock">
<template #prefix><i class="fas fa-palette"></i></template>
<template #label>{{ $ts.themeColor }}</template>
<template #caption>#RRGGBB</template>
</FormInput>
<FormTextarea v-model="defaultLightTheme" class="_formBlock">
<template #label>{{ $ts.instanceDefaultLightTheme }}</template>
<template #caption>{{ $ts.instanceDefaultThemeDescription }}</template>
</FormTextarea>
<FormTextarea v-model="defaultDarkTheme" class="_formBlock">
<template #label>{{ $ts.instanceDefaultDarkTheme }}</template>
<template #caption>{{ $ts.instanceDefaultThemeDescription }}</template>
</FormTextarea>
<FormInput v-model="tosUrl" class="_formBlock"> <FormInput v-model="tosUrl" class="_formBlock">
<template #prefix><i class="fas fa-link"></i></template> <template #prefix><i class="fas fa-link"></i></template>
<template #label>{{ $ts.tosUrl }}</template> <template #label>{{ $ts.tosUrl }}</template>
@ -78,6 +47,41 @@
<FormInfo class="_formBlock">{{ $ts.disablingTimelinesInfo }}</FormInfo> <FormInfo class="_formBlock">{{ $ts.disablingTimelinesInfo }}</FormInfo>
</FormSection> </FormSection>
<FormSection>
<template #label>{{ $ts.theme }}</template>
<FormInput v-model="iconUrl" class="_formBlock">
<template #prefix><i class="fas fa-link"></i></template>
<template #label>{{ $ts.iconUrl }}</template>
</FormInput>
<FormInput v-model="bannerUrl" class="_formBlock">
<template #prefix><i class="fas fa-link"></i></template>
<template #label>{{ $ts.bannerUrl }}</template>
</FormInput>
<FormInput v-model="backgroundImageUrl" class="_formBlock">
<template #prefix><i class="fas fa-link"></i></template>
<template #label>{{ $ts.backgroundImageUrl }}</template>
</FormInput>
<FormInput v-model="themeColor" class="_formBlock">
<template #prefix><i class="fas fa-palette"></i></template>
<template #label>{{ $ts.themeColor }}</template>
<template #caption>#RRGGBB</template>
</FormInput>
<FormTextarea v-model="defaultLightTheme" class="_formBlock">
<template #label>{{ $ts.instanceDefaultLightTheme }}</template>
<template #caption>{{ $ts.instanceDefaultThemeDescription }}</template>
</FormTextarea>
<FormTextarea v-model="defaultDarkTheme" class="_formBlock">
<template #label>{{ $ts.instanceDefaultDarkTheme }}</template>
<template #caption>{{ $ts.instanceDefaultThemeDescription }}</template>
</FormTextarea>
</FormSection>
<FormSection> <FormSection>
<template #label>{{ $ts.files }}</template> <template #label>{{ $ts.files }}</template>

View file

@ -33,10 +33,6 @@
<option value="-caughtAt">{{ $ts.registeredAt }} ({{ $ts.ascendingOrder }})</option> <option value="-caughtAt">{{ $ts.registeredAt }} ({{ $ts.ascendingOrder }})</option>
<option value="+lastCommunicatedAt">{{ $ts.lastCommunication }} ({{ $ts.descendingOrder }})</option> <option value="+lastCommunicatedAt">{{ $ts.lastCommunication }} ({{ $ts.descendingOrder }})</option>
<option value="-lastCommunicatedAt">{{ $ts.lastCommunication }} ({{ $ts.ascendingOrder }})</option> <option value="-lastCommunicatedAt">{{ $ts.lastCommunication }} ({{ $ts.ascendingOrder }})</option>
<option value="+driveUsage">{{ $ts.driveUsage }} ({{ $ts.descendingOrder }})</option>
<option value="-driveUsage">{{ $ts.driveUsage }} ({{ $ts.ascendingOrder }})</option>
<option value="+driveFiles">{{ $ts.driveFilesCount }} ({{ $ts.descendingOrder }})</option>
<option value="-driveFiles">{{ $ts.driveFilesCount }} ({{ $ts.ascendingOrder }})</option>
</MkSelect> </MkSelect>
</FormSplit> </FormSplit>
</div> </div>

View file

@ -22,8 +22,8 @@
</MkSpacer> </MkSpacer>
</template> </template>
<script lang="ts"> <script setup lang="ts">
import { computed, defineAsyncComponent, defineComponent, nextTick, onMounted, reactive, ref, watch } from 'vue'; import { computed, defineAsyncComponent, nextTick, onMounted, ref, watch } from 'vue';
import { i18n } from '@/i18n'; import { i18n } from '@/i18n';
import MkInfo from '@/components/ui/info.vue'; import MkInfo from '@/components/ui/info.vue';
import MkSuperMenu from '@/components/ui/super-menu.vue'; import MkSuperMenu from '@/components/ui/super-menu.vue';
@ -34,241 +34,219 @@ import * as symbols from '@/symbols';
import { instance } from '@/instance'; import { instance } from '@/instance';
import { $i } from '@/account'; import { $i } from '@/account';
export default defineComponent({ const props = defineProps<{
components: { initialPage?: string
MkInfo, }>();
MkSuperMenu,
},
props: { const indexInfo = {
initialPage: { title: i18n.ts.settings,
type: String, icon: 'fas fa-cog',
required: false bg: 'var(--bg)',
hideHeader: true,
};
const INFO = ref(indexInfo);
const page = ref(props.initialPage);
const narrow = ref(false);
const view = ref(null);
const el = ref<HTMLElement | null>(null);
const childInfo = ref(null);
const menuDef = computed(() => [{
title: i18n.ts.basicSettings,
items: [{
icon: 'fas fa-user',
text: i18n.ts.profile,
to: '/settings/profile',
active: page.value === 'profile',
}, {
icon: 'fas fa-lock-open',
text: i18n.ts.privacy,
to: '/settings/privacy',
active: page.value === 'privacy',
}, {
icon: 'fas fa-laugh',
text: i18n.ts.reaction,
to: '/settings/reaction',
active: page.value === 'reaction',
}, {
icon: 'fas fa-cloud',
text: i18n.ts.drive,
to: '/settings/drive',
active: page.value === 'drive',
}, {
icon: 'fas fa-bell',
text: i18n.ts.notifications,
to: '/settings/notifications',
active: page.value === 'notifications',
}, {
icon: 'fas fa-envelope',
text: i18n.ts.email,
to: '/settings/email',
active: page.value === 'email',
}, {
icon: 'fas fa-share-alt',
text: i18n.ts.integration,
to: '/settings/integration',
active: page.value === 'integration',
}, {
icon: 'fas fa-lock',
text: i18n.ts.security,
to: '/settings/security',
active: page.value === 'security',
}],
}, {
title: i18n.ts.clientSettings,
items: [{
icon: 'fas fa-cogs',
text: i18n.ts.general,
to: '/settings/general',
active: page.value === 'general',
}, {
icon: 'fas fa-palette',
text: i18n.ts.theme,
to: '/settings/theme',
active: page.value === 'theme',
}, {
icon: 'fas fa-list-ul',
text: i18n.ts.menu,
to: '/settings/menu',
active: page.value === 'menu',
}, {
icon: 'fas fa-music',
text: i18n.ts.sounds,
to: '/settings/sounds',
active: page.value === 'sounds',
}, {
icon: 'fas fa-plug',
text: i18n.ts.plugins,
to: '/settings/plugin',
active: page.value === 'plugin',
}],
}, {
title: i18n.ts.otherSettings,
items: [{
icon: 'fas fa-boxes',
text: i18n.ts.importAndExport,
to: '/settings/import-export',
active: page.value === 'import-export',
}, {
icon: 'fas fa-volume-mute',
text: i18n.ts.instanceMute,
to: '/settings/instance-mute',
active: page.value === 'instance-mute',
}, {
icon: 'fas fa-ban',
text: i18n.ts.muteAndBlock,
to: '/settings/mute-block',
active: page.value === 'mute-block',
}, {
icon: 'fas fa-comment-slash',
text: i18n.ts.wordMute,
to: '/settings/word-mute',
active: page.value === 'word-mute',
}, {
icon: 'fas fa-key',
text: 'API',
to: '/settings/api',
active: page.value === 'api',
}, {
icon: 'fas fa-ellipsis-h',
text: i18n.ts.other,
to: '/settings/other',
active: page.value === 'other',
}],
}, {
items: [{
type: 'button',
icon: 'fas fa-trash',
text: i18n.ts.clearCache,
action: () => {
localStorage.removeItem('locale');
localStorage.removeItem('theme');
unisonReload();
},
}, {
type: 'button',
icon: 'fas fa-sign-in-alt fa-flip-horizontal',
text: i18n.ts.logout,
action: () => {
signout();
},
danger: true,
},],
}]);
const pageProps = ref({});
const component = computed(() => {
if (page.value == null) return null;
switch (page.value) {
case 'accounts': return defineAsyncComponent(() => import('./accounts.vue'));
case 'profile': return defineAsyncComponent(() => import('./profile.vue'));
case 'privacy': return defineAsyncComponent(() => import('./privacy.vue'));
case 'reaction': return defineAsyncComponent(() => import('./reaction.vue'));
case 'drive': return defineAsyncComponent(() => import('./drive.vue'));
case 'notifications': return defineAsyncComponent(() => import('./notifications.vue'));
case 'mute-block': return defineAsyncComponent(() => import('./mute-block.vue'));
case 'word-mute': return defineAsyncComponent(() => import('./word-mute.vue'));
case 'instance-mute': return defineAsyncComponent(() => import('./instance-mute.vue'));
case 'integration': return defineAsyncComponent(() => import('./integration.vue'));
case 'security': return defineAsyncComponent(() => import('./security.vue'));
case '2fa': return defineAsyncComponent(() => import('./2fa.vue'));
case 'api': return defineAsyncComponent(() => import('./api.vue'));
case 'apps': return defineAsyncComponent(() => import('./apps.vue'));
case 'other': return defineAsyncComponent(() => import('./other.vue'));
case 'general': return defineAsyncComponent(() => import('./general.vue'));
case 'email': return defineAsyncComponent(() => import('./email.vue'));
case 'theme': return defineAsyncComponent(() => import('./theme.vue'));
case 'theme/install': return defineAsyncComponent(() => import('./theme.install.vue'));
case 'theme/manage': return defineAsyncComponent(() => import('./theme.manage.vue'));
case 'menu': return defineAsyncComponent(() => import('./menu.vue'));
case 'sounds': return defineAsyncComponent(() => import('./sounds.vue'));
case 'custom-css': return defineAsyncComponent(() => import('./custom-css.vue'));
case 'deck': return defineAsyncComponent(() => import('./deck.vue'));
case 'plugin': return defineAsyncComponent(() => import('./plugin.vue'));
case 'plugin/install': return defineAsyncComponent(() => import('./plugin.install.vue'));
case 'import-export': return defineAsyncComponent(() => import('./import-export.vue'));
case 'account-info': return defineAsyncComponent(() => import('./account-info.vue'));
case 'delete-account': return defineAsyncComponent(() => import('./delete-account.vue'));
}
return null;
});
watch(component, () => {
pageProps.value = {};
nextTick(() => {
scroll(el.value, { top: 0 });
});
}, { immediate: true });
watch(() => props.initialPage, () => {
if (props.initialPage == null && !narrow.value) {
page.value = 'profile';
} else {
page.value = props.initialPage;
if (props.initialPage == null) {
INFO.value = indexInfo;
} }
}, }
});
setup(props, context) { onMounted(() => {
const indexInfo = { narrow.value = el.value.offsetWidth < 800;
title: i18n.ts.settings, if (!narrow.value) {
icon: 'fas fa-cog', page.value = 'profile';
bg: 'var(--bg)', }
hideHeader: true, });
};
const INFO = ref(indexInfo);
const page = ref(props.initialPage);
const narrow = ref(false);
const view = ref(null);
const el = ref(null);
const childInfo = ref(null);
const menuDef = computed(() => [{
title: i18n.ts.basicSettings,
items: [{
icon: 'fas fa-user',
text: i18n.ts.profile,
to: '/settings/profile',
active: page.value === 'profile',
}, {
icon: 'fas fa-lock-open',
text: i18n.ts.privacy,
to: '/settings/privacy',
active: page.value === 'privacy',
}, {
icon: 'fas fa-laugh',
text: i18n.ts.reaction,
to: '/settings/reaction',
active: page.value === 'reaction',
}, {
icon: 'fas fa-cloud',
text: i18n.ts.drive,
to: '/settings/drive',
active: page.value === 'drive',
}, {
icon: 'fas fa-bell',
text: i18n.ts.notifications,
to: '/settings/notifications',
active: page.value === 'notifications',
}, {
icon: 'fas fa-envelope',
text: i18n.ts.email,
to: '/settings/email',
active: page.value === 'email',
}, {
icon: 'fas fa-share-alt',
text: i18n.ts.integration,
to: '/settings/integration',
active: page.value === 'integration',
}, {
icon: 'fas fa-lock',
text: i18n.ts.security,
to: '/settings/security',
active: page.value === 'security',
}],
}, {
title: i18n.ts.clientSettings,
items: [{
icon: 'fas fa-cogs',
text: i18n.ts.general,
to: '/settings/general',
active: page.value === 'general',
}, {
icon: 'fas fa-palette',
text: i18n.ts.theme,
to: '/settings/theme',
active: page.value === 'theme',
}, {
icon: 'fas fa-list-ul',
text: i18n.ts.menu,
to: '/settings/menu',
active: page.value === 'menu',
}, {
icon: 'fas fa-music',
text: i18n.ts.sounds,
to: '/settings/sounds',
active: page.value === 'sounds',
}, {
icon: 'fas fa-plug',
text: i18n.ts.plugins,
to: '/settings/plugin',
active: page.value === 'plugin',
}],
}, {
title: i18n.ts.otherSettings,
items: [{
icon: 'fas fa-boxes',
text: i18n.ts.importAndExport,
to: '/settings/import-export',
active: page.value === 'import-export',
}, {
icon: 'fas fa-volume-mute',
text: i18n.ts.instanceMute,
to: '/settings/instance-mute',
active: page.value === 'instance-mute',
}, {
icon: 'fas fa-ban',
text: i18n.ts.muteAndBlock,
to: '/settings/mute-block',
active: page.value === 'mute-block',
}, {
icon: 'fas fa-comment-slash',
text: i18n.ts.wordMute,
to: '/settings/word-mute',
active: page.value === 'word-mute',
}, {
icon: 'fas fa-key',
text: 'API',
to: '/settings/api',
active: page.value === 'api',
}, {
icon: 'fas fa-ellipsis-h',
text: i18n.ts.other,
to: '/settings/other',
active: page.value === 'other',
}],
}, {
items: [{
type: 'button',
icon: 'fas fa-trash',
text: i18n.ts.clearCache,
action: () => {
localStorage.removeItem('locale');
localStorage.removeItem('theme');
unisonReload();
},
}, {
type: 'button',
icon: 'fas fa-sign-in-alt fa-flip-horizontal',
text: i18n.ts.logout,
action: () => {
signout();
},
danger: true,
},],
}]);
const pageProps = ref({}); const emailNotConfigured = computed(() => instance.enableEmail && ($i.email == null || !$i.emailVerified));
const component = computed(() => {
if (page.value == null) return null;
switch (page.value) {
case 'accounts': return defineAsyncComponent(() => import('./accounts.vue'));
case 'profile': return defineAsyncComponent(() => import('./profile.vue'));
case 'privacy': return defineAsyncComponent(() => import('./privacy.vue'));
case 'reaction': return defineAsyncComponent(() => import('./reaction.vue'));
case 'drive': return defineAsyncComponent(() => import('./drive.vue'));
case 'notifications': return defineAsyncComponent(() => import('./notifications.vue'));
case 'mute-block': return defineAsyncComponent(() => import('./mute-block.vue'));
case 'word-mute': return defineAsyncComponent(() => import('./word-mute.vue'));
case 'instance-mute': return defineAsyncComponent(() => import('./instance-mute.vue'));
case 'integration': return defineAsyncComponent(() => import('./integration.vue'));
case 'security': return defineAsyncComponent(() => import('./security.vue'));
case '2fa': return defineAsyncComponent(() => import('./2fa.vue'));
case 'api': return defineAsyncComponent(() => import('./api.vue'));
case 'apps': return defineAsyncComponent(() => import('./apps.vue'));
case 'other': return defineAsyncComponent(() => import('./other.vue'));
case 'general': return defineAsyncComponent(() => import('./general.vue'));
case 'email': return defineAsyncComponent(() => import('./email.vue'));
case 'theme': return defineAsyncComponent(() => import('./theme.vue'));
case 'theme/install': return defineAsyncComponent(() => import('./theme.install.vue'));
case 'theme/manage': return defineAsyncComponent(() => import('./theme.manage.vue'));
case 'menu': return defineAsyncComponent(() => import('./menu.vue'));
case 'sounds': return defineAsyncComponent(() => import('./sounds.vue'));
case 'custom-css': return defineAsyncComponent(() => import('./custom-css.vue'));
case 'deck': return defineAsyncComponent(() => import('./deck.vue'));
case 'plugin': return defineAsyncComponent(() => import('./plugin.vue'));
case 'plugin/install': return defineAsyncComponent(() => import('./plugin.install.vue'));
case 'import-export': return defineAsyncComponent(() => import('./import-export.vue'));
case 'account-info': return defineAsyncComponent(() => import('./account-info.vue'));
case 'delete-account': return defineAsyncComponent(() => import('./delete-account.vue'));
}
return null;
});
watch(component, () => { const pageChanged = (page) => {
pageProps.value = {}; if (page == null) return;
childInfo.value = page[symbols.PAGE_INFO];
};
nextTick(() => { defineExpose({
scroll(el.value, { top: 0 }); [symbols.PAGE_INFO]: INFO,
});
}, { immediate: true });
watch(() => props.initialPage, () => {
if (props.initialPage == null && !narrow.value) {
page.value = 'profile';
} else {
page.value = props.initialPage;
if (props.initialPage == null) {
INFO.value = indexInfo;
}
}
});
onMounted(() => {
narrow.value = el.value.offsetWidth < 800;
if (!narrow.value) {
page.value = 'profile';
}
});
const emailNotConfigured = computed(() => instance.enableEmail && ($i.email == null || !$i.emailVerified));
const pageChanged = (page) => {
if (page == null) return;
childInfo.value = page[symbols.PAGE_INFO];
};
return {
[symbols.PAGE_INFO]: INFO,
page,
menuDef,
narrow,
view,
el,
pageProps,
component,
emailNotConfigured,
pageChanged,
childInfo,
};
},
}); });
</script> </script>

View file

@ -4,7 +4,9 @@
{{ $ts.showFeaturedNotesInTimeline }} {{ $ts.showFeaturedNotesInTimeline }}
</FormSwitch> </FormSwitch>
<!--
<FormSwitch v-model="reportError" class="_formBlock">{{ $ts.sendErrorReports }}<template #caption>{{ $ts.sendErrorReportsDescription }}</template></FormSwitch> <FormSwitch v-model="reportError" class="_formBlock">{{ $ts.sendErrorReports }}<template #caption>{{ $ts.sendErrorReportsDescription }}</template></FormSwitch>
-->
<FormLink to="/settings/account-info" class="_formBlock">{{ $ts.accountInfo }}</FormLink> <FormLink to="/settings/account-info" class="_formBlock">{{ $ts.accountInfo }}</FormLink>

View file

@ -101,7 +101,7 @@ import { ColdDeviceStorage } from '@/store';
import { i18n } from '@/i18n'; import { i18n } from '@/i18n';
import { defaultStore } from '@/store'; import { defaultStore } from '@/store';
import { instance } from '@/instance'; import { instance } from '@/instance';
import { concat } from '@/scripts/array'; import { concat, uniqueBy } from '@/scripts/array';
import { fetchThemes, getThemes } from '@/theme-store'; import { fetchThemes, getThemes } from '@/theme-store';
import * as symbols from '@/symbols'; import * as symbols from '@/symbols';
@ -128,7 +128,7 @@ export default defineComponent({
const instanceThemes = []; const instanceThemes = [];
if (instance.defaultLightTheme != null) instanceThemes.push(JSON5.parse(instance.defaultLightTheme)); if (instance.defaultLightTheme != null) instanceThemes.push(JSON5.parse(instance.defaultLightTheme));
if (instance.defaultDarkTheme != null) instanceThemes.push(JSON5.parse(instance.defaultDarkTheme)); if (instance.defaultDarkTheme != null) instanceThemes.push(JSON5.parse(instance.defaultDarkTheme));
const themes = computed(() => instanceThemes.concat(builtinThemes.concat(installedThemes.value))); const themes = computed(() => uniqueBy(instanceThemes.concat(builtinThemes.concat(installedThemes.value)), theme => theme.id));
const darkThemes = computed(() => themes.value.filter(t => t.base === 'dark' || t.kind === 'dark')); const darkThemes = computed(() => themes.value.filter(t => t.base === 'dark' || t.kind === 'dark'));
const lightThemes = computed(() => themes.value.filter(t => t.base === 'light' || t.kind === 'light')); const lightThemes = computed(() => themes.value.filter(t => t.base === 'light' || t.kind === 'light'));
const darkTheme = ColdDeviceStorage.ref('darkTheme'); const darkTheme = ColdDeviceStorage.ref('darkTheme');

View file

@ -3,7 +3,7 @@ import { createRouter, createWebHistory } from 'vue-router';
import MkLoading from '@/pages/_loading_.vue'; import MkLoading from '@/pages/_loading_.vue';
import MkError from '@/pages/_error_.vue'; import MkError from '@/pages/_error_.vue';
import MkTimeline from '@/pages/timeline.vue'; import MkTimeline from '@/pages/timeline.vue';
import { $i } from './account'; import { $i, iAmModerator } from './account';
import { ui } from '@/config'; import { ui } from '@/config';
const page = (path: string, ui?: string) => defineAsyncComponent({ const page = (path: string, ui?: string) => defineAsyncComponent({
@ -67,8 +67,8 @@ const defaultRoutes = [
{ path: '/my/antennas/:antennaId', component: page('my-antennas/edit'), props: true }, { path: '/my/antennas/:antennaId', component: page('my-antennas/edit'), props: true },
{ path: '/my/clips', component: page('my-clips/index') }, { path: '/my/clips', component: page('my-clips/index') },
{ path: '/scratchpad', component: page('scratchpad') }, { path: '/scratchpad', component: page('scratchpad') },
{ path: '/admin/:page(.*)?', component: page('admin/index'), props: route => ({ initialPage: route.params.page || null }) }, { path: '/admin/:page(.*)?', component: iAmModerator ? page('admin/index') : page('not-found'), props: route => ({ initialPage: route.params.page || null }) },
{ path: '/admin', component: page('admin/index') }, { path: '/admin', component: iAmModerator ? page('admin/index') : page('not-found') },
{ path: '/notes/:note', name: 'note', component: page('note'), props: route => ({ noteId: route.params.note }) }, { path: '/notes/:note', name: 'note', component: page('note'), props: route => ({ noteId: route.params.note }) },
{ path: '/tags/:tag', component: page('tag'), props: route => ({ tag: route.params.tag }) }, { path: '/tags/:tag', component: page('tag'), props: route => ({ tag: route.params.tag }) },
{ path: '/user-info/:user', component: page('user-info'), props: route => ({ userId: route.params.user }) }, { path: '/user-info/:user', component: page('user-info'), props: route => ({ userId: route.params.user }) },

View file

@ -52,6 +52,17 @@ export function unique<T>(xs: T[]): T[] {
return [...new Set(xs)]; return [...new Set(xs)];
} }
export function uniqueBy<TValue, TKey>(values: TValue[], keySelector: (value: TValue) => TKey): TValue[] {
const map = new Map<TKey, TValue>();
for (const value of values) {
const key = keySelector(value);
if (!map.has(key)) map.set(key, value);
}
return [...map.values()];
}
export function sum(xs: number[]): number { export function sum(xs: number[]): number {
return xs.reduce((a, b) => a + b, 0); return xs.reduce((a, b) => a + b, 0);
} }

View file

@ -56,11 +56,44 @@ export function getUserMenu(user) {
} }
async function toggleMute() { async function toggleMute() {
os.apiWithDialog(user.isMuted ? 'mute/delete' : 'mute/create', { if (user.isMuted) {
userId: user.id os.apiWithDialog('mute/delete', {
}).then(() => { userId: user.id,
user.isMuted = !user.isMuted; }).then(() => {
}); user.isMuted = false;
});
} else {
const { canceled, result: period } = await os.select({
title: i18n.ts.mutePeriod,
items: [{
value: 'indefinitely', text: i18n.ts.indefinitely,
}, {
value: 'tenMinutes', text: i18n.ts.tenMinutes,
}, {
value: 'oneHour', text: i18n.ts.oneHour,
}, {
value: 'oneDay', text: i18n.ts.oneDay,
}, {
value: 'oneWeek', text: i18n.ts.oneWeek,
}],
default: 'indefinitely',
});
if (canceled) return;
const expiresAt = period === 'indefinitely' ? null
: period === 'tenMinutes' ? Date.now() + (1000 * 60 * 10)
: period === 'oneHour' ? Date.now() + (1000 * 60 * 60)
: period === 'oneDay' ? Date.now() + (1000 * 60 * 60 * 24)
: period === 'oneWeek' ? Date.now() + (1000 * 60 * 60 * 24 * 7)
: null;
os.apiWithDialog('mute/create', {
userId: user.id,
expiresAt,
}).then(() => {
user.isMuted = true;
});
}
} }
async function toggleBlock() { async function toggleBlock() {

View file

@ -68,11 +68,10 @@ export const defaultStore = markRaw(new Storage('base', {
where: 'deviceAccount', where: 'deviceAccount',
default: [ default: [
'notifications', 'notifications',
'messaging', 'favorites',
'drive', 'drive',
'followRequests', 'followRequests',
'-', '-',
'gallery',
'featured', 'featured',
'explore', 'explore',
'announcements', 'announcements',
@ -192,7 +191,7 @@ export const defaultStore = markRaw(new Storage('base', {
}, },
reactionPickerHeight: { reactionPickerHeight: {
where: 'device', where: 'device',
default: 1 default: 2
}, },
reactionPickerUseDrawerForMobile: { reactionPickerUseDrawerForMobile: {
where: 'device', where: 'device',

View file

@ -113,6 +113,7 @@ export default defineComponent({
padding: 4px 5px; padding: 4px 5px;
font-size: 14px; font-size: 14px;
pointer-events: none; pointer-events: none;
user-select: none;
> span { > span {
animation: dev-ticker-blink 2s infinite; animation: dev-ticker-blink 2s infinite;

View file

@ -265,7 +265,7 @@ const wallpaper = localStorage.getItem('wallpaper') != null;
min-width: 0; min-width: 0;
> .spacer { > .spacer {
height: 82px; height: calc(env(safe-area-inset-bottom, 0px) + 96px);
@media (min-width: ($widgets-hide-threshold + 1px)) { @media (min-width: ($widgets-hide-threshold + 1px)) {
display: none; display: none;

View file

@ -103,10 +103,10 @@
resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.2.tgz#8f03a22a04de437254e8ce8cc84ba39689288752" resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.2.tgz#8f03a22a04de437254e8ce8cc84ba39689288752"
integrity sha512-HyYEUDeIj5rRQU2Hk5HTB2uHsbRQpF70nvMhVzi+VJR0X+xNEhjPui4/kBf3VeH/wqD28PT4sVOm8qqLjBrSZg== integrity sha512-HyYEUDeIj5rRQU2Hk5HTB2uHsbRQpF70nvMhVzi+VJR0X+xNEhjPui4/kBf3VeH/wqD28PT4sVOm8qqLjBrSZg==
"@eslint/eslintrc@^1.1.0": "@eslint/eslintrc@^1.2.0":
version "1.1.0" version "1.2.0"
resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.1.0.tgz#583d12dbec5d4f22f333f9669f7d0b7c7815b4d3" resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.2.0.tgz#7ce1547a5c46dfe56e1e45c3c9ed18038c721c6a"
integrity sha512-C1DfL7XX4nPqGd6jcP01W9pVM1HYCuUkFk1432D7F0v3JSlUIeOYn9oCoi3eoLZ+iwBSb29BMFxxny0YrrEZqg== integrity sha512-igm9SjJHNEJRiUnecP/1R5T3wKLEJ7pL6e2P+GUSfCd0dGjPYYZve08uzw8L2J8foVHFz+NGu12JxRcU2gGo6w==
dependencies: dependencies:
ajv "^6.12.4" ajv "^6.12.4"
debug "^4.3.2" debug "^4.3.2"
@ -403,10 +403,10 @@
resolved "https://registry.yarnpkg.com/@types/random-seed/-/random-seed-0.3.3.tgz#7741f7b0a4513198a9396ce4ad25832f799a6727" resolved "https://registry.yarnpkg.com/@types/random-seed/-/random-seed-0.3.3.tgz#7741f7b0a4513198a9396ce4ad25832f799a6727"
integrity sha512-kHsCbIRHNXJo6EN5W8EA5b4i1hdT6jaZke5crBPLUcLqaLdZ0QBq8QVMbafHzhjFF83Cl9qlee2dChD18d/kPg== integrity sha512-kHsCbIRHNXJo6EN5W8EA5b4i1hdT6jaZke5crBPLUcLqaLdZ0QBq8QVMbafHzhjFF83Cl9qlee2dChD18d/kPg==
"@types/seedrandom@2.4.28": "@types/seedrandom@3.0.2":
version "2.4.28" version "3.0.2"
resolved "https://registry.yarnpkg.com/@types/seedrandom/-/seedrandom-2.4.28.tgz#9ce8fa048c1e8c85cb71d7fe4d704e000226036f" resolved "https://registry.yarnpkg.com/@types/seedrandom/-/seedrandom-3.0.2.tgz#7f30db28221067a90b02e73ffd46b6685b18df1a"
integrity sha512-SMA+fUwULwK7sd/ZJicUztiPs8F1yCPwF3O23Z9uQ32ME5Ha0NmDK9+QTsYE4O2tHXChzXomSWWeIhCnoN1LqA== integrity sha512-YPLqEOo0/X8JU3rdiq+RgUKtQhQtrppE766y7vMTu8dGML7TVtZNiiiaC/hhU9Zqw9UYopXxhuWWENclMVBwKQ==
"@types/sinonjs__fake-timers@8.1.1": "@types/sinonjs__fake-timers@8.1.1":
version "8.1.1" version "8.1.1"
@ -524,10 +524,10 @@
dependencies: dependencies:
"@types/node" "*" "@types/node" "*"
"@types/ws@8.2.3": "@types/ws@8.5.2":
version "8.2.3" version "8.5.2"
resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.2.3.tgz#0bca6b03ba2f41e0fab782d4a573fe284aa907ae" resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.2.tgz#77e0c2e360e9579da930ffcfa53c5975ea3bdd26"
integrity sha512-ahRJZquUYCdOZf/rCsWg88S0/+cb9wazUBHv6HZEe3XdYaBe2zr/slM8J28X07Hn88Pnm4ezo7N8/ofnOgrPVQ== integrity sha512-VXI82ykONr5tacHEojnErTQk+KQSoYbW1NB6iz6wUwrNd+BqfkfggQNoNdCqhJSzbNumShPERbM+Pc5zpfhlbw==
dependencies: dependencies:
"@types/node" "*" "@types/node" "*"
@ -553,14 +553,14 @@
semver "^7.3.5" semver "^7.3.5"
tsutils "^3.21.0" tsutils "^3.21.0"
"@typescript-eslint/parser@5.12.1": "@typescript-eslint/parser@5.14.0":
version "5.12.1" version "5.14.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.12.1.tgz#b090289b553b8aa0899740d799d0f96e6f49771b" resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.14.0.tgz#7c79f898aa3cff0ceee6f1d34eeed0f034fb9ef3"
integrity sha512-6LuVUbe7oSdHxUWoX/m40Ni8gsZMKCi31rlawBHt7VtW15iHzjbpj2WLiToG2758KjtCCiLRKZqfrOdl3cNKuw== integrity sha512-aHJN8/FuIy1Zvqk4U/gcO/fxeMKyoSv/rS46UXMXOJKVsLQ+iYPuXNbpbH7cBLcpSbmyyFbwrniLx5+kutu1pw==
dependencies: dependencies:
"@typescript-eslint/scope-manager" "5.12.1" "@typescript-eslint/scope-manager" "5.14.0"
"@typescript-eslint/types" "5.12.1" "@typescript-eslint/types" "5.14.0"
"@typescript-eslint/typescript-estree" "5.12.1" "@typescript-eslint/typescript-estree" "5.14.0"
debug "^4.3.2" debug "^4.3.2"
"@typescript-eslint/scope-manager@5.12.1": "@typescript-eslint/scope-manager@5.12.1":
@ -571,6 +571,14 @@
"@typescript-eslint/types" "5.12.1" "@typescript-eslint/types" "5.12.1"
"@typescript-eslint/visitor-keys" "5.12.1" "@typescript-eslint/visitor-keys" "5.12.1"
"@typescript-eslint/scope-manager@5.14.0":
version "5.14.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.14.0.tgz#ea518962b42db8ed0a55152ea959c218cb53ca7b"
integrity sha512-LazdcMlGnv+xUc5R4qIlqH0OWARyl2kaP8pVCS39qSL3Pd1F7mI10DbdXeARcE62sVQE4fHNvEqMWsypWO+yEw==
dependencies:
"@typescript-eslint/types" "5.14.0"
"@typescript-eslint/visitor-keys" "5.14.0"
"@typescript-eslint/type-utils@5.12.1": "@typescript-eslint/type-utils@5.12.1":
version "5.12.1" version "5.12.1"
resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.12.1.tgz#8d58c6a0bb176b5e9a91581cda1a7f91a114d3f0" resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.12.1.tgz#8d58c6a0bb176b5e9a91581cda1a7f91a114d3f0"
@ -585,6 +593,11 @@
resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.12.1.tgz#46a36a28ff4d946821b58fe5a73c81dc2e12aa89" resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.12.1.tgz#46a36a28ff4d946821b58fe5a73c81dc2e12aa89"
integrity sha512-hfcbq4qVOHV1YRdhkDldhV9NpmmAu2vp6wuFODL71Y0Ixak+FLeEU4rnPxgmZMnGreGEghlEucs9UZn5KOfHJA== integrity sha512-hfcbq4qVOHV1YRdhkDldhV9NpmmAu2vp6wuFODL71Y0Ixak+FLeEU4rnPxgmZMnGreGEghlEucs9UZn5KOfHJA==
"@typescript-eslint/types@5.14.0":
version "5.14.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.14.0.tgz#96317cf116cea4befabc0defef371a1013f8ab11"
integrity sha512-BR6Y9eE9360LNnW3eEUqAg6HxS9Q35kSIs4rp4vNHRdfg0s+/PgHgskvu5DFTM7G5VKAVjuyaN476LCPrdA7Mw==
"@typescript-eslint/typescript-estree@5.12.1": "@typescript-eslint/typescript-estree@5.12.1":
version "5.12.1" version "5.12.1"
resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.12.1.tgz#6a9425b9c305bcbc38e2d1d9a24c08e15e02b722" resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.12.1.tgz#6a9425b9c305bcbc38e2d1d9a24c08e15e02b722"
@ -598,6 +611,19 @@
semver "^7.3.5" semver "^7.3.5"
tsutils "^3.21.0" tsutils "^3.21.0"
"@typescript-eslint/typescript-estree@5.14.0":
version "5.14.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.14.0.tgz#78b7f7385d5b6f2748aacea5c9b7f6ae62058314"
integrity sha512-QGnxvROrCVtLQ1724GLTHBTR0lZVu13izOp9njRvMkCBgWX26PKvmMP8k82nmXBRD3DQcFFq2oj3cKDwr0FaUA==
dependencies:
"@typescript-eslint/types" "5.14.0"
"@typescript-eslint/visitor-keys" "5.14.0"
debug "^4.3.2"
globby "^11.0.4"
is-glob "^4.0.3"
semver "^7.3.5"
tsutils "^3.21.0"
"@typescript-eslint/utils@5.12.1": "@typescript-eslint/utils@5.12.1":
version "5.12.1" version "5.12.1"
resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.12.1.tgz#447c24a05d9c33f9c6c64cb48f251f2371eef920" resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.12.1.tgz#447c24a05d9c33f9c6c64cb48f251f2371eef920"
@ -618,6 +644,14 @@
"@typescript-eslint/types" "5.12.1" "@typescript-eslint/types" "5.12.1"
eslint-visitor-keys "^3.0.0" eslint-visitor-keys "^3.0.0"
"@typescript-eslint/visitor-keys@5.14.0":
version "5.14.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.14.0.tgz#1927005b3434ccd0d3ae1b2ecf60e65943c36986"
integrity sha512-yL0XxfzR94UEkjBqyymMLgCBdojzEuy/eim7N9/RIcTNxpJudAcqsU8eRyfzBbcEzGoPWfdM3AGak3cN08WOIw==
dependencies:
"@typescript-eslint/types" "5.14.0"
eslint-visitor-keys "^3.0.0"
"@ungap/promise-all-settled@1.1.2": "@ungap/promise-all-settled@1.1.2":
version "1.1.2" version "1.1.2"
resolved "https://registry.yarnpkg.com/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz#aa58042711d6e3275dd37dc597e5d31e8c290a44" resolved "https://registry.yarnpkg.com/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz#aa58042711d6e3275dd37dc597e5d31e8c290a44"
@ -665,7 +699,7 @@
"@vue/compiler-dom" "3.2.31" "@vue/compiler-dom" "3.2.31"
"@vue/shared" "3.2.31" "@vue/shared" "3.2.31"
"@vue/devtools-api@^6.0.0-beta.18": "@vue/devtools-api@^6.0.0":
version "6.0.12" version "6.0.12"
resolved "https://registry.yarnpkg.com/@vue/devtools-api/-/devtools-api-6.0.12.tgz#7b57cce215ae9f37a86984633b3aa3d595aa5b46" resolved "https://registry.yarnpkg.com/@vue/devtools-api/-/devtools-api-6.0.12.tgz#7b57cce215ae9f37a86984633b3aa3d595aa5b46"
integrity sha512-iO/4FIezHKXhiDBdKySCvJVh8/mZPxHpiQrTy+PXVqJZgpTPTdHy4q8GXulaY+UKEagdkBb0onxNQZ0LNiqVhw== integrity sha512-iO/4FIezHKXhiDBdKySCvJVh8/mZPxHpiQrTy+PXVqJZgpTPTdHy4q8GXulaY+UKEagdkBb0onxNQZ0LNiqVhw==
@ -1700,13 +1734,13 @@ css-declaration-sorter@^6.0.3:
dependencies: dependencies:
timsort "^0.3.0" timsort "^0.3.0"
css-loader@6.6.0: css-loader@6.7.1:
version "6.6.0" version "6.7.1"
resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-6.6.0.tgz#c792ad5510bd1712618b49381bd0310574fafbd3" resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-6.7.1.tgz#e98106f154f6e1baf3fc3bc455cb9981c1d5fd2e"
integrity sha512-FK7H2lisOixPT406s5gZM1S3l8GrfhEBT3ZiL2UX1Ng1XWs0y2GPllz/OTyvbaHe12VgQrIXIzuEGVlbUhodqg== integrity sha512-yB5CNFa14MbPJcomwNh3wLThtkZgcNyI2bNMRt8iE5Z8Vwl7f8vQXFAzn2HDOJvtDq2NTZBUGMSUNNyrv3/+cw==
dependencies: dependencies:
icss-utils "^5.1.0" icss-utils "^5.1.0"
postcss "^8.4.5" postcss "^8.4.7"
postcss-modules-extract-imports "^3.0.0" postcss-modules-extract-imports "^3.0.0"
postcss-modules-local-by-default "^4.0.0" postcss-modules-local-by-default "^4.0.0"
postcss-modules-scope "^3.0.0" postcss-modules-scope "^3.0.0"
@ -1779,52 +1813,52 @@ cssesc@^3.0.0:
resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee"
integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==
cssnano-preset-default@^5.1.12: cssnano-preset-default@^5.2.1:
version "5.1.12" version "5.2.1"
resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-5.1.12.tgz#64e2ad8e27a279e1413d2d2383ef89a41c909be9" resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-5.2.1.tgz#a83b15d3294c69bd1cedd14b0066c2f2357d108e"
integrity sha512-rO/JZYyjW1QNkWBxMGV28DW7d98UDLaF759frhli58QFehZ+D/LSmwQ2z/ylBAe2hUlsIWTq6NYGfQPq65EF9w== integrity sha512-Y+CUCS5iZ1uzHn5KtmKIlysQVXrTtLCnYsYTOJcbdd5rghOwtw1gobvEXefBncjGO4fWwGZr9/n9hwZfo6W1Fw==
dependencies: dependencies:
css-declaration-sorter "^6.0.3" css-declaration-sorter "^6.0.3"
cssnano-utils "^3.0.2" cssnano-utils "^3.1.0"
postcss-calc "^8.2.0" postcss-calc "^8.2.3"
postcss-colormin "^5.2.5" postcss-colormin "^5.3.0"
postcss-convert-values "^5.0.4" postcss-convert-values "^5.1.0"
postcss-discard-comments "^5.0.3" postcss-discard-comments "^5.1.1"
postcss-discard-duplicates "^5.0.3" postcss-discard-duplicates "^5.1.0"
postcss-discard-empty "^5.0.3" postcss-discard-empty "^5.1.0"
postcss-discard-overridden "^5.0.4" postcss-discard-overridden "^5.1.0"
postcss-merge-longhand "^5.0.6" postcss-merge-longhand "^5.1.0"
postcss-merge-rules "^5.0.6" postcss-merge-rules "^5.1.0"
postcss-minify-font-values "^5.0.4" postcss-minify-font-values "^5.1.0"
postcss-minify-gradients "^5.0.6" postcss-minify-gradients "^5.1.0"
postcss-minify-params "^5.0.5" postcss-minify-params "^5.1.0"
postcss-minify-selectors "^5.1.3" postcss-minify-selectors "^5.2.0"
postcss-normalize-charset "^5.0.3" postcss-normalize-charset "^5.1.0"
postcss-normalize-display-values "^5.0.3" postcss-normalize-display-values "^5.1.0"
postcss-normalize-positions "^5.0.4" postcss-normalize-positions "^5.1.0"
postcss-normalize-repeat-style "^5.0.4" postcss-normalize-repeat-style "^5.1.0"
postcss-normalize-string "^5.0.4" postcss-normalize-string "^5.1.0"
postcss-normalize-timing-functions "^5.0.3" postcss-normalize-timing-functions "^5.1.0"
postcss-normalize-unicode "^5.0.4" postcss-normalize-unicode "^5.1.0"
postcss-normalize-url "^5.0.5" postcss-normalize-url "^5.1.0"
postcss-normalize-whitespace "^5.0.4" postcss-normalize-whitespace "^5.1.0"
postcss-ordered-values "^5.0.5" postcss-ordered-values "^5.1.0"
postcss-reduce-initial "^5.0.3" postcss-reduce-initial "^5.1.0"
postcss-reduce-transforms "^5.0.4" postcss-reduce-transforms "^5.1.0"
postcss-svgo "^5.0.4" postcss-svgo "^5.1.0"
postcss-unique-selectors "^5.0.4" postcss-unique-selectors "^5.1.1"
cssnano-utils@^3.0.2: cssnano-utils@^3.1.0:
version "3.0.2" version "3.1.0"
resolved "https://registry.yarnpkg.com/cssnano-utils/-/cssnano-utils-3.0.2.tgz#d82b4991a27ba6fec644b39bab35fe027137f516" resolved "https://registry.yarnpkg.com/cssnano-utils/-/cssnano-utils-3.1.0.tgz#95684d08c91511edfc70d2636338ca37ef3a6861"
integrity sha512-KhprijuQv2sP4kT92sSQwhlK3SJTbDIsxcfIEySB0O+3m9esFOai7dP9bMx5enHAh2MwarVIcnwiWoOm01RIbQ== integrity sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==
cssnano@5.0.17: cssnano@5.1.1:
version "5.0.17" version "5.1.1"
resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-5.0.17.tgz#ff45713c05cfc780a1aeb3e663b6f224d091cabf" resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-5.1.1.tgz#2df44d26461b95f699096b6830df5107b1a758f4"
integrity sha512-fmjLP7k8kL18xSspeXTzRhaFtRI7DL9b8IcXR80JgtnWBpvAzHT7sCR/6qdn0tnxIaINUN6OEQu83wF57Gs3Xw== integrity sha512-WWfN7jBK/3Uk3oX/jsFbQApDf9DkXj6dOYull5ZaSGskcDggzg3RyDZI4GKKO+00LdfLMEZtY1cwTQUL+YMg2Q==
dependencies: dependencies:
cssnano-preset-default "^5.1.12" cssnano-preset-default "^5.2.1"
lilconfig "^2.0.3" lilconfig "^2.0.3"
yaml "^1.10.2" yaml "^1.10.2"
@ -1847,10 +1881,10 @@ csstype@^2.6.8:
resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.13.tgz#a6893015b90e84dd6e85d0e3b442a1e84f2dbe0f" resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.13.tgz#a6893015b90e84dd6e85d0e3b442a1e84f2dbe0f"
integrity sha512-ul26pfSQTZW8dcOnD2iiJssfXw0gdNVX9IJDH/X3K5DGPfj+fUYe3kB+swUY6BF3oZDxaID3AJt+9/ojSAE05A== integrity sha512-ul26pfSQTZW8dcOnD2iiJssfXw0gdNVX9IJDH/X3K5DGPfj+fUYe3kB+swUY6BF3oZDxaID3AJt+9/ojSAE05A==
cypress@9.5.0: cypress@9.5.1:
version "9.5.0" version "9.5.1"
resolved "https://registry.yarnpkg.com/cypress/-/cypress-9.5.0.tgz#704a79f0d3d4e775f433334eb8f5ae065e3bea31" resolved "https://registry.yarnpkg.com/cypress/-/cypress-9.5.1.tgz#51162f3688cedf5ffce311b914ef49a7c1ece076"
integrity sha512-rC5QPolKsVjJ8QJZ7IeZ6HlKM4gswBGZc0XvoAJNL8urQCSL8zTX0A/ai/h35WfF47NQ0iSZnwIXBlHX3MOUIQ== integrity sha512-H7lUWB3Svr44gz1rNnj941xmdsCljXoJa2cDneAltjI9leKLMQLm30x6jLlpQ730tiVtIbW5HdUmBzPzwzfUQg==
dependencies: dependencies:
"@cypress/request" "^2.88.10" "@cypress/request" "^2.88.10"
"@cypress/xvfb" "^1.2.4" "@cypress/xvfb" "^1.2.4"
@ -2147,10 +2181,10 @@ enhanced-resolve@^5.7.0:
graceful-fs "^4.2.4" graceful-fs "^4.2.4"
tapable "^2.2.0" tapable "^2.2.0"
enhanced-resolve@^5.8.3: enhanced-resolve@^5.9.2:
version "5.8.3" version "5.9.2"
resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.8.3.tgz#6d552d465cce0423f5b3d718511ea53826a7b2f0" resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.9.2.tgz#0224dcd6a43389ebfb2d55efee517e5466772dd9"
integrity sha512-EGAbGvH7j7Xt2nc0E7D99La1OiEs8LnyimkRgwExpUMScN6O+3x9tIWs7PLQZVNx4YD+00skHXPXi1yQHpAmZA== integrity sha512-GIm3fQfwLJ8YZx2smuHpBKkXC1yOk+OBEmKckVyL0i/ea8mqDEykK3ld5dgH1QYPNyT/lIllxV2LULnxCHaHkA==
dependencies: dependencies:
graceful-fs "^4.2.4" graceful-fs "^4.2.4"
tapable "^2.2.0" tapable "^2.2.0"
@ -2378,12 +2412,12 @@ eslint-visitor-keys@^3.3.0:
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826"
integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==
eslint@8.9.0: eslint@8.10.0:
version "8.9.0" version "8.10.0"
resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.9.0.tgz#a2a8227a99599adc4342fd9b854cb8d8d6412fdb" resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.10.0.tgz#931be395eb60f900c01658b278e05b6dae47199d"
integrity sha512-PB09IGwv4F4b0/atrbcMFboF/giawbBLVC7fyDamk5Wtey4Jh2K+rYaBhCAbUyEI4QzB1ly09Uglc9iCtFaG2Q== integrity sha512-tcI1D9lfVec+R4LE1mNDnzoJ/f71Kl/9Cv4nG47jOueCMBrCCKYXr4AUVS7go6mWYGFD4+EoN6+eXSrEbRzXVw==
dependencies: dependencies:
"@eslint/eslintrc" "^1.1.0" "@eslint/eslintrc" "^1.2.0"
"@humanwhocodes/config-array" "^0.9.2" "@humanwhocodes/config-array" "^0.9.2"
ajv "^6.10.0" ajv "^6.10.0"
chalk "^4.0.0" chalk "^4.0.0"
@ -3940,7 +3974,7 @@ nanoid@^3.1.20:
resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.20.tgz#badc263c6b1dcf14b71efaa85f6ab4c1d6cfc788" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.20.tgz#badc263c6b1dcf14b71efaa85f6ab4c1d6cfc788"
integrity sha512-a1cQNyczgKbLX9jwbS/+d7W8fX/RfgYR7lVWwWOGIPNgK2m0MWvrGF6/m4kk6U3QcFMnZf3RIhL0v2Jgh/0Uxw== integrity sha512-a1cQNyczgKbLX9jwbS/+d7W8fX/RfgYR7lVWwWOGIPNgK2m0MWvrGF6/m4kk6U3QcFMnZf3RIhL0v2Jgh/0Uxw==
nanoid@^3.2.0: nanoid@^3.3.1:
version "3.3.1" version "3.3.1"
resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.1.tgz#6347a18cac88af88f58af0b3594b723d5e99bb35" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.1.tgz#6347a18cac88af88f58af0b3594b723d5e99bb35"
integrity sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw== integrity sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==
@ -4318,50 +4352,50 @@ portscanner@2.2.0:
async "^2.6.0" async "^2.6.0"
is-number-like "^1.0.3" is-number-like "^1.0.3"
postcss-calc@^8.2.0: postcss-calc@^8.2.3:
version "8.2.2" version "8.2.4"
resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-8.2.2.tgz#9706e7399e8ec8b61a47830dcf1f21391af23373" resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-8.2.4.tgz#77b9c29bfcbe8a07ff6693dc87050828889739a5"
integrity sha512-B5R0UeB4zLJvxNt1FVCaDZULdzsKLPc6FhjFJ+xwFiq7VG4i9cuaJLxVjNtExNK8ocm3n2o4unXXLiVX1SCqxA== integrity sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==
dependencies: dependencies:
postcss-selector-parser "^6.0.2" postcss-selector-parser "^6.0.9"
postcss-value-parser "^4.0.2" postcss-value-parser "^4.2.0"
postcss-colormin@^5.2.5: postcss-colormin@^5.3.0:
version "5.2.5" version "5.3.0"
resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-5.2.5.tgz#d1fc269ac2ad03fe641d462b5d1dada35c69968a" resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-5.3.0.tgz#3cee9e5ca62b2c27e84fce63affc0cfb5901956a"
integrity sha512-+X30aDaGYq81mFqwyPpnYInsZQnNpdxMX0ajlY7AExCexEFkPVV+KrO7kXwayqEWL2xwEbNQ4nUO0ZsRWGnevg== integrity sha512-WdDO4gOFG2Z8n4P8TWBpshnL3JpmNmJwdnfP2gbk2qBA8PWwOYcmjmI/t3CmMeL72a7Hkd+x/Mg9O2/0rD54Pg==
dependencies: dependencies:
browserslist "^4.16.6" browserslist "^4.16.6"
caniuse-api "^3.0.0" caniuse-api "^3.0.0"
colord "^2.9.1" colord "^2.9.1"
postcss-value-parser "^4.2.0" postcss-value-parser "^4.2.0"
postcss-convert-values@^5.0.4: postcss-convert-values@^5.1.0:
version "5.0.4" version "5.1.0"
resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-5.0.4.tgz#3e74dd97c581f475ae7b4500bc0a7c4fb3a6b1b6" resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-5.1.0.tgz#f8d3abe40b4ce4b1470702a0706343eac17e7c10"
integrity sha512-bugzSAyjIexdObovsPZu/sBCTHccImJxLyFgeV0MmNBm/Lw5h5XnjfML6gzEmJ3A6nyfCW7hb1JXzcsA4Zfbdw== integrity sha512-GkyPbZEYJiWtQB0KZ0X6qusqFHUepguBCNFi9t5JJc7I2OTXG7C0twbTLvCfaKOLl3rSXmpAwV7W5txd91V84g==
dependencies: dependencies:
postcss-value-parser "^4.2.0" postcss-value-parser "^4.2.0"
postcss-discard-comments@^5.0.3: postcss-discard-comments@^5.1.1:
version "5.0.3" version "5.1.1"
resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-5.0.3.tgz#011acb63418d600fdbe18804e1bbecb543ad2f87" resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-5.1.1.tgz#e90019e1a0e5b99de05f63516ce640bd0df3d369"
integrity sha512-6W5BemziRoqIdAKT+1QjM4bNcJAQ7z7zk073730NHg4cUXh3/rQHHj7pmYxUB9aGhuRhBiUf0pXvIHkRwhQP0Q== integrity sha512-5JscyFmvkUxz/5/+TB3QTTT9Gi9jHkcn8dcmmuN68JQcv3aQg4y88yEHHhwFB52l/NkaJ43O0dbksGMAo49nfQ==
postcss-discard-duplicates@^5.0.3: postcss-discard-duplicates@^5.1.0:
version "5.0.3" version "5.1.0"
resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-5.0.3.tgz#10f202a4cfe9d407b73dfea7a477054d21ea0c1f" resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz#9eb4fe8456706a4eebd6d3b7b777d07bad03e848"
integrity sha512-vPtm1Mf+kp7iAENTG7jI1MN1lk+fBqL5y+qxyi4v3H+lzsXEdfS3dwUZD45KVhgzDEgduur8ycB4hMegyMTeRw== integrity sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==
postcss-discard-empty@^5.0.3: postcss-discard-empty@^5.1.0:
version "5.0.3" version "5.1.0"
resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-5.0.3.tgz#ec185af4a3710b88933b0ff751aa157b6041dd6a" resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-5.1.0.tgz#7f51b16cd1b89f8180bbc7cee34d6cbabf2ef810"
integrity sha512-xGJugpaXKakwKI7sSdZjUuN4V3zSzb2Y0LOlmTajFbNinEjTfVs9PFW2lmKBaC/E64WwYppfqLD03P8l9BuueA== integrity sha512-782T/buGgb3HOuHOJAHpdyKzAAKsv/BxWqsutnZ+QsiHEcDkY7v+6WWdturuBiSal6XMOO1p1aJvwXdqLD5vhA==
postcss-discard-overridden@^5.0.4: postcss-discard-overridden@^5.1.0:
version "5.0.4" version "5.1.0"
resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-5.0.4.tgz#cc999d6caf18ea16eff8b2b58f48ec3ddee35c9c" resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz#7e8c5b53325747e9d90131bb88635282fb4a276e"
integrity sha512-3j9QH0Qh1KkdxwiZOW82cId7zdwXVQv/gRXYDnwx5pBtR1sTkU4cXRK9lp5dSdiM0r0OICO/L8J6sV1/7m0kHg== integrity sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==
postcss-loader@6.2.1: postcss-loader@6.2.1:
version "6.2.1" version "6.2.1"
@ -4372,53 +4406,53 @@ postcss-loader@6.2.1:
klona "^2.0.5" klona "^2.0.5"
semver "^7.3.5" semver "^7.3.5"
postcss-merge-longhand@^5.0.6: postcss-merge-longhand@^5.1.0:
version "5.0.6" version "5.1.0"
resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-5.0.6.tgz#090e60d5d3b3caad899f8774f8dccb33217d2166" resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-5.1.0.tgz#f716bffbf0bdfbde6ea78c36088e21559f8a0a95"
integrity sha512-rkmoPwQO6ymJSmWsX6l2hHeEBQa7C4kJb9jyi5fZB1sE8nSCv7sqchoYPixRwX/yvLoZP2y6FA5kcjiByeJqDg== integrity sha512-Gr46srN2tsLD8fudKYoHO56RG0BLQ2nsBRnSZGY04eNBPwTeWa9KeHrbL3tOLAHyB2aliikycPH2TMJG1U+W6g==
dependencies: dependencies:
postcss-value-parser "^4.2.0" postcss-value-parser "^4.2.0"
stylehacks "^5.0.3" stylehacks "^5.1.0"
postcss-merge-rules@^5.0.6: postcss-merge-rules@^5.1.0:
version "5.0.6" version "5.1.0"
resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-5.0.6.tgz#26b37411fe1e80202fcef61cab027265b8925f2b" resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-5.1.0.tgz#a2d5117eba09c8686a5471d97bd9afcf30d1b41f"
integrity sha512-nzJWJ9yXWp8AOEpn/HFAW72WKVGD2bsLiAmgw4hDchSij27bt6TF+sIK0cJUBAYT3SGcjtGGsOR89bwkkMuMgQ== integrity sha512-NecukEJovQ0mG7h7xV8wbYAkXGTO3MPKnXvuiXzOKcxoOodfTTKYjeo8TMhAswlSkjcPIBlnKbSFcTuVSDaPyQ==
dependencies: dependencies:
browserslist "^4.16.6" browserslist "^4.16.6"
caniuse-api "^3.0.0" caniuse-api "^3.0.0"
cssnano-utils "^3.0.2" cssnano-utils "^3.1.0"
postcss-selector-parser "^6.0.5" postcss-selector-parser "^6.0.5"
postcss-minify-font-values@^5.0.4: postcss-minify-font-values@^5.1.0:
version "5.0.4" version "5.1.0"
resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-5.0.4.tgz#627d824406b0712243221891f40a44fffe1467fd" resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz#f1df0014a726083d260d3bd85d7385fb89d1f01b"
integrity sha512-RN6q3tyuEesvyCYYFCRGJ41J1XFvgV+dvYGHr0CeHv8F00yILlN8Slf4t8XW4IghlfZYCeyRrANO6HpJ948ieA== integrity sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==
dependencies: dependencies:
postcss-value-parser "^4.2.0" postcss-value-parser "^4.2.0"
postcss-minify-gradients@^5.0.6: postcss-minify-gradients@^5.1.0:
version "5.0.6" version "5.1.0"
resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-5.0.6.tgz#b07cef51a93f075e94053fd972ff1cba2eaf6503" resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-5.1.0.tgz#de0260a67a13b7b321a8adc3150725f2c6612377"
integrity sha512-E/dT6oVxB9nLGUTiY/rG5dX9taugv9cbLNTFad3dKxOO+BQg25Q/xo2z2ddG+ZB1CbkZYaVwx5blY8VC7R/43A== integrity sha512-J/TMLklkONn3LuL8wCwfwU8zKC1hpS6VcxFkNUNjmVt53uKqrrykR3ov11mdUYyqVMEx67slMce0tE14cE4DTg==
dependencies: dependencies:
colord "^2.9.1" colord "^2.9.1"
cssnano-utils "^3.0.2" cssnano-utils "^3.1.0"
postcss-value-parser "^4.2.0" postcss-value-parser "^4.2.0"
postcss-minify-params@^5.0.5: postcss-minify-params@^5.1.0:
version "5.0.5" version "5.1.0"
resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-5.0.5.tgz#86cb624358cd45c21946f8c317893f0449396646" resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-5.1.0.tgz#e0b1f4e05cfd396682f612856485907e4064f25e"
integrity sha512-YBNuq3Rz5LfLFNHb9wrvm6t859b8qIqfXsWeK7wROm3jSKNpO1Y5e8cOyBv6Acji15TgSrAwb3JkVNCqNyLvBg== integrity sha512-q67dcts4Hct6x8+JmhBgctHkbvUsqGIg2IItenjE63iZXMbhjr7AlVZkNnKtIGt/1Wsv7p/7YzeSII6Q+KPXRg==
dependencies: dependencies:
browserslist "^4.16.6" browserslist "^4.16.6"
cssnano-utils "^3.0.2" cssnano-utils "^3.1.0"
postcss-value-parser "^4.2.0" postcss-value-parser "^4.2.0"
postcss-minify-selectors@^5.1.3: postcss-minify-selectors@^5.2.0:
version "5.1.3" version "5.2.0"
resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-5.1.3.tgz#6ac12d52aa661fd509469d87ab2cebb0a1e3a1b5" resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-5.2.0.tgz#17c2be233e12b28ffa8a421a02fc8b839825536c"
integrity sha512-9RJfTiQEKA/kZhMaEXND893nBqmYQ8qYa/G+uPdVnXF6D/FzpfI6kwBtWEcHx5FqDbA79O9n6fQJfrIj6M8jvQ== integrity sha512-vYxvHkW+iULstA+ctVNx0VoRAR4THQQRkG77o0oa4/mBS0OzGvvzLIvHDv/nNEM0crzN2WIyFU5X7wZhaUK3RA==
dependencies: dependencies:
postcss-selector-parser "^6.0.5" postcss-selector-parser "^6.0.5"
@ -4450,89 +4484,89 @@ postcss-modules-values@^4.0.0:
dependencies: dependencies:
icss-utils "^5.0.0" icss-utils "^5.0.0"
postcss-normalize-charset@^5.0.3: postcss-normalize-charset@^5.1.0:
version "5.0.3" version "5.1.0"
resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-5.0.3.tgz#719fb9f9ca9835fcbd4fed8d6e0d72a79e7b5472" resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz#9302de0b29094b52c259e9b2cf8dc0879879f0ed"
integrity sha512-iKEplDBco9EfH7sx4ut7R2r/dwTnUqyfACf62Unc9UiyFuI7uUqZZtY+u+qp7g8Qszl/U28HIfcsI3pEABWFfA== integrity sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==
postcss-normalize-display-values@^5.0.3: postcss-normalize-display-values@^5.1.0:
version "5.0.3" version "5.1.0"
resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-5.0.3.tgz#94cc82e20c51cc4ffba6b36e9618adc1e50db8c1" resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz#72abbae58081960e9edd7200fcf21ab8325c3da8"
integrity sha512-FIV5FY/qs4Ja32jiDb5mVj5iWBlS3N8tFcw2yg98+8MkRgyhtnBgSC0lxU+16AMHbjX5fbSJgw5AXLMolonuRQ== integrity sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==
dependencies: dependencies:
postcss-value-parser "^4.2.0" postcss-value-parser "^4.2.0"
postcss-normalize-positions@^5.0.4: postcss-normalize-positions@^5.1.0:
version "5.0.4" version "5.1.0"
resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-5.0.4.tgz#4001f38c99675437b83277836fb4291887fcc6cc" resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-5.1.0.tgz#902a7cb97cf0b9e8b1b654d4a43d451e48966458"
integrity sha512-qynirjBX0Lc73ROomZE3lzzmXXTu48/QiEzKgMeqh28+MfuHLsuqC9po4kj84igZqqFGovz8F8hf44hA3dPYmQ== integrity sha512-8gmItgA4H5xiUxgN/3TVvXRoJxkAWLW6f/KKhdsH03atg0cB8ilXnrB5PpSshwVu/dD2ZsRFQcR1OEmSBDAgcQ==
dependencies: dependencies:
postcss-value-parser "^4.2.0" postcss-value-parser "^4.2.0"
postcss-normalize-repeat-style@^5.0.4: postcss-normalize-repeat-style@^5.1.0:
version "5.0.4" version "5.1.0"
resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.0.4.tgz#d005adf9ee45fae78b673031a376c0c871315145" resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.0.tgz#f6d6fd5a54f51a741cc84a37f7459e60ef7a6398"
integrity sha512-Innt+wctD7YpfeDR7r5Ik6krdyppyAg2HBRpX88fo5AYzC1Ut/l3xaxACG0KsbX49cO2n5EB13clPwuYVt8cMA== integrity sha512-IR3uBjc+7mcWGL6CtniKNQ4Rr5fTxwkaDHwMBDGGs1x9IVRkYIT/M4NelZWkAOBdV6v3Z9S46zqaKGlyzHSchw==
dependencies: dependencies:
postcss-value-parser "^4.2.0" postcss-value-parser "^4.2.0"
postcss-normalize-string@^5.0.4: postcss-normalize-string@^5.1.0:
version "5.0.4" version "5.1.0"
resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-5.0.4.tgz#b5e00a07597e7aa8a871817bfeac2bfaa59c3333" resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz#411961169e07308c82c1f8c55f3e8a337757e228"
integrity sha512-Dfk42l0+A1CDnVpgE606ENvdmksttLynEqTQf5FL3XGQOyqxjbo25+pglCUvziicTxjtI2NLUR6KkxyUWEVubQ== integrity sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==
dependencies: dependencies:
postcss-value-parser "^4.2.0" postcss-value-parser "^4.2.0"
postcss-normalize-timing-functions@^5.0.3: postcss-normalize-timing-functions@^5.1.0:
version "5.0.3" version "5.1.0"
resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.0.3.tgz#47210227bfcba5e52650d7a18654337090de7072" resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz#d5614410f8f0b2388e9f240aa6011ba6f52dafbb"
integrity sha512-QRfjvFh11moN4PYnJ7hia4uJXeFotyK3t2jjg8lM9mswleGsNw2Lm3I5wO+l4k1FzK96EFwEVn8X8Ojrp2gP4g== integrity sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==
dependencies: dependencies:
postcss-value-parser "^4.2.0" postcss-value-parser "^4.2.0"
postcss-normalize-unicode@^5.0.4: postcss-normalize-unicode@^5.1.0:
version "5.0.4" version "5.1.0"
resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-5.0.4.tgz#02866096937005cdb2c17116c690f29505a1623d" resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.0.tgz#3d23aede35e160089a285e27bf715de11dc9db75"
integrity sha512-W79Regn+a+eXTzB+oV/8XJ33s3pDyFTND2yDuUCo0Xa3QSy1HtNIfRVPXNubHxjhlqmMFADr3FSCHT84ITW3ig== integrity sha512-J6M3MizAAZ2dOdSjy2caayJLQT8E8K9XjLce8AUQMwOrCvjCHv24aLC/Lps1R1ylOfol5VIDMaM/Lo9NGlk1SQ==
dependencies: dependencies:
browserslist "^4.16.6" browserslist "^4.16.6"
postcss-value-parser "^4.2.0" postcss-value-parser "^4.2.0"
postcss-normalize-url@^5.0.5: postcss-normalize-url@^5.1.0:
version "5.0.5" version "5.1.0"
resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-5.0.5.tgz#c39efc12ff119f6f45f0b4f516902b12c8080e3a" resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz#ed9d88ca82e21abef99f743457d3729a042adcdc"
integrity sha512-Ws3tX+PcekYlXh+ycAt0wyzqGthkvVtZ9SZLutMVvHARxcpu4o7vvXcNoiNKyjKuWecnjS6HDI3fjBuDr5MQxQ== integrity sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==
dependencies: dependencies:
normalize-url "^6.0.1" normalize-url "^6.0.1"
postcss-value-parser "^4.2.0" postcss-value-parser "^4.2.0"
postcss-normalize-whitespace@^5.0.4: postcss-normalize-whitespace@^5.1.0:
version "5.0.4" version "5.1.0"
resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.0.4.tgz#1d477e7da23fecef91fc4e37d462272c7b55c5ca" resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.0.tgz#aed8b4580c9ad6e8eac034177291187ea16a059c"
integrity sha512-wsnuHolYZjMwWZJoTC9jeI2AcjA67v4UuidDrPN9RnX8KIZfE+r2Nd6XZRwHVwUiHmRvKQtxiqo64K+h8/imaw== integrity sha512-7O1FanKaJkpWFyCghFzIkLhehujV/frGkdofGLwhg5upbLyGsSfiTcZAdSzoPsSUgyPCkBkNMeWR8yVgPdQybg==
dependencies: dependencies:
postcss-value-parser "^4.2.0" postcss-value-parser "^4.2.0"
postcss-ordered-values@^5.0.5: postcss-ordered-values@^5.1.0:
version "5.0.5" version "5.1.0"
resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-5.0.5.tgz#e878af822a130c3f3709737e24cb815ca7c6d040" resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-5.1.0.tgz#04ef429e0991b0292bc918b135cd4c038f7b889f"
integrity sha512-mfY7lXpq+8bDEHfP+muqibDPhZ5eP9zgBEF9XRvoQgXcQe2Db3G1wcvjbnfjXG6wYsl+0UIjikqq4ym1V2jGMQ== integrity sha512-wU4Z4D4uOIH+BUKkYid36gGDJNQtkVJT7Twv8qH6UyfttbbJWyw4/xIPuVEkkCtQLAJ0EdsNSh8dlvqkXb49TA==
dependencies: dependencies:
cssnano-utils "^3.0.2" cssnano-utils "^3.1.0"
postcss-value-parser "^4.2.0" postcss-value-parser "^4.2.0"
postcss-reduce-initial@^5.0.3: postcss-reduce-initial@^5.1.0:
version "5.0.3" version "5.1.0"
resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-5.0.3.tgz#68891594defd648253703bbd8f1093162f19568d" resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-5.1.0.tgz#fc31659ea6e85c492fb2a7b545370c215822c5d6"
integrity sha512-c88TkSnQ/Dnwgb4OZbKPOBbCaauwEjbECP5uAuFPOzQ+XdjNjRH7SG0dteXrpp1LlIFEKK76iUGgmw2V0xeieA== integrity sha512-5OgTUviz0aeH6MtBjHfbr57tml13PuedK/Ecg8szzd4XRMbYxH4572JFG067z+FqBIf6Zp/d+0581glkvvWMFw==
dependencies: dependencies:
browserslist "^4.16.6" browserslist "^4.16.6"
caniuse-api "^3.0.0" caniuse-api "^3.0.0"
postcss-reduce-transforms@^5.0.4: postcss-reduce-transforms@^5.1.0:
version "5.0.4" version "5.1.0"
resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-5.0.4.tgz#717e72d30befe857f7d2784dba10eb1157863712" resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz#333b70e7758b802f3dd0ddfe98bb1ccfef96b6e9"
integrity sha512-VIJB9SFSaL8B/B7AXb7KHL6/GNNbbCHslgdzS9UDfBZYIA2nx8NLY7iD/BXFSO/1sRUILzBTfHCoW5inP37C5g== integrity sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==
dependencies: dependencies:
postcss-value-parser "^4.2.0" postcss-value-parser "^4.2.0"
@ -4554,22 +4588,30 @@ postcss-selector-parser@^6.0.5:
cssesc "^3.0.0" cssesc "^3.0.0"
util-deprecate "^1.0.2" util-deprecate "^1.0.2"
postcss-svgo@^5.0.4: postcss-selector-parser@^6.0.9:
version "5.0.4" version "6.0.9"
resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-5.0.4.tgz#cfa8682f47b88f7cd75108ec499e133b43102abf" resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.9.tgz#ee71c3b9ff63d9cd130838876c13a2ec1a992b2f"
integrity sha512-yDKHvULbnZtIrRqhZoA+rxreWpee28JSRH/gy9727u0UCgtpv1M/9WEWY3xySlFa0zQJcqf6oCBJPR5NwkmYpg== integrity sha512-UO3SgnZOVTwu4kyLR22UQ1xZh086RyNZppb7lLAKBFK8a32ttG5i87Y/P3+2bRSjZNyJ1B7hfFNo273tKe9YxQ==
dependencies:
cssesc "^3.0.0"
util-deprecate "^1.0.2"
postcss-svgo@^5.1.0:
version "5.1.0"
resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-5.1.0.tgz#0a317400ced789f233a28826e77523f15857d80d"
integrity sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==
dependencies: dependencies:
postcss-value-parser "^4.2.0" postcss-value-parser "^4.2.0"
svgo "^2.7.0" svgo "^2.7.0"
postcss-unique-selectors@^5.0.4: postcss-unique-selectors@^5.1.1:
version "5.0.4" version "5.1.1"
resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-5.0.4.tgz#08e188126b634ddfa615fb1d6c262bafdd64826e" resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz#a9f273d1eacd09e9aa6088f4b0507b18b1b541b6"
integrity sha512-5ampwoSDJCxDPoANBIlMgoBcYUHnhaiuLYJR5pj1DLnYQvMRVyFuTA5C3Bvt+aHtiqWpJkD/lXT50Vo1D0ZsAQ== integrity sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==
dependencies: dependencies:
postcss-selector-parser "^6.0.5" postcss-selector-parser "^6.0.5"
postcss-value-parser@^4.0.2, postcss-value-parser@^4.1.0: postcss-value-parser@^4.1.0:
version "4.1.0" version "4.1.0"
resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz#443f6a20ced6481a2bda4fa8532a6e55d789a2cb" resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz#443f6a20ced6481a2bda4fa8532a6e55d789a2cb"
integrity sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ== integrity sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==
@ -4579,12 +4621,12 @@ postcss-value-parser@^4.2.0:
resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514"
integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==
postcss@8.4.6, postcss@^8.4.5: postcss@8.4.8, postcss@^8.4.7:
version "8.4.6" version "8.4.8"
resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.6.tgz#c5ff3c3c457a23864f32cb45ac9b741498a09ae1" resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.8.tgz#dad963a76e82c081a0657d3a2f3602ce10c2e032"
integrity sha512-OovjwIzs9Te46vlEx7+uXB0PLijpwjXGKXjVGGPIGubGpq7uh5Xgf6D6FiJ/SzJMBosHDp6a2hiXOS97iBXcaA== integrity sha512-2tXEqGxrjvAO6U+CJzDL2Fk2kPHTv1jQsYkSoMeOis2SsYaXRO2COxTdQp99cYvif9JTXaAk9lYGc3VhJt7JPQ==
dependencies: dependencies:
nanoid "^3.2.0" nanoid "^3.3.1"
picocolors "^1.0.0" picocolors "^1.0.0"
source-map-js "^1.0.2" source-map-js "^1.0.2"
@ -4983,10 +5025,10 @@ sass-loader@12.6.0:
klona "^2.0.4" klona "^2.0.4"
neo-async "^2.6.2" neo-async "^2.6.2"
sass@1.49.8: sass@1.49.9:
version "1.49.8" version "1.49.9"
resolved "https://registry.yarnpkg.com/sass/-/sass-1.49.8.tgz#9bbbc5d43d14862db07f1c04b786c9da9b641828" resolved "https://registry.yarnpkg.com/sass/-/sass-1.49.9.tgz#b15a189ecb0ca9e24634bae5d1ebc191809712f9"
integrity sha512-NoGOjvDDOU9og9oAxhRnap71QaTjjlzrvLnKecUJ3GxhaQBrV6e7gPuSPF28u1OcVAArVojPAe4ZhOXwwC4tGw== integrity sha512-YlYWkkHP9fbwaFRZQRXgDi3mXZShslVmmo+FVK3kHLUELHHEYrCmL1x6IUjC7wLS6VuJSAFXRQS/DxdsC4xL1A==
dependencies: dependencies:
chokidar ">=3.0.0 <4.0.0" chokidar ">=3.0.0 <4.0.0"
immutable "^4.0.0" immutable "^4.0.0"
@ -5319,10 +5361,10 @@ style-loader@3.3.1:
resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-3.3.1.tgz#057dfa6b3d4d7c7064462830f9113ed417d38575" resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-3.3.1.tgz#057dfa6b3d4d7c7064462830f9113ed417d38575"
integrity sha512-GPcQ+LDJbrcxHORTRes6Jy2sfvK2kS6hpSfI/fXhPt+spVzxF6LJ1dHLN9zIGmVaaP044YKaIatFaufENRiDoQ== integrity sha512-GPcQ+LDJbrcxHORTRes6Jy2sfvK2kS6hpSfI/fXhPt+spVzxF6LJ1dHLN9zIGmVaaP044YKaIatFaufENRiDoQ==
stylehacks@^5.0.3: stylehacks@^5.1.0:
version "5.0.3" version "5.1.0"
resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-5.0.3.tgz#2ef3de567bfa2be716d29a93bf3d208c133e8d04" resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-5.1.0.tgz#a40066490ca0caca04e96c6b02153ddc39913520"
integrity sha512-ENcUdpf4yO0E1rubu8rkxI+JGQk4CgjchynZ4bDBJDfqdy+uhTRSWb8/F3Jtu+Bw5MW45Po3/aQGeIyyxgQtxg== integrity sha512-SzLmvHQTrIWfSgljkQCw2++C9+Ne91d/6Sp92I8c5uHTcy/PgeHamwITIbBW9wnFTY/3ZfSXR9HIL6Ikqmcu6Q==
dependencies: dependencies:
browserslist "^4.16.6" browserslist "^4.16.6"
postcss-selector-parser "^6.0.4" postcss-selector-parser "^6.0.4"
@ -5442,10 +5484,10 @@ textarea-caret@3.1.0:
resolved "https://registry.yarnpkg.com/textarea-caret/-/textarea-caret-3.1.0.tgz#5d5a35bb035fd06b2ff0e25d5359e97f2655087f" resolved "https://registry.yarnpkg.com/textarea-caret/-/textarea-caret-3.1.0.tgz#5d5a35bb035fd06b2ff0e25d5359e97f2655087f"
integrity sha512-cXAvzO9pP5CGa6NKx0WYHl+8CHKZs8byMkt3PCJBCmq2a34YA9pO1NrQET5pzeqnBjBdToF5No4rrmkDUgQC2Q== integrity sha512-cXAvzO9pP5CGa6NKx0WYHl+8CHKZs8byMkt3PCJBCmq2a34YA9pO1NrQET5pzeqnBjBdToF5No4rrmkDUgQC2Q==
three@0.136.0: three@0.138.3:
version "0.136.0" version "0.138.3"
resolved "https://registry.yarnpkg.com/three/-/three-0.136.0.tgz#b1504db021b46398ef468aa7849f3dcabb814f50" resolved "https://registry.yarnpkg.com/three/-/three-0.138.3.tgz#7be5153d79dcbf9e9baad82e7faf8c29edda4ed0"
integrity sha512-+fEMX7nYLz2ZesVP/dyifli5Jf8gR3XPAnFJveQ80aMhibFduzrADnjMbARXh8+W9qLK7rshJCjAIL/6cDxC+A== integrity sha512-4t1cKC8gimNyJChJbaklg8W/qj3PpsLJUIFm5LIuAy/hVxxNm1ru2FGTSfbTSsuHmC/7ipsyuGKqrSAKLNtkzg==
throttle-debounce@3.0.1: throttle-debounce@3.0.1:
version "3.0.1" version "3.0.1"
@ -5504,10 +5546,10 @@ tough-cookie@~2.5.0:
psl "^1.1.28" psl "^1.1.28"
punycode "^2.1.1" punycode "^2.1.1"
ts-loader@9.2.6: ts-loader@9.2.7:
version "9.2.6" version "9.2.7"
resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-9.2.6.tgz#9937c4dd0a1e3dbbb5e433f8102a6601c6615d74" resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-9.2.7.tgz#948654099ca96992b62ec47bd9cee5632006e101"
integrity sha512-QMTC4UFzHmu9wU2VHZEmWWE9cUajjfcdcws+Gh7FhiO+Dy0RnR1bNz0YCHqhI0yRowCE9arVnNxYHqELOy9Hjw== integrity sha512-Fxh44mKli9QezgbdCXkEJWxnedQ0ead7DXTH+lfXEPedu+Y9EtMJ2aQ9G3Dj1j7Q612E8931rww8NDZha4Tibg==
dependencies: dependencies:
chalk "^4.1.0" chalk "^4.1.0"
enhanced-resolve "^5.0.0" enhanced-resolve "^5.0.0"
@ -5526,7 +5568,17 @@ tsc-alias@1.5.0:
mylas "^2.1.6" mylas "^2.1.6"
normalize-path "^3.0.0" normalize-path "^3.0.0"
tsconfig-paths@3.12.0, tsconfig-paths@^3.12.0: tsconfig-paths@3.13.0:
version "3.13.0"
resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.13.0.tgz#f3e9b8f6876698581d94470c03c95b3a48c0e3d7"
integrity sha512-nWuffZppoaYK0vQ1SQmkSsQzJoHA4s6uzdb2waRpD806x9yfq153AdVsWz4je2qZcW+pENrMQXbGQ3sMCkXuhw==
dependencies:
"@types/json5" "^0.0.29"
json5 "^1.0.1"
minimist "^1.2.0"
strip-bom "^3.0.0"
tsconfig-paths@^3.12.0:
version "3.12.0" version "3.12.0"
resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.12.0.tgz#19769aca6ee8f6a1a341e38c8fa45dd9fb18899b" resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.12.0.tgz#19769aca6ee8f6a1a341e38c8fa45dd9fb18899b"
integrity sha512-e5adrnOYT6zqVnWqZu7i/BQ3BnhzvGbjEjejFXO20lKIKpwTaupkCPgEfv4GZK1IBciJUEhYs3J3p75FdaTFVg== integrity sha512-e5adrnOYT6zqVnWqZu7i/BQ3BnhzvGbjEjejFXO20lKIKpwTaupkCPgEfv4GZK1IBciJUEhYs3J3p75FdaTFVg==
@ -5604,10 +5656,10 @@ typedarray-to-buffer@^3.1.5:
dependencies: dependencies:
is-typedarray "^1.0.0" is-typedarray "^1.0.0"
typescript@4.5.5: typescript@4.6.2:
version "4.5.5" version "4.6.2"
resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.5.5.tgz#d8c953832d28924a9e3d37c73d729c846c5896f3" resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.6.2.tgz#fe12d2727b708f4eef40f51598b3398baa9611d4"
integrity sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA== integrity sha512-HM/hFigTBHZhLXshn9sN37H085+hQGeJHJ/X7LpBWLID/fbc2acUMfU+lGD98X81sKP+pFa9f0DZmCwB9GnbAg==
unbox-primitive@^1.0.1: unbox-primitive@^1.0.1:
version "1.0.1" version "1.0.1"
@ -5747,12 +5799,12 @@ vue-prism-editor@2.0.0-alpha.2:
resolved "https://registry.yarnpkg.com/vue-prism-editor/-/vue-prism-editor-2.0.0-alpha.2.tgz#aa53a88efaaed628027cbb282c2b1d37fc7c5c69" resolved "https://registry.yarnpkg.com/vue-prism-editor/-/vue-prism-editor-2.0.0-alpha.2.tgz#aa53a88efaaed628027cbb282c2b1d37fc7c5c69"
integrity sha512-Gu42ba9nosrE+gJpnAEuEkDMqG9zSUysIR8SdXUw8MQKDjBnnNR9lHC18uOr/ICz7yrA/5c7jHJr9lpElODC7w== integrity sha512-Gu42ba9nosrE+gJpnAEuEkDMqG9zSUysIR8SdXUw8MQKDjBnnNR9lHC18uOr/ICz7yrA/5c7jHJr9lpElODC7w==
vue-router@4.0.12: vue-router@4.0.13:
version "4.0.12" version "4.0.13"
resolved "https://registry.yarnpkg.com/vue-router/-/vue-router-4.0.12.tgz#8dc792cddf5bb1abcc3908f9064136de7e13c460" resolved "https://registry.yarnpkg.com/vue-router/-/vue-router-4.0.13.tgz#47f06e2f8ff6120bfff3c27ade1356cc9de7d870"
integrity sha512-CPXvfqe+mZLB1kBWssssTiWg4EQERyqJZes7USiqfW9B5N2x+nHlnsM1D3b5CaJ6qgCvMmYJnz+G0iWjNCvXrg== integrity sha512-LmXrC+BkDRLak+d5xTMgUYraT3Nj0H/vCbP+7usGvIl9Viqd1UP6AsP0i69pSbn9O0dXK/xCdp4yPw21HqV9Jw==
dependencies: dependencies:
"@vue/devtools-api" "^6.0.0-beta.18" "@vue/devtools-api" "^6.0.0"
vue-style-loader@4.1.3: vue-style-loader@4.1.3:
version "4.1.3" version "4.1.3"
@ -5855,10 +5907,10 @@ webpack-sources@^3.2.3:
resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde" resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde"
integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==
webpack@5.69.1: webpack@5.70.0:
version "5.69.1" version "5.70.0"
resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.69.1.tgz#8cfd92c192c6a52c99ab00529b5a0d33aa848dc5" resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.70.0.tgz#3461e6287a72b5e6e2f4872700bc8de0d7500e6d"
integrity sha512-+VyvOSJXZMT2V5vLzOnDuMz5GxEqLk7hKWQ56YxPW/PQRUuKimPqmEIJOx8jHYeyo65pKbapbW464mvsKbaj4A== integrity sha512-ZMWWy8CeuTTjCxbeaQI21xSswseF2oNOwc70QSKNePvmxE7XW36i7vpBMYZFAUHPwQiEbNGCEYIOOlyRbdGmxw==
dependencies: dependencies:
"@types/eslint-scope" "^3.7.3" "@types/eslint-scope" "^3.7.3"
"@types/estree" "^0.0.51" "@types/estree" "^0.0.51"
@ -5869,7 +5921,7 @@ webpack@5.69.1:
acorn-import-assertions "^1.7.6" acorn-import-assertions "^1.7.6"
browserslist "^4.14.5" browserslist "^4.14.5"
chrome-trace-event "^1.0.2" chrome-trace-event "^1.0.2"
enhanced-resolve "^5.8.3" enhanced-resolve "^5.9.2"
es-module-lexer "^0.9.0" es-module-lexer "^0.9.0"
eslint-scope "5.1.1" eslint-scope "5.1.1"
events "^3.2.0" events "^3.2.0"

View file

@ -194,48 +194,48 @@
dependencies: dependencies:
"@types/node" "*" "@types/node" "*"
"@typescript-eslint/parser@5.12.0": "@typescript-eslint/parser@5.14.0":
version "5.12.0" version "5.14.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.12.0.tgz#0ca669861813df99ce54916f66f524c625ed2434" resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.14.0.tgz#7c79f898aa3cff0ceee6f1d34eeed0f034fb9ef3"
integrity sha512-MfSwg9JMBojMUoGjUmX+D2stoQj1CBYTCP0qnnVtu9A+YQXVKNtLjasYh+jozOcrb/wau8TCfWOkQTiOAruBog== integrity sha512-aHJN8/FuIy1Zvqk4U/gcO/fxeMKyoSv/rS46UXMXOJKVsLQ+iYPuXNbpbH7cBLcpSbmyyFbwrniLx5+kutu1pw==
dependencies: dependencies:
"@typescript-eslint/scope-manager" "5.12.0" "@typescript-eslint/scope-manager" "5.14.0"
"@typescript-eslint/types" "5.12.0" "@typescript-eslint/types" "5.14.0"
"@typescript-eslint/typescript-estree" "5.12.0" "@typescript-eslint/typescript-estree" "5.14.0"
debug "^4.3.2" debug "^4.3.2"
"@typescript-eslint/scope-manager@5.12.0": "@typescript-eslint/scope-manager@5.14.0":
version "5.12.0" version "5.14.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.12.0.tgz#59619e6e5e2b1ce6cb3948b56014d3a24da83f5e" resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.14.0.tgz#ea518962b42db8ed0a55152ea959c218cb53ca7b"
integrity sha512-GAMobtIJI8FGf1sLlUWNUm2IOkIjvn7laFWyRx7CLrv6nLBI7su+B7lbStqVlK5NdLvHRFiJo2HhiDF7Ki01WQ== integrity sha512-LazdcMlGnv+xUc5R4qIlqH0OWARyl2kaP8pVCS39qSL3Pd1F7mI10DbdXeARcE62sVQE4fHNvEqMWsypWO+yEw==
dependencies: dependencies:
"@typescript-eslint/types" "5.12.0" "@typescript-eslint/types" "5.14.0"
"@typescript-eslint/visitor-keys" "5.12.0" "@typescript-eslint/visitor-keys" "5.14.0"
"@typescript-eslint/types@5.12.0": "@typescript-eslint/types@5.14.0":
version "5.12.0" version "5.14.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.12.0.tgz#5b4030a28222ee01e851836562c07769eecda0b8" resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.14.0.tgz#96317cf116cea4befabc0defef371a1013f8ab11"
integrity sha512-JowqbwPf93nvf8fZn5XrPGFBdIK8+yx5UEGs2QFAYFI8IWYfrzz+6zqlurGr2ctShMaJxqwsqmra3WXWjH1nRQ== integrity sha512-BR6Y9eE9360LNnW3eEUqAg6HxS9Q35kSIs4rp4vNHRdfg0s+/PgHgskvu5DFTM7G5VKAVjuyaN476LCPrdA7Mw==
"@typescript-eslint/typescript-estree@5.12.0": "@typescript-eslint/typescript-estree@5.14.0":
version "5.12.0" version "5.14.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.12.0.tgz#cabf545fd592722f0e2b4104711e63bf89525cd2" resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.14.0.tgz#78b7f7385d5b6f2748aacea5c9b7f6ae62058314"
integrity sha512-Dd9gVeOqt38QHR0BEA8oRaT65WYqPYbIc5tRFQPkfLquVEFPD1HAtbZT98TLBkEcCkvwDYOAvuSvAD9DnQhMfQ== integrity sha512-QGnxvROrCVtLQ1724GLTHBTR0lZVu13izOp9njRvMkCBgWX26PKvmMP8k82nmXBRD3DQcFFq2oj3cKDwr0FaUA==
dependencies: dependencies:
"@typescript-eslint/types" "5.12.0" "@typescript-eslint/types" "5.14.0"
"@typescript-eslint/visitor-keys" "5.12.0" "@typescript-eslint/visitor-keys" "5.14.0"
debug "^4.3.2" debug "^4.3.2"
globby "^11.0.4" globby "^11.0.4"
is-glob "^4.0.3" is-glob "^4.0.3"
semver "^7.3.5" semver "^7.3.5"
tsutils "^3.21.0" tsutils "^3.21.0"
"@typescript-eslint/visitor-keys@5.12.0": "@typescript-eslint/visitor-keys@5.14.0":
version "5.12.0" version "5.14.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.12.0.tgz#1ac9352ed140b07ba144ebf371b743fdf537ec16" resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.14.0.tgz#1927005b3434ccd0d3ae1b2ecf60e65943c36986"
integrity sha512-cFwTlgnMV6TgezQynx2c/4/tx9Tufbuo9LPzmWqyRC3QC4qTGkAG1C6pBr0/4I10PAI/FlYunI3vJjIcu+ZHMg== integrity sha512-yL0XxfzR94UEkjBqyymMLgCBdojzEuy/eim7N9/RIcTNxpJudAcqsU8eRyfzBbcEzGoPWfdM3AGak3cN08WOIw==
dependencies: dependencies:
"@typescript-eslint/types" "5.12.0" "@typescript-eslint/types" "5.14.0"
eslint-visitor-keys "^3.0.0" eslint-visitor-keys "^3.0.0"
aggregate-error@^3.0.0: aggregate-error@^3.0.0:
@ -4182,10 +4182,10 @@ typedarray@^0.0.6:
resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=
typescript@4.5.5: typescript@4.6.2:
version "4.5.5" version "4.6.2"
resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.5.5.tgz#d8c953832d28924a9e3d37c73d729c846c5896f3" resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.6.2.tgz#fe12d2727b708f4eef40f51598b3398baa9611d4"
integrity sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA== integrity sha512-HM/hFigTBHZhLXshn9sN37H085+hQGeJHJ/X7LpBWLID/fbc2acUMfU+lGD98X81sKP+pFa9f0DZmCwB9GnbAg==
unc-path-regex@^0.1.2: unc-path-regex@^0.1.2:
version "0.1.2" version "0.1.2"