diff --git a/.github/ISSUE_TEMPLATE/01_bug-report.md b/.github/ISSUE_TEMPLATE/01_bug-report.md index 019f8c739..8734fc0c3 100644 --- a/.github/ISSUE_TEMPLATE/01_bug-report.md +++ b/.github/ISSUE_TEMPLATE/01_bug-report.md @@ -16,11 +16,11 @@ First, in order to avoid duplicate Issues, please search to see if the problem y -## 🙂 Expected Behavior +## đŸĨ° Expected Behavior -## ☚ī¸ Actual Behavior +## đŸ¤Ŧ Actual Behavior @@ -33,3 +33,7 @@ First, in order to avoid duplicate Issues, please search to see if the problem y ## 📌 Environment + +Misskey version: +Your OS: +Your browser: diff --git a/CHANGELOG.md b/CHANGELOG.md index 481295b6a..65f5e0194 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,18 +7,26 @@ --> -## 12.x.x (unreleased) - -### Improvements +## 12.103.1 (2022/02/02) ### Bugfixes -- 投į¨ŋぎNSFWį”ģåƒã‚’čĄ¨į¤ēしたあとãĢãƒĒã‚ĸã‚¯ã‚ˇãƒ§ãƒŗが更新されるとį”ģåƒãŒéžčĄ¨į¤ēãĢãĒã‚‹å•éĄŒã‚’äŋŽæ­Ŗ -- 「クãƒĒップ」ペãƒŧジが開かãĒã„å•éĄŒã‚’äŋŽæ­Ŗ -- トãƒŦãƒŗドã‚Ļã‚Ŗジェットが動äŊœã—ãĒいぎをäŋŽæ­Ŗ -- フェデãƒŦãƒŧã‚ˇãƒ§ãƒŗã‚Ļã‚Ŗジェットが動äŊœã—ãĒいぎをäŋŽæ­Ŗ -- ãƒĒã‚ĸã‚¯ã‚ˇãƒ§ãƒŗč¨­åŽšã§įĩĩ文字ピッã‚Ģãƒŧが開かãĒいぎをäŋŽæ­Ŗ -- DMペãƒŧã‚¸ã§ãƒĄãƒŗã‚ˇãƒ§ãƒŗがåĢãžã‚Œã‚‹å•éĄŒã‚’äŋŽæ­Ŗ -- 投į¨ŋフりãƒŧãƒ ãŽãƒãƒƒã‚ˇãƒĨã‚ŋグäŋæŒãƒ•ã‚ŖãƒŧãƒĢドが動äŊœã—ãĒã„å•éĄŒã‚’äŋŽæ­Ŗ +- クナイã‚ĸãƒŗト: ツãƒŧãƒĢãƒãƒƒãƒ—ãŽčĄ¨į¤ēäŊįŊŽãŒæ­ŖしくãĒã„å•éĄŒã‚’äŋŽæ­Ŗ + +## 12.103.0 (2022/02/02) + +### Improvements +- クナイã‚ĸãƒŗト: é€Ŗ合イãƒŗã‚šã‚ŋãƒŗ゚ペãƒŧジからイãƒŗã‚šã‚ŋãƒŗã‚šæƒ…å ąå†å–åž—ã‚’čĄŒãˆã‚‹ã‚ˆã†ãĢ + +### Bugfixes +- クナイã‚ĸãƒŗト: 投į¨ŋぎNSFWį”ģåƒã‚’čĄ¨į¤ēしたあとãĢãƒĒã‚ĸã‚¯ã‚ˇãƒ§ãƒŗが更新されるとį”ģåƒãŒéžčĄ¨į¤ēãĢãĒã‚‹å•éĄŒã‚’äŋŽæ­Ŗ +- クナイã‚ĸãƒŗト: 「クãƒĒップ」ペãƒŧジが開かãĒã„å•éĄŒã‚’äŋŽæ­Ŗ +- クナイã‚ĸãƒŗト: トãƒŦãƒŗドã‚Ļã‚Ŗジェットが動äŊœã—ãĒいぎをäŋŽæ­Ŗ +- クナイã‚ĸãƒŗト: フェデãƒŦãƒŧã‚ˇãƒ§ãƒŗã‚Ļã‚Ŗジェットが動äŊœã—ãĒいぎをäŋŽæ­Ŗ +- クナイã‚ĸãƒŗト: ãƒĒã‚ĸã‚¯ã‚ˇãƒ§ãƒŗč¨­åŽšã§įĩĩ文字ピッã‚Ģãƒŧが開かãĒいぎをäŋŽæ­Ŗ +- クナイã‚ĸãƒŗト: DMペãƒŧã‚¸ã§ãƒĄãƒŗã‚ˇãƒ§ãƒŗがåĢãžã‚Œã‚‹å•éĄŒã‚’äŋŽæ­Ŗ +- クナイã‚ĸãƒŗト: 投į¨ŋフりãƒŧãƒ ãŽãƒãƒƒã‚ˇãƒĨã‚ŋグäŋæŒãƒ•ã‚ŖãƒŧãƒĢドが動äŊœã—ãĒã„å•éĄŒã‚’äŋŽæ­Ŗ +- クナイã‚ĸãƒŗト: ã‚ĩイドビãƒĨãƒŧが動かãĒいぎをäŋŽæ­Ŗ +- クナイã‚ĸãƒŗト: ensure that specified users does not get duplicates - Add `img-src` and `media-src` directives to `Content-Security-Policy` for files and media proxy diff --git a/locales/bn-BD.yml b/locales/bn-BD.yml index ed97d539c..02f18cd1e 100644 --- a/locales/bn-BD.yml +++ b/locales/bn-BD.yml @@ -1 +1,510 @@ --- +_lang_: "āĻŦāĻžāĻ‚āĻ˛āĻž" +headlineMisskey: "āĻ¨ā§‹āĻŸ āĻŦā§āĻ¯āĻžāĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻ¸āĻ‚āĻ¯ā§āĻ•ā§āĻ¤ āĻ¨ā§‡āĻŸāĻ“ā§ŸāĻžāĻ°ā§āĻ•" +introMisskey: "āĻ¸ā§āĻŦāĻžāĻ—āĻ¤āĻŽ! āĻŽāĻŋāĻ¸āĻ•āĻŋ āĻāĻ•āĻŸāĻŋ āĻ“āĻĒā§‡āĻ¨ āĻ¸ā§‹āĻ°ā§āĻ¸, āĻĄāĻŋāĻ¸ā§‡āĻ¨ā§āĻŸā§āĻ°āĻžāĻ˛āĻžāĻ‡āĻœāĻĄ āĻŽāĻžāĻ‡āĻ•ā§āĻ°ā§‹āĻŦā§āĻ˛āĻ—āĻŋāĻ‚ āĻĒāĻ°āĻŋāĻˇā§‡āĻŦāĻžāĨ¤ \n\"āĻ¨ā§‹āĻŸ\" āĻ¤ā§ˆāĻ°āĻŋāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ āĻ¯āĻž āĻ˜āĻŸāĻ›ā§‡ āĻ¤āĻž āĻ¸āĻŦāĻžāĻ° āĻ¸āĻžāĻĨā§‡ āĻļā§‡ā§ŸāĻžāĻ° āĻ•āĻ°ā§āĻ¨ 📡\n\"āĻ°āĻŋāĻ…ā§āĻ¯āĻžāĻ•āĻļāĻ¨\" āĻ—ā§āĻ˛āĻŋāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ āĻ¯ā§‡āĻ•ā§‹āĻ¨ā§‹ āĻ¨ā§‹āĻŸ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻ†āĻĒāĻ¨āĻžāĻ° āĻ…āĻ¨ā§āĻ­ā§‚āĻ¤āĻŋ āĻŦā§āĻ¯āĻžāĻ•ā§āĻ¤ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨ 👍\nāĻāĻ•āĻŸāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻĻā§āĻ¨āĻŋā§ŸāĻž āĻ˜ā§āĻ°ā§‡ āĻĻā§‡āĻ–ā§āĻ¨ 🚀\n" +monthAndDay: "{day}/{month}" +search: "āĻ–ā§āĻāĻœā§āĻ¨" +notifications: "āĻŦāĻŋāĻœā§āĻžāĻĒā§āĻ¤āĻŋ" +username: "āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€āĻ° āĻ¨āĻžāĻŽ" +password: "āĻĒāĻžāĻ¸āĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻĄ" +forgotPassword: "āĻĒāĻžāĻ¸āĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻĄ āĻ­ā§āĻ˛ā§‡ āĻ—ā§‡āĻ›ā§‡āĻ¨" +fetchingAsApObject: "āĻĢā§‡āĻĄāĻŋāĻ­āĻžāĻ°ā§āĻ¸ āĻĨā§‡āĻ•ā§‡ āĻ–āĻŦāĻ° āĻ†āĻ¨āĻž āĻšāĻšā§āĻ›ā§‡..." +ok: "āĻ āĻŋāĻ•" +gotIt: "āĻŦā§āĻā§‡āĻ›āĻŋ" +cancel: "āĻŦāĻžāĻ¤āĻŋāĻ˛" +enterUsername: "āĻ‡āĻ‰āĻœāĻžāĻ°āĻ¨ā§‡āĻŽ āĻ˛āĻŋāĻ–ā§āĻ¨" +renotedBy: "{user} āĻ°āĻŋāĻ¨ā§‹āĻŸ āĻ•āĻ°ā§‡āĻ›ā§‡āĻ¨" +noNotes: "āĻ•ā§‹āĻ¨ āĻ¨ā§‹āĻŸ āĻ¨ā§‡āĻ‡" +noNotifications: "āĻ•ā§‹āĻ¨ā§‹ āĻŦāĻŋāĻœā§āĻžāĻĒā§āĻ¤āĻŋ āĻ¨ā§‡āĻ‡" +instance: "āĻ‡āĻ¨ā§āĻ¸āĻŸā§āĻ¯āĻžāĻ¨ā§āĻ¸" +settings: "āĻ¸ā§‡āĻŸāĻŋāĻ‚āĻ¸" +basicSettings: "āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻ¸ā§‡āĻŸāĻŋāĻ‚āĻ¸" +otherSettings: "āĻ…āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻ¸ā§‡āĻŸāĻŋāĻ‚āĻ¸" +openInWindow: "āĻ¨āĻ¤ā§āĻ¨ āĻ‰āĻ‡āĻ¨ā§āĻĄā§‹āĻ¤ā§‡ āĻ–ā§āĻ˛āĻž" +profile: "āĻĒā§āĻ°ā§‹āĻĢāĻžāĻ‡āĻ˛" +timeline: "āĻŸāĻžāĻ‡āĻŽāĻ˛āĻžāĻ‡āĻ¨" +noAccountDescription: "āĻāĻ‡ āĻŦā§āĻ¯āĻžāĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€āĻ° āĻ•ā§‹āĻ¨ āĻŦāĻžā§Ÿā§‹ āĻ¨ā§‡āĻ‡" +login: "āĻĒā§āĻ°āĻŦā§‡āĻļ āĻ•āĻ°ā§āĻ¨" +loggingIn: "āĻĒā§āĻ°āĻŦā§‡āĻļ āĻ•āĻ°āĻž āĻšāĻšā§āĻ›ā§‡..." +logout: "āĻ˛āĻ—āĻ†āĻ‰āĻŸ" +signup: "āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻ¨ āĻ•āĻ°ā§āĻ¨" +uploading: "āĻ†āĻĒāĻ˛ā§‹āĻĄ āĻšāĻšā§āĻ› â€Ļ" +save: "āĻ¸āĻ‚āĻ°āĻ•ā§āĻˇāĻŖ" +users: "āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€āĻ—āĻŖ" +addUser: "āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€ āĻ¯ā§‹āĻ— āĻ•āĻ°ā§āĻ¨" +favorite: "āĻĒāĻ›āĻ¨ā§āĻĻ" +favorites: "āĻĒāĻ›āĻ¨ā§āĻĻāĻ—ā§āĻ˛āĻŋ" +unfavorite: "āĻĒāĻ›āĻ¨ā§āĻĻ āĻ¨āĻž" +favorited: "āĻĒāĻ›āĻ¨ā§āĻĻ āĻ•āĻ°āĻž āĻšā§Ÿā§‡āĻ›ā§‡" +alreadyFavorited: "āĻ‡āĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§‡ āĻĒāĻ›āĻ¨ā§āĻĻ āĻ•āĻ°āĻž āĻšā§Ÿā§‡āĻ›ā§‡" +cantFavorite: "āĻĒāĻ›āĻ¨ā§āĻĻ āĻ•āĻ°āĻž āĻ¯āĻžā§ŸāĻ¨āĻŋ" +pin: "āĻĒāĻŋāĻ¨ āĻ•āĻ°āĻž" +unpin: "āĻĒāĻŋāĻ¨ āĻ¸āĻ°āĻžāĻ¨" +copyContent: "āĻŦāĻŋāĻˇā§ŸāĻŦāĻ¸ā§āĻ¤ā§ āĻ•āĻĒāĻŋ āĻ•āĻ°ā§āĻ¨" +copyLink: "āĻ˛āĻŋāĻ™ā§āĻ• āĻ•āĻĒāĻŋ āĻ•āĻ°ā§āĻ¨" +delete: "āĻŽā§āĻ›ā§āĻ¨" +deleteAndEdit: "āĻŽā§āĻ›ā§āĻ¨ āĻāĻŦāĻ‚ āĻ¸āĻŽā§āĻĒāĻžāĻĻāĻ¨āĻž āĻ•āĻ°ā§āĻ¨" +deleteAndEditConfirm: "āĻ†āĻĒāĻ¨āĻŋ āĻ•āĻŋ āĻāĻ‡ āĻ¨ā§‹āĻŸāĻŸāĻŋ āĻŽā§āĻ›ā§‡ āĻāĻŸāĻŋ āĻ¸āĻŽā§āĻĒāĻžāĻĻāĻ¨āĻž āĻ•āĻ°āĻžāĻ° āĻŦāĻŋāĻˇāĻ¯āĻŧā§‡ āĻ¨āĻŋāĻļā§āĻšāĻŋāĻ¤? āĻ†āĻĒāĻ¨āĻŋ āĻāĻŸāĻŋāĻ° āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ°āĻŋāĻ…ā§āĻ¯āĻžāĻ•āĻļāĻ¨, āĻ°āĻŋāĻ¨ā§‹āĻŸ āĻāĻŦāĻ‚ āĻœāĻŦāĻžāĻŦ āĻšāĻžāĻ°āĻžāĻŦā§‡āĻ¨āĨ¤" +addToList: "āĻ˛āĻŋāĻ¸ā§āĻŸ āĻ āĻ¯ā§‹āĻ— āĻ•āĻ°ā§āĻ¨" +sendMessage: "āĻāĻ•āĻŸāĻŋ āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻĒāĻžāĻ āĻžāĻ¨" +copyUsername: "āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€āĻ° āĻ¨āĻžāĻŽ āĻ•āĻĒāĻŋ āĻ•āĻ°ā§āĻ¨" +searchUser: "āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€ āĻ–ā§āĻāĻœā§āĻ¨..." +reply: "āĻœāĻŦāĻžāĻŦ" +loadMore: "āĻ†āĻ°āĻ“ āĻĻā§‡āĻ–ā§āĻ¨" +showMore: "āĻ†āĻ°āĻ“ āĻĻā§‡āĻ–ā§āĻ¨" +youGotNewFollower: "āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻ…āĻ¨ā§āĻ¸āĻ°āĻŖ āĻ•āĻ°āĻ›ā§‡" +receiveFollowRequest: "āĻ…āĻ¨ā§āĻ¸āĻ°āĻŖ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ…āĻ¨ā§āĻ°ā§‹āĻ§ āĻĒāĻžāĻ“ā§ŸāĻž āĻ—ā§‡āĻ›ā§‡" +followRequestAccepted: "āĻ…āĻ¨ā§āĻ¸āĻ°āĻŖ āĻ•āĻ°āĻžāĻ° āĻ…āĻ¨ā§āĻ°ā§‹āĻ§ āĻ—ā§ƒāĻšā§€āĻ¤ āĻšā§Ÿā§‡āĻ›ā§‡" +mention: "āĻ‰āĻ˛ā§āĻ˛ā§‡āĻ–" +mentions: "āĻ‰āĻ˛ā§āĻ˛ā§‡āĻ–āĻ¸āĻŽā§‚āĻš" +directNotes: "āĻĄāĻžāĻ‡āĻ°ā§‡āĻ•ā§āĻŸ āĻ¨ā§‹āĻŸāĻ—ā§āĻ˛āĻŋ" +importAndExport: "āĻ†āĻŽāĻĻāĻžāĻ¨āĻŋ āĻāĻŦāĻ‚ āĻ°āĻĒā§āĻ¤āĻžāĻ¨āĻŋ" +import: "āĻ†āĻŽāĻĻāĻžāĻ¨āĻŋ āĻ•āĻ°ā§āĻŖ" +export: "āĻ°āĻĒā§āĻ¤āĻžāĻ¨āĻŋ" +files: "āĻĢāĻžāĻ‡āĻ˛āĻ—ā§āĻ˛āĻŋ" +download: "āĻĄāĻžāĻ‰āĻ¨āĻ˛ā§‹āĻĄ" +driveFileDeleteConfirm: "āĻ†āĻĒāĻ¨āĻŋ āĻ•āĻŋ āĻ¨āĻŋāĻļā§āĻšāĻŋāĻ¤ āĻ¯ā§‡ āĻ†āĻĒāĻ¨āĻŋ \"{name}\" āĻĄāĻŋāĻ˛āĻŋāĻŸ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻžāĻ¨? āĻ¯ā§‡ āĻ¸āĻ•āĻ˛ āĻ¨ā§‹āĻŸā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻāĻ‡ āĻĢāĻžāĻ‡āĻ˛āĻŸāĻŋ āĻ¸āĻ‚āĻ¯ā§āĻ•ā§āĻ¤ āĻ¸ā§‡āĻ—ā§āĻ˛ā§‹āĻ“ āĻĄāĻŋāĻ˛āĻŋāĻŸ āĻ•āĻ°āĻž āĻšāĻŦā§‡āĨ¤" +unfollowConfirm: "{name} āĻ•ā§‡ āĻ†āĻ¨āĻĢāĻ˛ā§‹āĻ“ āĻ•āĻ°āĻžāĻ° āĻŦā§āĻ¯āĻžāĻĒāĻžāĻ°ā§‡ āĻ¨āĻŋāĻļā§āĻšāĻŋāĻ¤?" +exportRequested: "āĻ†āĻĒāĻ¨āĻžāĻ° āĻ¤āĻĨā§āĻ¯āĻ¸āĻŽā§‚āĻš āĻ°āĻĒā§āĻ¤āĻžāĻ¨āĻŋāĻ° āĻœāĻ¨ā§āĻ¯ āĻ…āĻ¨ā§āĻ°ā§‹āĻ§ āĻ•āĻ°ā§‡āĻ›ā§‡āĻ¨āĨ¤ āĻāĻ¤ā§‡ āĻ•āĻŋāĻ›ā§ āĻ¸āĻŽā§Ÿ āĻ˛āĻžāĻ—āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤ āĻ°āĻĒā§āĻ¤āĻžāĻ¨āĻŋ āĻ¸āĻŽā§āĻĒāĻ¨ā§āĻ¨ āĻšāĻ˛ā§‡ āĻ¤āĻž āĻ†āĻĒāĻ¨āĻžāĻ° āĻĄā§āĻ°āĻžāĻ‡āĻ­ā§‡ āĻ¸āĻ‚āĻ°āĻ•ā§āĻˇāĻŋāĻ¤ āĻšāĻŦā§‡āĨ¤" +importRequested: "āĻ†āĻĒāĻ¨āĻžāĻ° āĻ¤āĻĨā§āĻ¯āĻ¸āĻŽā§‚āĻš āĻ†āĻŽāĻĻāĻžāĻ¨āĻŋāĻ° āĻœāĻ¨ā§āĻ¯ āĻ…āĻ¨ā§āĻ°ā§‹āĻ§ āĻ•āĻ°ā§‡āĻ›ā§‡āĻ¨āĨ¤ āĻāĻ¤ā§‡ āĻ•āĻŋāĻ›ā§ āĻ¸āĻŽā§Ÿ āĻ˛āĻžāĻ—āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤ " +lists: "āĻ˛āĻŋāĻ¸ā§āĻŸ" +noLists: "āĻ•ā§‹āĻ¨ āĻ˛āĻŋāĻ¸ā§āĻŸ āĻ¨ā§‡āĻ‡" +note: "āĻ¨ā§‹āĻŸ" +notes: "āĻ¨ā§‹āĻŸāĻ—ā§āĻ˛āĻŋ" +following: "āĻ…āĻ¨ā§āĻ¸āĻ°āĻŖ āĻ•āĻ°āĻž āĻšāĻšā§āĻ›ā§‡" +followers: "āĻ…āĻ¨ā§āĻ¸āĻ°āĻŖāĻ•āĻžāĻ°ā§€" +followsYou: "āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻ…āĻ¨ā§āĻ¸āĻ°āĻŖ āĻ•āĻ°ā§‡" +createList: "āĻ˛āĻŋāĻ¸ā§āĻŸ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°ā§āĻ¨" +manageLists: "āĻ˛āĻŋāĻ¸ā§āĻŸ āĻŦā§āĻ¯āĻžāĻŦāĻ¸ā§āĻĨāĻžāĻĒāĻ¨āĻž" +error: "āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž" +somethingHappened: "āĻāĻ•āĻŸāĻŋ āĻ¤ā§āĻ°ā§āĻŸāĻŋ āĻšāĻ¯āĻŧā§‡āĻ›ā§‡" +retry: "āĻ†āĻŦāĻžāĻ° āĻšā§‡āĻˇā§āĻŸāĻž āĻ•āĻ°ā§āĻ¨" +pageLoadError: "āĻĒā§‡āĻœ āĻ˛ā§‹āĻĄ āĻ•āĻ°āĻž āĻ¯āĻžā§ŸāĻ¨āĻŋ" +pageLoadErrorDescription: "āĻāĻŸāĻŋ āĻ¸āĻžāĻ§āĻžāĻ°āĻ¨āĻ¤ āĻ¨ā§‡āĻŸāĻ“ā§ŸāĻžāĻ°ā§āĻ•ā§‡āĻ° āĻ¸āĻŽāĻ¸ā§āĻ¯āĻžāĻ° āĻŦāĻž āĻŦā§āĻ°āĻžāĻ‰āĻœāĻžāĻ° āĻ•ā§āĻ¯āĻžāĻļā§‡āĻ° āĻ•āĻžāĻ°āĻŖā§‡ āĻ˜āĻŸā§‡ āĻĨāĻžāĻ•ā§‡āĨ¤ āĻŦā§āĻ°āĻžāĻ‰āĻœāĻžāĻ° āĻāĻ° āĻ•ā§āĻ¯āĻžāĻļ āĻĒāĻ°āĻŋāĻˇā§āĻ•āĻžāĻ° āĻ•āĻ°ā§āĻ¨ āĻāĻŦāĻ‚ āĻāĻ•āĻŸā§ āĻĒāĻ° āĻ†āĻŦāĻžāĻ° āĻšā§‡āĻˇā§āĻŸāĻž āĻ•āĻ°ā§āĻ¨āĨ¤ " +serverIsDead: "āĻāĻ‡ āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ° āĻŦāĻ°ā§āĻ¤āĻŽāĻžāĻ¨ā§‡ āĻ¸āĻžā§œāĻž āĻĻāĻŋāĻšā§āĻ›ā§‡ āĻ¨āĻžāĨ¤ āĻāĻ•āĻŸā§ āĻĒāĻ°ā§‡ āĻ†āĻŦāĻžāĻ° āĻšā§‡āĻˇā§āĻŸāĻž āĻ•āĻ°ā§āĻ¨āĨ¤" +youShouldUpgradeClient: "āĻāĻ‡ āĻĒā§‡āĻœ āĻĻā§‡āĻ–āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ†āĻĒāĻ¨āĻžāĻ° āĻŦā§āĻ°āĻžāĻ‰āĻœāĻžāĻ° āĻ°āĻŋāĻĢā§āĻ°ā§‡āĻļ āĻ•āĻ°ā§‡ āĻ•ā§āĻ˛āĻžā§Ÿā§‡āĻ¨ā§āĻŸ āĻ†āĻĒāĻĄā§‡āĻŸ āĻ•āĻ°ā§āĻ¨āĨ¤ " +enterListName: "āĻ˛āĻŋāĻ¸ā§āĻŸā§‡āĻ° āĻ¨āĻžāĻŽ āĻ˛āĻŋāĻ–ā§āĻ¨" +privacy: "āĻ—ā§‹āĻĒāĻ¨ā§€ā§ŸāĻ¤āĻž" +makeFollowManuallyApprove: "āĻ…āĻ¨ā§āĻ¸āĻ°āĻŖ āĻ•āĻ°āĻžāĻ° āĻ…āĻ¨ā§āĻ°ā§‹āĻ§āĻ—ā§āĻ˛āĻŋ āĻ—ā§ƒāĻšā§€āĻ¤ āĻšāĻ“ā§ŸāĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ†āĻĒāĻ¨āĻžāĻ° āĻ…āĻ¨ā§āĻŽāĻ¤āĻŋ āĻ˛āĻžāĻ—āĻŦā§‡" +defaultNoteVisibility: "āĻĄāĻŋāĻĢāĻ˛ā§āĻŸ āĻĻā§ƒāĻļā§āĻ¯āĻŽāĻžāĻ¨ā§āĻ¯āĻ¤āĻž" +follow: "āĻ…āĻ¨ā§āĻ¸āĻ°āĻŖ" +followRequest: "āĻ…āĻ¨ā§āĻ¸āĻ°āĻŖ āĻ•āĻ°āĻžāĻ° āĻ…āĻ¨ā§āĻ°ā§‹āĻ§" +followRequests: "āĻ…āĻ¨ā§āĻ¸āĻ°āĻŖ āĻ•āĻ°āĻžāĻ° āĻ…āĻ¨ā§āĻ°ā§‹āĻ§āĻ¸āĻŽā§‚āĻš" +unfollow: "āĻ…āĻ¨ā§āĻ¸āĻ°āĻŖ āĻŦāĻžāĻ¤āĻŋāĻ˛" +followRequestPending: "āĻ…āĻ¨ā§āĻ¸āĻ°āĻŖ āĻ•āĻ°āĻžāĻ° āĻ…āĻ¨ā§āĻ°ā§‹āĻ§ āĻŦāĻŋāĻšāĻžāĻ°āĻžāĻ§ā§€āĻ¨" +enterEmoji: "āĻ‡āĻŽā§‹āĻœāĻŋ āĻĒā§āĻ°āĻŦā§‡āĻļ āĻ•āĻ°āĻžāĻ¨" +renote: "āĻ°āĻŋāĻ¨ā§‹āĻŸ" +unrenote: "āĻ°āĻŋāĻ¨ā§‹āĻŸ āĻ¸āĻ°āĻžāĻ¨ " +renoted: "āĻ°āĻŋāĻ¨ā§‹āĻŸ āĻ•āĻ°āĻž āĻšā§Ÿā§‡āĻ›ā§‡" +cantRenote: "āĻāĻ‡ āĻ¨ā§‹āĻŸāĻŸāĻŋ āĻ°āĻŋāĻ¨ā§‹āĻŸ āĻ•āĻ°āĻž āĻ¯āĻžāĻŦā§‡ āĻ¨āĻžāĨ¤" +cantReRenote: "āĻ°āĻŋāĻ¨ā§‹āĻŸāĻ•ā§‡ āĻ°āĻŋāĻ¨ā§‹āĻŸ āĻ•āĻ°āĻž āĻ¯āĻžāĻŦā§‡ āĻ¨āĻžāĨ¤" +quote: "āĻ‰āĻĻā§āĻ§ā§ƒāĻ¤āĻŋ" +pinnedNote: "āĻĒāĻŋāĻ¨ āĻ•āĻ°āĻž āĻ¨ā§‹āĻŸ" +pinned: "āĻĒāĻŋāĻ¨ āĻ•āĻ°āĻž" +you: "āĻ†āĻĒāĻ¨āĻŋ" +clickToShow: "āĻĻā§‡āĻ–āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ•ā§āĻ˛āĻŋāĻ• āĻ•āĻ°ā§āĻ¨" +sensitive: "āĻ¸āĻ‚āĻŦā§‡āĻĻāĻ¨āĻļā§€āĻ˛ āĻŦāĻŋāĻˇā§ŸāĻŦāĻ¸ā§āĻ¤ā§" +add: "āĻ¯ā§āĻ•ā§āĻ¤ āĻ•āĻ°ā§āĻ¨" +reaction: "āĻĒā§āĻ°āĻ¤āĻŋāĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻž" +reactionSetting: "āĻ°āĻŋāĻ…ā§āĻ¯āĻžāĻ•āĻļāĻ¨ āĻĒāĻŋāĻ•āĻžāĻ°ā§‡ āĻ¯ā§‡āĻ¸āĻ•āĻ˛ āĻĒā§āĻ°āĻ¤āĻŋāĻ•ā§āĻ°āĻŋā§ŸāĻž āĻĻā§‡āĻ–āĻžāĻ¨ā§‹ āĻšāĻŦā§‡" +reactionSettingDescription2: "āĻĒā§āĻ¨āĻ°āĻžāĻ¯āĻŧ āĻ¸āĻžāĻœāĻžāĻ¤ā§‡ āĻŸā§‡āĻ¨ā§‡ āĻ†āĻ¨ā§āĻ¨, āĻŽā§āĻ›āĻ¤ā§‡ āĻ•ā§āĻ˛āĻŋāĻ• āĻ•āĻ°ā§āĻ¨, āĻ¯ā§‹āĻ— āĻ•āĻ°āĻ¤ā§‡ + āĻŸāĻŋāĻĒā§āĻ¨āĨ¤" +rememberNoteVisibility: "āĻ¨ā§‹āĻŸā§‡āĻ° āĻĻā§ƒāĻļā§āĻ¯āĻŽāĻžāĻ¨ā§āĻ¯āĻ¤āĻžāĻ° āĻ¸ā§‡āĻŸāĻŋāĻ‚āĻ¸ āĻŽāĻ¨ā§‡ āĻ°āĻžāĻ–ā§āĻ¨" +attachCancel: "āĻ…ā§āĻ¯āĻžāĻŸāĻžāĻšāĻŽā§‡āĻ¨ā§āĻŸ āĻ¸āĻ°āĻžāĻ¨ " +markAsSensitive: "āĻ¸āĻ‚āĻŦā§‡āĻĻāĻ¨āĻļā§€āĻ˛ āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻšāĻŋāĻšā§āĻ¨āĻŋāĻ¤ āĻ•āĻ°ā§āĻ¨" +unmarkAsSensitive: "āĻ¸āĻ‚āĻŦā§‡āĻĻāĻ¨āĻļā§€āĻ˛ āĻšāĻŋāĻšā§āĻ¨ āĻ¸āĻ°āĻžāĻ¨" +enterFileName: "āĻĢāĻžāĻ‡āĻ˛ā§‡āĻ° āĻ¨āĻžāĻŽ āĻ˛āĻŋāĻ–ā§āĻ¨" +mute: "āĻŽāĻŋāĻ‰āĻŸ" +unmute: "āĻ†āĻ¨āĻŽāĻŋāĻ‰āĻŸ" +block: "āĻŦā§āĻ˛āĻ•" +unblock: "āĻŦā§āĻ˛āĻ• āĻ¸āĻ°āĻžāĻ¨" +suspend: "āĻ¸ā§āĻĨāĻ—āĻŋāĻ¤ āĻ•āĻ°āĻž" +unsuspend: "āĻ…āĻ¸ā§āĻĨāĻ—āĻŋāĻ¤ āĻ•āĻ°āĻž" +blockConfirm: "āĻŦā§āĻ˛āĻ• āĻ•āĻ°āĻ¤ā§‡ āĻšāĻžāĻ¨?" +unblockConfirm: "āĻŦā§āĻ˛āĻ• āĻ¸āĻ°āĻžāĻ¤ā§‡ āĻšāĻžāĻ¨?" +suspendConfirm: "āĻ¸ā§āĻĨāĻ—āĻŋāĻ¤ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻžāĻ¨?" +unsuspendConfirm: "āĻ…āĻ¸ā§āĻĨāĻ—āĻŋāĻ¤ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻžāĻ¨?" +selectList: "āĻ˛āĻŋāĻ¸ā§āĻŸ āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻšāĻ¨ āĻ•āĻ°ā§āĻ¨" +selectAntenna: "āĻ…ā§āĻ¯āĻžāĻ¨ā§āĻŸā§‡āĻ¨āĻž āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻšāĻ¨ āĻ•āĻ°ā§āĻ¨" +selectWidget: "āĻ‰āĻ‡āĻœā§‡āĻŸ āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻšāĻ¨ āĻ•āĻ°ā§āĻ¨" +editWidgets: "āĻ‰āĻ‡āĻœā§‡āĻŸ āĻ¸āĻŽā§āĻĒāĻžāĻĻāĻ¨āĻž āĻ•āĻ°ā§āĻ¨" +editWidgetsExit: "āĻ¸āĻŽā§āĻĒāĻžāĻĻāĻ¨āĻž āĻļā§‡āĻˇ āĻ•āĻ°ā§āĻ¨" +customEmojis: "āĻ¸ā§āĻŦāĻ¨āĻŋāĻ°ā§āĻ§āĻžāĻ°āĻŋāĻ¤ āĻ‡āĻŽā§‹āĻœāĻŋāĻ—ā§āĻ˛āĻŋ" +emoji: "āĻ‡āĻŽā§‹āĻœāĻŋ" +emojis: "āĻ‡āĻŽā§‹āĻœāĻŋāĻ—ā§āĻ˛āĻŋ" +emojiName: "āĻ‡āĻŽā§‹āĻœāĻŋāĻ° āĻ¨āĻžāĻŽ" +emojiUrl: "āĻ‡āĻŽā§‹āĻœāĻŋāĻ° URL" +addEmoji: "āĻ‡āĻŽā§‹āĻœāĻŋ āĻ¯ā§āĻ•ā§āĻ¤ āĻ•āĻ°ā§āĻ¨" +settingGuide: "āĻ¸ā§āĻĒāĻžāĻ°āĻŋāĻļāĻ•ā§ƒāĻ¤ āĻ¸ā§‡āĻŸāĻŋāĻ‚āĻ¸" +cacheRemoteFiles: "āĻ°āĻŋāĻŽā§‹āĻŸ āĻĢāĻžāĻ‡āĻ˛āĻ¸āĻŽā§āĻš āĻ•ā§āĻ¯āĻžāĻļ āĻ•āĻ°ā§āĻ¨" +cacheRemoteFilesDescription: "āĻ¯āĻ–āĻ¨ āĻāĻ‡ āĻ…āĻĒāĻļāĻ¨āĻŸāĻŋ āĻŦāĻ¨ā§āĻ§ āĻĨāĻžāĻ•ā§‡ āĻ¤āĻ–āĻ¨ āĻ°āĻŋāĻŽā§‹āĻŸ āĻĢāĻžāĻ‡āĻ˛ āĻ¸āĻŽā§‚āĻš āĻ¸āĻ°āĻžāĻ¸āĻ°āĻŋ āĻ°āĻŋāĻŽā§‹āĻŸ āĻ‡āĻ¨ā§āĻ¸āĻŸā§āĻ¯āĻžāĻ¨ā§āĻ¸ āĻĨā§‡āĻ•ā§‡ āĻ˛ā§‹āĻĄ āĻ•āĻ°āĻž āĻšā§ŸāĨ¤ āĻāĻ‡ āĻ…āĻĒāĻļāĻ¨āĻŸāĻŋ āĻŦāĻ¨ā§āĻ§ āĻ•āĻ°āĻ˛ā§‡ āĻ¸ā§āĻŸā§‹āĻ°ā§‡āĻœ āĻāĻ° āĻŦā§āĻ¯āĻžāĻŦāĻšāĻžāĻ° āĻ•āĻŽāĻŦā§‡ āĻ¤āĻŦā§‡ āĻĨāĻžāĻŽā§āĻŦāĻ¨ā§‡āĻ‡āĻ˛ āĻ¤ā§ˆāĻ°āĻŋ āĻ¨āĻž āĻ•āĻ°āĻžāĻ° āĻ•āĻžāĻ°āĻŖā§‡ āĻ¨ā§‡āĻŸāĻ“ā§ŸāĻžāĻ°ā§āĻ• āĻŦā§āĻ¯āĻžāĻ¨ā§āĻĄāĻ‰āĻ‡āĻĨ āĻŦā§‡āĻļā§€ āĻ˛āĻžāĻ—āĻŦā§‡āĨ¤ " +flagAsBot: "āĻŦāĻŸ āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻšāĻŋāĻšā§āĻ¨āĻŋāĻ¤ āĻ•āĻ°ā§āĻ¨" +flagAsBotDescription: "āĻāĻ‡ āĻ…ā§āĻ¯āĻžāĻ•āĻžāĻ‰āĻ¨ā§āĻŸāĻŸāĻŋ āĻ¯āĻĻāĻŋ āĻāĻ•āĻŸāĻŋ āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽ āĻĻā§āĻŦāĻžāĻ°āĻž āĻĒāĻ°āĻŋāĻšāĻžāĻ˛āĻŋāĻ¤ āĻšāĻ¯āĻŧ, āĻ¤āĻžāĻšāĻ˛ā§‡ āĻāĻ‡ āĻ…āĻĒāĻļāĻ¨āĻŸāĻŋ āĻšāĻžāĻ˛ā§ āĻ•āĻ°ā§āĻ¨āĨ¤ āĻ‡āĻ¨ā§āĻŸāĻžāĻ°āĻ…ā§āĻ¯āĻžāĻ•āĻļāĻžāĻ¨ āĻšā§‡āĻ‡āĻ¨āĻŋāĻ‚ āĻ°ā§‹āĻ§ āĻ•āĻ°āĻ¤ā§‡, āĻŽāĻŋāĻ¸ā§āĻ•āĻŋāĻ° āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽ āĻĒāĻ°āĻŋāĻšāĻžāĻ˛āĻ¨āĻžāĻ•ā§‡ āĻŦāĻŸ-āĻŦāĻžāĻ¨ā§āĻ§āĻŦ āĻ•āĻ°āĻ¤ā§‡ āĻāĻŦāĻ‚ āĻ…āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻĄā§‡āĻ­ā§‡āĻ˛āĻĒāĻžāĻ°āĻĻā§‡āĻ° āĻ¸āĻžāĻšāĻžāĻ¯ā§āĻ¯ āĻ•āĻ°āĻ¤ā§‡ āĻ†āĻĒāĻ¨āĻžāĻ° āĻŦāĻŸ āĻ āĻāĻ‡ āĻ…āĻĒāĻļāĻ¨āĻŸāĻŋ āĻšāĻžāĻ˛ā§ āĻ•āĻ°ā§āĻ¨ā§ˇ" +flagAsCat: "āĻŦāĻŋā§œāĻžāĻ˛ āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻšāĻŋāĻšā§āĻ¨āĻŋāĻ¤ āĻ•āĻ°ā§āĻ¨" +flagAsCatDescription: "āĻ…ā§āĻ¯āĻžāĻ•āĻžāĻ‰āĻ¨ā§āĻŸāĻŸāĻŋāĻ•ā§‡ āĻŦāĻŋā§œāĻžāĻ˛ āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻšāĻŋāĻšā§āĻ¨āĻŋāĻ¤ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ…āĻĒāĻļāĻ¨āĻŸāĻŋ āĻšāĻžāĻ˛ā§ āĻ•āĻ°ā§āĻ¨āĨ¤" +autoAcceptFollowed: "āĻ†āĻĒāĻ¨āĻŋ āĻ¯ā§‡āĻ¸āĻŦ āĻ…ā§āĻ¯āĻžāĻ•āĻžāĻ‰āĻ¨ā§āĻŸ āĻ…āĻ¨ā§āĻ¸āĻ°āĻŖ āĻ•āĻ°ā§‡āĻ¨, āĻ¸ā§āĻŦā§ŸāĻ‚āĻ•ā§āĻ°āĻŋā§ŸāĻ­āĻžāĻŦā§‡ āĻ¤āĻžāĻĻā§‡āĻ° āĻ…āĻ¨ā§āĻ¸āĻ°āĻŖā§‡āĻ° āĻ…āĻ¨ā§āĻ°āĻ§ āĻ¸ā§āĻŦā§€āĻ•āĻžāĻ° āĻ•āĻ°ā§āĻ¨" +addAccount: "āĻ…ā§āĻ¯āĻžāĻ•āĻžāĻ‰āĻ¨ā§āĻŸ āĻ¯ā§‹āĻ— āĻ•āĻ°ā§āĻ¨" +loginFailed: "āĻĒā§āĻ°āĻŦā§‡āĻļ āĻ•āĻ°āĻž āĻ¯āĻžā§ŸāĻ¨āĻŋ" +showOnRemote: "āĻ°āĻŋāĻŽā§‹āĻŸ āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ°ā§‡ āĻĻā§‡āĻ–ā§āĻ¨" +general: "āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ" +wallpaper: "āĻ“āĻ¯āĻŧāĻžāĻ˛āĻĒā§‡āĻĒāĻžāĻ°" +setWallpaper: "āĻ“āĻ¯āĻŧāĻžāĻ˛āĻĒā§‡āĻĒāĻžāĻ° āĻ¸ā§‡āĻŸ āĻ•āĻ°ā§āĻ¨" +removeWallpaper: "āĻ“ā§ŸāĻžāĻ˛āĻĒā§‡āĻĒāĻžāĻ° āĻ¸āĻ°āĻžāĻ¨" +searchWith: "āĻ–ā§āĻāĻœā§āĻ¨: {q}" +youHaveNoLists: "āĻ†āĻĒāĻ¨āĻžāĻ° āĻ•ā§‹āĻ¨ āĻ˛āĻŋāĻ¸ā§āĻŸ āĻ¨ā§‡āĻ‡" +followConfirm: "{name} āĻ•ā§‡ āĻĢāĻ˛ā§‹āĻ“ āĻ•āĻ°āĻžāĻ° āĻŦā§āĻ¯āĻžāĻĒāĻžāĻ°ā§‡ āĻ¨āĻŋāĻļā§āĻšāĻŋāĻ¤?" +proxyAccount: "āĻĒā§āĻ°āĻ•ā§āĻ¸āĻŋ āĻ…ā§āĻ¯āĻžāĻ•āĻžāĻ‰āĻ¨ā§āĻŸ" +proxyAccountDescription: "āĻāĻ•āĻŸāĻŋ āĻĒā§āĻ°āĻ•ā§āĻ¸āĻŋ āĻ…ā§āĻ¯āĻžāĻ•āĻžāĻ‰āĻ¨ā§āĻŸ āĻāĻŽāĻ¨ āĻāĻ•āĻŸāĻŋ āĻ…ā§āĻ¯āĻžāĻ•āĻžāĻ‰āĻ¨ā§āĻŸ āĻ¯āĻž āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻļāĻ°ā§āĻ¤ā§‡ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€āĻĻā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ°āĻŋāĻŽā§‹āĻŸ āĻ…āĻ¨ā§āĻ¸āĻ°āĻŖāĻ•āĻžāĻ°ā§€ āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻ•āĻžāĻœ āĻ•āĻ°ā§‡āĨ¤ āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§‚āĻĒ, āĻ¯āĻ–āĻ¨ āĻāĻ•āĻœāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€ āĻāĻ•āĻŸāĻŋ āĻ°āĻŋāĻŽā§‹āĻŸ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€āĻ•ā§‡ āĻ¤āĻžāĻ˛āĻŋāĻ•āĻžāĻ­ā§āĻ•ā§āĻ¤ āĻ•āĻ°ā§‡, āĻ¤āĻ–āĻ¨ āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ•āĻ˛āĻžāĻĒā§‡āĻ° āĻĻā§ƒāĻˇā§āĻŸāĻžāĻ¨ā§āĻ¤ā§‡ āĻŦāĻŋāĻ¤āĻ°āĻŖ āĻ•āĻ°āĻž āĻšāĻŦā§‡ āĻ¨āĻž āĻ¯āĻĻāĻŋ āĻ¨āĻž āĻ•ā§‡āĻ‰ āĻ¤āĻžāĻ˛āĻŋāĻ•āĻžāĻ­ā§āĻ•ā§āĻ¤ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€āĻ•ā§‡ āĻ…āĻ¨ā§āĻ¸āĻ°āĻŖ āĻ•āĻ°ā§‡, āĻ¤āĻžāĻ‡ āĻĒā§āĻ°āĻ•ā§āĻ¸āĻŋ āĻ…ā§āĻ¯āĻžāĻ•āĻžāĻ‰āĻ¨ā§āĻŸ āĻĻā§āĻŦāĻžāĻ°āĻž āĻ¤āĻžāĻ•ā§‡ āĻ…āĻ¨ā§āĻ¸āĻ°āĻŖ āĻ•āĻ°āĻž āĻšāĻŦā§‡āĨ¤" +host: "āĻšā§‹āĻ¸ā§āĻŸ" +selectUser: "āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€ āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻšāĻ¨ āĻ•āĻ°ā§āĻ¨" +recipient: "āĻĒā§āĻ°āĻ¤āĻŋ" +annotation: "āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯" +federation: "āĻĢā§‡āĻĄāĻŋāĻ­āĻžāĻ°ā§āĻ¸" +instances: "āĻ‡āĻ¨ā§āĻ¸āĻŸā§āĻ¯āĻžāĻ¨ā§āĻ¸" +registeredAt: "āĻ¯ā§‹āĻ— āĻĻāĻŋā§Ÿā§‡āĻ›ā§‡āĻ¨" +latestRequestSentAt: "āĻļā§‡āĻˇ āĻ°āĻŋāĻ•ā§ā§Ÿā§‡āĻ¸ā§āĻŸ āĻĒāĻžāĻ āĻžāĻ¨ā§‹ āĻšā§Ÿā§‡āĻ›ā§‡" +latestRequestReceivedAt: "āĻļā§‡āĻˇ āĻ°āĻŋāĻ•ā§ā§Ÿā§‡āĻ¸ā§āĻŸ āĻ—ā§ƒāĻšā§€āĻ¤ āĻšā§Ÿā§‡āĻ›ā§‡" +latestStatus: "āĻ¸āĻ°ā§āĻŦāĻļā§‡āĻˇ āĻ…āĻŦāĻ¸ā§āĻĨāĻž" +storageUsage: "āĻ¸ā§āĻŸā§‹āĻ°ā§‡āĻœā§‡āĻ° āĻŦā§āĻ¯āĻžāĻŦāĻšāĻžāĻ°" +charts: "āĻšāĻžāĻ°ā§āĻŸ" +perHour: "āĻ˜āĻ¨ā§āĻŸāĻž āĻĒā§āĻ°āĻ¤āĻŋ" +perDay: "āĻĻā§ˆāĻ¨āĻŋāĻ•" +stopActivityDelivery: "āĻ…ā§āĻ¯āĻžāĻ•ā§āĻŸāĻŋāĻ­āĻŋāĻŸāĻŋ āĻĒāĻžāĻ āĻžāĻ¨ā§‹ āĻŦāĻ¨ā§āĻ§ āĻ•āĻ°ā§āĻ¨" +blockThisInstance: "āĻ‡āĻ¨ā§āĻ¸āĻŸā§āĻ¯āĻžāĻ¨ā§āĻ¸ āĻŦā§āĻ˛āĻ• āĻ•āĻ°ā§āĻ¨" +operations: "āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ•āĻ˛āĻžāĻĒ" +software: "āĻ¸āĻĢāĻŸāĻ“ā§Ÿā§āĻ¯āĻžāĻ°" +version: "āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖ" +metadata: "āĻŽā§‡āĻŸāĻžāĻĄāĻžāĻŸāĻž" +withNFiles: "{n} āĻŸāĻŋ āĻĢāĻžāĻ‡āĻ˛" +monitor: "āĻŽāĻ¨āĻŋāĻŸāĻ°" +jobQueue: "āĻœāĻŦ āĻ•āĻŋāĻ‰" +cpuAndMemory: "āĻ¸āĻŋāĻĒāĻŋāĻ‰ āĻāĻŦāĻ‚ āĻŽā§‡āĻŽāĻ°āĻŋ" +network: "āĻ¨ā§‡āĻŸāĻ“ā§ŸāĻžāĻ°ā§āĻ•" +disk: "āĻĄāĻŋāĻ¸ā§āĻ•" +instanceInfo: "āĻ‡āĻ¨ā§āĻ¸āĻŸā§āĻ¯āĻžāĻ¨ā§āĻ¸ā§‡āĻ° āĻ¤āĻĨā§āĻ¯" +statistics: "āĻĒāĻ°āĻŋāĻ¸āĻ‚āĻ–ā§āĻ¯āĻžāĻ¨" +clearQueue: "āĻ•āĻŋāĻ‰ āĻĒāĻ°āĻŋāĻˇā§āĻ•āĻžāĻ° āĻ•āĻ°ā§āĻ¨" +clearQueueConfirmTitle: "āĻ†āĻĒāĻ¨āĻŋ āĻ•āĻŋ āĻ•āĻŋāĻ‰ āĻĒāĻ°āĻŋāĻˇā§āĻ•āĻžāĻ° āĻ•āĻ°āĻžāĻ° āĻŦā§āĻ¯āĻžāĻĒāĻžāĻ°ā§‡ āĻ¨āĻŋāĻļā§āĻšāĻŋāĻ¤?" +clearQueueConfirmText: "āĻŦāĻŋāĻ¤āĻ°āĻŖ āĻ¨āĻž āĻ•āĻ°āĻž āĻ¨ā§‹āĻŸ āĻ†āĻ° āĻŦāĻŋāĻ¤āĻ°āĻŖ āĻ•āĻ°āĻž āĻšāĻŦā§‡ āĻ¨āĻžāĨ¤ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ¤ āĻ†āĻĒāĻ¨āĻžāĻ° āĻāĻŸāĻŋ āĻ•āĻ°āĻžāĻ° āĻĻāĻ°āĻ•āĻžāĻ° āĻ¨ā§‡āĻ‡āĨ¤" +clearCachedFiles: "āĻ•ā§āĻ¯āĻžāĻļ āĻĒāĻ°āĻŋāĻˇā§āĻ•āĻžāĻ° āĻ•āĻ°ā§āĻ¨" +clearCachedFilesConfirm: "āĻ†āĻĒāĻ¨āĻŋ āĻ•āĻŋ āĻ•ā§āĻ¯āĻžāĻļ āĻĒāĻ°āĻŋāĻˇā§āĻ•āĻžāĻ° āĻ•āĻ°āĻžāĻ° āĻŦā§āĻ¯āĻžāĻĒāĻžāĻ°ā§‡ āĻ¨āĻŋāĻļā§āĻšāĻŋāĻ¤?" +blockedInstances: "āĻŦā§āĻ˛āĻ•āĻ•ā§ƒāĻ¤ āĻ‡āĻ¨ā§āĻ¸āĻŸā§āĻ¯āĻžāĻ¨ā§āĻ¸āĻ¸āĻŽā§āĻš" +blockedInstancesDescription: "āĻ†āĻĒāĻ¨āĻŋ āĻ¯ā§‡ āĻ‡āĻ¨ā§āĻ¸āĻŸā§āĻ¯āĻžāĻ¨ā§āĻ¸āĻ—ā§āĻ˛āĻŋ āĻŦā§āĻ˛āĻ• āĻ•āĻ°āĻ¤ā§‡ āĻšāĻžāĻ¨ āĻ¤āĻžāĻ° āĻšā§‹āĻ¸ā§āĻŸāĻ¨ā§‡āĻŽāĻ—ā§āĻ˛āĻŋ āĻĒā§āĻ°āĻ¤ā§āĻ¯ā§‡āĻ•āĻŸāĻŋ āĻ†āĻ˛āĻžāĻĻāĻž āĻ˛āĻžāĻ‡āĻ¨ā§‡ āĻ˛āĻŋāĻ–ā§āĻ¨āĨ¤ āĻŦā§āĻ˛āĻ•āĻ•ā§ƒāĻ¤ āĻ‡āĻ¨ā§āĻ¸āĻŸā§āĻ¯āĻžāĻ¨ā§āĻ¸āĻ—ā§āĻ˛āĻŋ āĻāĻ‡ āĻ‡āĻ¨ā§āĻ¸āĻŸā§āĻ¯āĻžāĻ¨ā§āĻ¸ā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻ¯ā§‹āĻ—āĻžāĻ¯ā§‹āĻ— āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°āĻŦā§‡āĻ¨āĻžā§ˇ" +muteAndBlock: "āĻŽāĻŋāĻ‰āĻŸ āĻāĻŦāĻ‚ āĻŦā§āĻ˛āĻ•āĻ—ā§āĻ˛āĻŋ" +mutedUsers: "āĻ¨āĻŋāĻƒāĻļāĻŦā§āĻĻāĻ•ā§ƒāĻ¤ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€" +blockedUsers: "āĻ¯āĻžāĻĻā§‡āĻ° āĻŦā§āĻ˛āĻ• āĻ•āĻ°āĻž āĻšā§Ÿā§‡āĻ›ā§‡" +noUsers: "āĻ•ā§‹āĻ¨ āĻŦā§āĻ¯āĻžāĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€ āĻ¨ā§‡āĻ‡" +editProfile: "āĻĒā§āĻ°ā§‹āĻĢāĻžāĻ‡āĻ˛ āĻ¸āĻŽā§āĻĒāĻžāĻĻāĻ¨āĻž āĻ•āĻ°ā§āĻ¨" +noteDeleteConfirm: "āĻ†āĻĒāĻ¨āĻŋ āĻ•āĻŋ āĻ¨ā§‹āĻŸ āĻĄāĻŋāĻ˛āĻŋāĻŸ āĻ•āĻ°āĻžāĻ° āĻŦā§āĻ¯āĻžāĻĒāĻžāĻ°ā§‡ āĻ¨āĻŋāĻļā§āĻšāĻŋāĻ¤?" +pinLimitExceeded: "āĻ†āĻĒāĻ¨āĻŋ āĻ†āĻ° āĻ•ā§‹āĻ¨ āĻ¨ā§‹āĻŸ āĻĒāĻŋāĻ¨ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°āĻŦā§‡āĻ¨ āĻ¨āĻž" +intro: "Misskey āĻāĻ° āĻ‡āĻ¨ā§āĻ¸āĻŸāĻ˛ā§‡āĻļāĻ¨ āĻ¸āĻŽā§āĻĒāĻ¨ā§āĻ¨ āĻšā§Ÿā§‡āĻ›ā§‡īŧāĻĻā§ŸāĻž āĻ•āĻ°ā§‡ āĻ…ā§āĻ¯āĻžāĻĄāĻŽāĻŋāĻ¨ āĻ‡āĻ‰āĻœāĻžāĻ° āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°ā§āĻ¨āĨ¤" +done: "āĻ¸āĻŽā§āĻĒāĻ¨ā§āĻ¨" +processing: "āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋā§ŸāĻžāĻ§ā§€āĻ¨..." +preview: "āĻĒā§‚āĻ°ā§āĻŦāĻ°ā§‚āĻĒ āĻĻā§‡āĻ–ā§āĻ¨" +default: "āĻĒā§‚āĻ°ā§āĻŦāĻ¨āĻŋāĻ°ā§āĻ§āĻžāĻ°āĻŋāĻ¤" +noCustomEmojis: "āĻ•ā§‹āĻ¨ āĻ‡āĻŽā§‹āĻœāĻŋ āĻ¨āĻžāĻ‡" +noJobs: "āĻ•ā§‹āĻ¨ āĻœāĻŦ āĻ¨āĻžāĻ‡" +federating: "āĻĢā§‡āĻĄāĻžāĻ°ā§‡āĻŸ āĻ•āĻ°āĻž āĻšāĻšā§āĻ›ā§‡" +blocked: "āĻŦā§āĻ˛āĻ• āĻ•āĻ°āĻž āĻšā§Ÿā§‡āĻ›ā§‡" +suspended: "āĻ¸ā§āĻĨāĻ—āĻŋāĻ¤ āĻ•āĻ°āĻž āĻšā§Ÿā§‡āĻ›ā§‡" +all: "āĻ¸āĻŦāĻ—ā§āĻ˛ā§‹" +subscribing: "āĻ¸āĻĻāĻ¸ā§āĻ¯āĻ¤āĻž āĻ¨ā§‡ā§ŸāĻž āĻšāĻšā§āĻ›ā§‡" +publishing: "āĻĒā§āĻ°āĻ•āĻžāĻļ āĻ•āĻ°āĻž āĻšāĻšā§āĻ›ā§‡" +notResponding: "āĻ¸āĻžā§œāĻž āĻ¨ā§‡āĻ‡" +instanceFollowing: "āĻ‡āĻ¨ā§āĻ¸āĻŸā§āĻ¯āĻžāĻ¨ā§āĻ¸ āĻ…āĻ¨ā§āĻ¸āĻ°āĻŖ āĻ•āĻ°āĻž āĻšāĻšā§āĻ›ā§‡" +instanceFollowers: "āĻ‡āĻ¨ā§āĻ¸āĻŸā§āĻ¯āĻžāĻ¨ā§āĻ¸ āĻ…āĻ¨ā§āĻ¸āĻ°āĻŖāĻ•āĻžāĻ°ā§€" +instanceUsers: "āĻ‡āĻ¨ā§āĻ¸āĻŸā§āĻ¯āĻžāĻ¨ā§āĻ¸ āĻŦā§āĻ¯āĻžāĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€" +changePassword: "āĻĒāĻžāĻ¸āĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻĄ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻ•āĻ°ā§āĻ¨" +security: "āĻ¨āĻŋāĻ°āĻžāĻĒāĻ¤ā§āĻ¤āĻž" +retypedNotMatch: "āĻ‡āĻ¨āĻĒā§āĻŸ āĻŽā§‡āĻ˛ā§‡ āĻ¨āĻžāĨ¤" +currentPassword: "āĻŦāĻ°ā§āĻ¤āĻŽāĻžāĻ¨ āĻĒāĻžāĻ¸āĻ“ā§ŸāĻžāĻ°ā§āĻĄ" +newPassword: "āĻ¨āĻ¤ā§āĻ¨ āĻĒāĻžāĻ¸āĻ“ā§ŸāĻžāĻ°ā§āĻĄ" +newPasswordRetype: "āĻ¨āĻ¤ā§āĻ¨ āĻĒāĻžāĻ¸āĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻĄ (āĻĒā§āĻ¨āĻ°āĻžāĻ¯āĻŧ āĻ˛āĻŋāĻ–ā§āĻ¨)" +attachFile: "āĻĢāĻžāĻ‡āĻ˛ āĻ¸āĻ‚āĻ¯ā§āĻ•ā§āĻ¤ āĻ•āĻ°ā§āĻ¨" +more: "āĻ†āĻ°āĻ“!" +featured: "āĻšāĻžāĻ‡āĻ˛āĻžāĻ‡āĻŸ" +usernameOrUserId: "āĻŦā§āĻ¯āĻžāĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€āĻ° āĻ¨āĻžāĻŽ āĻŦāĻž āĻŦā§āĻ¯āĻžāĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€ ID" +noSuchUser: "āĻ•ā§‹āĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€ āĻ–ā§āĻāĻœā§‡ āĻĒāĻžāĻ“āĻ¯āĻŧāĻž āĻ¯āĻžāĻ¯āĻŧāĻ¨āĻŋ" +lookup: "āĻ–ā§āĻāĻœā§‡ āĻĻā§‡āĻ–ā§‹" +announcements: "āĻ˜ā§‹āĻˇāĻŖāĻž" +imageUrl: "āĻšāĻŋāĻ¤ā§āĻ°ā§‡āĻ° URL" +remove: "āĻŽā§āĻ›ā§āĻ¨" +removed: "āĻ¸āĻ°āĻžāĻ¨ā§‹ āĻšāĻ¯āĻŧā§‡āĻ›ā§‡" +removeAreYouSure: "āĻ†āĻĒāĻ¨āĻŋ āĻ•āĻŋ \"{x}\" āĻ¸āĻ°āĻžāĻ¨ā§‹āĻ° āĻŦā§āĻ¯āĻžāĻĒāĻžāĻ°ā§‡ āĻ¨āĻŋāĻļā§āĻšāĻŋāĻ¤?" +deleteAreYouSure: "āĻ†āĻĒāĻ¨āĻŋ āĻ•āĻŋ \"{x}\" āĻ¸āĻ°āĻžāĻ¨ā§‹āĻ° āĻŦā§āĻ¯āĻžāĻĒāĻžāĻ°ā§‡ āĻ¨āĻŋāĻļā§āĻšāĻŋāĻ¤?" +resetAreYouSure: "āĻ°āĻŋāĻ¸ā§‡āĻŸ āĻ•āĻ°āĻžāĻ° āĻŦā§āĻ¯āĻžāĻĒāĻžāĻ°ā§‡ āĻ¨āĻŋāĻļā§āĻšāĻŋāĻ¤?" +saved: "āĻ¸āĻ‚āĻ°āĻ•ā§āĻˇāĻŋāĻ¤ āĻšā§Ÿā§‡āĻ›ā§‡" +messaging: "āĻšā§āĻ¯āĻžāĻŸ" +upload: "āĻ†āĻĒāĻ˛ā§‹āĻĄ" +keepOriginalUploading: "āĻ†āĻ¸āĻ˛ āĻ›āĻŦāĻŋ āĻ°āĻžāĻ–ā§āĻ¨" +keepOriginalUploadingDescription: "āĻ›āĻŦāĻŋāĻŸāĻŋ āĻ†āĻĒāĻ˛ā§‹āĻĄ āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻ†āĻ¸āĻ˛ āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖāĻŸāĻŋ āĻ°āĻžāĻ–ā§āĻ¨āĨ¤ āĻ…āĻĒāĻļāĻ¨āĻŸāĻŋ āĻŦāĻ¨ā§āĻ§ āĻĨāĻžāĻ•āĻ˛ā§‡, āĻ†āĻĒāĻ˛ā§‹āĻĄā§‡āĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻ“āĻ¯āĻŧā§‡āĻŦ āĻĒā§āĻ°āĻ•āĻžāĻļāĻ¨āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ›āĻŦāĻŋ āĻŦā§āĻ°āĻžāĻ‰āĻœāĻžāĻ°ā§‡ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž āĻšāĻŦā§‡āĨ¤" +fromDrive: "āĻĄā§āĻ°āĻžāĻ‡āĻ­ āĻšāĻ¤ā§‡" +fromUrl: "URL āĻšāĻ¤ā§‡" +uploadFromUrl: "URL āĻšāĻ¤ā§‡ āĻ†āĻĒāĻ˛ā§‹āĻĄ" +uploadFromUrlDescription: "āĻ¯ā§‡ āĻĢāĻžāĻ‡āĻ˛āĻŸāĻŋ āĻ†āĻĒāĻ˛ā§‹āĻĄ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻžāĻ¨, āĻ¸ā§‡āĻŸāĻŋāĻ° URL" +uploadFromUrlRequested: "āĻ†āĻĒāĻ˛ā§‹āĻĄ āĻ…āĻ¨ā§āĻ°ā§‹āĻ§ āĻ•āĻ°āĻž āĻšā§Ÿā§‡āĻ›ā§‡" +uploadFromUrlMayTakeTime: "URL āĻšāĻ¤ā§‡ āĻ†āĻĒāĻ˛ā§‹āĻĄ āĻšāĻ¤ā§‡ āĻ•āĻŋāĻ›ā§ āĻ¸āĻŽā§Ÿ āĻ˛āĻžāĻ—āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤" +explore: "āĻ˜ā§āĻ°ā§‡ āĻĻā§‡āĻ–ā§āĻ¨" +messageRead: "āĻĒāĻĄāĻŧāĻž" +noMoreHistory: "āĻ†āĻ° āĻ•ā§‹āĻ¨ āĻ‡āĻ¤āĻŋāĻšāĻžāĻ¸ āĻ¨ā§‡āĻ‡" +startMessaging: "āĻšā§āĻ¯āĻžāĻŸ āĻļā§āĻ°ā§ āĻ•āĻ°ā§āĻ¨" +nUsersRead: "{n} āĻœāĻ¨ āĻĒā§œā§‡āĻ›ā§‡āĻ¨" +agreeTo: "{0} āĻāĻ° āĻĒā§āĻ°āĻ¤āĻŋ āĻ†āĻŽāĻŋ āĻ¸āĻŽā§āĻŽāĻ¤" +tos: "āĻĒāĻ°āĻŋāĻˇā§‡āĻŦāĻžāĻ° āĻļāĻ°ā§āĻ¤āĻžāĻĻāĻŋ" +start: "āĻļā§āĻ°ā§ āĻ•āĻ°ā§āĻ¨" +home: "āĻŽā§‚āĻ˛ āĻĒāĻžāĻ¤āĻž" +remoteUserCaution: "āĻāĻ‡ āĻŦā§āĻ¯āĻžāĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€ āĻ°āĻŋāĻŽā§‹āĻŸ āĻ‡āĻ¨ā§āĻ¸āĻŸā§āĻ¯āĻžāĻ¨ā§āĻ¸ā§‡āĻ°, āĻ¨āĻŋāĻŽā§āĻ¨āĻ•ā§āĻ¤ āĻ¤āĻĨā§āĻ¯ āĻ…āĻ¸āĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āĻšāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤" +activity: "āĻ•āĻžāĻ°ā§āĻ¯āĻ•āĻ˛āĻžāĻĒ" +images: "āĻ›āĻŦāĻŋ" +birthday: "āĻœāĻ¨ā§āĻŽāĻĻāĻŋāĻ¨" +yearsOld: "{age} āĻŦāĻ›āĻ°" +registeredDate: "āĻ¯ā§‹āĻ—āĻĻāĻžāĻ¨ā§‡āĻ° āĻ¤āĻžāĻ°āĻŋāĻ–" +location: "āĻ…āĻŦāĻ¸ā§āĻĨāĻžāĻ¨" +theme: "āĻĨāĻŋāĻŽ" +themeForLightMode: "āĻ˛āĻžāĻ‡āĻŸ āĻŽā§‹āĻĄā§‡āĻ° āĻĨāĻŋāĻŽ" +themeForDarkMode: "āĻĄāĻžāĻ°ā§āĻ• āĻŽā§‹āĻĄā§‡āĻ° āĻĨāĻŋāĻŽ" +light: "āĻ†āĻ˛ā§‹āĻ•āĻŋāĻ¤" +dark: "āĻ…āĻ¨ā§āĻ§āĻ•āĻžāĻ°" +lightThemes: "āĻ†āĻ˛ā§‹āĻ•āĻŋāĻ¤ āĻĨāĻŋāĻŽ" +darkThemes: "āĻ…āĻ¨ā§āĻ§āĻ•āĻžāĻ° āĻĨāĻŋāĻŽ" +syncDeviceDarkMode: "āĻĄāĻŋāĻ­āĻžāĻ‡āĻ¸ā§‡āĻ° āĻ¸ā§‡āĻŸāĻŋāĻ‚ āĻ…āĻ¨ā§āĻ¯āĻžā§Ÿā§€ āĻĄāĻžāĻ°ā§āĻ• āĻŽā§‹āĻĄ āĻ¸ā§‡āĻŸ āĻ•āĻ°ā§āĻ¨" +drive: "āĻĄā§āĻ°āĻžāĻ‡āĻ­" +fileName: "āĻĢāĻžāĻ‡āĻ˛ā§‡āĻ° āĻ¨āĻžāĻŽ" +selectFile: "āĻĢāĻžāĻ‡āĻ˛ āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻšāĻ¨ āĻ•āĻ°ā§āĻ¨" +selectFiles: "āĻĢāĻžāĻ‡āĻ˛ āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻšāĻ¨ āĻ•āĻ°ā§āĻ¨" +selectFolder: "āĻĢā§‹āĻ˛ā§āĻĄāĻžāĻ° āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻšāĻ¨ āĻ•āĻ°ā§āĻ¨" +selectFolders: "āĻĢā§‹āĻ˛ā§āĻĄāĻžāĻ° āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻšāĻ¨ āĻ•āĻ°ā§āĻ¨" +renameFile: "āĻĢāĻžāĻ‡āĻ˛ āĻĒā§āĻ¨āĻƒāĻ¨āĻžāĻŽāĻ•āĻ°āĻ¨" +folderName: "āĻĢā§‹āĻ˛ā§āĻĄāĻžāĻ°ā§‡āĻ° āĻ¨āĻžāĻŽ" +createFolder: "āĻĢā§‹āĻ˛ā§āĻĄāĻžāĻ° āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°ā§āĻ¨" +renameFolder: "āĻĢā§‹āĻ˛ā§āĻĄāĻžāĻ° āĻĒā§āĻ¨āĻƒāĻ¨āĻžāĻŽāĻ•āĻ°āĻ¨" +deleteFolder: "āĻĢā§‹āĻ˛ā§āĻĄāĻžāĻ° āĻŽā§āĻ›ā§āĻ¨" +addFile: "āĻĢāĻžāĻ‡āĻ˛ āĻ¯ā§‹āĻ— āĻ•āĻ°ā§āĻ¨" +emptyDrive: "āĻ†āĻĒāĻ¨āĻžāĻ° āĻĄā§āĻ°āĻžāĻ‡āĻ­ āĻ–āĻžāĻ˛āĻŋ" +emptyFolder: "āĻāĻ‡ āĻĢā§‹āĻ˛ā§āĻĄāĻžāĻ° āĻ–āĻžāĻ˛āĻŋ" +unableToDelete: "āĻŽā§āĻ›ā§‡ āĻĢā§‡āĻ˛āĻž āĻ¯āĻžā§ŸāĻ¨āĻŋ" +inputNewFileName: "āĻĢāĻžāĻ‡āĻ˛ā§‡āĻ° āĻ¨āĻ¤ā§āĻ¨ āĻ¨āĻžāĻŽ āĻ˛āĻŋāĻ–ā§āĻ¨" +inputNewDescription: "āĻ¨āĻ¤ā§āĻ¨ āĻ•ā§āĻ¯āĻžāĻĒāĻļāĻ¨ āĻ˛āĻŋāĻ–ā§āĻ¨" +inputNewFolderName: "āĻĢā§‹āĻ˛ā§āĻĄāĻžāĻ°ā§‡āĻ° āĻ¨āĻ¤ā§āĻ¨ āĻ¨āĻžāĻŽ āĻ˛āĻŋāĻ–ā§āĻ¨" +circularReferenceFolder: "āĻ—āĻ¨ā§āĻ¤āĻŦā§āĻ¯ āĻĢā§‹āĻ˛ā§āĻĄāĻžāĻ°āĻŸāĻŋ āĻ†āĻĒāĻ¨āĻŋ āĻ¯ā§‡ āĻĢā§‹āĻ˛ā§āĻĄāĻžāĻ°āĻŸāĻŋ āĻ¸āĻ°āĻžāĻ¤ā§‡ āĻšāĻžāĻ¨ āĻ¤āĻžāĻ° āĻāĻ•āĻŸāĻŋ āĻ¸āĻžāĻŦāĻĢā§‹āĻ˛ā§āĻĄāĻžāĻ°āĨ¤" +hasChildFilesOrFolders: "āĻāĻ‡ āĻĢā§‹āĻ˛ā§āĻĄāĻžāĻ°āĻŸāĻŋ āĻ–āĻžāĻ˛āĻŋ āĻ¨āĻž āĻšāĻ“ā§ŸāĻžā§Ÿ āĻĄāĻŋāĻ˛āĻŋāĻŸ āĻ•āĻ°āĻž āĻ¯āĻžā§ŸāĻ¨āĻŋāĨ¤" +copyUrl: "URL āĻ•āĻĒāĻŋ āĻ•āĻ°ā§āĻ¨" +rename: "āĻĒā§āĻ¨āĻƒāĻ¨āĻžāĻŽāĻ•āĻ°āĻŖ" +avatar: "āĻĒā§āĻ°ā§‹āĻĢāĻžāĻ‡āĻ˛ āĻ›āĻŦāĻŋ" +banner: "āĻŦā§āĻ¯āĻžāĻ¨āĻžāĻ°" +nsfw: "āĻ¸āĻ‚āĻŦā§‡āĻĻāĻ¨āĻļā§€āĻ˛ āĻŦāĻŋāĻˇā§ŸāĻŦāĻ¸ā§āĻ¤ā§" +whenServerDisconnected: "āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ°ā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻ¸āĻ‚āĻ¯ā§‹āĻ— āĻŦāĻŋāĻšā§āĻ›āĻŋāĻ¨ā§āĻ¨ āĻšāĻ¯āĻŧā§‡ āĻ—ā§‡āĻ˛ā§‡" +disconnectedFromServer: "āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ° āĻĨā§‡āĻ•ā§‡ āĻ¸āĻ‚āĻ¯ā§‹āĻ— āĻŦāĻŋāĻšā§āĻ›āĻŋāĻ¨ā§āĻ¨ āĻšāĻ¯āĻŧā§‡āĻ›ā§‡" +reload: "āĻ†āĻŦāĻžāĻ° āĻ˛ā§‹āĻĄ āĻ•āĻ°ā§āĻ¨" +doNothing: "āĻ•āĻŋāĻ›ā§ āĻ•āĻ°āĻŦā§‡āĻ¨ āĻ¨āĻž" +reloadConfirm: "āĻ†āĻĒāĻ¨āĻŋ āĻ•āĻŋ āĻ°āĻŋāĻ˛ā§‹āĻĄ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻžāĻ¨?" +watch: "āĻĻā§‡āĻ–ā§āĻ¨" +unwatch: "āĻĻā§‡āĻ–āĻž āĻŦāĻ¨ā§āĻ§ āĻ•āĻ°ā§āĻ¨ " +accept: "āĻ…āĻ¨ā§āĻŽā§‹āĻĻāĻ¨" +reject: "āĻĒā§āĻ°āĻ¤ā§āĻ¯āĻžāĻ–ā§āĻ¯āĻžāĻ¨" +normal: "āĻ¸ā§āĻŦāĻžāĻ­āĻžāĻŦāĻŋāĻ•" +instanceName: "āĻ‡āĻ¨ā§āĻ¸āĻŸā§āĻ¯āĻžāĻ¨ā§āĻ¸ā§‡āĻ° āĻ¨āĻžāĻŽ" +instanceDescription: "āĻ‡āĻ¨ā§āĻ¸āĻŸā§āĻ¯āĻžāĻ¨ā§āĻ¸ā§‡āĻ° āĻŦāĻ°ā§āĻŖāĻ¨āĻž" +maintainerName: "āĻŽā§‡āĻ‡āĻ¨āĻŸā§‡āĻ‡āĻ¨āĻžāĻ°" +maintainerEmail: "āĻŽā§‡āĻ‡āĻ¨āĻŸā§‡āĻ‡āĻ¨āĻžāĻ°ā§‡āĻ° āĻ‡āĻŽā§‡āĻ‡āĻ˛" +tosUrl: "āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°ā§‡āĻ° āĻļāĻ°ā§āĻ¤āĻžāĻŦāĻ˛ā§€āĻ° URL" +thisYear: "āĻŦāĻ›āĻ°" +thisMonth: "āĻŽāĻžāĻ¸" +today: "āĻ†āĻœ" +dayX: "{day}" +monthX: "{month}" +yearX: "{year}" +pages: "āĻĒā§ƒāĻˇā§āĻ āĻž" +integration: "āĻ‡āĻ¨ā§āĻŸāĻŋāĻ—ā§āĻ°ā§‡āĻļāĻ¨" +connectService: "āĻ¸āĻ‚āĻ¯ā§āĻ•ā§āĻ¤ āĻ•āĻ°ā§āĻ¨" +disconnectService: "āĻ¸āĻ‚āĻ¯ā§‹āĻ— āĻŦāĻŋāĻšā§āĻ›āĻŋāĻ¨ā§āĻ¨ āĻ•āĻ°ā§āĻ¨" +enableLocalTimeline: "āĻ¸ā§āĻĨāĻžāĻ¨ā§€ā§Ÿ āĻŸāĻžāĻ‡āĻŽāĻ˛āĻžāĻ‡āĻ¨ āĻšāĻžāĻ˛ā§ āĻ•āĻ°ā§āĻ¨" +enableGlobalTimeline: "āĻ—ā§āĻ˛ā§‹āĻŦāĻžāĻ˛ āĻŸāĻžāĻ‡āĻŽāĻ˛āĻžāĻ‡āĻ¨ āĻšāĻžāĻ˛ā§ āĻ•āĻ°ā§āĻ¨" +disablingTimelinesInfo: "āĻ†āĻĒāĻ¨āĻŋ āĻāĻ‡ āĻŸāĻžāĻ‡āĻŽāĻ˛āĻžāĻ‡āĻ¨āĻ—ā§āĻ˛āĻŋ āĻŦāĻ¨ā§āĻ§ āĻ•āĻ°āĻ˛ā§‡āĻ“ āĻĒā§āĻ°āĻļāĻžāĻ¸āĻ• āĻāĻŦāĻ‚ āĻŽāĻĄāĻžāĻ°ā§‡āĻŸāĻ°āĻ°āĻž āĻāĻ‡ āĻŸāĻžāĻ‡āĻŽāĻ˛āĻžāĻ‡āĻ¨āĻ—ā§āĻ˛āĻŋ āĻŦā§āĻ¯āĻžāĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°āĻŦā§‡" +registration: "āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻ¨" +enableRegistration: "āĻ¨āĻ¤ā§āĻ¨ āĻŦā§āĻ¯āĻžāĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻ¨ āĻšāĻžāĻ˛ā§ āĻ•āĻ°ā§āĻ¨" +invite: "āĻ†āĻŽāĻ¨ā§āĻ¤ā§āĻ°āĻŖ" +proxyRemoteFiles: "āĻ°āĻŋāĻŽā§‹āĻŸ āĻĢāĻžāĻ‡āĻ˛āĻ¸āĻŽā§āĻš āĻĒā§āĻ°āĻ•ā§āĻ¸āĻŋ āĻ•āĻ°ā§āĻ¨" +proxyRemoteFilesDescription: "āĻ¯āĻ–āĻ¨ āĻāĻ‡ āĻ¸ā§‡āĻŸāĻŋāĻ‚āĻŸāĻŋ āĻšāĻžāĻ˛ā§ āĻĨāĻžāĻ•ā§‡, āĻ¤āĻ–āĻ¨ āĻ…āĻ¸āĻ‚āĻ°āĻ•ā§āĻˇāĻŋāĻ¤ āĻŦāĻž āĻ…āĻ¤āĻŋāĻ°āĻŋāĻ•ā§āĻ¤ āĻ•ā§āĻˇāĻŽāĻ¤āĻžāĻ° āĻ•āĻžāĻ°āĻŖā§‡ āĻĻā§‚āĻ°āĻŦāĻ°ā§āĻ¤ā§€ āĻĢāĻžāĻ‡āĻ˛āĻ—ā§āĻ˛āĻŋāĻ•ā§‡ āĻ¸ā§āĻĨāĻžāĻ¨ā§€āĻ¯āĻŧāĻ­āĻžāĻŦā§‡ āĻĒā§āĻ°āĻ•ā§āĻ¸āĻŋ āĻ•āĻ°āĻž āĻšāĻŦā§‡ āĻāĻŦāĻ‚ āĻĨāĻžāĻŽā§āĻŦāĻ¨ā§‡āĻ˛āĻ—ā§āĻ˛āĻŋāĻ“ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž āĻšāĻŦā§‡ā§ˇ āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ° āĻ¸ā§āĻŸā§‹āĻ°ā§‡āĻœ āĻŦā§āĻ¯āĻžāĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻ¨āĻž," +driveCapacityPerLocalAccount: "āĻĒā§āĻ°āĻ¤ā§āĻ¯ā§‡āĻ• āĻ¸ā§āĻĨāĻžāĻ¨ā§€ā§Ÿ āĻŦā§āĻ¯āĻžāĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€āĻ° āĻœāĻ¨ā§āĻ¯ āĻĄā§āĻ°āĻžāĻ‡āĻ­ā§‡āĻ° āĻœāĻžā§ŸāĻ—āĻž" +driveCapacityPerRemoteAccount: "āĻĒā§āĻ°āĻ¤ā§āĻ¯ā§‡āĻ• āĻ°āĻŋāĻŽā§‹āĻŸ āĻŦā§āĻ¯āĻžāĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€āĻ° āĻœāĻ¨ā§āĻ¯ āĻĄā§āĻ°āĻžāĻ‡āĻ­ā§‡āĻ° āĻœāĻžā§ŸāĻ—āĻž" +inMb: "āĻŽā§‡āĻ—āĻžāĻŦāĻžāĻ‡āĻŸā§‡ āĻ˛āĻŋāĻ–ā§āĻ¨" +iconUrl: "āĻ†āĻ‡āĻ•āĻ¨ā§‡āĻ° URL (āĻĢā§āĻ¯āĻžāĻ­āĻŋāĻ•āĻ¨, āĻ‡āĻ¤ā§āĻ¯āĻžāĻĻāĻŋ)" +bannerUrl: "āĻŦā§āĻ¯āĻžāĻ¨āĻžāĻ° āĻ›āĻŦāĻŋāĻ° URL" +backgroundImageUrl: "āĻĒāĻŸāĻ­ā§‚āĻŽāĻŋāĻ° āĻšāĻŋāĻ¤ā§āĻ°ā§‡āĻ° URL" +basicInfo: "āĻ†āĻĒāĻ¨āĻžāĻ° āĻŦā§āĻ¯āĻ•ā§āĻ¤āĻŋāĻ—āĻ¤ āĻ¤āĻĨā§āĻ¯" +pinnedUsers: "āĻĒāĻŋāĻ¨ āĻ•āĻ°āĻž āĻŦā§āĻ¯āĻžāĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€āĻ—āĻŖ" +pinnedUsersDescription: "āĻ†āĻĒāĻ¨āĻŋ āĻ¯ā§‡āĻ¸āĻŦ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€āĻĻā§‡āĻ° \"āĻ˜ā§āĻ°ā§‡ āĻĻā§‡āĻ–ā§āĻ¨\" āĻĒā§ƒāĻˇā§āĻ āĻžāĻ¯āĻŧ āĻĒāĻŋāĻ¨ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻžāĻ¨ āĻ¤āĻžāĻĻā§‡āĻ° āĻŦāĻ°ā§āĻŖāĻ¨āĻž āĻ•āĻ°ā§āĻ¨, āĻĒā§āĻ°āĻ¤ā§āĻ¯ā§‡āĻ•ā§‡āĻ° āĻŦāĻ°ā§āĻŖāĻ¨āĻž āĻ†āĻ˛āĻžāĻĻāĻž āĻ˛āĻžāĻ‡āĻ¨ā§‡ āĻ˛āĻŋāĻ–ā§āĻ¨" +pinnedPages: "āĻĒāĻŋāĻ¨ āĻ•āĻ°āĻž āĻĒā§ƒāĻˇā§āĻ āĻžāĻ¸ā§āĻŽāĻš" +pinnedPagesDescription: "āĻ†āĻĒāĻ¨āĻŋ āĻ¯ā§‡āĻ¸āĻ•āĻ˛ āĻĒā§ƒāĻˇā§āĻ āĻžāĻ¸āĻŽā§‚āĻšāĻ•ā§‡ \"āĻ˜ā§āĻ°ā§‡ āĻĻā§‡āĻ–ā§āĻ¨\" āĻĒā§ƒāĻˇā§āĻ āĻžāĻ¯āĻŧ āĻĒāĻŋāĻ¨ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻžāĻ¨ āĻ¤āĻžāĻĻā§‡āĻ° āĻŦāĻ°ā§āĻŖāĻ¨āĻž āĻ•āĻ°ā§āĻ¨, āĻĒā§āĻ°āĻ¤ā§āĻ¯ā§‡āĻ•ā§‡āĻ° āĻŦāĻ°ā§āĻŖāĻ¨āĻž āĻ†āĻ˛āĻžāĻĻāĻž āĻ˛āĻžāĻ‡āĻ¨ā§‡ āĻ˛āĻŋāĻ–ā§āĻ¨" +pinnedClipId: "āĻĒāĻŋāĻ¨āĻ•ā§ƒāĻ¤ āĻ•ā§āĻ˛āĻŋāĻĒā§‡āĻ° ID" +pinnedNotes: "āĻĒāĻŋāĻ¨ āĻ•āĻ°āĻž āĻ¨ā§‹āĻŸ" +hcaptcha: "hCaptcha" +enableHcaptcha: "hCaptcha āĻšāĻžāĻ˛ā§ āĻ•āĻ°ā§āĻ¨" +hcaptchaSiteKey: "āĻ¸āĻžāĻ‡āĻŸ āĻ•ā§€" +hcaptchaSecretKey: "āĻ¸āĻŋāĻ•ā§āĻ°ā§‡āĻŸ āĻ•ā§€" +recaptcha: "reCAPTCHA" +enableRecaptcha: "reCAPTCHA āĻšāĻžāĻ˛ā§ āĻ•āĻ°ā§āĻ¨" +recaptchaSiteKey: "āĻ¸āĻžāĻ‡āĻŸ āĻ•ā§€" +antennas: "āĻ…ā§āĻ¯āĻžāĻ¨ā§āĻŸā§‡āĻ¨āĻž" +manageAntennas: "āĻ…ā§āĻ¯āĻžāĻ¨ā§āĻŸā§‡āĻ¨āĻž āĻŦā§āĻ¯āĻŦāĻ¸ā§āĻĨāĻžāĻĒāĻ¨āĻž" +name: "āĻ¨āĻžāĻŽ" +antennaSource: "āĻ…ā§āĻ¯āĻžāĻ¨ā§āĻŸā§‡āĻ¨āĻžāĻ° āĻ‰ā§ŽāĻ¸" +antennaKeywords: "āĻ¯ā§‡āĻ¸āĻŦ āĻ•ā§€āĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻĄ āĻĻā§‡āĻ–āĻž āĻšāĻŦā§‡" +antennaExcludeKeywords: "āĻ¯ā§‡āĻ¸āĻŦ āĻ•ā§€āĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻĄ āĻĻā§‡āĻ–āĻž āĻšāĻŦā§‡ āĻ¨āĻž" +antennaKeywordsDescription: "āĻ¸ā§āĻĒā§‡āĻ¸ āĻĻāĻŋāĻ¯āĻŧā§‡ āĻ†āĻ˛āĻžāĻĻāĻž āĻ•āĻ°āĻ˛ā§‡ AND āĻļāĻ°ā§āĻ¤ āĻ¤ā§ˆāĻ°āĻŋ āĻšāĻŦā§‡ āĻāĻŦāĻ‚ āĻ†āĻ˛āĻžāĻĻāĻž āĻ˛āĻžāĻ‡āĻ¨ā§‡ āĻ˛āĻŋāĻ–āĻ˛ā§‡ OR āĻļāĻ°ā§āĻ¤ āĻ¤ā§ˆāĻ°āĻŋ āĻšāĻŦā§‡āĨ¤" +notifyAntenna: "āĻ¨āĻ¤ā§āĻ¨ āĻ¨ā§‹āĻŸ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻ…āĻŦāĻšāĻŋāĻ¤ āĻ•āĻ°ā§āĻ¨" +withFileAntenna: "āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻĢāĻžāĻ‡āĻ˛āĻ¯ā§āĻ•ā§āĻ¤ āĻ¨ā§‹āĻŸ" +enableServiceworker: "ServiceWorker āĻšāĻžāĻ˛ā§ āĻ•āĻ°ā§āĻ¨" +antennaUsersDescription: "āĻĒā§āĻ°āĻ¤ā§āĻ¯ā§‡āĻ• āĻ˛āĻžāĻ‡āĻ¨ā§‡ āĻāĻ•āĻœāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€āĻ° āĻ¨āĻžāĻŽ āĻ˛āĻŋāĻ–ā§āĻ¨" +caseSensitive: "āĻ›ā§‹āĻŸ āĻšāĻžāĻ¤ā§‡āĻ° āĻāĻŦāĻ‚ āĻŦā§œ āĻšāĻžāĻ¤ā§‡āĻ° āĻ…āĻ•ā§āĻˇāĻ° āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻ•āĻ°ā§āĻ¨" +withReplies: "āĻœāĻŦāĻžāĻŦāĻ¸āĻŽā§āĻš āĻ¯ā§āĻ•ā§āĻ¤ āĻ•āĻ°ā§āĻ¨" +connectedTo: "āĻ†āĻĒāĻ¨āĻŋ āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻ–āĻŋāĻ¤ āĻ…ā§āĻ¯āĻžāĻ•āĻžāĻ‰āĻ¨ā§āĻŸā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻ¸āĻ‚āĻ¯ā§āĻ•ā§āĻ¤" +notesAndReplies: "āĻ¨ā§‹āĻŸāĻ¸āĻŽā§‚āĻš āĻāĻŦāĻ‚ āĻœāĻŦāĻžāĻŦāĻ—ā§āĻ˛āĻŋ" +withFiles: "āĻĢāĻžāĻ‡āĻ˛āĻ—ā§āĻ˛āĻŋ āĻ¯ā§āĻ•ā§āĻ¤ āĻ•āĻ°ā§āĻ¨" +silence: "āĻ¨ā§€āĻ°āĻŦ" +silenceConfirm: "āĻ†āĻĒāĻ¨āĻŋ āĻ•āĻŋ āĻāĻ‡ āĻŦā§āĻ¯āĻžāĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€āĻ•ā§‡āĻ° āĻ¨ā§€āĻ°āĻŦ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻžāĻ¨?" +unsilence: "āĻ¸āĻ°āĻŦ" +unsilenceConfirm: "āĻ†āĻĒāĻ¨āĻŋ āĻ•āĻŋ āĻāĻ‡ āĻŦā§āĻ¯āĻžāĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€āĻ•ā§‡āĻ° āĻ¸āĻ°āĻŦ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻžāĻ¨?" +popularUsers: "āĻœāĻ¨āĻĒā§āĻ°āĻŋāĻ¯āĻŧ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€āĻ—āĻ¨" +recentlyUpdatedUsers: "āĻ¸āĻŽā§āĻĒā§āĻ°āĻ¤āĻŋ āĻĒā§‹āĻ¸ā§āĻŸ āĻ•āĻ°āĻž āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€āĻ—āĻ¨" +recentlyRegisteredUsers: "āĻ¨āĻ¤ā§āĻ¨ āĻ¯ā§‹āĻ— āĻĻā§‡āĻ“ā§ŸāĻž āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€āĻ—āĻ¨" +recentlyDiscoveredUsers: "āĻ¨āĻ¤ā§āĻ¨ āĻ–ā§āĻāĻœā§‡ āĻĒāĻžāĻ“ā§ŸāĻž āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€āĻ—āĻ¨" +exploreUsersCount: "{count} āĻœāĻ¨ āĻŦā§āĻ¯āĻžāĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€" +exploreFediverse: "Fediverse āĻ˜ā§āĻ°ā§‡ āĻĻā§‡āĻ–ā§āĻ¨" +popularTags: "āĻœāĻ¨āĻĒā§āĻ°āĻŋā§Ÿ āĻŸā§āĻ¯āĻžāĻ—āĻ—ā§āĻ˛āĻŋ" +userList: "āĻ˛āĻŋāĻ¸ā§āĻŸ" +about: "āĻ†āĻĒāĻ¨āĻžāĻ° āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡" +aboutMisskey: "Misskey āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡" +administrator: "āĻĒā§āĻ°āĻļāĻžāĻ¸āĻ•" +token: "āĻŸā§‹āĻ•ā§‡āĻ¨" +twoStepAuthentication: "ā§¨-āĻ§āĻžāĻĒ āĻĒā§āĻ°āĻŽāĻžāĻŖā§€āĻ•āĻ°āĻŖ" +moderator: "āĻŽāĻĄāĻžāĻ°ā§‡āĻŸāĻ°" +nUsersMentioned: "{n} āĻœāĻ¨āĻ•ā§‡ āĻ‰āĻ˛ā§āĻ˛ā§‡āĻ– āĻ•āĻ°āĻž āĻšā§Ÿā§‡āĻ›ā§‡" +securityKey: "āĻ¸āĻŋāĻ•āĻŋāĻ‰āĻ°āĻŋāĻŸāĻŋ āĻ•ā§€" +securityKeyName: "āĻ•ā§€'āĻ° āĻ¨āĻžāĻŽ" +registerSecurityKey: "āĻ¸āĻŋāĻ•āĻŋāĻ‰āĻ°āĻŋāĻŸāĻŋ āĻ•ā§€ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻ¨ āĻ•āĻ°ā§āĻ¨" +lastUsed: "āĻļā§‡āĻˇ āĻŦā§āĻ¯āĻžāĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻšā§Ÿā§‡āĻ›ā§‡" +unregister: "āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻ¨āĻŽā§āĻ•ā§āĻ¤ āĻšāĻ¨" +passwordLessLogin: "āĻĒāĻžāĻ¸āĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻĄ-āĻŦāĻŋāĻšā§€āĻ¨ āĻ˛āĻ—āĻ‡āĻ¨ āĻ¸ā§‡āĻŸ āĻ†āĻĒ āĻ•āĻ°ā§āĻ¨" +resetPassword: "āĻĒāĻžāĻ¸āĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻĄ āĻ°āĻŋāĻ¸ā§‡āĻŸ āĻ•āĻ°ā§āĻ¨" +newPasswordIs: "āĻ¨āĻ¤ā§āĻ¨ āĻĒāĻžāĻ¸āĻ“ā§ŸāĻžāĻ°ā§āĻĄ āĻšāĻšā§āĻ›ā§‡ \"{password}\"" +reduceUiAnimation: "UI āĻ…ā§āĻ¯āĻžāĻ¨āĻŋāĻŽā§‡āĻļāĻ¨ āĻ•āĻŽāĻžāĻ¨" +share: "āĻļā§‡ā§ŸāĻžāĻ°" +notFound: "āĻĒāĻžāĻ“ā§ŸāĻž āĻ¯āĻžā§ŸāĻ¨āĻŋ" +notFoundDescription: "āĻāĻ‡ URL-āĻāĻ° āĻ¸āĻžāĻĨā§‡ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•āĻŋāĻ¤ āĻ•ā§‹āĻ¨ā§‹ āĻĒā§ƒāĻˇā§āĻ āĻž āĻ¨ā§‡āĻ‡āĨ¤" +uploadFolder: "āĻ†āĻĒāĻ˛ā§‹āĻĄā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻĄāĻŋāĻĢāĻ˛ā§āĻŸ āĻĢā§‹āĻ˛ā§āĻĄāĻžāĻ°" +cacheClear: "āĻ•ā§āĻ¯āĻžāĻļ āĻĒāĻ°āĻŋāĻˇā§āĻ•āĻžāĻ° āĻ•āĻ°ā§āĻ¨" +markAsReadAllNotifications: "āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻŦāĻŋāĻœā§āĻžāĻĒā§āĻ¤āĻŋāĻ—ā§āĻ˛āĻŋ āĻĒāĻ āĻŋāĻ¤ āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻšāĻŋāĻšā§āĻ¨āĻŋāĻ¤ āĻ•āĻ°ā§āĻ¨" +markAsReadAllUnreadNotes: "āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ¨ā§‹āĻŸāĻ—ā§āĻ˛āĻŋ āĻĒāĻ āĻŋāĻ¤ āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻšāĻŋāĻšā§āĻ¨āĻŋāĻ¤ āĻ•āĻ°ā§āĻ¨" +invites: "āĻ†āĻŽāĻ¨ā§āĻ¤ā§āĻ°āĻŖ" +invitations: "āĻ†āĻŽāĻ¨ā§āĻ¤ā§āĻ°āĻŖ" +useOsNativeEmojis: "āĻ…āĻĒāĻžāĻ°ā§‡āĻŸāĻŋāĻ‚ āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽā§‡āĻ° āĻ¨ā§‡āĻŸāĻŋāĻ­ āĻ‡āĻŽā§‹āĻœāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§āĻ¨" +disableDrawer: "āĻĄā§āĻ°āĻ¯āĻŧāĻžāĻ° āĻŽā§‡āĻ¨ā§ āĻĒā§āĻ°āĻĻāĻ°ā§āĻļāĻ¨ āĻ•āĻ°āĻŦā§‡āĻ¨ āĻ¨āĻž" +youHaveNoGroups: "āĻ†āĻĒāĻ¨āĻžāĻ° āĻ•ā§‹āĻ¨ āĻ—ā§āĻ°ā§āĻĒ āĻ¨ā§‡āĻ‡ " +joinOrCreateGroup: "āĻāĻ•āĻŸāĻŋ āĻŦāĻŋāĻĻā§āĻ¯āĻŽāĻžāĻ¨ āĻ—ā§āĻ°ā§āĻĒā§‡āĻ° āĻ†āĻŽāĻ¨ā§āĻ¤ā§āĻ°āĻŖ āĻĒāĻžāĻ¨ āĻŦāĻž āĻāĻ•āĻŸāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻ—ā§āĻ°ā§āĻĒ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°ā§āĻ¨ā§ˇ" +noHistory: "āĻ•ā§‹āĻ¨ā§‹ āĻ‡āĻ¤āĻŋāĻšāĻžāĻ¸ āĻ¨ā§‡āĻ‡" +signinHistory: "āĻĒā§āĻ°āĻŦā§‡āĻļ āĻ•āĻ°āĻžāĻ° āĻ‡āĻ¤āĻŋāĻšāĻžāĻ¸" +disableAnimatedMfm: "āĻ…ā§āĻ¯āĻžāĻ¨āĻŋāĻŽā§‡āĻŸā§‡āĻĄ MFM āĻ…āĻ•ā§āĻˇāĻŽ āĻ•āĻ°ā§āĻ¨" +doing: "āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋā§ŸāĻž āĻ•āĻ°āĻ›ā§‡..." +category: "āĻŦāĻŋāĻ­āĻžāĻ—" +tags: "āĻŸâ€ā§āĻ¯āĻžāĻ—āĻ¸āĻŽā§‚āĻš" +docSource: "āĻĄāĻ•ā§āĻŽā§‡āĻ¨ā§āĻŸā§‡āĻ° āĻ‰ā§ŽāĻ¸" +createAccount: "āĻ…ā§āĻ¯āĻžāĻ•āĻžāĻ‰āĻ¨ā§āĻŸ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°ā§āĻ¨" +existingAccount: "āĻŦāĻŋāĻĻā§āĻ¯āĻŽāĻžāĻ¨ āĻ…ā§āĻ¯āĻžāĻ•āĻžāĻ‰āĻ¨ā§āĻŸ" +regenerate: "āĻ†āĻŦāĻžāĻ°āĻ“ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°ā§āĻ¨" +fontSize: "āĻĢāĻ¨ā§āĻŸā§‡āĻ° āĻ†āĻ•āĻžāĻ°" +noFollowRequests: "āĻ†āĻĒāĻ¨āĻžāĻ° āĻ•ā§‹āĻ¨ āĻĢāĻ˛ā§‹āĻ“ āĻ°āĻŋāĻ•ā§ā§Ÿā§‡āĻ¸ā§āĻŸ āĻ¨ā§‡āĻ‡" +openImageInNewTab: "āĻ›āĻŦāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻŸā§āĻ¯āĻžāĻŦā§‡ āĻ–ā§āĻ˛ā§āĻ¨" +dashboard: "āĻĄā§āĻ¯āĻžāĻļāĻŦā§‹āĻ°ā§āĻĄ" +local: "āĻ¸ā§āĻĨāĻžāĻ¨ā§€āĻ¯āĻŧ" +remote: "āĻ°āĻŋāĻŽā§‹āĻŸ" +total: "āĻŽā§‹āĻŸ" +weekOverWeekChanges: "āĻ—āĻ¤ āĻ¸āĻĒā§āĻ¤āĻžāĻšā§‡" +dayOverDayChanges: "āĻ—āĻ¤āĻ•āĻžāĻ˛" +appearance: "āĻ…āĻŦā§ŸāĻŦ" +clientSettings: "āĻ•ā§āĻ˛āĻžā§Ÿā§‡āĻ¨ā§āĻŸ āĻ¸ā§‡āĻŸāĻŋāĻ‚āĻ¸" +accountSettings: "āĻ…ā§āĻ¯āĻžāĻ•āĻžāĻ‰āĻ¨ā§āĻŸ āĻ¸ā§‡āĻŸāĻŋāĻ‚āĻ¸" +promotion: "āĻĒā§āĻ°āĻŽā§‹āĻļāĻ¨" +promote: "āĻĒā§āĻ°āĻšāĻžāĻ° āĻ•āĻ°ā§āĻ¨" +numberOfDays: "āĻĻāĻŋāĻ¨ā§‡āĻ° āĻ¸āĻ‚āĻ–ā§āĻ¯āĻž" +hideThisNote: "āĻ¨ā§‹āĻŸāĻŸāĻŋ āĻ˛ā§āĻ•āĻžāĻ¨" +smtpHost: "āĻšā§‹āĻ¸ā§āĻŸ" +smtpUser: "āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€āĻ° āĻ¨āĻžāĻŽ" +smtpPass: "āĻĒāĻžāĻ¸āĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻĄ" +clearCache: "āĻ•ā§āĻ¯āĻžāĻļ āĻĒāĻ°āĻŋāĻˇā§āĻ•āĻžāĻ° āĻ•āĻ°ā§āĻ¨" +info: "āĻ†āĻĒāĻ¨āĻžāĻ° āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡" +user: "āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€āĻ—āĻŖ" +controlPanel: "āĻ¨āĻŋā§ŸāĻ¨ā§āĻ¤ā§āĻ°āĻ¨ āĻ•ā§‡āĻ¨ā§āĻĻā§āĻ°" +_email: + _follow: + title: "āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻ…āĻ¨ā§āĻ¸āĻ°āĻŖ āĻ•āĻ°āĻ›ā§‡" +_mfm: + mention: "āĻ‰āĻ˛ā§āĻ˛ā§‡āĻ–" + quote: "āĻ‰āĻĻā§āĻ§ā§ƒāĻ¤āĻŋ" + emoji: "āĻ¸ā§āĻŦāĻ¨āĻŋāĻ°ā§āĻ§āĻžāĻ°āĻŋāĻ¤ āĻ‡āĻŽā§‹āĻœāĻŋāĻ—ā§āĻ˛āĻŋ" + search: "āĻ–ā§āĻāĻœā§āĻ¨" +_theme: + keys: + mention: "āĻ‰āĻ˛ā§āĻ˛ā§‡āĻ–" + renote: "āĻ°āĻŋāĻ¨ā§‹āĻŸ" +_sfx: + note: "āĻ¨ā§‹āĻŸāĻ—ā§āĻ˛āĻŋ" + notification: "āĻŦāĻŋāĻœā§āĻžāĻĒā§āĻ¤āĻŋ" + chat: "āĻšā§āĻ¯āĻžāĻŸ" +_widgets: + notifications: "āĻŦāĻŋāĻœā§āĻžāĻĒā§āĻ¤āĻŋ" + timeline: "āĻŸāĻžāĻ‡āĻŽāĻ˛āĻžāĻ‡āĻ¨" + activity: "āĻ•āĻžāĻ°ā§āĻ¯āĻ•āĻ˛āĻžāĻĒ" + federation: "āĻĢā§‡āĻĄāĻŋāĻ­āĻžāĻ°ā§āĻ¸" + jobQueue: "āĻœāĻŦ āĻ•āĻŋāĻ‰" +_cw: + show: "āĻ†āĻ°āĻ“ āĻĻā§‡āĻ–ā§āĻ¨" +_visibility: + home: "āĻŽā§‚āĻ˛ āĻĒāĻžāĻ¤āĻž" + followers: "āĻ…āĻ¨ā§āĻ¸āĻ°āĻŖāĻ•āĻžāĻ°ā§€" +_profile: + name: "āĻ¨āĻžāĻŽ" + username: "āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€āĻ° āĻ¨āĻžāĻŽ" +_exportOrImport: + followingList: "āĻ…āĻ¨ā§āĻ¸āĻ°āĻŖ āĻ•āĻ°āĻž āĻšāĻšā§āĻ›ā§‡" + muteList: "āĻŽāĻŋāĻ‰āĻŸ" + blockingList: "āĻŦā§āĻ˛āĻ•" + userLists: "āĻ˛āĻŋāĻ¸ā§āĻŸ" +_timelines: + home: "āĻŽā§‚āĻ˛ āĻĒāĻžāĻ¤āĻž" +_pages: + blocks: + image: "āĻ›āĻŦāĻŋ" + script: + categories: + list: "āĻ˛āĻŋāĻ¸ā§āĻŸ" + blocks: + _join: + arg1: "āĻ˛āĻŋāĻ¸ā§āĻŸ" + _randomPick: + arg1: "āĻ˛āĻŋāĻ¸ā§āĻŸ" + _dailyRandomPick: + arg1: "āĻ˛āĻŋāĻ¸ā§āĻŸ" + _seedRandomPick: + arg2: "āĻ˛āĻŋāĻ¸ā§āĻŸ" + _pick: + arg1: "āĻ˛āĻŋāĻ¸ā§āĻŸ" + _listLen: + arg1: "āĻ˛āĻŋāĻ¸ā§āĻŸ" + types: + array: "āĻ˛āĻŋāĻ¸ā§āĻŸ" +_notification: + youWereFollowed: "āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻ…āĻ¨ā§āĻ¸āĻ°āĻŖ āĻ•āĻ°āĻ›ā§‡" + _types: + follow: "āĻ…āĻ¨ā§āĻ¸āĻ°āĻŖ āĻ•āĻ°āĻž āĻšāĻšā§āĻ›ā§‡" + mention: "āĻ‰āĻ˛ā§āĻ˛ā§‡āĻ–" + renote: "āĻ°āĻŋāĻ¨ā§‹āĻŸ" + quote: "āĻ‰āĻĻā§āĻ§ā§ƒāĻ¤āĻŋ" + reaction: "āĻĒā§āĻ°āĻ¤āĻŋāĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻž" +_deck: + _columns: + notifications: "āĻŦāĻŋāĻœā§āĻžāĻĒā§āĻ¤āĻŋ" + tl: "āĻŸāĻžāĻ‡āĻŽāĻ˛āĻžāĻ‡āĻ¨" + antenna: "āĻ…ā§āĻ¯āĻžāĻ¨ā§āĻŸā§‡āĻ¨āĻž" + list: "āĻ˛āĻŋāĻ¸ā§āĻŸ" + mentions: "āĻ‰āĻ˛ā§āĻ˛ā§‡āĻ–āĻ¸āĻŽā§‚āĻš" diff --git a/locales/de-DE.yml b/locales/de-DE.yml index 2f327a905..05360e170 100644 --- a/locales/de-DE.yml +++ b/locales/de-DE.yml @@ -235,6 +235,8 @@ resetAreYouSure: "Wirklich zurÃŧcksetzen?" saved: "Gespeichert" messaging: "Chat" upload: "Hochladen" +keepOriginalUploading: "Originalbild speichern" +keepOriginalUploadingDescription: "Speichert das Originalbild so, wie es ist. Ist dies deaktiviert, wird eine Version zum Anzeigen im Internet generiert." fromDrive: "Aus Drive" fromUrl: "Von einer URL" uploadFromUrl: "Von einer URL hochladen" diff --git a/locales/en-US.yml b/locales/en-US.yml index 6bbe84821..9a2b0bf5c 100644 --- a/locales/en-US.yml +++ b/locales/en-US.yml @@ -235,6 +235,8 @@ resetAreYouSure: "Really reset?" saved: "Saved" messaging: "Chat" upload: "Upload" +keepOriginalUploading: "Keep original image" +keepOriginalUploadingDescription: "Saves the originally uploaded image as-is. If turned off, a version to display on the web will be generated on upload." fromDrive: "From Drive" fromUrl: "From URL" uploadFromUrl: "Upload from a URL" diff --git a/locales/fr-FR.yml b/locales/fr-FR.yml index 58dd000cc..62f85bef8 100644 --- a/locales/fr-FR.yml +++ b/locales/fr-FR.yml @@ -235,6 +235,7 @@ resetAreYouSure: "Voulez-vous rÊinitialiser ?" saved: "EnregistrÊ" messaging: "Discuter" upload: "TÊlÊverser" +keepOriginalUploading: "Garder l’image d’origine" fromDrive: "Depuis le Drive" fromUrl: "Depuis une URL" uploadFromUrl: "TÊlÊverser via une URL" @@ -743,6 +744,7 @@ notRecommended: "DÊconseillÊ" botProtection: "Protection contre les bots" instanceBlocking: "Instances bloquÊes" selectAccount: "SÊlectionner un compte" +switchAccount: "Changer de compte" enabled: "ActivÊ" disabled: "DÊsactivÊ" quickAction: "Actions rapides" @@ -803,6 +805,7 @@ makeReactionsPublic: "Rendre les rÊactions publiques" makeReactionsPublicDescription: "Ceci rendra la liste de toutes vos rÊactions donnÊes publique." classic: "Classique" muteThread: "Mettre ce thread en sourdine" +unmuteThread: "Ne plus masquer le fil" ffVisibility: "VisibilitÊ des abonnÊs/abonnements" ffVisibilityDescription: "Permet de configurer qui peut voir les personnes que tu suis et les personnes qui te suivent." continueThread: "Afficher la suite du fil" @@ -1241,6 +1244,7 @@ _exportOrImport: muteList: "Comptes masquÊs" blockingList: "Comptes bloquÊs" userLists: "Listes" + excludeMutingUsers: "Exclure les utilisateur¡rice¡s mis en sourdine" excludeInactiveUsers: "Exclure les utilisateur¡rice¡s inactifs" _charts: federationInstancesIncDec: "Variation du nombre d'instances fÊdÊrÊes" diff --git a/locales/ko-KR.yml b/locales/ko-KR.yml index 7451603a6..38a328862 100644 --- a/locales/ko-KR.yml +++ b/locales/ko-KR.yml @@ -106,6 +106,7 @@ clickToShow: "클ëĻ­í•˜ė—Ŧ ëŗ´ę¸°" sensitive: "ė—´ëžŒėŖŧė˜" add: "ėļ”ę°€" reaction: "ëĻŦė•Ąė…˜" +reactionSetting: "ė„ íƒę¸°ė— 표ė‹œí•  ëĻŦė•Ąė…˜" reactionSettingDescription2: "끌ė–´ė„œ ėˆœė„œ ëŗ€ę˛Ŋ, 클ëĻ­í•´ė„œ ė‚­ė œ, īŧ‹ëĨŧ 눌ëŸŦė„œ ėļ”가할 ėˆ˜ ėžˆėŠĩ니다." rememberNoteVisibility: "ęŗĩ개 범ėœ„ëĨŧ 기ė–ĩ하기" attachCancel: "ė˛¨ëļ€ ėˇ¨ė†Œ" @@ -234,6 +235,8 @@ resetAreYouSure: "ė´ˆę¸°í™” 하ė‹œę˛ ėŠĩ니까?" saved: "ė €ėžĨ하ė˜€ėŠĩ니다" messaging: "대화" upload: "ė—…ëĄœë“œ" +keepOriginalUploading: "ė›ëŗ¸ ė´ë¯¸ė§€ëĨŧ ėœ ė§€" +keepOriginalUploadingDescription: "ė´ë¯¸ė§€ëĨŧ ė—…ëĄœë“œí•  때ė— ė›ëŗ¸ė„ 그대로 ėœ ė§€í•Šë‹ˆë‹¤. 비활ė„ąí™”하늴 ė—…ëĄœë“œí•  때 브ëŧėš°ė €ė—ė„œ ė›š ęŗĩ개ėšŠ ė´ë¯¸ė§€ëĨŧ ėƒė„ąí•Šë‹ˆë‹¤." fromDrive: "드ëŧė´ë¸Œė—ė„œ" fromUrl: "URL로ëļ€í„°" uploadFromUrl: "URL ė—…ëĄœë“œ" @@ -446,6 +449,7 @@ uiLanguage: "UI 표ė‹œ ė–¸ė–´" groupInvited: "꡸ëŖšė— ė´ˆëŒ€ë˜ė—ˆėŠĩ니다" aboutX: "{x}ė— 대하ė—Ŧ" useOsNativeEmojis: "OS 기ëŗ¸ ė´ëĒ¨ė§€ëĨŧ ė‚ŦėšŠ" +disableDrawer: "드로ė–´ 메뉴ëĨŧ ė‚ŦėšŠí•˜ė§€ ė•Šę¸°" youHaveNoGroups: "꡸ëŖšė´ ė—†ėŠĩ니다" joinOrCreateGroup: "다ëĨ¸ ꡸ëŖšė˜ ė´ˆëŒ€ëĨŧ 받거나, ė§ė ‘ ėƒˆ ꡸ëŖšė„ 만들ė–´ ëŗ´ė„¸ėš”." noHistory: "기록ė´ ė—†ėŠĩ니다" @@ -617,8 +621,11 @@ reportAbuse: "ė‹ ęŗ " reportAbuseOf: "{name}ė„ ė‹ ęŗ í•˜ę¸°" fillAbuseReportDescription: "ė‹ ęŗ í•˜ë ¤ëŠ” ė´ėœ ëĨŧ ėžė„¸ížˆ ė•Œë ¤ėŖŧė„¸ėš”. 특ė • 게ė‹œëŦŧė„ ė‹ ęŗ í•  때ė—ëŠ” 게ė‹œëŦŧė˜ URL도 íŦ함해 ėŖŧė„¸ėš”." abuseReported: "ė‹ ęŗ ëĨŧ ëŗ´ëƒˆėŠĩ니다. ė‹ ęŗ í•´ ėŖŧė…”ė„œ 감ė‚Ŧ합니다." +reporter: "ė‹ ęŗ ėž" reporteeOrigin: "í”ŧė‹ ęŗ ėž" reporterOrigin: "ė‹ ęŗ ėž" +forwardReport: "ëĻŦëĒ¨íŠ¸ ė¸ėŠ¤í„´ėŠ¤ė—ë„ ė‹ ęŗ  내ėšŠ ëŗ´ë‚´ę¸°" +forwardReportIsAnonymous: "ëĻŦëĒ¨íŠ¸ ė¸ėŠ¤í„´ėŠ¤ė—ė„œëŠ” 나ė˜ ė •ëŗ´ëĨŧ ëŗŧ ėˆ˜ ė—†ėœŧ늰, ėĩëĒ…ė˜ ė‹œėŠ¤í…œ ęŗ„ė •ėœŧ로 표ė‹œëŠë‹ˆë‹¤." send: "ė „ė†Ą" abuseMarkAsResolved: "해결됨ėœŧ로 표ė‹œ" openInNewTab: "ėƒˆ 탭ė—ė„œ ė—´ę¸°" @@ -680,6 +687,7 @@ center: "가ėš´ë°" wide: "넓게" narrow: "ėĸę˛Œ" reloadToApplySetting: "ė´ ė„¤ė •ė„ ė ėšŠí•˜ë ¤ëŠ´ 페ė´ė§€ëĨŧ ėƒˆëĄœęŗ ėš¨í•´ė•ŧ 합니다. 바로 ėƒˆëĄœęŗ ėš¨í•˜ė‹œę˛ ėŠĩ니까?" +needReloadToApply: "ëŗ€ę˛Ŋ ė‚Ŧ항ė€ ėƒˆëĄœęŗ ėš¨í•˜ëŠ´ ė ėšŠëŠë‹ˆë‹¤." showTitlebar: "타ė´í‹€ 바ëĨŧ 표ė‹œí•˜ę¸°" clearCache: "ėēė‹œ 비ėš°ę¸°" onlineUsersCount: "{n}ëĒ…ė´ ė ‘ė† ė¤‘" @@ -740,6 +748,7 @@ notRecommended: "ėļ”ė˛œí•˜ė§€ ė•ŠėŒ" botProtection: "Bot ë°Šė–´" instanceBlocking: "ė¸ėŠ¤í„´ėŠ¤ ė°¨ë‹¨" selectAccount: "ęŗ„ė • ė„ íƒ" +switchAccount: "ęŗ„ė • 바꾸기" enabled: "활ė„ąí™”" disabled: "비활ė„ąí™”" quickAction: "ëš ëĨ¸ 동ėž‘" @@ -808,6 +817,11 @@ deleteAccountConfirm: "ęŗ„ė •ė´ ė‚­ė œë˜ęŗ  되돌ëĻ´ ėˆ˜ ė—†ę˛Œ 됩니다. incorrectPassword: "비밀번호가 ė˜Ŧ바ëĨ´ė§€ ė•ŠėŠĩ니다." voteConfirm: "\"{choice}\"ė— íˆŦ표하ė‹œę˛ ėŠĩ니까?" hide: "ėˆ¨ę¸°ę¸°" +leaveGroup: "꡸ëŖš 나가기" +leaveGroupConfirm: "\"{name}\"ė—ė„œ 나갈까ėš”?" +useDrawerReactionPickerForMobile: "ëĒ¨ë°”ėŧė—ė„œ 드로ė–´ 메뉴로 표ė‹œ" +welcomeBackWithName: "환ė˜í•Šë‹ˆë‹¤, {name}님" +clickToFinishEmailVerification: "[{ok}]ëĨŧ 눌ëŸŦ ė´ëŠ”ėŧ ė¸ėĻė„ ė™„ëŖŒí•˜ė„¸ėš”." _emailUnavailable: used: "ė´ 메ėŧ ėŖŧė†ŒëŠ” ė‚ŦėšŠė¤‘ėž…니다" format: "형ė‹ė´ ė˜Ŧ바ëĨ´ė§€ ė•ŠėŠĩ니다" diff --git a/locales/zh-CN.yml b/locales/zh-CN.yml index 5815c92f4..c54e64214 100644 --- a/locales/zh-CN.yml +++ b/locales/zh-CN.yml @@ -235,6 +235,8 @@ resetAreYouSure: "æĸ复éģ˜čŽ¤čŽžįŊŽīŧŸ" saved: "åˇ˛äŋå­˜" messaging: "čŠå¤Š" upload: "æœŦ地上äŧ " +keepOriginalUploading: "äŋį•™åŽŸå›ž" +keepOriginalUploadingDescription: "上äŧ å›žį‰‡æ—ļäŋį•™åŽŸå§‹å›žį‰‡ã€‚å…ŗ闭æ—ļīŧŒæĩč§ˆå™¨äŧšåœ¨ä¸Šäŧ æ—ļį”Ÿæˆä¸€åŧ į”¨äēŽweb发布įš„回į‰‡ã€‚" fromDrive: "äģŽįŊ‘į›˜ä¸­" fromUrl: "äģŽ URL" uploadFromUrl: "äģŽįŊ‘址上äŧ " @@ -619,8 +621,11 @@ reportAbuse: "丞æŠĨ" reportAbuseOf: "丞æŠĨ{name}" fillAbuseReportDescription: "č¯ˇåĄĢ写丞æŠĨįš„č¯Ļįģ†åŽŸå› ã€‚åĻ‚果有寚斚发įš„帖子īŧŒč¯ˇåŒæ—ļåĄĢ写URL地址。" abuseReported: "å†…åŽšåˇ˛å‘é€ã€‚æ„Ÿč°ĸ您įš„æŠĨ告。" +reporter: "æŠĨå‘Šč€…" reporteeOrigin: "丞æŠĨæĨæē" reporterOrigin: "丞æŠĨ者æĨæē" +forwardReport: "将æŠĨ告čŊŦ发įģ™čŋœį¨‹åŽžäž‹" +forwardReportIsAnonymous: "在čŋœį¨‹åŽžäž‹ä¸Šæ˜žį¤ēįš„æŠĨå‘Šč€…æ˜¯åŒŋ名įš„įŗģįģŸč´ĻåˇīŧŒč€Œä¸æ˜¯æ‚¨įš„č´Ļåˇã€‚" send: "发送" abuseMarkAsResolved: "处į†åŽŒæ¯•" openInNewTab: "在新标į­žéĄĩ中打åŧ€" diff --git a/package.json b/package.json index d94567298..5c6f303f1 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "misskey", - "version": "12.102.1", + "version": "12.103.1", "codename": "indigo", "repository": { "type": "git", @@ -46,7 +46,7 @@ "@types/fluent-ffmpeg": "2.1.20", "@typescript-eslint/parser": "5.10.0", "cross-env": "7.0.3", - "cypress": "9.3.1", + "cypress": "9.4.1", "start-server-and-test": "1.14.0", "typescript": "4.5.5" } diff --git a/packages/backend/package.json b/packages/backend/package.json index 3541e803f..e62ca4199 100644 --- a/packages/backend/package.json +++ b/packages/backend/package.json @@ -19,12 +19,11 @@ "@koa/cors": "3.1.0", "@koa/multer": "3.0.0", "@koa/router": "9.0.1", - "@sinonjs/fake-timers": "7.1.2", + "@sinonjs/fake-timers": "9.1.0", "@syuilo/aiscript": "0.11.1", "@types/bcryptjs": "2.4.2", "@types/bull": "3.15.7", "@types/cbor": "6.0.0", - "@types/dateformat": "3.0.1", "@types/escape-regexp": "0.0.1", "@types/glob": "7.2.0", "@types/is-url": "1.2.30", @@ -43,7 +42,7 @@ "@types/koa__multer": "2.0.4", "@types/koa__router": "8.0.11", "@types/mocha": "8.2.3", - "@types/node": "17.0.10", + "@types/node": "17.0.14", "@types/node-fetch": "3.0.3", "@types/nodemailer": "6.4.4", "@types/oauth": "0.9.1", @@ -58,41 +57,39 @@ "@types/rename": "1.0.4", "@types/request-stats": "3.0.0", "@types/sanitize-html": "2.6.2", - "@types/seedrandom": "2.4.28", + "@types/seedrandom": "3.0.1", "@types/sharp": "0.29.5", - "@types/sinonjs__fake-timers": "6.0.4", + "@types/sinonjs__fake-timers": "8.1.1", "@types/speakeasy": "2.0.7", "@types/throttle-debounce": "2.1.0", "@types/tinycolor2": "1.4.3", "@types/tmp": "0.2.3", "@types/uuid": "8.3.4", "@types/web-push": "3.3.2", - "@types/webpack": "5.28.0", - "@types/webpack-stream": "3.2.12", - "@types/websocket": "1.0.4", + "@types/websocket": "1.0.5", "@types/ws": "8.2.2", - "@typescript-eslint/eslint-plugin": "5.10.0", - "@typescript-eslint/parser": "5.10.0", + "@typescript-eslint/eslint-plugin": "5.10.2", + "@typescript-eslint/parser": "5.10.2", "abort-controller": "3.0.0", "archiver": "5.3.0", "autobind-decorator": "2.4.0", "autwh": "0.1.0", - "aws-sdk": "2.1061.0", + "aws-sdk": "2.1067.0", "bcryptjs": "2.4.3", "blurhash": "1.1.4", "broadcast-channel": "4.9.0", - "bull": "4.2.1", + "bull": "4.5.0", "cacheable-lookup": "6.0.4", "cafy": "15.2.1", "cbor": "8.1.0", "chalk": "4.1.2", "cli-highlight": "2.1.11", "content-disposition": "0.5.4", - "crc-32": "1.2.0", - "dateformat": "4.5.1", + "crc-32": "1.2.1", + "date-fns": "2.28.0", "deep-email-validator": "0.1.21", "escape-regexp": "0.0.1", - "eslint": "8.7.0", + "eslint": "8.8.0", "eslint-plugin-import": "2.25.4", "eventemitter3": "4.0.7", "feed": "4.2.2", @@ -105,7 +102,7 @@ "ip-cidr": "3.0.4", "is-svg": "4.3.2", "js-yaml": "4.1.0", - "jsdom": "16.7.0", + "jsdom": "19.0.0", "json5": "2.2.0", "json5-loader": "4.0.1", "jsonld": "5.2.0", @@ -134,7 +131,7 @@ "pg": "8.7.1", "portscanner": "2.2.0", "private-ip": "2.3.3", - "probe-image-size": "7.2.2", + "probe-image-size": "7.2.3", "promise-limit": "2.7.0", "pug": "3.0.2", "punycode": "2.1.1", @@ -153,14 +150,14 @@ "s-age": "1.1.2", "sanitize-html": "2.6.1", "seedrandom": "3.0.5", - "sharp": "0.29.3", + "sharp": "0.30.0", "speakeasy": "2.0.0", "strict-event-emitter-types": "2.0.0", "stringz": "2.1.0", "style-loader": "3.3.1", "summaly": "2.5.0", "syslog-pro": "1.0.0", - "systeminformation": "5.9.9", + "systeminformation": "5.11.0", "throttle-debounce": "3.0.1", "tinycolor2": "1.4.2", "tmp": "0.2.1", diff --git a/packages/backend/@types/hcaptcha.d.ts b/packages/backend/src/@types/hcaptcha.d.ts similarity index 100% rename from packages/backend/@types/hcaptcha.d.ts rename to packages/backend/src/@types/hcaptcha.d.ts diff --git a/packages/backend/@types/http-signature.d.ts b/packages/backend/src/@types/http-signature.d.ts similarity index 100% rename from packages/backend/@types/http-signature.d.ts rename to packages/backend/src/@types/http-signature.d.ts diff --git a/packages/backend/@types/jsrsasign.d.ts b/packages/backend/src/@types/jsrsasign.d.ts similarity index 100% rename from packages/backend/@types/jsrsasign.d.ts rename to packages/backend/src/@types/jsrsasign.d.ts diff --git a/packages/backend/@types/koa-json-body.d.ts b/packages/backend/src/@types/koa-json-body.d.ts similarity index 100% rename from packages/backend/@types/koa-json-body.d.ts rename to packages/backend/src/@types/koa-json-body.d.ts diff --git a/packages/backend/@types/koa-slow.d.ts b/packages/backend/src/@types/koa-slow.d.ts similarity index 100% rename from packages/backend/@types/koa-slow.d.ts rename to packages/backend/src/@types/koa-slow.d.ts diff --git a/packages/backend/@types/langmap.d.ts b/packages/backend/src/@types/langmap.d.ts similarity index 100% rename from packages/backend/@types/langmap.d.ts rename to packages/backend/src/@types/langmap.d.ts diff --git a/packages/backend/@types/os-utils.d.ts b/packages/backend/src/@types/os-utils.d.ts similarity index 100% rename from packages/backend/@types/os-utils.d.ts rename to packages/backend/src/@types/os-utils.d.ts diff --git a/packages/backend/@types/package.json.d.ts b/packages/backend/src/@types/package.json.d.ts similarity index 100% rename from packages/backend/@types/package.json.d.ts rename to packages/backend/src/@types/package.json.d.ts diff --git a/packages/backend/@types/probe-image-size.d.ts b/packages/backend/src/@types/probe-image-size.d.ts similarity index 100% rename from packages/backend/@types/probe-image-size.d.ts rename to packages/backend/src/@types/probe-image-size.d.ts diff --git a/packages/backend/src/mfm/from-html.ts b/packages/backend/src/mfm/from-html.ts index fc6d3b306..21e5ebb7a 100644 --- a/packages/backend/src/mfm/from-html.ts +++ b/packages/backend/src/mfm/from-html.ts @@ -5,9 +5,7 @@ import { URL } from 'url'; const urlRegex = /^https?:\/\/[\w\/:%#@$&?!()\[\]~.,=+\-]+/; const urlRegexFull = /^https?:\/\/[\w\/:%#@$&?!()\[\]~.,=+\-]+$/; -export function fromHtml(html: string, hashtagNames?: string[]): string | null { - if (html == null) return null; - +export function fromHtml(html: string, hashtagNames?: string[]): string { const dom = parse5.parseFragment(html); let text = ''; diff --git a/packages/backend/src/misc/before-shutdown.ts b/packages/backend/src/misc/before-shutdown.ts index 33abf5fb4..93ac7a1f3 100644 --- a/packages/backend/src/misc/before-shutdown.ts +++ b/packages/backend/src/misc/before-shutdown.ts @@ -24,14 +24,14 @@ const SHUTDOWN_TIMEOUT = 15000; * down the process. * @type {BeforeShutdownListener[]} */ -const shutdownListeners = []; +const shutdownListeners: ((signalOrEvent: string) => void)[] = []; /** * Listen for signals and execute given `fn` function once. * @param {string[]} signals System signals to listen to. * @param {function(string)} fn Function to execute on shutdown. */ -const processOnce = (signals, fn) => { +const processOnce = (signals: string[], fn: (signalOrEvent: string) => void) => { for (const sig of signals) { process.once(sig, fn); } @@ -41,7 +41,7 @@ const processOnce = (signals, fn) => { * Sets a forced shutdown mechanism that will exit the process after `timeout` milliseconds. * @param {number} timeout Time to wait before forcing shutdown (milliseconds) */ -const forceExitAfter = timeout => () => { +const forceExitAfter = (timeout: number) => () => { setTimeout(() => { // Force shutdown after timeout console.warn(`Could not close resources gracefully after ${timeout}ms: forcing shutdown`); @@ -55,7 +55,7 @@ const forceExitAfter = timeout => () => { * be logged out as a warning, but won't prevent other callbacks from executing. * @param {string} signalOrEvent The exit signal or event name received on the process. */ -async function shutdownHandler(signalOrEvent) { +async function shutdownHandler(signalOrEvent: string) { if (process.env.NODE_ENV === 'test') return process.exit(0); console.warn(`Shutting down: received [${signalOrEvent}] signal`); @@ -64,7 +64,9 @@ async function shutdownHandler(signalOrEvent) { try { await listener(signalOrEvent); } catch (err) { - console.warn(`A shutdown handler failed before completing with: ${err.message || err}`); + if (err instanceof Error) { + console.warn(`A shutdown handler failed before completing with: ${err.message || err}`); + } } } @@ -78,7 +80,7 @@ async function shutdownHandler(signalOrEvent) { * @param {BeforeShutdownListener} listener The shutdown listener to register. * @returns {BeforeShutdownListener} Echoes back the supplied `listener`. */ -export function beforeShutdown(listener) { +export function beforeShutdown(listener: () => void) { shutdownListeners.push(listener); return listener; } diff --git a/packages/backend/src/misc/download-url.ts b/packages/backend/src/misc/download-url.ts index 8e1f7b9e2..ba2fa9fae 100644 --- a/packages/backend/src/misc/download-url.ts +++ b/packages/backend/src/misc/download-url.ts @@ -38,7 +38,9 @@ export async function downloadUrl(url: string, path: string): Promise { https: httpsAgent, }, http2: false, // default - retry: 0, + retry: { + limit: 0, + }, }).on('response', (res: Got.Response) => { if ((process.env.NODE_ENV === 'production' || process.env.NODE_ENV === 'test') && !config.proxy && res.ip) { if (isPrivateIp(res.ip)) { @@ -75,7 +77,7 @@ export async function downloadUrl(url: string, path: string): Promise { logger.succ(`Download finished: ${chalk.cyan(url)}`); } -function isPrivateIp(ip: string) { +function isPrivateIp(ip: string): boolean { for (const net of config.allowedPrivateNetworks || []) { const cidr = new IPCIDR(net); if (cidr.contains(ip)) { diff --git a/packages/backend/src/misc/gen-identicon.ts b/packages/backend/src/misc/gen-identicon.ts index 5cedd7afa..fca67fcf2 100644 --- a/packages/backend/src/misc/gen-identicon.ts +++ b/packages/backend/src/misc/gen-identicon.ts @@ -39,7 +39,7 @@ const sideN = Math.floor(n / 2); */ export function genIdenticon(seed: string, stream: WriteStream): Promise { const rand = gen.create(seed); - const canvas = p.make(size, size); + const canvas = p.make(size, size, undefined); const ctx = canvas.getContext('2d'); ctx.fillStyle = bg; diff --git a/packages/backend/src/misc/is-duplicate-key-value-error.ts b/packages/backend/src/misc/is-duplicate-key-value-error.ts index 23d8ceb1b..04ff191e4 100644 --- a/packages/backend/src/misc/is-duplicate-key-value-error.ts +++ b/packages/backend/src/misc/is-duplicate-key-value-error.ts @@ -1,3 +1,3 @@ -export function isDuplicateKeyValueError(e: Error): boolean { - return e.message.startsWith('duplicate key value'); +export function isDuplicateKeyValueError(e: unknown | Error): boolean { + return (e as any).message && (e as Error).message.startsWith('duplicate key value'); } diff --git a/packages/backend/src/models/repositories/abuse-user-report.ts b/packages/backend/src/models/repositories/abuse-user-report.ts index 943b65eb6..144195855 100644 --- a/packages/backend/src/models/repositories/abuse-user-report.ts +++ b/packages/backend/src/models/repositories/abuse-user-report.ts @@ -12,7 +12,7 @@ export class AbuseUserReportRepository extends Repository { return await awaitAll({ id: report.id, - createdAt: report.createdAt, + createdAt: report.createdAt.toISOString(), comment: report.comment, resolved: report.resolved, reporterId: report.reporterId, diff --git a/packages/backend/src/models/repositories/moderation-logs.ts b/packages/backend/src/models/repositories/moderation-logs.ts index 1585d5bfc..f530613bc 100644 --- a/packages/backend/src/models/repositories/moderation-logs.ts +++ b/packages/backend/src/models/repositories/moderation-logs.ts @@ -12,7 +12,7 @@ export class ModerationLogRepository extends Repository { return await awaitAll({ id: log.id, - createdAt: log.createdAt, + createdAt: log.createdAt.toISOString(), type: log.type, info: log.info, userId: log.userId, diff --git a/packages/backend/src/models/repositories/note-favorite.ts b/packages/backend/src/models/repositories/note-favorite.ts index c5de55c0c..f4cd64e39 100644 --- a/packages/backend/src/models/repositories/note-favorite.ts +++ b/packages/backend/src/models/repositories/note-favorite.ts @@ -13,7 +13,7 @@ export class NoteFavoriteRepository extends Repository { return { id: favorite.id, - createdAt: favorite.createdAt, + createdAt: favorite.createdAt.toISOString(), noteId: favorite.noteId, note: await Notes.pack(favorite.note || favorite.noteId, me), }; diff --git a/packages/backend/src/queue/processors/db/export-blocking.ts b/packages/backend/src/queue/processors/db/export-blocking.ts index 01edaaeb6..f4de9ce00 100644 --- a/packages/backend/src/queue/processors/db/export-blocking.ts +++ b/packages/backend/src/queue/processors/db/export-blocking.ts @@ -4,7 +4,7 @@ import * as fs from 'fs'; import { queueLogger } from '../../logger'; import { addFile } from '@/services/drive/add-file'; -import * as dateFormat from 'dateformat'; +import { format as dateFormat } from 'date-fns'; import { getFullApAccount } from '@/misc/convert-host'; import { Users, Blockings } from '@/models/index'; import { MoreThan } from 'typeorm'; @@ -85,7 +85,7 @@ export async function exportBlocking(job: Bull.Job, done: any): P stream.end(); logger.succ(`Exported to: ${path}`); - const fileName = 'blocking-' + dateFormat(new Date(), 'yyyy-mm-dd-HH-MM-ss') + '.csv'; + const fileName = 'blocking-' + dateFormat(new Date(), 'yyyy-MM-dd-HH-mm-ss') + '.csv'; const driveFile = await addFile({ user, path, name: fileName, force: true }); logger.succ(`Exported to: ${driveFile.id}`); diff --git a/packages/backend/src/queue/processors/db/export-custom-emojis.ts b/packages/backend/src/queue/processors/db/export-custom-emojis.ts index 240a542fe..2f7505f15 100644 --- a/packages/backend/src/queue/processors/db/export-custom-emojis.ts +++ b/packages/backend/src/queue/processors/db/export-custom-emojis.ts @@ -7,7 +7,7 @@ const mime = require('mime-types'); const archiver = require('archiver'); import { queueLogger } from '../../logger'; import { addFile } from '@/services/drive/add-file'; -import * as dateFormat from 'dateformat'; +import { format as dateFormat } from 'date-fns'; import { Users, Emojis } from '@/models/index'; import { } from '@/queue/types'; import { downloadUrl } from '@/misc/download-url'; @@ -110,7 +110,7 @@ export async function exportCustomEmojis(job: Bull.Job, done: () => void): Promi archiveStream.on('close', async () => { logger.succ(`Exported to: ${archivePath}`); - const fileName = 'custom-emojis-' + dateFormat(new Date(), 'yyyy-mm-dd-HH-MM-ss') + '.zip'; + const fileName = 'custom-emojis-' + dateFormat(new Date(), 'yyyy-MM-dd-HH-mm-ss') + '.zip'; const driveFile = await addFile({ user, path: archivePath, name: fileName, force: true }); logger.succ(`Exported to: ${driveFile.id}`); diff --git a/packages/backend/src/queue/processors/db/export-following.ts b/packages/backend/src/queue/processors/db/export-following.ts index 06572acec..2ac558381 100644 --- a/packages/backend/src/queue/processors/db/export-following.ts +++ b/packages/backend/src/queue/processors/db/export-following.ts @@ -4,7 +4,7 @@ import * as fs from 'fs'; import { queueLogger } from '../../logger'; import { addFile } from '@/services/drive/add-file'; -import * as dateFormat from 'dateformat'; +import { format as dateFormat } from 'date-fns'; import { getFullApAccount } from '@/misc/convert-host'; import { Users, Followings, Mutings } from '@/models/index'; import { In, MoreThan, Not } from 'typeorm'; @@ -86,7 +86,7 @@ export async function exportFollowing(job: Bull.Job, done: () => stream.end(); logger.succ(`Exported to: ${path}`); - const fileName = 'following-' + dateFormat(new Date(), 'yyyy-mm-dd-HH-MM-ss') + '.csv'; + const fileName = 'following-' + dateFormat(new Date(), 'yyyy-MM-dd-HH-mm-ss') + '.csv'; const driveFile = await addFile({ user, path, name: fileName, force: true }); logger.succ(`Exported to: ${driveFile.id}`); diff --git a/packages/backend/src/queue/processors/db/export-mute.ts b/packages/backend/src/queue/processors/db/export-mute.ts index 4a856f8ef..9e917ccbf 100644 --- a/packages/backend/src/queue/processors/db/export-mute.ts +++ b/packages/backend/src/queue/processors/db/export-mute.ts @@ -4,7 +4,7 @@ import * as fs from 'fs'; import { queueLogger } from '../../logger'; import { addFile } from '@/services/drive/add-file'; -import * as dateFormat from 'dateformat'; +import { format as dateFormat } from 'date-fns'; import { getFullApAccount } from '@/misc/convert-host'; import { Users, Mutings } from '@/models/index'; import { MoreThan } from 'typeorm'; @@ -85,7 +85,7 @@ export async function exportMute(job: Bull.Job, done: any): Promi stream.end(); logger.succ(`Exported to: ${path}`); - const fileName = 'mute-' + dateFormat(new Date(), 'yyyy-mm-dd-HH-MM-ss') + '.csv'; + const fileName = 'mute-' + dateFormat(new Date(), 'yyyy-MM-dd-HH-mm-ss') + '.csv'; const driveFile = await addFile({ user, path, name: fileName, force: true }); logger.succ(`Exported to: ${driveFile.id}`); diff --git a/packages/backend/src/queue/processors/db/export-notes.ts b/packages/backend/src/queue/processors/db/export-notes.ts index 305abf44c..0e65cb884 100644 --- a/packages/backend/src/queue/processors/db/export-notes.ts +++ b/packages/backend/src/queue/processors/db/export-notes.ts @@ -4,7 +4,7 @@ import * as fs from 'fs'; import { queueLogger } from '../../logger'; import { addFile } from '@/services/drive/add-file'; -import * as dateFormat from 'dateformat'; +import { format as dateFormat } from 'date-fns'; import { Users, Notes, Polls } from '@/models/index'; import { MoreThan } from 'typeorm'; import { Note } from '@/models/entities/note'; @@ -94,7 +94,7 @@ export async function exportNotes(job: Bull.Job, done: any): Prom stream.end(); logger.succ(`Exported to: ${path}`); - const fileName = 'notes-' + dateFormat(new Date(), 'yyyy-mm-dd-HH-MM-ss') + '.json'; + const fileName = 'notes-' + dateFormat(new Date(), 'yyyy-MM-dd-HH-mm-ss') + '.json'; const driveFile = await addFile({ user, path, name: fileName, force: true }); logger.succ(`Exported to: ${driveFile.id}`); diff --git a/packages/backend/src/queue/processors/db/export-user-lists.ts b/packages/backend/src/queue/processors/db/export-user-lists.ts index f907cf952..fcd2ba336 100644 --- a/packages/backend/src/queue/processors/db/export-user-lists.ts +++ b/packages/backend/src/queue/processors/db/export-user-lists.ts @@ -4,7 +4,7 @@ import * as fs from 'fs'; import { queueLogger } from '../../logger'; import { addFile } from '@/services/drive/add-file'; -import * as dateFormat from 'dateformat'; +import { format as dateFormat } from 'date-fns'; import { getFullApAccount } from '@/misc/convert-host'; import { Users, UserLists, UserListJoinings } from '@/models/index'; import { In } from 'typeorm'; @@ -62,7 +62,7 @@ export async function exportUserLists(job: Bull.Job, done: any): stream.end(); logger.succ(`Exported to: ${path}`); - const fileName = 'user-lists-' + dateFormat(new Date(), 'yyyy-mm-dd-HH-MM-ss') + '.csv'; + const fileName = 'user-lists-' + dateFormat(new Date(), 'yyyy-MM-dd-HH-mm-ss') + '.csv'; const driveFile = await addFile({ user, path, name: fileName, force: true }); logger.succ(`Exported to: ${driveFile.id}`); diff --git a/packages/backend/src/queue/processors/db/import-custom-emojis.ts b/packages/backend/src/queue/processors/db/import-custom-emojis.ts index 04e93671e..b6c012653 100644 --- a/packages/backend/src/queue/processors/db/import-custom-emojis.ts +++ b/packages/backend/src/queue/processors/db/import-custom-emojis.ts @@ -41,7 +41,9 @@ export async function importCustomEmojis(job: Bull.Job, don fs.writeFileSync(destPath, '', 'binary'); await downloadUrl(file.url, destPath); } catch (e) { // TODO: äŊ•åēĻか再čŠĻ行 - logger.error(e); + if (e instanceof Error || typeof e === 'string') { + logger.error(e); + } throw e; } diff --git a/packages/backend/src/queue/processors/db/import-user-lists.ts b/packages/backend/src/queue/processors/db/import-user-lists.ts index e060e86dd..9b3c0ed60 100644 --- a/packages/backend/src/queue/processors/db/import-user-lists.ts +++ b/packages/backend/src/queue/processors/db/import-user-lists.ts @@ -51,7 +51,6 @@ export async function importUserLists(job: Bull.Job, done: createdAt: new Date(), userId: user.id, name: listName, - userIds: [], }).then(x => UserLists.findOneOrFail(x.identifiers[0])); } @@ -67,9 +66,9 @@ export async function importUserLists(job: Bull.Job, done: target = await resolveUser(username, host); } - if (await UserListJoinings.findOne({ userListId: list.id, userId: target.id }) != null) continue; + if (await UserListJoinings.findOne({ userListId: list!.id, userId: target.id }) != null) continue; - pushUserToUserList(target, list); + pushUserToUserList(target, list!); } catch (e) { logger.warn(`Error in line:${linenum} ${e}`); } diff --git a/packages/backend/src/queue/processors/inbox.ts b/packages/backend/src/queue/processors/inbox.ts index bfdebc007..82a0de966 100644 --- a/packages/backend/src/queue/processors/inbox.ts +++ b/packages/backend/src/queue/processors/inbox.ts @@ -54,10 +54,12 @@ export default async (job: Bull.Job): Promise => { authUser = await dbResolver.getAuthUserFromApId(getApId(activity.actor)); } catch (e) { // å¯žčąĄãŒ4xxãĒら゚キップ - if (e instanceof StatusError && e.isClientError) { - return `skip: Ignored deleted actors on both ends ${activity.actor} - ${e.statusCode}`; + if (e instanceof StatusError) { + if (e.isClientError) { + return `skip: Ignored deleted actors on both ends ${activity.actor} - ${e.statusCode}`; + } + throw `Error in actor ${activity.actor} - ${e.statusCode || e}`; } - throw `Error in actor ${activity.actor} - ${e.statusCode || e}`; } } diff --git a/packages/backend/src/remote/activitypub/kernel/announce/note.ts b/packages/backend/src/remote/activitypub/kernel/announce/note.ts index e9158f775..eae92d418 100644 --- a/packages/backend/src/remote/activitypub/kernel/announce/note.ts +++ b/packages/backend/src/remote/activitypub/kernel/announce/note.ts @@ -42,11 +42,14 @@ export default async function(resolver: Resolver, actor: IRemoteUser, activity: renote = await resolveNote(targetUri); } catch (e) { // å¯žčąĄãŒ4xxãĒら゚キップ - if (e instanceof StatusError && e.isClientError) { - logger.warn(`Ignored announce target ${targetUri} - ${e.statusCode}`); - return; + if (e instanceof StatusError) { + if (e.isClientError) { + logger.warn(`Ignored announce target ${targetUri} - ${e.statusCode}`); + return; + } + + logger.warn(`Error in announce target ${targetUri} - ${e.statusCode || e}`); } - logger.warn(`Error in announce target ${targetUri} - ${e.statusCode || e}`); throw e; } diff --git a/packages/backend/src/remote/activitypub/kernel/flag/index.ts b/packages/backend/src/remote/activitypub/kernel/flag/index.ts index aec6d2daa..d910e2ebe 100644 --- a/packages/backend/src/remote/activitypub/kernel/flag/index.ts +++ b/packages/backend/src/remote/activitypub/kernel/flag/index.ts @@ -10,7 +10,7 @@ export default async (actor: IRemoteUser, activity: IFlag): Promise => { // å¯žčąĄãƒĻãƒŧã‚ļãƒŧは一į•Ē最初ぎãƒĻãƒŧã‚ļãƒŧ としãĻ あとはã‚ŗãƒĄãƒŗトとしãĻæ ŧį´ã™ã‚‹ const uris = getApIds(activity.object); - const userIds = uris.filter(uri => uri.startsWith(config.url + '/users/')).map(uri => uri.split('/').pop()); + const userIds = uris.filter(uri => uri.startsWith(config.url + '/users/')).map(uri => uri.split('/').pop()!); const users = await Users.find({ id: In(userIds), }); diff --git a/packages/backend/src/remote/activitypub/kernel/index.ts b/packages/backend/src/remote/activitypub/kernel/index.ts index 20df28eec..a103e5a1b 100644 --- a/packages/backend/src/remote/activitypub/kernel/index.ts +++ b/packages/backend/src/remote/activitypub/kernel/index.ts @@ -25,8 +25,10 @@ export async function performActivity(actor: IRemoteUser, activity: IObject) { const act = await resolver.resolve(item); try { await performOneActivity(actor, act); - } catch (e) { - apLogger.error(e); + } catch (err) { + if (err instanceof Error || typeof err === 'string') { + apLogger.error(err); + } } } } else { diff --git a/packages/backend/src/remote/activitypub/misc/ld-signature.ts b/packages/backend/src/remote/activitypub/misc/ld-signature.ts index 946914bfa..3b799c755 100644 --- a/packages/backend/src/remote/activitypub/misc/ld-signature.ts +++ b/packages/backend/src/remote/activitypub/misc/ld-signature.ts @@ -24,7 +24,7 @@ export class LdSignature { } as { type: string; creator: string; - domain: string; + domain?: string; nonce: string; created: string; }; @@ -114,7 +114,7 @@ export class LdSignature { Accept: 'application/ld+json, application/json', }, timeout: this.loderTimeout, - agent: u => u.protocol == 'http:' ? httpAgent : httpsAgent, + agent: u => u.protocol === 'http:' ? httpAgent : httpsAgent, }).then(res => { if (!res.ok) { throw `${res.status} ${res.statusText}`; diff --git a/packages/backend/src/remote/activitypub/renderer/note.ts b/packages/backend/src/remote/activitypub/renderer/note.ts index 4f9a372b2..654ab6812 100644 --- a/packages/backend/src/remote/activitypub/renderer/note.ts +++ b/packages/backend/src/remote/activitypub/renderer/note.ts @@ -11,7 +11,7 @@ import { In } from 'typeorm'; import { Emoji } from '@/models/entities/emoji'; import { Poll } from '@/models/entities/poll'; -export default async function renderNote(note: Note, dive = true, isTalk = false): Promise { +export default async function renderNote(note: Note, dive = true, isTalk = false): Promise> { const getPromisedFiles = async (ids: string[]) => { if (!ids || ids.length === 0) return []; const items = await DriveFiles.find({ id: In(ids) }); diff --git a/packages/backend/src/remote/activitypub/renderer/ordered-collection.ts b/packages/backend/src/remote/activitypub/renderer/ordered-collection.ts index c4b4337af..ff9a77be3 100644 --- a/packages/backend/src/remote/activitypub/renderer/ordered-collection.ts +++ b/packages/backend/src/remote/activitypub/renderer/ordered-collection.ts @@ -6,7 +6,14 @@ * @param last URL of last page (optional) * @param orderedItems attached objects (optional) */ -export default function(id: string | null, totalItems: any, first?: string, last?: string, orderedItems?: Record) { +export default function(id: string | null, totalItems: any, first?: string, last?: string, orderedItems?: Record[]): { + id: string | null; + type: 'OrderedCollection'; + totalItems: any; + first?: string; + last?: string; + orderedItems?: Record[]; +} { const page: any = { id, type: 'OrderedCollection', diff --git a/packages/backend/src/server/activitypub/featured.ts b/packages/backend/src/server/activitypub/featured.ts index 40b8d8cc8..ed5bfc426 100644 --- a/packages/backend/src/server/activitypub/featured.ts +++ b/packages/backend/src/server/activitypub/featured.ts @@ -32,7 +32,7 @@ export default async (ctx: Router.RouterContext) => { const rendered = renderOrderedCollection( `${config.url}/users/${userId}/collections/featured`, - renderedNotes.length, undefined, undefined, renderedNotes + renderedNotes.length, undefined, undefined, renderedNotes, ); ctx.body = renderActivity(rendered); diff --git a/packages/backend/src/server/api/api-handler.ts b/packages/backend/src/server/api/api-handler.ts index faa35d12d..362bbb0f5 100644 --- a/packages/backend/src/server/api/api-handler.ts +++ b/packages/backend/src/server/api/api-handler.ts @@ -32,7 +32,7 @@ export default (endpoint: IEndpoint, ctx: Koa.Context) => new Promise((res) => { // Authentication authenticate(body['i']).then(([user, app]) => { // API invoking - call(endpoint.name, user, app, body, (ctx as any).file).then((res: any) => { + call(endpoint.name, user, app, body, ctx).then((res: any) => { reply(res); }).catch((e: ApiError) => { reply(e.httpStatusCode ? e.httpStatusCode : e.kind === 'client' ? 400 : 500, e); diff --git a/packages/backend/src/server/api/call.ts b/packages/backend/src/server/api/call.ts index 399ee65bd..ea9ab3ccb 100644 --- a/packages/backend/src/server/api/call.ts +++ b/packages/backend/src/server/api/call.ts @@ -1,3 +1,4 @@ +import * as Koa from 'koa'; import { performance } from 'perf_hooks'; import { limiter } from './limiter'; import { User } from '@/models/entities/user'; @@ -12,7 +13,7 @@ const accessDenied = { id: '56f35758-7dd5-468b-8439-5d6fb8ec9b8e', }; -export default async (endpoint: string, user: User | null | undefined, token: AccessToken | null | undefined, data: any, file?: any) => { +export default async (endpoint: string, user: User | null | undefined, token: AccessToken | null | undefined, data: any, ctx?: Koa.Context) => { const isSecure = user != null && token == null; const ep = endpoints.find(e => e.name === endpoint); @@ -76,9 +77,20 @@ export default async (endpoint: string, user: User | null | undefined, token: Ac }); } + // Cast non JSON input + if (ep.meta.requireFile && ep.meta.params) { + const body = (ctx!.request as any).body; + for (const k of Object.keys(ep.meta.params)) { + const param = ep.meta.params[k]; + if (['Boolean', 'Number'].includes(param.validator.name) && typeof body[k] === 'string') { + body[k] = JSON.parse(body[k]); + } + } + } + // API invoking const before = performance.now(); - return await ep.exec(data, user, token, file).catch((e: Error) => { + return await ep.exec(data, user, token, ctx?.file).catch((e: Error) => { if (e instanceof ApiError) { throw e; } else { diff --git a/packages/backend/src/server/api/endpoints/admin/resolve-abuse-user-report.ts b/packages/backend/src/server/api/endpoints/admin/resolve-abuse-user-report.ts index b00457f09..a47b69ec1 100644 --- a/packages/backend/src/server/api/endpoints/admin/resolve-abuse-user-report.ts +++ b/packages/backend/src/server/api/endpoints/admin/resolve-abuse-user-report.ts @@ -36,9 +36,9 @@ export default define(meta, async (ps, me) => { if (ps.forward && report.targetUserHost != null) { const actor = await getInstanceActor(); - const targetUser = await Users.findOne(report.targetUserId); + const targetUser = await Users.findOneOrFail(report.targetUserId); - deliver(actor, renderActivity(renderFlag(actor, [targetUser.uri], report.comment)), targetUser.inbox); + deliver(actor, renderActivity(renderFlag(actor, [targetUser.uri!], report.comment)), targetUser.inbox); } await AbuseUserReports.update(report.id, { diff --git a/packages/backend/src/server/api/endpoints/admin/show-user.ts b/packages/backend/src/server/api/endpoints/admin/show-user.ts index c2a6a294b..0d0cc9087 100644 --- a/packages/backend/src/server/api/endpoints/admin/show-user.ts +++ b/packages/backend/src/server/api/endpoints/admin/show-user.ts @@ -18,144 +18,6 @@ export const meta = { res: { type: 'object', nullable: false, optional: false, - properties: { - id: { - type: 'string', - nullable: false, optional: false, - format: 'id', - }, - createdAt: { - type: 'string', - nullable: false, optional: false, - format: 'date-time', - }, - updatedAt: { - type: 'string', - nullable: true, optional: false, - format: 'date-time', - }, - lastFetchedAt: { - type: 'string', - nullable: true, optional: false, - }, - username: { - type: 'string', - nullable: false, optional: false, - }, - name: { - type: 'string', - nullable: true, optional: false, - }, - folowersCount: { - type: 'number', - nullable: false, optional: true, - }, - followingCount: { - type: 'number', - nullable: false, optional: false, - }, - notesCount: { - type: 'number', - nullable: false, optional: false, - }, - avatarId: { - type: 'string', - nullable: true, optional: false, - }, - bannerId: { - type: 'string', - nullable: true, optional: false, - }, - tags: { - type: 'array', - nullable: false, optional: false, - items: { - type: 'string', - nullable: false, optional: false, - }, - }, - avatarUrl: { - type: 'string', - nullable: true, optional: false, - format: 'url', - }, - bannerUrl: { - type: 'string', - nullable: true, optional: false, - format: 'url', - }, - avatarBlurhash: { - type: 'any', - nullable: true, optional: false, - default: null, - }, - bannerBlurhash: { - type: 'any', - nullable: true, optional: false, - default: null, - }, - isSuspended: { - type: 'boolean', - nullable: false, optional: false, - }, - isSilenced: { - type: 'boolean', - nullable: false, optional: false, - }, - isLocked: { - type: 'boolean', - nullable: false, optional: false, - }, - isBot: { - type: 'boolean', - nullable: false, optional: false, - }, - isCat: { - type: 'boolean', - nullable: false, optional: false, - }, - isAdmin: { - type: 'boolean', - nullable: false, optional: false, - }, - isModerator: { - type: 'boolean', - nullable: false, optional: false, - }, - emojis: { - type: 'array', - nullable: false, optional: false, - items: { - type: 'string', - nullable: false, optional: false, - }, - }, - host: { - type: 'string', - nullable: true, optional: false, - }, - inbox: { - type: 'string', - nullable: true, optional: false, - }, - sharedInbox: { - type: 'string', - nullable: true, optional: false, - }, - featured: { - type: 'string', - nullable: true, optional: false, - }, - uri: { - type: 'string', - nullable: true, optional: false, - }, - token: { - type: 'string', - nullable: true, optional: false, - default: '', - }, - }, }, } as const; diff --git a/packages/backend/src/server/api/endpoints/announcements.ts b/packages/backend/src/server/api/endpoints/announcements.ts index 0bd29607d..22c13743a 100644 --- a/packages/backend/src/server/api/endpoints/announcements.ts +++ b/packages/backend/src/server/api/endpoints/announcements.ts @@ -89,5 +89,9 @@ export default define(meta, async (ps, user) => { } } - return ps.withUnreads ? announcements.filter((a: any) => !a.isRead) : announcements; + return (ps.withUnreads ? announcements.filter((a: any) => !a.isRead) : announcements).map((a) => ({ + ...a, + createdAt: a.createdAt.toISOString(), + updatedAt: a.updatedAt?.toISOString() ?? null, + })); }); diff --git a/packages/backend/src/server/api/endpoints/drive/files/create.ts b/packages/backend/src/server/api/endpoints/drive/files/create.ts index dd65ab061..ac7863ec7 100644 --- a/packages/backend/src/server/api/endpoints/drive/files/create.ts +++ b/packages/backend/src/server/api/endpoints/drive/files/create.ts @@ -39,15 +39,13 @@ export const meta = { }, isSensitive: { - validator: $.optional.either($.bool, $.str), + validator: $.optional.bool, default: false, - transform: (v: any): boolean => v === true || v === 'true', }, force: { - validator: $.optional.either($.bool, $.str), + validator: $.optional.bool, default: false, - transform: (v: any): boolean => v === true || v === 'true', }, }, @@ -88,7 +86,9 @@ export default define(meta, async (ps, user, _, file, cleanup) => { const driveFile = await addFile({ user, path: file.path, name, comment: ps.comment, folderId: ps.folderId, force: ps.force, sensitive: ps.isSensitive }); return await DriveFiles.pack(driveFile, { self: true }); } catch (e) { - apiLogger.error(e); + if (e instanceof Error || typeof e === 'string') { + apiLogger.error(e); + } throw new ApiError(); } finally { cleanup!(); diff --git a/packages/backend/src/server/api/endpoints/following/create.ts b/packages/backend/src/server/api/endpoints/following/create.ts index 96aede455..b840ab769 100644 --- a/packages/backend/src/server/api/endpoints/following/create.ts +++ b/packages/backend/src/server/api/endpoints/following/create.ts @@ -6,6 +6,7 @@ import define from '../../define'; import { ApiError } from '../../error'; import { getUser } from '../../common/getters'; import { Followings, Users } from '@/models/index'; +import { IdentifiableError } from '@/misc/identifiable-error'; export const meta = { tags: ['following', 'users'], @@ -92,8 +93,10 @@ export default define(meta, async (ps, user) => { try { await create(follower, followee); } catch (e) { - if (e.id === '710e8fb0-b8c3-4922-be49-d5d93d8e6a6e') throw new ApiError(meta.errors.blocking); - if (e.id === '3338392a-f764-498d-8855-db939dcf8c48') throw new ApiError(meta.errors.blocked); + if (e instanceof IdentifiableError) { + if (e.id === '710e8fb0-b8c3-4922-be49-d5d93d8e6a6e') throw new ApiError(meta.errors.blocking); + if (e.id === '3338392a-f764-498d-8855-db939dcf8c48') throw new ApiError(meta.errors.blocked); + } throw e; } diff --git a/packages/backend/src/server/api/endpoints/following/requests/cancel.ts b/packages/backend/src/server/api/endpoints/following/requests/cancel.ts index 19ed02c15..c9abbf36d 100644 --- a/packages/backend/src/server/api/endpoints/following/requests/cancel.ts +++ b/packages/backend/src/server/api/endpoints/following/requests/cancel.ts @@ -5,6 +5,7 @@ import define from '../../../define'; import { ApiError } from '../../../error'; import { getUser } from '../../../common/getters'; import { Users } from '@/models/index'; +import { IdentifiableError } from '@/misc/identifiable-error'; export const meta = { tags: ['following', 'account'], @@ -51,7 +52,9 @@ export default define(meta, async (ps, user) => { try { await cancelFollowRequest(followee, user); } catch (e) { - if (e.id === '17447091-ce07-46dd-b331-c1fd4f15b1e7') throw new ApiError(meta.errors.followRequestNotFound); + if (e instanceof IdentifiableError) { + if (e.id === '17447091-ce07-46dd-b331-c1fd4f15b1e7') throw new ApiError(meta.errors.followRequestNotFound); + } throw e; } diff --git a/packages/backend/src/server/api/endpoints/users/search-by-username-and-host.ts b/packages/backend/src/server/api/endpoints/users/search-by-username-and-host.ts index d67625e62..72e79c882 100644 --- a/packages/backend/src/server/api/endpoints/users/search-by-username-and-host.ts +++ b/packages/backend/src/server/api/endpoints/users/search-by-username-and-host.ts @@ -114,4 +114,6 @@ export default define(meta, async (ps, me) => { return await Users.packMany(users, me, { detail: !!ps.detail }); } + + return []; }); diff --git a/packages/backend/src/server/api/service/discord.ts b/packages/backend/src/server/api/service/discord.ts index f574fe387..dd731c422 100644 --- a/packages/backend/src/server/api/service/discord.ts +++ b/packages/backend/src/server/api/service/discord.ts @@ -11,18 +11,18 @@ import { fetchMeta } from '@/misc/fetch-meta'; import { Users, UserProfiles } from '@/models/index'; import { ILocalUser } from '@/models/entities/user'; -function getUserToken(ctx: Koa.Context) { +function getUserToken(ctx: Koa.BaseContext): string | null { return ((ctx.headers['cookie'] || '').match(/igi=(\w+)/) || [null, null])[1]; } -function compareOrigin(ctx: Koa.Context) { - function normalizeUrl(url: string) { +function compareOrigin(ctx: Koa.BaseContext): boolean { + function normalizeUrl(url?: string): string { return url ? url.endsWith('/') ? url.substr(0, url.length - 1) : url : ''; } const referer = ctx.headers['referer']; - return (normalizeUrl(referer) == normalizeUrl(config.url)); + return (normalizeUrl(referer) === normalizeUrl(config.url)); } // Init router diff --git a/packages/backend/src/server/api/service/github.ts b/packages/backend/src/server/api/service/github.ts index 5e0839df9..b23219986 100644 --- a/packages/backend/src/server/api/service/github.ts +++ b/packages/backend/src/server/api/service/github.ts @@ -11,18 +11,18 @@ import { fetchMeta } from '@/misc/fetch-meta'; import { Users, UserProfiles } from '@/models/index'; import { ILocalUser } from '@/models/entities/user'; -function getUserToken(ctx: Koa.Context) { +function getUserToken(ctx: Koa.BaseContext): string | null { return ((ctx.headers['cookie'] || '').match(/igi=(\w+)/) || [null, null])[1]; } -function compareOrigin(ctx: Koa.Context) { - function normalizeUrl(url: string) { +function compareOrigin(ctx: Koa.BaseContext): boolean { + function normalizeUrl(url?: string): string { return url ? url.endsWith('/') ? url.substr(0, url.length - 1) : url : ''; } const referer = ctx.headers['referer']; - return (normalizeUrl(referer) == normalizeUrl(config.url)); + return (normalizeUrl(referer) === normalizeUrl(config.url)); } // Init router diff --git a/packages/backend/src/server/api/service/twitter.ts b/packages/backend/src/server/api/service/twitter.ts index 8659b82cb..bca00b792 100644 --- a/packages/backend/src/server/api/service/twitter.ts +++ b/packages/backend/src/server/api/service/twitter.ts @@ -10,18 +10,18 @@ import { fetchMeta } from '@/misc/fetch-meta'; import { Users, UserProfiles } from '@/models/index'; import { ILocalUser } from '@/models/entities/user'; -function getUserToken(ctx: Koa.Context) { +function getUserToken(ctx: Koa.BaseContext): string | null { return ((ctx.headers['cookie'] || '').match(/igi=(\w+)/) || [null, null])[1]; } -function compareOrigin(ctx: Koa.Context) { - function normalizeUrl(url: string) { - return url.endsWith('/') ? url.substr(0, url.length - 1) : url; +function compareOrigin(ctx: Koa.BaseContext): boolean { + function normalizeUrl(url?: string): string { + return url == null ? '' : url.endsWith('/') ? url.substr(0, url.length - 1) : url; } const referer = ctx.headers['referer']; - return (normalizeUrl(referer) == normalizeUrl(config.url)); + return (normalizeUrl(referer) === normalizeUrl(config.url)); } // Init router diff --git a/packages/backend/src/server/api/stream/types.ts b/packages/backend/src/server/api/stream/types.ts index e70c26f5e..e2f1c6fc9 100644 --- a/packages/backend/src/server/api/stream/types.ts +++ b/packages/backend/src/server/api/stream/types.ts @@ -105,7 +105,10 @@ export interface NoteStreamTypes { }; reacted: { reaction: string; - emoji?: Emoji; + emoji?: { + name: string; + url: string; + } | null; userId: User['id']; }; unreacted: { diff --git a/packages/backend/src/server/api/streaming.ts b/packages/backend/src/server/api/streaming.ts index ad8731106..b706b1b8d 100644 --- a/packages/backend/src/server/api/streaming.ts +++ b/packages/backend/src/server/api/streaming.ts @@ -59,7 +59,7 @@ module.exports = (server: http.Server) => { }); connection.on('message', async (data) => { - if (data.utf8Data === 'ping') { + if (data.type === 'utf8' && data.utf8Data === 'ping') { connection.send('pong'); } }); diff --git a/packages/backend/src/server/proxy/proxy-media.ts b/packages/backend/src/server/proxy/proxy-media.ts index 0cad41613..7caac382c 100644 --- a/packages/backend/src/server/proxy/proxy-media.ts +++ b/packages/backend/src/server/proxy/proxy-media.ts @@ -11,6 +11,11 @@ import { FILE_TYPE_BROWSERSAFE } from '@/const'; export async function proxyMedia(ctx: Koa.Context) { const url = 'url' in ctx.query ? ctx.query.url : 'https://' + ctx.params.url; + if (typeof url !== 'string') { + ctx.status = 400; + return; + } + // Create temp file const [path, cleanup] = await createTemp(); diff --git a/packages/backend/src/server/web/url-preview.ts b/packages/backend/src/server/web/url-preview.ts index 1af82954e..5effc5122 100644 --- a/packages/backend/src/server/web/url-preview.ts +++ b/packages/backend/src/server/web/url-preview.ts @@ -9,22 +9,34 @@ import { getJson } from '@/misc/fetch'; const logger = new Logger('url-preview'); module.exports = async (ctx: Koa.Context) => { + const url = ctx.query.url; + if (typeof url !== 'string') { + ctx.status = 400; + return; + } + + const lang = ctx.query.lang; + if (Array.isArray(lang)) { + ctx.status = 400; + return; + } + const meta = await fetchMeta(); logger.info(meta.summalyProxy - ? `(Proxy) Getting preview of ${ctx.query.url}@${ctx.query.lang} ...` - : `Getting preview of ${ctx.query.url}@${ctx.query.lang} ...`); + ? `(Proxy) Getting preview of ${url}@${lang} ...` + : `Getting preview of ${url}@${lang} ...`); try { const summary = meta.summalyProxy ? await getJson(`${meta.summalyProxy}?${query({ - url: ctx.query.url, - lang: ctx.query.lang || 'ja-JP', - })}`) : await summaly(ctx.query.url, { + url: url, + lang: lang ?? 'ja-JP', + })}`) : await summaly(url, { followRedirects: false, - lang: ctx.query.lang || 'ja-JP', + lang: lang ?? 'ja-JP', }); - logger.succ(`Got preview of ${ctx.query.url}: ${summary.title}`); + logger.succ(`Got preview of ${url}: ${summary.title}`); summary.icon = wrap(summary.icon); summary.thumbnail = wrap(summary.thumbnail); @@ -33,8 +45,8 @@ module.exports = async (ctx: Koa.Context) => { ctx.set('Cache-Control', 'max-age=604800, immutable'); ctx.body = summary; - } catch (e) { - logger.warn(`Failed to get preview of ${ctx.query.url}: ${e}`); + } catch (err) { + logger.warn(`Failed to get preview of ${url}: ${err}`); ctx.status = 200; ctx.set('Cache-Control', 'max-age=86400, immutable'); ctx.body = '{}'; diff --git a/packages/backend/src/server/web/views/base.pug b/packages/backend/src/server/web/views/base.pug index 42c068c40..8e880bf04 100644 --- a/packages/backend/src/server/web/views/base.pug +++ b/packages/backend/src/server/web/views/base.pug @@ -21,6 +21,7 @@ html meta(name='referrer' content='origin') meta(name='theme-color' content='#86b300') meta(name='theme-color-orig' content='#86b300') + meta(property='twitter:card' content='summary') meta(property='og:site_name' content= instanceName || 'Misskey') meta(name='viewport' content='width=device-width, initial-scale=1') link(rel='icon' href= icon || '/favicon.ico') @@ -42,7 +43,9 @@ html block meta block og - meta(property='og:image' content=img) + meta(property='og:title' content= title || 'Misskey') + meta(property='og:description' content= desc || '✨🌎✨ A interplanetary communication platform ✨🚀✨') + meta(property='og:image' content= img) style include ../style.css diff --git a/packages/backend/src/server/web/views/channel.pug b/packages/backend/src/server/web/views/channel.pug index 273632f0e..486f0ecc4 100644 --- a/packages/backend/src/server/web/views/channel.pug +++ b/packages/backend/src/server/web/views/channel.pug @@ -16,6 +16,3 @@ block og meta(property='og:description' content= channel.description) meta(property='og:url' content= url) meta(property='og:image' content= channel.bannerUrl) - -block meta - meta(name='twitter:card' content='summary') diff --git a/packages/backend/src/server/web/views/clip.pug b/packages/backend/src/server/web/views/clip.pug index 8de53f19d..7a84d50f6 100644 --- a/packages/backend/src/server/web/views/clip.pug +++ b/packages/backend/src/server/web/views/clip.pug @@ -26,8 +26,6 @@ block meta meta(name='misskey:user-id' content=user.id) meta(name='misskey:clip-id' content=clip.id) - meta(name='twitter:card' content='summary') - // todo if user.twitter meta(name='twitter:creator' content=`@${user.twitter.screenName}`) diff --git a/packages/backend/src/server/web/views/gallery-post.pug b/packages/backend/src/server/web/views/gallery-post.pug index 95bbb2437..ca0663a48 100644 --- a/packages/backend/src/server/web/views/gallery-post.pug +++ b/packages/backend/src/server/web/views/gallery-post.pug @@ -25,8 +25,6 @@ block meta meta(name='misskey:user-username' content=user.username) meta(name='misskey:user-id' content=user.id) - meta(name='twitter:card' content='summary') - // todo if user.twitter meta(name='twitter:creator' content=`@${user.twitter.screenName}`) diff --git a/packages/backend/src/server/web/views/note.pug b/packages/backend/src/server/web/views/note.pug index fce91bdab..34b03f983 100644 --- a/packages/backend/src/server/web/views/note.pug +++ b/packages/backend/src/server/web/views/note.pug @@ -26,9 +26,7 @@ block meta meta(name='misskey:user-username' content=user.username) meta(name='misskey:user-id' content=user.id) meta(name='misskey:note-id' content=note.id) - - meta(name='twitter:card' content='summary') - + // todo if user.twitter meta(name='twitter:creator' content=`@${user.twitter.screenName}`) diff --git a/packages/backend/src/server/web/views/page.pug b/packages/backend/src/server/web/views/page.pug index cb9e1039e..b6c954802 100644 --- a/packages/backend/src/server/web/views/page.pug +++ b/packages/backend/src/server/web/views/page.pug @@ -26,8 +26,6 @@ block meta meta(name='misskey:user-id' content=user.id) meta(name='misskey:page-id' content=page.id) - meta(name='twitter:card' content='summary') - // todo if user.twitter meta(name='twitter:creator' content=`@${user.twitter.screenName}`) diff --git a/packages/backend/src/server/web/views/user.pug b/packages/backend/src/server/web/views/user.pug index 1a8a6b441..2adec0f88 100644 --- a/packages/backend/src/server/web/views/user.pug +++ b/packages/backend/src/server/web/views/user.pug @@ -25,8 +25,6 @@ block meta meta(name='misskey:user-username' content=user.username) meta(name='misskey:user-id' content=user.id) - meta(name='twitter:card' content='summary') - if profile.twitter meta(name='twitter:creator' content=`@${profile.twitter.screenName}`) diff --git a/packages/backend/src/services/drive/add-file.ts b/packages/backend/src/services/drive/add-file.ts index 04e9c8dbc..378882461 100644 --- a/packages/backend/src/services/drive/add-file.ts +++ b/packages/backend/src/services/drive/add-file.ts @@ -160,8 +160,8 @@ export async function generateAlts(path: string, type: string, generateWeb: bool webpublic: null, thumbnail, }; - } catch (e) { - logger.warn(`GenerateVideoThumbnail failed: ${e}`); + } catch (err) { + logger.warn(`GenerateVideoThumbnail failed: ${err}`); return { webpublic: null, thumbnail: null, @@ -199,8 +199,8 @@ export async function generateAlts(path: string, type: string, generateWeb: bool metadata.width && metadata.width <= 2048 && metadata.height && metadata.height <= 2048 ); - } catch (e) { - logger.warn(`sharp failed: ${e}`); + } catch (err) { + logger.warn(`sharp failed: ${err}`); return { webpublic: null, thumbnail: null, @@ -221,8 +221,8 @@ export async function generateAlts(path: string, type: string, generateWeb: bool } else { logger.debug(`web image not created (not an required image)`); } - } catch (e) { - logger.warn(`web image not created (an error occured)`, e); + } catch (err) { + logger.warn(`web image not created (an error occured)`, err as Error); } } else { if (satisfyWebpublic) logger.info(`web image not created (original satisfies webpublic)`); @@ -239,8 +239,8 @@ export async function generateAlts(path: string, type: string, generateWeb: bool } else { logger.debug(`thumbnail not created (not an required file)`); } - } catch (e) { - logger.warn(`thumbnail not created (an error occured)`, e); + } catch (err) { + logger.warn(`thumbnail not created (an error occured)`, err as Error); } // #endregion thumbnail @@ -456,9 +456,9 @@ export async function addFile({ file.storedInternal = false; file = await DriveFiles.insert(file).then(x => DriveFiles.findOneOrFail(x.identifiers[0])); - } catch (e) { + } catch (err) { // duplicate key error (when already registered) - if (isDuplicateKeyValueError(e)) { + if (isDuplicateKeyValueError(err)) { logger.info(`already registered ${file.uri}`); file = await DriveFiles.findOne({ @@ -466,8 +466,8 @@ export async function addFile({ userId: user ? user.id : null, }) as DriveFile; } else { - logger.error(e); - throw e; + logger.error(err as Error); + throw err; } } } else { diff --git a/packages/backend/src/services/logger.ts b/packages/backend/src/services/logger.ts index 626cc6b44..1962088b6 100644 --- a/packages/backend/src/services/logger.ts +++ b/packages/backend/src/services/logger.ts @@ -1,6 +1,6 @@ import * as cluster from 'cluster'; import * as chalk from 'chalk'; -import * as dateformat from 'dateformat'; +import { format as dateFormat } from 'date-fns'; import { envOption } from '../env'; import config from '@/config/index'; @@ -57,7 +57,7 @@ export default class Logger { return; } - const time = dateformat(new Date(), 'HH:MM:ss'); + const time = dateFormat(new Date(), 'HH:mm:ss'); const worker = cluster.isPrimary ? '*' : cluster.worker.id; const l = level === 'error' ? important ? chalk.bgRed.white('ERR ') : chalk.red('ERR ') : @@ -116,7 +116,7 @@ export default class Logger { } public debug(message: string, data?: Record | null, important = false): void { // デバッグį”¨ãĢäŊŋう(開į™ē者ãĢåŋ…čĻã ãŒåˆŠį”¨č€…ãĢ不čĻãĒæƒ…å ą) - if (process.env.NODE_ENV != 'production' || envOption.verbose) { + if (process.env.NODE_ENV !== 'production' || envOption.verbose) { this.log('debug', message, data, important); } } diff --git a/packages/backend/src/services/note/create.ts b/packages/backend/src/services/note/create.ts index fb22bd659..cfb1f8c1e 100644 --- a/packages/backend/src/services/note/create.ts +++ b/packages/backend/src/services/note/create.ts @@ -59,7 +59,7 @@ class NotificationManager { if (exist) { // ã€ŒãƒĄãƒŗã‚ˇãƒ§ãƒŗされãĻいるかつčŋ”äŋĄã•ã‚ŒãĻã„ã‚‹ã€å ´åˆã¯ã€ãƒĄãƒŗã‚ˇãƒ§ãƒŗとしãĻぎ通įŸĨではãĒくčŋ”äŋĄã¨ã—ãĻぎ通įŸĨãĢする - if (reason != 'mention') { + if (reason !== 'mention') { exist.reason = reason; } } else { @@ -201,7 +201,7 @@ export default async (user: { id: User['id']; username: User['username']; host: mentionedUsers.push(await Users.findOneOrFail(data.reply.userId)); } - if (data.visibility == 'specified') { + if (data.visibility === 'specified') { if (data.visibleUsers == null) throw new Error('invalid param'); for (const u of data.visibleUsers) { @@ -301,7 +301,7 @@ export default async (user: { id: User['id']; username: User['username']; host: if (Users.isRemoteUser(user)) activeUsersChart.update(user); // æœĒčĒ­é€šįŸĨをäŊœæˆ - if (data.visibility == 'specified') { + if (data.visibility === 'specified') { if (data.visibleUsers == null) throw new Error('invalid param'); for (const u of data.visibleUsers) { @@ -439,7 +439,7 @@ export default async (user: { id: User['id']; username: User['username']; host: async function renderNoteOrRenoteActivity(data: Option, note: Note) { if (data.localOnly) return null; - const content = data.renote && data.text == null && data.poll == null && (data.files == null || data.files.length == 0) + const content = data.renote && data.text == null && data.poll == null && (data.files == null || data.files.length === 0) ? renderAnnounce(data.renote.uri ? data.renote.uri : `${config.url}/notes/${data.renote.id}`, note) : renderCreate(await renderNote(note, false), note); @@ -478,7 +478,7 @@ async function insertNote(user: { id: User['id']; host: User['host']; }, data: O userId: user.id, localOnly: data.localOnly!, visibility: data.visibility as any, - visibleUserIds: data.visibility == 'specified' + visibleUserIds: data.visibility === 'specified' ? data.visibleUsers ? data.visibleUsers.map(u => u.id) : [] @@ -502,7 +502,7 @@ async function insertNote(user: { id: User['id']; host: User['host']; }, data: O insert.mentions = mentionedUsers.map(u => u.id); const profiles = await UserProfiles.find({ userId: In(insert.mentions) }); insert.mentionedRemoteUsers = JSON.stringify(mentionedUsers.filter(u => Users.isRemoteUser(u)).map(u => { - const profile = profiles.find(p => p.userId == u.id); + const profile = profiles.find(p => p.userId === u.id); const url = profile != null ? profile.url : null; return { uri: u.uri, diff --git a/packages/backend/src/services/note/delete.ts b/packages/backend/src/services/note/delete.ts index 64383ee92..77723fe8b 100644 --- a/packages/backend/src/services/note/delete.ts +++ b/packages/backend/src/services/note/delete.ts @@ -39,7 +39,7 @@ export default async function(user: User, note: Note, quiet = false) { let renote: Note | undefined; // if deletd note is renote - if (note.renoteId && note.text == null && !note.hasPoll && (note.fileIds == null || note.fileIds.length == 0)) { + if (note.renoteId && note.text == null && !note.hasPoll && (note.fileIds == null || note.fileIds.length === 0)) { renote = await Notes.findOne({ id: note.renoteId, }); diff --git a/packages/backend/src/services/note/reaction/create.ts b/packages/backend/src/services/note/reaction/create.ts index 47f46419d..c01d43c22 100644 --- a/packages/backend/src/services/note/reaction/create.ts +++ b/packages/backend/src/services/note/reaction/create.ts @@ -76,7 +76,7 @@ export default async (user: { id: User['id']; host: User['host']; }, note: Note, // ã‚Ģã‚šã‚ŋムįĩĩ文字ãƒĒã‚ĸã‚¯ã‚ˇãƒ§ãƒŗだãŖたらįĩĩæ–‡å­—æƒ…å ąã‚‚é€ã‚‹ const decodedReaction = decodeReaction(reaction); - let emoji = await Emojis.findOne({ + const emoji = await Emojis.findOne({ where: { name: decodedReaction.name, host: decodedReaction.host, diff --git a/packages/backend/src/services/note/read.ts b/packages/backend/src/services/note/read.ts index aaf1c5ed7..032f1e84e 100644 --- a/packages/backend/src/services/note/read.ts +++ b/packages/backend/src/services/note/read.ts @@ -52,7 +52,7 @@ export default async function( if (note.user != null) { // たãļんnullãĢãĒることはį„Ąã„はずだけお一åŋœ for (const antenna of myAntennas) { - if (await checkHitAntenna(antenna, note, note.user as any, undefined, Array.from(following))) { + if (await checkHitAntenna(antenna, note, note.user, undefined, Array.from(following))) { readAntennaNotes.push(note); } } diff --git a/packages/backend/src/services/send-email.ts b/packages/backend/src/services/send-email.ts index f5f36148f..1fd406cb6 100644 --- a/packages/backend/src/services/send-email.ts +++ b/packages/backend/src/services/send-email.ts @@ -114,9 +114,9 @@ export async function sendEmail(to: string, subject: string, html: string, text: `, }); - logger.info('Message sent: %s', info.messageId); - } catch (e) { - logger.error(e); - throw e; + logger.info(`Message sent: ${info.messageId}`); + } catch (err) { + logger.error(err as Error); + throw err; } } diff --git a/packages/backend/tsconfig.json b/packages/backend/tsconfig.json index 3311e117d..f3252b286 100644 --- a/packages/backend/tsconfig.json +++ b/packages/backend/tsconfig.json @@ -30,7 +30,7 @@ "outDir": "./built", "typeRoots": [ "./node_modules/@types", - "./@types" + "./src/@types" ], "lib": [ "esnext" diff --git a/packages/backend/yarn.lock b/packages/backend/yarn.lock index 5bf6e05a7..621d426fe 100644 --- a/packages/backend/yarn.lock +++ b/packages/backend/yarn.lock @@ -238,9 +238,9 @@ integrity sha512-JiX9vxoKMmu8Y3Zr2RVathBL1Cdu4Nt4MuNWemt1Nc06A0RAin9c5FArkhGsyMBWfCu4zj+9b+GxtjAnE4qqLQ== "@sindresorhus/is@^4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-4.0.0.tgz#2ff674e9611b45b528896d820d3d7a812de2f0e4" - integrity sha512-FyD2meJpDPjyNQejSjvnhpgI/azsQkA4lGbuu5BQZfjvJ9cbRZXzeWL2HceCekW4lixO9JPesIIQkSoLjeJHNQ== + version "4.4.0" + resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-4.4.0.tgz#e277e5bdbdf7cb1e20d320f02f5e2ed113cd3185" + integrity sha512-QppPM/8l3Mawvh4rn9CNEYIU9bxpXUCRMaX9yUpvBk1nMKusLKpfXGDEKExKaPhLzcn3lzil7pR6rnJ11HgeRQ== "@sinonjs/commons@^1.7.0": version "1.7.2" @@ -249,10 +249,10 @@ dependencies: type-detect "4.0.8" -"@sinonjs/fake-timers@7.1.2": - version "7.1.2" - resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-7.1.2.tgz#2524eae70c4910edccf99b2f4e6efc5894aff7b5" - integrity sha512-iQADsW4LBMISqZ6Ci1dupJL9pprqwcVFTcOsEmQOEhW+KLCVn/Y4Jrvg2k19fIHCp+iFprriYPTdRcQR8NbUPg== +"@sinonjs/fake-timers@9.1.0": + version "9.1.0" + resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-9.1.0.tgz#8c92c56f195e0bed4c893ba59c8e3d55831ca0df" + integrity sha512-M8vapsv9qQupMdzrVzkn5rb9jG7aUTEPAZdMtME2PuBaefksFZVE2C1g4LBRTkF/k3nRDNbDc5tp5NFC1PEYxA== dependencies: "@sinonjs/commons" "^1.7.0" @@ -289,6 +289,11 @@ resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== +"@tootallnate/once@2": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-2.0.0.tgz#f544a148d3ab35801c1f633a7441fd87c2e484bf" + integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A== + "@tsconfig/node10@^1.0.7": version "1.0.7" resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.7.tgz#1eb1de36c73478a2479cc661ef5af1c16d86d606" @@ -316,11 +321,6 @@ dependencies: "@types/node" "*" -"@types/anymatch@*": - version "1.3.1" - resolved "https://registry.yarnpkg.com/@types/anymatch/-/anymatch-1.3.1.tgz#336badc1beecb9dacc38bea2cf32adf627a8421a" - integrity sha512-/+CRPXpBDpo2RK9C68N3b2cOvO0Cf5B9aPijHsoDQTHivnGSObdOF2BRQOYjojWTDy6nQvMjmqRXIxH55VjxxA== - "@types/bcryptjs@2.4.2": version "2.4.2" resolved "https://registry.yarnpkg.com/@types/bcryptjs/-/bcryptjs-2.4.2.tgz#e3530eac9dd136bfdfb0e43df2c4c5ce1f77dfae" @@ -386,11 +386,6 @@ "@types/keygrip" "*" "@types/node" "*" -"@types/dateformat@3.0.1": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@types/dateformat/-/dateformat-3.0.1.tgz#98d747a2e5e9a56070c6bf14e27bff56204e34cc" - integrity sha512-KlPPdikagvL6ELjWsljbyDIPzNCeliYkqRpI+zea99vBBbCIA5JNshZAwQKTON139c87y9qvTFVgkFd14rtS4g== - "@types/disposable-email-domains@^1.0.1": version "1.0.2" resolved "https://registry.yarnpkg.com/@types/disposable-email-domains/-/disposable-email-domains-1.0.2.tgz#0280f6b38fa7f14e54b056a434135ecd254483b1" @@ -401,27 +396,6 @@ resolved "https://registry.yarnpkg.com/@types/escape-regexp/-/escape-regexp-0.0.1.tgz#f1a977ccdf2ef059e9862bd3af5e92cbbe723e0e" integrity sha512-ogj/ZTIdeFkiuxDwawYuZSIgC6suFGgBeZPr6Xs5lHEcvIXTjXGtH+/n8f1XhZhespaUwJ5LIGRICPji972FLw== -"@types/eslint-scope@^3.7.0": - version "3.7.0" - resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.0.tgz#4792816e31119ebd506902a482caec4951fabd86" - integrity sha512-O/ql2+rrCUe2W2rs7wMR+GqPRcgB6UiqN5RhrR5xruFlY7l9YLMn0ZkDzjoHLeiFkR8MCQZVudUuuvQ2BLC9Qw== - dependencies: - "@types/eslint" "*" - "@types/estree" "*" - -"@types/eslint@*": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-7.2.0.tgz#eb5c5b575237334df24c53195e37b53d66478d7b" - integrity sha512-LpUXkr7fnmPXWGxB0ZuLEzNeTURuHPavkC5zuU4sg62/TgL5ZEjamr5Y8b6AftwHtx2bPJasI+CL0TT2JwQ7aA== - dependencies: - "@types/estree" "*" - "@types/json-schema" "*" - -"@types/estree@*", "@types/estree@^0.0.46": - version "0.0.46" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.46.tgz#0fb6bfbbeabd7a30880504993369c4bf1deab1fe" - integrity sha512-laIjwTQaD+5DukBZaygQ79K1Z0jb1bPEMRrkXSLjtCcZm+abyp5YbrqpSLzD42FwWW6gK/aS4NYpJ804nG2brg== - "@types/express-serve-static-core@*": version "4.17.5" resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.5.tgz#a00ac7dadd746ae82477443e4d480a6a93ea083c" @@ -496,11 +470,6 @@ "@types/parse5" "*" "@types/tough-cookie" "*" -"@types/json-schema@*": - version "7.0.5" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.5.tgz#dcce4430e64b443ba8945f0290fb564ad5bac6dd" - integrity sha512-7+2BITlgjgDhH0vvwZU/HZJVyk+2XUlvxXe8dFMedNX/aMkaOq++rMAFXc0tM7ij15QaWlbdQASBR9dihi+bDQ== - "@types/json-schema@^7.0.6": version "7.0.6" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.6.tgz#f4c7ec43e81b319a9815115031709f26987891f0" @@ -665,10 +634,10 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-16.6.2.tgz#331b7b9f8621c638284787c5559423822fdffc50" integrity sha512-LSw8TZt12ZudbpHc6EkIyDM3nHVWKYrAvGy6EAJfNfjusbwnThqjqxUKKRwuV3iWYeW/LYMzNgaq3MaLffQ2xA== -"@types/node@17.0.10": - version "17.0.10" - resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.10.tgz#616f16e9d3a2a3d618136b1be244315d95bd7cab" - integrity sha512-S/3xB4KzyFxYGCppyDt68yzBU9ysL88lSdIah4D6cptdcltc4NCPCAMc0+PCpg/lLIyC7IPvj2Z52OJWeIUkog== +"@types/node@17.0.14": + version "17.0.14" + resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.14.tgz#33b9b94f789a8fedd30a68efdbca4dbb06b61f20" + integrity sha512-SbjLmERksKOGzWzPNuW7fJM7fk3YXVTFiZWB/Hs99gwhk+/dnrQRPBQjPW9aO+fi1tAffi9PrwFvsmOKmDTyng== "@types/node@^14.11.8": version "14.17.9" @@ -791,10 +760,10 @@ dependencies: htmlparser2 "^6.0.0" -"@types/seedrandom@2.4.28": - version "2.4.28" - resolved "https://registry.yarnpkg.com/@types/seedrandom/-/seedrandom-2.4.28.tgz#9ce8fa048c1e8c85cb71d7fe4d704e000226036f" - integrity sha512-SMA+fUwULwK7sd/ZJicUztiPs8F1yCPwF3O23Z9uQ32ME5Ha0NmDK9+QTsYE4O2tHXChzXomSWWeIhCnoN1LqA== +"@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@*": version "1.13.3" @@ -811,15 +780,10 @@ dependencies: "@types/node" "*" -"@types/sinonjs__fake-timers@6.0.4": - version "6.0.4" - resolved "https://registry.yarnpkg.com/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-6.0.4.tgz#0ecc1b9259b76598ef01942f547904ce61a6a77d" - integrity sha512-IFQTJARgMUBF+xVd2b+hIgXWrZEjND3vJtRCvIelcFB5SIXfjV4bOHbHJ0eXKh+0COrBRc8MqteKAz/j88rE0A== - -"@types/source-list-map@*": - version "0.1.2" - resolved "https://registry.yarnpkg.com/@types/source-list-map/-/source-list-map-0.1.2.tgz#0078836063ffaf17412349bba364087e0ac02ec9" - integrity sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA== +"@types/sinonjs__fake-timers@8.1.1": + version "8.1.1" + resolved "https://registry.yarnpkg.com/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.1.tgz#b49c2c70150141a15e0fa7e79cf1f92a72934ce3" + integrity sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g== "@types/speakeasy@2.0.7": version "2.0.7" @@ -828,11 +792,6 @@ dependencies: "@types/node" "*" -"@types/tapable@^1": - version "1.0.7" - resolved "https://registry.yarnpkg.com/@types/tapable/-/tapable-1.0.7.tgz#545158342f949e8fd3bfd813224971ecddc3fac4" - integrity sha512-0VBprVqfgFD7Ehb2vd8Lh9TG3jP98gvr8rgehQqzztZNI7o8zS8Ad4jyZneKELphpuE212D8J70LnSNQSyO6bQ== - "@types/throttle-debounce@2.1.0": version "2.1.0" resolved "https://registry.yarnpkg.com/@types/throttle-debounce/-/throttle-debounce-2.1.0.tgz#1c3df624bfc4b62f992d3012b84c56d41eab3776" @@ -853,13 +812,6 @@ resolved "https://registry.yarnpkg.com/@types/tough-cookie/-/tough-cookie-4.0.0.tgz#fef1904e4668b6e5ecee60c52cc6a078ffa6697d" integrity sha512-I99sngh224D0M7XgW1s120zxCt3VYQ3IQsuw3P3jbq5GG4yc79+ZjyKznyOGIQrflfylLgcfekeZW/vk0yng6A== -"@types/uglify-js@*": - version "3.9.0" - resolved "https://registry.yarnpkg.com/@types/uglify-js/-/uglify-js-3.9.0.tgz#4490a140ca82aa855ad68093829e7fd6ae94ea87" - integrity sha512-3ZcoyPYHVOCcLpnfZwD47KFLr8W/mpUcgjpf1M4Q78TMJIw7KMAHSjiCLJp1z3ZrBR9pTLbe191O0TldFK5zcw== - dependencies: - source-map "^0.6.1" - "@types/uuid@8.3.4": version "8.3.4" resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-8.3.4.tgz#bd86a43617df0594787d38b735f55c805becf1bc" @@ -872,48 +824,10 @@ dependencies: "@types/node" "*" -"@types/webpack-sources@*": - version "0.1.7" - resolved "https://registry.yarnpkg.com/@types/webpack-sources/-/webpack-sources-0.1.7.tgz#0a330a9456113410c74a5d64180af0cbca007141" - integrity sha512-XyaHrJILjK1VHVC4aVlKsdNN5KBTwufMb43cQs+flGxtPAf/1Qwl8+Q0tp5BwEGaI8D6XT1L+9bSWXckgkjTLw== - dependencies: - "@types/node" "*" - "@types/source-list-map" "*" - source-map "^0.6.1" - -"@types/webpack-stream@3.2.12": - version "3.2.12" - resolved "https://registry.yarnpkg.com/@types/webpack-stream/-/webpack-stream-3.2.12.tgz#cf13e64067a662a7acd8cd0524b3f64c86b0ecb6" - integrity sha512-znMUl4kKT0V0SwkUgRgwUNSAO7J5I/jdTCBNy3utkCsgMJ3IHp4FBTDwsQC+tfQ73TWeKIH05QNmbUYmeGThGw== - dependencies: - "@types/node" "*" - "@types/webpack" "^4" - -"@types/webpack@5.28.0": - version "5.28.0" - resolved "https://registry.yarnpkg.com/@types/webpack/-/webpack-5.28.0.tgz#78dde06212f038d77e54116cfe69e88ae9ed2c03" - integrity sha512-8cP0CzcxUiFuA9xGJkfeVpqmWTk9nx6CWwamRGCj95ph1SmlRRk9KlCZ6avhCbZd4L68LvYT6l1kpdEnQXrF8w== - dependencies: - "@types/node" "*" - tapable "^2.2.0" - webpack "^5" - -"@types/webpack@^4": - version "4.41.27" - resolved "https://registry.yarnpkg.com/@types/webpack/-/webpack-4.41.27.tgz#f47da488c8037e7f1b2dbf2714fbbacb61ec0ffc" - integrity sha512-wK/oi5gcHi72VMTbOaQ70VcDxSQ1uX8S2tukBK9ARuGXrYM/+u4ou73roc7trXDNmCxCoerE8zruQqX/wuHszA== - dependencies: - "@types/anymatch" "*" - "@types/node" "*" - "@types/tapable" "^1" - "@types/uglify-js" "*" - "@types/webpack-sources" "*" - source-map "^0.6.0" - -"@types/websocket@1.0.4": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@types/websocket/-/websocket-1.0.4.tgz#1dc497280d8049a5450854dd698ee7e6ea9e60b8" - integrity sha512-qn1LkcFEKK8RPp459jkjzsfpbsx36BBt3oC3pITYtkoBw/aVX+EZFa5j3ThCRTNpLFvIMr5dSTD4RaMdilIOpA== +"@types/websocket@1.0.5": + version "1.0.5" + resolved "https://registry.yarnpkg.com/@types/websocket/-/websocket-1.0.5.tgz#3fb80ed8e07f88e51961211cd3682a3a4a81569c" + integrity sha512-NbsqiNX9CnEfC1Z0Vf4mE1SgAJ07JnRYcNex7AJ9zAVzmiGHmjKFEk7O4TJIsgv2B1sLEb6owKFZrACwdYngsQ== dependencies: "@types/node" "*" @@ -929,14 +843,14 @@ resolved "https://registry.yarnpkg.com/@types/zen-observable/-/zen-observable-0.8.2.tgz#808c9fa7e4517274ed555fa158f2de4b4f468e71" integrity sha512-HrCIVMLjE1MOozVoD86622S7aunluLb2PJdPfb3nYiEtohm8mIB/vyv0Fd37AdeMFrTUQXEunw78YloMA3Qilg== -"@typescript-eslint/eslint-plugin@5.10.0": - version "5.10.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.10.0.tgz#e90afea96dff8620892ad216b0e4ccdf8ee32d3a" - integrity sha512-XXVKnMsq2fuu9K2KsIxPUGqb6xAImz8MEChClbXmE3VbveFtBUU5bzM6IPVWqzyADIgdkS2Ws/6Xo7W2TeZWjQ== +"@typescript-eslint/eslint-plugin@5.10.2": + version "5.10.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.10.2.tgz#f8c1d59fc37bd6d9d11c97267fdfe722c4777152" + integrity sha512-4W/9lLuE+v27O/oe7hXJKjNtBLnZE8tQAFpapdxwSVHqtmIoPB1gph3+ahNwVuNL37BX7YQHyGF9Xv6XCnIX2Q== dependencies: - "@typescript-eslint/scope-manager" "5.10.0" - "@typescript-eslint/type-utils" "5.10.0" - "@typescript-eslint/utils" "5.10.0" + "@typescript-eslint/scope-manager" "5.10.2" + "@typescript-eslint/type-utils" "5.10.2" + "@typescript-eslint/utils" "5.10.2" debug "^4.3.2" functional-red-black-tree "^1.0.1" ignore "^5.1.8" @@ -944,69 +858,69 @@ semver "^7.3.5" tsutils "^3.21.0" -"@typescript-eslint/parser@5.10.0": - version "5.10.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.10.0.tgz#8f59e036f5f1cffc178cacbd5ccdd02aeb96c91c" - integrity sha512-pJB2CCeHWtwOAeIxv8CHVGJhI5FNyJAIpx5Pt72YkK3QfEzt6qAlXZuyaBmyfOdM62qU0rbxJzNToPTVeJGrQw== +"@typescript-eslint/parser@5.10.2": + version "5.10.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.10.2.tgz#b6076d27cc5499ce3f2c625f5ccde946ecb7db9a" + integrity sha512-JaNYGkaQVhP6HNF+lkdOr2cAs2wdSZBoalE22uYWq8IEv/OVH0RksSGydk+sW8cLoSeYmC+OHvRyv2i4AQ7Czg== dependencies: - "@typescript-eslint/scope-manager" "5.10.0" - "@typescript-eslint/types" "5.10.0" - "@typescript-eslint/typescript-estree" "5.10.0" + "@typescript-eslint/scope-manager" "5.10.2" + "@typescript-eslint/types" "5.10.2" + "@typescript-eslint/typescript-estree" "5.10.2" debug "^4.3.2" -"@typescript-eslint/scope-manager@5.10.0": - version "5.10.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.10.0.tgz#bb5d872e8b9e36203908595507fbc4d3105329cb" - integrity sha512-tgNgUgb4MhqK6DoKn3RBhyZ9aJga7EQrw+2/OiDk5hKf3pTVZWyqBi7ukP+Z0iEEDMF5FDa64LqODzlfE4O/Dg== +"@typescript-eslint/scope-manager@5.10.2": + version "5.10.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.10.2.tgz#92c0bc935ec00f3d8638cdffb3d0e70c9b879639" + integrity sha512-39Tm6f4RoZoVUWBYr3ekS75TYgpr5Y+X0xLZxXqcZNDWZdJdYbKd3q2IR4V9y5NxxiPu/jxJ8XP7EgHiEQtFnw== dependencies: - "@typescript-eslint/types" "5.10.0" - "@typescript-eslint/visitor-keys" "5.10.0" + "@typescript-eslint/types" "5.10.2" + "@typescript-eslint/visitor-keys" "5.10.2" -"@typescript-eslint/type-utils@5.10.0": - version "5.10.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.10.0.tgz#8524b9479c19c478347a7df216827e749e4a51e5" - integrity sha512-TzlyTmufJO5V886N+hTJBGIfnjQDQ32rJYxPaeiyWKdjsv2Ld5l8cbS7pxim4DeNs62fKzRSt8Q14Evs4JnZyQ== +"@typescript-eslint/type-utils@5.10.2": + version "5.10.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.10.2.tgz#ad5acdf98a7d2ab030bea81f17da457519101ceb" + integrity sha512-uRKSvw/Ccs5FYEoXW04Z5VfzF2iiZcx8Fu7DGIB7RHozuP0VbKNzP1KfZkHBTM75pCpsWxIthEH1B33dmGBKHw== dependencies: - "@typescript-eslint/utils" "5.10.0" + "@typescript-eslint/utils" "5.10.2" debug "^4.3.2" tsutils "^3.21.0" -"@typescript-eslint/types@5.10.0": - version "5.10.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.10.0.tgz#beb3cb345076f5b088afe996d57bcd1dfddaa75c" - integrity sha512-wUljCgkqHsMZbw60IbOqT/puLfyqqD5PquGiBo1u1IS3PLxdi3RDGlyf032IJyh+eQoGhz9kzhtZa+VC4eWTlQ== +"@typescript-eslint/types@5.10.2": + version "5.10.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.10.2.tgz#604d15d795c4601fffba6ecb4587ff9fdec68ce8" + integrity sha512-Qfp0qk/5j2Rz3p3/WhWgu4S1JtMcPgFLnmAKAW061uXxKSa7VWKZsDXVaMXh2N60CX9h6YLaBoy9PJAfCOjk3w== -"@typescript-eslint/typescript-estree@5.10.0": - version "5.10.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.10.0.tgz#4be24a3dea0f930bb1397c46187d0efdd955a224" - integrity sha512-x+7e5IqfwLwsxTdliHRtlIYkgdtYXzE0CkFeV6ytAqq431ZyxCFzNMNR5sr3WOlIG/ihVZr9K/y71VHTF/DUQA== +"@typescript-eslint/typescript-estree@5.10.2": + version "5.10.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.10.2.tgz#810906056cd3ddcb35aa333fdbbef3713b0fe4a7" + integrity sha512-WHHw6a9vvZls6JkTgGljwCsMkv8wu8XU8WaYKeYhxhWXH/atZeiMW6uDFPLZOvzNOGmuSMvHtZKd6AuC8PrwKQ== dependencies: - "@typescript-eslint/types" "5.10.0" - "@typescript-eslint/visitor-keys" "5.10.0" + "@typescript-eslint/types" "5.10.2" + "@typescript-eslint/visitor-keys" "5.10.2" 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.10.0": - version "5.10.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.10.0.tgz#c3d152a85da77c400e37281355561c72fb1b5a65" - integrity sha512-IGYwlt1CVcFoE2ueW4/ioEwybR60RAdGeiJX/iDAw0t5w0wK3S7QncDwpmsM70nKgGTuVchEWB8lwZwHqPAWRg== +"@typescript-eslint/utils@5.10.2": + version "5.10.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.10.2.tgz#1fcd37547c32c648ab11aea7173ec30060ee87a8" + integrity sha512-vuJaBeig1NnBRkf7q9tgMLREiYD7zsMrsN1DA3wcoMDvr3BTFiIpKjGiYZoKPllfEwN7spUjv7ZqD+JhbVjEPg== dependencies: "@types/json-schema" "^7.0.9" - "@typescript-eslint/scope-manager" "5.10.0" - "@typescript-eslint/types" "5.10.0" - "@typescript-eslint/typescript-estree" "5.10.0" + "@typescript-eslint/scope-manager" "5.10.2" + "@typescript-eslint/types" "5.10.2" + "@typescript-eslint/typescript-estree" "5.10.2" eslint-scope "^5.1.1" eslint-utils "^3.0.0" -"@typescript-eslint/visitor-keys@5.10.0": - version "5.10.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.10.0.tgz#770215497ad67cd15a572b52089991d5dfe06281" - integrity sha512-GMxj0K1uyrFLPKASLmZzCuSddmjZVbVj3Ouy5QVuIGKZopxvOr24JsS7gruz6C3GExE01mublZ3mIBOaon9zuQ== +"@typescript-eslint/visitor-keys@5.10.2": + version "5.10.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.10.2.tgz#fdbf272d8e61c045d865bd6c8b41bea73d222f3d" + integrity sha512-zHIhYGGGrFJvvyfwHk5M08C5B5K4bewkm+rrvNTKk1/S15YHR+SA/QUF8ZWscXSfEaB8Nn2puZj+iHcoxVOD/Q== dependencies: - "@typescript-eslint/types" "5.10.0" + "@typescript-eslint/types" "5.10.2" eslint-visitor-keys "^3.0.0" "@ungap/promise-all-settled@1.1.2": @@ -1014,137 +928,6 @@ resolved "https://registry.yarnpkg.com/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz#aa58042711d6e3275dd37dc597e5d31e8c290a44" integrity sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q== -"@webassemblyjs/ast@1.11.0": - version "1.11.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.0.tgz#a5aa679efdc9e51707a4207139da57920555961f" - integrity sha512-kX2W49LWsbthrmIRMbQZuQDhGtjyqXfEmmHyEi4XWnSZtPmxY0+3anPIzsnRb45VH/J55zlOfWvZuY47aJZTJg== - dependencies: - "@webassemblyjs/helper-numbers" "1.11.0" - "@webassemblyjs/helper-wasm-bytecode" "1.11.0" - -"@webassemblyjs/floating-point-hex-parser@1.11.0": - version "1.11.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.0.tgz#34d62052f453cd43101d72eab4966a022587947c" - integrity sha512-Q/aVYs/VnPDVYvsCBL/gSgwmfjeCb4LW8+TMrO3cSzJImgv8lxxEPM2JA5jMrivE7LSz3V+PFqtMbls3m1exDA== - -"@webassemblyjs/helper-api-error@1.11.0": - version "1.11.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.0.tgz#aaea8fb3b923f4aaa9b512ff541b013ffb68d2d4" - integrity sha512-baT/va95eXiXb2QflSx95QGT5ClzWpGaa8L7JnJbgzoYeaA27FCvuBXU758l+KXWRndEmUXjP0Q5fibhavIn8w== - -"@webassemblyjs/helper-buffer@1.11.0": - version "1.11.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.0.tgz#d026c25d175e388a7dbda9694e91e743cbe9b642" - integrity sha512-u9HPBEl4DS+vA8qLQdEQ6N/eJQ7gT7aNvMIo8AAWvAl/xMrcOSiI2M0MAnMCy3jIFke7bEee/JwdX1nUpCtdyA== - -"@webassemblyjs/helper-numbers@1.11.0": - version "1.11.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.0.tgz#7ab04172d54e312cc6ea4286d7d9fa27c88cd4f9" - integrity sha512-DhRQKelIj01s5IgdsOJMKLppI+4zpmcMQ3XboFPLwCpSNH6Hqo1ritgHgD0nqHeSYqofA6aBN/NmXuGjM1jEfQ== - dependencies: - "@webassemblyjs/floating-point-hex-parser" "1.11.0" - "@webassemblyjs/helper-api-error" "1.11.0" - "@xtuc/long" "4.2.2" - -"@webassemblyjs/helper-wasm-bytecode@1.11.0": - version "1.11.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.0.tgz#85fdcda4129902fe86f81abf7e7236953ec5a4e1" - integrity sha512-MbmhvxXExm542tWREgSFnOVo07fDpsBJg3sIl6fSp9xuu75eGz5lz31q7wTLffwL3Za7XNRCMZy210+tnsUSEA== - -"@webassemblyjs/helper-wasm-section@1.11.0": - version "1.11.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.0.tgz#9ce2cc89300262509c801b4af113d1ca25c1a75b" - integrity sha512-3Eb88hcbfY/FCukrg6i3EH8H2UsD7x8Vy47iVJrP967A9JGqgBVL9aH71SETPx1JrGsOUVLo0c7vMCN22ytJew== - dependencies: - "@webassemblyjs/ast" "1.11.0" - "@webassemblyjs/helper-buffer" "1.11.0" - "@webassemblyjs/helper-wasm-bytecode" "1.11.0" - "@webassemblyjs/wasm-gen" "1.11.0" - -"@webassemblyjs/ieee754@1.11.0": - version "1.11.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.11.0.tgz#46975d583f9828f5d094ac210e219441c4e6f5cf" - integrity sha512-KXzOqpcYQwAfeQ6WbF6HXo+0udBNmw0iXDmEK5sFlmQdmND+tr773Ti8/5T/M6Tl/413ArSJErATd8In3B+WBA== - dependencies: - "@xtuc/ieee754" "^1.2.0" - -"@webassemblyjs/leb128@1.11.0": - version "1.11.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.11.0.tgz#f7353de1df38aa201cba9fb88b43f41f75ff403b" - integrity sha512-aqbsHa1mSQAbeeNcl38un6qVY++hh8OpCOzxhixSYgbRfNWcxJNJQwe2rezK9XEcssJbbWIkblaJRwGMS9zp+g== - dependencies: - "@xtuc/long" "4.2.2" - -"@webassemblyjs/utf8@1.11.0": - version "1.11.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.11.0.tgz#86e48f959cf49e0e5091f069a709b862f5a2cadf" - integrity sha512-A/lclGxH6SpSLSyFowMzO/+aDEPU4hvEiooCMXQPcQFPPJaYcPQNKGOCLUySJsYJ4trbpr+Fs08n4jelkVTGVw== - -"@webassemblyjs/wasm-edit@1.11.0": - version "1.11.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.0.tgz#ee4a5c9f677046a210542ae63897094c2027cb78" - integrity sha512-JHQ0damXy0G6J9ucyKVXO2j08JVJ2ntkdJlq1UTiUrIgfGMmA7Ik5VdC/L8hBK46kVJgujkBIoMtT8yVr+yVOQ== - dependencies: - "@webassemblyjs/ast" "1.11.0" - "@webassemblyjs/helper-buffer" "1.11.0" - "@webassemblyjs/helper-wasm-bytecode" "1.11.0" - "@webassemblyjs/helper-wasm-section" "1.11.0" - "@webassemblyjs/wasm-gen" "1.11.0" - "@webassemblyjs/wasm-opt" "1.11.0" - "@webassemblyjs/wasm-parser" "1.11.0" - "@webassemblyjs/wast-printer" "1.11.0" - -"@webassemblyjs/wasm-gen@1.11.0": - version "1.11.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.0.tgz#3cdb35e70082d42a35166988dda64f24ceb97abe" - integrity sha512-BEUv1aj0WptCZ9kIS30th5ILASUnAPEvE3tVMTrItnZRT9tXCLW2LEXT8ezLw59rqPP9klh9LPmpU+WmRQmCPQ== - dependencies: - "@webassemblyjs/ast" "1.11.0" - "@webassemblyjs/helper-wasm-bytecode" "1.11.0" - "@webassemblyjs/ieee754" "1.11.0" - "@webassemblyjs/leb128" "1.11.0" - "@webassemblyjs/utf8" "1.11.0" - -"@webassemblyjs/wasm-opt@1.11.0": - version "1.11.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.0.tgz#1638ae188137f4bb031f568a413cd24d32f92978" - integrity sha512-tHUSP5F4ywyh3hZ0+fDQuWxKx3mJiPeFufg+9gwTpYp324mPCQgnuVKwzLTZVqj0duRDovnPaZqDwoyhIO8kYg== - dependencies: - "@webassemblyjs/ast" "1.11.0" - "@webassemblyjs/helper-buffer" "1.11.0" - "@webassemblyjs/wasm-gen" "1.11.0" - "@webassemblyjs/wasm-parser" "1.11.0" - -"@webassemblyjs/wasm-parser@1.11.0": - version "1.11.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.0.tgz#3e680b8830d5b13d1ec86cc42f38f3d4a7700754" - integrity sha512-6L285Sgu9gphrcpDXINvm0M9BskznnzJTE7gYkjDbxET28shDqp27wpruyx3C2S/dvEwiigBwLA1cz7lNUi0kw== - dependencies: - "@webassemblyjs/ast" "1.11.0" - "@webassemblyjs/helper-api-error" "1.11.0" - "@webassemblyjs/helper-wasm-bytecode" "1.11.0" - "@webassemblyjs/ieee754" "1.11.0" - "@webassemblyjs/leb128" "1.11.0" - "@webassemblyjs/utf8" "1.11.0" - -"@webassemblyjs/wast-printer@1.11.0": - version "1.11.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.11.0.tgz#680d1f6a5365d6d401974a8e949e05474e1fab7e" - integrity sha512-Fg5OX46pRdTgB7rKIUojkh9vXaVN6sGYCnEiJN1GYkb0RPwShZXp6KTDqmoMdQPKhcroOXh3fEzmkWmCYaKYhQ== - dependencies: - "@webassemblyjs/ast" "1.11.0" - "@xtuc/long" "4.2.2" - -"@xtuc/ieee754@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" - integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== - -"@xtuc/long@4.2.2": - version "4.2.2" - resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" - integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== - abab@^2.0.3, abab@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.5.tgz#c0b678fb32d60fc1219c784d6a826fe385aeb79a" @@ -1198,22 +981,12 @@ acorn@^7.1.1: resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== -acorn@^8.0.4: - version "8.1.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.1.0.tgz#52311fd7037ae119cbb134309e901aa46295b3fe" - integrity sha512-LWCF/Wn0nfHOmJ9rzQApGnxnvgfROzGilS8936rqN/lfcYkY9MYZzdMqN+2NJ4SlTc+m5HiSa+kNfDtI64dwUA== - -acorn@^8.2.4: - version "8.2.4" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.2.4.tgz#caba24b08185c3b56e3168e97d15ed17f4d31fd0" - integrity sha512-Ibt84YwBDDA890eDiDCEqcbwvHlBvzzDkU2cGBBDDI1QWT12jTiXIOn2CIw5KK4i6N5Z2HUxwYjzriDyqaqqZg== - acorn@^8.4.1: version "8.4.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.4.1.tgz#56c36251fc7cabc7096adc18f05afe814321a28c" integrity sha512-asabaBSkEKosYKMITunzX177CXxQ4Q8BSSzMTKD+FefUhipQC70gfW5SiUDhYQ3vk8G+81HqQk7Fv9OXwwn9KA== -acorn@^8.7.0: +acorn@^8.5.0, acorn@^8.7.0: version "8.7.0" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.0.tgz#90951fde0f8f09df93549481e5fc141445b791cf" integrity sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ== @@ -1476,10 +1249,10 @@ autwh@0.1.0: dependencies: oauth "0.9.15" -aws-sdk@2.1061.0: - version "2.1061.0" - resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.1061.0.tgz#79c75e6856e5a59e0857d0d066a8ff5ff5e0d752" - integrity sha512-T29yV+EPo4Fis9hAArxAXS/u6utKnlBq3DEu85LTSIA8i6e6Xg7e9u7Rveo8DmrlVrf7EGCNThaeF9WERHnwLg== +aws-sdk@2.1067.0: + version "2.1067.0" + resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.1067.0.tgz#2e7f5a2d765fcf77a45f25fdd1f12a64942628a7" + integrity sha512-3Ys1k4cNQy4z37IpPjQ9c5ldkXMeZGbWoarKHynPPY3WCEj+Nw2u6zk484fA9/lTHNN3YesLuZ0OmEzGgjFEOw== dependencies: buffer "4.9.2" events "1.1.1" @@ -1638,17 +1411,6 @@ browser-stdout@1.3.1: resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== -browserslist@^4.14.5: - version "4.16.3" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.3.tgz#340aa46940d7db878748567c5dea24a48ddf3717" - integrity sha512-vIyhWmIkULaq04Gt93txdh+j02yX/JzlyhLYbV3YQCn/zvES3JnY7TifHHvvr1w5hTDluNKMkV05cs4vy8Q7sw== - dependencies: - caniuse-lite "^1.0.30001181" - colorette "^1.2.1" - electron-to-chromium "^1.3.649" - escalade "^3.1.1" - node-releases "^1.1.70" - buffer-crc32@^0.2.1, buffer-crc32@^0.2.13: version "0.2.13" resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" @@ -1711,16 +1473,17 @@ bufferutil@^4.0.1: dependencies: node-gyp-build "~3.7.0" -bull@4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/bull/-/bull-4.2.1.tgz#c5a7e1496c7903274ce90192e4e5cb18f6c866c0" - integrity sha512-YkCQZMOub++siHw3SbYYXZ5xGEn6Tt3BPoCVq/irPNCxUqUYzta8yDlXyyAsfMKMVj0M7PcnynUabfMf9PFpOA== +bull@4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/bull/-/bull-4.5.0.tgz#d6106b011b711ffb76c687d7f2db416955225f64" + integrity sha512-BejJxGwNNQPIrK1jFTN74kymFORYQ6ZyXWNsZx+6jtDtafQNUMHNSdoepabLLmeldmUvgAHvZDDIJWFGEo2MYg== dependencies: - cron-parser "^2.13.0" + cron-parser "^4.2.1" debuglog "^1.0.0" get-port "^5.1.1" ioredis "^4.27.0" lodash "^4.17.21" + msgpackr "^1.5.2" p-timeout "^3.2.0" semver "^7.3.2" uuid "^8.3.0" @@ -1821,11 +1584,6 @@ camelcase@^6.0.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809" integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg== -caniuse-lite@^1.0.30001181: - version "1.0.30001191" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001191.tgz#bacb432b6701f690c8c5f7c680166b9a9f0843d9" - integrity sha512-xJJqzyd+7GCJXkcoBiQ1GuxEiOBCLQ0aVW9HMekifZsAVGdj5eJ4mFB9fEhSHipq9IOk/QXFJUiIr9lZT+EsGw== - canonicalize@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/canonicalize/-/canonicalize-1.0.1.tgz#657b4f3fa38a6ecb97a9e5b7b26d7a19cc6e0da9" @@ -1945,13 +1703,6 @@ chownr@^2.0.0: resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== -chrome-trace-event@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz#234090ee97c7d4ad1a2c4beae27505deffc608a4" - integrity sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ== - dependencies: - tslib "^1.9.0" - clean-stack@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" @@ -2053,10 +1804,10 @@ color-name@^1.0.0, color-name@~1.1.4: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== -color-string@^1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.6.0.tgz#c3915f61fe267672cb7e1e064c9d692219f6c312" - integrity sha512-c/hGS+kRWJutUBEngKKmk4iH3sD59MBkoxVapS/0wgpCz2u7XsNloxknyvBhzwEs1IbV36D9PwqLPJ2DTu3vMA== +color-string@^1.9.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.9.0.tgz#63b6ebd1bec11999d1df3a79a7569451ac2be8aa" + integrity sha512-9Mrz2AQLefkH1UvASKj6v6hj/7eWgjnT/cVsR8CumieLoT+g900exWeNogqtweI8dxloXN9BDQTYro1oWu/5CQ== dependencies: color-name "^1.0.0" simple-swizzle "^0.2.2" @@ -2066,15 +1817,15 @@ color-support@^1.1.2: resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== -color@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/color/-/color-4.0.1.tgz#21df44cd10245a91b1ccf5ba031609b0e10e7d67" - integrity sha512-rpZjOKN5O7naJxkH2Rx1sZzzBgaiWECc6BYXjeCE6kF0kcASJYbUq02u7JqIHwCb/j3NhV+QhRL2683aICeGZA== +color@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/color/-/color-4.2.0.tgz#0c782459a3e98838ea01e4bc0fb43310ca35af78" + integrity sha512-hHTcrbvEnGjC7WBMk6ibQWFVDgEFTVmjrz2Q5HlU6ltwxv0JJN2Z8I7uRbWeQLF04dikxs8zgyZkazRJvSMtyQ== dependencies: color-convert "^2.0.1" - color-string "^1.6.0" + color-string "^1.9.0" -colorette@^1.2.0, colorette@^1.2.1: +colorette@^1.2.0: version "1.2.2" resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.2.tgz#cbcc79d5e99caea2dbf10eb3a26fd8b3e6acfa94" integrity sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w== @@ -2086,7 +1837,7 @@ combined-stream@^1.0.8: dependencies: delayed-stream "~1.0.0" -commander@^2.19.0, commander@^2.20.0: +commander@^2.19.0: version "2.20.3" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== @@ -2195,7 +1946,15 @@ core-util-is@1.0.2, core-util-is@~1.0.0: resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= -crc-32@1.2.0, crc-32@^1.2.0: +crc-32@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/crc-32/-/crc-32-1.2.1.tgz#436d2bcaad27bcb6bd073a2587139d3024a16460" + integrity sha512-Dn/xm/1vFFgs3nfrpEVScHoIslO9NZRITWGz/1E/St6u4xw99vfZzVkW0OSnzx2h9egej9xwMCEut6sqwokM/w== + dependencies: + exit-on-epipe "~1.0.1" + printj "~1.3.1" + +crc-32@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/crc-32/-/crc-32-1.2.0.tgz#cb2db6e29b88508e32d9dd0ec1693e7b41a18208" integrity sha512-1uBwHxF+Y/4yF5G48fwnKq6QsIXheor3ZLPT80yGBV1oEUwpPojlEhQbWKVw1VwcTQyMGHK1/XMmTjmlsmTTGA== @@ -2216,13 +1975,12 @@ create-require@^1.1.0: resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== -cron-parser@^2.13.0: - version "2.13.0" - resolved "https://registry.yarnpkg.com/cron-parser/-/cron-parser-2.13.0.tgz#6f930bb6f2931790d2a9eec83b3ec276e27a6725" - integrity sha512-UWeIpnRb0eyoWPVk+pD3TDpNx3KCFQeezO224oJIkktBrcW6RoAPOx5zIKprZGfk6vcYSmA8yQXItejSaDBhbQ== +cron-parser@^4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/cron-parser/-/cron-parser-4.2.1.tgz#b43205d05ccd5c93b097dae64f3bd811f5993af3" + integrity sha512-5sJBwDYyCp+0vU5b7POl8zLWfgV5fOHxlc45FWoWdHecGC7MQHCjx0CHivCMRnGFovghKhhyYM+Zm9DcY5qcHg== dependencies: - is-nan "^1.2.1" - moment-timezone "^0.5.25" + luxon "^1.28.0" cross-env@7.0.3: version "7.0.3" @@ -2255,10 +2013,10 @@ css-what@2.1: resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.3.tgz#a6d7604573365fe74686c3f311c56513d88285f2" integrity sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg== -cssom@^0.4.4: - version "0.4.4" - resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10" - integrity sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw== +cssom@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.5.0.tgz#d254fa92cd8b6fbd83811b9fbaed34663cc17c36" + integrity sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw== cssom@~0.3.6: version "0.3.8" @@ -2297,19 +2055,19 @@ data-uri-to-buffer@^4.0.0: resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-4.0.0.tgz#b5db46aea50f6176428ac05b73be39a57701a64b" integrity sha512-Vr3mLBA8qWmcuschSLAOogKgQ/Jwxulv3RNE4FXnYWRGujzrRWQI4m12fQqRkwX06C0KanhLr4hK+GydchZsaA== -data-urls@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-2.0.0.tgz#156485a72963a970f5d5821aaf642bef2bf2db9b" - integrity sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ== +data-urls@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-3.0.1.tgz#597fc2ae30f8bc4dbcf731fcd1b1954353afc6f8" + integrity sha512-Ds554NeT5Gennfoo9KN50Vh6tpgtvYEwraYjejXnyTpu1C7oXKxdFk75REooENHE8ndTVOJuv+BEs4/J/xcozw== dependencies: abab "^2.0.3" - whatwg-mimetype "^2.3.0" - whatwg-url "^8.0.0" + whatwg-mimetype "^3.0.0" + whatwg-url "^10.0.0" -dateformat@4.5.1: - version "4.5.1" - resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-4.5.1.tgz#c20e7a9ca77d147906b6dc2261a8be0a5bd2173c" - integrity sha512-OD0TZ+B7yP7ZgpJf5K2DIbj3FZvFvxgFUuaqA/V5zTjAtAAXZ1E8bktHxmAGs4x5b7PflqA9LeQ84Og7wYtF7Q== +date-fns@2.28.0: + version "2.28.0" + resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.28.0.tgz#9570d656f5fc13143e50c975a3b6bbeb46cd08b2" + integrity sha512-8d35hViGYx/QH0icHYCeLmsLmMUheMmTyV9Fcm6gvNwdw31yXXH+O85sOBJ+OLnLQMKZowvpKb6FgMIQjcpvQw== debug@2, debug@^2.2.0, debug@^2.5.2, debug@^2.6.9: version "2.6.9" @@ -2368,10 +2126,10 @@ decamelize@^4.0.0: resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837" integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== -decimal.js@^10.2.1: - version "10.2.1" - resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.2.1.tgz#238ae7b0f0c793d3e3cea410108b35a2c01426a3" - integrity sha512-KaL7+6Fw6i5A2XSnsbhm/6B+NuEA7TZ4vqxnd5tXz9sbKtrN9Srj8ab4vKVdK8YAqZO9P1kg45Y6YLoduPf+kw== +decimal.js@^10.3.1: + version "10.3.1" + resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.3.1.tgz#d8c3a444a9c6774ba60ca6ad7261c3a94fd5e783" + integrity sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ== decompress-response@^6.0.0: version "6.0.0" @@ -2462,10 +2220,10 @@ detect-file@^1.0.0: resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7" integrity sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc= -detect-libc@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" - integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= +detect-libc@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.0.tgz#c528bc09bc6d1aa30149228240917c225448f204" + integrity sha512-S55LzUl8HUav8l9E2PBTlC5PAJrHK7tkM+XXFGD+fbsbkTzhCpG6K05LxJcUOEWzMa4v6ptcMZ9s3fOdJDu0Zw== detect-node@2.1.0, detect-node@^2.1.0: version "2.1.0" @@ -2566,12 +2324,12 @@ domelementtype@^2.2.0: resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.2.0.tgz#9a0b6c2782ed6a1c7323d42267183df9bd8b1d57" integrity sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A== -domexception@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/domexception/-/domexception-2.0.1.tgz#fb44aefba793e1574b0af6aed2801d057529f304" - integrity sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg== +domexception@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/domexception/-/domexception-4.0.0.tgz#4ad1be56ccadc86fc76d033353999a8037d03673" + integrity sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw== dependencies: - webidl-conversions "^5.0.0" + webidl-conversions "^7.0.0" domhandler@^2.3.0: version "2.4.2" @@ -2661,11 +2419,6 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= -electron-to-chromium@^1.3.649: - version "1.3.672" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.672.tgz#3a6e335016dab4bc584d5292adc4f98f54541f6a" - integrity sha512-gFQe7HBb0lbOMqK2GAS5/1F+B0IMdYiAgB9OT/w1F4M7lgJK2aNOMNOM622aEax+nS1cTMytkiT0uMOkbtFmHw== - emoji-regex@^8.0.0: version "8.0.0" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" @@ -2708,14 +2461,6 @@ enhanced-resolve@^5.0.0: graceful-fs "^4.2.4" tapable "^2.2.0" -enhanced-resolve@^5.7.0: - version "5.7.0" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.7.0.tgz#525c5d856680fbd5052de453ac83e32049958b5c" - integrity sha512-6njwt/NsZFUKhM6j9U8hzVyD4E4r0x7NQzhTCbcWOJ0IQjNSAoalWmb0AE51Wn+fwan5qVESWi7t2ToBxs9vrw== - dependencies: - graceful-fs "^4.2.4" - tapable "^2.2.0" - entities@^1.1.1, entities@~1.1.1: version "1.1.2" resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56" @@ -2762,11 +2507,6 @@ es-abstract@^1.19.0, es-abstract@^1.19.1: string.prototype.trimstart "^1.0.4" unbox-primitive "^1.0.1" -es-module-lexer@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-0.4.0.tgz#21f4181cc8b7eee06855f1c59e6087c7bc4f77b0" - integrity sha512-iuEGihqqhKWFgh72Q/Jtch7V2t/ft8w8IPP2aEN8ArYKO+IWyo6hsi96hCdgyeEDQIV3InhYQ9BlwUFPGXrbEQ== - es-to-primitive@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" @@ -2912,10 +2652,10 @@ eslint-visitor-keys@^3.1.0, eslint-visitor-keys@^3.2.0: resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.2.0.tgz#6fbb166a6798ee5991358bc2daa1ba76cc1254a1" integrity sha512-IOzT0X126zn7ALX0dwFiUQEdsfzrm4+ISsQS8nukaJXwEyYKRSnEIIDULYg1mCtGp7UUXgfGl7BIolXREQK+XQ== -eslint@8.7.0: - version "8.7.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.7.0.tgz#22e036842ee5b7cf87b03fe237731675b4d3633c" - integrity sha512-ifHYzkBGrzS2iDU7KjhCAVMGCvF6M3Xfs8X8b37cgrUlDt6bWRTpRh6T/gtSXv1HJ/BUGgmjvNvOEGu85Iif7w== +eslint@8.8.0: + version "8.8.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.8.0.tgz#9762b49abad0cb4952539ffdb0a046392e571a2d" + integrity sha512-H3KXAzQGBH1plhYS3okDix2ZthuYJlQQEGE5k0IKuEqUSiyu4AmxxlJ2MtTYeJ3xB4jDhcYCwGOg2TXYdnDXlQ== dependencies: "@eslint/eslintrc" "^1.0.5" "@humanwhocodes/config-array" "^0.9.2" @@ -3021,11 +2761,6 @@ events@1.1.1: resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" integrity sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ= -events@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/events/-/events-3.2.0.tgz#93b87c18f8efcd4202a461aec4dfc0556b639379" - integrity sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg== - execa@6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/execa/-/execa-6.0.0.tgz#598b46f09ae44f5d8097a30cfb1681d0f0371503" @@ -3241,10 +2976,10 @@ follow-redirects@^1.14.4: resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.7.tgz#2004c02eb9436eee9a21446a6477debf17e81685" integrity sha512-+hbxoLbFMbRKDwohX8GkTataGqO6Jb7jGwpAlwgy2bIz25XtRm7KEzJM76R1WiNT5SwZkX4Y75SwBolkpmE7iQ== -form-data@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.0.tgz#31b7e39c85f1355b7139ee0c647cf0de7f83c682" - integrity sha512-CKMFDglpbMi6PyN+brwB9Q/GOw0eAnsrEZDgcsH5Krhz5Od/haKHAX0NmQfha2zPPz0JpWzA7GJHGSnvCRLWsg== +form-data@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" + integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== dependencies: asynckit "^0.4.0" combined-stream "^1.0.8" @@ -3419,11 +3154,6 @@ glob-parent@^6.0.1: dependencies: is-glob "^4.0.3" -glob-to-regexp@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" - integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== - glob@7.1.6, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: version "7.1.6" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" @@ -3619,12 +3349,12 @@ hpagent@^0.1.1: resolved "https://registry.yarnpkg.com/hpagent/-/hpagent-0.1.1.tgz#66f67f16e5c7a8b59a068e40c2658c2c749ad5e2" integrity sha512-IxJWQiY0vmEjetHdoE9HZjD4Cx+mYTr25tR7JCxXaiI3QxW0YqYyM11KyZbHufoa/piWhMb2+D3FGpMgmA2cFQ== -html-encoding-sniffer@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz#42a6dc4fd33f00281176e8b23759ca4e4fa185f3" - integrity sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ== +html-encoding-sniffer@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz#2cb1a8cf0db52414776e5b2a7a04d5dd98158de9" + integrity sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA== dependencies: - whatwg-encoding "^1.0.5" + whatwg-encoding "^2.0.0" html-entities@2.3.2: version "2.3.2" @@ -3703,6 +3433,15 @@ http-proxy-agent@^4.0.1: agent-base "6" debug "4" +http-proxy-agent@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz#5129800203520d434f142bc78ff3c170800f2b43" + integrity sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w== + dependencies: + "@tootallnate/once" "2" + agent-base "6" + debug "4" + http-signature@1.3.6: version "1.3.6" resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.3.6.tgz#cb6fbfdf86d1c974f343be94e87f7fc128662cf9" @@ -3712,7 +3451,7 @@ http-signature@1.3.6: jsprim "^2.0.2" sshpk "^1.14.1" -http2-wrapper@^1.0.0-beta.5.0: +http2-wrapper@^1.0.0-beta.5.0, http2-wrapper@^1.0.0-beta.5.2: version "1.0.3" resolved "https://registry.yarnpkg.com/http2-wrapper/-/http2-wrapper-1.0.3.tgz#b8f55e0c1f25d4ebd08b3b0c2c079f9590800b3d" integrity sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg== @@ -3720,14 +3459,6 @@ http2-wrapper@^1.0.0-beta.5.0: quick-lru "^5.1.1" resolve-alpn "^1.0.0" -http2-wrapper@^1.0.0-beta.5.2: - version "1.0.0-beta.5.2" - resolved "https://registry.yarnpkg.com/http2-wrapper/-/http2-wrapper-1.0.0-beta.5.2.tgz#8b923deb90144aea65cf834b016a340fc98556f3" - integrity sha512-xYz9goEyBnC8XwXDTuC/MZ6t+MrKVQZOk4s7+PaDkwIsQd8IwqvM+0M6bA/2lvG8GHXcPdf+MejTUeO2LCPCeQ== - dependencies: - quick-lru "^5.1.1" - resolve-alpn "^1.0.0" - http_ece@1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/http_ece/-/http_ece-1.1.0.tgz#74780c6eb32d8ddfe9e36a83abcd81fe0cd4fb75" @@ -3767,6 +3498,13 @@ iconv-lite@0.4.24, iconv-lite@^0.4.4: dependencies: safer-buffer ">= 2.1.2 < 3" +iconv-lite@0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" + integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== + dependencies: + safer-buffer ">= 2.1.2 < 3.0.0" + iconv-lite@^0.6.2: version "0.6.2" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.2.tgz#ce13d1875b0c3a674bd6a04b7f76b01b1b6ded01" @@ -4043,13 +3781,6 @@ is-lambda@^1.0.1: resolved "https://registry.yarnpkg.com/is-lambda/-/is-lambda-1.0.1.tgz#3d9877899e6a53efc0160504cde15f82e6f061d5" integrity sha1-PZh3iZ5qU+/AFgUEzeFfgubwYdU= -is-nan@^1.2.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/is-nan/-/is-nan-1.3.0.tgz#85d1f5482f7051c2019f5673ccebdb06f3b0db03" - integrity sha512-z7bbREymOqt2CCaZVly8aC4ML3Xhfi0ekuOnjO2L8vKdl+CttdVoGZQhd4adMFAsxQ5VeRVwORs4tU8RH+HFtQ== - dependencies: - define-properties "^1.1.3" - is-negative-zero@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24" @@ -4184,15 +3915,6 @@ isexe@^2.0.0: resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= -jest-worker@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.6.2.tgz#7f72cbc4d643c365e27b9fd775f9d0eaa9c7a8ed" - integrity sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ== - dependencies: - "@types/node" "*" - merge-stream "^2.0.0" - supports-color "^7.0.0" - jmespath@0.16.0: version "0.16.0" resolved "https://registry.yarnpkg.com/jmespath/-/jmespath-0.16.0.tgz#b15b0a85dfd4d930d43e69ed605943c802785076" @@ -4253,23 +3975,23 @@ jschardet@3.0.0: resolved "https://registry.yarnpkg.com/jschardet/-/jschardet-3.0.0.tgz#898d2332e45ebabbdb6bf2feece9feea9a99e882" integrity sha512-lJH6tJ77V8Nzd5QWRkFYCLc13a3vADkh3r/Fi8HupZGWk2OVVDfnZP8V/VgQgZ+lzW0kG2UGb5hFgt3V3ndotQ== -jsdom@16.7.0: - version "16.7.0" - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-16.7.0.tgz#918ae71965424b197c819f8183a754e18977b710" - integrity sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw== +jsdom@19.0.0: + version "19.0.0" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-19.0.0.tgz#93e67c149fe26816d38a849ea30ac93677e16b6a" + integrity sha512-RYAyjCbxy/vri/CfnjUWJQQtZ3LKlLnDqj+9XLNnJPgEGeirZs3hllKR20re8LUZ6o1b1X4Jat+Qd26zmP41+A== dependencies: abab "^2.0.5" - acorn "^8.2.4" + acorn "^8.5.0" acorn-globals "^6.0.0" - cssom "^0.4.4" + cssom "^0.5.0" cssstyle "^2.3.0" - data-urls "^2.0.0" - decimal.js "^10.2.1" - domexception "^2.0.1" + data-urls "^3.0.1" + decimal.js "^10.3.1" + domexception "^4.0.0" escodegen "^2.0.0" - form-data "^3.0.0" - html-encoding-sniffer "^2.0.1" - http-proxy-agent "^4.0.1" + form-data "^4.0.0" + html-encoding-sniffer "^3.0.0" + http-proxy-agent "^5.0.0" https-proxy-agent "^5.0.0" is-potential-custom-element-name "^1.0.1" nwsapi "^2.2.0" @@ -4278,24 +4000,19 @@ jsdom@16.7.0: symbol-tree "^3.2.4" tough-cookie "^4.0.0" w3c-hr-time "^1.0.2" - w3c-xmlserializer "^2.0.0" - webidl-conversions "^6.1.0" - whatwg-encoding "^1.0.5" - whatwg-mimetype "^2.3.0" - whatwg-url "^8.5.0" - ws "^7.4.6" - xml-name-validator "^3.0.0" + w3c-xmlserializer "^3.0.0" + webidl-conversions "^7.0.0" + whatwg-encoding "^2.0.0" + whatwg-mimetype "^3.0.0" + whatwg-url "^10.0.0" + ws "^8.2.3" + xml-name-validator "^4.0.0" json-buffer@3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== -json-parse-better-errors@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" - integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== - json-schema-traverse@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" @@ -4610,11 +4327,6 @@ listenercount@~1.0.1: resolved "https://registry.yarnpkg.com/listenercount/-/listenercount-1.0.1.tgz#84c8a72ab59c4725321480c975e6508342e70937" integrity sha1-hMinKrWcRyUyFIDJdeZQg0LnCTc= -loader-runner@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.2.0.tgz#d7022380d66d14c5fb1d496b89864ebcfd478384" - integrity sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw== - loader-utils@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.0.tgz#e4cace5b816d425a166b5f097e10cd12b36064b0" @@ -4731,17 +4443,12 @@ lodash.some@^4.4.0: resolved "https://registry.yarnpkg.com/lodash.some/-/lodash.some-4.6.0.tgz#1bb9f314ef6b8baded13b549169b2a945eb68e4d" integrity sha1-G7nzFO9ri63tE7VJFpsqlF62jk0= -lodash.sortby@^4.7.0: - version "4.7.0" - resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" - integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= - lodash.union@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/lodash.union/-/lodash.union-4.6.0.tgz#48bb5088409f16f1821666641c44dd1aaae3cd88" integrity sha1-SLtQiECfFvGCFmZkHETdGqrjzYg= -lodash@^4.17.14, lodash@^4.17.19, lodash@^4.17.21, lodash@^4.7.0: +lodash@^4.17.14, lodash@^4.17.19, lodash@^4.17.21: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -4773,6 +4480,11 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" +luxon@^1.28.0: + version "1.28.0" + resolved "https://registry.yarnpkg.com/luxon/-/luxon-1.28.0.tgz#e7f96daad3938c06a62de0fb027115d251251fbf" + integrity sha512-TfTiyvZhwBYM/7QdAVDh+7dBTBA29v4ik0Ce9zda3Mnf8on1S5KJI8P2jKFZ8+5C0jhmr0KwJEO/Wdpm0VeWJQ== + mailcheck@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/mailcheck/-/mailcheck-1.1.1.tgz#d87cf6ba0b64ba512199dbf93f1489f479591e34" @@ -4867,7 +4579,7 @@ mime-types@2.1.34: dependencies: mime-db "1.51.0" -mime-types@^2.1.12, mime-types@^2.1.18, mime-types@^2.1.27, mime-types@~2.1.24: +mime-types@^2.1.12, mime-types@^2.1.18, mime-types@~2.1.24: version "2.1.27" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.27.tgz#47949f98e279ea53119f5722e0f34e529bec009f" integrity sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w== @@ -5029,14 +4741,7 @@ mocha@8.4.0: yargs-parser "20.2.4" yargs-unparser "2.0.0" -moment-timezone@^0.5.25: - version "0.5.28" - resolved "https://registry.yarnpkg.com/moment-timezone/-/moment-timezone-0.5.28.tgz#f093d789d091ed7b055d82aa81a82467f72e4338" - integrity sha512-TDJkZvAyKIVWg5EtVqRzU97w0Rb0YVbfpqyjgu6GwXCAohVRqwZjf4fOzDE6p1Ch98Sro/8hQQi65WDXW5STPw== - dependencies: - moment ">= 2.9.0" - -"moment@>= 2.9.0", moment@^2.22.2: +moment@^2.22.2: version "2.24.0" resolved "https://registry.yarnpkg.com/moment/-/moment-2.24.0.tgz#0d055d53f5052aa653c9f6eb68bb5d12bf5c2b5b" integrity sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg== @@ -5061,6 +4766,21 @@ ms@3.0.0-canary.1: resolved "https://registry.yarnpkg.com/ms/-/ms-3.0.0-canary.1.tgz#c7b34fbce381492fd0b345d1cf56e14d67b77b80" integrity sha512-kh8ARjh8rMN7Du2igDRO9QJnqCb2xYTJxyQYK7vJJS4TvLLmsbyhiKpSW+t+y26gyOyMd0riphX0GeWKU3ky5g== +msgpackr-extract@^1.0.14: + version "1.0.16" + resolved "https://registry.yarnpkg.com/msgpackr-extract/-/msgpackr-extract-1.0.16.tgz#701c4f6e6f25c100ae84557092274e8fffeefe45" + integrity sha512-fxdRfQUxPrL/TizyfYfMn09dK58e+d65bRD/fcaVH4052vj30QOzzqxcQIS7B0NsqlypEQ/6Du3QmP2DhWFfCA== + dependencies: + nan "^2.14.2" + node-gyp-build "^4.2.3" + +msgpackr@^1.5.2: + version "1.5.4" + resolved "https://registry.yarnpkg.com/msgpackr/-/msgpackr-1.5.4.tgz#2b6ea6cb7d79c0ad98fc76c68163c48eda50cf0d" + integrity sha512-Z7w5Jg+2Q9z9gJxeM68d7tSuWZZGnFIRhZnyqcZCa/1dKkhOCNvR1TUV3zzJ3+vj78vlwKRzUgVDlW4jiSOeDA== + optionalDependencies: + msgpackr-extract "^1.0.14" + multer@1.4.4: version "1.4.4" resolved "https://registry.yarnpkg.com/multer/-/multer-1.4.4.tgz#e2bc6cac0df57a8832b858d7418ccaa8ebaf7d8c" @@ -5089,7 +4809,7 @@ mz@^2.4.0, mz@^2.7.0: object-assign "^4.0.1" thenify-all "^1.0.0" -nan@^2.15.0: +nan@^2.14.2, nan@^2.15.0: version "2.15.0" resolved "https://registry.yarnpkg.com/nan/-/nan-2.15.0.tgz#3f34a473ff18e15c1b5626b62903b5ad6e665fee" integrity sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ== @@ -5135,11 +4855,6 @@ negotiator@0.6.2, negotiator@^0.6.2: resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== -neo-async@^2.6.2: - version "2.6.2" - resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" - integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== - nested-property@4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/nested-property/-/nested-property-4.0.0.tgz#a67b5a31991e701e03cdbaa6453bc5b1011bb88d" @@ -5167,10 +4882,10 @@ node-abi@^3.3.0: dependencies: semver "^7.3.5" -node-addon-api@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-4.2.0.tgz#117cbb5a959dff0992e1c586ae0393573e4d2a87" - integrity sha512-eazsqzwG2lskuzBqCGPi7Ac2UgOoMz8JVOXVhTvvPDYhthvNpefx8jWD8Np7Gv+2Sz0FlPWZk0nJV0z598Wn8Q== +node-addon-api@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-4.3.0.tgz#52a1a0b475193e0928e98e0426a0d1254782b77f" + integrity sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ== node-domexception@^1.0.0: version "1.0.0" @@ -5199,6 +4914,11 @@ node-fetch@3.0.0-beta.9: data-uri-to-buffer "^3.0.1" fetch-blob "^2.1.1" +node-gyp-build@^4.2.3: + version "4.3.0" + resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.3.0.tgz#9f256b03e5826150be39c764bf51e993946d71a3" + integrity sha512-iWjXZvmboq0ja1pUGULQBexmxq8CV4xBhX7VDOTbL7ZR4FOowwY/VOtRxBN/yKxmdGoIp4j5ysNT4u3S2pDQ3Q== + node-gyp-build@~3.7.0: version "3.7.0" resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-3.7.0.tgz#daa77a4f547b9aed3e2aac779eaf151afd60ec8d" @@ -5220,11 +4940,6 @@ node-gyp@^8.4.1: tar "^6.1.2" which "^2.0.2" -node-releases@^1.1.70: - version "1.1.71" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.71.tgz#cb1334b179896b1c89ecfdd4b725fb7bbdfc7dbb" - integrity sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg== - nodemailer@6.7.2: version "6.7.2" resolved "https://registry.yarnpkg.com/nodemailer/-/nodemailer-6.7.2.tgz#44b2ad5f7ed71b7067f7a21c4fedabaec62b85e0" @@ -5464,13 +5179,6 @@ p-limit@^3.0.2: dependencies: p-try "^2.0.0" -p-limit@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" - integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== - dependencies: - yocto-queue "^0.1.0" - p-locate@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" @@ -5743,12 +5451,12 @@ postgres-interval@^1.1.0: dependencies: xtend "^4.0.0" -prebuild-install@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-7.0.0.tgz#3c5ce3902f1cb9d6de5ae94ca53575e4af0c1574" - integrity sha512-IvSenf33K7JcgddNz2D5w521EgO+4aMMjFt73Uk9FRzQ7P+QZPKrp7qPsDydsSwjGt3T5xRNnM1bj1zMTD5fTA== +prebuild-install@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-7.0.1.tgz#c10075727c318efe72412f333e0ef625beaf3870" + integrity sha512-QBSab31WqkyxpnMWQxubYAHR5S9B2+r81ucocew34Fkl98FhvKIF50jIJnNOBmAZfyNV7vE5T6gd3hTVWgY6tg== dependencies: - detect-libc "^1.0.3" + detect-libc "^2.0.0" expand-template "^2.0.3" github-from-package "0.0.0" minimist "^1.2.3" @@ -5786,6 +5494,11 @@ printj@~1.1.0: resolved "https://registry.yarnpkg.com/printj/-/printj-1.1.2.tgz#d90deb2975a8b9f600fb3a1c94e3f4c53c78a222" integrity sha512-zA2SmoLaxZyArQTOPj5LXecR+RagfPSU5Kw1qP+jkWeNlrq+eJZyY2oS68SU1Z/7/myXM4lo9716laOFAVStCQ== +printj@~1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/printj/-/printj-1.3.1.tgz#9af6b1d55647a1587ac44f4c1654a4b95b8e12cb" + integrity sha512-GA3TdL8szPK4AQ2YnOe/b+Y1jUFwmmGMMK/qbY7VcE3Z7FU8JstbKiKRzO6CIiAKPhTO8m01NoQ0V5f3jc4OGg== + private-ip@2.3.3: version "2.3.3" resolved "https://registry.yarnpkg.com/private-ip/-/private-ip-2.3.3.tgz#1e80ff8443e5ac78f555631aec3ea6ff027fa6aa" @@ -5796,10 +5509,10 @@ private-ip@2.3.3: is-ip "^3.1.0" netmask "^2.0.2" -probe-image-size@7.2.2: - version "7.2.2" - resolved "https://registry.yarnpkg.com/probe-image-size/-/probe-image-size-7.2.2.tgz#e5851b9be7864f21e3bac5e6e4fac9da9055b412" - integrity sha512-QUm+w1S9WTsT5GZB830u0BHExrUmF0J4fyRm5kbLUMEP3fl9UVYXc3xOBVqZNnH9tnvVEJO8vDk3PMtsLqjxug== +probe-image-size@7.2.3: + version "7.2.3" + resolved "https://registry.yarnpkg.com/probe-image-size/-/probe-image-size-7.2.3.tgz#d49c64be540ec8edea538f6f585f65a9b3ab4309" + integrity sha512-HubhG4Rb2UH8YtV4ba0Vp5bQ7L78RTONYu/ujmCu5nBI8wGv24s4E9xSKBi0N1MowRpxk76pFCpJtW0KPzOK0w== dependencies: lodash.merge "^4.6.2" needle "^2.5.2" @@ -6397,7 +6110,7 @@ semver@^7.3.5: dependencies: lru-cache "^6.0.0" -serialize-javascript@5.0.1, serialize-javascript@^5.0.1: +serialize-javascript@5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-5.0.1.tgz#7886ec848049a462467a97d3d918ebb2aaf934f4" integrity sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA== @@ -6432,17 +6145,17 @@ sha.js@^2.4.11: inherits "^2.0.1" safe-buffer "^5.0.1" -sharp@0.29.3: - version "0.29.3" - resolved "https://registry.yarnpkg.com/sharp/-/sharp-0.29.3.tgz#0da183d626094c974516a48fab9b3e4ba92eb5c2" - integrity sha512-fKWUuOw77E4nhpyzCCJR1ayrttHoFHBT2U/kR/qEMRhvPEcluG4BKj324+SCO1e84+knXHwhJ1HHJGnUt4ElGA== +sharp@0.30.0: + version "0.30.0" + resolved "https://registry.yarnpkg.com/sharp/-/sharp-0.30.0.tgz#b2dd62d5f14088b11c72212354f31dff6511b070" + integrity sha512-L3m/l6yQFr3oGBUzcSAlN/R9yGFPYqM9FpMUe6Z4nHg4sWtP3hW1rcz+aaHklhD4wX5Jqh5PY9z+A1d4Qt3Hfg== dependencies: - color "^4.0.1" - detect-libc "^1.0.3" - node-addon-api "^4.2.0" - prebuild-install "^7.0.0" + color "^4.2.0" + detect-libc "^2.0.0" + node-addon-api "^4.3.0" + prebuild-install "^7.0.1" semver "^7.3.5" - simple-get "^4.0.0" + simple-get "^4.0.1" tar-fs "^2.1.1" tunnel-agent "^0.6.0" @@ -6496,6 +6209,15 @@ simple-get@^4.0.0: once "^1.3.1" simple-concat "^1.0.0" +simple-get@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-4.0.1.tgz#4a39db549287c979d352112fa03fd99fd6bc3543" + integrity sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA== + dependencies: + decompress-response "^6.0.0" + once "^1.3.1" + simple-concat "^1.0.0" + simple-swizzle@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" @@ -6530,34 +6252,16 @@ socks@^2.6.1: ip "^1.1.5" smart-buffer "^4.1.0" -source-list-map@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" - integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== - source-map-js@^0.6.2: version "0.6.2" resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-0.6.2.tgz#0bb5de631b41cfbda6cfba8bd05a80efdfd2385e" integrity sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug== -source-map-support@~0.5.19: - version "0.5.19" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" - integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: +source-map@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== -source-map@~0.7.2: - version "0.7.3" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" - integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== - speakeasy@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/speakeasy/-/speakeasy-2.0.0.tgz#85c91a071b09a5cb8642590d983566165f57613a" @@ -6794,7 +6498,7 @@ supports-color@^5.3.0: dependencies: has-flag "^3.0.0" -supports-color@^7.0.0, supports-color@^7.1.0: +supports-color@^7.1.0: version "7.2.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== @@ -6813,12 +6517,12 @@ syslog-pro@1.0.0: dependencies: moment "^2.22.2" -systeminformation@5.9.9: - version "5.9.9" - resolved "https://registry.yarnpkg.com/systeminformation/-/systeminformation-5.9.9.tgz#aa8234a138363bd988f438fed3273370f79d7e30" - integrity sha512-xciy6NKCLfs4dqMD1Tdlo7v1/g0NfdA1EKsIptUQjlcVvpwHyjifAbNOF7ppFezGSMXxYE8me+l2+RlFF4lyTg== +systeminformation@5.11.0: + version "5.11.0" + resolved "https://registry.yarnpkg.com/systeminformation/-/systeminformation-5.11.0.tgz#2060779e1e7c7372192dbcd850c65cfd85f4ea71" + integrity sha512-mI/5nFK7NUe9Qbmy65WoB5TlCWKAhP4kG0w6uR2mZM8Mpdi8b45b3hTIK3W5+kQYZnYFWeS9/O5nn5rdcSvqfA== -tapable@^2.1.1, tapable@^2.2.0: +tapable@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.0.tgz#5c373d281d9c672848213d0e037d1c4165ab426b" integrity sha512-FBk4IesMV1rBxX2tfiK8RAmogtWn53puLOQlvO8XuwlgxcYbP4mVPS9Ph4aeamSyyVjOl24aYWAuc8U5kCVwMw== @@ -6889,27 +6593,6 @@ tar@^6.1.2: mkdirp "^1.0.3" yallist "^4.0.0" -terser-webpack-plugin@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.1.1.tgz#7effadee06f7ecfa093dbbd3e9ab23f5f3ed8673" - integrity sha512-5XNNXZiR8YO6X6KhSGXfY0QrGrCRlSwAEjIIrlRQR4W8nP69TaJUlh3bkuac6zzgspiGPfKEHcY295MMVExl5Q== - dependencies: - jest-worker "^26.6.2" - p-limit "^3.1.0" - schema-utils "^3.0.0" - serialize-javascript "^5.0.1" - source-map "^0.6.1" - terser "^5.5.1" - -terser@^5.5.1: - version "5.5.1" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.5.1.tgz#540caa25139d6f496fdea056e414284886fb2289" - integrity sha512-6VGWZNVP2KTUcltUQJ25TtNjx/XgdDsBDKGt8nN0MpydU36LmbPPcMBd2kmtZNNGVVDLg44k7GKeHHj+4zPIBQ== - dependencies: - commander "^2.20.0" - source-map "~0.7.2" - source-map-support "~0.5.19" - text-table@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" @@ -6990,10 +6673,10 @@ tough-cookie@^4.0.0: punycode "^2.1.1" universalify "^0.1.2" -tr46@^2.0.0, tr46@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.0.2.tgz#03273586def1595ae08fedb38d7733cee91d2479" - integrity sha512-3n1qG+/5kg+jrbTzwAykB5yRYtQCTqOGKq5U5PE3b0a1/mzo6snDhjGS0zJVJunO0NrT3Dg1MLy5TjWP/UJppg== +tr46@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-3.0.0.tgz#555c4e297a950617e8eeddef633c87d4d9d6cbf9" + integrity sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA== dependencies: punycode "^2.1.1" @@ -7057,7 +6740,7 @@ tsconfig-paths@3.12.0, tsconfig-paths@^3.12.0: minimist "^1.2.0" strip-bom "^3.0.0" -tslib@^1.8.1, tslib@^1.9.0: +tslib@^1.8.1: version "1.11.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.11.1.tgz#eb15d128827fbee2841549e171f45ed338ac7e35" integrity sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA== @@ -7318,20 +7001,12 @@ w3c-hr-time@^1.0.2: dependencies: browser-process-hrtime "^1.0.0" -w3c-xmlserializer@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz#3e7104a05b75146cc60f564380b7f683acf1020a" - integrity sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA== +w3c-xmlserializer@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-3.0.0.tgz#06cdc3eefb7e4d0b20a560a5a3aeb0d2d9a65923" + integrity sha512-3WFqGEgSXIyGhOmAFtlicJNMjEps8b1MG31NCA0/vOF9+nKMUW1ckhi9cnNHmf88Rzw5V+dwIwsm2C7X8k9aQg== dependencies: - xml-name-validator "^3.0.0" - -watchpack@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.0.0.tgz#b12248f32f0fd4799b7be0802ad1f6573a45955c" - integrity sha512-xSdCxxYZWNk3VK13bZRYhsQpfa8Vg63zXG+3pyU8ouqSLRCv4IGXIp9Kr226q6GBkGRlZrST2wwKtjfKz2m7Cg== - dependencies: - glob-to-regexp "^0.4.1" - graceful-fs "^4.1.2" + xml-name-validator "^4.0.0" web-push@3.4.5: version "3.4.5" @@ -7350,52 +7025,10 @@ web-streams-polyfill@^3.0.3: resolved "https://registry.yarnpkg.com/web-streams-polyfill/-/web-streams-polyfill-3.2.0.tgz#a6b74026b38e4885869fb5c589e90b95ccfc7965" integrity sha512-EqPmREeOzttaLRm5HS7io98goBgZ7IVz79aDvqjD0kYXLtFZTc0T/U6wHTPKyIjb+MdN7DFIIX6hgdBEpWmfPA== -webidl-conversions@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff" - integrity sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA== - -webidl-conversions@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" - integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== - -webpack-sources@^2.1.1: - version "2.2.0" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-2.2.0.tgz#058926f39e3d443193b6c31547229806ffd02bac" - integrity sha512-bQsA24JLwcnWGArOKUxYKhX3Mz/nK1Xf6hxullKERyktjNMC4x8koOeaDNTA2fEJ09BdWLbM/iTW0ithREUP0w== - dependencies: - source-list-map "^2.0.1" - source-map "^0.6.1" - -webpack@^5: - version "5.33.2" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.33.2.tgz#c049717c9b038febf5a72fd2f53319ad59a8c1fc" - integrity sha512-X4b7F1sYBmJx8mlh2B7mV5szEkE0jYNJ2y3akgAP0ERi0vLCG1VvdsIxt8lFd4st6SUy0lf7W0CCQS566MBpJg== - dependencies: - "@types/eslint-scope" "^3.7.0" - "@types/estree" "^0.0.46" - "@webassemblyjs/ast" "1.11.0" - "@webassemblyjs/wasm-edit" "1.11.0" - "@webassemblyjs/wasm-parser" "1.11.0" - acorn "^8.0.4" - browserslist "^4.14.5" - chrome-trace-event "^1.0.2" - enhanced-resolve "^5.7.0" - es-module-lexer "^0.4.0" - eslint-scope "^5.1.1" - events "^3.2.0" - glob-to-regexp "^0.4.1" - graceful-fs "^4.2.4" - json-parse-better-errors "^1.0.2" - loader-runner "^4.2.0" - mime-types "^2.1.27" - neo-async "^2.6.2" - schema-utils "^3.0.0" - tapable "^2.1.1" - terser-webpack-plugin "^5.1.1" - watchpack "^2.0.0" - webpack-sources "^2.1.1" +webidl-conversions@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-7.0.0.tgz#256b4e1882be7debbf01d05f0aa2039778ea080a" + integrity sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g== websocket@1.0.34: version "1.0.34" @@ -7409,35 +7042,25 @@ websocket@1.0.34: utf-8-validate "^5.0.2" yaeti "^0.0.6" -whatwg-encoding@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" - integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== +whatwg-encoding@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz#e7635f597fd87020858626805a2729fa7698ac53" + integrity sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg== dependencies: - iconv-lite "0.4.24" + iconv-lite "0.6.3" -whatwg-mimetype@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" - integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== +whatwg-mimetype@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz#5fa1a7623867ff1af6ca3dc72ad6b8a4208beba7" + integrity sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q== -whatwg-url@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.0.0.tgz#37f256cb746398e19b107bd6ef820b4ae2d15871" - integrity sha512-41ou2Dugpij8/LPO5Pq64K5q++MnRCBpEHvQr26/mArEKTkCV5aoXIqyhuYtE0pkqScXwhf2JP57rkRTYM29lQ== +whatwg-url@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-10.0.0.tgz#37264f720b575b4a311bd4094ed8c760caaa05da" + integrity sha512-CLxxCmdUby142H5FZzn4D8ikO1cmypvXVQktsgosNy4a4BHrDHeciBBGZhb0bNoR5/MltoCatso+vFjjGx8t0w== dependencies: - lodash.sortby "^4.7.0" - tr46 "^2.0.0" - webidl-conversions "^5.0.0" - -whatwg-url@^8.5.0: - version "8.5.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.5.0.tgz#7752b8464fc0903fec89aa9846fc9efe07351fd3" - integrity sha512-fy+R77xWv0AiqfLl4nuGUlQ3/6b5uNfQ4WAbGQVMYshCTCCPK9psC1nWh3XHuxGVCtlcDDQPQW1csmmIQo+fwg== - dependencies: - lodash "^4.7.0" - tr46 "^2.0.2" - webidl-conversions "^6.1.0" + tr46 "^3.0.0" + webidl-conversions "^7.0.0" which-boxed-primitive@^1.0.2: version "1.0.2" @@ -7526,16 +7149,11 @@ wrappy@1: resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= -ws@8.4.2: +ws@8.4.2, ws@^8.2.3: version "8.4.2" resolved "https://registry.yarnpkg.com/ws/-/ws-8.4.2.tgz#18e749868d8439f2268368829042894b6907aa0b" integrity sha512-Kbk4Nxyq7/ZWqr/tarI9yIt/+iNNFOjBXEWgTb4ydaNHBNGgvf2QHbS9fdfsndfjFlFwEd4Al+mw83YkaD10ZA== -ws@^7.4.6: - version "7.5.3" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.3.tgz#160835b63c7d97bfab418fc1b8a9fced2ac01a74" - integrity sha512-kQ/dHIzuLrS6Je9+uv81ueZomEwH0qVYstcAQ4/Z93K8zeko9gtAbttJWzoC5ukqXY1PpoouV3+VSOqEAFt5wg== - xev@2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/xev/-/xev-2.0.1.tgz#24484173a22115bc8a990ef5d4d5129695b827a7" @@ -7548,10 +7166,10 @@ xml-js@^1.6.11: dependencies: sax "^1.2.4" -xml-name-validator@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" - integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== +xml-name-validator@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-4.0.0.tgz#79a006e2e63149a8600f15430f0a4725d1524835" + integrity sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw== xml2js@0.4.19: version "0.4.19" @@ -7695,11 +7313,6 @@ yn@3.1.1: resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== -yocto-queue@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" - integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== - zen-observable-ts@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/zen-observable-ts/-/zen-observable-ts-1.0.0.tgz#30d1202b81d8ba4c489e3781e8ca09abf0075e70" diff --git a/packages/client/.eslintrc.js b/packages/client/.eslintrc.js index d414f86ed..acbb7c0c6 100644 --- a/packages/client/.eslintrc.js +++ b/packages/client/.eslintrc.js @@ -18,6 +18,7 @@ module.exports = { // data ぎįĻæ­ĸį†į”ą: æŠŊ蹥įš„すぎるため // e ぎįĻæ­ĸį†į”ą: error や event ãĒãŠã€č¤‡æ•°ãŽã‚­ãƒŧワãƒŧドぎ頭文字であり分かりãĢくいため "id-denylist": ["error", "window", "data", "e"], + 'eqeqeq': ['error', 'always', { 'null': 'ignore' }], "vue/attributes-order": ["error", { "alphabetical": false }], diff --git a/packages/client/package.json b/packages/client/package.json index b2e80bdd8..2655f8116 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -12,7 +12,6 @@ "dependencies": { "@discordapp/twemoji": "13.1.0", "@syuilo/aiscript": "0.11.1", - "@types/dateformat": "3.0.1", "@types/escape-regexp": "0.0.1", "@types/glob": "7.2.0", "@types/gulp": "4.0.9", diff --git a/packages/client/src/components/chart-tooltip.vue b/packages/client/src/components/chart-tooltip.vue new file mode 100644 index 000000000..b080eaf2b --- /dev/null +++ b/packages/client/src/components/chart-tooltip.vue @@ -0,0 +1,51 @@ + + + + + diff --git a/packages/client/src/components/chart.vue b/packages/client/src/components/chart.vue index d17c0c9f3..ea0df5535 100644 --- a/packages/client/src/components/chart.vue +++ b/packages/client/src/components/chart.vue @@ -8,7 +8,7 @@ diff --git a/packages/client/src/components/reactions-viewer.details.vue b/packages/client/src/components/reactions-viewer.details.vue index 8cec8dfa2..eb889c488 100644 --- a/packages/client/src/components/reactions-viewer.details.vue +++ b/packages/client/src/components/reactions-viewer.details.vue @@ -1,5 +1,5 @@ - diff --git a/packages/client/src/ui/universal.vue b/packages/client/src/ui/universal.vue index 8fe9dcffa..b0dfc5aad 100644 --- a/packages/client/src/ui/universal.vue +++ b/packages/client/src/ui/universal.vue @@ -20,7 +20,7 @@ - +
@@ -31,9 +31,9 @@
- + - +
@@ -64,155 +64,133 @@
-