diff --git a/.github/ISSUE_TEMPLATE/02_feature-request.yml b/.github/ISSUE_TEMPLATE/02_feature-request.yml index 17926412ff762590490521f70fea53a345f2ae27..8420475b3e00874024b3a5277849bbc6bff46dee 100644 --- a/.github/ISSUE_TEMPLATE/02_feature-request.yml +++ b/.github/ISSUE_TEMPLATE/02_feature-request.yml @@ -9,3 +9,9 @@ body: description: Tell us what the suggestion is validations: required: true + - type: textarea + attributes: + label: Purpose + description: Describe the specific problem or need you think this feature will solve, and who it will help. + validations: + required: true \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index ee98f4ccb99b66a0fb764f5ed65600432a5c67ce..92e02508fe6fa0c8ac33ecbe054c88b03ebd2eef 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,39 @@ --> +## 2023.11.1 + +### General +- Feat: 管ç†è€…ãŒã‚³ãƒ³ãƒˆãƒãƒ¼ãƒ«ãƒ‘ãƒãƒ«ã‹ã‚‰ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã®ç…§ä¼šã‚’è¡Œãˆã‚‹ã‚ˆã†ã«ãªã‚Šã¾ã—㟠+- Enhance: ãƒãƒ¼ã‚«ãƒªã‚¼ãƒ¼ã‚·ãƒ§ãƒ³ã®æ›´æ–° +- Enhance: ä¾å˜é–¢ä¿‚ã®æ›´æ–° + +### Client +- Enhance: MFMã§ãƒ«ãƒ“を振れるよã†ã« + - 例: `$[ruby ä¸‰é ˆæœ¨ ã¿ã™ã]` +- Enhance: MFMã§UNIX時間を指定ã—ã¦æ—¥æ™‚を表示ã§ãるよã†ã« + - 例: `$[unixtime 1701356400]` +- Enhance: プラグインã§ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ãŸå ´åˆã®ãƒãƒ³ãƒ‰ãƒªãƒ³ã‚°ã‚’強化 +- Enhance: ç´°ã‹ãªUIã®ãƒ–ラッシュアップ +- Fix: 効果音ãŒå†ç”Ÿã•ã‚Œã‚‹ã¨ãƒ‡ãƒã‚¤ã‚¹ã§å†ç”Ÿã—ã¦ã„る動画や音声ãŒåœæ¢ã™ã‚‹å•é¡Œã‚’ä¿®æ£ #12339 +- Fix: デッã‚ã«è¡¨ç¤ºã•ã‚ŒãŸãƒãƒ£ãƒ³ãƒãƒ«ã®è¡¨ç¤ºå…ˆãƒãƒ£ãƒ³ãƒãƒ«ã‚’切り替ãˆãŸéš›ã€å³åº§ã«åæ˜ ã•ã‚Œãªã„å•é¡Œã‚’ä¿®æ£ #12236 +- Fix: プラグインã§ãƒŽãƒ¼ãƒˆã®è¡¨ç¤ºã‚’書ãæ›ãˆã‚‰ã‚Œãªã„å•é¡Œã‚’ä¿®æ£ +- Fix: アイコンデコレーションãŒè¦‹åˆ‡ã‚Œã‚‹å ´åˆãŒã‚ã‚‹å•é¡Œã‚’ä¿®æ£ +- Fix: 「フォãƒãƒ¼ä¸ã®äººå…¨å“¡ã®è¿”ä¿¡ã‚’å«ã‚ã‚‹/å«ã‚ãªã„よã†ã«ã™ã‚‹ã€ã®ãƒœã‚¿ãƒ³ã‚’押下ã—ãŸéš›ã®ç¢ºèªãŒæ©Ÿèƒ½ã—ã¦ã„ãªã„å•é¡Œã‚’ä¿®æ£ +- Fix: éžãƒã‚°ã‚¤ãƒ³æ™‚ã«ã€Œãƒ¡ãƒ¢ã‚’è¿½åŠ ã€ã‚’表示ã—ãªã„よã†ã«å¤‰æ›´ #12309 +- Fix: 絵文å—ピッカーã§ã®æ¤œç´¢ãŒæ›´æ–°ã•ã‚Œãªã„å•é¡Œã‚’ä¿®æ£ +- Fix: 特定ã®æ¡ä»¶ä¸‹ã§ãƒŽãƒ¼ãƒˆãŒnyaizeã•ã‚Œãªã„å•é¡Œã‚’ä¿®æ£ + +### Server +- Enhance: FTTã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã¸ã®ãƒ•ã‚©ãƒ¼ãƒ«ãƒãƒƒã‚¯å‡¦ç†ã‚’è¡Œã†ã‹ã©ã†ã‹ã‚’è¨å®šå¯èƒ½ã« +- Fix: トークンã®ãªã„プラグインをアンインストールã™ã‚‹ã¨ãã«ã‚¨ãƒ©ãƒ¼ãŒå‡ºãªã„よã†ã« +- Fix: 投稿通知ãŒã‚ªãƒ³ã§ã‚‚ダイレクト投稿ã¯ãƒ¦ãƒ¼ã‚¶ãƒ¼ã«é€šçŸ¥ã•ã‚Œãªã„よã†ã«ã•ã‚Œã¾ã—㟠+- Fix: ユーザタイムラインã®ã€ŒãƒŽãƒ¼ãƒˆã€é¸æŠžæ™‚ã«ãƒªãƒŽãƒ¼ãƒˆãŒæ··ã–り込んã§ã—ã¾ã†ã“ã¨ãŒã‚ã‚‹å•é¡Œã®ä¿®æ£ #12306 +- Fix: LTLã«ç‰¹å®šæ¡ä»¶ä¸‹ã«ã¦ãƒãƒ£ãƒ³ãƒãƒ«ã¸ã®æŠ•ç¨¿ãŒæ··ã–り込むç¾è±¡ã‚’ä¿®æ£ +- Fix: ActivityPub: è¿½åŠ æƒ…å ±ã®ã‚«ã‚¹ã‚¿ãƒ 絵文å—ãŒãƒ¦ãƒ¼ã‚¶ãƒ¼æƒ…å ±ã®tagã«å«ã¾ã‚Œãªã„å•é¡Œã‚’ä¿®æ£ +- Fix: ActivityPubã«é–¢ã™ã‚‹ã‚»ã‚ュリティã®å‘上 +- Fix: éžå…¬é–‹ã®æŠ•ç¨¿ã«å¯¾ã—ã¦è¿”ä¿¡ã§ããªã„よã†ã« + ## 2023.11.0 ### Note diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index cd9cf8302a6216c17d27520f0ab88472f9fefd92..1bbfb082afac98da984cc2147b1f97a3a9e38f1b 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -2,45 +2,131 @@ ## Our Pledge -In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation. +We as members, contributors, and leaders pledge to make participation in our +community a harassment-free experience for everyone, regardless of age, body +size, visible or invisible disability, ethnicity, sex characteristics, gender +identity and expression, level of experience, education, socio-economic status, +nationality, personal appearance, race, caste, color, religion, or sexual +identity and orientation. + +We pledge to act and interact in ways that contribute to an open, welcoming, +diverse, inclusive, and healthy community. ## Our Standards -Examples of behavior that contributes to creating a positive environment include: +Examples of behavior that contributes to a positive environment for our +community include: -* Using welcoming and inclusive language -* Being respectful of differing viewpoints and experiences -* Gracefully accepting constructive criticism -* Focusing on what is best for the community -* Showing empathy towards other community members +* Demonstrating empathy and kindness toward other people +* Being respectful of differing opinions, viewpoints, and experiences +* Giving and gracefully accepting constructive feedback +* Accepting responsibility and apologizing to those affected by our mistakes, + and learning from the experience +* Focusing on what is best not just for us as individuals, but for the overall + community -Examples of unacceptable behavior by participants include: +Examples of unacceptable behavior include: -* The use of sexualized language or imagery and unwelcome sexual attention or advances -* Trolling, insulting/derogatory comments, and personal or political attacks +* The use of sexualized language or imagery, and sexual attention or advances of + any kind +* Trolling, insulting or derogatory comments, and personal or political attacks * Public or private harassment -* Publishing others' private information, such as a physical or electronic address, without explicit permission -* Other conduct which could reasonably be considered inappropriate in a professional setting +* Publishing others' private information, such as a physical or email address, + without their explicit permission +* Other conduct which could reasonably be considered inappropriate in a + professional setting -## Our Responsibilities +## Enforcement Responsibilities -Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior. +Community leaders are responsible for clarifying and enforcing our standards of +acceptable behavior and will take appropriate and fair corrective action in +response to any behavior that they deem inappropriate, threatening, offensive, +or harmful. -Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. +Community leaders have the right and responsibility to remove, edit, or reject +comments, commits, code, wiki edits, issues, and other contributions that are +not aligned to this Code of Conduct, and will communicate reasons for moderation +decisions when appropriate. ## Scope -This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers. +This Code of Conduct applies within all community spaces, and also applies when +an individual is officially representing the community in public spaces. +Examples of representing our community include using an official e-mail address, +posting via an official social media account, or acting as an appointed +representative at an online or offline event. ## Enforcement -Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at syuilotan@yahoo.co.jp. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported to the community leaders responsible for enforcement at +<syuilotan@yahoo.co.jp>. +All complaints will be reviewed and investigated promptly and fairly. + +All community leaders are obligated to respect the privacy and security of the +reporter of any incident. + +## Enforcement Guidelines + +Community leaders will follow these Community Impact Guidelines in determining +the consequences for any action they deem in violation of this Code of Conduct: + +### 1. Correction + +**Community Impact**: Use of inappropriate language or other behavior deemed +unprofessional or unwelcome in the community. + +**Consequence**: A private, written warning from community leaders, providing +clarity around the nature of the violation and an explanation of why the +behavior was inappropriate. A public apology may be requested. + +### 2. Warning + +**Community Impact**: A violation through a single incident or series of +actions. -Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. +**Consequence**: A warning with consequences for continued behavior. No +interaction with the people involved, including unsolicited interaction with +those enforcing the Code of Conduct, for a specified period of time. This +includes avoiding interactions in community spaces as well as external channels +like social media. Violating these terms may lead to a temporary or permanent +ban. + +### 3. Temporary Ban + +**Community Impact**: A serious violation of community standards, including +sustained inappropriate behavior. + +**Consequence**: A temporary ban from any sort of interaction or public +communication with the community for a specified period of time. No public or +private interaction with the people involved, including unsolicited interaction +with those enforcing the Code of Conduct, is allowed during this period. +Violating these terms may lead to a permanent ban. + +### 4. Permanent Ban + +**Community Impact**: Demonstrating a pattern of violation of community +standards, including sustained inappropriate behavior, harassment of an +individual, or aggression toward or disparagement of classes of individuals. + +**Consequence**: A permanent ban from any sort of public interaction within the +community. ## Attribution -This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version] +This Code of Conduct is adapted from the [Contributor Covenant][homepage], +version 2.1, available at +[https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1]. + +Community Impact Guidelines were inspired by +[Mozilla's code of conduct enforcement ladder][Mozilla CoC]. + +For answers to common questions about this code of conduct, see the FAQ at +[https://www.contributor-covenant.org/faq][FAQ]. Translations are available at +[https://www.contributor-covenant.org/translations][translations]. -[homepage]: http://contributor-covenant.org -[version]: http://contributor-covenant.org/version/1/4/ +[homepage]: https://www.contributor-covenant.org +[v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html +[Mozilla CoC]: https://github.com/mozilla/diversity +[FAQ]: https://www.contributor-covenant.org/faq +[translations]: https://www.contributor-covenant.org/translations diff --git a/locales/ca-ES.yml b/locales/ca-ES.yml index a41b82c9361491fe6a00fa27e67617ff71ec862a..6fd72d19b7e8a55643a823f1f78f7cbeaf1a353f 100644 --- a/locales/ca-ES.yml +++ b/locales/ca-ES.yml @@ -45,6 +45,7 @@ pin: "Fixar al perfil" unpin: "Para de fixar del perfil" copyContent: "Copiar el contingut" copyLink: "Copiar l'enllaç" +copyLinkRenote: "Copiar l'enllaç de la renota" delete: "Elimina" deleteAndEdit: "Elimina i edita" deleteAndEditConfirm: "Segur que vols eliminar aquesta publicació i editar-la? Perdrà s totes les reaccions, impulsos i respostes." @@ -110,6 +111,8 @@ renoted: "S'ha impulsat" cantRenote: "No es pot impulsar aquesta publicació" cantReRenote: "No es pot impulsar l'impuls." quote: "Cita" +inChannelRenote: "Renotar només al Canal" +inChannelQuote: "Citar només al Canal" pinnedNote: "Nota fixada" pinned: "Fixar al perfil" you: "Tu" @@ -127,6 +130,8 @@ unmarkAsSensitive: "Deixar de marcar com a sensible" enterFileName: "Defineix nom del fitxer" mute: "Silencia" unmute: "Deixa de silenciar" +renoteMute: "Silenciar Renotes" +renoteUnmute: "Treure el silenci de les renotes" block: "Bloqueja" unblock: "Desbloqueja" suspend: "Suspèn" @@ -136,6 +141,8 @@ unblockConfirm: "Vols desbloquejar-lo?" suspendConfirm: "Està s segur que vols suspendre aquest compte?" unsuspendConfirm: "Està s segur que vols treure la suspensió d'aquest compte?" selectList: "Tria una llista" +editList: "Editar llista" +selectChannel: "Selecciona un canal" selectAntenna: "Tria una antena" editAntenna: "Modificar antena" selectWidget: "Triar un giny" diff --git a/locales/en-US.yml b/locales/en-US.yml index ed30ed001b5c15236a21e88785992cf4d74d17f3..c788f069551278d3ae41f2bdc1577bc5b02d9e24 100644 --- a/locales/en-US.yml +++ b/locales/en-US.yml @@ -1201,6 +1201,8 @@ _announcement: readConfirmText: "This will mark the contents of \"{title}\" as read." shouldNotBeUsedToPresentPermanentInfo: "As it may significantly impact the user experience for new users, it is recommended to use notifications in the flow information rather than stock information." dialogAnnouncementUxWarn: "Having two or more dialog-style notifications simultaneously can significantly impact the user experience, so please use them carefully." + silence: "No notification" + silenceDescription: "Turning this on will skip the notification of this announcement and the user won't need to read it." _initialAccountSetting: accountCreated: "Your account was successfully created!" letsStartAccountSetup: "For starters, let's set up your profile." diff --git a/locales/fr-FR.yml b/locales/fr-FR.yml index 1a014d4dd0cd3279cba20bf8a3914381bb7f7068..c1d2d440d1234b27a5fb5d088b07d81b89ba9d8e 100644 --- a/locales/fr-FR.yml +++ b/locales/fr-FR.yml @@ -616,9 +616,9 @@ notificationType: "Type de notifications" edit: "Editer" emailServer: "Serveur de messagerie" enableEmail: "Activer la distribution de courriel" -emailConfigInfo: "Utilisé pour confirmer votre adresse de courriel et la réinitialisation de votre mot de passe en cas d’oubli." +emailConfigInfo: "Utilisé pour confirmer votre adresse e-mail et réinitialiser votre mot de passe en cas d’oubli" email: "E-mail " -emailAddress: "Adresses e-mail" +emailAddress: "Adresse e-mail" smtpConfig: "Paramètres du serveur SMTP" smtpHost: "Serveur distant" smtpPort: "Port" @@ -764,7 +764,7 @@ inUse: "utilisé" editCode: "Modifier le code" apply: "Appliquer" receiveAnnouncementFromInstance: "Recevoir les messages d'information de l'instance" -emailNotification: "Notifications par mail" +emailNotification: "Notifications par courriel" publish: "Public" inChannelSearch: "Chercher dans le canal" useReactionPickerForContextMenu: "Clic-droit pour ouvrir le panneau de réactions" @@ -946,6 +946,7 @@ unsubscribePushNotification: "Désactiver les notifications push" pushNotificationAlreadySubscribed: "Les notifications push sont déjà activées" pushNotificationNotSupported: "Votre navigateur ou votre instance ne prend pas en charge les notifications push" sendPushNotificationReadMessage: "Supprimer les notifications push une fois que les notifications ou messages pertinents ont été lus." +sendPushNotificationReadMessageCaption: "Cela peut augmenter la consommation de batterie de votre appareil." windowMaximize: "Maximiser" windowMinimize: "Minimaliser" windowRestore: "Restaurer" @@ -986,6 +987,7 @@ thisPostMayBeAnnoyingIgnore: "Publier quand-même" collapseRenotes: "Réduire les renotes déjà vues" internalServerError: "Erreur interne du serveur" copyErrorInfo: "Copier les détails de l’erreur" +joinThisServer: "S'inscrire à cette instance" exploreOtherServers: "Trouver une autre instance" disableFederationOk: "Désactiver" postToTheChannel: "Publier au canal" @@ -996,6 +998,7 @@ license: "Licence" myClips: "Mes clips" retryAllQueuesConfirmText: "Cela peut augmenter temporairement la charge du serveur." showClipButtonInNoteFooter: "Ajouter « Clip » au menu d'action de la note" +reactionsDisplaySize: "Taille de l'affichage des réactions" noteIdOrUrl: "Identifiant de la note ou URL" video: "Vidéo" videos: "Vidéos" @@ -1022,6 +1025,7 @@ pleaseAgreeAllToContinue: "Pour continuer, veuillez accepter tous les champs ci- continue: "Continuer" preservedUsernames: "Noms d'utilisateur·rice réservés" archive: "Archive" +thisChannelArchived: "Ce canal a été archivé." displayOfNote: "Affichage de la note" initialAccountSetting: "Configuration initiale du profil" youFollowing: "Abonné·e" @@ -1033,6 +1037,7 @@ failedToPreviewUrl: "Aperçu d'URL échoué" update: "Mettre à jour" later: "Plus tard" goToMisskey: "Retour vers Misskey" +installed: "Installé" expirationDate: "Date d’expiration" waitingForMailAuth: "En attente de la vérification de l'adresse courriel" usedAt: "Utilisé le" @@ -1049,6 +1054,7 @@ pastAnnouncements: "Annonces passées" replies: "Réponses" renotes: "Renotes" loadReplies: "Inclure les réponses" +loadConversation: "Afficher la conversation" pinnedList: "Liste épinglée" notifyNotes: "Notifier à propos des nouvelles notes" authentication: "Authentification" @@ -1082,15 +1088,24 @@ refreshing: "Rafraîchissement..." pullDownToRefresh: "Tirer vers le bas pour rafraîchir" disableStreamingTimeline: "Désactiver les mises à jour en temps réel de la ligne du temps" useGroupedNotifications: "Grouper les notifications" +signupPendingError: "Un problème est survenu lors de la vérification de votre adresse e-mail. Le lien a peut-être expiré." +cwNotationRequired: "Si « Masquer le contenu » est activé, une description doit être fournie." +doReaction: "Réagir" _announcement: readConfirmTitle: "Marquer comme lu ?" + shouldNotBeUsedToPresentPermanentInfo: "Puisque cela pourrait nuire considérablement à l'expérience utilisateur pour les nouveaux utilisateurs, il est recommandé d'utiliser les annonces pour afficher des informations temporaires plutôt que des informations persistantes." + dialogAnnouncementUxWarn: "Avoir deux ou plus annonces de style dialogue en même temps pourrait nuire considérablement à l'expérience utilisateur. Veuillez les utiliser avec caution." + silence: "Ne pas me notifier" + silenceDescription: "Si activée, vous ne recevrez pas de notifications sur les annonces et n'aurez pas besoin de les marquer comme lues." _initialAccountSetting: profileSetting: "Paramètres du profil" privacySetting: "Paramètres de confidentialité" initialAccountSettingCompleted: "Configuration du profil terminée avec succès !" + youCanContinueTutorial: "Vous pouvez procéder au tutoriel sur l'utilisation de {nom}(Misskey) ou vous arrêter ici et commencer à l'utiliser immédiatement." startTutorial: "Démarrer le tutoriel" skipAreYouSure: "Désirez-vous ignorer la configuration du profil ?" _initialTutorial: + launchTutorial: "Visionner le tutoriel" title: "Tutoriel" wellDone: "Bien joué !" skipAreYouSure: "Quitter le tutoriel ?" @@ -1108,9 +1123,62 @@ _initialTutorial: title: "Qu'est-ce que les réactions ?" description: "Vous pouvez ajouter des « réactions » aux notes. Les réactions vous permettent d'exprimer à l'aise des nuances qui ne peuvent pas être exprimées par des mentions j'aime." letsTryReacting: "Des réactions peuvent être ajoutées en cliquant sur le bouton « + » de la note. Essayez d'ajouter une réaction à cet exemple de note !" + reactToContinue: "Ajoutez une réaction pour procéder." + reactNotification: "Vous recevez des notifications en temps réel lorsque quelqu'un réagit à votre note." + reactDone: "Vous pouvez annuler la réaction en cliquant sur le bouton « - » ." + _timeline: + title: "Fonctionnement des fils" + description1: "Misskey offre plusieurs fils selon l'usage (certains peuvent être désactivés par le serveur)." + home: "Vous pouvez voir les notes des utilisateurs auxquels vous êtes abonné·e." + local: "Vous pouvez voir les notes de tous les utilisateurs sur cette instance." + social: "Les notes des fils principal et local sont affichées." + global: "Vous pouvez voir les notes de toutes les instances connectées." + description2: "Vous pouvez passer d'un fil à l'autre en haut de l'écran à tout moment." + description3: "De plus, il y a les fils des listes et des canaux. Pour plus de détails, consultez {link}." + _postNote: + title: "Paramètres de la publication de note" + description1: "Lorsque vous publiez des notes sur Misskey, diverses options sont disponibles. Voici le formulaire de publication." + _visibility: + description: "Vous pouvez choisir qui peut voir vos notes." + public: "Visible à tous les utilisateurs." + home: "Uniquement visible sur le fil principal. Les utilisateurs pourront la voir en visitant ton profil, en s'abonnant à vous et par les renotes." + followers: "Uniquement visible à vos abonnés. Elle ne pourra être renotée que par vous-même." + direct: "Uniquement visible aux utilisateurs de votre choix. Les récipients seront notifiés. Cette option peut être utilisée comme alternative aux messages directs." + doNotSendConfidencialOnDirect1: "Faites attention quand vous envoyez vos informations sensibles !" + doNotSendConfidencialOnDirect2: "Les administrateurs de l'instance destinataire peuvent voir toutes les notes publiées. Soyez prudent·e avec vos informations sensibles quand vous envoyez des notes directes aux utilisateurs dont vous ne vous fiez pas aux instances." + localOnly: "Désactiver la fédération de la note aux autres instances. Les utilisateurs des autres instances ne pourront pas voir directement la note quelle que soit l'étendue de la publication mentionnée ci-dessus." + _cw: + title: "Masquer le contenu (CW)" + description: "Au lieu du corps du texte, le contenu du champ « commentaires » s'affichera. Appuyez sur « afficher le contenu » pour voir le corps du texte." + _exampleNote: + cw: "Attention : cela vous donnera faim !" + note: "J'ai mangé un beignet enrobé de chocolat ðŸ©ðŸ˜‹" + useCases: "Utilisé pour désigner certaines notes selon les règles du serveur ou pour cacher des spoilers ou des textes sensibles." + _howToMakeAttachmentsSensitive: + title: "Comment marquer un fichier joint comme sensible ?" + description: "Attachez un drapeau « sensible » aux fichiers joints selon les règles du serveur ou si vous ne voulez pas que le fichier soit vu directement." + tryThisFile: "Essayez de marquer l'image jointe à ce formulaire de publication comme sensible !" + _exampleNote: + note: "Oups, j'ai échoué à ouvrir le couvercle du natto..." + method: "Pour marquer un fichier joint comme sensible, cliquez sur la vignette du fichier, ouvrez le menu et cliquez sur « marquer comme sensible » ." + sensitiveSucceeded: "Quand vous joignez des fichiers, veuillez indiquer la sensibilité selon les règles du serveur." + doItToContinue: "Marquez le fichier joint comme sensible pour procéder." + _done: + title: "Le tutoriel est terminé ! 🎉" + description: "Les fonctionnalités introduites ici ne sont que quelques-unes. Pour savoir plus sur l'utilisation de Misskey, veuillez consulter {lien}." +_timelineDescription: + home: "Sur le fil principal, vous pouvez voir les notes des utilisateurs auxquels vous êtes abonné·e." + local: "Sur le fil local, vous pouvez voir les notes de tous les utilisateurs sur cette instance." + social: "Sur le fil social, les notes des fils principal et local sont affichées." + global: "Sur le fil global, vous pouvez voir les notes de toutes les instances connectées." _serverSettings: iconUrl: "URL de l’icône" + appIconResolutionMustBe: "La résolution doit être au moins {resolution}." + shortName: "Nom court" + shortNameDescription: "Si le nom officiel de l'instance est long, cette abréviation peut être affichée à la place." fanoutTimelineDescription: "Si activée, la performance de la récupération de la chronologie augmentera considérablement et la charge sur la base de données sera réduite. En revanche, l'utilisation de la mémoire de Redis augmentera. Considérez désactiver cette option si le serveur est bas en mémoire ou instable." + fanoutTimelineDbFallback: "Recours à la base de données" + fanoutTimelineDbFallbackDescription: "Si activée, une demande supplémentaire à la base de données est effectuée comme solution de rechange quand le fil n'est pas mis en cache. Si désactivée, la demande à la base de données n'est pas effectuée, ce qui réduit davantage la charge du serveur mais limite l'étendue du fil récupérable." _accountMigration: moveFrom: "Migrer un autre compte vers le présent compte" moveFromSub: "Créer un alias vers un autre compte" @@ -1221,7 +1289,7 @@ _achievements: _viewInstanceChart: title: "Analyste" _outputHelloWorldOnScratchpad: - title: "Bonjour tout le monde !" + title: "Hello, world!" _open3windows: title: "Multi-fenêtres" _driveFolderCircularReference: @@ -1243,6 +1311,12 @@ _achievements: flavor: "Attendez une minute, vous êtes sur le mauvais site web ?" _brainDiver: flavor: "Misskey-Misskey La-Tu-Ma" + _smashTestNotificationButton: + title: "Débordement de tests" + description: "Détruire le bouton de test de notifications dans un intervalle extrêmement court" + _tutorialCompleted: + title: "Diplôme de la course élémentaire de Misskey" + description: "Terminer le tutoriel" _role: new: "Nouveau rôle" edit: "Modifier le rôle" @@ -1268,6 +1342,7 @@ _role: canManageCustomEmojis: "Gestion des émojis personnalisés" canManageAvatarDecorations: "Gestion des décorations d'avatar" wordMuteMax: "Nombre maximal de caractères dans le filtre de mots" + canUseTranslator: "Usage de la fonctionnalité de traduction" _sensitiveMediaDetection: description: "L'apprentissage automatique peut être utilisé pour détecter automatiquement les médias sensibles à modérer. La sollicitation des serveurs augmente légèrement." sensitivity: "Sensibilité de la détection" @@ -1304,7 +1379,7 @@ _ad: adsSettings: "Paramètres des publicités" notesPerOneAd: "Intervalle de diffusion de publicités lors de la mise à jour en temps réel (nombre de notes par publicité)" setZeroToDisable: "Mettre cette valeur à 0 pour désactiver la diffusion de publicités lors de la mise à jour en temps réel" - adsTooClose: "L'expérience de l'utilisateur peut être gravement compromise par un intervalle de diffusion de publicités extrêmement court." + adsTooClose: "L'expérience utilisateur peut être gravement compromise par un intervalle de diffusion de publicités extrêmement court." _forgotPassword: enterEmail: "Entrez ici l'adresse e-mail que vous avez enregistrée pour votre compte. Un lien vous permettant de réinitialiser votre mot de passe sera envoyé à cette adresse." ifNoEmail: "Si vous n'avez pas enregistré d'adresse e-mail, merci de contacter l'administrateur·rice de votre instance." @@ -1380,6 +1455,7 @@ _channel: notesCount: "{n} Notes" nameAndDescription: "Nom et description" nameOnly: "Nom seulement" + allowRenoteToExternal: "Permettre la renote et la citation hors du canal" _menuDisplay: sideFull: "Latéral" sideIcon: "Latéral (icônes)" @@ -1585,7 +1661,7 @@ _widgets: chooseList: "Sélectionner une liste" _cw: hide: "Masquer" - show: "Afficher plus …" + show: "Afficher le contenu" chars: "{count} caractères" files: "{count} fichiers" _poll: @@ -1754,6 +1830,7 @@ _notification: unreadAntennaNote: "Antenne {name}" emptyPushNotificationMessage: "Les notifications push ont été mises à jour" achievementEarned: "Accomplissement" + testNotification: "Tester la notification" reactedBySomeUsers: "{n} utilisateur·rice·s ont réagi" renotedBySomeUsers: "{n} utilisateur·rice·s ont renoté" followedBySomeUsers: "{n} utilisateur·rice·s se sont abonné·e·s à vous" @@ -1798,7 +1875,7 @@ _deck: tl: "Fil" antenna: "Antennes" list: "Listes" - channel: "Canaux" + channel: "Canal" mentions: "Mentions" direct: "Direct" _webhookSettings: diff --git a/locales/index.d.ts b/locales/index.d.ts index ebab7f2c0bc2a8fe20f4d8e097a9518011d1ca2c..8356046a6b4640817edf3d0d9737c5d7f5c41239 100644 --- a/locales/index.d.ts +++ b/locales/index.d.ts @@ -1317,6 +1317,8 @@ export interface Locale { "shortName": string; "shortNameDescription": string; "fanoutTimelineDescription": string; + "fanoutTimelineDbFallback": string; + "fanoutTimelineDbFallbackDescription": string; }; "_accountMigration": { "moveFrom": string; @@ -1982,6 +1984,15 @@ export interface Locale { "yearsAgo": string; "invalid": string; }; + "_timeIn": { + "seconds": string; + "minutes": string; + "hours": string; + "days": string; + "weeks": string; + "months": string; + "years": string; + }; "_time": { "second": string; "minute": string; diff --git a/locales/it-IT.yml b/locales/it-IT.yml index 08cf0cb7070ae496d683f8def2098f6c22282d47..570629e825a316ca075df57626bdc26529689a13 100644 --- a/locales/it-IT.yml +++ b/locales/it-IT.yml @@ -241,7 +241,7 @@ publishing: "Pubblicazione" notResponding: "Nessuna risposta" instanceFollowing: "Seguiti dall'istanza" instanceFollowers: "Follower dell'istanza" -instanceUsers: "Utenti dell'istanza" +instanceUsers: "Profili nell'istanza" changePassword: "Aggiorna Password" security: "Sicurezza" retypedNotMatch: "Le password non corrispondono." @@ -362,8 +362,8 @@ inMb: "in Megabytes" bannerUrl: "URL dell'immagine d'intestazione" backgroundImageUrl: "URL dello sfondo" basicInfo: "Informazioni fondamentali" -pinnedUsers: "Utenti in evidenza" -pinnedUsersDescription: "Elenca gli/le utenti che vuoi fissare in cima alla pagina \"Esplora\", un@ per riga." +pinnedUsers: "Profili in evidenza" +pinnedUsersDescription: "Elenca i profili delle persone che vuoi fissare nella pagina \"Esplora\"." pinnedPages: "Pagine in evidenza" pinnedPagesDescription: "Specifica il percorso delle pagine che vuoi fissare in cima alla pagina dell'istanza. Una pagina per riga." pinnedClipId: "ID della Clip in evidenza" @@ -391,7 +391,7 @@ antennaKeywordsDescription: "Sparando con uno spazio indichi la condizione E (an notifyAntenna: "Invia notifiche delle nuove note" withFileAntenna: "Solo note con file in allegato" enableServiceworker: "Abilita ServiceWorker" -antennaUsersDescription: "Inserisci solo un nome utente per riga" +antennaUsersDescription: "Elenca un nome utente per riga" caseSensitive: "Sensibile alla distinzione tra maiuscole e minuscole" withReplies: "Includere le risposte" connectedTo: "Connessione ai seguenti profili:" @@ -401,11 +401,11 @@ silence: "Silenzia" silenceConfirm: "Vuoi davvero silenziare questo profilo?" unsilence: "Riattiva" unsilenceConfirm: "Vuoi davvero riattivare questo profilo?" -popularUsers: "Utenti popolari" +popularUsers: "Profili popolari" recentlyUpdatedUsers: "Utenti attivi di recente" -recentlyRegisteredUsers: "Utenti registrati di recente" -recentlyDiscoveredUsers: "Utenti scoperti di recente" -exploreUsersCount: "Ci sono {count} utenti" +recentlyRegisteredUsers: "Profili iscritti di recente" +recentlyDiscoveredUsers: "Profili scoperti di recente" +exploreUsersCount: "Ci sono {count} profili" exploreFediverse: "Esplora il Fediverso" popularTags: "Tag di tendenza" userList: "Liste" @@ -415,8 +415,8 @@ administrator: "Amministratore" token: "Token" 2fa: "Autenticazione a due fattori" setupOf2fa: "Impostare l'autenticazione a due fattori" -totp: "App di autenticazione" -totpDescription: "Inserisci un codice OTP tramite un'app di autenticazione" +totp: "App di autenticazione a due fattori (2FA/MFA)" +totpDescription: "Puoi autenticarti inserendo un codice OTP tramite la tua App di autenticazione a due fattori (2FA/MFA)" moderator: "Moderatore" moderation: "moderazione" moderationNote: "Promemoria di moderazione" @@ -463,7 +463,7 @@ invitations: "Invita" invitationCode: "Codice di invito" checking: "Confermando" available: "Disponibile" -unavailable: "Il nome utente è già in uso" +unavailable: "Non puoi usarlo" usernameInvalidFormat: "Il nome utente deve avere solo caratteri alfanumerici e trattino basso '_'" tooShort: "Troppo breve" tooLong: "Troppo lungo" @@ -563,13 +563,13 @@ scratchpadDescription: "Lo Scratchpad offre un ambiente per esperimenti di AiScr output: "Uscita" script: "Script" disablePagesScript: "Disabilita AiScript nelle pagine" -updateRemoteUser: "Aggiornare le informazioni di utente remot@" +updateRemoteUser: "Aggiorna le informazioni dal profilo remoto" deleteAllFiles: "Elimina tutti i file" deleteAllFilesConfirm: "Vuoi davvero eliminare tutti i file?" removeAllFollowing: "Annulla tutti i follow" removeAllFollowingDescription: "Cancella tutti i follows del server {host}. Per favore, esegui se, ad esempio, l'istanza non esiste più." userSuspended: "L'utente è in sospensione" -userSilenced: "L'utente è silenziat@." +userSilenced: "Profilo silente." yourAccountSuspendedTitle: "Questo profilo è sospeso" yourAccountSuspendedDescription: "Questo profilo è stato sospeso a causa di una violazione del regolamento. Per informazioni, contattare l'amministrazione. Si prega di non creare un nuovo account." tokenRevoked: "Il token non è valido" @@ -741,8 +741,8 @@ reloadToApplySetting: "Le tue preferenze verranno impostate dopo il ricaricament needReloadToApply: "È necessario riavviare per rendere effettive le modifiche." showTitlebar: "Visualizza la barra del titolo" clearCache: "Svuota la cache" -onlineUsersCount: "{n} utenti online" -nUsers: "{n} utenti" +onlineUsersCount: "{n} persone online" +nUsers: "{n} profili" nNotes: "{n}Note" sendErrorReports: "Invia segnalazioni di errori" sendErrorReportsDescription: "Quando abilitato, se si verifica un problema, informazioni dettagliate sugli errori verranno condivise con Misskey in modo da aiutare a migliorare la qualità del software.\nCiò include informazioni come la versione del sistema operativo, il tipo di navigatore web che usi, la cronologia delle attività , ecc." @@ -788,7 +788,7 @@ addDescription: "Aggiungi descrizione" userPagePinTip: "Qui puoi appuntare note, premendo \"Fissa sul profilo\" nel menù delle singole note." notSpecifiedMentionWarning: "Sono stati menzionati profili non inclusi fra i destinatari" info: "Informazioni" -userInfo: "Informazioni utente" +userInfo: "Informazioni sul profilo" unknown: "Sconosciuto" onlineStatus: "Stato di connessione" hideOnlineStatus: "Modalità invisibile" @@ -853,7 +853,7 @@ lastCommunication: "La comunicazione più recente" resolved: "Risolto" unresolved: "Non risolto" breakFollow: "Non farti più seguire" -breakFollowConfirm: "Vuoi davvero smettere di seguire questo profilo?" +breakFollowConfirm: "Vuoi davvero che questo profilo smetta di seguirti?" itsOn: "Abilitato" itsOff: "Disabilitato" on: "Acceso" @@ -911,7 +911,7 @@ noEmailServerWarning: "Il server di posta non è configurato." thereIsUnresolvedAbuseReportWarning: "Ci sono report non evasi." recommended: "Consigliato" check: "Verifica" -driveCapOverrideLabel: "Modificare il limite di spazio per questo utente" +driveCapOverrideLabel: "Modificare la capienza del Drive per questo profilo" driveCapOverrideCaption: "Se viene specificato meno di 0, viene annullato." requireAdminForView: "Per visualizzarli, è necessario aver effettuato l'accesso con un profilo amministratore." isSystemAccount: "Questi profili vengono creati e gestiti automaticamente dal sistema" @@ -1169,6 +1169,8 @@ _announcement: readConfirmText: "Hai già letto \"{title}Ë?" shouldNotBeUsedToPresentPermanentInfo: "Ti consigliamo di utilizzare gli annunci per pubblicare informazioni tempestive e limitate nel tempo, anziché informazioni importanti a lungo andare nel tempo, poiché potrebbero risultare difficili da ritrovare e peggiorare la fruibilità del servizio, specialmente alle nuove persone iscritte." dialogAnnouncementUxWarn: "Ti consigliamo di usarli con cautela, poiché è molto probabile che avere più di un annuncio in stile \"finestra di dialogo\" peggiori sensibilmente la fruibilità del servizio, specialmente alle nuove persone iscritte." + silence: "Silenzia gli annunci" + silenceDescription: "Se attivi questa opzione, non riceverai notifiche sugli annunci, evitando di contrassegnarle come già lette." _initialAccountSetting: accountCreated: "Il tuo profilo è stato creato!" letsStartAccountSetup: "Per iniziare, impostiamo il tuo profilo." @@ -1822,14 +1824,14 @@ _time: day: "giorni" _2fa: alreadyRegistered: "La configurazione è stata già completata." - registerTOTP: "Registra un'app di autenticazione" - step1: "Innanzitutto, installare sul dispositivo un'applicazione di autenticazione come {a} o {b}." - step2: "Quindi, scansionare il codice QR visualizzato con l'app." + registerTOTP: "Registra una App di autenticazione a due fattori (2FA/MFA)" + step1: "Innanzitutto, installa sul dispositivo un'App di autenticazione come {a} o {b}." + step2: "Quindi, tramite la App installata, scansiona questo codice QR." step2Click: "Cliccando sul codice QR, puoi registrarlo con l'app di autenticazione o il portachiavi installato sul tuo dispositivo." step2Uri: "Inserisci il seguente URL se desideri utilizzare una App per PC" step3Title: "Inserisci il codice di verifica" step3: "Inserite il token visualizzato nell'app e il gioco è fatto." - setupCompleted: "Impostazione completata" + setupCompleted: "Impostazione completata! 🎉" step4: "D'ora in poi, quando si accede, si inserisce il token nello stesso modo." securityKeyNotSupported: "Il tuo browser non supporta le chiavi di sicurezza." registerTOTPBeforeKey: "Ti occorre un'app di autenticazione con OTP, prima di registrare la chiave di sicurezza." @@ -1874,8 +1876,8 @@ _permissions: "write:pages": "Gestire pagine" "read:page-likes": "Visualizzare i \"Mi piace\" di pagine" "write:page-likes": "Gestire i \"Mi piace\" di pagine" - "read:user-groups": "Vedi gruppi di utenti" - "write:user-groups": "Gestisci gruppi di utenti" + "read:user-groups": "Vedere i gruppi di utenti" + "write:user-groups": "Gestire i gruppi di utenti" "read:channels": "Visualizza canali" "write:channels": "Gerisci canali" "read:gallery": "Visualizza la galleria." @@ -1930,7 +1932,7 @@ _widgets: postForm: "Finestra di pubblicazione" slideshow: "Diapositive" button: "Pulsante" - onlineUsers: "Utenti online" + onlineUsers: "Persone online" jobQueue: "Coda di lavoro" serverMetric: "Statistiche server" aiscript: "Console AiScript" @@ -1942,7 +1944,7 @@ _widgets: clicker: "Cliccaggio" _cw: hide: "Nascondere" - show: "Attenzione: continua la lettura" + show: "Continua la lettura..." chars: "{count} caratteri" files: "{count} file" _poll: @@ -2028,7 +2030,7 @@ _charts: storageUsageTotal: "Utilizzo totale dell'immagazzinamento" _instanceCharts: requests: "Richieste" - users: "Variazione del numero di utenti" + users: "Variazione del numero di profili" usersTotal: "Totale cumulativo di utenti" notes: "Variazione del numero di note" notesTotal: "Totale cumulato di note" @@ -2089,8 +2091,8 @@ _pages: font: "Tipo di carattere" fontSerif: "Serif" fontSansSerif: "Sans serif" - eyeCatchingImageSet: "Imposta un'immagine attrattiva" - eyeCatchingImageRemove: "Elimina l'anteprima immagine" + eyeCatchingImageSet: "Imposta un'immagine attraente" + eyeCatchingImageRemove: "Elimina immagine attraente" chooseBlock: "Aggiungi blocco" selectType: "Seleziona tipo" contentBlocks: "Contenuto" diff --git a/locales/ja-JP.yml b/locales/ja-JP.yml index 837f15e1760b712f93ad04beda3a4e401f0a2e1a..b4087b42d5a4858faeb549c6830502e52ed9a1ed 100644 --- a/locales/ja-JP.yml +++ b/locales/ja-JP.yml @@ -1304,6 +1304,8 @@ _serverSettings: shortName: "略称" shortNameDescription: "サーãƒãƒ¼ã®æ£å¼å称ãŒé•·ã„å ´åˆã«ã€ä»£ã‚ã‚Šã«è¡¨ç¤ºã™ã‚‹ã“ã¨ã®ã§ãる略称や通称。" fanoutTimelineDescription: "有効ã«ã™ã‚‹ã¨ã€å„種タイムラインをå–å¾—ã™ã‚‹éš›ã®ãƒ‘フォーマンスãŒå¤§å¹…ã«å‘上ã—ã€ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã¸ã®è² è·ã‚’軽減ã™ã‚‹ã“ã¨ãŒå¯èƒ½ã§ã™ã€‚ãŸã ã—ã€Redisã®ãƒ¡ãƒ¢ãƒªä½¿ç”¨é‡ã¯å¢—åŠ ã—ã¾ã™ã€‚サーãƒãƒ¼ã®ãƒ¡ãƒ¢ãƒªå®¹é‡ãŒå°‘ãªã„å ´åˆã€ã¾ãŸã¯å‹•ä½œãŒä¸å®‰å®šãªå ´åˆã¯ç„¡åŠ¹ã«ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚" + fanoutTimelineDbFallback: "データベースã¸ã®ãƒ•ã‚©ãƒ¼ãƒ«ãƒãƒƒã‚¯" + fanoutTimelineDbFallbackDescription: "有効ã«ã™ã‚‹ã¨ã€ã‚¿ã‚¤ãƒ ラインãŒã‚ャッシュã•ã‚Œã¦ã„ãªã„å ´åˆã«DBã¸è¿½åŠ ã§å•ã„åˆã‚ã›ã‚’è¡Œã†ãƒ•ã‚©ãƒ¼ãƒ«ãƒãƒƒã‚¯å‡¦ç†ã‚’è¡Œã„ã¾ã™ã€‚無効ã«ã™ã‚‹ã¨ã€ãƒ•ã‚©ãƒ¼ãƒ«ãƒãƒƒã‚¯å‡¦ç†ã‚’è¡Œã‚ãªã„ã“ã¨ã§ã•ã‚‰ã«ã‚µãƒ¼ãƒãƒ¼ã®è² è·ã‚’軽減ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ãŒã€ã‚¿ã‚¤ãƒ ラインãŒå–å¾—ã§ãる範囲ã«åˆ¶é™ãŒç”Ÿã˜ã¾ã™ã€‚" _accountMigration: moveFrom: "別ã®ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã‹ã‚‰ã“ã®ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã«ç§»è¡Œ" @@ -1887,6 +1889,15 @@ _ago: yearsAgo: "{n}å¹´å‰" invalid: "ã‚ã‚Šã¾ã›ã‚“" +_timeIn: + seconds: "{n}秒後" + minutes: "{n}分後" + hours: "{n}時間後" + days: "{n}日後" + weeks: "{n}週間後" + months: "{n}ヶ月後" + years: "{n}年後" + _time: second: "秒" minute: "分" diff --git a/locales/ja-KS.yml b/locales/ja-KS.yml index 6753db3b15c60c9f188990c9908d33778869153a..61ab5675d2d99a5545e5538b343b2fdb0885d97d 100644 --- a/locales/ja-KS.yml +++ b/locales/ja-KS.yml @@ -981,6 +981,7 @@ assign: "アサイン" unassign: "アサインを解除" color: "色" manageCustomEmojis: "カスタム絵文å—ã®ç®¡ç†" +manageAvatarDecorations: "ã‚¢ãƒã‚¿ãƒ¼ã‚’飾るモンã®ç®¡ç†" youCannotCreateAnymore: "ã“れ以上作れãªã•ãã†ã‚„ã‚" cannotPerformTemporary: "一時的ã«åˆ©ç”¨ã§ãã¸ã‚“ã§" cannotPerformTemporaryDescription: "æ“作回数ãŒåˆ¶é™ã‚’超ãˆãŸã‹ã‚‰ä¸€æ™‚çš„ã«åˆ©ç”¨ã§ãã¸ã‚“ããªã£ãŸã§ã€‚ã¡ã‚‡ã£ã¨æ™‚é–“ç½®ã„ã¦ã‹ã‚‰ã‚‚ã†ä¸€å›žã‚„ã£ã¦ã‚„ー。" @@ -1151,6 +1152,14 @@ detach: "" angle: "" flip: "å転" showAvatarDecorations: "" +releaseToRefresh: "離ã—ã¦ãƒªãƒãƒ¼ãƒ‰" +refreshing: "リãƒãƒ¼ãƒ‰ä¸" +pullDownToRefresh: "引ã£å¼µã£ã¦ãƒªãƒãƒ¼ãƒ‰ã™ã‚‹ã§" +disableStreamingTimeline: "タイムラインã®ãƒªã‚¢ãƒ«ã‚¿ã‚¤ãƒ æ›´æ–°ã‚’ã‚„ã‚ã‚‹ã§" +useGroupedNotifications: "通知をグルーピングã—ã¦ã ã™ã§" +signupPendingError: "メールアドレスã®ç¢ºèªä¸ã«å•é¡ŒãŒèµ·ã“ã£ã¦ãˆã‚‰ã„ã“ã£ã¡ã‚ƒã€‚リンクã®æœ‰åŠ¹æœŸé™ãŒåˆ‡ã‚Œã¦ã‚‹ã‹ã‚‚ã‚„ã§" +cwNotationRequired: "ã€Œå†…å®¹ã‚’éš ã™ã€ãŒã‚ªãƒ³ã®å ´åˆã¯æ³¨é‡ˆã®è¨˜è¿°ãŒå¿…è¦ã‚„ã§ã€‚" +doReaction: "ツッコミã™ã‚“ã§" _announcement: forExistingUsers: "ã‚‚ã†ãŠã‚‹ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®ã¿" forExistingUsersDescription: "有効ã«ã™ã‚‹ã¨ã€ã“ã®ãŠçŸ¥ã‚‰ã›ä½œæˆæ™‚点ã§ãŠã‚‹ãƒ¦ãƒ¼ã‚¶ãƒ¼ã«ã®ã¿ãŠçŸ¥ã‚‰ã›ãŒè¡¨ç¤ºã•ã‚Œã¾ã™ã€‚無効ã«ã™ã‚‹ã¨ã€ã“ã®ãŠçŸ¥ã‚‰ã›ä½œæˆå¾Œã«ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã‚’作æˆã—ãŸãƒ¦ãƒ¼ã‚¶ãƒ¼ã«ã‚‚ãŠçŸ¥ã‚‰ã›ãŒè¡¨ç¤ºã•ã‚Œã¾ã™ã€‚" @@ -1160,6 +1169,10 @@ _announcement: tooManyActiveAnnouncementDescription: "アクティブãªãŠçŸ¥ã‚‰ã›ãŒå¤šã„ãŸã‚ã€UXãŒä½Žä¸‹ã™ã‚‹å¯èƒ½æ€§ãŒã‚ã‚Šã¾ã™ã€‚終了ã—ãŸãŠçŸ¥ã‚‰ã›ã¯ã‚¢ãƒ¼ã‚«ã‚¤ãƒ–ã™ã‚‹ã“ã¨ã‚’検討ã—ãŸæ–¹ãŒãˆãˆã‚ˆã€‚" readConfirmTitle: "æ—¢èªã«ã—ã¦ãˆãˆã‚“ã‚„ãª?" readConfirmText: "「{title}ã€ã®å†…容をèªã¿ã€æ—¢èªã«ã—ã¾ã™ã€‚" + shouldNotBeUsedToPresentPermanentInfo: "æ–°è¦ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®UXã‚’æãã‚„ã™ã„ã‹ã‚‰ã€ãŠçŸ¥ã‚‰ã›ã¯ã‚¹ãƒˆãƒƒã‚¯æƒ…å ±ã‚„ã®ã†ã¦ãƒ•ãƒãƒ¼æƒ…å ±ã®æŽ²ç¤ºã«ä½¿ã£ãŸæ–¹ãŒãˆãˆã§ã€‚" + dialogAnnouncementUxWarn: "ダイアãƒã‚°å½¢å¼ã®ãŠçŸ¥ã‚‰ã›ãŒåŒæ™‚ã«2ã¤ä»¥ä¸Šã‚ã‚‹å ´åˆã€UXã«æ‚ªå½±éŸ¿ã‚’åŠã¼ã™å¯èƒ½æ€§ãŒé«˜ããªã‚‹ã‹ã‚‰ã€ä½¿ç”¨ã¯æ…Žé‡ã«ã™ã‚“ã®ãŒãŠã™ã™ã‚ã‚„ã§ã€‚" + silence: "通知ã›ã‚“ã§" + silenceDescription: "オンã«ã™ã‚‹ã¨ã€ã“ã®ãŠçŸ¥ã‚‰ã›ã¯é€šçŸ¥ã•ã‚Œãªã„ã§ã€æ—¢èªã«ã™ã‚‹å¿…è¦ã‚‚ãªããªã‚‹ã§ã€‚" _initialAccountSetting: accountCreated: "アカウント作り終ã‚ã£ãŸã§ã€‚" letsStartAccountSetup: "アカウントã®åˆæœŸè¨å®šã‚’ã—よã‹ã€‚" @@ -1172,8 +1185,24 @@ _initialAccountSetting: pushNotificationDescription: "プッシュ通知を有効ã«ã™ã‚‹ã¨{name}ã®é€šçŸ¥ã‚’ã‚ã‚“ãŸã®ãƒ‡ãƒã‚¤ã‚¹ã§å—ã‘å–れるã§ã€‚" initialAccountSettingCompleted: "åˆæœŸè¨å®šãŒçµ‚ã‚ã£ãŸã§ã€‚" haveFun: "{name}ã€æ¥½ã—ã‚“ã§ãªï½ž" + youCanContinueTutorial: "ã“ã®ã¾ã¾{name}(Misskey)ã®ä½¿ã„æ–¹ã®ãƒãƒ¥ãƒ¼ãƒˆãƒªã‚¢ãƒ«ã«é€²ã‚ã‚‹ã‘ã©ã€ã“ã“ã§ä¸æ–ã—ã¦ã™ãã«ä½¿ã„始ã‚ã‚‹ã“ã¨ã‚‚ã§ãã‚‹ã§ã€‚" + startTutorial: "ãƒãƒ¥ãƒ¼ãƒˆãƒªã‚¢ãƒ«ã‚’開始ã™ã‚‹ã§" skipAreYouSure: "åˆæœŸè¨å®šé£›ã°ã™ã‹ï¼Ÿ" laterAreYouSure: "åˆæœŸè¨å®šã‚ã¨ã§ã‚„ã‚Šç›´ã™ã‚“?" +_initialTutorial: + launchTutorial: "ãƒãƒ¥ãƒ¼ãƒˆãƒªã‚¢ãƒ«ã‚’見るã§" + title: "ãƒãƒ¥ãƒ¼ãƒˆãƒªã‚¢ãƒ«ã‚„ã§" + wellDone: "ã‚„ã‚‹ã‚„ã‚“" + skipAreYouSure: "ãƒãƒ¥ãƒ¼ãƒˆãƒªã‚¢ãƒ«ã‚’ã‚„ã‚ã‚‹ã‹ï¼Ÿ" + _landing: + title: "ãƒãƒ¥ãƒ¼ãƒˆãƒªã‚¢ãƒ«ã«ã‚ˆã†æ¥ãŸãª" + description: "ã“ã“ã§ã¯ã€Misskeyã®åŸºæœ¬çš„ãªä½¿ã„方や機能を確èªã§ãã‚‹ã§ã€‚" + _note: + title: "ノートã£ã¦ãªã‚“や?" + description: "Misskeyã§ã®æŠ•ç¨¿ã¯ã€ŒãƒŽãƒ¼ãƒˆã€ã£ã¦å‘¼ã°ã‚Œã¦ã‚‹ã§ã€‚ノートã¯ã‚¿ã‚¤ãƒ ラインã«æ™‚系列ã§ä¸¦ã‚“ã§ã„ã¦ã€ãƒªã‚¢ãƒ«ã‚¿ã‚¤ãƒ ã§æ›´æ–°ã•ã‚Œã¦ã‚‹ã§ã€‚" + reply: "返信ã™ã‚‹ã“ã¨ã‚‚ã§ãã‚‹ã§ã€‚返信ã«å¯¾ã—ã¦ã®è¿”ä¿¡ã‚‚å¯èƒ½ã§ã€ã‚¹ãƒ¬ãƒƒãƒ‰ã®ã‚ˆã†ã«ä¼šè©±ã‚’続ã‘ã‚‹ã“ã¨ã‚‚ã§ãã‚‹ã§ã€‚" + renote: "ãã®ãƒŽãƒ¼ãƒˆã‚’自分ã®ã‚¿ã‚¤ãƒ ラインã«æµã—ã¦å…±æœ‰ã™ã‚‹ã“ã¨ã‚‚ã§ãã‚‹ã§ã€‚テã‚ã‚¹ãƒˆã‚’è¿½åŠ ã—ã¦å¼•ç”¨ã™ã‚‹ã“ã¨ã‚‚ã§ãã‚‹ã§ã€‚" + reaction: "ツッコミをã¤ã‘ã‚‹ã“ã¨ã‚‚ã§ãã‚‹ã§ã€‚ç´°ã‹ã„ã“ã¨ã¯æ¬¡ã®ãƒšãƒ¼ã‚¸ã§è§£èª¬ã™ã‚‹ã§ã€‚" _serverRules: description: "æ–°è¦ç™»éŒ²å‰ã«è¦‹ã›ã‚‹ã€ã‚µãƒ¼ãƒãƒ¼ã®ç°¡æ½”ãªãƒ«ãƒ¼ãƒ«ã‚’è¨å®šã™ã‚“ã§ã€‚内容ã¯ä½¿ã†ãŸã‚ã®æ±ºã‚事ã®è¦ç´„ã¨ã™ã‚‹ã“ã¨ã‚’推奨ã™ã‚‹ã‚。" _serverSettings: @@ -1486,6 +1515,7 @@ _role: inviteLimitCycle: "招待コードã®ç™ºè¡Œé–“éš”" inviteExpirationTime: "招待コードã®æœ‰åŠ¹æœŸé™" canManageCustomEmojis: "カスタム絵文å—ã®ç®¡ç†" + canManageAvatarDecorations: "ã‚¢ãƒã‚¿ãƒ¼ã‚’飾るモンã®ç®¡ç†" driveCapacity: "ドライブ容é‡" alwaysMarkNsfw: "å‹æ‰‹ã«ãƒ•ã‚¡ã‚¤ãƒ«ã«NSFWã‚’ãã£ã¤ã‘ã‚‹" pinMax: "ノートã®ãƒ”ン留ã‚ã®æœ€å¤§æ•°" diff --git a/locales/ko-KR.yml b/locales/ko-KR.yml index 01c880852d5c8e91f857fc9f46d42473eaacd19a..ec346c9ec1cac7237b0dc2d4a45327e1f254553c 100644 --- a/locales/ko-KR.yml +++ b/locales/ko-KR.yml @@ -113,7 +113,7 @@ cantReRenote: "리노트를 ë¦¬ë…¸íŠ¸í• ìˆ˜ 없습니다." quote: "ì¸ìš©" inChannelRenote: "ì±„ë„ ë‚´ 리노트" inChannelQuote: "ì±„ë„ ë‚´ ì¸ìš©" -pinnedNote: "ê³ ì •í•´ë†“ì€ ë…¸íŠ¸" +pinnedNote: "ê³ ì •ëœ ë…¸íŠ¸" pinned: "í”„ë¡œí•„ì— ê³ ì •" you: "ë‹¹ì‹ " clickToShow: "í´ë¦í•˜ì—¬ 보기" @@ -195,6 +195,7 @@ perHour: "1시간마다" perDay: "1ì¼ë§ˆë‹¤" stopActivityDelivery: "액티비티 보내지 않기" blockThisInstance: "ì´ ì„œë²„ë¥¼ 차단" +silenceThisInstance: "서버를 사ì¼ëŸ°ìŠ¤" operations: "ìž‘ì—…" software: "소프트웨어" version: "ë²„ì „" @@ -214,6 +215,8 @@ clearCachedFiles: "ìºì‹œ 비우기" clearCachedFilesConfirm: "ìºì‹œëœ 리모트 파ì¼ì„ ëª¨ë‘ ì‚ì œí•˜ì‹œê² ìŠµë‹ˆê¹Œ?" blockedInstances: "ì°¨ë‹¨ëœ ì„œë²„" blockedInstancesDescription: "ì°¨ë‹¨í•˜ë ¤ëŠ” ì„œë²„ì˜ í˜¸ìŠ¤íŠ¸ ì´ë¦„ì„ ì¤„ë°”ê¿ˆìœ¼ë¡œ 구분하여 ì„¤ì •í•©ë‹ˆë‹¤. ì°¨ë‹¨ëœ ì¸ìŠ¤í„´ìŠ¤ëŠ” ì´ ì¸ìŠ¤í„´ìŠ¤ì™€ í†µì‹ í• ìˆ˜ 없게 ë©ë‹ˆë‹¤." +silencedInstances: "사ì¼ëŸ°ìŠ¤í•œ 서버" +silencedInstancesDescription: "사ì¼ëŸ°ìŠ¤í•˜ë ¤ëŠ” ì„œë²„ì˜ í˜¸ìŠ¤íŠ¸ëª…ì„ í•œ ì¤„ì— í•˜ë‚˜ì”© ìž…ë ¥í•©ë‹ˆë‹¤. 사ì¼ëŸ°ìŠ¤ëœ ì„œë²„ì— ì†Œì†ëœ ìœ ì €ëŠ” ëª¨ë‘ '사ì¼ëŸ°ìŠ¤'ëœ ìƒíƒœë¡œ 취급ë˜ë©°, ì´ ì„œë²„ë¡œë¶€í„°ì˜ íŒ”ë¡œìš°ê°€ 프로필 ì„¤ì •ê³¼ 무관하게 승ì¸ì œë¡œ 변경ë˜ê³ , 팔로워가 ì•„ë‹Œ 로컬 ìœ ì €ì—게는 ë©˜ì…˜í• ìˆ˜ 없게 ë©ë‹ˆë‹¤. ì •ì§€ëœ ì„œë²„ì—는 ì ìš©ë˜ì§€ 않습니다." muteAndBlock: "뮤트 ë° ì°¨ë‹¨" mutedUsers: "뮤트한 ìœ ì €" blockedUsers: "차단한 ìœ ì €" @@ -364,7 +367,7 @@ pinnedUsersDescription: "\"발견하기\" 페ì´ì§€ ë“±ì— ê³ ì •í•˜ê³ ì‹¶ì€ pinnedPages: "ê³ ì •í•œ 페ì´ì§€" pinnedPagesDescription: "ì„œë²„ì˜ ëŒ€ë¬¸ì— ê³ ì •í•˜ê³ ì‹¶ì€ íŽ˜ì´ì§€ì˜ 경로를 í•œ ì¤„ì— í•˜ë‚˜ì”© ì 습니다." pinnedClipId: "ê³ ì •í• í´ë¦½ì˜ ID" -pinnedNotes: "ê³ ì •í•´ë†“ì€ ë…¸íŠ¸" +pinnedNotes: "ê³ ì •ëœ ë…¸íŠ¸" hcaptcha: "hCaptcha" enableHcaptcha: "hCaptcha 활성화" hcaptchaSiteKey: "사ì´íŠ¸ 키" @@ -976,6 +979,7 @@ assign: "í• ë‹¹" unassign: "í• ë‹¹ 취소" color: "색" manageCustomEmojis: "커스텀 ì´ëª¨ì§€ 관리" +manageAvatarDecorations: "아바타 꾸미기 관리" youCannotCreateAnymore: "ë” ì´ìƒ ìƒì„±í• 수 없습니다." cannotPerformTemporary: "ì¼ì‹œì 으로 ì‚¬ìš©í• ìˆ˜ ì—†ìŒ" cannotPerformTemporaryDescription: "ì¡°ìž‘ 횟수 ì œí•œì„ ì´ˆê³¼í•˜ì—¬ ì¼ì‹œì 으로 ì‚¬ìš©ì´ ë¶ˆê°€í•©ë‹ˆë‹¤. ìž ì‹œ 후 다시 ì‹œë„í•´ 주세요." @@ -1114,16 +1118,19 @@ replies: "답글" renotes: "리노트" loadReplies: "답글 보기" loadConversation: "대화 보기" -pinnedList: "ê³ ì •í•´ë†“ì€ ë¦¬ìŠ¤íŠ¸" +pinnedList: "ê³ ì •ëœ ë¦¬ìŠ¤íŠ¸" keepScreenOn: "기기 í™”ë©´ì„ í•ìƒ 켜기" verifiedLink: "ì´ ë§í¬ì˜ ì†Œìœ ìžìž„ì´ í™•ì¸ë˜ì—ˆìŠµë‹ˆë‹¤." notifyNotes: "새 노트 알림 켜기" unnotifyNotes: "새 노트 알림 ë„기" authentication: "ì¸ì¦" +authenticationRequiredToContinue: "계ì†í•˜ë ¤ë©´ ì¸ì¦í•˜ì‹ì‹œì˜¤" +dateAndTime: "ì¼ì‹œ" showRenotes: "리노트 표시" edited: "ìˆ˜ì •ë¨" notificationRecieveConfig: "알림 ì„¤ì •" mutualFollow: "맞팔로우" +fileAttachedOnly: "미디어를 í¬í•¨í•œ 노트만" showRepliesToOthersInTimeline: "타임ë¼ì¸ì— 다른 사람ì—게 보내는 ë‹µê¸€ì„ í¬í•¨" hideRepliesToOthersInTimeline: "타임ë¼ì¸ì— 다른 사람ì—게 보내는 ë‹µê¸€ì„ í¬í•¨í•˜ì§€ ì•ŠìŒ" showRepliesToOthersInTimelineAll: "타임ë¼ì¸ì— 현재 팔로우 ì¤‘ì¸ ì‚¬ëžŒ ì „ì›ì˜ ë‹µê¸€ì„ í¬í•¨í•˜ê²Œ 하기" @@ -1134,16 +1141,23 @@ externalServices: "외부 서비스" impressum: "ìš´ì˜ìž ì •ë³´" impressumUrl: "ìš´ì˜ìž ì •ë³´ URL" impressumDescription: "ë…ì¼ ë“±ì˜ ì¼ë¶€ 나ë¼ì™€ 지ì—ì—서는 ê¼ í‘œì‹œí•´ì•¼ 합니다(Impressum)." +privacyPolicy: "ê°œì¸ì •ë³´ 보호 ì •ì±…" +privacyPolicyUrl: "ê°œì¸ì •ë³´ 보호 ì •ì±… URL" +tosAndPrivacyPolicy: "약관 ë° ê°œì¸ì •ë³´ 보호 ì •ì±…" avatarDecorations: "ì•„ì´ì½˜ 장ì‹" attach: "붙ì´ê¸°" detach: "떼기" angle: "ê°ë„" flip: "플립" showAvatarDecorations: "ì•„ì´ì½˜ 장ì‹ì„ 표시" +releaseToRefresh: "놓아서 ìƒˆë¡œê³ ì¹¨" +refreshing: "ìƒˆë¡œê³ ì¹¨ 중" +pullDownToRefresh: "아래로 ë‚´ë ¤ì„œ ìƒˆë¡œê³ ì¹¨" disableStreamingTimeline: "타임ë¼ì¸ì˜ 실시간 ê°±ì‹ ì„ ë¬´íš¨í™”í•˜ê¸°" useGroupedNotifications: "ì•Œë¦¼ì„ ê·¸ë£¹í™”í•˜ê³ í‘œì‹œ" signupPendingError: "ë©”ì¼ ì£¼ì†Œ 확ì¸ì¤‘ì— ë¬¸ì œê°€ ë°œìƒí–ˆìŠµë‹ˆë‹¤. ë§í¬ì˜ ìœ íš¨ê¸°ê°„ì´ ì§€ë‚¬ì„ ê°€ëŠ¥ì„±ì´ ìžˆìŠµë‹ˆë‹¤." -cwNotationRequired: "'ë‚´ìš©ì„ ìˆ¨ê¸°ê¸°'를 ì²´í¬í–ˆì„ 경우 주ì„ì„ ì¨ì•¼ 합니다." +cwNotationRequired: "'ë‚´ìš©ì„ ìˆ¨ê¸°ê¸°'를 ì²´í¬í•œ 경우 주ì„ì„ ì¨ì•¼ 합니다." +doReaction: "리액션 추가" _announcement: forExistingUsers: "기존 ìœ ì €ì—게만 알림" forExistingUsersDescription: "활성화하면 ì´ ê³µì§€ì‚¬í•ì„ 게시한 ì‹œì ì—ì„œ ì´ë¯¸ 가입한 ìœ ì €ì—게만 표시합니다. 비활성화하면 게시 í›„ì— ê°€ìž…í•œ ìœ ì €ì—ê²Œë„ í‘œì‹œí•©ë‹ˆë‹¤." @@ -1153,6 +1167,10 @@ _announcement: tooManyActiveAnnouncementDescription: "공지사í•ì´ 너무 ë§Žì„ ê²½ìš°, ì‚¬ìš©ìž ê²½í—˜ì— ì˜í–¥ì„ ë¼ì¹ ê°€ëŠ¥ì„±ì´ ìžˆìŠµë‹ˆë‹¤. ì˜¤ëž˜ëœ ê³µì§€ì‚¬í•ì€ ì•„ì¹´ì´ë¸Œí•˜ì‹œëŠ” ê²ƒì„ ê¶Œìž¥ë“œë¦½ë‹ˆë‹¤." readConfirmTitle: "ì½ìŒìœ¼ë¡œ 표시합니까?" readConfirmText: "\"{title}\"ì„(를) ì½ìŒìœ¼ë¡œ 표시합니다." + shouldNotBeUsedToPresentPermanentInfo: "ì‹ ê·œ ìœ ì €ì˜ ì´ìš© ê²½í—˜ì— ì•…ì˜í–¥ì„ ë¼ì¹ 수 있으므로, ì¼ì‹œì ì¸ ì•Œë¦¼ 수단으로만 ì‚¬ìš©í•˜ê³ ê³ ì •ëœ ì •ë³´ì—는 ì‚¬ìš©ì„ ì§€ì–‘í•˜ëŠ” ê²ƒì„ ì¶”ì²œí•©ë‹ˆë‹¤." + dialogAnnouncementUxWarn: "다ì´ì–¼ë¡œê·¸ í˜•íƒœì˜ ì•Œë¦¼ì´ ë™ì‹œì— 2ê°œ ì´ìƒ 존재하는 경우, ì‚¬ìš©ìž ê²½í—˜ì— ì•…ì˜í–¥ì„ ë¼ì¹ 수 있으므로 ì‹ ì¤‘ížˆ ê²°ì •í•˜ì‹ì‹œì˜¤." + silence: "조용히 알림" + silenceDescription: "활성화하면 공지사í•ì— 대한 ì•Œë¦¼ì´ ê°€ì§€ 않게 ë˜ë©°, í™•ì¸ ë²„íŠ¼ì„ ëˆ„ë¥¼ 필요가 없게 ë©ë‹ˆë‹¤." _initialAccountSetting: accountCreated: "ê³„ì • ìƒì„±ì´ 완료ë˜ì—ˆìŠµë‹ˆë‹¤!" letsStartAccountSetup: "ê³„ì •ì˜ ì´ˆê¸° ì„¤ì •ì„ ì§„í–‰í•©ë‹ˆë‹¤." @@ -1175,22 +1193,79 @@ _initialTutorial: wellDone: "잘 하셨습니다" skipAreYouSure: "íŠœí† ë¦¬ì–¼ì„ ì¢…ë£Œí•˜ì‹œê² ìŠµë‹ˆê¹Œ?" _landing: + title: "íŠœí† ë¦¬ì–¼ì— ì˜¤ì‹ ê±¸ 환ì˜í•©ë‹ˆë‹¤" description: "여기서는 ë¯¸ìŠ¤í‚¤ì˜ ê¸°ë³¸ì ì¸ ì‚¬ìš©ë²•ì´ë‚˜ ê¸°ëŠ¥ì„ í™•ì¸í• 수 있습니다." _note: + title: "'노트'ê°€ 무엇ì¸ê°€ìš”?" description: "미스키ì—서는 ê²Œì‹œë¬¼ì„ '노트'ë¼ê³ 합니다. 노트는 타임ë¼ì¸ì— 시간순으로 ì •ë ¬ë˜ì–´ ìžˆê³ , 실시간으로 ê°±ì‹ ë©ë‹ˆë‹¤." reply: "ë‹µê¸€ì„ ë‹¤ëŠ” ê²ƒì´ ê°€ëŠ¥í•©ë‹ˆë‹¤. ë‹µê¸€ì— ë‹µê¸€ì„ ë‹¤ëŠ” ê²ƒë„ ê°€ëŠ¥í•˜ë©° ìŠ¤ë ˆë“œì²˜ëŸ¼ 대화를 계ì†í•˜ëŠ” ê²ƒë„ ê°€ëŠ¥í•©ë‹ˆë‹¤." renote: "ê·¸ 노트를 ìžê¸° 타임ë¼ì¸ì— ê°€ì ¸ì™€ì„œ ê³µìœ í•˜ëŠ” ê²ƒì´ ê°€ëŠ¥í•©ë‹ˆë‹¤. ê¸€ì„ ì¶”ê°€í•´ì„œ ì¸ìš©í•˜ëŠ” ê²ƒë„ ê°€ëŠ¥í•©ë‹ˆë‹¤." reaction: "ë¦¬ì•¡ì…˜ì„ ë‹¤ëŠ” ê²ƒì´ ê°€ëŠ¥í•©ë‹ˆë‹¤. ë‹¤ìŒ íŽ˜ì´ì§€ì—ì„œ ìžì„¸í•œ ì„¤ëª…ì„ ë³¼ 수 있습니다." + menu: "ë…¸íŠ¸ì˜ ìƒì„¸ ì •ë³´ë¥¼ 표시하거나, ë§í¬ë¥¼ 복사하는 ë“±ì˜ ë‹¤ì–‘í•œ ì¡°ìž‘ì„ í• ìˆ˜ 있습니다." + _reaction: + title: "'리액션'ì´ ë¬´ì—‡ì¸ê°€ìš”?" + description: "ë…¸íŠ¸ì— '리액션'ì„ ë³´ë‚¼ 수 있습니다. '좋아요'만으로는 충분히 ì „í•´ì§€ì§€ 않는 ê°ì •ì„, ì´ëª¨ì§€ì— 실어서 ê°€ë³ê²Œ 보낼 수 있습니다." + letsTryReacting: "ë¦¬ì•¡ì…˜ì€ ë…¸íŠ¸ì˜ '+' ë²„íŠ¼ì„ í´ë¦í•˜ì—¬ ë¶™ì¼ ìˆ˜ 있습니다. 지금 표시ë˜ëŠ” 샘플 ë…¸íŠ¸ì— ë¦¬ì•¡ì…˜ì„ ë‹¬ì•„ 보세요!" + reactToContinue: "다ìŒìœ¼ë¡œ ì§„í–‰í•˜ë ¤ë©´ ë¦¬ì•¡ì…˜ì„ ë³´ë‚´ì„¸ìš”." + reactNotification: "누군가가 ë‚˜ì˜ ë…¸íŠ¸ì— ë¦¬ì•¡ì…˜ì„ ë³´ë‚´ë©´ 실시간으로 ì•Œë¦¼ì„ ë°›ê²Œ ë©ë‹ˆë‹¤." + reactDone: "'-' ë²„íŠ¼ì„ ëˆŒëŸ¬ì„œ ë¦¬ì•¡ì…˜ì„ ì·¨ì†Œí• ìˆ˜ 있습니다." + _timeline: + title: "타임ë¼ì¸ì— 대하여" + description1: "Misskeyì—는 ì¢…ë¥˜ì— ë”°ë¼ ì—¬ëŸ¬ ê°€ì§€ì˜ íƒ€ìž„ë¼ì¸ìœ¼ë¡œ 구성ë˜ì–´ 있습니다. (ì„œë²„ì— ë”°ë¼ì„œëŠ” ì¼ë¶€ 타임ë¼ì¸ì„ ì‚¬ìš©í• ìˆ˜ 없는 경우가 있습니다)" + home: "ë‚´ê°€ 팔로우 ì¤‘ì¸ ê³„ì •ì˜ ë…¸íŠ¸ë¥¼ ë³¼ 수 있습니다." + local: "ì´ ì„œë²„ì— ìžˆëŠ” ëª¨ë“ ìœ ì €ì˜ ê²Œì‹œë¬¼ì„ ë³¼ 수 있습니다." + social: "홈 타임ë¼ì¸ê³¼ 로컬 타임ë¼ì¸ì˜ ê²Œì‹œë¬¼ì„ ëª¨ë‘ ë³¼ 수 있습니다." + global: "ì—°ê²°ë˜ì–´ 있는 ëª¨ë“ ì„œë²„ì˜ ê²Œì‹œë¬¼ì„ ë³¼ 수 있습니다." + description2: "ê°ê°ì˜ 타임ë¼ì¸ì€ 화면 ìƒë‹¨ì—ì„œ ì–¸ì œë“ ì§€ ë³€ê²½í• ìˆ˜ 있습니다." + description3: "ì´ ì™¸ì—ë„, '리스트 타임ë¼ì¸'ì´ë‚˜ 'ì±„ë„ íƒ€ìž„ë¼ì¸' ë“±ì´ ìžˆìŠµë‹ˆë‹¤. ìžì„¸í•œ 사í•ì€ {link}ì—ì„œ 확ì¸í•˜ì‹¤ 수 있습니다." + _postNote: + title: "노트 게시 ì„¤ì •" + description1: "Misskeyì— ë…¸íŠ¸ë¥¼ 쓸 ë•Œì—는 다양한 ì˜µì…˜ì„ ì„¤ì •í• ìˆ˜ 있습니다. 노트를 작성하는 í™”ë©´ì€ ì´ë ‡ê²Œ ìƒê²¼ìŠµë‹ˆë‹¤." + _visibility: + description: "노트를 ë³¼ 수 있는 ì‚¬ëžŒì„ ì œí•œí• ìˆ˜ 있습니다." + public: "ëª¨ë“ ìœ ì €ì—게 공개합니다." + home: "홈 타임ë¼ì¸ì—만 공개합니다. 팔로워, 프로필 화면, 리노트를 통해서 다른 ìœ ì €ê°€ ë³¼ 수 있습니다." + followers: "팔로워ì—게만 공개. ìžê¸° ìžì‹ ì„ ì œì™¸í•˜ê³ ëŠ” 리노트가 불가능하며, 팔로워 외ì—는 ì—´ëžŒí• ìˆ˜ 없습니다." + direct: "ì§€ì •í•œ ìœ ì €ì—게만 공개ë˜ë©°, ìƒëŒ€ë°©ì—게 ì•Œë¦¼ì´ ê°‘ë‹ˆë‹¤. 다ì´ë ‰íŠ¸ 메시지(DM) ëŒ€ìš©ìœ¼ë¡œì¨ ì‚¬ìš©í•˜ì‹¤ 수 있습니다." + doNotSendConfidencialOnDirect1: "민ê°í•œ ì •ë³´ë¥¼ 보낼 ë•Œì—는 주ì˜í•˜ì‹ì‹œì˜¤." + doNotSendConfidencialOnDirect2: "서버 관리ìžëŠ” ê¸°ìˆ ì 으로 게시물 ë‚´ìš©ì„ ì—´ëžŒí• ìˆ˜ 있습니다. ì‹ ë¢°í• ìˆ˜ 없는 ì„œë²„ì˜ ìœ ì €ì—게 다ì´ë ‰íŠ¸ 메시지를 보내는 경우, 민ê°í•œ ì •ë³´ê°€ í¬í•¨ë˜ì–´ 있는 지 확ì¸í•˜ì‹ì‹œì˜¤." + localOnly: "다른 ì„œë²„ì— ê²Œì‹œë¬¼ì„ ë³´ë‚´ì§€ 않습니다. ì•žì„œ ì„¤ì •í•œ 공개 범위와 ìƒê´€ ì—†ì´, 다른 ì„œë²„ì˜ ìœ ì €ëŠ” ì´ ê²Œì‹œë¬¼ì„ ì§ì ‘ ì—´ëžŒí• ìˆ˜ 없게 ë©ë‹ˆë‹¤." + _cw: + title: "ë‚´ìš© 가리기 (CW)" + description: "본문 ëŒ€ì‹ ì— 'ë‚´ìš©ì— ëŒ€í•œ 주ì„'ì— ìž…ë ¥í•œ í…스트가 ë¨¼ì € 표시ë©ë‹ˆë‹¤. 'ë” ë³´ê¸°' ë²„íŠ¼ì„ ëˆ„ë¥´ë©´ ë³¸ë¬¸ì´ í‘œì‹œë©ë‹ˆë‹¤." + _exampleNote: + cw: "ë°°ê³ í”ˆ 사람 주ì˜" + note: "방금 초코ë„ë„›ì„ ë¨¹ì—ˆì–´ìš” ðŸ©ðŸ˜‹" + useCases: "ì„œë²„ì˜ ê°€ì´ë“œë¼ì¸ì— ë”°ë¼ íŠ¹ì • ì£¼ì œë¥¼ 다룰 ë•Œì— ì‚¬ìš©í•˜ê±°ë‚˜, 스í¬ì¼ëŸ¬ ë° ë¯¼ê°í•œ í™”ì œë¥¼ 다룰 ë•Œì— ìžìœ¨ì 으로 ì‚¬ìš©í•˜ê¸°ë„ í•©ë‹ˆë‹¤." + _howToMakeAttachmentsSensitive: + title: "첨부 파ì¼ì„ 열람주ì˜ë¡œ ì„¤ì •í•˜ë ¤ë©´?" + description: "ì„œë²„ì˜ ê°€ì´ë“œë¼ì¸ì— ë”°ë¼ í•„ìš”í•œ ì´ë¯¸ì§€, ë˜ëŠ” 그대로 노출ë˜ê¸°ì— 부ì ì ˆí•œ 미디어는 '열람 주ì˜'를 ì„¤ì •í•´ 주세요." + tryThisFile: "ì´ ìž‘ì„± ì°½ì— ì²¨ë¶€ëœ ì´ë¯¸ì§€ë¥¼ 열람 주ì˜ë¡œ ì„¤ì •í•´ 보세요!" + _exampleNote: + note: "ë‚«ë˜ ëšœê»‘ 뜯다가 실수했다…" + method: "첨부 파ì¼ì„ 열람 주ì˜ë¡œ ì„¤ì •í•˜ë ¤ë©´, 해당 파ì¼ì„ í´ë¦í•˜ì—¬ 메뉴를 ì—´ê³ , '열람주ì˜ë¡œ ì„¤ì •'ì„ í´ë¦í•©ë‹ˆë‹¤." + sensitiveSucceeded: "파ì¼ì„ ì²¨ë¶€í• ë•Œì—는 ì„œë²„ì˜ ê°€ì´ë“œë¼ì¸ì— ë”°ë¼ ì ì ˆížˆ 열람주ì˜ë¥¼ ì„¤ì •í•´ 주시기 ë°”ëžë‹ˆë‹¤." + doItToContinue: "ì´ë¯¸ì§€ë¥¼ 열람 주ì˜ë¡œ ì„¤ì •í•˜ë©´ 다ìŒìœ¼ë¡œ 넘어갈 수 있게 ë©ë‹ˆë‹¤." + _done: + title: "íŠœí† ë¦¬ì–¼ì´ ë났습니다! 🎉" + description: "여기ì—ì„œ 소개한 ê¸°ëŠ¥ì€ ê·¹ížˆ ì¼ë¶€ì— 지나지 않습니다. Misskeyì˜ ì‚¬ìš© ë°©ë²•ì„ ë” ìžì„¸ížˆ ì•Œì•„ë³´ë ¤ë©´ {link}를 확ì¸í•´ 주세요!" +_timelineDescription: + home: "홈 타임ë¼ì¸ì—서는, ë‚´ê°€ 팔로우한 ê³„ì •ì˜ ê²Œì‹œë¬¼ì„ ë³¼ 수 있습니다." + local: "로컬 타임ë¼ì¸ì—서는, ì´ ì„œë²„ì˜ ëª¨ë“ ìœ ì €ì˜ ê²Œì‹œë¬¼ì„ ë³¼ 수 있습니다." + social: "소셜 타임ë¼ì¸ì—서는, 홈 타임ë¼ì¸ê³¼ 로컬 타임ë¼ì¸ì˜ ê²Œì‹œë¬¼ì„ ëª¨ë‘ ë³¼ 수 있습니다." + global: "글로벌 타임ë¼ì¸ì—서는, 여기와 ì—°ê²°ëœ ë‹¤ë¥¸ ëª¨ë“ ì„œë²„ì˜ ê²Œì‹œë¬¼ì„ ë³¼ 수 있습니다." _serverRules: description: "íšŒì› ê°€ìž… ì´ì „ì— ê°„ë‹¨í•˜ê²Œ í‘œì‹œí• ì„œë²„ 규칙입니다. ì´ìš© ì•½ê´€ì˜ ìš”ì•½ìœ¼ë¡œ 구성하는 ê²ƒì„ ì¶”ì²œí•©ë‹ˆë‹¤." _serverSettings: iconUrl: "ì•„ì´ì½˜ URL" + appIconDescription: "{host}ì´ ì•±ìœ¼ë¡œ 표시ë ë•Œì˜ ì•„ì´ì½˜ì„ ì§€ì •í•©ë‹ˆë‹¤." appIconUsageExample: "예를 들어, PWA나 ìŠ¤ë§ˆíŠ¸í° í™ˆ í™”ë©´ì— ë¶ë§ˆí¬ë¡œ 추가ë˜ì—ˆì„ ë•Œ 등" appIconStyleRecommendation: "ì•„ì´ì½˜ì´ ì›í˜• ë˜ëŠ” 둥근 사ê°í˜•ìœ¼ë¡œ 잘리는 경우가 있으므로, 가장ìžë¦¬ ì—¬ë°±ì´ ì¶©ë¶„í•œ ì‚¬ì§„ì„ ì‚¬ìš©í•˜ëŠ” ê²ƒì„ ì¶”ì²œí•©ë‹ˆë‹¤." appIconResolutionMustBe: "í•´ìƒë„는 반드시 {resolution} ì´ì–´ì•¼ 합니다." manifestJsonOverride: "manifest.json 오버ë¼ì´ë“œ" shortName: "약ì¹" shortNameDescription: "ì„œë²„ì˜ ì •ì‹ ëª…ì¹ì´ 긴 경우ì—, ëŒ€ì‹ ì— í‘œì‹œí• ìˆ˜ 있는 약ì¹ì´ë‚˜ 통ì¹." + fanoutTimelineDescription: "활성화하면 ê°ì¢… 타임ë¼ì¸ì„ ê°€ì ¸ì˜¬ ë•Œì˜ ì„±ëŠ¥ì„ ëŒ€í í–¥ìƒí•˜ë©°, ë°ì´í„°ë² ì´ìŠ¤ì˜ 부하를 ì¤„ì¼ ìˆ˜ 있습니다. 단, Redisì˜ ë©”ëª¨ë¦¬ ì‚¬ìš©ëŸ‰ì´ ì¦ê°€í•©ë‹ˆë‹¤. ì„œë²„ì˜ ë©”ëª¨ë¦¬ ìš©ëŸ‰ì´ ìž‘ê±°ë‚˜, 서비스가 ë¶ˆì•ˆì •í•´ì§€ëŠ” 경우 ë¹„í™œì„±í™”í• ìˆ˜ 있습니다." _accountMigration: moveFrom: "다른 ê³„ì •ì—ì„œ ì´ ê³„ì •ìœ¼ë¡œ ì´ì‚¬" moveFromSub: "다른 ê³„ì •ì— ëŒ€í•œ 별ì¹ì„ ìƒì„±" @@ -1445,6 +1520,12 @@ _achievements: title: "Brain Diver" description: "Brain Diverë¡œì˜ ë§í¬ë¥¼ 첨부했습니다" flavor: "Misskey-Misskey La-Tu-Ma" + _smashTestNotificationButton: + title: "테스트 과잉" + description: "매우 ì§§ì€ ì‹œê°„ ì•ˆì— ì•Œë¦¼ 테스트를 여러 번 수행했습니다" + _tutorialCompleted: + title: "Misskey ìž…ë¬¸ìž ê³¼ì • 수료ì¦" + description: "íŠœí† ë¦¬ì–¼ì„ ì™„ë£Œí–ˆìŠµë‹ˆë‹¤" _role: new: "새 ì—í• ìƒì„±" edit: "ì—í• ìˆ˜ì •" @@ -1488,6 +1569,7 @@ _role: inviteLimitCycle: "초대 발급 간격" inviteExpirationTime: "초대 만료 기간" canManageCustomEmojis: "커스텀 ì´ëª¨ì§€ 관리" + canManageAvatarDecorations: "아바타 꾸미기 관리" driveCapacity: "ë“œë¼ì´ë¸Œ 용량" alwaysMarkNsfw: "파ì¼ì„ í•ìƒ NSFWë¡œ ì§€ì •" pinMax: "ê³ ì •í• ìˆ˜ 있는 노트 수" @@ -1502,6 +1584,7 @@ _role: descriptionOfRateLimitFactor: "ìž‘ì„ìˆ˜ë¡ ì œí•œì´ ì™„í™”ë˜ê³ , í´ìˆ˜ë¡ ì œí•œì´ ê°•í™”ë©ë‹ˆë‹¤." canHideAds: "ê´‘ê³ ìˆ¨ê¸°ê¸°" canSearchNotes: "노트 검색 ì´ìš© 가능 여부" + canUseTranslator: "ë²ˆì— ê¸°ëŠ¥ì˜ ì‚¬ìš©" _condition: isLocal: "로컬 사용ìž" isRemote: "리모트 사용ìž" @@ -1550,6 +1633,10 @@ _ad: reduceFrequencyOfThisAd: "ì´ ê´‘ê³ ì˜ í‘œì‹œ ë¹ˆë„ ë‚®ì¶”ê¸°" hide: "ë³´ì´ì§€ ì•ŠìŒ" timezoneinfo: "ìš”ì¼ì€ ì„œë²„ì˜ í‘œì¤€ ì‹œê°„ëŒ€ì— ë”°ë¼ ê²°ì •ë©ë‹ˆë‹¤." + adsSettings: "ê´‘ê³ í‘œì‹œ ì„¤ì •" + notesPerOneAd: "실시간으로 ê°±ì‹ ë˜ëŠ” 타임ë¼ì¸ì—ì„œ ê´‘ê³ ë¥¼ 노출시키는 간격 (노트 당)" + setZeroToDisable: "0으로 ì§€ì •í•˜ë©´ 실시간 타임ë¼ì¸ì—ì„œì˜ ê´‘ê³ ë¥¼ 비활성화합니다" + adsTooClose: "ê´‘ê³ ì˜ í‘œì‹œ ê°„ê²©ì´ ë§¤ìš° ìž‘ì•„, ì‚¬ìš©ìž ê²½í—˜ì— ë¶€ì •ì ì¸ ì˜í–¥ì„ ë¯¸ì¹ ìˆ˜ 있습니다." _forgotPassword: enterEmail: "ì—¬ê¸°ì— ê³„ì •ì— ë“±ë¡í•œ ë©”ì¼ ì£¼ì†Œë¥¼ ìž…ë ¥í•´ 주세요. ìž…ë ¥í•œ ë©”ì¼ ì£¼ì†Œë¡œ 비밀번호 ìž¬ì„¤ì • ë§í¬ë¥¼ 발송합니다." ifNoEmail: "ë©”ì¼ ì£¼ì†Œë¥¼ 등ë¡í•˜ì§€ ì•Šì€ ê²½ìš°, 관리ìžì— 문ì˜í•´ 주ì‹ì‹œì˜¤." @@ -1602,6 +1689,7 @@ _aboutMisskey: donate: "Misskeyì— ê¸°ë¶€í•˜ê¸°" morePatrons: "ì´ ì™¸ì—ë„ ë‹¤ë¥¸ ë§Žì€ ë¶„ë“¤ì´ ë„ì›€ì„ ì£¼ì‹œê³ ê³„ì‹ë‹ˆë‹¤. ê°ì‚¬í•©ë‹ˆë‹¤ðŸ¥°" patrons: "후ì›ìž" + projectMembers: "프로ì 트 구성ì›" _displayOfSensitiveMedia: respect: "민ê°í•œ 콘í…ì¸ ë¡œ í‘œì‹œëœ ë¯¸ë””ì–´ 숨기기" ignore: "민ê°í•œ 콘í…ì¸ ë¡œ í‘œì‹œëœ ë¯¸ë””ì–´ ë³´ì´ê¸°" @@ -1626,6 +1714,7 @@ _channel: notesCount: "{n}노트" nameAndDescription: "ì´ë¦„ê³¼ 설명" nameOnly: "ì´ë¦„만" + allowRenoteToExternal: "ì±„ë„ ì™¸ë¶€ë¡œì˜ ë¦¬ë…¸íŠ¸ì™€ ì¸ìš© 리노트를 허가" _menuDisplay: sideFull: "가로" sideIcon: "가로(ì•„ì´ì½˜)" @@ -1812,8 +1901,9 @@ _auth: _antennaSources: all: "ëª¨ë“ ë…¸íŠ¸" homeTimeline: "íŒ”ë¡œìš°ì¤‘ì¸ ìœ ì €ì˜ ë…¸íŠ¸" - users: "ì§€ì •í•œ í•œ 명 í˜¹ì€ ì—¬ëŸ¬ ëª…ì˜ ìœ ì €ì˜ ë…¸íŠ¸" + users: "ì§€ì •í•œ ìœ ì €ì˜ ë…¸íŠ¸" userList: "ì§€ì •í•œ ë¦¬ìŠ¤íŠ¸ì— ì†í•œ ìœ ì €ì˜ ë…¸íŠ¸" + userBlacklist: "ì§€ì •í•œ ìœ ì €ë¥¼ ì œì™¸í•œ ëª¨ë“ ë…¸íŠ¸" _weekday: sunday: "ì¼ìš”ì¼" monday: "월요ì¼" @@ -1913,6 +2003,7 @@ _profile: metadataContent: "ë‚´ìš©" changeAvatar: "아바타 ì´ë¯¸ì§€ 변경" changeBanner: "배너 ì´ë¯¸ì§€ 변경" + verifiedLinkDescription: "ë‚´ìš©ì— ìžì‹ ì˜ í”„ë¡œí•„ë¡œ 향하는 ë§í¬ê°€ í¬í•¨ëœ 페ì´ì§€ì˜ URLì„ ì‚½ìž…í•˜ë©´ ì†Œìœ ìž ì¸ì¦ 마í¬ê°€ 표시ë©ë‹ˆë‹¤." _exportOrImport: allNotes: "ëª¨ë“ ë…¸íŠ¸" favoritedNotes: "ì¦ê²¨ì°¾ê¸°í•œ 노트" @@ -1922,6 +2013,7 @@ _exportOrImport: userLists: "리스트" excludeMutingUsers: "뮤트한 ìœ ì € ì œì™¸í•˜ê¸°" excludeInactiveUsers: "휴면 ì¤‘ì¸ ê³„ì • ì œì™¸í•˜ê¸°" + withReplies: "ê°€ì ¸ì˜¤ê¸°í•œ ìœ ì €ì— ì˜í•œ ë‹µê¸€ì„ íƒ€ìž„ë¼ì¸ì— í¬í•¨" _charts: federation: "ì—°í•©" apRequest: "ìš”ì²" @@ -1995,7 +2087,7 @@ _pages: url: "페ì´ì§€ URL" summary: "페ì´ì§€ 요약" alignCenter: "ê°€ìš´ë° ì •ë ¬" - hideTitleWhenPinned: "í”„ë¡œí•„ì— ê³ ì •í•´ë†“ì€ ê²½ìš° 타ì´í‹€ì„ 표시하지 ì•ŠìŒ" + hideTitleWhenPinned: "í”„ë¡œí•„ì— ê³ ì •í•œ 경우 타ì´í‹€ì„ 표시하지 ì•ŠìŒ" font: "í°íŠ¸" fontSerif: "명조체" fontSansSerif: "ê³ ë”•ì²´" @@ -2031,6 +2123,7 @@ _notification: youReceivedFollowRequest: "새로운 팔로우 ìš”ì²ì´ 있습니다" yourFollowRequestAccepted: "팔로우 ìš”ì²ì´ 수ë½ë˜ì—ˆìŠµë‹ˆë‹¤" pollEnded: "투표 결과가 발표ë˜ì—ˆìŠµë‹ˆë‹¤" + newNote: "새 게시물" unreadAntennaNote: "안테나 {name}" emptyPushNotificationMessage: "푸시 ì•Œë¦¼ì´ ê°±ì‹ ë˜ì—ˆìŠµë‹ˆë‹¤" achievementEarned: "ë„ì „ ê³¼ì œë¥¼ 달성했습니다" @@ -2043,6 +2136,7 @@ _notification: followedBySomeUsers: "{n}명ì—게 팔로우ë¨" _types: all: "ì „ë¶€" + note: "ìœ ì €ì˜ ìƒˆ 게시물" follow: "팔로잉" mention: "멘션" reply: "답글" @@ -2113,6 +2207,85 @@ _webhookSettings: reaction: "누군가 ë‚´ ë…¸íŠ¸ì— ë¦¬ì•¡ì…˜í–ˆì„ ë•Œ" mention: "누군가 나를 ë©˜ì…˜í–ˆì„ ë•Œ" _moderationLogTypes: + createRole: "ì—í• ìƒì„±" + deleteRole: "ì—í• ì‚ì œ" + updateRole: "ì—í• ìˆ˜ì •" + assignRole: "ì—í• í• ë‹¹" + unassignRole: "ì—í• í•´ì œ" suspend: "ì •ì§€" + unsuspend: "ì •ì§€ í•´ì œ" + addCustomEmoji: "커스텀 ì´ëª¨ì§€ 추가" + updateCustomEmoji: "커스텀 ì´ëª¨ì§€ ìˆ˜ì •" + deleteCustomEmoji: "커스텀 ì´ëª¨ì§€ ì‚ì œ" + updateServerSettings: "서버 ì„¤ì • ê°±ì‹ " + updateUserNote: "모ë”ë ˆì´ì…˜ 노트 ê°±ì‹ " + deleteDriveFile: "íŒŒì¼ ì‚ì œ" + deleteNote: "노트 ì‚ì œ" + createGlobalAnnouncement: "ì „ì— ê³µì§€ì‚¬í• ìƒì„±" + createUserAnnouncement: "ìœ ì € ê³µì§€ì‚¬í• ìƒì„±" + updateGlobalAnnouncement: "ì „ì— ê³µì§€ì‚¬í• ìˆ˜ì •" + updateUserAnnouncement: "ìœ ì € ê³µì§€ì‚¬í• ìˆ˜ì •" + deleteGlobalAnnouncement: "ì „ì— ê³µì§€ì‚¬í• ì‚ì œ" + deleteUserAnnouncement: "ìœ ì € ê³µì§€ì‚¬í• ì‚ì œ" resetPassword: "비밀번호 ìž¬ì„¤ì •" + suspendRemoteInstance: "리모트 서버를 ì •ì§€" + unsuspendRemoteInstance: "리모트 ì„œë²„ì˜ ì •ì§€ë¥¼ í•´ì œ" + markSensitiveDriveFile: "파ì¼ì— 열람주ì˜ë¥¼ ì„¤ì •" + unmarkSensitiveDriveFile: "파ì¼ì— 열람주ì˜ë¥¼ í•´ì œ" + resolveAbuseReport: "ì‹ ê³ í•´ê²°" createInvitation: "초대 코드 ìƒì„±" + createAd: "ê´‘ê³ ìƒì„±" + deleteAd: "ê´‘ê³ ì‚ì œ" + updateAd: "ê´‘ê³ ìˆ˜ì •" + createAvatarDecoration: "ì•„ì´ì½˜ ìž¥ì‹ ì¶”ê°€" + updateAvatarDecoration: "ì•„ì´ì½˜ ìž¥ì‹ ìˆ˜ì •" + deleteAvatarDecoration: "ì•„ì´ì½˜ ìž¥ì‹ ì‚ì œ" +_fileViewer: + title: "íŒŒì¼ ìƒì„¸" + type: "íŒŒì¼ ìœ í˜•" + size: "íŒŒì¼ í¬ê¸°" + url: "URL" + uploadedAt: "업로드 ë‚ ì§œ" + attachedNotes: "ì²¨ë¶€ëœ ë…¸íŠ¸" + thisPageCanBeSeenFromTheAuthor: "ì´ íŽ˜ì´ì§€ëŠ” íŒŒì¼ ì†Œìœ ìžë§Œ ì—´ëžŒí• ìˆ˜ 있습니다" +_externalResourceInstaller: + title: "외부 사ì´íŠ¸ë¡œë¶€í„° 설치" + checkVendorBeforeInstall: "ì œê³µìžë¥¼ ì‹ ë¢°í• ìˆ˜ 있는 경우ì—만 설치하ì‹ì‹œì˜¤." + _plugin: + title: "ì´ í”ŒëŸ¬ê·¸ì¸ì„ ì„¤ì¹˜í•˜ì‹œê² ìŠµë‹ˆê¹Œ?" + metaTitle: "í”ŒëŸ¬ê·¸ì¸ ì •ë³´" + _theme: + title: "ì´ í…Œë§ˆë¥¼ ì„¤ì¹˜í•˜ì‹œê² ìŠµë‹ˆê¹Œ?" + metaTitle: "테마 ì •ë³´" + _meta: + base: "기본 컬러 스키마" + _vendorInfo: + title: "ì œê³µìž ì •ë³´" + endpoint: "참조한 엔드í¬ì¸íŠ¸" + hashVerify: "íŒŒì¼ ë¬´ê²°ì„± 확ì¸" + _errors: + _invalidParams: + title: "파ë¼ë¯¸í„°ê°€ 부족합니다" + description: "외부 사ì´íŠ¸ë¡œë¶€í„° ë°ì´í„°ë¥¼ 불러오기 위해 필요한 ì •ë³´ê°€ 부족합니다. URLì„ ë‹¤ì‹œ í•œ 번 확ì¸í•˜ì‹ì‹œì˜¤." + _resourceTypeNotSupported: + title: "해당하는 외부 리소스는 지ì›ë˜ì§€ 않습니다." + description: "외부 사ì´íŠ¸ì˜ 해당 리소스는 지ì›ë˜ì§€ 않습니다. 사ì´íŠ¸ 관리ìžì—게 문ì˜í•˜ì‹ì‹œì˜¤." + _failedToFetch: + title: "ë°ì´í„°ë¥¼ 불러올 수 없습니다" + fetchErrorDescription: "외부 사ì´íŠ¸ì™€ì˜ í†µì‹ ì— ì‹¤íŒ¨í•˜ì˜€ìŠµë‹ˆë‹¤. 여러 번 ì‹œë„í•´ë„ ë™ì¼í•œ 오류가 표시ë˜ëŠ” 경우 사ì´íŠ¸ 관리ìžì—게 문ì˜í•˜ì‹ì‹œì˜¤." + parseErrorDescription: "외부 사ì´íŠ¸ì—ì„œ 불러온 ë°ì´í„°ë¥¼ ì½ì–´ë“¤ì¼ 수 없습니다. 사ì´íŠ¸ 관리ìžì—게 문ì˜í•˜ì‹ì‹œì˜¤." + _hashUnmatched: + title: "ë°ì´í„°ê°€ 올바르지 않습니다." + description: "ë°ì´í„°ì˜ 무결성 확ì¸ì— 실패하여, ë³´ì•ˆì„ ìœ„í•´ 설치가 중단ë˜ì—ˆìŠµë‹ˆë‹¤. 사ì´íŠ¸ 관리ìžì—게 문ì˜í•˜ì‹ì‹œì˜¤." + _pluginParseFailed: + title: "AiScript 오류" + description: "ë°ì´í„°ë¥¼ 성공ì 으로 불러왔으나, AiScript ë¶„ì„ ê³¼ì •ì—ì„œ 오류가 ë°œìƒí•˜ì—¬ ì½ì–´ë“¤ì¼ 수 없습니다. í”ŒëŸ¬ê·¸ì¸ ìž‘ì„±ìžì—게 문ì˜í•˜ì‹ì‹œì˜¤. ìžì„¸í•œ 사í•ì€ 브ë¼ìš°ì €ì— ë‚´ìž¥ëœ ê°œë°œìž ë„êµ¬ì˜ Javascript 콘솔ì—ì„œ 확ì¸í•˜ì‹¤ 수 있습니다." + _pluginInstallFailed: + title: "í”ŒëŸ¬ê·¸ì¸ ì„¤ì¹˜ì— ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤" + description: "플러그ì¸ì„ 설치하는 ë„중 ë¬¸ì œê°€ ë°œìƒí•˜ì˜€ìŠµë‹ˆë‹¤. 다시 í•œ 번 ì‹œë„하ì‹ì‹œì˜¤. ìžì„¸í•œ 사í•ì€ 브ë¼ìš°ì €ì— ë‚´ìž¥ëœ ê°œë°œìž ë„êµ¬ì˜ Javascript 콘솔ì—ì„œ 확ì¸í•˜ì‹¤ 수 있습니다." + _themeParseFailed: + title: "테마 코드 ë¶„ì„ ì˜¤ë¥˜" + description: "ë°ì´í„°ë¥¼ 성공ì 으로 불러왔으나, 테마 코드 ë¶„ì„ ê³¼ì •ì—ì„œ 오류가 ë°œìƒí•˜ì—¬ ì½ì–´ë“¤ì¼ 수 없습니다. 테마 작성ìžì—게 문ì˜í•˜ì‹ì‹œì˜¤. ìžì„¸í•œ 사í•ì€ 브ë¼ìš°ì €ì— ë‚´ìž¥ëœ ê°œë°œìž ë„êµ¬ì˜ Javascript 콘솔ì—ì„œ 확ì¸í•˜ì‹¤ 수 있습니다." + _themeInstallFailed: + title: "테마를 설치하지 못했습니다" + description: "테마를 설치하는 ë„중 ë¬¸ì œê°€ ë°œìƒí•˜ì˜€ìŠµë‹ˆë‹¤. 다시 í•œ 번 ì‹œë„하ì‹ì‹œì˜¤. ìžì„¸í•œ 사í•ì€ 브ë¼ìš°ì €ì— ë‚´ìž¥ëœ ê°œë°œìž ë„êµ¬ì˜ Javascript 콘솔ì—ì„œ 확ì¸í•˜ì‹¤ 수 있습니다." diff --git a/locales/ru-RU.yml b/locales/ru-RU.yml index c0de0bdf59962eeb58034a22aaf521e4782f899c..d8f7fe5193f0ed5d39ca6badff42aa96f9ded809 100644 --- a/locales/ru-RU.yml +++ b/locales/ru-RU.yml @@ -59,7 +59,7 @@ copyFileId: "Скопировать ID файла" copyFolderId: "Скопировать ID папки" copyProfileUrl: "Скопировать URL Ð¿Ñ€Ð¾Ñ„Ð¸Ð»Ñ " searchUser: "ПоиÑк людей" -reply: "Ответить" +reply: "Ответ" loadMore: "Показать еще" showMore: "Показать еще" showLess: "Закрыть" @@ -409,6 +409,7 @@ aboutMisskey: "О Misskey" administrator: "ÐдминиÑтратор" token: "Токен" 2fa: "2-Ñ… Ñ„Ð°ÐºÑ‚Ð¾Ñ€Ð½Ð°Ñ Ð°ÑƒÑ‚ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ" +setupOf2fa: "ÐаÑтроить двухфакторную аутентификацию" totp: "Приложение-аутентификатор" totpDescription: "ОпиÑание приложениÑ-аутентификатора" moderator: "Модератор" @@ -652,6 +653,7 @@ behavior: "Поведение" sample: "Пример" abuseReports: "Жалобы" reportAbuse: "Жалоба" +reportAbuseRenote: "ПожаловатьÑÑ Ð½Ð° репоÑÑ‚" reportAbuseOf: "ПожаловатьÑÑ Ð½Ð° Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ {name}" fillAbuseReportDescription: "Опишите, пожалуйÑта, причину жалобы подробнее. ЕÑли речь о конкретной заметке, будьте добры приложить ÑÑылку на неё." abuseReported: "Жалоба отправлена. Большое ÑпаÑибо за информацию." @@ -1060,12 +1062,14 @@ goToMisskey: "К Misskey" additionalEmojiDictionary: "Дополнительные Ñловари Ñмодзи" installed: "УÑтановлено" branding: "Бренд" +enableIdenticonGeneration: "Включить генерацию иконки пользователÑ" +turnOffToImprovePerformance: "Отключение Ñтого параметра может повыÑить производительноÑÑ‚ÑŒ." expirationDate: "Дата иÑтечениÑ" unused: "ÐеиÑпользуемый" expired: "Срок дейÑÑ‚Ð²Ð¸Ñ Ð¿Ñ€Ð¸Ð³Ð»Ð°ÑˆÐµÐ½Ð¸Ñ Ð¸Ñтёк" doYouAgree: "СоглаÑны?" icon: "Ðватар" -replies: "Ответить" +replies: "Ответы" renotes: "РепоÑÑ‚" flip: "Переворот" _initialAccountSetting: @@ -1075,6 +1079,9 @@ _initialAccountSetting: privacySetting: "ÐаÑтройки конфиденциальноÑти" initialAccountSettingCompleted: "ÐŸÐµÑ€Ð²Ð¾Ð½Ð°Ñ‡Ð°Ð»ÑŒÐ½Ð°Ñ Ð½Ð°Ñтройка уÑпешно завершена!" skipAreYouSure: "ПропуÑтить наÑтройку?" +_initialTutorial: + _note: + description: "ПоÑÑ‚Ñ‹ в Misskey называютÑÑ 'Заметками.' Заметки отÑортированы в хронологичеÑком порÑдке в ленте и обновлÑÑŽÑ‚ÑÑ Ð² режиме реального времени." _serverSettings: iconUrl: "ÐÐ´Ñ€ÐµÑ Ð½Ð° иконку роли" _achievements: @@ -1892,7 +1899,7 @@ _notification: app: "Ð£Ð²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð¸Ð· приложений" _actions: followBack: "отвечает взаимной подпиÑкой" - reply: "Ответить" + reply: "Ответ" renote: "РепоÑÑ‚" _deck: alwaysShowMainColumn: "Ð’Ñегда показывать главную колонку" diff --git a/locales/tr-TR.yml b/locales/tr-TR.yml index 90bee48a1fdbfd5937dc2ec3aafadf10eef90110..3dd7a5b7973a91179f07156e0d3cfe82714d6842 100644 --- a/locales/tr-TR.yml +++ b/locales/tr-TR.yml @@ -9,6 +9,7 @@ notifications: "Bildirim" username: "Kullanıcı Adı" password: "Åžifre" forgotPassword: "ÅŸifremi unuttum" +fetchingAsApObject: "從è¯é‚¦å®‡å®™å–å¾—ä¸..." ok: "TAMAM" gotIt: "Anladım" cancel: "Ä°ptal" @@ -44,6 +45,7 @@ pin: "SabitlenmiÅŸ" unpin: "Sabitlemeyi kaldır" copyContent: "İçeriÄŸi kopyala" copyLink: "BaÄŸlantıyı Kopyala" +copyLinkRenote: "Turkish" delete: "Sil" deleteAndEdit: "Sil ve yeniden düzenle" deleteAndEditConfirm: "Bu notu silip yeniden düzenlemek istiyor musunuz? Bu nota iliÅŸkin tüm Tepkiler, Yeniden Notlar ve Yanıtlar da silinecektir." @@ -155,6 +157,7 @@ addEmoji: "Emoji ekle" settingGuide: "Önerilen ayarlar" cacheRemoteFiles: "Uzak dosyalar ön belleÄŸe alınsın" cacheRemoteFilesDescription: "Bu ayar açık olduÄŸunda diÄŸer sitelerin dosyaları doÄŸrudan uzak sunucudan yüklenecektir. Bu ayarı kapatmak depolama kullanımını azaltacak ama küçük resimler oluÅŸturulmadığından trafiÄŸi arttıracaktır." +youCanCleanRemoteFilesCache: "" cacheRemoteSensitiveFiles: "Hassas uzak dosyalar ön belleÄŸe alınsın" cacheRemoteSensitiveFilesDescription: "Bu ayar kapalı olduÄŸunda hassas uzak dosyalar ön belleÄŸe alınmadan doÄŸrudan uzak sunucudan yüklenecektir." flagAsBot: "Bot olarak iÅŸaretle" @@ -192,6 +195,7 @@ perHour: "Saatlik" perDay: "Günlük" stopActivityDelivery: "Durum güncellemelerini gönderme" blockThisInstance: "Bu sunucuyu engelle" +silenceThisInstance: "" operations: "Ä°ÅŸlemler" software: "Yazılımlar" version: "Sürüm" @@ -211,6 +215,8 @@ clearCachedFiles: "Ön belleÄŸi temizle" clearCachedFilesConfirm: "Ön belleÄŸe alınmış tüm uzak sunucu dosyaları silinsin mi?" blockedInstances: "Engellenen sunucular" blockedInstancesDescription: "Engellemek istediÄŸiniz sunucuların alan adlarını satır sonlarıyla ayırarak yazın. Yazılan sunucular bu sunucuyla iletiÅŸime geçemeyecek." +silencedInstances: "Turkısh" +silencedInstancesDescription: "" muteAndBlock: "Susturma ve Engelleme" mutedUsers: "Susturulan kullanıcılar" blockedUsers: "Engellenen kullanıcılar" diff --git a/locales/zh-TW.yml b/locales/zh-TW.yml index 4bad051a44e194d53060c8caabe95db586a126c4..ad0741693fe5c177964c23e99684637cdce0860c 100644 --- a/locales/zh-TW.yml +++ b/locales/zh-TW.yml @@ -299,7 +299,7 @@ light: "淺色" dark: "深色" lightThemes: "淺色主題" darkThemes: "深色主題" -syncDeviceDarkMode: "åŒæ¥è‡³æ¤è£ç½®çš„深色模å¼è¨å®š" +syncDeviceDarkMode: "與è¨å‚™çš„深色模å¼åŒæ¥" drive: "雲端硬碟" fileName: "檔案å稱" selectFile: "é¸æ“‡æª”案" @@ -584,7 +584,7 @@ relays: "ä¸ç¹¼" addRelay: "新增ä¸ç¹¼" inboxUrl: "收件夾URL" addedRelays: "å·²åŠ å…¥çš„ä¸ç¹¼" -serviceworkerInfo: "您需è¦å•Ÿç”¨æŽ¨é€é€šçŸ¥ã€‚" +serviceworkerInfo: "如è¦ä½¿ç”¨æŽ¨æ’通知,需è¦å•Ÿç”¨æ¤é¸é …並è¨å®šé‡‘鑰。" deletedNote: "已刪除的貼文" invisibleNote: "ç§å¯†çš„貼文" enableInfiniteScroll: "啟用自動滾動é é¢æ¨¡å¼" @@ -731,7 +731,7 @@ thisIsExperimentalFeature: "這是實驗性的功能。å¯èƒ½æœƒæœ‰è®Šæ›´è¦æ ¼ developer: "開發者" makeExplorable: "ä½¿è‡ªå·±çš„å¸³æˆ¶èƒ½å¤ åœ¨ã€ŒæŽ¢ç´¢ã€é é¢ä¸é¡¯ç¤º" makeExplorableDescription: "如果關閉,帳戶將ä¸æœƒè¢«é¡¯ç¤ºåœ¨ã€ŒæŽ¢ç´¢ã€é é¢ä¸ã€‚" -showGapBetweenNotesInTimeline: "分開顯示時間軸上的貼文。" +showGapBetweenNotesInTimeline: "分開顯示時間軸上的貼文" duplicate: "複製" left: "å·¦" center: "ç½®ä¸" @@ -1030,7 +1030,7 @@ retryAllQueuesConfirmTitle: "è¦ç¾åœ¨é‡è©¦å—Žï¼Ÿ" retryAllQueuesConfirmText: "伺æœå™¨çš„è² è·å¯èƒ½æœƒæš«æ™‚å¢žåŠ ã€‚" enableChartsForRemoteUser: "生æˆé 端使用者的圖表" enableChartsForFederatedInstances: "生æˆé 端伺æœå™¨çš„圖表" -showClipButtonInNoteFooter: "新增摘錄至貼文" +showClipButtonInNoteFooter: "新增摘錄按鈕至貼文" reactionsDisplaySize: "å應的顯示尺寸" noteIdOrUrl: "貼文ID或URL" video: "影片" @@ -1169,6 +1169,8 @@ _announcement: readConfirmText: "閱讀「{title}ã€çš„內容並標記為已讀。" shouldNotBeUsedToPresentPermanentInfo: "由於å¯èƒ½æœƒç ´å£žä½¿ç”¨è€…體驗,尤其是å°æ–¼æ–°ä½¿ç”¨è€…而言,我們建è°ä½¿ç”¨å…¬å‘Šä¾†ç™¼å¸ƒæœ‰æ™‚效性的資訊而ä¸æ˜¯å›ºå®šä¸è®Šçš„資訊。" dialogAnnouncementUxWarn: "如果åŒæ™‚有 2 個以上å°è©±æ–¹å¡Šå½¢å¼çš„公告å˜åœ¨ï¼Œå°æ–¼ä½¿ç”¨è€…體驗很å¯èƒ½æœƒæœ‰ä¸è‰¯çš„å½±éŸ¿ï¼Œå› æ¤å»ºè°è¬¹æ…Žä½¿ç”¨ã€‚" + silence: "ä¸ç™¼é€é€šçŸ¥" + silenceDescription: "啟用æ¤é¸é …後,將ä¸æœƒç™¼é€æ¤å…¬å‘Šçš„通知,並且無需將其標記為已讀。" _initialAccountSetting: accountCreated: "帳戶已建立完æˆï¼" letsStartAccountSetup: "來進行帳戶的åˆå§‹è¨å®šå§ã€‚" @@ -1248,7 +1250,7 @@ _initialTutorial: title: "æ•™å¸èª²ç¨‹å·²çµæŸ" description: "這裡介紹的功能åªæ˜¯å…¶ä¸çš„一å°éƒ¨åˆ†ã€‚è¦äº†è§£æ›´å¤šæœ‰é—œå¦‚何使用Misskey的資訊,請ç€è¦½{link}。" _timelineDescription: - home: "在首é 時間線上,å¯ä»¥çœ‹åˆ°æ‚¨è¿½éš¨çš„使用者的貼文。" + home: "在首é 時間軸上,å¯ä»¥çœ‹åˆ°æ‚¨è¿½éš¨çš„使用者的貼文。" local: "在本地時間軸上,å¯ä»¥çœ‹åˆ°æ¤ä¼ºæœå™¨æ‰€æœ‰ä½¿ç”¨è€…的貼文。" social: "在社交時間軸上,å¯ä»¥çœ‹åˆ°é¦–é 與本地時間軸的貼文。" global: "在公開時間軸上,å¯ä»¥çœ‹åˆ°å…¶ä»–已連接伺æœå™¨çš„貼文。\n" @@ -1264,6 +1266,8 @@ _serverSettings: shortName: "簡稱" shortNameDescription: "如果伺æœå™¨çš„æ£å¼å稱很長,å¯ç”¨ç°¡ç¨±æˆ–通稱代替。" fanoutTimelineDescription: "如果啟用的話,檢索å„個時間軸的性能會顯著ææ˜‡ï¼Œè³‡æ–™åº«çš„è² è·ä¹Ÿæœƒæ¸›å°‘。ä¸éŽï¼ŒRedis 的記憶體使用é‡æœƒå¢žåŠ 。如果伺æœå™¨çš„記憶體容é‡æ¯”較少或者é‹è¡Œä¸ç©©å®šï¼Œå¯ä»¥åœç”¨ã€‚" + fanoutTimelineDbFallback: "資料庫的回退" + fanoutTimelineDbFallbackDescription: "若啟用,在時間軸沒有快å–的情æ³ä¸‹å°‡åŸ·è¡Œå›žé€€è™•ç†ä»¥é¡å¤–查詢資料庫。若åœç”¨ï¼Œå¯ä»¥é€éŽä¸åŸ·è¡Œå›žé€€è™•ç†ä¾†é€²ä¸€æ¥æ¸›å°‘伺æœå™¨çš„è² è·ï¼Œä½†æœƒé™åˆ¶å¯å–得的時間軸範åœã€‚" _accountMigration: moveFrom: "從其他帳戶é·ç§»åˆ°é€™å€‹å¸³æˆ¶" moveFromSub: "為å¦ä¸€å€‹å¸³æˆ¶å»ºç«‹åˆ¥å" @@ -1272,7 +1276,7 @@ _accountMigration: moveTo: "將這個帳戶é·ç§»è‡³æ–°çš„帳戶" moveToLabel: "è¦é·ç§»åˆ°çš„帳戶:" moveCannotBeUndone: "一旦é·ç§»å¸³æˆ¶ï¼Œå°±ç„¡æ³•å–消。" - moveAccountDescription: "é·ç§»è‡³æ–°å¸³æˆ¶ã€‚\n ・æ¤å¸³æˆ¶çš„追隨者將自動追隨新帳戶;\n ・æ¤å¸³æˆ¶çš„所有追隨者將被å–消追隨;\n ・æ¤å¸³æˆ¶ä¸èƒ½å†ç™¼æ–‡ã€‚\n\n雖然會自動é·ç§»æ‚¨è¿½éš¨è€…ï¼Œä½†å¿…é ˆæ‰‹å‹•é·ç§»æ‚¨è¿½éš¨çš„帳戶。請在é·ç§»å‰åŒ¯å‡ºæ¤å¸³æˆ¶çš„「追隨ä¸ã€å單,並在é·ç§»å¾Œè‡ªè¡ŒåŒ¯å…¥ã€‚\n列表åå–®ã€éœéŸ³åå–®åŠå°éŽ–åå–®ä¹Ÿå¿…é ˆå¦‚æ¤è™•ç†ã€‚\n\n(æ¤èªªæ˜Žé©ç”¨æ–¼æœ¬ä¼ºæœå™¨ï¼Œä»¥åŠé‹è¡Œ Misskey v13.12.0 或更新版本的其他伺æœå™¨ï¼›å¦‚ Mastodon ç‰ä½¿ç”¨ ActivityPub å”定的其他軟體或有ä¸åŒçš„處ç†æ–¹å¼ã€‚)" + moveAccountDescription: "é·ç§»è‡³æ–°å¸³æˆ¶ã€‚\n ・æ¤å¸³æˆ¶çš„追隨者將自動追隨新帳戶;\n ・æ¤å¸³æˆ¶çš„所有追隨者將被å–消追隨;\n ・æ¤å¸³æˆ¶ä¸èƒ½å†ç™¼æ–‡ã€‚\n\n雖然會自動é·ç§»æ‚¨çš„è¿½éš¨è€…ï¼Œä½†å¿…é ˆæ‰‹å‹•é·ç§»æ‚¨è¿½éš¨çš„帳戶。請在é·ç§»å‰åŒ¯å‡ºæ¤å¸³æˆ¶çš„「追隨ä¸ã€å單,並在é·ç§»å¾Œè‡ªè¡ŒåŒ¯å…¥ã€‚\n列表åå–®ã€éœéŸ³åå–®åŠå°éŽ–åå–®ä¹Ÿå¿…é ˆå¦‚æ¤è™•ç†ã€‚\n\n(æ¤èªªæ˜Žé©ç”¨æ–¼æœ¬ä¼ºæœå™¨ï¼Œä»¥åŠé‹è¡Œ Misskey v13.12.0 或更新版本的其他伺æœå™¨ï¼›å¦‚ Mastodon ç‰ä½¿ç”¨ ActivityPub å”定的其他軟體或有ä¸åŒçš„處ç†æ–¹å¼ã€‚)" moveAccountHowTo: "è¦é·ç§»å¸³æˆ¶ï¼Œé¦–å…ˆè¦åœ¨ç›®æ¨™å¸³æˆ¶ä¸ç‚ºæ¤å¸³æˆ¶å»ºç«‹ä¸€å€‹åˆ¥å。\n 建立別å後,åƒé€™æ¨£è¼¸å…¥ç›®æ¨™å¸³æˆ¶ï¼š@username@server.example.com" startMigration: "é·ç§»" migrationConfirm: "確定è¦å°‡é€™å€‹å¸³æˆ¶é·ç§»è‡³ {account} 嗎?一旦é·ç§»å°±ç„¡æ³•æ’¤éŠ·ï¼Œä¹Ÿå°±ç„¡æ³•ä»¥åŽŸä¾†çš„狀態使用這個帳戶。\nå¦å¤–,請確èªåœ¨è¦é·ç§»åˆ°çš„帳戶已經建立了一個別å。" @@ -1723,7 +1727,7 @@ _wordMute: muteWordsDescription: "ç©ºæ ¼ä»£è¡¨ã€Œä»¥åŠã€ï¼ˆAND),æ›è¡Œä»£è¡¨ã€Œæˆ–者ã€ï¼ˆOR)。" muteWordsDescription2: "用斜線包åœé—œéµå—代表æ£è¦è¡¨é”å¼ã€‚" _instanceMute: - instanceMuteDescription: "包括å°è¢«éœéŸ³å¯¦ä¾‹ä¸Šçš„使用者的回覆,被è¨å®šçš„實例上所有貼文åŠè½‰ç™¼éƒ½æœƒè¢«éœéŸ³ã€‚" + instanceMuteDescription: "包括å°è¢«éœéŸ³ä¼ºæœå™¨ä¸Šçš„使用者的回覆,被è¨å®šçš„伺æœå™¨ä¸Šæ‰€æœ‰è²¼æ–‡åŠè½‰ç™¼éƒ½æœƒè¢«éœéŸ³ã€‚" instanceMuteDescription2: "è¨å®šæ™‚以æ›è¡Œé€²è¡Œåˆ†éš”" title: "將隱è—被è¨å®šçš„實例貼文。" heading: "將實例éœéŸ³" @@ -1815,6 +1819,14 @@ _ago: monthsAgo: "{n} 個月å‰" yearsAgo: "{n} å¹´å‰" invalid: "ç„¡" +_timeIn: + seconds: "{n} 秒後" + minutes: "{n} 分後" + hours: "{n} å°æ™‚後" + days: "{n} 日後" + weeks: "{n} 週後" + months: "{n} 個月後" + years: "{n} 年後" _time: second: "秒" minute: "分é˜" diff --git a/package.json b/package.json index cee83ae529eef388432ae8edb93e07f9cf1cb119..6680b648064648d1ea47964f7de88a93b620a81e 100644 --- a/package.json +++ b/package.json @@ -1,12 +1,12 @@ { "name": "sharkey", - "version": "2023.11.1.beta1", + "version": "2023.11.1.beta2", "codename": "shonk", "repository": { "type": "git", "url": "https://github.com/transfem-org/sharkey.git" }, - "packageManager": "pnpm@8.10.0", + "packageManager": "pnpm@8.10.5", "workspaces": [ "packages/frontend", "packages/backend", @@ -52,11 +52,11 @@ "typescript": "5.2.2" }, "devDependencies": { - "@typescript-eslint/eslint-plugin": "6.9.1", - "@typescript-eslint/parser": "6.9.1", + "@typescript-eslint/eslint-plugin": "6.11.0", + "@typescript-eslint/parser": "6.11.0", "cross-env": "7.0.3", - "cypress": "13.4.0", - "eslint": "8.52.0", - "start-server-and-test": "2.0.1" + "cypress": "13.5.1", + "eslint": "8.53.0", + "start-server-and-test": "2.0.3" } } diff --git a/packages/backend/migration/1700096812223-enableFanoutTimelineDbFallback.js b/packages/backend/migration/1700096812223-enableFanoutTimelineDbFallback.js new file mode 100644 index 0000000000000000000000000000000000000000..94fa588985d040aafc4f757ea3a5763b9dad46b8 --- /dev/null +++ b/packages/backend/migration/1700096812223-enableFanoutTimelineDbFallback.js @@ -0,0 +1,16 @@ +/* + * SPDX-FileCopyrightText: syuilo and other misskey contributors + * SPDX-License-Identifier: AGPL-3.0-only + */ + +export class EnableFanoutTimelineDbFallback1700096812223 { + name = 'EnableFanoutTimelineDbFallback1700096812223' + + async up(queryRunner) { + await queryRunner.query(`ALTER TABLE "meta" ADD "enableFanoutTimelineDbFallback" boolean NOT NULL DEFAULT true`); + } + + async down(queryRunner) { + await queryRunner.query(`ALTER TABLE "meta" DROP COLUMN "enableFanoutTimelineDbFallback"`); + } +} diff --git a/packages/backend/package.json b/packages/backend/package.json index 1481d6b3549856fdbc06e8c8e69b7fffb413e84a..22030d168d9684bf99fde737a810dabb93c4d0c6 100644 --- a/packages/backend/package.json +++ b/packages/backend/package.json @@ -57,16 +57,15 @@ "dependencies": { "@aws-sdk/client-s3": "3.412.0", "@aws-sdk/lib-storage": "3.412.0", - "@smithy/node-http-handler": "2.1.5", "@bull-board/api": "5.9.1", "@bull-board/fastify": "5.9.1", "@bull-board/ui": "5.9.1", "@discordapp/twemoji": "14.1.2", "@fastify/accepts": "4.2.0", - "@fastify/cookie": "9.1.0", + "@fastify/cookie": "9.2.0", "@fastify/cors": "8.4.1", "@fastify/express": "2.3.0", - "@fastify/http-proxy": "9.2.1", + "@fastify/http-proxy": "9.3.0", "@fastify/multipart": "8.0.0", "@fastify/static": "6.12.0", "@fastify/view": "8.2.0", @@ -76,8 +75,9 @@ "@peertube/http-signature": "1.7.0", "@simplewebauthn/server": "8.3.5", "@sinonjs/fake-timers": "11.2.2", - "@swc/cli": "0.1.62", - "@swc/core": "1.3.95", + "@smithy/node-http-handler": "2.1.5", + "@swc/cli": "0.1.63", + "@swc/core": "1.3.96", "accepts": "1.3.8", "ajv": "8.12.0", "archiver": "6.0.1", @@ -86,7 +86,7 @@ "bcryptjs": "2.4.3", "blurhash": "2.0.5", "body-parser": "1.20.2", - "bullmq": "4.12.8", + "bullmq": "4.13.3", "cacheable-lookup": "7.0.0", "cbor": "9.0.1", "chalk": "5.3.0", @@ -99,8 +99,9 @@ "deep-email-validator": "0.1.21", "fastify-multer": "^2.0.3", "fastify": "4.24.3", + "fastify-raw-body": "4.3.0", "feed": "4.2.2", - "file-type": "18.6.0", + "file-type": "18.7.0", "fluent-ffmpeg": "2.1.2", "form-data": "4.0.0", "got": "13.0.0", @@ -123,7 +124,7 @@ "mime-types": "2.1.35", "misskey-js": "workspace:*", "ms": "3.0.0-canary.1", - "nanoid": "5.0.2", + "nanoid": "5.0.3", "nested-property": "4.0.0", "node-fetch": "3.3.2", "nodemailer": "6.9.7", @@ -131,7 +132,7 @@ "oauth2orize": "1.12.0", "oauth2orize-pkce": "0.1.2", "os-utils": "0.0.14", - "otpauth": "9.1.5", + "otpauth": "9.2.0", "parse5": "7.1.2", "pg": "8.11.3", "pkce-challenge": "4.0.1", @@ -143,20 +144,21 @@ "qrcode": "1.5.3", "random-seed": "0.3.0", "ratelimiter": "3.4.1", - "re2": "1.20.5", + "re2": "1.20.8", "redis-lock": "0.1.4", "reflect-metadata": "0.1.13", "rename": "1.0.4", "rss-parser": "3.13.0", "rxjs": "7.8.1", "sanitize-html": "2.11.0", + "secure-json-parse": "2.7.0", "sharp": "0.32.6", "sharp-read-bmp": "github:misskey-dev/sharp-read-bmp", "slacc": "0.0.10", "strict-event-emitter-types": "2.0.0", "stringz": "2.1.0", "summaly": "github:misskey-dev/summaly", - "systeminformation": "5.21.15", + "systeminformation": "5.21.17", "tinycolor2": "1.6.0", "tmp": "0.2.1", "tsc-alias": "1.8.8", @@ -175,51 +177,51 @@ "@jest/globals": "29.7.0", "@simplewebauthn/typescript-types": "8.3.4", "@swc/jest": "0.2.29", - "@types/accepts": "1.3.6", - "@types/archiver": "6.0.0", - "@types/bcryptjs": "2.4.5", - "@types/body-parser": "1.19.4", + "@types/accepts": "1.3.7", + "@types/archiver": "6.0.1", + "@types/bcryptjs": "2.4.6", + "@types/body-parser": "1.19.5", "@types/cbor": "6.0.0", - "@types/color-convert": "2.0.2", - "@types/content-disposition": "0.5.7", - "@types/fluent-ffmpeg": "2.1.23", - "@types/http-link-header": "1.0.4", - "@types/jest": "29.5.7", - "@types/js-yaml": "4.0.8", - "@types/jsdom": "21.1.4", - "@types/jsonld": "1.5.11", - "@types/jsrsasign": "10.5.11", - "@types/mime-types": "2.1.3", - "@types/ms": "0.7.33", - "@types/node": "20.8.10", + "@types/color-convert": "2.0.3", + "@types/content-disposition": "0.5.8", + "@types/fluent-ffmpeg": "2.1.24", + "@types/http-link-header": "1.0.5", + "@types/jest": "29.5.8", + "@types/js-yaml": "4.0.9", + "@types/jsdom": "21.1.5", + "@types/jsonld": "1.5.12", + "@types/jsrsasign": "10.5.12", + "@types/mime-types": "2.1.4", + "@types/ms": "0.7.34", + "@types/node": "20.9.1", "@types/node-fetch": "3.0.3", - "@types/nodemailer": "6.4.13", - "@types/oauth": "0.9.3", - "@types/oauth2orize": "1.11.2", - "@types/oauth2orize-pkce": "0.1.1", - "@types/pg": "8.10.7", - "@types/pug": "2.0.8", - "@types/punycode": "2.1.1", - "@types/qrcode": "1.5.4", - "@types/random-seed": "0.3.4", - "@types/ratelimiter": "3.4.5", - "@types/rename": "1.0.6", - "@types/sanitize-html": "2.9.3", - "@types/semver": "7.5.4", + "@types/nodemailer": "6.4.14", + "@types/oauth": "0.9.4", + "@types/oauth2orize": "1.11.3", + "@types/oauth2orize-pkce": "0.1.2", + "@types/pg": "8.10.9", + "@types/pug": "2.0.9", + "@types/punycode": "2.1.2", + "@types/qrcode": "1.5.5", + "@types/random-seed": "0.3.5", + "@types/ratelimiter": "3.4.6", + "@types/rename": "1.0.7", + "@types/sanitize-html": "2.9.4", + "@types/semver": "7.5.5", "@types/sharp": "0.32.0", - "@types/simple-oauth2": "5.0.6", - "@types/sinonjs__fake-timers": "8.1.4", - "@types/tinycolor2": "1.4.5", - "@types/tmp": "0.2.5", - "@types/vary": "1.1.2", - "@types/web-push": "3.6.2", + "@types/simple-oauth2": "5.0.7", + "@types/sinonjs__fake-timers": "8.1.5", + "@types/tinycolor2": "1.4.6", + "@types/tmp": "0.2.6", + "@types/vary": "1.1.3", + "@types/web-push": "3.6.3", + "@types/ws": "8.5.9", "@types/uuid": "^9.0.4", - "@types/ws": "8.5.8", - "@typescript-eslint/eslint-plugin": "6.9.1", - "@typescript-eslint/parser": "6.9.1", + "@typescript-eslint/eslint-plugin": "6.11.0", + "@typescript-eslint/parser": "6.11.0", "aws-sdk-client-mock": "3.0.0", "cross-env": "7.0.3", - "eslint": "8.52.0", + "eslint": "8.53.0", "eslint-plugin-import": "2.29.0", "execa": "8.0.1", "jest": "29.7.0", diff --git a/packages/backend/src/core/MfmService.ts b/packages/backend/src/core/MfmService.ts index 67c5d58ef5438427b0d7fe8a0bee292ba35feacd..178b4cc9a9c0e945618893553d01a9db8f375c5a 100644 --- a/packages/backend/src/core/MfmService.ts +++ b/packages/backend/src/core/MfmService.ts @@ -276,9 +276,18 @@ export class MfmService { }, fn: (node) => { - const el = doc.createElement('i'); - appendChildren(node.children, el); - return el; + if (node.props.name === 'unixtime') { + const text = node.children[0]!.type === 'text' ? node.children[0].props.text : ''; + const date = new Date(parseInt(text, 10) * 1000); + const el = doc.createElement('time'); + el.setAttribute('datetime', date.toISOString()); + el.textContent = date.toISOString(); + return el; + } else { + const el = doc.createElement('i'); + appendChildren(node.children, el); + return el; + } }, blockCode: (node) => { diff --git a/packages/backend/src/core/NoteCreateService.ts b/packages/backend/src/core/NoteCreateService.ts index 3a75c37bb157f4749bfb9b05d884ffe7d9b72c5e..837a53cfacef35da7dc04efca7170a647369daff 100644 --- a/packages/backend/src/core/NoteCreateService.ts +++ b/packages/backend/src/core/NoteCreateService.ts @@ -696,11 +696,13 @@ export class NoteCreateService implements OnApplicationShutdown { followeeId: user.id, notify: 'normal', }).then(followings => { - for (const following of followings) { - // TODO: ワードミュート考慮 - this.notificationService.createNotification(following.followerId, 'note', { - noteId: note.id, - }, user.id); + if (note.visibility !== 'specified') { + for (const following of followings) { + // TODO: ワードミュート考慮 + this.notificationService.createNotification(following.followerId, 'note', { + noteId: note.id, + }, user.id); + } } }); } diff --git a/packages/backend/src/core/activitypub/ApRendererService.ts b/packages/backend/src/core/activitypub/ApRendererService.ts index fa2fa88304e4f86ce98800346cf85032ff9e5d2e..4d8e075a3be13f18b60e319432d066333f634d48 100644 --- a/packages/backend/src/core/activitypub/ApRendererService.ts +++ b/packages/backend/src/core/activitypub/ApRendererService.ts @@ -485,7 +485,7 @@ export class ApRendererService { const attachment = profile.fields.map(field => ({ type: 'PropertyValue', name: field.name, - value: /^https?:/.test(field.value) + value: (field.value.startsWith('http://') || field.value.startsWith('https://')) ? `<a href="${new URL(field.value).href}" rel="me nofollow noopener" target="_blank">${new URL(field.value).href}</a>` : field.value, })); diff --git a/packages/backend/src/models/Meta.ts b/packages/backend/src/models/Meta.ts index 3ec9a69810ea191977732544d89a7e2dc078359f..97bec444d6132f14fa3004dcf312dc5c99211970 100644 --- a/packages/backend/src/models/Meta.ts +++ b/packages/backend/src/models/Meta.ts @@ -509,6 +509,11 @@ export class MiMeta { }) public enableFanoutTimeline: boolean; + @Column('boolean', { + default: true, + }) + public enableFanoutTimelineDbFallback: boolean; + @Column('integer', { default: 300, }) diff --git a/packages/backend/src/server/ActivityPubServerService.ts b/packages/backend/src/server/ActivityPubServerService.ts index 2e64d41c91d693cb49d0c89a9df75c2d423714b9..2c9e2cf24f2c2975f85332aa80d1688127354ba5 100644 --- a/packages/backend/src/server/ActivityPubServerService.ts +++ b/packages/backend/src/server/ActivityPubServerService.ts @@ -3,6 +3,7 @@ * SPDX-License-Identifier: AGPL-3.0-only */ +import * as crypto from 'node:crypto'; import { IncomingMessage } from 'node:http'; import { Inject, Injectable } from '@nestjs/common'; import fastifyAccepts from '@fastify/accepts'; @@ -10,6 +11,7 @@ import httpSignature from '@peertube/http-signature'; import { Brackets, In, IsNull, LessThan, Not } from 'typeorm'; import accepts from 'accepts'; import vary from 'vary'; +import secureJson from 'secure-json-parse'; import { DI } from '@/di-symbols.js'; import type { FollowingsRepository, NotesRepository, EmojisRepository, NoteReactionsRepository, UserProfilesRepository, UserNotePiningsRepository, UsersRepository, FollowRequestsRepository } from '@/models/_.js'; import * as url from '@/misc/prelude/url.js'; @@ -27,7 +29,7 @@ import { UserEntityService } from '@/core/entities/UserEntityService.js'; import { bindThis } from '@/decorators.js'; import { IActivity } from '@/core/activitypub/type.js'; import { isPureRenote } from '@/misc/is-pure-renote.js'; -import type { FastifyInstance, FastifyRequest, FastifyReply, FastifyPluginOptions } from 'fastify'; +import type { FastifyInstance, FastifyRequest, FastifyReply, FastifyPluginOptions, FastifyBodyParser } from 'fastify'; import type { FindOptionsWhere } from 'typeorm'; const ACTIVITY_JSON = 'application/activity+json; charset=utf-8'; @@ -108,7 +110,58 @@ export class ActivityPubServerService { return; } - // TODO: request.bodyã®ãƒãƒªãƒ‡ãƒ¼ã‚·ãƒ§ãƒ³ï¼Ÿ + if (signature.params.headers.indexOf('host') === -1 + || request.headers.host !== this.config.host) { + // Host not specified or not match. + reply.code(401); + return; + } + + if (signature.params.headers.indexOf('digest') === -1) { + // Digest not found. + reply.code(401); + } else { + const digest = request.headers.digest; + + if (typeof digest !== 'string') { + // Huh? + reply.code(401); + return; + } + + const re = /^([a-zA-Z0-9\-]+)=(.+)$/; + const match = digest.match(re); + + if (match == null) { + // Invalid digest + reply.code(401); + return; + } + + const algo = match[1]; + const digestValue = match[2]; + + if (algo !== 'SHA-256') { + // Unsupported digest algorithm + reply.code(401); + return; + } + + if (request.rawBody == null) { + // Bad request + reply.code(400); + return; + } + + const hash = crypto.createHash('sha256').update(request.rawBody).digest('base64'); + + if (hash !== digestValue) { + // Invalid digest + reply.code(401); + return; + } + } + this.queueService.inbox(request.body as IActivity, signature); reply.code(202); @@ -460,9 +513,28 @@ export class ActivityPubServerService { }, }); + const almostDefaultJsonParser: FastifyBodyParser<Buffer> = function (request, rawBody, done) { + if (rawBody.length === 0) { + const err = new Error('Body cannot be empty!') as any; + err.statusCode = 400; + return done(err); + } + + try { + const json = secureJson.parse(rawBody.toString('utf8'), null, { + protoAction: 'ignore', + constructorAction: 'ignore', + }); + done(null, json); + } catch (err: any) { + err.statusCode = 400; + return done(err); + } + }; + fastify.register(fastifyAccepts); - fastify.addContentTypeParser('application/activity+json', { parseAs: 'string' }, fastify.getDefaultJsonParser('ignore', 'ignore')); - fastify.addContentTypeParser('application/ld+json', { parseAs: 'string' }, fastify.getDefaultJsonParser('ignore', 'ignore')); + fastify.addContentTypeParser('application/activity+json', { parseAs: 'buffer' }, almostDefaultJsonParser); + fastify.addContentTypeParser('application/ld+json', { parseAs: 'buffer' }, almostDefaultJsonParser); fastify.addHook('onRequest', (request, reply, done) => { reply.header('Access-Control-Allow-Headers', 'Accept'); @@ -474,8 +546,8 @@ export class ActivityPubServerService { //#region Routing // inbox (limit: 64kb) - fastify.post('/inbox', { bodyLimit: 1024 * 64 }, async (request, reply) => await this.inbox(request, reply)); - fastify.post('/users/:user/inbox', { bodyLimit: 1024 * 64 }, async (request, reply) => await this.inbox(request, reply)); + fastify.post('/inbox', { config: { rawBody: true }, bodyLimit: 1024 * 64 }, async (request, reply) => await this.inbox(request, reply)); + fastify.post('/users/:user/inbox', { config: { rawBody: true }, bodyLimit: 1024 * 64 }, async (request, reply) => await this.inbox(request, reply)); // note fastify.get<{ Params: { note: string; } }>('/notes/:note', { constraints: { apOrHtml: 'ap' } }, async (request, reply) => { diff --git a/packages/backend/src/server/ServerService.ts b/packages/backend/src/server/ServerService.ts index 16bcfc74597cbea1595dd1f4a11c001b9877a5e1..4d10e0fa4ff1bfbb51917595cd3c13d0d2d4c5da 100644 --- a/packages/backend/src/server/ServerService.ts +++ b/packages/backend/src/server/ServerService.ts @@ -9,6 +9,7 @@ import { fileURLToPath } from 'node:url'; import { Inject, Injectable, OnApplicationShutdown } from '@nestjs/common'; import Fastify, { FastifyInstance } from 'fastify'; import fastifyStatic from '@fastify/static'; +import fastifyRawBody from 'fastify-raw-body'; import { IsNull } from 'typeorm'; import { GlobalEventService } from '@/core/GlobalEventService.js'; import type { Config } from '@/config.js'; @@ -88,6 +89,13 @@ export class ServerService implements OnApplicationShutdown { }); } + // Register raw-body parser for ActivityPub HTTP signature validation. + await fastify.register(fastifyRawBody, { + global: false, + encoding: null, + runFirst: true, + }); + // Register non-serving static server so that the child services can use reply.sendFile. // `root` here is just a placeholder and each call must use its own `rootPath`. fastify.register(fastifyStatic, { diff --git a/packages/backend/src/server/api/EndpointsModule.ts b/packages/backend/src/server/api/EndpointsModule.ts index c2de4a76656a4b221d796a93c089b17d8e1c5b78..e7014c133334dfe7746ef2eabbdab9e2d44ac028 100644 --- a/packages/backend/src/server/api/EndpointsModule.ts +++ b/packages/backend/src/server/api/EndpointsModule.ts @@ -10,6 +10,7 @@ import * as ep___admin_meta from './endpoints/admin/meta.js'; import * as ep___admin_abuseUserReports from './endpoints/admin/abuse-user-reports.js'; import * as ep___admin_accounts_create from './endpoints/admin/accounts/create.js'; import * as ep___admin_accounts_delete from './endpoints/admin/accounts/delete.js'; +import * as ep___admin_accounts_findByEmail from './endpoints/admin/accounts/find-by-email.js'; import * as ep___admin_ad_create from './endpoints/admin/ad/create.js'; import * as ep___admin_ad_delete from './endpoints/admin/ad/delete.js'; import * as ep___admin_ad_list from './endpoints/admin/ad/list.js'; @@ -380,6 +381,7 @@ const $admin_meta: Provider = { provide: 'ep:admin/meta', useClass: ep___admin_m const $admin_abuseUserReports: Provider = { provide: 'ep:admin/abuse-user-reports', useClass: ep___admin_abuseUserReports.default }; const $admin_accounts_create: Provider = { provide: 'ep:admin/accounts/create', useClass: ep___admin_accounts_create.default }; const $admin_accounts_delete: Provider = { provide: 'ep:admin/accounts/delete', useClass: ep___admin_accounts_delete.default }; +const $admin_accounts_findByEmail: Provider = { provide: 'ep:admin/accounts/find-by-email', useClass: ep___admin_accounts_findByEmail.default }; const $admin_ad_create: Provider = { provide: 'ep:admin/ad/create', useClass: ep___admin_ad_create.default }; const $admin_ad_delete: Provider = { provide: 'ep:admin/ad/delete', useClass: ep___admin_ad_delete.default }; const $admin_ad_list: Provider = { provide: 'ep:admin/ad/list', useClass: ep___admin_ad_list.default }; @@ -754,6 +756,7 @@ const $sponsors: Provider = { provide: 'ep:sponsors', useClass: ep___sponsors.de $admin_abuseUserReports, $admin_accounts_create, $admin_accounts_delete, + $admin_accounts_findByEmail, $admin_ad_create, $admin_ad_delete, $admin_ad_list, @@ -1122,6 +1125,7 @@ const $sponsors: Provider = { provide: 'ep:sponsors', useClass: ep___sponsors.de $admin_abuseUserReports, $admin_accounts_create, $admin_accounts_delete, + $admin_accounts_findByEmail, $admin_ad_create, $admin_ad_delete, $admin_ad_list, diff --git a/packages/backend/src/server/api/endpoints.ts b/packages/backend/src/server/api/endpoints.ts index 7b17dc138fa27051c0a82fb8a50e14b6cf607a3f..0d32b7990024ac5e78d2be67f999cd855ed62fec 100644 --- a/packages/backend/src/server/api/endpoints.ts +++ b/packages/backend/src/server/api/endpoints.ts @@ -10,6 +10,7 @@ import * as ep___admin_meta from './endpoints/admin/meta.js'; import * as ep___admin_abuseUserReports from './endpoints/admin/abuse-user-reports.js'; import * as ep___admin_accounts_create from './endpoints/admin/accounts/create.js'; import * as ep___admin_accounts_delete from './endpoints/admin/accounts/delete.js'; +import * as ep___admin_accounts_findByEmail from './endpoints/admin/accounts/find-by-email.js'; import * as ep___admin_ad_create from './endpoints/admin/ad/create.js'; import * as ep___admin_ad_delete from './endpoints/admin/ad/delete.js'; import * as ep___admin_ad_list from './endpoints/admin/ad/list.js'; @@ -378,6 +379,7 @@ const eps = [ ['admin/abuse-user-reports', ep___admin_abuseUserReports], ['admin/accounts/create', ep___admin_accounts_create], ['admin/accounts/delete', ep___admin_accounts_delete], + ['admin/accounts/find-by-email', ep___admin_accounts_findByEmail], ['admin/ad/create', ep___admin_ad_create], ['admin/ad/delete', ep___admin_ad_delete], ['admin/ad/list', ep___admin_ad_list], diff --git a/packages/backend/src/server/api/endpoints/admin/accounts/find-by-email.ts b/packages/backend/src/server/api/endpoints/admin/accounts/find-by-email.ts new file mode 100644 index 0000000000000000000000000000000000000000..686341582b5122ed1a4d6afd883a71d276f7de7a --- /dev/null +++ b/packages/backend/src/server/api/endpoints/admin/accounts/find-by-email.ts @@ -0,0 +1,61 @@ +/* + * SPDX-FileCopyrightText: syuilo and other misskey contributors + * SPDX-License-Identifier: AGPL-3.0-only + */ + +import { Inject, Injectable } from '@nestjs/common'; +import { Endpoint } from '@/server/api/endpoint-base.js'; +import type { UserProfilesRepository } from '@/models/_.js'; +import { DI } from '@/di-symbols.js'; +import { UserEntityService } from '@/core/entities/UserEntityService.js'; +import { ApiError } from '@/server/api/error.js'; + +export const meta = { + tags: ['admin'], + + requireCredential: true, + requireAdmin: true, + + errors: { + userNotFound: { + message: 'No such user who has the email address.', + code: 'USER_NOT_FOUND', + id: 'cb865949-8af5-4062-a88c-ef55e8786d1d', + }, + }, +} as const; + +export const paramDef = { + type: 'object', + properties: { + email: { type: 'string' }, + }, + required: ['email'], +} as const; + +@Injectable() +export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-disable-line import/no-default-export + constructor( + @Inject(DI.userProfilesRepository) + private userProfilesRepository: UserProfilesRepository, + + private userEntityService: UserEntityService, + ) { + super(meta, paramDef, async (ps, me) => { + const profile = await this.userProfilesRepository.findOne({ + where: { email: ps.email }, + relations: ['user'], + }); + + if (profile == null) { + throw new ApiError(meta.errors.userNotFound); + } + + const res = await this.userEntityService.pack(profile.user!, null, { + detail: true, + }); + + return res; + }); + } +} diff --git a/packages/backend/src/server/api/endpoints/admin/meta.ts b/packages/backend/src/server/api/endpoints/admin/meta.ts index 63491638c8c3cd5f79293f265bcaaad95eec16f0..b1ba1633c9527e2924bcdbede88ed75e6c0b87e7 100644 --- a/packages/backend/src/server/api/endpoints/admin/meta.ts +++ b/packages/backend/src/server/api/endpoints/admin/meta.ts @@ -307,6 +307,10 @@ export const meta = { type: 'boolean', optional: false, nullable: false, }, + enableFanoutTimelineDbFallback: { + type: 'boolean', + optional: false, nullable: false, + }, perLocalUserUserTimelineCacheMax: { type: 'number', optional: false, nullable: false, @@ -440,6 +444,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint- policies: { ...DEFAULT_POLICIES, ...instance.policies }, manifestJsonOverride: instance.manifestJsonOverride, enableFanoutTimeline: instance.enableFanoutTimeline, + enableFanoutTimelineDbFallback: instance.enableFanoutTimelineDbFallback, perLocalUserUserTimelineCacheMax: instance.perLocalUserUserTimelineCacheMax, perRemoteUserUserTimelineCacheMax: instance.perRemoteUserUserTimelineCacheMax, perUserHomeTimelineCacheMax: instance.perUserHomeTimelineCacheMax, diff --git a/packages/backend/src/server/api/endpoints/admin/update-meta.ts b/packages/backend/src/server/api/endpoints/admin/update-meta.ts index e58123f2bfd14c7990fd679efc32f151c007cc10..e1a1f3acb3089a84fd8777af2347e005da65fa53 100644 --- a/packages/backend/src/server/api/endpoints/admin/update-meta.ts +++ b/packages/backend/src/server/api/endpoints/admin/update-meta.ts @@ -125,6 +125,7 @@ export const paramDef = { preservedUsernames: { type: 'array', items: { type: 'string' } }, manifestJsonOverride: { type: 'string' }, enableFanoutTimeline: { type: 'boolean' }, + enableFanoutTimelineDbFallback: { type: 'boolean' }, perLocalUserUserTimelineCacheMax: { type: 'integer' }, perRemoteUserUserTimelineCacheMax: { type: 'integer' }, perUserHomeTimelineCacheMax: { type: 'integer' }, @@ -489,6 +490,10 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint- set.enableFanoutTimeline = ps.enableFanoutTimeline; } + if (ps.enableFanoutTimelineDbFallback !== undefined) { + set.enableFanoutTimelineDbFallback = ps.enableFanoutTimelineDbFallback; + } + if (ps.perLocalUserUserTimelineCacheMax !== undefined) { set.perLocalUserUserTimelineCacheMax = ps.perLocalUserUserTimelineCacheMax; } diff --git a/packages/backend/src/server/api/endpoints/i/update.ts b/packages/backend/src/server/api/endpoints/i/update.ts index 394a122169c5d9a12530b90b5d20341e6e3a1c39..63f9991b2205cb66804dcddc5582ec14bbc88ce6 100644 --- a/packages/backend/src/server/api/endpoints/i/update.ts +++ b/packages/backend/src/server/api/endpoints/i/update.ts @@ -411,16 +411,26 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint- const newName = updates.name === undefined ? user.name : updates.name; const newDescription = profileUpdates.description === undefined ? profile.description : profileUpdates.description; + const newFields = profileUpdates.fields === undefined ? profile.fields : profileUpdates.fields; if (newName != null) { const tokens = mfm.parseSimple(newName); - emojis = emojis.concat(extractCustomEmojisFromMfm(tokens!)); + emojis = emojis.concat(extractCustomEmojisFromMfm(tokens)); } if (newDescription != null) { const tokens = mfm.parse(newDescription); - emojis = emojis.concat(extractCustomEmojisFromMfm(tokens!)); - tags = extractHashtags(tokens!).map(tag => normalizeForSearch(tag)).splice(0, 32); + emojis = emojis.concat(extractCustomEmojisFromMfm(tokens)); + tags = extractHashtags(tokens).map(tag => normalizeForSearch(tag)).splice(0, 32); + } + + for (const field of newFields) { + const nameTokens = mfm.parseSimple(field.name); + const valueTokens = mfm.parseSimple(field.value); + emojis = emojis.concat([ + ...extractCustomEmojisFromMfm(nameTokens), + ...extractCustomEmojisFromMfm(valueTokens), + ]); } updates.emojis = emojis; diff --git a/packages/backend/src/server/api/endpoints/notes/create.ts b/packages/backend/src/server/api/endpoints/notes/create.ts index df02d3acb7e9465fd7924bb9c16262185231f872..513b77b98a59a1047b30e07b27b37d0a084186ad 100644 --- a/packages/backend/src/server/api/endpoints/notes/create.ts +++ b/packages/backend/src/server/api/endpoints/notes/create.ts @@ -70,6 +70,12 @@ export const meta = { id: '749ee0f6-d3da-459a-bf02-282e2da4292c', }, + cannotReplyToInvisibleNote: { + message: 'You cannot reply to an invisible Note.', + code: 'CANNOT_REPLY_TO_AN_INVISIBLE_NOTE', + id: 'b98980fa-3780-406c-a935-b6d0eeee10d1', + }, + cannotReplyToPureRenote: { message: 'You can not reply to a pure Renote.', code: 'CANNOT_REPLY_TO_A_PURE_RENOTE', @@ -276,6 +282,8 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint- throw new ApiError(meta.errors.noSuchReplyTarget); } else if (isPureRenote(reply)) { throw new ApiError(meta.errors.cannotReplyToPureRenote); + } else if (!await this.noteEntityService.isVisibleForMe(reply, me.id)) { + throw new ApiError(meta.errors.cannotReplyToInvisibleNote); } // Check blocking diff --git a/packages/backend/src/server/api/endpoints/notes/hybrid-timeline.ts b/packages/backend/src/server/api/endpoints/notes/hybrid-timeline.ts index 47dda846a7970cad33c91c4905ec7e70845b44bc..767c31d434a73fce509062705c05ef371a3e8fdf 100644 --- a/packages/backend/src/server/api/endpoints/notes/hybrid-timeline.ts +++ b/packages/backend/src/server/api/endpoints/notes/hybrid-timeline.ts @@ -94,88 +94,103 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint- const serverSettings = await this.metaService.fetch(); - if (serverSettings.enableFanoutTimeline) { - const [ - userIdsWhoMeMuting, - userIdsWhoMeMutingRenotes, - userIdsWhoBlockingMe, - ] = await Promise.all([ - this.cacheService.userMutingsCache.fetch(me.id), - this.cacheService.renoteMutingsCache.fetch(me.id), - this.cacheService.userBlockedCache.fetch(me.id), - ]); - - let noteIds: string[]; - let shouldFallbackToDb = false; - - if (ps.withFiles) { - const [htlNoteIds, ltlNoteIds] = await this.funoutTimelineService.getMulti([ - `homeTimelineWithFiles:${me.id}`, - 'localTimelineWithFiles', - ], untilId, sinceId); - noteIds = Array.from(new Set([...htlNoteIds, ...ltlNoteIds])); - } else if (ps.withReplies) { - const [htlNoteIds, ltlNoteIds, ltlReplyNoteIds] = await this.funoutTimelineService.getMulti([ - `homeTimeline:${me.id}`, - 'localTimeline', - 'localTimelineWithReplies', - ], untilId, sinceId); - noteIds = Array.from(new Set([...htlNoteIds, ...ltlNoteIds, ...ltlReplyNoteIds])); - } else { - const [htlNoteIds, ltlNoteIds] = await this.funoutTimelineService.getMulti([ - `homeTimeline:${me.id}`, - 'localTimeline', - ], untilId, sinceId); - noteIds = Array.from(new Set([...htlNoteIds, ...ltlNoteIds])); - shouldFallbackToDb = htlNoteIds.length === 0; - } + if (!serverSettings.enableFanoutTimeline) { + return await this.getFromDb({ + untilId, + sinceId, + limit: ps.limit, + includeMyRenotes: ps.includeMyRenotes, + includeRenotedMyNotes: ps.includeRenotedMyNotes, + includeLocalRenotes: ps.includeLocalRenotes, + withFiles: ps.withFiles, + withReplies: ps.withReplies, + withBots: ps.withBots, + }, me); + } - noteIds.sort((a, b) => a > b ? -1 : 1); - noteIds = noteIds.slice(0, ps.limit); + const [ + userIdsWhoMeMuting, + userIdsWhoMeMutingRenotes, + userIdsWhoBlockingMe, + ] = await Promise.all([ + this.cacheService.userMutingsCache.fetch(me.id), + this.cacheService.renoteMutingsCache.fetch(me.id), + this.cacheService.userBlockedCache.fetch(me.id), + ]); + + let noteIds: string[]; + let shouldFallbackToDb = false; + + if (ps.withFiles) { + const [htlNoteIds, ltlNoteIds] = await this.funoutTimelineService.getMulti([ + `homeTimelineWithFiles:${me.id}`, + 'localTimelineWithFiles', + ], untilId, sinceId); + noteIds = Array.from(new Set([...htlNoteIds, ...ltlNoteIds])); + } else if (ps.withReplies) { + const [htlNoteIds, ltlNoteIds, ltlReplyNoteIds] = await this.funoutTimelineService.getMulti([ + `homeTimeline:${me.id}`, + 'localTimeline', + 'localTimelineWithReplies', + ], untilId, sinceId); + noteIds = Array.from(new Set([...htlNoteIds, ...ltlNoteIds, ...ltlReplyNoteIds])); + } else { + const [htlNoteIds, ltlNoteIds] = await this.funoutTimelineService.getMulti([ + `homeTimeline:${me.id}`, + 'localTimeline', + ], untilId, sinceId); + noteIds = Array.from(new Set([...htlNoteIds, ...ltlNoteIds])); + shouldFallbackToDb = htlNoteIds.length === 0; + } - shouldFallbackToDb = shouldFallbackToDb || (noteIds.length === 0); + noteIds.sort((a, b) => a > b ? -1 : 1); + noteIds = noteIds.slice(0, ps.limit); - let redisTimeline: MiNote[] = []; + shouldFallbackToDb = shouldFallbackToDb || (noteIds.length === 0); - if (!shouldFallbackToDb) { - const query = this.notesRepository.createQueryBuilder('note') - .where('note.id IN (:...noteIds)', { noteIds: noteIds }) - .innerJoinAndSelect('note.user', 'user') - .leftJoinAndSelect('note.reply', 'reply') - .leftJoinAndSelect('note.renote', 'renote') - .leftJoinAndSelect('reply.user', 'replyUser') - .leftJoinAndSelect('renote.user', 'renoteUser') - .leftJoinAndSelect('note.channel', 'channel'); + let redisTimeline: MiNote[] = []; - redisTimeline = await query.getMany(); + if (!shouldFallbackToDb) { + const query = this.notesRepository.createQueryBuilder('note') + .where('note.id IN (:...noteIds)', { noteIds: noteIds }) + .innerJoinAndSelect('note.user', 'user') + .leftJoinAndSelect('note.reply', 'reply') + .leftJoinAndSelect('note.renote', 'renote') + .leftJoinAndSelect('reply.user', 'replyUser') + .leftJoinAndSelect('renote.user', 'renoteUser') + .leftJoinAndSelect('note.channel', 'channel'); - redisTimeline = redisTimeline.filter(note => { - if (note.userId === me.id) { - return true; - } - if (isUserRelated(note, userIdsWhoBlockingMe)) return false; - if (isUserRelated(note, userIdsWhoMeMuting)) return false; - if (note.renoteId) { - if (note.text == null && note.fileIds.length === 0 && !note.hasPoll) { - if (isUserRelated(note, userIdsWhoMeMutingRenotes)) return false; - if (ps.withRenotes === false) return false; - } - } - if (!ps.withBots && note.user?.isBot) return false; + redisTimeline = await query.getMany(); + redisTimeline = redisTimeline.filter(note => { + if (note.userId === me.id) { return true; - }); + } + if (isUserRelated(note, userIdsWhoBlockingMe)) return false; + if (isUserRelated(note, userIdsWhoMeMuting)) return false; + if (note.renoteId) { + if (note.text == null && note.fileIds.length === 0 && !note.hasPoll) { + if (isUserRelated(note, userIdsWhoMeMutingRenotes)) return false; + if (ps.withRenotes === false) return false; + } + } - redisTimeline.sort((a, b) => a.id > b.id ? -1 : 1); - } + if (!ps.withBots && note.user?.isBot) return false; + + return true; + }); - if (redisTimeline.length > 0) { - process.nextTick(() => { - this.activeUsersChart.read(me); - }); + redisTimeline.sort((a, b) => a.id > b.id ? -1 : 1); + } - return await this.noteEntityService.packMany(redisTimeline, me); - } else { // fallback to db + if (redisTimeline.length > 0) { + process.nextTick(() => { + this.activeUsersChart.read(me); + }); + + return await this.noteEntityService.packMany(redisTimeline, me); + } else { + if (serverSettings.enableFanoutTimelineDbFallback) { // fallback to db return await this.getFromDb({ untilId, sinceId, @@ -187,19 +202,9 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint- withReplies: ps.withReplies, withBots: ps.withBots, }, me); + } else { + return []; } - } else { - return await this.getFromDb({ - untilId, - sinceId, - limit: ps.limit, - includeMyRenotes: ps.includeMyRenotes, - includeRenotedMyNotes: ps.includeRenotedMyNotes, - includeLocalRenotes: ps.includeLocalRenotes, - withFiles: ps.withFiles, - withReplies: ps.withReplies, - withBots: ps.withBots, - }, me); } }); } diff --git a/packages/backend/src/server/api/endpoints/notes/local-timeline.ts b/packages/backend/src/server/api/endpoints/notes/local-timeline.ts index dec34860b5de16bb9c5cf60a0bc67503832af90d..73566aa45d0a25ad59fec8bd0ed497e0eef74e02 100644 --- a/packages/backend/src/server/api/endpoints/notes/local-timeline.ts +++ b/packages/backend/src/server/api/endpoints/notes/local-timeline.ts @@ -85,76 +85,87 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint- const serverSettings = await this.metaService.fetch(); - if (serverSettings.enableFanoutTimeline) { - const [ - userIdsWhoMeMuting, - userIdsWhoMeMutingRenotes, - userIdsWhoBlockingMe, - ] = me ? await Promise.all([ - this.cacheService.userMutingsCache.fetch(me.id), - this.cacheService.renoteMutingsCache.fetch(me.id), - this.cacheService.userBlockedCache.fetch(me.id), - ]) : [new Set<string>(), new Set<string>(), new Set<string>()]; - - let noteIds: string[]; - - if (ps.withFiles) { - noteIds = await this.funoutTimelineService.get('localTimelineWithFiles', untilId, sinceId); - } else { - const [nonReplyNoteIds, replyNoteIds] = await this.funoutTimelineService.getMulti([ - 'localTimeline', - 'localTimelineWithReplies', - ], untilId, sinceId); - noteIds = Array.from(new Set([...nonReplyNoteIds, ...replyNoteIds])); - noteIds.sort((a, b) => a > b ? -1 : 1); - } + if (!serverSettings.enableFanoutTimeline) { + return await this.getFromDb({ + untilId, + sinceId, + limit: ps.limit, + withFiles: ps.withFiles, + withReplies: ps.withReplies, + withBots: ps.withBots, + }, me); + } - noteIds = noteIds.slice(0, ps.limit); + const [ + userIdsWhoMeMuting, + userIdsWhoMeMutingRenotes, + userIdsWhoBlockingMe, + ] = me ? await Promise.all([ + this.cacheService.userMutingsCache.fetch(me.id), + this.cacheService.renoteMutingsCache.fetch(me.id), + this.cacheService.userBlockedCache.fetch(me.id), + ]) : [new Set<string>(), new Set<string>(), new Set<string>()]; - let redisTimeline: MiNote[] = []; + let noteIds: string[]; - if (noteIds.length > 0) { - const query = this.notesRepository.createQueryBuilder('note') - .where('note.id IN (:...noteIds)', { noteIds: noteIds }) - .innerJoinAndSelect('note.user', 'user') - .leftJoinAndSelect('note.reply', 'reply') - .leftJoinAndSelect('note.renote', 'renote') - .leftJoinAndSelect('reply.user', 'replyUser') - .leftJoinAndSelect('renote.user', 'renoteUser') - .leftJoinAndSelect('note.channel', 'channel'); + if (ps.withFiles) { + noteIds = await this.funoutTimelineService.get('localTimelineWithFiles', untilId, sinceId); + } else { + const [nonReplyNoteIds, replyNoteIds] = await this.funoutTimelineService.getMulti([ + 'localTimeline', + 'localTimelineWithReplies', + ], untilId, sinceId); + noteIds = Array.from(new Set([...nonReplyNoteIds, ...replyNoteIds])); + noteIds.sort((a, b) => a > b ? -1 : 1); + } - redisTimeline = await query.getMany(); + noteIds = noteIds.slice(0, ps.limit); - redisTimeline = redisTimeline.filter(note => { - if (me && (note.userId === me.id)) { - return true; - } - if (!ps.withReplies && note.replyId && note.replyUserId !== note.userId && (me == null || note.replyUserId !== me.id)) return false; - if (!ps.withBots && note.user?.isBot) return false; - if (me && isUserRelated(note, userIdsWhoBlockingMe)) return false; - if (me && isUserRelated(note, userIdsWhoMeMuting)) return false; - if (note.renoteId) { - if (note.text == null && note.fileIds.length === 0 && !note.hasPoll) { - if (me && isUserRelated(note, userIdsWhoMeMutingRenotes)) return false; - if (ps.withRenotes === false) return false; - } - } + let redisTimeline: MiNote[] = []; - return true; - }); + if (noteIds.length > 0) { + const query = this.notesRepository.createQueryBuilder('note') + .where('note.id IN (:...noteIds)', { noteIds: noteIds }) + .innerJoinAndSelect('note.user', 'user') + .leftJoinAndSelect('note.reply', 'reply') + .leftJoinAndSelect('note.renote', 'renote') + .leftJoinAndSelect('reply.user', 'replyUser') + .leftJoinAndSelect('renote.user', 'renoteUser') + .leftJoinAndSelect('note.channel', 'channel'); - redisTimeline.sort((a, b) => a.id > b.id ? -1 : 1); - } + redisTimeline = await query.getMany(); - if (redisTimeline.length > 0) { - process.nextTick(() => { - if (me) { - this.activeUsersChart.read(me); + redisTimeline = redisTimeline.filter(note => { + if (me && (note.userId === me.id)) { + return true; + } + if (!ps.withReplies && note.replyId && note.replyUserId !== note.userId && (me == null || note.replyUserId !== me.id)) return false; + if (!ps.withBots && note.user?.isBot) return false; + if (me && isUserRelated(note, userIdsWhoBlockingMe)) return false; + if (me && isUserRelated(note, userIdsWhoMeMuting)) return false; + if (note.renoteId) { + if (note.text == null && note.fileIds.length === 0 && !note.hasPoll) { + if (me && isUserRelated(note, userIdsWhoMeMutingRenotes)) return false; + if (ps.withRenotes === false) return false; } - }); + } + + return true; + }); + + redisTimeline.sort((a, b) => a.id > b.id ? -1 : 1); + } - return await this.noteEntityService.packMany(redisTimeline, me); - } else { // fallback to db + if (redisTimeline.length > 0) { + process.nextTick(() => { + if (me) { + this.activeUsersChart.read(me); + } + }); + + return await this.noteEntityService.packMany(redisTimeline, me); + } else { + if (serverSettings.enableFanoutTimelineDbFallback) { // fallback to db return await this.getFromDb({ untilId, sinceId, @@ -163,16 +174,9 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint- withReplies: ps.withReplies, withBots: ps.withBots, }, me); + } else { + return []; } - } else { - return await this.getFromDb({ - untilId, - sinceId, - limit: ps.limit, - withFiles: ps.withFiles, - withReplies: ps.withReplies, - withBots: ps.withBots, - }, me); } }); } @@ -187,7 +191,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint- }, me: MiLocalUser | null) { const query = this.queryService.makePaginationQuery(this.notesRepository.createQueryBuilder('note'), ps.sinceId, ps.untilId) - .andWhere('(note.visibility = \'public\') AND (note.userHost IS NULL)') + .andWhere('(note.visibility = \'public\') AND (note.userHost IS NULL) AND (note.channelId IS NULL)') .innerJoinAndSelect('note.user', 'user') .leftJoinAndSelect('note.reply', 'reply') .leftJoinAndSelect('note.renote', 'renote') diff --git a/packages/backend/src/server/api/endpoints/notes/timeline.ts b/packages/backend/src/server/api/endpoints/notes/timeline.ts index e58e5249880230da9ad73aaf5a8440634c5e0c01..036993508f979bffae8017da13ca0e7a7755a79a 100644 --- a/packages/backend/src/server/api/endpoints/notes/timeline.ts +++ b/packages/backend/src/server/api/endpoints/notes/timeline.ts @@ -77,66 +77,80 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint- const serverSettings = await this.metaService.fetch(); - if (serverSettings.enableFanoutTimeline) { - const [ - followings, - userIdsWhoMeMuting, - userIdsWhoMeMutingRenotes, - userIdsWhoBlockingMe, - ] = await Promise.all([ - this.cacheService.userFollowingsCache.fetch(me.id), - this.cacheService.userMutingsCache.fetch(me.id), - this.cacheService.renoteMutingsCache.fetch(me.id), - this.cacheService.userBlockedCache.fetch(me.id), - ]); - - let noteIds = await this.funoutTimelineService.get(ps.withFiles ? `homeTimelineWithFiles:${me.id}` : `homeTimeline:${me.id}`, untilId, sinceId); - noteIds = noteIds.slice(0, ps.limit); - - let redisTimeline: MiNote[] = []; - - if (noteIds.length > 0) { - const query = this.notesRepository.createQueryBuilder('note') - .where('note.id IN (:...noteIds)', { noteIds: noteIds }) - .innerJoinAndSelect('note.user', 'user') - .leftJoinAndSelect('note.reply', 'reply') - .leftJoinAndSelect('note.renote', 'renote') - .leftJoinAndSelect('reply.user', 'replyUser') - .leftJoinAndSelect('renote.user', 'renoteUser') - .leftJoinAndSelect('note.channel', 'channel'); - - redisTimeline = await query.getMany(); - - redisTimeline = redisTimeline.filter(note => { - if (note.userId === me.id) { - return true; - } - if (isUserRelated(note, userIdsWhoBlockingMe)) return false; - if (isUserRelated(note, userIdsWhoMeMuting)) return false; - if (note.renoteId) { - if (note.text == null && note.fileIds.length === 0 && !note.hasPoll) { - if (isUserRelated(note, userIdsWhoMeMutingRenotes)) return false; - if (ps.withRenotes === false) return false; - } - } - if (note.reply && note.reply.visibility === 'followers') { - if (!Object.hasOwn(followings, note.reply.userId)) return false; - } - if (!ps.withBots && note.user?.isBot) return false; + if (!serverSettings.enableFanoutTimeline) { + return await this.getFromDb({ + untilId, + sinceId, + limit: ps.limit, + includeMyRenotes: ps.includeMyRenotes, + includeRenotedMyNotes: ps.includeRenotedMyNotes, + includeLocalRenotes: ps.includeLocalRenotes, + withFiles: ps.withFiles, + withRenotes: ps.withRenotes, + withBots: ps.withBots, + }, me); + } + const [ + followings, + userIdsWhoMeMuting, + userIdsWhoMeMutingRenotes, + userIdsWhoBlockingMe, + ] = await Promise.all([ + this.cacheService.userFollowingsCache.fetch(me.id), + this.cacheService.userMutingsCache.fetch(me.id), + this.cacheService.renoteMutingsCache.fetch(me.id), + this.cacheService.userBlockedCache.fetch(me.id), + ]); + + let noteIds = await this.funoutTimelineService.get(ps.withFiles ? `homeTimelineWithFiles:${me.id}` : `homeTimeline:${me.id}`, untilId, sinceId); + noteIds = noteIds.slice(0, ps.limit); + + let redisTimeline: MiNote[] = []; + + if (noteIds.length > 0) { + const query = this.notesRepository.createQueryBuilder('note') + .where('note.id IN (:...noteIds)', { noteIds: noteIds }) + .innerJoinAndSelect('note.user', 'user') + .leftJoinAndSelect('note.reply', 'reply') + .leftJoinAndSelect('note.renote', 'renote') + .leftJoinAndSelect('reply.user', 'replyUser') + .leftJoinAndSelect('renote.user', 'renoteUser') + .leftJoinAndSelect('note.channel', 'channel'); + + redisTimeline = await query.getMany(); + + redisTimeline = redisTimeline.filter(note => { + if (note.userId === me.id) { return true; - }); + } + if (isUserRelated(note, userIdsWhoBlockingMe)) return false; + if (isUserRelated(note, userIdsWhoMeMuting)) return false; + if (note.renoteId) { + if (note.text == null && note.fileIds.length === 0 && !note.hasPoll) { + if (isUserRelated(note, userIdsWhoMeMutingRenotes)) return false; + if (ps.withRenotes === false) return false; + } + } + if (note.reply && note.reply.visibility === 'followers') { + if (!Object.hasOwn(followings, note.reply.userId)) return false; + } + if (!ps.withBots && note.user?.isBot) return false; - redisTimeline.sort((a, b) => a.id > b.id ? -1 : 1); - } + return true; + }); + + redisTimeline.sort((a, b) => a.id > b.id ? -1 : 1); + } - if (redisTimeline.length > 0) { - process.nextTick(() => { - this.activeUsersChart.read(me); - }); + if (redisTimeline.length > 0) { + process.nextTick(() => { + this.activeUsersChart.read(me); + }); - return await this.noteEntityService.packMany(redisTimeline, me); - } else { // fallback to db + return await this.noteEntityService.packMany(redisTimeline, me); + } else { + if (serverSettings.enableFanoutTimelineDbFallback) { // fallback to db return await this.getFromDb({ untilId, sinceId, @@ -148,19 +162,9 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint- withRenotes: ps.withRenotes, withBots: ps.withBots, }, me); + } else { + return []; } - } else { - return await this.getFromDb({ - untilId, - sinceId, - limit: ps.limit, - includeMyRenotes: ps.includeMyRenotes, - includeRenotedMyNotes: ps.includeRenotedMyNotes, - includeLocalRenotes: ps.includeLocalRenotes, - withFiles: ps.withFiles, - withRenotes: ps.withRenotes, - withBots: ps.withBots, - }, me); } }); } diff --git a/packages/backend/src/server/api/endpoints/notes/user-list-timeline.ts b/packages/backend/src/server/api/endpoints/notes/user-list-timeline.ts index 9ead1410c25d2f1fc7396689fec4c84ffc689b64..dbc3875597a1830d8a123512f8c33d09ec9a1175 100644 --- a/packages/backend/src/server/api/endpoints/notes/user-list-timeline.ts +++ b/packages/backend/src/server/api/endpoints/notes/user-list-timeline.ts @@ -4,7 +4,8 @@ */ import { Inject, Injectable } from '@nestjs/common'; -import type { MiNote, NotesRepository, UserListMembershipsRepository, UserListsRepository } from '@/models/_.js'; +import { Brackets } from 'typeorm'; +import type { MiNote, MiUserList, NotesRepository, UserListMembershipsRepository, UserListsRepository } from '@/models/_.js'; import { Endpoint } from '@/server/api/endpoint-base.js'; import { NoteEntityService } from '@/core/entities/NoteEntityService.js'; import ActiveUsersChart from '@/core/chart/charts/active-users.js'; @@ -14,8 +15,9 @@ import { IdService } from '@/core/IdService.js'; import { isUserRelated } from '@/misc/is-user-related.js'; import { FunoutTimelineService } from '@/core/FunoutTimelineService.js'; import { QueryService } from '@/core/QueryService.js'; +import { MiLocalUser } from '@/models/User.js'; +import { MetaService } from '@/core/MetaService.js'; import { ApiError } from '../../error.js'; -import { Brackets } from 'typeorm'; export const meta = { tags: ['notes', 'lists'], @@ -81,7 +83,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint- private idService: IdService, private funoutTimelineService: FunoutTimelineService, private queryService: QueryService, - + private metaService: MetaService, ) { super(meta, paramDef, async (ps, me) => { const untilId = ps.untilId ?? (ps.untilDate ? this.idService.gen(ps.untilDate!) : null); @@ -96,6 +98,21 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint- throw new ApiError(meta.errors.noSuchList); } + const serverSettings = await this.metaService.fetch(); + + if (!serverSettings.enableFanoutTimeline) { + return await this.getFromDb(list, { + untilId, + sinceId, + limit: ps.limit, + includeMyRenotes: ps.includeMyRenotes, + includeRenotedMyNotes: ps.includeRenotedMyNotes, + includeLocalRenotes: ps.includeLocalRenotes, + withFiles: ps.withFiles, + withRenotes: ps.withRenotes, + }, me); + } + const [ userIdsWhoMeMuting, userIdsWhoMeMutingRenotes, @@ -145,93 +162,119 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint- if (redisTimeline.length > 0) { this.activeUsersChart.read(me); return await this.noteEntityService.packMany(redisTimeline, me); - } else { // fallback to db - //#region Construct query - const query = this.queryService.makePaginationQuery(this.notesRepository.createQueryBuilder('note'), ps.sinceId, ps.untilId) - .innerJoin(this.userListMembershipsRepository.metadata.targetName, 'userListMemberships', 'userListMemberships.userId = note.userId') - .innerJoinAndSelect('note.user', 'user') - .leftJoinAndSelect('note.reply', 'reply') - .leftJoinAndSelect('note.renote', 'renote') - .leftJoinAndSelect('reply.user', 'replyUser') - .leftJoinAndSelect('renote.user', 'renoteUser') - .andWhere('userListMemberships.userListId = :userListId', { userListId: list.id }) - .andWhere('note.channelId IS NULL') // ãƒãƒ£ãƒ³ãƒãƒ«ãƒŽãƒ¼ãƒˆã§ã¯ãªã„ - .andWhere(new Brackets(qb => { - qb - .where('note.replyId IS NULL') // 返信ã§ã¯ãªã„ - .orWhere(new Brackets(qb => { - qb // 返信ã ã‘ã©æŠ•ç¨¿è€…自身ã¸ã®è¿”ä¿¡ - .where('note.replyId IS NOT NULL') - .andWhere('note.replyUserId = note.userId'); - })) - .orWhere(new Brackets(qb => { - qb // 返信ã ã‘ã©è‡ªåˆ†å®›ã¦ã®è¿”ä¿¡ - .where('note.replyId IS NOT NULL') - .andWhere('note.replyUserId = :meId', { meId: me.id }); - })) - .orWhere(new Brackets(qb => { - qb // 返信ã ã‘ã©withRepliesãŒtrueã®å ´åˆ - .where('note.replyId IS NOT NULL') - .andWhere('userListMemberships.withReplies = true'); - })); - })); - - this.queryService.generateVisibilityQuery(query, me); - this.queryService.generateMutedUserQuery(query, me); - this.queryService.generateBlockedUserQuery(query, me); - this.queryService.generateMutedUserRenotesQueryForNotes(query, me); - - if (ps.includeMyRenotes === false) { - query.andWhere(new Brackets(qb => { - qb.orWhere('note.userId != :meId', { meId: me.id }); - qb.orWhere('note.renoteId IS NULL'); - qb.orWhere('note.text IS NOT NULL'); - qb.orWhere('note.fileIds != \'{}\''); - qb.orWhere('0 < (SELECT COUNT(*) FROM poll WHERE poll."noteId" = note.id)'); - })); + } else { + if (serverSettings.enableFanoutTimelineDbFallback) { // fallback to db + return await this.getFromDb(list, { + untilId, + sinceId, + limit: ps.limit, + includeMyRenotes: ps.includeMyRenotes, + includeRenotedMyNotes: ps.includeRenotedMyNotes, + includeLocalRenotes: ps.includeLocalRenotes, + withFiles: ps.withFiles, + withRenotes: ps.withRenotes, + }, me); + } else { + return []; } + } + }); + } - if (ps.includeRenotedMyNotes === false) { - query.andWhere(new Brackets(qb => { - qb.orWhere('note.renoteUserId != :meId', { meId: me.id }); - qb.orWhere('note.renoteId IS NULL'); - qb.orWhere('note.text IS NOT NULL'); - qb.orWhere('note.fileIds != \'{}\''); - qb.orWhere('0 < (SELECT COUNT(*) FROM poll WHERE poll."noteId" = note.id)'); + private async getFromDb(list: MiUserList, ps: { + untilId: string | null, + sinceId: string | null, + limit: number, + includeMyRenotes: boolean, + includeRenotedMyNotes: boolean, + includeLocalRenotes: boolean, + withFiles: boolean, + withRenotes: boolean, + }, me: MiLocalUser) { + //#region Construct query + const query = this.queryService.makePaginationQuery(this.notesRepository.createQueryBuilder('note'), ps.sinceId, ps.untilId) + .innerJoin(this.userListMembershipsRepository.metadata.targetName, 'userListMemberships', 'userListMemberships.userId = note.userId') + .innerJoinAndSelect('note.user', 'user') + .leftJoinAndSelect('note.reply', 'reply') + .leftJoinAndSelect('note.renote', 'renote') + .leftJoinAndSelect('reply.user', 'replyUser') + .leftJoinAndSelect('renote.user', 'renoteUser') + .andWhere('userListMemberships.userListId = :userListId', { userListId: list.id }) + .andWhere('note.channelId IS NULL') // ãƒãƒ£ãƒ³ãƒãƒ«ãƒŽãƒ¼ãƒˆã§ã¯ãªã„ + .andWhere(new Brackets(qb => { + qb + .where('note.replyId IS NULL') // 返信ã§ã¯ãªã„ + .orWhere(new Brackets(qb => { + qb // 返信ã ã‘ã©æŠ•ç¨¿è€…自身ã¸ã®è¿”ä¿¡ + .where('note.replyId IS NOT NULL') + .andWhere('note.replyUserId = note.userId'); + })) + .orWhere(new Brackets(qb => { + qb // 返信ã ã‘ã©è‡ªåˆ†å®›ã¦ã®è¿”ä¿¡ + .where('note.replyId IS NOT NULL') + .andWhere('note.replyUserId = :meId', { meId: me.id }); + })) + .orWhere(new Brackets(qb => { + qb // 返信ã ã‘ã©withRepliesãŒtrueã®å ´åˆ + .where('note.replyId IS NOT NULL') + .andWhere('userListMemberships.withReplies = true'); })); - } + })); - if (ps.includeLocalRenotes === false) { - query.andWhere(new Brackets(qb => { - qb.orWhere('note.renoteUserHost IS NOT NULL'); - qb.orWhere('note.renoteId IS NULL'); - qb.orWhere('note.text IS NOT NULL'); - qb.orWhere('note.fileIds != \'{}\''); - qb.orWhere('0 < (SELECT COUNT(*) FROM poll WHERE poll."noteId" = note.id)'); - })); - } + this.queryService.generateVisibilityQuery(query, me); + this.queryService.generateMutedUserQuery(query, me); + this.queryService.generateBlockedUserQuery(query, me); + this.queryService.generateMutedUserRenotesQueryForNotes(query, me); - if (ps.withRenotes === false) { - query.andWhere(new Brackets(qb => { - qb.orWhere('note.renoteId IS NULL'); - qb.orWhere(new Brackets(qb => { - qb.orWhere('note.text IS NOT NULL'); - qb.orWhere('note.fileIds != \'{}\''); - })); - })); - } + if (ps.includeMyRenotes === false) { + query.andWhere(new Brackets(qb => { + qb.orWhere('note.userId != :meId', { meId: me.id }); + qb.orWhere('note.renoteId IS NULL'); + qb.orWhere('note.text IS NOT NULL'); + qb.orWhere('note.fileIds != \'{}\''); + qb.orWhere('0 < (SELECT COUNT(*) FROM poll WHERE poll."noteId" = note.id)'); + })); + } - if (ps.withFiles) { - query.andWhere('note.fileIds != \'{}\''); - } - //#endregion + if (ps.includeRenotedMyNotes === false) { + query.andWhere(new Brackets(qb => { + qb.orWhere('note.renoteUserId != :meId', { meId: me.id }); + qb.orWhere('note.renoteId IS NULL'); + qb.orWhere('note.text IS NOT NULL'); + qb.orWhere('note.fileIds != \'{}\''); + qb.orWhere('0 < (SELECT COUNT(*) FROM poll WHERE poll."noteId" = note.id)'); + })); + } - const timeline = await query.limit(ps.limit).getMany(); + if (ps.includeLocalRenotes === false) { + query.andWhere(new Brackets(qb => { + qb.orWhere('note.renoteUserHost IS NOT NULL'); + qb.orWhere('note.renoteId IS NULL'); + qb.orWhere('note.text IS NOT NULL'); + qb.orWhere('note.fileIds != \'{}\''); + qb.orWhere('0 < (SELECT COUNT(*) FROM poll WHERE poll."noteId" = note.id)'); + })); + } - this.activeUsersChart.read(me); + if (ps.withRenotes === false) { + query.andWhere(new Brackets(qb => { + qb.orWhere('note.renoteId IS NULL'); + qb.orWhere(new Brackets(qb => { + qb.orWhere('note.text IS NOT NULL'); + qb.orWhere('note.fileIds != \'{}\''); + })); + })); + } - return await this.noteEntityService.packMany(timeline, me); - } - }); + if (ps.withFiles) { + query.andWhere('note.fileIds != \'{}\''); + } + //#endregion + + const timeline = await query.limit(ps.limit).getMany(); + + this.activeUsersChart.read(me); + + return await this.noteEntityService.packMany(timeline, me); } } diff --git a/packages/backend/src/server/api/endpoints/users/notes.ts b/packages/backend/src/server/api/endpoints/users/notes.ts index a6455f8e96f9e0323e16763a741db5b80c0e8a75..c3d72c3ba82cd153edd4331174e2f39066f5dd11 100644 --- a/packages/backend/src/server/api/endpoints/users/notes.ts +++ b/packages/backend/src/server/api/endpoints/users/notes.ts @@ -51,7 +51,6 @@ export const paramDef = { untilId: { type: 'string', format: 'misskey:id' }, sinceDate: { type: 'integer' }, untilDate: { type: 'integer' }, - includeMyRenotes: { type: 'boolean', default: true }, withFiles: { type: 'boolean', default: false }, excludeNsfw: { type: 'boolean', default: false }, }, @@ -172,7 +171,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint- query.andWhere('note.fileIds != \'{}\''); } - if (ps.includeMyRenotes === false) { + if (ps.withRenotes === false) { query.andWhere(new Brackets(qb => { qb.orWhere('note.userId != :userId', { userId: ps.userId }); qb.orWhere('note.renoteId IS NULL'); diff --git a/packages/backend/src/server/api/stream/channels/local-timeline.ts b/packages/backend/src/server/api/stream/channels/local-timeline.ts index 388f4dc3618a372fe88f9c372b6aa16437010025..419159197ac6d23e395cde03775e3f411ab7b81d 100644 --- a/packages/backend/src/server/api/stream/channels/local-timeline.ts +++ b/packages/backend/src/server/api/stream/channels/local-timeline.ts @@ -55,7 +55,7 @@ class LocalTimelineChannel extends Channel { if (note.user.host !== null) return; if (note.visibility !== 'public') return; - if (note.channelId != null && !this.followingChannels.has(note.channelId)) return; + if (note.channelId != null) return; // 関係ãªã„返信ã¯é™¤å¤– if (note.reply && this.user && !this.following[note.userId]?.withReplies && !this.withReplies) { diff --git a/packages/backend/src/server/web/ClientServerService.ts b/packages/backend/src/server/web/ClientServerService.ts index b5ac5b0d0b483148e84698d38094720676ff1a13..eafcfdf8dd38ffe864ff707306248bc72d118f4d 100644 --- a/packages/backend/src/server/web/ClientServerService.ts +++ b/packages/backend/src/server/web/ClientServerService.ts @@ -175,6 +175,7 @@ export class ClientServerService { serverErrorImageUrl: meta.serverErrorImageUrl ?? 'https://launcher.moe/error.png', infoImageUrl: meta.infoImageUrl ?? 'https://launcher.moe/nothinghere.png', notFoundImageUrl: meta.notFoundImageUrl ?? 'https://launcher.moe/missingpage.webp', + instanceUrl: this.config.url, }; } diff --git a/packages/backend/src/server/web/views/base.pug b/packages/backend/src/server/web/views/base.pug index d81f8f8c0b0e2831286e0c4689af8e2ad28654ee..243d18202f5e3feeda8bb1a6d9e73f4a7bd9389b 100644 --- a/packages/backend/src/server/web/views/base.pug +++ b/packages/backend/src/server/web/views/base.pug @@ -30,6 +30,7 @@ html meta(name='theme-color' content= themeColor || '#86b300') meta(name='theme-color-orig' content= themeColor || '#86b300') meta(property='og:site_name' content= instanceName || 'Sharkey') + meta(property='instance_url' content= instanceUrl) meta(name='viewport' content='width=device-width, initial-scale=1') link(rel='icon' href= icon || '/favicon.ico') link(rel='apple-touch-icon' href= appleTouchIcon || '/apple-touch-icon.png') diff --git a/packages/backend/test/e2e/timelines.ts b/packages/backend/test/e2e/timelines.ts index 760bb8a574fe400df93f225eae980f3eb2ece97f..73c446444be474df63cd86a7ddddeb68fcc4758a 100644 --- a/packages/backend/test/e2e/timelines.ts +++ b/packages/backend/test/e2e/timelines.ts @@ -152,6 +152,7 @@ describe('Timelines', () => { await api('/following/create', { userId: bob.id }, alice); await api('/following/create', { userId: carol.id }, alice); + await api('/following/create', { userId: carol.id }, bob); await api('/following/update', { userId: bob.id, withReplies: true }, alice); await sleep(1000); const carolNote = await post(carol, { text: 'hi', visibility: 'followers' }); diff --git a/packages/backend/test/unit/activitypub.ts b/packages/backend/test/unit/activitypub.ts index 004759577c615fa7874e085a323975208eb62b3e..4b9b0cd3d1dccc7745403a829f84360fd9afabbb 100644 --- a/packages/backend/test/unit/activitypub.ts +++ b/packages/backend/test/unit/activitypub.ts @@ -94,6 +94,7 @@ describe('ActivityPub', () => { cacheRemoteFiles: true, cacheRemoteSensitiveFiles: true, enableFanoutTimeline: true, + enableFanoutTimelineDbFallback: true, perUserHomeTimelineCacheMax: 800, perLocalUserUserTimelineCacheMax: 800, perRemoteUserUserTimelineCacheMax: 800, diff --git a/packages/frontend/package.json b/packages/frontend/package.json index 7ea815cd3c197ea8b88d6c759915b07049cf1a1c..071a8cfa8cfd0eb3a23b62cd16be8608828f96e3 100644 --- a/packages/frontend/package.json +++ b/packages/frontend/package.json @@ -24,12 +24,12 @@ "@rollup/pluginutils": "5.0.5", "@syuilo/aiscript": "0.16.0", "@phosphor-icons/web": "^2.0.3", - "@vitejs/plugin-vue": "4.4.0", - "@vue-macros/reactivity-transform": "0.3.23", - "@vue/compiler-sfc": "3.3.7", + "@vitejs/plugin-vue": "4.5.0", + "@vue-macros/reactivity-transform": "0.4.0", + "@vue/compiler-sfc": "3.3.8", "astring": "1.8.6", "autosize": "6.0.1", - "aiscript-vscode": "github:aiscript-dev/aiscript-vscode#v0.0.5", + "aiscript-vscode": "github:aiscript-dev/aiscript-vscode#v0.0.6", "broadcast-channel": "6.0.0", "browser-image-resizer": "github:misskey-dev/browser-image-resizer#v2.2.1-misskey.3", "buraha": "0.0.1", @@ -39,7 +39,7 @@ "chartjs-chart-matrix": "2.0.1", "chartjs-plugin-gradient": "0.6.1", "chartjs-plugin-zoom": "2.0.1", - "chromatic": "7.6.0", + "chromatic": "9.0.0", "compare-versions": "6.1.0", "cropperjs": "2.0.0-beta.4", "date-fns": "2.30.0", @@ -57,7 +57,7 @@ "photoswipe": "5.4.2", "punycode": "2.3.1", "querystring": "0.2.1", - "rollup": "4.2.0", + "rollup": "4.4.1", "sanitize-html": "2.11.0", "shiki": "^0.14.5", "sass": "1.69.5", @@ -74,62 +74,62 @@ "v-code-diff": "1.7.2", "vanilla-tilt": "1.8.1", "vite": "4.5.0", - "vue": "3.3.7", + "vue": "3.3.8", "vuedraggable": "next" }, "devDependencies": { - "@storybook/addon-actions": "7.5.2", - "@storybook/addon-essentials": "7.5.2", - "@storybook/addon-interactions": "7.5.2", - "@storybook/addon-links": "7.5.2", - "@storybook/addon-storysource": "7.5.2", - "@storybook/addons": "7.5.2", - "@storybook/blocks": "7.5.2", - "@storybook/core-events": "7.5.2", + "@storybook/addon-actions": "7.5.3", + "@storybook/addon-essentials": "7.5.3", + "@storybook/addon-interactions": "7.5.3", + "@storybook/addon-links": "7.5.3", + "@storybook/addon-storysource": "7.5.3", + "@storybook/addons": "7.5.3", + "@storybook/blocks": "7.5.3", + "@storybook/core-events": "7.5.3", "@storybook/jest": "0.2.3", - "@storybook/manager-api": "7.5.2", - "@storybook/preview-api": "7.5.2", - "@storybook/react": "7.5.2", - "@storybook/react-vite": "7.5.2", + "@storybook/manager-api": "7.5.3", + "@storybook/preview-api": "7.5.3", + "@storybook/react": "7.5.3", + "@storybook/react-vite": "7.5.3", "@storybook/testing-library": "0.2.2", - "@storybook/theming": "7.5.2", - "@storybook/types": "7.5.2", - "@storybook/vue3": "7.5.2", - "@storybook/vue3-vite": "7.5.2", + "@storybook/theming": "7.5.3", + "@storybook/types": "7.5.3", + "@storybook/vue3": "7.5.3", + "@storybook/vue3-vite": "7.5.3", "@testing-library/vue": "8.0.0", - "@types/escape-regexp": "0.0.2", - "@types/estree": "1.0.4", - "@types/matter-js": "0.19.2", - "@types/micromatch": "4.0.4", - "@types/node": "20.8.10", - "@types/punycode": "2.1.1", - "@types/sanitize-html": "2.9.3", - "@types/throttle-debounce": "5.0.1", - "@types/tinycolor2": "1.4.5", - "@types/uuid": "9.0.6", - "@types/websocket": "1.0.8", - "@types/ws": "8.5.8", - "@typescript-eslint/eslint-plugin": "6.9.1", - "@typescript-eslint/parser": "6.9.1", + "@types/escape-regexp": "0.0.3", + "@types/estree": "1.0.5", + "@types/matter-js": "0.19.4", + "@types/micromatch": "4.0.5", + "@types/node": "20.9.1", + "@types/punycode": "2.1.2", + "@types/sanitize-html": "2.9.4", + "@types/throttle-debounce": "5.0.2", + "@types/tinycolor2": "1.4.6", + "@types/uuid": "9.0.7", + "@types/websocket": "1.0.9", + "@types/ws": "8.5.9", + "@typescript-eslint/eslint-plugin": "6.11.0", + "@typescript-eslint/parser": "6.11.0", "@vitest/coverage-v8": "0.34.6", - "@vue/runtime-core": "3.3.7", + "@vue/runtime-core": "3.3.8", "acorn": "8.11.2", "cross-env": "7.0.3", - "cypress": "13.4.0", - "eslint": "8.52.0", + "cypress": "13.5.1", + "eslint": "8.53.0", "eslint-plugin-import": "2.29.0", "eslint-plugin-vue": "9.18.1", - "fast-glob": "3.3.1", + "fast-glob": "3.3.2", "happy-dom": "10.0.3", "micromatch": "4.0.5", "msw": "1.3.2", "msw-storybook-addon": "1.10.0", "nodemon": "3.0.1", - "prettier": "3.0.3", + "prettier": "3.1.0", "react": "18.2.0", "react-dom": "18.2.0", - "start-server-and-test": "2.0.1", - "storybook": "7.5.2", + "start-server-and-test": "2.0.3", + "storybook": "7.5.3", "storybook-addon-misskey-theme": "github:misskey-dev/storybook-addon-misskey-theme", "summaly": "github:misskey-dev/summaly", "vite-plugin-turbosnap": "1.0.3", diff --git a/packages/frontend/src/boot/main-boot.ts b/packages/frontend/src/boot/main-boot.ts index b11d0db043c0f025027ec21dd8427c1681061229..71236e4c531d6420d9ed9fb4489db6254759a43a 100644 --- a/packages/frontend/src/boot/main-boot.ts +++ b/packages/frontend/src/boot/main-boot.ts @@ -8,7 +8,7 @@ import { common } from './common.js'; import { version, ui, lang, updateLocale } from '@/config.js'; import { i18n, updateI18n } from '@/i18n.js'; import { confirm, alert, post, popup, toast } from '@/os.js'; -import { useStream, isReloading } from '@/stream.js'; +import { useStream } from '@/stream.js'; import * as sound from '@/scripts/sound.js'; import { $i, refreshAccount, login, updateAccount, signout } from '@/account.js'; import { defaultStore, ColdDeviceStorage } from '@/store.js'; @@ -39,7 +39,6 @@ export async function mainBoot() { let reloadDialogShowing = false; stream.on('_disconnected_', async () => { - if (isReloading) return; if (defaultStore.state.serverDisconnectedBehavior === 'reload') { location.reload(); } else if (defaultStore.state.serverDisconnectedBehavior === 'dialog') { @@ -58,7 +57,7 @@ export async function mainBoot() { }); for (const plugin of ColdDeviceStorage.get('plugins').filter(p => p.active)) { - import('../plugin').then(async ({ install }) => { + import('@/plugin.js').then(async ({ install }) => { // Workaround for https://bugs.webkit.org/show_bug.cgi?id=242740 await new Promise(r => setTimeout(r, 0)); install(plugin); diff --git a/packages/frontend/src/components/MkAutocomplete.vue b/packages/frontend/src/components/MkAutocomplete.vue index 063f7279f51ca9a0a03086de97e5273364b7315e..9e92c4bb03ee176a4f8dfef851e1621a3be74229 100644 --- a/packages/frontend/src/components/MkAutocomplete.vue +++ b/packages/frontend/src/components/MkAutocomplete.vue @@ -45,12 +45,12 @@ import contains from '@/scripts/contains.js'; import { char2twemojiFilePath, char2fluentEmojiFilePath } from '@/scripts/emoji-base.js'; import { acct } from '@/filters/user.js'; import * as os from '@/os.js'; -import { MFM_TAGS } from '@/scripts/mfm-tags.js'; import { defaultStore } from '@/store.js'; import { emojilist, getEmojiName } from '@/scripts/emojilist.js'; import { i18n } from '@/i18n.js'; import { miLocalStorage } from '@/local-storage.js'; import { customEmojis } from '@/custom-emojis.js'; +import { MFM_TAGS } from '@/const.js'; type EmojiDef = { emoji: string; diff --git a/packages/frontend/src/components/MkNote.vue b/packages/frontend/src/components/MkNote.vue index f4f31f6a5647b4064aa4c142585268c7077eebdc..784a9ca348eb7a22623edfd0f4121b731559121e 100644 --- a/packages/frontend/src/components/MkNote.vue +++ b/packages/frontend/src/components/MkNote.vue @@ -44,7 +44,7 @@ SPDX-License-Identifier: AGPL-3.0-only </div> <div v-if="renoteCollapsed" :class="$style.collapsedRenoteTarget"> <MkAvatar :class="$style.collapsedRenoteTargetAvatar" :user="appearNote.user" link preview/> - <Mfm :text="getNoteSummary(appearNote)" :plain="true" :nowrap="true" :author="appearNote.user" :nyaize="'account'" :class="$style.collapsedRenoteTargetText" @click="renoteCollapsed = false"/> + <Mfm :text="getNoteSummary(appearNote)" :plain="true" :nowrap="true" :author="appearNote.user" :nyaize="'respect'" :class="$style.collapsedRenoteTargetText" @click="renoteCollapsed = false"/> </div> <article v-else :class="$style.article" @contextmenu.stop="onContextmenu"> <div v-if="appearNote.channel" :class="$style.colorBar" :style="{ background: appearNote.channel.color }"></div> @@ -54,7 +54,7 @@ SPDX-License-Identifier: AGPL-3.0-only <MkInstanceTicker v-if="showTicker" :instance="appearNote.user.instance"/> <div style="container-type: inline-size;"> <p v-if="appearNote.cw != null" :class="$style.cw"> - <Mfm v-if="appearNote.cw != ''" style="margin-right: 8px;" :text="appearNote.cw" :author="appearNote.user" :nyaize="'account'"/> + <Mfm v-if="appearNote.cw != ''" style="margin-right: 8px;" :text="appearNote.cw" :author="appearNote.user" :nyaize="'respect'"/> <MkCwButton v-model="showContent" :note="appearNote" style="margin: 4px 0;" v-on:click.stop/> </p> <div v-show="appearNote.cw == null || showContent" :class="[{ [$style.contentCollapsed]: collapsed }]" > @@ -66,7 +66,7 @@ SPDX-License-Identifier: AGPL-3.0-only :parsedNodes="parsed" :text="appearNote.text" :author="appearNote.user" - :nyaize="'account'" + :nyaize="'respect'" :emojiUrls="appearNote.emojis" :enableEmojiMenu="true" :enableEmojiMenuReaction="true" @@ -76,7 +76,7 @@ SPDX-License-Identifier: AGPL-3.0-only <MkLoading v-if="translating" mini/> <div v-else> <b>{{ i18n.t('translatedFrom', { x: translation.sourceLang }) }}: </b> - <Mfm :text="translation.text" :author="appearNote.user" :nyaize="'account'" :emojiUrls="appearNote.emojis"/> + <Mfm :text="translation.text" :author="appearNote.user" :nyaize="'respect'" :emojiUrls="appearNote.emojis"/> </div> </div> <MkButton v-if="!allowAnim && animated" :class="$style.playMFMButton" :small="true" @click="animatedMFM()" v-on:click.stop><i class="ph-play ph-bold ph-lg "></i> {{ i18n.ts._animatedMFM.play }}</MkButton> @@ -232,11 +232,17 @@ function noteclick(id: string) { // plugin if (noteViewInterruptors.length > 0) { onMounted(async () => { - let result:Misskey.entities.Note | null = deepClone(note); + let result: Misskey.entities.Note | null = deepClone(note); for (const interruptor of noteViewInterruptors) { - result = await interruptor.handler(result); - - if (result === null) return isDeleted.value = true; + try { + result = await interruptor.handler(result); + if (result === null) { + isDeleted.value = true; + return; + } + } catch (err) { + console.error(err); + } } note = result; }); @@ -265,7 +271,7 @@ const renoteUri = appearNote.renote ? appearNote.renote.uri : null; const isMyRenote = $i && ($i.id === note.userId); const showContent = ref(false); const parsed = $computed(() => appearNote.text ? mfm.parse(appearNote.text) : null); -const urls = parsed ? extractUrlFromMfm(parsed) : null; +const urls = $computed(() => parsed ? extractUrlFromMfm(parsed) : null); const animated = $computed(() => parsed ? checkAnimationFromMfm(parsed) : null); const allowAnim = ref(defaultStore.state.advancedMfm && defaultStore.state.animatedMfm ? true : false); const isLong = shouldCollapsed(appearNote, urls ?? []); diff --git a/packages/frontend/src/components/MkNoteDetailed.vue b/packages/frontend/src/components/MkNoteDetailed.vue index b2594dec234d543ab4d8277e0f0560510cacfc23..ef677389cad98ce33c448da726da8c854ad3caa9 100644 --- a/packages/frontend/src/components/MkNoteDetailed.vue +++ b/packages/frontend/src/components/MkNoteDetailed.vue @@ -68,7 +68,7 @@ SPDX-License-Identifier: AGPL-3.0-only </header> <div :class="$style.noteContent"> <p v-if="appearNote.cw != null" :class="$style.cw"> - <Mfm v-if="appearNote.cw != ''" style="margin-right: 8px;" :text="appearNote.cw" :author="appearNote.user" :nyaize="'account'"/> + <Mfm v-if="appearNote.cw != ''" style="margin-right: 8px;" :text="appearNote.cw" :author="appearNote.user" :nyaize="'respect'"/> <MkCwButton v-model="showContent" :note="appearNote"/> </p> <div v-show="appearNote.cw == null || showContent"> @@ -79,7 +79,7 @@ SPDX-License-Identifier: AGPL-3.0-only :parsedNodes="parsed" :text="appearNote.text" :author="appearNote.user" - :nyaize="'account'" + :nyaize="'respect'" :emojiUrls="appearNote.emojis" :enableEmojiMenu="true" :enableEmojiMenuReaction="true" @@ -90,7 +90,7 @@ SPDX-License-Identifier: AGPL-3.0-only <MkLoading v-if="translating" mini/> <div v-else> <b>{{ i18n.t('translatedFrom', { x: translation.sourceLang }) }}: </b> - <Mfm :text="translation.text" :author="appearNote.user" :nyaize="'account'" :emojiUrls="appearNote.emojis"/> + <Mfm :text="translation.text" :author="appearNote.user" :nyaize="'respect'" :emojiUrls="appearNote.emojis"/> </div> </div> <MkButton v-if="!allowAnim && animated" :class="$style.playMFMButton" :small="true" @click="animatedMFM()" v-on:click.stop><i class="ph-play ph-bold ph-lg "></i> {{ i18n.ts._animatedMFM.play }}</MkButton> @@ -270,11 +270,17 @@ let note = $ref(deepClone(props.note)); // plugin if (noteViewInterruptors.length > 0) { onMounted(async () => { - let result:Misskey.entities.Note | null = deepClone(note); + let result: Misskey.entities.Note | null = deepClone(note); for (const interruptor of noteViewInterruptors) { - result = await interruptor.handler(result); - - if (result === null) return isDeleted.value = true; + try { + result = await interruptor.handler(result); + if (result === null) { + isDeleted.value = true; + return; + } + } catch (err) { + console.error(err); + } } note = result; }); diff --git a/packages/frontend/src/components/MkNotePreview.vue b/packages/frontend/src/components/MkNotePreview.vue index 81ea36c2a59872428c07b0770c63a044f38b6ebc..552f8137ed4faac0294b31104e05872fd6349b2b 100644 --- a/packages/frontend/src/components/MkNotePreview.vue +++ b/packages/frontend/src/components/MkNotePreview.vue @@ -12,7 +12,7 @@ SPDX-License-Identifier: AGPL-3.0-only </div> <div> <div> - <Mfm :text="text.trim()" :author="user" :nyaize="'account'" :i="user"/> + <Mfm :text="text.trim()" :author="user" :nyaize="'respect'" :i="user"/> </div> </div> </div> diff --git a/packages/frontend/src/components/MkNoteSimple.vue b/packages/frontend/src/components/MkNoteSimple.vue index 63b122048bcfbc7358fa041f310cba1d4f735229..0c51ad9137158e6dd3adc267425ae936573a690a 100644 --- a/packages/frontend/src/components/MkNoteSimple.vue +++ b/packages/frontend/src/components/MkNoteSimple.vue @@ -10,7 +10,7 @@ SPDX-License-Identifier: AGPL-3.0-only <MkNoteHeader :class="$style.header" :note="note" :mini="true"/> <div> <p v-if="note.cw != null" :class="$style.cw"> - <Mfm v-if="note.cw != ''" style="margin-right: 8px;" :text="note.cw" :author="note.user" :nyaize="'account'" :emojiUrls="note.emojis"/> + <Mfm v-if="note.cw != ''" style="margin-right: 8px;" :text="note.cw" :author="note.user" :nyaize="'respect'" :emojiUrls="note.emojis"/> <MkCwButton v-model="showContent" :note="note"/> </p> <div v-show="note.cw == null || showContent"> diff --git a/packages/frontend/src/components/MkNoteSub.vue b/packages/frontend/src/components/MkNoteSub.vue index 94f52b7f5d87d2e287f4d676e4c3cb376a4b4771..f61fc608d935bcc30ce4d902c8151310c6f48a38 100644 --- a/packages/frontend/src/components/MkNoteSub.vue +++ b/packages/frontend/src/components/MkNoteSub.vue @@ -12,7 +12,7 @@ SPDX-License-Identifier: AGPL-3.0-only <MkNoteHeader :class="$style.header" :note="note" :mini="true"/> <div :class="$style.content"> <p v-if="note.cw != null" :class="$style.cw"> - <Mfm v-if="note.cw != ''" style="margin-right: 8px;" :text="note.cw" :author="note.user" :nyaize="'account'"/> + <Mfm v-if="note.cw != ''" style="margin-right: 8px;" :text="note.cw" :author="note.user" :nyaize="'respect'"/> <MkCwButton v-model="showContent" :note="note"/> </p> <div v-show="note.cw == null || showContent"> diff --git a/packages/frontend/src/components/MkNotifications.vue b/packages/frontend/src/components/MkNotifications.vue index 77e66f01656487499867f22678054bbce9b25394..0c817bd64c5a5e73f779e43baa0cb6d3e310c6e8 100644 --- a/packages/frontend/src/components/MkNotifications.vue +++ b/packages/frontend/src/components/MkNotifications.vue @@ -96,6 +96,10 @@ onUnmounted(() => { onDeactivated(() => { if (connection) connection.dispose(); }); + +defineExpose({ + reload, +}); </script> <style lang="scss" module> diff --git a/packages/frontend/src/components/MkPagination.vue b/packages/frontend/src/components/MkPagination.vue index 5643de76833cadf47f7dae76c938f0822ed8d57f..e7796dfcb58244b4202f16c074585a62a2775c90 100644 --- a/packages/frontend/src/components/MkPagination.vue +++ b/packages/frontend/src/components/MkPagination.vue @@ -43,12 +43,11 @@ SPDX-License-Identifier: AGPL-3.0-only </template> <script lang="ts"> -import { computed, ComputedRef, isRef, nextTick, onActivated, onBeforeUnmount, onDeactivated, onMounted, ref, watch } from 'vue'; +import { computed, ComputedRef, isRef, nextTick, onActivated, onBeforeMount, onBeforeUnmount, onDeactivated, ref, watch } from 'vue'; import * as Misskey from 'misskey-js'; import * as os from '@/os.js'; import { onScrollTop, isTopVisible, getBodyScrollHeight, getScrollContainer, onScrollBottom, scrollToBottom, scroll, isBottomVisible } from '@/scripts/scroll.js'; import { useDocumentVisibility } from '@/scripts/use-document-visibility.js'; -import MkButton from '@/components/MkButton.vue'; import { defaultStore } from '@/store.js'; import { MisskeyEntity } from '@/types/date-separated-list'; import { i18n } from '@/i18n.js'; @@ -91,6 +90,7 @@ function concatMapWithArray(map: MisskeyEntityMap, entities: MisskeyEntity[]): M </script> <script lang="ts" setup> import { infoImageUrl } from '@/instance.js'; +import MkButton from '@/components/MkButton.vue'; const props = withDefaults(defineProps<{ pagination: Paging; @@ -185,9 +185,8 @@ watch([$$(backed), $$(contentEl)], () => { } }); -if (props.pagination.params && isRef(props.pagination.params)) { - watch(props.pagination.params, init, { deep: true }); -} +// パラメータã«ä½•ã‚‰ã‹ã®å¤‰æ›´ãŒã‚ã£ãŸéš›ã€å†èªè¾¼ã—ãŸã„(ãƒãƒ£ãƒ³ãƒãƒ«ç‰ã®IDãŒå¤‰ã‚ã£ãŸãªã©ï¼‰ +watch(() => props.pagination.params, init, { deep: true }); watch(queue, (a, b) => { if (a.size === 0 && b.size === 0) return; @@ -440,8 +439,6 @@ const updateItem = (id: MisskeyEntity['id'], replacer: (old: MisskeyEntity) => M if (queueItem) queue.value.set(id, replacer(queueItem)); }; -const inited = init(); - onActivated(() => { isBackTop.value = false; }); @@ -454,8 +451,8 @@ function toBottom() { scrollToBottom(contentEl!); } -onMounted(() => { - inited.then(() => { +onBeforeMount(() => { + init().then(() => { if (props.pagination.reversed) { nextTick(() => { setTimeout(toBottom, 800); @@ -487,7 +484,6 @@ defineExpose({ queue, backed, more, - inited, reload, prepend, append: appendItem, diff --git a/packages/frontend/src/components/MkPostForm.vue b/packages/frontend/src/components/MkPostForm.vue index 76e0944cbb0dc609a4193e3cefc90e178a6681bc..f72e4ddfc3c6ac3dc06e2162f57f88a3cdddee01 100644 --- a/packages/frontend/src/components/MkPostForm.vue +++ b/packages/frontend/src/components/MkPostForm.vue @@ -757,7 +757,11 @@ async function post(ev?: MouseEvent) { // plugin if (notePostInterruptors.length > 0) { for (const interruptor of notePostInterruptors) { - postData = await interruptor.handler(deepClone(postData)); + try { + postData = await interruptor.handler(deepClone(postData)); + } catch (err) { + console.error(err); + } } } @@ -1075,6 +1079,7 @@ defineExpose({ .preview { padding: 16px 20px 0 20px; + min-height: 75px; max-height: 150px; overflow: auto; } diff --git a/packages/frontend/src/components/MkReactionsViewer.details.vue b/packages/frontend/src/components/MkReactionsViewer.details.vue index 17cd083561ffed9ff8a5ff2922022b2437dfd0ac..1b0d8f74a325718b2e90c80ccfc5aee4c05d76f6 100644 --- a/packages/frontend/src/components/MkReactionsViewer.details.vue +++ b/packages/frontend/src/components/MkReactionsViewer.details.vue @@ -73,7 +73,6 @@ function getReactionName(reaction: string): string { } .users { - contain: content; flex: 1; min-width: 0; margin: -4px 14px 0 10px; @@ -85,7 +84,7 @@ function getReactionName(reaction: string): string { line-height: 24px; padding-top: 4px; white-space: nowrap; - overflow: hidden; + overflow: visible; text-overflow: ellipsis; } diff --git a/packages/frontend/src/components/MkSubNoteContent.vue b/packages/frontend/src/components/MkSubNoteContent.vue index aec657536d3bde7b1445ba75d132a89ccfb61325..110644947fbaf4aae7e8ae4aecbd3660391a455b 100644 --- a/packages/frontend/src/components/MkSubNoteContent.vue +++ b/packages/frontend/src/components/MkSubNoteContent.vue @@ -9,7 +9,7 @@ SPDX-License-Identifier: AGPL-3.0-only <span v-if="note.isHidden" style="opacity: 0.5">({{ i18n.ts.private }})</span> <span v-if="note.deletedAt" style="opacity: 0.5">({{ i18n.ts.deleted }})</span> <MkA v-if="note.replyId" :class="$style.reply" :to="`/notes/${note.replyId}`" v-on:click.stop><i class="ph-arrow-bend-left-up ph-bold ph-lg"></i></MkA> - <Mfm v-if="note.text" :text="note.text" :author="note.user" :nyaize="'account'" :isAnim="allowAnim" :emojiUrls="note.emojis"/> + <Mfm v-if="note.text" :text="note.text" :author="note.user" :nyaize="'respect'" :isAnim="allowAnim" :emojiUrls="note.emojis"/> <MkButton v-if="!allowAnim && animated && !hideFiles" :class="$style.playMFMButton" :small="true" @click="animatedMFM()" v-on:click.stop><i class="ph-play ph-bold ph-lg "></i> {{ i18n.ts._animatedMFM.play }}</MkButton> <MkButton v-else-if="!defaultStore.state.animatedMfm && allowAnim && animated && !hideFiles" :class="$style.playMFMButton" :small="true" @click="animatedMFM()" v-on:click.stop><i class="ph-stop ph-bold ph-lg "></i> {{ i18n.ts._animatedMFM.stop }}</MkButton> <div v-if="note.text && translating || note.text && translation" :class="$style.translation"> diff --git a/packages/frontend/src/components/MkTimeline.vue b/packages/frontend/src/components/MkTimeline.vue index 014e6b89e8ebe076447288df480c45b89463eab8..466c534259c89216b37bd809084fa33bd77f43fd 100644 --- a/packages/frontend/src/components/MkTimeline.vue +++ b/packages/frontend/src/components/MkTimeline.vue @@ -5,19 +5,28 @@ SPDX-License-Identifier: AGPL-3.0-only <template> <MkPullToRefresh ref="prComponent" :refresher="() => reloadTimeline()"> - <MkNotes ref="tlComponent" :noGap="!defaultStore.state.showGapBetweenNotesInTimeline" :pagination="pagination" @queue="emit('queue', $event)" @status="prComponent.setDisabled($event)"/> + <MkNotes + v-if="paginationQuery" + ref="tlComponent" + :pagination="paginationQuery" + :noGap="!defaultStore.state.showGapBetweenNotesInTimeline" + @queue="emit('queue', $event)" + @status="prComponent.setDisabled($event)" + /> </MkPullToRefresh> </template> <script lang="ts" setup> -import { computed, provide, onUnmounted } from 'vue'; +import { computed, watch, onUnmounted, provide } from 'vue'; +import { Connection } from 'misskey-js/built/streaming.js'; import MkNotes from '@/components/MkNotes.vue'; import MkPullToRefresh from '@/components/MkPullToRefresh.vue'; -import { useStream, reloadStream } from '@/stream.js'; +import { useStream } from '@/stream.js'; import * as sound from '@/scripts/sound.js'; import { $i } from '@/account.js'; import { instance } from '@/instance.js'; import { defaultStore } from '@/store.js'; +import { Paging } from '@/components/MkPagination.vue'; const props = withDefaults(defineProps<{ src: string; @@ -44,6 +53,18 @@ const emit = defineEmits<{ provide('inChannel', computed(() => props.src === 'channel')); +type TimelineQueryType = { + antennaId?: string, + withRenotes?: boolean, + withReplies?: boolean, + withFiles?: boolean, + withBots?: boolean, + visibility?: string, + listId?: string, + channelId?: string, + roleId?: string +} + const prComponent: InstanceType<typeof MkPullToRefresh> = $ref(); const tlComponent: InstanceType<typeof MkNotes> = $ref(); @@ -65,13 +86,13 @@ const prepend = note => { } }; -let endpoint; -let query; -let connection; -let connection2; +let connection: Connection; +let connection2: Connection; +let paginationQuery: Paging | null = null; const stream = useStream(); -const connectChannel = () => { + +function connectChannel() { if (props.src === 'antenna') { connection = stream.useChannel('antenna', { antennaId: props.antenna, @@ -128,89 +149,116 @@ const connectChannel = () => { }); } if (props.src !== 'directs' || props.src !== 'mentions') connection.on('note', prepend); -}; +} -if (props.src === 'antenna') { - endpoint = 'antennas/notes'; - query = { - antennaId: props.antenna, - }; -} else if (props.src === 'home') { - endpoint = 'notes/timeline'; - query = { - withRenotes: props.withRenotes, - withFiles: props.onlyFiles ? true : undefined, - withBots: props.withBots, - }; -} else if (props.src === 'local') { - endpoint = 'notes/local-timeline'; - query = { - withRenotes: props.withRenotes, - withReplies: props.withReplies, - withBots: props.withBots, - withFiles: props.onlyFiles ? true : undefined, - }; -} else if (props.src === 'social') { - endpoint = 'notes/hybrid-timeline'; - query = { - withRenotes: props.withRenotes, - withReplies: props.withReplies, - withBots: props.withBots, - withFiles: props.onlyFiles ? true : undefined, - }; -} else if (props.src === 'global') { - endpoint = 'notes/global-timeline'; - query = { - withRenotes: props.withRenotes, - withBots: props.withBots, - withFiles: props.onlyFiles ? true : undefined, - }; -} else if (props.src === 'mentions') { - endpoint = 'notes/mentions'; -} else if (props.src === 'directs') { - endpoint = 'notes/mentions'; - query = { - visibility: 'specified', - }; -} else if (props.src === 'list') { - endpoint = 'notes/user-list-timeline'; - query = { - withFiles: props.onlyFiles ? true : undefined, - listId: props.list, - }; -} else if (props.src === 'channel') { - endpoint = 'channels/timeline'; - query = { - channelId: props.channel, - }; -} else if (props.src === 'role') { - endpoint = 'roles/notes'; - query = { - roleId: props.role, - }; +function disconnectChannel() { + if (connection) connection.dispose(); + if (connection2) connection2.dispose(); } -if (!defaultStore.state.disableStreamingTimeline) { - connectChannel(); +function updatePaginationQuery() { + let endpoint: string | null; + let query: TimelineQueryType | null; - onUnmounted(() => { - connection.dispose(); - if (connection2) connection2.dispose(); - }); + if (props.src === 'antenna') { + endpoint = 'antennas/notes'; + query = { + antennaId: props.antenna, + }; + } else if (props.src === 'home') { + endpoint = 'notes/timeline'; + query = { + withRenotes: props.withRenotes, + withFiles: props.onlyFiles ? true : undefined, + withBots: props.withBots, + }; + } else if (props.src === 'local') { + endpoint = 'notes/local-timeline'; + query = { + withRenotes: props.withRenotes, + withReplies: props.withReplies, + withFiles: props.onlyFiles ? true : undefined, + withBots: props.withBots, + }; + } else if (props.src === 'social') { + endpoint = 'notes/hybrid-timeline'; + query = { + withRenotes: props.withRenotes, + withReplies: props.withReplies, + withFiles: props.onlyFiles ? true : undefined, + withBots: props.withBots, + }; + } else if (props.src === 'global') { + endpoint = 'notes/global-timeline'; + query = { + withRenotes: props.withRenotes, + withFiles: props.onlyFiles ? true : undefined, + withBots: props.withBots, + }; + } else if (props.src === 'mentions') { + endpoint = 'notes/mentions'; + query = null; + } else if (props.src === 'directs') { + endpoint = 'notes/mentions'; + query = { + visibility: 'specified', + }; + } else if (props.src === 'list') { + endpoint = 'notes/user-list-timeline'; + query = { + withFiles: props.onlyFiles ? true : undefined, + listId: props.list, + }; + } else if (props.src === 'channel') { + endpoint = 'channels/timeline'; + query = { + channelId: props.channel, + }; + } else if (props.src === 'role') { + endpoint = 'roles/notes'; + query = { + roleId: props.role, + }; + } else { + endpoint = null; + query = null; + } + + if (endpoint && query) { + paginationQuery = { + endpoint: endpoint, + limit: 10, + params: query, + }; + } else { + paginationQuery = null; + } } -const pagination = { - endpoint: endpoint, - limit: 10, - params: query, -}; +function refreshEndpointAndChannel() { + if (!defaultStore.state.disableStreamingTimeline) { + disconnectChannel(); + connectChannel(); + } + + updatePaginationQuery(); +} + +// IDãŒåˆ‡ã‚Šæ›¿ã‚ã£ãŸã‚‰åˆ‡ã‚Šæ›¿ãˆå…ˆã®TLを表示ã•ã›ãŸã„ +watch(() => [props.list, props.antenna, props.channel, props.role], refreshEndpointAndChannel); + +// åˆå›žè¡¨ç¤ºç”¨ +refreshEndpointAndChannel(); + +onUnmounted(() => { + disconnectChannel(); +}); function reloadTimeline() { return new Promise<void>((res) => { tlNotesCount = 0; tlComponent.pagingComponent?.reload().then(() => { - reloadStream(); res(); }); }); diff --git a/packages/frontend/src/components/global/MkMisskeyFlavoredMarkdown.ts b/packages/frontend/src/components/global/MkMisskeyFlavoredMarkdown.ts index 9208285e990e5230a65468168422ff639dea8de5..c2e36f58b8e7511354d119e793390a6cdcf80c89 100644 --- a/packages/frontend/src/components/global/MkMisskeyFlavoredMarkdown.ts +++ b/packages/frontend/src/components/global/MkMisskeyFlavoredMarkdown.ts @@ -7,6 +7,7 @@ import { VNode, h } from 'vue'; import * as mfm from 'mfm-js'; import * as Misskey from 'misskey-js'; import MkUrl from '@/components/global/MkUrl.vue'; +import MkTime from '@/components/global/MkTime.vue'; import MkLink from '@/components/MkLink.vue'; import MkMention from '@/components/MkMention.vue'; import MkEmoji from '@/components/global/MkEmoji.vue'; @@ -36,7 +37,7 @@ type MfmProps = { isNote?: boolean; emojiUrls?: string[]; rootScale?: number; - nyaize: boolean | 'account'; + nyaize: boolean | 'respect'; parsedNodes?: mfm.MfmNode[] | null; enableEmojiMenu?: boolean; enableEmojiMenuReaction?: boolean; @@ -46,7 +47,7 @@ type MfmProps = { // eslint-disable-next-line import/no-default-export export default function(props: MfmProps) { const isNote = props.isNote ?? true; - const shouldNyaize = props.nyaize ? props.nyaize === 'account' ? props.author?.isCat ? props.author?.speakAsCat : false : false : false; + const shouldNyaize = props.nyaize ? props.nyaize === 'respect' ? props.author?.isCat ? props.author?.speakAsCat : false : false : false; // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition if (props.text == null || props.text === '') return; @@ -239,6 +240,34 @@ export default function(props: MfmProps) { style = `background-color: #${color};`; break; } + case 'ruby': { + if (token.children.length === 1) { + const child = token.children[0]; + const text = child.type === 'text' ? child.props.text : ''; + return h('ruby', {}, [text.split(' ')[0], h('rt', text.split(' ')[1])]); + } else { + const rt = token.children.at(-1)!; + const text = rt.type === 'text' ? rt.props.text : ''; + return h('ruby', {}, [...genEl(token.children.slice(0, token.children.length - 1), scale), h('rt', text.trim())]); + } + } + case 'unixtime': { + const child = token.children[0]; + const unixtime = parseInt(child.type === 'text' ? child.props.text : ''); + return h('span', { + style: 'display: inline-block; font-size: 90%; border: solid 1px var(--divider); border-radius: 999px; padding: 4px 10px 4px 6px;', + }, [ + h('i', { + class: 'ti ti-clock', + style: 'margin-right: 0.25em;', + }), + h(MkTime, { + key: Math.random(), + time: unixtime * 1000, + mode: 'detail', + }), + ]); + } } if (style == null) { return h('span', {}, ['$[', token.props.name, ' ', ...genEl(token.children, scale), ']']); diff --git a/packages/frontend/src/components/global/MkTime.vue b/packages/frontend/src/components/global/MkTime.vue index 5ba13ca3f3370b74b39e0a32139952a70e92abeb..f08d538fc0ed9cf6efdc8cce2b3e30ca97459b3f 100644 --- a/packages/frontend/src/components/global/MkTime.vue +++ b/packages/frontend/src/components/global/MkTime.vue @@ -49,8 +49,15 @@ const relative = $computed<string>(() => { ago >= 3600 ? i18n.t('_ago.hoursAgo', { n: Math.round(ago / 3600).toString() }) : ago >= 60 ? i18n.t('_ago.minutesAgo', { n: (~~(ago / 60)).toString() }) : ago >= 10 ? i18n.t('_ago.secondsAgo', { n: (~~(ago % 60)).toString() }) : - ago >= -1 ? i18n.ts._ago.justNow : - i18n.ts._ago.future); + ago >= -3 ? i18n.ts._ago.justNow : + ago < -31536000 ? i18n.t('_timeIn.years', { n: Math.round(-ago / 31536000).toString() }) : + ago < -2592000 ? i18n.t('_timeIn.months', { n: Math.round(-ago / 2592000).toString() }) : + ago < -604800 ? i18n.t('_timeIn.weeks', { n: Math.round(-ago / 604800).toString() }) : + ago < -86400 ? i18n.t('_timeIn.days', { n: Math.round(-ago / 86400).toString() }) : + ago < -3600 ? i18n.t('_timeIn.hours', { n: Math.round(-ago / 3600).toString() }) : + ago < -60 ? i18n.t('_timeIn.minutes', { n: (~~(-ago / 60)).toString() }) : + i18n.t('_timeIn.seconds', { n: (~~(-ago % 60)).toString() }) + ); }); let tickId: number; diff --git a/packages/frontend/src/config.ts b/packages/frontend/src/config.ts index 141b3bba242537f1af995116ee5f0630d202aeee..636e51c3749eb3b351c796bd16ed41aaaaa0d338 100644 --- a/packages/frontend/src/config.ts +++ b/packages/frontend/src/config.ts @@ -5,14 +5,14 @@ import { miLocalStorage } from '@/local-storage.js'; -const address = new URL(location.href); +const address = new URL(document.querySelector<HTMLMetaElement>('meta[property="instance_url"]')?.content || location.href); const siteName = document.querySelector<HTMLMetaElement>('meta[property="og:site_name"]')?.content; export const host = address.host; export const hostname = address.hostname; export const url = address.origin; -export const apiUrl = url + '/api'; -export const wsUrl = url.replace('http://', 'ws://').replace('https://', 'wss://') + '/streaming'; +export const apiUrl = location.origin + '/api'; +export const wsOrigin = location.origin; export const lang = miLocalStorage.getItem('lang') ?? 'en-US'; export const langs = _LANGS_; const preParseLocale = miLocalStorage.getItem('locale'); diff --git a/packages/frontend/src/const.ts b/packages/frontend/src/const.ts index d9df7ec833886ee632af544c072d0cec4e182a34..03be17de3883851940c6f03ed07e7ed9bc0ebcb7 100644 --- a/packages/frontend/src/const.ts +++ b/packages/frontend/src/const.ts @@ -144,3 +144,5 @@ export const CURRENT_STICKY_BOTTOM = 'CURRENT_STICKY_BOTTOM'; export const DEFAULT_SERVER_ERROR_IMAGE_URL = 'https://launcher.moe/error.png'; export const DEFAULT_NOT_FOUND_IMAGE_URL = 'https://launcher.moe/missingpage.webp'; export const DEFAULT_INFO_IMAGE_URL = 'https://launcher.moe/nothinghere.png'; + +export const MFM_TAGS = ['tada', 'jelly', 'twitch', 'shake', 'spin', 'jump', 'bounce', 'flip', 'x2', 'x3', 'x4', 'scale', 'position', 'fg', 'bg', 'font', 'blur', 'rainbow', 'sparkle', 'rotate', 'ruby', 'unixtime']; diff --git a/packages/frontend/src/pages/admin/federation.vue b/packages/frontend/src/pages/admin/federation.vue index dc13b63d2bab9935e2e43898de56f190ce404c13..39285deb139d6a768e139188c8bcb19d91dc0323 100644 --- a/packages/frontend/src/pages/admin/federation.vue +++ b/packages/frontend/src/pages/admin/federation.vue @@ -23,6 +23,7 @@ SPDX-License-Identifier: AGPL-3.0-only <option value="publishing">{{ i18n.ts.publishing }}</option> <option value="suspended">{{ i18n.ts.suspended }}</option> <option value="blocked">{{ i18n.ts.blocked }}</option> + <option value="silenced">{{ i18n.ts.silence }}</option> <option value="notResponding">{{ i18n.ts.notResponding }}</option> </MkSelect> <MkSelect v-model="sort"> @@ -83,6 +84,7 @@ const pagination = { state === 'publishing' ? { publishing: true } : state === 'suspended' ? { suspended: true } : state === 'blocked' ? { blocked: true } : + state === 'silenced' ? { silenced: true } : state === 'notResponding' ? { notResponding: true } : {}), })), @@ -91,6 +93,7 @@ const pagination = { function getStatus(instance) { if (instance.isSuspended) return 'Suspended'; if (instance.isBlocked) return 'Blocked'; + if (instance.isSilenced) return 'Silenced'; if (instance.isNotResponding) return 'Error'; return 'Alive'; } diff --git a/packages/frontend/src/pages/admin/index.vue b/packages/frontend/src/pages/admin/index.vue index 10cbe19c659308269390b252a1c6464035aaf2c9..ae6214540063495b4c8dc9f6aa2233964b898219 100644 --- a/packages/frontend/src/pages/admin/index.vue +++ b/packages/frontend/src/pages/admin/index.vue @@ -35,7 +35,7 @@ import MkSuperMenu from '@/components/MkSuperMenu.vue'; import MkInfo from '@/components/MkInfo.vue'; import { instance } from '@/instance.js'; import * as os from '@/os.js'; -import { lookupUser } from '@/scripts/lookup-user.js'; +import { lookupUser, lookupUserByEmail } from '@/scripts/lookup-user.js'; import { useRouter } from '@/router.js'; import { definePageMetadata, provideMetadataReceiver } from '@/scripts/page-metadata.js'; @@ -279,7 +279,7 @@ provideMetadataReceiver((info) => { } }); -const invite = () => { +function invite() { os.api('admin/invite/create').then(x => { os.alert({ type: 'info', @@ -291,15 +291,21 @@ const invite = () => { text: err, }); }); -}; +} -const lookup = (ev) => { +function lookup(ev: MouseEvent) { os.popupMenu([{ text: i18n.ts.user, icon: 'ph-user ph-bold ph-lg', action: () => { lookupUser(); }, + }, { + text: `${i18n.ts.user} (${i18n.ts.email})`, + icon: 'ti ti-user', + action: () => { + lookupUserByEmail(); + }, }, { text: i18n.ts.note, icon: 'ph-pencil ph-bold ph-lg', @@ -319,7 +325,7 @@ const lookup = (ev) => { alert('TODO'); }, }], ev.currentTarget ?? ev.target); -}; +} const headerActions = $computed(() => []); diff --git a/packages/frontend/src/pages/admin/settings.vue b/packages/frontend/src/pages/admin/settings.vue index de1985586f4c64b5553e01afa1d995f35e5f4d5b..db117d5061fdb5b84287134d388c3b317887b5a4 100644 --- a/packages/frontend/src/pages/admin/settings.vue +++ b/packages/frontend/src/pages/admin/settings.vue @@ -95,6 +95,11 @@ SPDX-License-Identifier: AGPL-3.0-only <template #caption>{{ i18n.ts._serverSettings.fanoutTimelineDescription }}</template> </MkSwitch> + <MkSwitch v-model="enableFanoutTimelineDbFallback"> + <template #label>{{ i18n.ts._serverSettings.fanoutTimelineDbFallback }}</template> + <template #caption>{{ i18n.ts._serverSettings.fanoutTimelineDbFallbackDescription }}</template> + </MkSwitch> + <MkInput v-model="perLocalUserUserTimelineCacheMax" type="number"> <template #label>perLocalUserUserTimelineCacheMax</template> </MkInput> @@ -171,6 +176,7 @@ let enableServiceWorker: boolean = $ref(false); let swPublicKey: any = $ref(null); let swPrivateKey: any = $ref(null); let enableFanoutTimeline: boolean = $ref(false); +let enableFanoutTimelineDbFallback: boolean = $ref(false); let perLocalUserUserTimelineCacheMax: number = $ref(0); let perRemoteUserUserTimelineCacheMax: number = $ref(0); let perUserHomeTimelineCacheMax: number = $ref(0); @@ -192,6 +198,7 @@ async function init(): Promise<void> { swPublicKey = meta.swPublickey; swPrivateKey = meta.swPrivateKey; enableFanoutTimeline = meta.enableFanoutTimeline; + enableFanoutTimelineDbFallback = meta.enableFanoutTimelineDbFallback; perLocalUserUserTimelineCacheMax = meta.perLocalUserUserTimelineCacheMax; perRemoteUserUserTimelineCacheMax = meta.perRemoteUserUserTimelineCacheMax; perUserHomeTimelineCacheMax = meta.perUserHomeTimelineCacheMax; @@ -214,6 +221,7 @@ async function save(): void { swPublicKey, swPrivateKey, enableFanoutTimeline, + enableFanoutTimelineDbFallback, perLocalUserUserTimelineCacheMax, perRemoteUserUserTimelineCacheMax, perUserHomeTimelineCacheMax, diff --git a/packages/frontend/src/pages/role.vue b/packages/frontend/src/pages/role.vue index 498212715c6ea4dc428c564a6031aaf6f42d19db..193505f6283004731efc19fc6086990f2e59dae4 100644 --- a/packages/frontend/src/pages/role.vue +++ b/packages/frontend/src/pages/role.vue @@ -18,11 +18,19 @@ SPDX-License-Identifier: AGPL-3.0-only <MkSpacer v-else-if="tab === 'users'" :contentMax="1200"> <div class="_gaps_s"> <div v-if="role">{{ role.description }}</div> - <MkUserList :pagination="users" :extractor="(item) => item.user"/> + <MkUserList v-if="visible" :pagination="users" :extractor="(item) => item.user"/> + <div v-else-if="!visible" class="_fullinfo"> + <img :src="infoImageUrl" class="_ghost"/> + <div>{{ i18n.ts.nothing }}</div> + </div> </div> </MkSpacer> <MkSpacer v-else-if="tab === 'timeline'" :contentMax="700"> - <MkTimeline ref="timeline" src="role" :role="props.role"/> + <MkTimeline v-if="visible" ref="timeline" src="role" :role="props.role"/> + <div v-else-if="!visible" class="_fullinfo"> + <img :src="infoImageUrl" class="_ghost"/> + <div>{{ i18n.ts.nothing }}</div> + </div> </MkSpacer> </MkStickyContainer> </template> @@ -35,7 +43,7 @@ import { definePageMetadata } from '@/scripts/page-metadata.js'; import { i18n } from '@/i18n.js'; import MkTimeline from '@/components/MkTimeline.vue'; import { instanceName } from '@/config.js'; -import { serverErrorImageUrl } from '@/instance.js'; +import { serverErrorImageUrl, infoImageUrl } from '@/instance.js'; const props = withDefaults(defineProps<{ role: string; @@ -47,6 +55,7 @@ const props = withDefaults(defineProps<{ let tab = $ref(props.initialTab); let role = $ref(); let error = $ref(); +let visible = $ref(false); watch(() => props.role, () => { os.api('roles/show', { @@ -54,6 +63,7 @@ watch(() => props.role, () => { }).then(res => { role = res; document.title = `${role?.name} | ${instanceName}`; + visible = res.isExplorable && res.isPublic; }).catch((err) => { if (err.code === 'NO_SUCH_ROLE') { error = i18n.ts.noRole; diff --git a/packages/frontend/src/pages/settings/notifications.vue b/packages/frontend/src/pages/settings/notifications.vue index 55dc5275821c94e7afa5fdd59453e076c7c775e8..e5a3ddf88b49ec817c29ffc27b8aaa497badbb1a 100644 --- a/packages/frontend/src/pages/settings/notifications.vue +++ b/packages/frontend/src/pages/settings/notifications.vue @@ -8,7 +8,7 @@ SPDX-License-Identifier: AGPL-3.0-only <FormSection first> <template #label>{{ i18n.ts.notificationRecieveConfig }}</template> <div class="_gaps_s"> - <MkFolder v-for="type in notificationTypes" :key="type"> + <MkFolder v-for="type in notificationTypes.filter(x => !nonConfigurableNotificationTypes.includes(x))" :key="type"> <template #label>{{ i18n.t('_notification._types.' + type) }}</template> <template #suffix> {{ @@ -68,6 +68,8 @@ import { definePageMetadata } from '@/scripts/page-metadata.js'; import MkPushNotificationAllowButton from '@/components/MkPushNotificationAllowButton.vue'; import { notificationTypes } from '@/const.js'; +const nonConfigurableNotificationTypes = ['note']; + let allowButton = $shallowRef<InstanceType<typeof MkPushNotificationAllowButton>>(); let pushRegistrationInServer = $computed(() => allowButton?.pushRegistrationInServer); let sendReadMessage = $computed(() => pushRegistrationInServer?.sendReadMessage || false); diff --git a/packages/frontend/src/pages/settings/other.vue b/packages/frontend/src/pages/settings/other.vue index eb2ee276023453ce902ce2bcf735db21e321da76..758e41047db176880607c278846b06282e5ca71b 100644 --- a/packages/frontend/src/pages/settings/other.vue +++ b/packages/frontend/src/pages/settings/other.vue @@ -159,12 +159,13 @@ async function reloadAsk() { } async function updateRepliesAll(withReplies: boolean) { - const { canceled } = os.confirm({ + const { canceled } = await os.confirm({ type: 'warning', text: withReplies ? i18n.ts.confirmShowRepliesAll : i18n.ts.confirmHideRepliesAll, }); if (canceled) return; - await os.api('following/update-all', { withReplies }); + + os.api('following/update-all', { withReplies }); } const exportData = () => { diff --git a/packages/frontend/src/pages/user/home.vue b/packages/frontend/src/pages/user/home.vue index 42a4be3f9241ea44632b52cf23eac9b6984c05b2..03d6705f6bc9f3276de41dd2eb9e3f64d02e753e 100644 --- a/packages/frontend/src/pages/user/home.vue +++ b/packages/frontend/src/pages/user/home.vue @@ -25,7 +25,7 @@ SPDX-License-Identifier: AGPL-3.0-only <span v-if="user.isAdmin" :title="i18n.ts.isAdmin" style="color: var(--badge);"><i class="ph-shield ph-bold ph-lg"></i></span> <span v-if="user.isLocked" :title="i18n.ts.isLocked"><i class="ph-lock ph-bold ph-lg"></i></span> <span v-if="user.isBot" :title="i18n.ts.isBot"><i class="ph-robot ph-bold ph-lg"></i></span> - <button v-if="!isEditingMemo && !memoDraft" class="_button add-note-button" @click="showMemoTextarea"> + <button v-if="$i && !isEditingMemo && !memoDraft" class="_button add-note-button" @click="showMemoTextarea"> <i class="ph-pencil-line ph-bold ph-lg"/> {{ i18n.ts.addMemo }} </button> </div> diff --git a/packages/frontend/src/plugin.ts b/packages/frontend/src/plugin.ts index 3bc91f6ac4b816327f956fe5b584802bf18b322e..e24f646a350762d8500544cf4f690f1f6c28a0b2 100644 --- a/packages/frontend/src/plugin.ts +++ b/packages/frontend/src/plugin.ts @@ -11,10 +11,9 @@ import { Plugin, noteActions, notePostInterruptors, noteViewInterruptors, postFo const parser = new Parser(); const pluginContexts = new Map<string, Interpreter>(); -export function install(plugin: Plugin): void { +export async function install(plugin: Plugin): Promise<void> { // 後方互æ›æ€§ã®ãŸã‚ if (plugin.src == null) return; - console.info('Plugin installed:', plugin.name, 'v' + plugin.version); const aiscript = new Interpreter(createPluginEnv({ plugin: plugin, @@ -42,7 +41,14 @@ export function install(plugin: Plugin): void { initPlugin({ plugin, aiscript }); - aiscript.exec(parser.parse(plugin.src)); + try { + await aiscript.exec(parser.parse(plugin.src)); + } catch (err) { + console.error('Plugin install failed:', plugin.name, 'v' + plugin.version); + return; + } + + console.info('Plugin installed:', plugin.name, 'v' + plugin.version); } function createPluginEnv(opts: { plugin: Plugin; storageKey: string }): Record<string, values.Value> { diff --git a/packages/frontend/src/scripts/lookup-user.ts b/packages/frontend/src/scripts/lookup-user.ts index 3dbc03f77749deb92f016f383143563a06ce9157..a35fe898e4ecc641f9b4225ada94156f97be5ad4 100644 --- a/packages/frontend/src/scripts/lookup-user.ts +++ b/packages/frontend/src/scripts/lookup-user.ts @@ -39,3 +39,26 @@ export async function lookupUser() { notFound(); }); } + +export async function lookupUserByEmail() { + const { canceled, result } = await os.inputText({ + title: i18n.ts.emailAddress, + type: 'email', + }); + if (canceled) return; + + try { + const user = await os.apiWithDialog('admin/accounts/find-by-email', { email: result }); + + os.pageWindow(`/admin/user/${user.id}`); + } catch (err) { + if (err.code === 'USER_NOT_FOUND') { + os.alert({ + type: 'error', + text: i18n.ts.noSuchUser, + }); + } else { + throw err; + } + } +} diff --git a/packages/frontend/src/scripts/mfm-tags.ts b/packages/frontend/src/scripts/mfm-tags.ts deleted file mode 100644 index dc78e42238da64a531dbe4dabf47933c5fbbcca4..0000000000000000000000000000000000000000 --- a/packages/frontend/src/scripts/mfm-tags.ts +++ /dev/null @@ -1,6 +0,0 @@ -/* - * SPDX-FileCopyrightText: syuilo and other misskey contributors - * SPDX-License-Identifier: AGPL-3.0-only - */ - -export const MFM_TAGS = ['tada', 'jelly', 'twitch', 'shake', 'spin', 'jump', 'bounce', 'flip', 'x2', 'x3', 'x4', 'scale', 'position', 'fg', 'bg', 'font', 'blur', 'rainbow', 'sparkle', 'rotate']; diff --git a/packages/frontend/src/scripts/sound.ts b/packages/frontend/src/scripts/sound.ts index f995c122d165504ab0b1dbc1e1b042df8b004160..4b0cd0bb3922c2ad28ba3c1f46de96f6c839355e 100644 --- a/packages/frontend/src/scripts/sound.ts +++ b/packages/frontend/src/scripts/sound.ts @@ -5,7 +5,8 @@ import { defaultStore } from '@/store.js'; -const cache = new Map<string, HTMLAudioElement>(); +const ctx = new AudioContext(); +const cache = new Map<string, AudioBuffer>(); export const soundsTypes = [ null, @@ -60,15 +61,20 @@ export const soundsTypes = [ 'noizenecio/kick_gaba7', ] as const; -export function getAudio(file: string, useCache = true): HTMLAudioElement { - let audio: HTMLAudioElement; +export async function getAudio(file: string, useCache = true) { if (useCache && cache.has(file)) { - audio = cache.get(file); - } else { - audio = new Audio(`/client-assets/sounds/${file}.mp3`); - if (useCache) cache.set(file, audio); + return cache.get(file)!; } - return audio; + + const response = await fetch(`/client-assets/sounds/${file}.mp3`); + const arrayBuffer = await response.arrayBuffer(); + const audioBuffer = await ctx.decodeAudioData(arrayBuffer); + + if (useCache) { + cache.set(file, audioBuffer); + } + + return audioBuffer; } export function setVolume(audio: HTMLAudioElement, volume: number): HTMLAudioElement { @@ -84,8 +90,17 @@ export function play(type: 'noteMy' | 'note' | 'antenna' | 'channel' | 'notifica playFile(sound.type, sound.volume); } -export function playFile(file: string, volume: number) { - const audio = setVolume(getAudio(file), volume); - if (audio.volume === 0) return; - audio.play(); +export async function playFile(file: string, volume: number) { + const masterVolume = defaultStore.state.sound_masterVolume; + if (masterVolume === 0 || volume === 0) { + return; + } + + const gainNode = ctx.createGain(); + gainNode.gain.value = masterVolume * volume; + + const soundSource = ctx.createBufferSource(); + soundSource.buffer = await getAudio(file); + soundSource.connect(gainNode).connect(ctx.destination); + soundSource.start(); } diff --git a/packages/frontend/src/stream.ts b/packages/frontend/src/stream.ts index 1e2d31480cbfa171a01e5e5da3db457d9f75344c..5f0826b4e3c96de55e9b796200638d838ad4f39e 100644 --- a/packages/frontend/src/stream.ts +++ b/packages/frontend/src/stream.ts @@ -6,34 +6,18 @@ import * as Misskey from 'misskey-js'; import { markRaw } from 'vue'; import { $i } from '@/account.js'; -import { url } from '@/config.js'; +import { wsOrigin } from '@/config.js'; let stream: Misskey.Stream | null = null; -let timeoutHeartBeat: number | null = null; - -export let isReloading: boolean = false; export function useStream(): Misskey.Stream { if (stream) return stream; - stream = markRaw(new Misskey.Stream(url, $i ? { + stream = markRaw(new Misskey.Stream(wsOrigin, $i ? { token: $i.token, } : null)); - timeoutHeartBeat = window.setTimeout(heartbeat, 1000 * 60); - - return stream; -} - -export function reloadStream() { - if (!stream) return useStream(); - if (timeoutHeartBeat) window.clearTimeout(timeoutHeartBeat); - isReloading = true; - - stream.close(); - stream.once('_connected_', () => isReloading = false); - stream.stream.reconnect(); - timeoutHeartBeat = window.setTimeout(heartbeat, 1000 * 60); + window.setTimeout(heartbeat, 1000 * 60); return stream; } @@ -42,5 +26,5 @@ function heartbeat(): void { if (stream != null && document.visibilityState === 'visible') { stream.heartbeat(); } - timeoutHeartBeat = window.setTimeout(heartbeat, 1000 * 60); + window.setTimeout(heartbeat, 1000 * 60); } diff --git a/packages/frontend/src/ui/_common_/navbar.vue b/packages/frontend/src/ui/_common_/navbar.vue index 9945e8c8478e03c1926c3120c0497986f8204bdd..184d32edd70dbe22a0e59d7398b14d91c972f198 100644 --- a/packages/frontend/src/ui/_common_/navbar.vue +++ b/packages/frontend/src/ui/_common_/navbar.vue @@ -176,7 +176,7 @@ function more(ev: MouseEvent) { .bottom { position: sticky; bottom: 0; - padding: 20px 0; + padding-top: 20px; background: var(--X14); -webkit-backdrop-filter: var(--blur, blur(8px)); backdrop-filter: var(--blur, blur(8px)); @@ -228,11 +228,10 @@ function more(ev: MouseEvent) { position: relative; display: flex; align-items: center; - padding-left: 30px; + padding: 20px 0 20px 30px; width: 100%; text-align: left; box-sizing: border-box; - margin-top: 16px; overflow: clip; } @@ -363,7 +362,7 @@ function more(ev: MouseEvent) { .bottom { position: sticky; bottom: 0; - padding: 20px 0; + padding-top: 20px; background: var(--X14); -webkit-backdrop-filter: var(--blur, blur(8px)); backdrop-filter: var(--blur, blur(8px)); @@ -374,7 +373,6 @@ function more(ev: MouseEvent) { position: relative; width: 100%; height: 52px; - margin-bottom: 16px; text-align: center; &:before { @@ -411,6 +409,7 @@ function more(ev: MouseEvent) { .account { display: block; text-align: center; + padding: 20px 0; width: 100%; overflow: clip; } diff --git a/packages/frontend/src/ui/_common_/stream-indicator.vue b/packages/frontend/src/ui/_common_/stream-indicator.vue index 6a53e518751d76c683d48cd10a284e91df6982af..0955a71718aef8ebb23a8b07857999b59251e085 100644 --- a/packages/frontend/src/ui/_common_/stream-indicator.vue +++ b/packages/frontend/src/ui/_common_/stream-indicator.vue @@ -15,7 +15,7 @@ SPDX-License-Identifier: AGPL-3.0-only <script lang="ts" setup> import { onUnmounted } from 'vue'; -import { useStream, isReloading } from '@/stream.js'; +import { useStream } from '@/stream.js'; import { i18n } from '@/i18n.js'; import MkButton from '@/components/MkButton.vue'; import * as os from '@/os.js'; @@ -26,7 +26,6 @@ const zIndex = os.claimZIndex('high'); let hasDisconnected = $ref(false); function onDisconnected() { - if (isReloading) return; hasDisconnected = true; } diff --git a/packages/frontend/src/ui/deck/antenna-column.vue b/packages/frontend/src/ui/deck/antenna-column.vue index d2664fdb3cc375f92c5be1b84dbebf77abe34bc2..d139d975fc77cdcf4921ed35308d9c3ec33e4eb6 100644 --- a/packages/frontend/src/ui/deck/antenna-column.vue +++ b/packages/frontend/src/ui/deck/antenna-column.vue @@ -4,7 +4,7 @@ SPDX-License-Identifier: AGPL-3.0-only --> <template> -<XColumn :menu="menu" :column="column" :isStacked="isStacked"> +<XColumn :menu="menu" :column="column" :isStacked="isStacked" :refresher="() => timeline.reloadTimeline()"> <template #header> <i class="ph-flying-saucer ph-bold ph-lg"></i><span style="margin-left: 8px;">{{ column.name }}</span> </template> diff --git a/packages/frontend/src/ui/deck/channel-column.vue b/packages/frontend/src/ui/deck/channel-column.vue index e7bc530e2ecc46c53a066252b1b9e287e62199cf..de6f336e09504ff08af73058ec4ef8414abedc4a 100644 --- a/packages/frontend/src/ui/deck/channel-column.vue +++ b/packages/frontend/src/ui/deck/channel-column.vue @@ -4,7 +4,7 @@ SPDX-License-Identifier: AGPL-3.0-only --> <template> -<XColumn :menu="menu" :column="column" :isStacked="isStacked"> +<XColumn :menu="menu" :column="column" :isStacked="isStacked" :refresher="() => timeline.reloadTimeline()"> <template #header> <i class="ph-television ph-bold ph-lg"></i><span style="margin-left: 8px;">{{ column.name }}</span> </template> diff --git a/packages/frontend/src/ui/deck/column.vue b/packages/frontend/src/ui/deck/column.vue index 6a841b07413ecbc9697d883150deea4d9c02fcc2..6e626da11cf77e0be8e713ad050e693d0d88109e 100644 --- a/packages/frontend/src/ui/deck/column.vue +++ b/packages/frontend/src/ui/deck/column.vue @@ -57,6 +57,7 @@ const props = withDefaults(defineProps<{ isStacked?: boolean; naked?: boolean; menu?: MenuItem[]; + refresher?: () => Promise<void>; }>(), { isStacked: false, naked: false, @@ -183,6 +184,18 @@ function getMenu() { items = props.menu.concat(items); } + if (props.refresher) { + items = [{ + icon: 'ti ti-refresh', + text: i18n.ts.reload, + action: () => { + if (props.refresher) { + props.refresher(); + } + }, + }, ...items]; + } + return items; } diff --git a/packages/frontend/src/ui/deck/direct-column.vue b/packages/frontend/src/ui/deck/direct-column.vue index e7c48c94cec9ccf020d77e379e808bbfadcbe2f8..bbdf1b86e9d08c0f820b1a7668a6e0cb31da32aa 100644 --- a/packages/frontend/src/ui/deck/direct-column.vue +++ b/packages/frontend/src/ui/deck/direct-column.vue @@ -4,10 +4,10 @@ SPDX-License-Identifier: AGPL-3.0-only --> <template> -<XColumn :column="column" :isStacked="isStacked"> +<XColumn :column="column" :isStacked="isStacked" :refresher="() => reloadTimeline()"> <template #header><i class="ph-envelope ph-bold ph-lg" style="margin-right: 8px;"></i>{{ column.name }}</template> - <MkNotes :pagination="pagination"/> + <MkNotes ref="tlComponent" :pagination="pagination"/> </XColumn> </template> @@ -29,4 +29,14 @@ const pagination = { visibility: 'specified', }, }; + +const tlComponent: InstanceType<typeof MkNotes> = $ref(); + +function reloadTimeline() { + return new Promise<void>((res) => { + tlComponent.pagingComponent?.reload().then(() => { + res(); + }); + }); +} </script> diff --git a/packages/frontend/src/ui/deck/list-column.vue b/packages/frontend/src/ui/deck/list-column.vue index cf28bf654cea9fafe67c822a8559f3d6e11ef2c9..0e1f7d62bd745a420cdacc42d19bcfc5b04b4788 100644 --- a/packages/frontend/src/ui/deck/list-column.vue +++ b/packages/frontend/src/ui/deck/list-column.vue @@ -4,7 +4,7 @@ SPDX-License-Identifier: AGPL-3.0-only --> <template> -<XColumn :menu="menu" :column="column" :isStacked="isStacked"> +<XColumn :menu="menu" :column="column" :isStacked="isStacked" :refresher="() => timeline.reloadTimeline()"> <template #header> <i class="ph-list ph-bold ph-lg"></i><span style="margin-left: 8px;">{{ column.name }}</span> </template> diff --git a/packages/frontend/src/ui/deck/mentions-column.vue b/packages/frontend/src/ui/deck/mentions-column.vue index 7ef8c6854f683af7bd9ef27846bcb0865f016209..bb9b174cb7398ee2686bb0b7dcc1580408563d72 100644 --- a/packages/frontend/src/ui/deck/mentions-column.vue +++ b/packages/frontend/src/ui/deck/mentions-column.vue @@ -4,10 +4,10 @@ SPDX-License-Identifier: AGPL-3.0-only --> <template> -<XColumn :column="column" :isStacked="isStacked"> +<XColumn :column="column" :isStacked="isStacked" :refresher="() => reloadTimeline()"> <template #header><i class="ph-at ph-bold ph-lg" style="margin-right: 8px;"></i>{{ column.name }}</template> - <MkNotes :pagination="pagination"/> + <MkNotes ref="tlComponent" :pagination="pagination"/> </XColumn> </template> @@ -22,6 +22,16 @@ defineProps<{ isStacked: boolean; }>(); +const tlComponent: InstanceType<typeof MkNotes> = $ref(); + +function reloadTimeline() { + return new Promise<void>((res) => { + tlComponent.pagingComponent?.reload().then(() => { + res(); + }); + }); +} + const pagination = { endpoint: 'notes/mentions' as const, limit: 10, diff --git a/packages/frontend/src/ui/deck/notifications-column.vue b/packages/frontend/src/ui/deck/notifications-column.vue index db75a0a70fe65144510003e49b43042b09b50812..ce1b26e36a54c195b8fb280c384fa2227046d1b1 100644 --- a/packages/frontend/src/ui/deck/notifications-column.vue +++ b/packages/frontend/src/ui/deck/notifications-column.vue @@ -4,10 +4,10 @@ SPDX-License-Identifier: AGPL-3.0-only --> <template> -<XColumn :column="column" :isStacked="isStacked" :menu="menu"> +<XColumn :column="column" :isStacked="isStacked" :menu="menu" :refresher="() => notificationsComponent.reload()"> <template #header><i class="ph-bell ph-bold ph-lg" style="margin-right: 8px;"></i>{{ column.name }}</template> - <XNotifications :excludeTypes="props.column.excludeTypes"/> + <XNotifications ref="notificationsComponent" :excludeTypes="props.column.excludeTypes"/> </XColumn> </template> @@ -24,6 +24,8 @@ const props = defineProps<{ isStacked: boolean; }>(); +let notificationsComponent = $shallowRef<InstanceType<typeof XNotifications>>(); + function func() { os.popup(defineAsyncComponent(() => import('@/components/MkNotificationSelectWindow.vue')), { excludeTypes: props.column.excludeTypes, diff --git a/packages/frontend/src/ui/deck/role-timeline-column.vue b/packages/frontend/src/ui/deck/role-timeline-column.vue index 9c45f6ba5cd49654c84d1e8182edd752c50fe837..b66c3ba61814061d5dee0fe8f8ce6c4b81395045 100644 --- a/packages/frontend/src/ui/deck/role-timeline-column.vue +++ b/packages/frontend/src/ui/deck/role-timeline-column.vue @@ -4,7 +4,7 @@ SPDX-License-Identifier: AGPL-3.0-only --> <template> -<XColumn :menu="menu" :column="column" :isStacked="isStacked"> +<XColumn :menu="menu" :column="column" :isStacked="isStacked" :refresher="() => timeline.reloadTimeline()"> <template #header> <i class="ph-seal-check ph-bold ph-lg"></i><span style="margin-left: 8px;">{{ column.name }}</span> </template> diff --git a/packages/frontend/src/ui/deck/tl-column.vue b/packages/frontend/src/ui/deck/tl-column.vue index 0b87be33830d65925e462a47fce3b74304631574..1b04bcf0f32c7317fd739a40ef2b4480986580a3 100644 --- a/packages/frontend/src/ui/deck/tl-column.vue +++ b/packages/frontend/src/ui/deck/tl-column.vue @@ -4,7 +4,7 @@ SPDX-License-Identifier: AGPL-3.0-only --> <template> -<XColumn :menu="menu" :column="column" :isStacked="isStacked"> +<XColumn :menu="menu" :column="column" :isStacked="isStacked" :refresher="() => timeline.reloadTimeline()"> <template #header> <i v-if="column.tl === 'home'" class="ph-house ph-bold ph-lg"></i> <i v-else-if="column.tl === 'local'" class="ph-planet ph-bold ph-lg"></i> @@ -48,6 +48,7 @@ const props = defineProps<{ }>(); let disabled = $ref(false); +let timeline = $shallowRef<InstanceType<typeof MkTimeline>>(); const isLocalTimelineAvailable = (($i == null && instance.policies.ltlAvailable) || ($i != null && $i.policies.ltlAvailable)); const isGlobalTimelineAvailable = (($i == null && instance.policies.gtlAvailable) || ($i != null && $i.policies.gtlAvailable)); diff --git a/packages/frontend/src/unicode-emoji-indexes/en-US.json b/packages/frontend/src/unicode-emoji-indexes/en-US.json index c5544418db326acfe2d91ca74c495a4661652aec..567125c4c7bfc2687976b776757e9afef95bf2d7 100644 --- a/packages/frontend/src/unicode-emoji-indexes/en-US.json +++ b/packages/frontend/src/unicode-emoji-indexes/en-US.json @@ -1061,7 +1061,7 @@ "💰": ["dollar", "payment", "coins", "sale"], "🪙": ["dollar", "payment", "coins", "sale"], "💳": ["money", "sales", "dollar", "bill", "payment", "shopping"], - "🪫": [], + "🪪": [], "💎": ["blue", "ruby", "diamond", "jewelry"], "âš–": ["law", "fairness", "weight"], "🧰": ["tools", "diy", "fix", "maintainer", "mechanic"], diff --git a/packages/megalodon/package.json b/packages/megalodon/package.json index 3bee6b8ae871edd100884bf5ce1fe881562696be..0113abb6dd8a0582d789ec4abcfeb2672f395b41 100644 --- a/packages/megalodon/package.json +++ b/packages/megalodon/package.json @@ -44,18 +44,27 @@ ], "preset": "ts-jest/presets/default", "transform": { - "^.+\\.(ts|tsx)$": ["ts-jest", { - "tsconfig": "tsconfig.json" - }] + "^.+\\.(ts|tsx)$": [ + "ts-jest", + { + "tsconfig": "tsconfig.json" + } + ] }, "testEnvironment": "node" }, "homepage": "https://github.com/h3poteto/megalodon#readme", "dependencies": { - "@types/oauth": "^0.9.2", - "@types/ws": "^8.5.5", + "@types/core-js": "^2.5.8", + "@types/form-data": "^2.5.0", + "@types/jest": "^29.5.10", + "@types/oauth": "^0.9.4", + "@types/object-assign-deep": "^0.4.3", + "@types/parse-link-header": "^2.0.3", + "@types/uuid": "^9.0.7", + "@types/ws": "^8.5.10", "axios": "1.5.0", - "dayjs": "^1.11.9", + "dayjs": "^1.11.10", "form-data": "^4.0.0", "https-proxy-agent": "^7.0.2", "oauth": "^0.10.0", @@ -64,24 +73,18 @@ "socks-proxy-agent": "^8.0.2", "typescript": "5.1.6", "uuid": "^9.0.1", - "ws": "8.14.2", - "@types/core-js": "^2.5.6", - "@types/form-data": "^2.5.0", - "@types/jest": "^29.5.5", - "@types/object-assign-deep": "^0.4.1", - "@types/parse-link-header": "^2.0.1", - "@types/uuid": "^9.0.4" + "ws": "8.14.2" }, "devDependencies": { - "@typescript-eslint/eslint-plugin": "^6.7.2", - "@typescript-eslint/parser": "^6.7.2", - "eslint": "^8.49.0", + "@typescript-eslint/eslint-plugin": "^6.12.0", + "@typescript-eslint/parser": "^6.12.0", + "eslint": "^8.54.0", "eslint-config-prettier": "^9.0.0", "jest": "^29.7.0", "jest-worker": "^29.7.0", - "lodash": "^4.17.14", - "prettier": "^3.0.3", + "lodash": "4.17.21", + "prettier": "^3.1.0", "ts-jest": "^29.1.1", - "typedoc": "^0.25.1" + "typedoc": "^0.25.3" } } diff --git a/packages/misskey-js/package.json b/packages/misskey-js/package.json index 7a165912c94991bdeae43d813fb11fcfaf16c382..0a4855874f6a446ca59e56e69f7324998d30850e 100644 --- a/packages/misskey-js/package.json +++ b/packages/misskey-js/package.json @@ -20,13 +20,13 @@ "url": "git+https://github.com/misskey-dev/misskey.js.git" }, "devDependencies": { - "@microsoft/api-extractor": "7.38.2", + "@microsoft/api-extractor": "7.38.3", "@swc/jest": "0.2.29", - "@types/jest": "29.5.7", - "@types/node": "20.8.10", - "@typescript-eslint/eslint-plugin": "6.9.1", - "@typescript-eslint/parser": "6.9.1", - "eslint": "8.52.0", + "@types/jest": "29.5.8", + "@types/node": "20.9.1", + "@typescript-eslint/eslint-plugin": "6.11.0", + "@typescript-eslint/parser": "6.11.0", + "eslint": "8.53.0", "jest": "29.7.0", "jest-fetch-mock": "3.0.3", "jest-websocket-mock": "2.5.0", @@ -38,8 +38,8 @@ "built" ], "dependencies": { - "@swc/cli": "0.1.62", - "@swc/core": "1.3.95", + "@swc/cli": "0.1.63", + "@swc/core": "1.3.96", "eventemitter3": "5.0.1", "reconnecting-websocket": "4.4.0" } diff --git a/packages/sw/package.json b/packages/sw/package.json index 7959b513915ead495db2bad4500a2b2b634b1b25..3259cae8797bf880d39ffa9ce3aeaeb4c306ceaa 100644 --- a/packages/sw/package.json +++ b/packages/sw/package.json @@ -14,9 +14,9 @@ "misskey-js": "workspace:*" }, "devDependencies": { - "@typescript-eslint/parser": "6.9.1", + "@typescript-eslint/parser": "6.11.0", "@typescript/lib-webworker": "npm:@types/serviceworker@0.0.67", - "eslint": "8.52.0", + "eslint": "8.53.0", "eslint-plugin-import": "2.29.0", "typescript": "5.2.2" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5b05584d15103df1249811659c8a92555980ccef..8e750d5158a9450cbffd687ef7d08879c3fcf155 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,4 +1,4 @@ -lockfileVersion: '6.1' +lockfileVersion: '6.0' settings: autoInstallPeers: true @@ -32,23 +32,23 @@ importers: version: 5.2.2 devDependencies: '@typescript-eslint/eslint-plugin': - specifier: 6.9.1 - version: 6.9.1(@typescript-eslint/parser@6.9.1)(eslint@8.52.0)(typescript@5.2.2) + specifier: 6.11.0 + version: 6.11.0(@typescript-eslint/parser@6.11.0)(eslint@8.53.0)(typescript@5.2.2) '@typescript-eslint/parser': - specifier: 6.9.1 - version: 6.9.1(eslint@8.52.0)(typescript@5.2.2) + specifier: 6.11.0 + version: 6.11.0(eslint@8.53.0)(typescript@5.2.2) cross-env: specifier: 7.0.3 version: 7.0.3 cypress: - specifier: 13.4.0 - version: 13.4.0 + specifier: 13.5.1 + version: 13.5.1 eslint: - specifier: 8.52.0 - version: 8.52.0 + specifier: 8.53.0 + version: 8.53.0 start-server-and-test: - specifier: 2.0.1 - version: 2.0.1 + specifier: 2.0.3 + version: 2.0.3 packages/backend: dependencies: @@ -74,8 +74,8 @@ importers: specifier: 4.2.0 version: 4.2.0 '@fastify/cookie': - specifier: 9.1.0 - version: 9.1.0 + specifier: 9.2.0 + version: 9.2.0 '@fastify/cors': specifier: 8.4.1 version: 8.4.1 @@ -83,8 +83,8 @@ importers: specifier: 2.3.0 version: 2.3.0 '@fastify/http-proxy': - specifier: 9.2.1 - version: 9.2.1(bufferutil@4.0.7)(utf-8-validate@6.0.3) + specifier: 9.3.0 + version: 9.3.0(bufferutil@4.0.7)(utf-8-validate@6.0.3) '@fastify/multipart': specifier: 8.0.0 version: 8.0.0 @@ -116,11 +116,11 @@ importers: specifier: 2.1.5 version: 2.1.5 '@swc/cli': - specifier: 0.1.62 - version: 0.1.62(@swc/core@1.3.95)(chokidar@3.5.3) + specifier: 0.1.63 + version: 0.1.63(@swc/core@1.3.96)(chokidar@3.5.3) '@swc/core': - specifier: 1.3.95 - version: 1.3.95 + specifier: 1.3.96 + version: 1.3.96 accepts: specifier: 1.3.8 version: 1.3.8 @@ -146,8 +146,8 @@ importers: specifier: 1.20.2 version: 1.20.2 bullmq: - specifier: 4.12.8 - version: 4.12.8 + specifier: 4.13.3 + version: 4.13.3 cacheable-lookup: specifier: 7.0.0 version: 7.0.0 @@ -184,12 +184,15 @@ importers: fastify-multer: specifier: ^2.0.3 version: 2.0.3 + fastify-raw-body: + specifier: 4.3.0 + version: 4.3.0 feed: specifier: 4.2.2 version: 4.2.2 file-type: - specifier: 18.6.0 - version: 18.6.0 + specifier: 18.7.0 + version: 18.7.0 fluent-ffmpeg: specifier: 2.1.2 version: 2.1.2 @@ -257,8 +260,8 @@ importers: specifier: 3.0.0-canary.1 version: 3.0.0-canary.1 nanoid: - specifier: 5.0.2 - version: 5.0.2 + specifier: 5.0.3 + version: 5.0.3 nested-property: specifier: 4.0.0 version: 4.0.0 @@ -281,8 +284,8 @@ importers: specifier: 0.0.14 version: 0.0.14 otpauth: - specifier: 9.1.5 - version: 9.1.5 + specifier: 9.2.0 + version: 9.2.0 parse5: specifier: 7.1.2 version: 7.1.2 @@ -317,8 +320,8 @@ importers: specifier: 3.4.1 version: 3.4.1 re2: - specifier: 1.20.5 - version: 1.20.5 + specifier: 1.20.8 + version: 1.20.8 redis-lock: specifier: 0.1.4 version: 0.1.4 @@ -337,6 +340,9 @@ importers: sanitize-html: specifier: 2.11.0 version: 2.11.0 + secure-json-parse: + specifier: 2.7.0 + version: 2.7.0 sharp: specifier: 0.32.6 version: 0.32.6 @@ -354,10 +360,10 @@ importers: version: 2.1.0 summaly: specifier: github:misskey-dev/summaly - version: github.com/misskey-dev/summaly/d2d8db49943ccb201c1b1b283e9d0a630519fac7 + version: github.com/misskey-dev/summaly/d2a3e07205c3c9769bc5a7b42031c8884b5a25c8 systeminformation: - specifier: 5.21.15 - version: 5.21.15 + specifier: 5.21.17 + version: 5.21.17 tinycolor2: specifier: 1.6.0 version: 1.6.0 @@ -488,133 +494,133 @@ importers: version: 8.3.4 '@swc/jest': specifier: 0.2.29 - version: 0.2.29(@swc/core@1.3.95) + version: 0.2.29(@swc/core@1.3.96) '@types/accepts': - specifier: 1.3.6 - version: 1.3.6 + specifier: 1.3.7 + version: 1.3.7 '@types/archiver': - specifier: 6.0.0 - version: 6.0.0 + specifier: 6.0.1 + version: 6.0.1 '@types/bcryptjs': - specifier: 2.4.5 - version: 2.4.5 + specifier: 2.4.6 + version: 2.4.6 '@types/body-parser': - specifier: 1.19.4 - version: 1.19.4 + specifier: 1.19.5 + version: 1.19.5 '@types/cbor': specifier: 6.0.0 version: 6.0.0 '@types/color-convert': - specifier: 2.0.2 - version: 2.0.2 + specifier: 2.0.3 + version: 2.0.3 '@types/content-disposition': - specifier: 0.5.7 - version: 0.5.7 + specifier: 0.5.8 + version: 0.5.8 '@types/fluent-ffmpeg': - specifier: 2.1.23 - version: 2.1.23 + specifier: 2.1.24 + version: 2.1.24 '@types/http-link-header': - specifier: 1.0.4 - version: 1.0.4 + specifier: 1.0.5 + version: 1.0.5 '@types/jest': - specifier: 29.5.7 - version: 29.5.7 + specifier: 29.5.8 + version: 29.5.8 '@types/js-yaml': - specifier: 4.0.8 - version: 4.0.8 + specifier: 4.0.9 + version: 4.0.9 '@types/jsdom': - specifier: 21.1.4 - version: 21.1.4 + specifier: 21.1.5 + version: 21.1.5 '@types/jsonld': - specifier: 1.5.11 - version: 1.5.11 + specifier: 1.5.12 + version: 1.5.12 '@types/jsrsasign': - specifier: 10.5.11 - version: 10.5.11 + specifier: 10.5.12 + version: 10.5.12 '@types/mime-types': - specifier: 2.1.3 - version: 2.1.3 + specifier: 2.1.4 + version: 2.1.4 '@types/ms': - specifier: 0.7.33 - version: 0.7.33 + specifier: 0.7.34 + version: 0.7.34 '@types/node': - specifier: 20.8.10 - version: 20.8.10 + specifier: 20.9.1 + version: 20.9.1 '@types/node-fetch': specifier: 3.0.3 version: 3.0.3 '@types/nodemailer': - specifier: 6.4.13 - version: 6.4.13 + specifier: 6.4.14 + version: 6.4.14 '@types/oauth': - specifier: 0.9.3 - version: 0.9.3 + specifier: 0.9.4 + version: 0.9.4 '@types/oauth2orize': - specifier: 1.11.2 - version: 1.11.2 + specifier: 1.11.3 + version: 1.11.3 '@types/oauth2orize-pkce': - specifier: 0.1.1 - version: 0.1.1 + specifier: 0.1.2 + version: 0.1.2 '@types/pg': - specifier: 8.10.7 - version: 8.10.7 + specifier: 8.10.9 + version: 8.10.9 '@types/pug': - specifier: 2.0.8 - version: 2.0.8 + specifier: 2.0.9 + version: 2.0.9 '@types/punycode': - specifier: 2.1.1 - version: 2.1.1 + specifier: 2.1.2 + version: 2.1.2 '@types/qrcode': - specifier: 1.5.4 - version: 1.5.4 + specifier: 1.5.5 + version: 1.5.5 '@types/random-seed': - specifier: 0.3.4 - version: 0.3.4 + specifier: 0.3.5 + version: 0.3.5 '@types/ratelimiter': - specifier: 3.4.5 - version: 3.4.5 + specifier: 3.4.6 + version: 3.4.6 '@types/rename': - specifier: 1.0.6 - version: 1.0.6 + specifier: 1.0.7 + version: 1.0.7 '@types/sanitize-html': - specifier: 2.9.3 - version: 2.9.3 + specifier: 2.9.4 + version: 2.9.4 '@types/semver': - specifier: 7.5.4 - version: 7.5.4 + specifier: 7.5.5 + version: 7.5.5 '@types/sharp': specifier: 0.32.0 version: 0.32.0 '@types/simple-oauth2': - specifier: 5.0.6 - version: 5.0.6 + specifier: 5.0.7 + version: 5.0.7 '@types/sinonjs__fake-timers': - specifier: 8.1.4 - version: 8.1.4 + specifier: 8.1.5 + version: 8.1.5 '@types/tinycolor2': - specifier: 1.4.5 - version: 1.4.5 + specifier: 1.4.6 + version: 1.4.6 '@types/tmp': - specifier: 0.2.5 - version: 0.2.5 + specifier: 0.2.6 + version: 0.2.6 '@types/uuid': specifier: ^9.0.4 version: 9.0.4 '@types/vary': - specifier: 1.1.2 - version: 1.1.2 + specifier: 1.1.3 + version: 1.1.3 '@types/web-push': - specifier: 3.6.2 - version: 3.6.2 + specifier: 3.6.3 + version: 3.6.3 '@types/ws': - specifier: 8.5.8 - version: 8.5.8 + specifier: 8.5.9 + version: 8.5.9 '@typescript-eslint/eslint-plugin': - specifier: 6.9.1 - version: 6.9.1(@typescript-eslint/parser@6.9.1)(eslint@8.52.0)(typescript@5.2.2) + specifier: 6.11.0 + version: 6.11.0(@typescript-eslint/parser@6.11.0)(eslint@8.53.0)(typescript@5.2.2) '@typescript-eslint/parser': - specifier: 6.9.1 - version: 6.9.1(eslint@8.52.0)(typescript@5.2.2) + specifier: 6.11.0 + version: 6.11.0(eslint@8.53.0)(typescript@5.2.2) aws-sdk-client-mock: specifier: 3.0.0 version: 3.0.0 @@ -622,17 +628,17 @@ importers: specifier: 7.0.3 version: 7.0.3 eslint: - specifier: 8.52.0 - version: 8.52.0 + specifier: 8.53.0 + version: 8.53.0 eslint-plugin-import: specifier: 2.29.0 - version: 2.29.0(@typescript-eslint/parser@6.9.1)(eslint@8.52.0) + version: 2.29.0(@typescript-eslint/parser@6.11.0)(eslint@8.53.0) execa: specifier: 8.0.1 version: 8.0.1 jest: specifier: 29.7.0 - version: 29.7.0(@types/node@20.8.10) + version: 29.7.0(@types/node@20.9.1) jest-mock: specifier: 29.7.0 version: 29.7.0 @@ -653,31 +659,31 @@ importers: version: 2.0.3 '@rollup/plugin-alias': specifier: 5.0.1 - version: 5.0.1(rollup@4.2.0) + version: 5.0.1(rollup@4.4.1) '@rollup/plugin-json': specifier: 6.0.1 - version: 6.0.1(rollup@4.2.0) + version: 6.0.1(rollup@4.4.1) '@rollup/plugin-replace': specifier: 5.0.5 - version: 5.0.5(rollup@4.2.0) + version: 5.0.5(rollup@4.4.1) '@rollup/pluginutils': specifier: 5.0.5 - version: 5.0.5(rollup@4.2.0) + version: 5.0.5(rollup@4.4.1) '@syuilo/aiscript': specifier: 0.16.0 version: 0.16.0 '@vitejs/plugin-vue': - specifier: 4.4.0 - version: 4.4.0(vite@4.5.0)(vue@3.3.7) + specifier: 4.5.0 + version: 4.5.0(vite@4.5.0)(vue@3.3.8) '@vue-macros/reactivity-transform': - specifier: 0.3.23 - version: 0.3.23(rollup@4.2.0)(vue@3.3.7) + specifier: 0.4.0 + version: 0.4.0(rollup@4.4.1)(vue@3.3.8) '@vue/compiler-sfc': - specifier: 3.3.7 - version: 3.3.7 + specifier: 3.3.8 + version: 3.3.8 aiscript-vscode: - specifier: github:aiscript-dev/aiscript-vscode#v0.0.5 - version: github.com/aiscript-dev/aiscript-vscode/a8fa5bb41885391cdb6a6e3165eaa6e4868da86e + specifier: github:aiscript-dev/aiscript-vscode#v0.0.6 + version: github.com/aiscript-dev/aiscript-vscode/b5a8aa0ad927831a0b867d1c183460a14e6c48cd astring: specifier: 1.8.6 version: 1.8.6 @@ -712,8 +718,8 @@ importers: specifier: 2.0.1 version: 2.0.1(chart.js@4.4.0) chromatic: - specifier: 7.6.0 - version: 7.6.0 + specifier: 9.0.0 + version: 9.0.0 compare-versions: specifier: 6.1.0 version: 6.1.0 @@ -766,8 +772,8 @@ importers: specifier: 0.2.1 version: 0.2.1 rollup: - specifier: 4.2.0 - version: 4.2.0 + specifier: 4.4.1 + version: 4.4.1 sanitize-html: specifier: 2.11.0 version: 2.11.0 @@ -809,125 +815,125 @@ importers: version: 9.0.1 v-code-diff: specifier: 1.7.2 - version: 1.7.2(vue@3.3.7) + version: 1.7.2(vue@3.3.8) vanilla-tilt: specifier: 1.8.1 version: 1.8.1 vite: specifier: 4.5.0 - version: 4.5.0(@types/node@20.8.10)(sass@1.69.5)(terser@5.24.0) + version: 4.5.0(@types/node@20.9.1)(sass@1.69.5)(terser@5.24.0) vue: - specifier: 3.3.7 - version: 3.3.7(typescript@5.2.2) + specifier: 3.3.8 + version: 3.3.8(typescript@5.2.2) vuedraggable: specifier: next - version: 4.1.0(vue@3.3.7) + version: 4.1.0(vue@3.3.8) devDependencies: '@storybook/addon-actions': - specifier: 7.5.2 - version: 7.5.2(react-dom@18.2.0)(react@18.2.0) + specifier: 7.5.3 + version: 7.5.3(react-dom@18.2.0)(react@18.2.0) '@storybook/addon-essentials': - specifier: 7.5.2 - version: 7.5.2(react-dom@18.2.0)(react@18.2.0) + specifier: 7.5.3 + version: 7.5.3(react-dom@18.2.0)(react@18.2.0) '@storybook/addon-interactions': - specifier: 7.5.2 - version: 7.5.2(react-dom@18.2.0)(react@18.2.0) + specifier: 7.5.3 + version: 7.5.3(react-dom@18.2.0)(react@18.2.0) '@storybook/addon-links': - specifier: 7.5.2 - version: 7.5.2(react-dom@18.2.0)(react@18.2.0) + specifier: 7.5.3 + version: 7.5.3(react-dom@18.2.0)(react@18.2.0) '@storybook/addon-storysource': - specifier: 7.5.2 - version: 7.5.2(react-dom@18.2.0)(react@18.2.0) + specifier: 7.5.3 + version: 7.5.3(react-dom@18.2.0)(react@18.2.0) '@storybook/addons': - specifier: 7.5.2 - version: 7.5.2(react-dom@18.2.0)(react@18.2.0) + specifier: 7.5.3 + version: 7.5.3(react-dom@18.2.0)(react@18.2.0) '@storybook/blocks': - specifier: 7.5.2 - version: 7.5.2(react-dom@18.2.0)(react@18.2.0) + specifier: 7.5.3 + version: 7.5.3(react-dom@18.2.0)(react@18.2.0) '@storybook/core-events': - specifier: 7.5.2 - version: 7.5.2 + specifier: 7.5.3 + version: 7.5.3 '@storybook/jest': specifier: 0.2.3 version: 0.2.3(vitest@0.34.6) '@storybook/manager-api': - specifier: 7.5.2 - version: 7.5.2(react-dom@18.2.0)(react@18.2.0) + specifier: 7.5.3 + version: 7.5.3(react-dom@18.2.0)(react@18.2.0) '@storybook/preview-api': - specifier: 7.5.2 - version: 7.5.2 + specifier: 7.5.3 + version: 7.5.3 '@storybook/react': - specifier: 7.5.2 - version: 7.5.2(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2) + specifier: 7.5.3 + version: 7.5.3(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2) '@storybook/react-vite': - specifier: 7.5.2 - version: 7.5.2(react-dom@18.2.0)(react@18.2.0)(rollup@4.2.0)(typescript@5.2.2)(vite@4.5.0) + specifier: 7.5.3 + version: 7.5.3(react-dom@18.2.0)(react@18.2.0)(rollup@4.4.1)(typescript@5.2.2)(vite@4.5.0) '@storybook/testing-library': specifier: 0.2.2 version: 0.2.2 '@storybook/theming': - specifier: 7.5.2 - version: 7.5.2(react-dom@18.2.0)(react@18.2.0) + specifier: 7.5.3 + version: 7.5.3(react-dom@18.2.0)(react@18.2.0) '@storybook/types': - specifier: 7.5.2 - version: 7.5.2 + specifier: 7.5.3 + version: 7.5.3 '@storybook/vue3': - specifier: 7.5.2 - version: 7.5.2(@vue/compiler-core@3.3.7)(vue@3.3.7) + specifier: 7.5.3 + version: 7.5.3(@vue/compiler-core@3.3.8)(vue@3.3.8) '@storybook/vue3-vite': - specifier: 7.5.2 - version: 7.5.2(@vue/compiler-core@3.3.7)(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2)(vite@4.5.0)(vue@3.3.7) + specifier: 7.5.3 + version: 7.5.3(@vue/compiler-core@3.3.8)(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2)(vite@4.5.0)(vue@3.3.8) '@testing-library/vue': specifier: 8.0.0 - version: 8.0.0(@vue/compiler-sfc@3.3.7)(vue@3.3.7) + version: 8.0.0(@vue/compiler-sfc@3.3.8)(vue@3.3.8) '@types/escape-regexp': - specifier: 0.0.2 - version: 0.0.2 + specifier: 0.0.3 + version: 0.0.3 '@types/estree': - specifier: 1.0.4 - version: 1.0.4 + specifier: 1.0.5 + version: 1.0.5 '@types/matter-js': - specifier: 0.19.2 - version: 0.19.2 + specifier: 0.19.4 + version: 0.19.4 '@types/micromatch': - specifier: 4.0.4 - version: 4.0.4 + specifier: 4.0.5 + version: 4.0.5 '@types/node': - specifier: 20.8.10 - version: 20.8.10 + specifier: 20.9.1 + version: 20.9.1 '@types/punycode': - specifier: 2.1.1 - version: 2.1.1 + specifier: 2.1.2 + version: 2.1.2 '@types/sanitize-html': - specifier: 2.9.3 - version: 2.9.3 + specifier: 2.9.4 + version: 2.9.4 '@types/throttle-debounce': - specifier: 5.0.1 - version: 5.0.1 + specifier: 5.0.2 + version: 5.0.2 '@types/tinycolor2': - specifier: 1.4.5 - version: 1.4.5 + specifier: 1.4.6 + version: 1.4.6 '@types/uuid': - specifier: 9.0.6 - version: 9.0.6 + specifier: 9.0.7 + version: 9.0.7 '@types/websocket': - specifier: 1.0.8 - version: 1.0.8 + specifier: 1.0.9 + version: 1.0.9 '@types/ws': - specifier: 8.5.8 - version: 8.5.8 + specifier: 8.5.9 + version: 8.5.9 '@typescript-eslint/eslint-plugin': - specifier: 6.9.1 - version: 6.9.1(@typescript-eslint/parser@6.9.1)(eslint@8.52.0)(typescript@5.2.2) + specifier: 6.11.0 + version: 6.11.0(@typescript-eslint/parser@6.11.0)(eslint@8.53.0)(typescript@5.2.2) '@typescript-eslint/parser': - specifier: 6.9.1 - version: 6.9.1(eslint@8.52.0)(typescript@5.2.2) + specifier: 6.11.0 + version: 6.11.0(eslint@8.53.0)(typescript@5.2.2) '@vitest/coverage-v8': specifier: 0.34.6 version: 0.34.6(vitest@0.34.6) '@vue/runtime-core': - specifier: 3.3.7 - version: 3.3.7 + specifier: 3.3.8 + version: 3.3.8 acorn: specifier: 8.11.2 version: 8.11.2 @@ -935,20 +941,20 @@ importers: specifier: 7.0.3 version: 7.0.3 cypress: - specifier: 13.4.0 - version: 13.4.0 + specifier: 13.5.1 + version: 13.5.1 eslint: - specifier: 8.52.0 - version: 8.52.0 + specifier: 8.53.0 + version: 8.53.0 eslint-plugin-import: specifier: 2.29.0 - version: 2.29.0(@typescript-eslint/parser@6.9.1)(eslint@8.52.0) + version: 2.29.0(@typescript-eslint/parser@6.11.0)(eslint@8.53.0) eslint-plugin-vue: specifier: 9.18.1 - version: 9.18.1(eslint@8.52.0) + version: 9.18.1(eslint@8.53.0) fast-glob: - specifier: 3.3.1 - version: 3.3.1 + specifier: 3.3.2 + version: 3.3.2 happy-dom: specifier: 10.0.3 version: 10.0.3 @@ -965,8 +971,8 @@ importers: specifier: 3.0.1 version: 3.0.1 prettier: - specifier: 3.0.3 - version: 3.0.3 + specifier: 3.1.0 + version: 3.1.0 react: specifier: 18.2.0 version: 18.2.0 @@ -974,17 +980,17 @@ importers: specifier: 18.2.0 version: 18.2.0(react@18.2.0) start-server-and-test: - specifier: 2.0.1 - version: 2.0.1 + specifier: 2.0.3 + version: 2.0.3 storybook: - specifier: 7.5.2 - version: 7.5.2 + specifier: 7.5.3 + version: 7.5.3 storybook-addon-misskey-theme: specifier: github:misskey-dev/storybook-addon-misskey-theme - version: github.com/misskey-dev/storybook-addon-misskey-theme/cf583db098365b2ccc81a82f63ca9c93bc32b640(@storybook/blocks@7.5.2)(@storybook/components@7.5.2)(@storybook/core-events@7.5.2)(@storybook/manager-api@7.5.2)(@storybook/preview-api@7.5.2)(@storybook/theming@7.5.2)(@storybook/types@7.5.2)(react-dom@18.2.0)(react@18.2.0) + version: github.com/misskey-dev/storybook-addon-misskey-theme/cf583db098365b2ccc81a82f63ca9c93bc32b640(@storybook/blocks@7.5.3)(@storybook/components@7.5.3)(@storybook/core-events@7.5.3)(@storybook/manager-api@7.5.3)(@storybook/preview-api@7.5.3)(@storybook/theming@7.5.3)(@storybook/types@7.5.3)(react-dom@18.2.0)(react@18.2.0) summaly: specifier: github:misskey-dev/summaly - version: github.com/misskey-dev/summaly/d2d8db49943ccb201c1b1b283e9d0a630519fac7 + version: github.com/misskey-dev/summaly/d2a3e07205c3c9769bc5a7b42031c8884b5a25c8 vite-plugin-turbosnap: specifier: 1.0.3 version: 1.0.3 @@ -996,7 +1002,7 @@ importers: version: 0.2.2(vitest@0.34.6) vue-eslint-parser: specifier: 9.3.2 - version: 9.3.2(eslint@8.52.0) + version: 9.3.2(eslint@8.53.0) vue-tsc: specifier: 1.8.22 version: 1.8.22(typescript@5.2.2) @@ -1004,35 +1010,35 @@ importers: packages/megalodon: dependencies: '@types/core-js': - specifier: ^2.5.6 - version: 2.5.6 + specifier: ^2.5.8 + version: 2.5.8 '@types/form-data': specifier: ^2.5.0 version: 2.5.0 '@types/jest': - specifier: ^29.5.5 - version: 29.5.5 + specifier: ^29.5.10 + version: 29.5.10 '@types/oauth': - specifier: ^0.9.2 - version: 0.9.2 + specifier: ^0.9.4 + version: 0.9.4 '@types/object-assign-deep': - specifier: ^0.4.1 - version: 0.4.1 + specifier: ^0.4.3 + version: 0.4.3 '@types/parse-link-header': - specifier: ^2.0.1 - version: 2.0.1 + specifier: ^2.0.3 + version: 2.0.3 '@types/uuid': - specifier: ^9.0.4 - version: 9.0.4 + specifier: ^9.0.7 + version: 9.0.7 '@types/ws': - specifier: ^8.5.5 - version: 8.5.5 + specifier: ^8.5.10 + version: 8.5.10 axios: specifier: 1.5.0 version: 1.5.0 dayjs: - specifier: ^1.11.9 - version: 1.11.9 + specifier: ^1.11.10 + version: 1.11.10 form-data: specifier: ^4.0.0 version: 4.0.0 @@ -1062,20 +1068,20 @@ importers: version: 8.14.2(bufferutil@4.0.7)(utf-8-validate@6.0.3) devDependencies: '@typescript-eslint/eslint-plugin': - specifier: ^6.7.2 - version: 6.7.2(@typescript-eslint/parser@6.7.2)(eslint@8.49.0)(typescript@5.1.6) + specifier: ^6.12.0 + version: 6.12.0(@typescript-eslint/parser@6.12.0)(eslint@8.54.0)(typescript@5.1.6) '@typescript-eslint/parser': - specifier: ^6.7.2 - version: 6.7.2(eslint@8.49.0)(typescript@5.1.6) + specifier: ^6.12.0 + version: 6.12.0(eslint@8.54.0)(typescript@5.1.6) eslint: - specifier: ^8.49.0 - version: 8.49.0 + specifier: ^8.54.0 + version: 8.54.0 eslint-config-prettier: specifier: ^9.0.0 - version: 9.0.0(eslint@8.49.0) + version: 9.0.0(eslint@8.54.0) jest: specifier: ^29.7.0 - version: 29.7.0(@types/node@20.8.10) + version: 29.7.0 jest-worker: specifier: ^29.7.0 version: 29.7.0 @@ -1083,23 +1089,23 @@ importers: specifier: 4.17.21 version: 4.17.21 prettier: - specifier: ^3.0.3 - version: 3.0.3 + specifier: ^3.1.0 + version: 3.1.0 ts-jest: specifier: ^29.1.1 - version: 29.1.1(@babel/core@7.22.11)(jest@29.7.0)(typescript@5.1.6) + version: 29.1.1(@babel/core@7.23.3)(jest@29.7.0)(typescript@5.1.6) typedoc: - specifier: ^0.25.1 - version: 0.25.1(typescript@5.1.6) + specifier: ^0.25.3 + version: 0.25.3(typescript@5.1.6) packages/misskey-js: dependencies: '@swc/cli': - specifier: 0.1.62 - version: 0.1.62(@swc/core@1.3.95)(chokidar@3.5.3) + specifier: 0.1.63 + version: 0.1.63(@swc/core@1.3.96)(chokidar@3.5.3) '@swc/core': - specifier: 1.3.95 - version: 1.3.95 + specifier: 1.3.96 + version: 1.3.96 eventemitter3: specifier: 5.0.1 version: 5.0.1 @@ -1108,29 +1114,29 @@ importers: version: 4.4.0 devDependencies: '@microsoft/api-extractor': - specifier: 7.38.2 - version: 7.38.2(@types/node@20.8.10) + specifier: 7.38.3 + version: 7.38.3(@types/node@20.9.1) '@swc/jest': specifier: 0.2.29 - version: 0.2.29(@swc/core@1.3.95) + version: 0.2.29(@swc/core@1.3.96) '@types/jest': - specifier: 29.5.7 - version: 29.5.7 + specifier: 29.5.8 + version: 29.5.8 '@types/node': - specifier: 20.8.10 - version: 20.8.10 + specifier: 20.9.1 + version: 20.9.1 '@typescript-eslint/eslint-plugin': - specifier: 6.9.1 - version: 6.9.1(@typescript-eslint/parser@6.9.1)(eslint@8.52.0)(typescript@5.2.2) + specifier: 6.11.0 + version: 6.11.0(@typescript-eslint/parser@6.11.0)(eslint@8.53.0)(typescript@5.2.2) '@typescript-eslint/parser': - specifier: 6.9.1 - version: 6.9.1(eslint@8.52.0)(typescript@5.2.2) + specifier: 6.11.0 + version: 6.11.0(eslint@8.53.0)(typescript@5.2.2) eslint: - specifier: 8.52.0 - version: 8.52.0 + specifier: 8.53.0 + version: 8.53.0 jest: specifier: 29.7.0 - version: 29.7.0(@types/node@20.8.10) + version: 29.7.0(@types/node@20.9.1) jest-fetch-mock: specifier: 3.0.3 version: 3.0.3 @@ -1160,17 +1166,17 @@ importers: version: link:../misskey-js devDependencies: '@typescript-eslint/parser': - specifier: 6.9.1 - version: 6.9.1(eslint@8.52.0)(typescript@5.2.2) + specifier: 6.11.0 + version: 6.11.0(eslint@8.53.0)(typescript@5.2.2) '@typescript/lib-webworker': specifier: npm:@types/serviceworker@0.0.67 version: /@types/serviceworker@0.0.67 eslint: - specifier: 8.52.0 - version: 8.52.0 + specifier: 8.53.0 + version: 8.53.0 eslint-plugin-import: specifier: 2.29.0 - version: 2.29.0(@typescript-eslint/parser@6.9.1)(eslint@8.52.0) + version: 2.29.0(@typescript-eslint/parser@6.11.0)(eslint@8.53.0) typescript: specifier: 5.2.2 version: 5.2.2 @@ -1781,12 +1787,25 @@ packages: dependencies: '@babel/highlight': 7.22.13 chalk: 2.4.2 + dev: true + + /@babel/code-frame@7.23.4: + resolution: {integrity: sha512-r1IONyb6Ia+jYR2vvIDhdWdlTGhqbBoFqLTQidzZ4kepUFH15ejXvFHxCVbtl7BOXIudsIubf4E81xeA3h3IXA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/highlight': 7.23.4 + chalk: 2.4.2 /@babel/compat-data@7.22.9: resolution: {integrity: sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==} engines: {node: '>=6.9.0'} dev: true + /@babel/compat-data@7.23.3: + resolution: {integrity: sha512-BmR4bWbDIoFJmJ9z2cZ8Gmm2MXgEDgjdWgpKmKWUt54UGFJdlj31ECtbaDvCG/qVdG3AQ1SfpZEs01lUFbzLOQ==} + engines: {node: '>=6.9.0'} + dev: true + /@babel/core@7.22.11: resolution: {integrity: sha512-lh7RJrtPdhibbxndr6/xx0w8+CVlY5FJZiaSz908Fpy+G0xkBFTvwLcKJFF4PJxVfGhVWNebikpWGnOoC71juQ==} engines: {node: '>=6.9.0'} @@ -1802,7 +1821,30 @@ packages: '@babel/traverse': 7.22.11 '@babel/types': 7.22.17 convert-source-map: 1.9.0 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/core@7.23.3: + resolution: {integrity: sha512-Jg+msLuNuCJDyBvFv5+OKOUjWMZgd85bKjbICd3zWrKAo+bJ49HJufi7CQE0q0uR8NGyO6xkCACScNqyjHSZew==} + engines: {node: '>=6.9.0'} + dependencies: + '@ampproject/remapping': 2.2.1 + '@babel/code-frame': 7.23.4 + '@babel/generator': 7.23.4 + '@babel/helper-compilation-targets': 7.22.15 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.3) + '@babel/helpers': 7.23.4 + '@babel/parser': 7.23.4 + '@babel/template': 7.22.15 + '@babel/traverse': 7.23.4 + '@babel/types': 7.23.4 + convert-source-map: 2.0.0 + debug: 4.3.4(supports-color@8.1.1) gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 @@ -1820,6 +1862,16 @@ packages: jsesc: 2.5.2 dev: true + /@babel/generator@7.23.4: + resolution: {integrity: sha512-esuS49Cga3HcThFNebGhlgsrVLkvhqvYDTzgjfFFlHJcIfLe5jFmRRfCQ1KuBfc4Jrtn3ndLgKWAKjBE+IraYQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.4 + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.20 + jsesc: 2.5.2 + dev: true + /@babel/helper-annotate-as-pure@7.22.5: resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==} engines: {node: '>=6.9.0'} @@ -1845,6 +1897,17 @@ packages: semver: 6.3.1 dev: true + /@babel/helper-compilation-targets@7.22.15: + resolution: {integrity: sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/compat-data': 7.23.3 + '@babel/helper-validator-option': 7.22.15 + browserslist: 4.22.1 + lru-cache: 5.1.1 + semver: 6.3.1 + dev: true + /@babel/helper-create-class-features-plugin@7.22.9(@babel/core@7.22.11): resolution: {integrity: sha512-Pwyi89uO4YrGKxL/eNJ8lfEH55DnRloGPOseaA8NFNL6jAUnn+KccaISiFazCj5IolPPDjGSdzQzXVzODVRqUQ==} engines: {node: '>=6.9.0'} @@ -1890,6 +1953,11 @@ packages: - supports-color dev: true + /@babel/helper-environment-visitor@7.22.20: + resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==} + engines: {node: '>=6.9.0'} + dev: true + /@babel/helper-environment-visitor@7.22.5: resolution: {integrity: sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==} engines: {node: '>=6.9.0'} @@ -1903,6 +1971,14 @@ packages: '@babel/types': 7.22.17 dev: true + /@babel/helper-function-name@7.23.0: + resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.22.15 + '@babel/types': 7.23.4 + dev: true + /@babel/helper-hoist-variables@7.22.5: resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} engines: {node: '>=6.9.0'} @@ -1917,6 +1993,13 @@ packages: '@babel/types': 7.22.17 dev: true + /@babel/helper-module-imports@7.22.15: + resolution: {integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.4 + dev: true + /@babel/helper-module-imports@7.22.5: resolution: {integrity: sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==} engines: {node: '>=6.9.0'} @@ -1938,6 +2021,20 @@ packages: '@babel/helper-validator-identifier': 7.22.15 dev: true + /@babel/helper-module-transforms@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.3 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-module-imports': 7.22.15 + '@babel/helper-simple-access': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/helper-validator-identifier': 7.22.20 + dev: true + /@babel/helper-optimise-call-expression@7.22.5: resolution: {integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==} engines: {node: '>=6.9.0'} @@ -1999,10 +2096,23 @@ packages: resolution: {integrity: sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==} engines: {node: '>=6.9.0'} + /@babel/helper-string-parser@7.23.4: + resolution: {integrity: sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==} + engines: {node: '>=6.9.0'} + /@babel/helper-validator-identifier@7.22.15: resolution: {integrity: sha512-4E/F9IIEi8WR94324mbDUMo074YTheJmd7eZF5vITTeYchqAi6sYXRLHUVsmkdmY4QjfKTcB2jB7dVP3NaBElQ==} engines: {node: '>=6.9.0'} + /@babel/helper-validator-identifier@7.22.20: + resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} + engines: {node: '>=6.9.0'} + + /@babel/helper-validator-option@7.22.15: + resolution: {integrity: sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==} + engines: {node: '>=6.9.0'} + dev: true + /@babel/helper-validator-option@7.22.5: resolution: {integrity: sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==} engines: {node: '>=6.9.0'} @@ -2028,6 +2138,17 @@ packages: - supports-color dev: true + /@babel/helpers@7.23.4: + resolution: {integrity: sha512-HfcMizYz10cr3h29VqyfGL6ZWIjTwWfvYBMsBVGwpcbhNGe3wQ1ZXZRPzZoAHhd9OqHadHqjQ89iVKINXnbzuw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.22.15 + '@babel/traverse': 7.23.4 + '@babel/types': 7.23.4 + transitivePeerDependencies: + - supports-color + dev: true + /@babel/highlight@7.22.13: resolution: {integrity: sha512-C/BaXcnnvBCmHTpz/VGZ8jgtE2aYlW4hxDhseJAWZb7gqGM/qtCK6iZUb0TyKFf7BOUsBH7Q7fkRsDRhg1XklQ==} engines: {node: '>=6.9.0'} @@ -2035,6 +2156,15 @@ packages: '@babel/helper-validator-identifier': 7.22.15 chalk: 2.4.2 js-tokens: 4.0.0 + dev: true + + /@babel/highlight@7.23.4: + resolution: {integrity: sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-validator-identifier': 7.22.20 + chalk: 2.4.2 + js-tokens: 4.0.0 /@babel/parser@7.22.16: resolution: {integrity: sha512-+gPfKv8UWeKKeJTUxe59+OobVcrYHETCsORl61EmSkmgymguYk/X5bp7GuUIXaFsc6y++v8ZxPsLSSuujqDphA==} @@ -2050,6 +2180,13 @@ packages: dependencies: '@babel/types': 7.22.17 + /@babel/parser@7.23.4: + resolution: {integrity: sha512-vf3Xna6UEprW+7t6EtOmFpHNAuxw3xqPZghy+brsnusscJRW5BMUzzHZc5ICjULee81WeUV2jjakG09MDglJXQ==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.22.17 + /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.22.5(@babel/core@7.22.11): resolution: {integrity: sha512-NP1M5Rf+u2Gw9qfSO4ihjcTGW5zXTi36ITLd4/EoAcEhIZ0yjMqmftDNl3QC19CX7olhrjpyU454g/2W7X0jvQ==} engines: {node: '>=6.9.0'} @@ -2139,6 +2276,15 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true + /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.23.3): + resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.3 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.22.11): resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} peerDependencies: @@ -2148,6 +2294,15 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true + /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.23.3): + resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.3 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.22.11): resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} peerDependencies: @@ -2157,6 +2312,15 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true + /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.23.3): + resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.3 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.22.11): resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} engines: {node: '>=6.9.0'} @@ -2224,6 +2388,15 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true + /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.23.3): + resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.3 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.22.11): resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} peerDependencies: @@ -2233,13 +2406,22 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-jsx@7.22.5(@babel/core@7.22.11): - resolution: {integrity: sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==} + /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.23.3): + resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.3 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-jsx@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.11 + '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 dev: true @@ -2252,6 +2434,15 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true + /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.23.3): + resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.3 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.22.11): resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} peerDependencies: @@ -2261,6 +2452,15 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true + /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.23.3): + resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.3 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.22.11): resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} peerDependencies: @@ -2270,6 +2470,15 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true + /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.23.3): + resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.3 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.22.11): resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} peerDependencies: @@ -2279,6 +2488,15 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true + /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.23.3): + resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.3 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.22.11): resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} peerDependencies: @@ -2288,6 +2506,15 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true + /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.23.3): + resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.3 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.22.11): resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} peerDependencies: @@ -2297,6 +2524,15 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true + /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.23.3): + resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.3 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.22.11): resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} engines: {node: '>=6.9.0'} @@ -2317,6 +2553,16 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true + /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.23.3): + resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.3 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-syntax-typescript@7.20.0(@babel/core@7.22.11): resolution: {integrity: sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ==} engines: {node: '>=6.9.0'} @@ -2327,6 +2573,16 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true + /@babel/plugin-syntax-typescript@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.3 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.22.11): resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} engines: {node: '>=6.9.0'} @@ -3052,7 +3308,7 @@ packages: clone-deep: 4.0.1 find-cache-dir: 2.1.0 make-dir: 2.1.0 - pirates: 4.0.5 + pirates: 4.0.6 source-map-support: 0.5.21 dev: true @@ -3072,6 +3328,15 @@ packages: dependencies: regenerator-runtime: 0.14.0 + /@babel/template@7.22.15: + resolution: {integrity: sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.23.4 + '@babel/parser': 7.23.4 + '@babel/types': 7.23.4 + dev: true + /@babel/template@7.22.5: resolution: {integrity: sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==} engines: {node: '>=6.9.0'} @@ -3093,7 +3358,25 @@ packages: '@babel/helper-split-export-declaration': 7.22.6 '@babel/parser': 7.23.0 '@babel/types': 7.22.17 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/traverse@7.23.4: + resolution: {integrity: sha512-IYM8wSUwunWTB6tFC2dkKZhxbIjHoWemdK+3f8/wq8aKhbUscxD5MX72ubd90fxvFknaLPeGw5ycU84V1obHJg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.23.4 + '@babel/generator': 7.23.4 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-hoist-variables': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/parser': 7.23.4 + '@babel/types': 7.23.4 + debug: 4.3.4(supports-color@8.1.1) globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -3107,6 +3390,14 @@ packages: '@babel/helper-validator-identifier': 7.22.15 to-fast-properties: 2.0.0 + /@babel/types@7.23.4: + resolution: {integrity: sha512-7uIFwVYpoplT5jp/kVv6EF93VaJ8H+Yn5IczYiaAi98ajzjfoZfslet/e0sLh+wVBjb2qqIut1b0S26VSafsSQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-string-parser': 7.23.4 + '@babel/helper-validator-identifier': 7.22.20 + to-fast-properties: 2.0.0 + /@base2/pretty-print-object@1.0.1: resolution: {integrity: sha512-4iri8i1AqYHJE2DstZYkyEprg6Pq6sKx3xn5FpySk9sNhH7qN2LLlHJCfDTZRILNwQNPD7mATWM0TBui7uC1pA==} dev: true @@ -3727,40 +4018,45 @@ packages: dev: false optional: true - /@eslint-community/eslint-utils@4.4.0(eslint@8.49.0): + /@eslint-community/eslint-utils@4.4.0(eslint@8.53.0): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 dependencies: - eslint: 8.49.0 + eslint: 8.53.0 eslint-visitor-keys: 3.4.3 dev: true - /@eslint-community/eslint-utils@4.4.0(eslint@8.52.0): + /@eslint-community/eslint-utils@4.4.0(eslint@8.54.0): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 dependencies: - eslint: 8.52.0 + eslint: 8.54.0 eslint-visitor-keys: 3.4.3 dev: true + /@eslint-community/regexpp@4.10.0: + resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + dev: true + /@eslint-community/regexpp@4.6.2: resolution: {integrity: sha512-pPTNuaAG3QMH+buKyBIGJs3g/S5y0caxw0ygM3YyE6yJFySwiGGSzA+mM3KJ8QQvzeLh3blwgSonkFjgQdxzMw==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} dev: true - /@eslint/eslintrc@2.1.2: - resolution: {integrity: sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==} + /@eslint/eslintrc@2.1.3: + resolution: {integrity: sha512-yZzuIG+jnVu6hNSzFEN07e8BxF3uAzYtQb6uDkaYZLo6oYZDCq454c5kB8zxnzfCYyP4MIuyBn10L0DqwujTmA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: ajv: 6.12.6 debug: 4.3.4(supports-color@8.1.1) espree: 9.6.1 - globals: 13.19.0 - ignore: 5.2.4 + globals: 13.23.0 + ignore: 5.3.0 import-fresh: 3.3.0 js-yaml: 4.1.0 minimatch: 3.1.2 @@ -3769,13 +4065,13 @@ packages: - supports-color dev: true - /@eslint/js@8.49.0: - resolution: {integrity: sha512-1S8uAY/MTJqVx0SC4epBq+N2yhuwtNwLbJYNZyhL2pO1ZVKn5HFXav5T41Ryzy9K9V7ZId2JB2oy/W4aCd9/2w==} + /@eslint/js@8.53.0: + resolution: {integrity: sha512-Kn7K8dx/5U6+cT1yEhpX1w4PCSg0M+XyRILPgvwcEBjerFWCwQj5sbr3/VmxqV0JGHCBCzyd6LxypEuehypY1w==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@eslint/js@8.52.0: - resolution: {integrity: sha512-mjZVbpaeMZludF2fsWLD0Z9gCref1Tk4i9+wddjRvpUNqqcndPkBD09N/Mapey0b3jaXbLm2kICwFv2E64QinA==} + /@eslint/js@8.54.0: + resolution: {integrity: sha512-ut5V+D+fOoWPgGGNj83GGjnntO39xDy6DWxO0wb7Jp3DcMX0TfIqdzHF85VTQkerdyGmuuMD9AKAo5KiNlf/AQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true @@ -3810,10 +4106,10 @@ packages: text-decoding: 1.0.0 dev: false - /@fastify/cookie@9.1.0: - resolution: {integrity: sha512-w/LlQjj7cmYlQNhEKNm4jQoLkFXCL73kFu1Jy3aL7IFbYEojEKur0f7ieCKUxBBaU65tpaWC83UM8xW7AzY6uw==} + /@fastify/cookie@9.2.0: + resolution: {integrity: sha512-fkg1yjjQRHPFAxSHeLC8CqYuNzvR6Lwlj/KjrzQcGjNBK+K82nW+UfCjfN71g1GkoVoc1GTOgIWkFJpcMfMkHQ==} dependencies: - cookie: 0.5.0 + cookie-signature: 1.2.1 fastify-plugin: 4.5.0 dev: false @@ -3851,10 +4147,11 @@ packages: fast-json-stringify: 5.8.0 dev: false - /@fastify/http-proxy@9.2.1(bufferutil@4.0.7)(utf-8-validate@6.0.3): - resolution: {integrity: sha512-SSxcdrDQQA2PYYBCK+2I+w83QEbMt1s5bsKEERiMG1jcraQulTW3t/Wkje+RWJNNblDhABnhdKXUTbDuA/EIXA==} + /@fastify/http-proxy@9.3.0(bufferutil@4.0.7)(utf-8-validate@6.0.3): + resolution: {integrity: sha512-fQkdgwco8q7eI2PQA8lH++y3Q+hNlIByBYsphl+r4FKRbmrU7ey4WOA/CA9tBhe4oEojGpa3eTU4jXvqf2DBuQ==} dependencies: '@fastify/reply-from': 9.0.1 + fast-querystring: 1.1.2 fastify-plugin: 4.5.0 ws: 8.14.2(bufferutil@4.0.7)(utf-8-validate@6.0.3) transitivePeerDependencies: @@ -3880,9 +4177,9 @@ packages: /@fastify/reply-from@9.0.1: resolution: {integrity: sha512-q9vFNUiXZTY1x8omDPe59os2MYq+3y7KgO/kZoXpZlnud+45Nd8Ot/svEvrUATzjkizIggfS4K8LR9zXDyZZKg==} dependencies: - '@fastify/error': 3.2.0 + '@fastify/error': 3.4.0 end-of-stream: 1.4.4 - fast-querystring: 1.1.0 + fast-querystring: 1.1.2 fastify-plugin: 4.5.0 pump: 3.0.0 tiny-lru: 10.0.1 @@ -4012,17 +4309,6 @@ packages: resolution: {integrity: sha512-PdUmzpvcUM3Rh39kvz9RdbPVYhMjBjdV7Suw7ZduP7urRLsZR8l5tzgSWKm7TExwBYDFwTnYrZbnE0rQ3N5NLQ==} dev: false - /@humanwhocodes/config-array@0.11.11: - resolution: {integrity: sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==} - engines: {node: '>=10.10.0'} - dependencies: - '@humanwhocodes/object-schema': 1.2.1 - debug: 4.3.4(supports-color@8.1.1) - minimatch: 3.1.2 - transitivePeerDependencies: - - supports-color - dev: true - /@humanwhocodes/config-array@0.11.13: resolution: {integrity: sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==} engines: {node: '>=10.10.0'} @@ -4039,10 +4325,6 @@ packages: engines: {node: '>=12.22'} dev: true - /@humanwhocodes/object-schema@1.2.1: - resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} - dev: true - /@humanwhocodes/object-schema@2.0.1: resolution: {integrity: sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==} dev: true @@ -4083,7 +4365,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 - '@types/node': 20.8.10 + '@types/node': 20.9.4 chalk: 4.1.2 jest-message-util: 29.7.0 jest-util: 29.7.0 @@ -4104,14 +4386,14 @@ packages: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.8.10 + '@types/node': 20.9.4 ansi-escapes: 4.3.2 chalk: 4.1.2 - ci-info: 3.7.1 + ci-info: 3.9.0 exit: 0.1.2 graceful-fs: 4.2.11 jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@20.8.10) + jest-config: 29.7.0(@types/node@20.9.4) jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 @@ -4146,7 +4428,7 @@ packages: dependencies: '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.8.10 + '@types/node': 20.9.1 jest-mock: 29.7.0 dev: true @@ -4172,7 +4454,7 @@ packages: dependencies: '@jest/types': 29.6.3 '@sinonjs/fake-timers': 10.3.0 - '@types/node': 20.8.10 + '@types/node': 20.9.1 jest-message-util: 29.7.0 jest-mock: 29.7.0 jest-util: 29.7.0 @@ -4204,25 +4486,25 @@ packages: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@jridgewell/trace-mapping': 0.3.18 - '@types/node': 20.8.10 + '@jridgewell/trace-mapping': 0.3.20 + '@types/node': 20.9.4 chalk: 4.1.2 - collect-v8-coverage: 1.0.1 + collect-v8-coverage: 1.0.2 exit: 0.1.2 glob: 7.2.3 graceful-fs: 4.2.11 - istanbul-lib-coverage: 3.2.0 - istanbul-lib-instrument: 6.0.0 + istanbul-lib-coverage: 3.2.2 + istanbul-lib-instrument: 6.0.1 istanbul-lib-report: 3.0.1 istanbul-lib-source-maps: 4.0.1 - istanbul-reports: 3.1.5 + istanbul-reports: 3.1.6 jest-message-util: 29.7.0 jest-util: 29.7.0 jest-worker: 29.7.0 slash: 3.0.0 string-length: 4.0.2 strip-ansi: 6.0.1 - v8-to-istanbul: 9.1.0 + v8-to-istanbul: 9.2.0 transitivePeerDependencies: - supports-color dev: true @@ -4255,8 +4537,8 @@ packages: dependencies: '@jest/console': 29.7.0 '@jest/types': 29.6.3 - '@types/istanbul-lib-coverage': 2.0.4 - collect-v8-coverage: 1.0.1 + '@types/istanbul-lib-coverage': 2.0.6 + collect-v8-coverage: 1.0.2 dev: true /@jest/test-sequencer@29.7.0: @@ -4273,9 +4555,9 @@ packages: resolution: {integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@babel/core': 7.22.11 + '@babel/core': 7.23.3 '@jest/types': 29.6.3 - '@jridgewell/trace-mapping': 0.3.18 + '@jridgewell/trace-mapping': 0.3.20 babel-plugin-istanbul: 6.1.1 chalk: 4.1.2 convert-source-map: 2.0.0 @@ -4285,7 +4567,7 @@ packages: jest-regex-util: 29.6.3 jest-util: 29.7.0 micromatch: 4.0.5 - pirates: 4.0.5 + pirates: 4.0.6 slash: 3.0.0 write-file-atomic: 4.0.2 transitivePeerDependencies: @@ -4298,7 +4580,7 @@ packages: dependencies: '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 20.8.10 + '@types/node': 20.9.1 '@types/yargs': 16.0.5 chalk: 4.1.2 dev: true @@ -4308,10 +4590,10 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/schemas': 29.6.3 - '@types/istanbul-lib-coverage': 2.0.4 - '@types/istanbul-reports': 3.0.1 - '@types/node': 20.8.10 - '@types/yargs': 17.0.19 + '@types/istanbul-lib-coverage': 2.0.6 + '@types/istanbul-reports': 3.0.4 + '@types/node': 20.9.1 + '@types/yargs': 17.0.32 chalk: 4.1.2 /@joshwooding/vite-plugin-react-docgen-typescript@0.3.0(typescript@5.2.2)(vite@4.5.0): @@ -4328,7 +4610,7 @@ packages: magic-string: 0.27.0 react-docgen-typescript: 2.2.2(typescript@5.2.2) typescript: 5.2.2 - vite: 4.5.0(@types/node@20.8.10)(sass@1.69.5)(terser@5.24.0) + vite: 4.5.0(@types/node@20.9.1)(sass@1.69.5)(terser@5.24.0) dev: true /@jridgewell/gen-mapping@0.3.2: @@ -4339,10 +4621,24 @@ packages: '@jridgewell/sourcemap-codec': 1.4.15 '@jridgewell/trace-mapping': 0.3.18 + /@jridgewell/gen-mapping@0.3.3: + resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/set-array': 1.1.2 + '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/trace-mapping': 0.3.20 + dev: true + /@jridgewell/resolve-uri@3.1.0: resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} engines: {node: '>=6.0.0'} + /@jridgewell/resolve-uri@3.1.1: + resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} + engines: {node: '>=6.0.0'} + dev: true + /@jridgewell/set-array@1.1.2: resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} engines: {node: '>=6.0.0'} @@ -4365,6 +4661,13 @@ packages: '@jridgewell/resolve-uri': 3.1.0 '@jridgewell/sourcemap-codec': 1.4.14 + /@jridgewell/trace-mapping@0.3.20: + resolution: {integrity: sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==} + dependencies: + '@jridgewell/resolve-uri': 3.1.1 + '@jridgewell/sourcemap-codec': 1.4.15 + dev: true + /@juggle/resize-observer@3.4.0: resolution: {integrity: sha512-dfLbk+PwWvFzSxwk3n5ySL0hfBog779o8h68wK/7/APo/7cgyWp5jcXockbxdk5kFRkbeXWm4Fbi9FrdN381sA==} dev: true @@ -4411,24 +4714,24 @@ packages: react: 18.2.0 dev: true - /@microsoft/api-extractor-model@7.28.2(@types/node@20.8.10): + /@microsoft/api-extractor-model@7.28.2(@types/node@20.9.1): resolution: {integrity: sha512-vkojrM2fo3q4n4oPh4uUZdjJ2DxQ2+RnDQL/xhTWSRUNPF6P4QyrvY357HBxbnltKcYu+nNNolVqc6TIGQ73Ig==} dependencies: '@microsoft/tsdoc': 0.14.2 '@microsoft/tsdoc-config': 0.16.2 - '@rushstack/node-core-library': 3.61.0(@types/node@20.8.10) + '@rushstack/node-core-library': 3.61.0(@types/node@20.9.1) transitivePeerDependencies: - '@types/node' dev: true - /@microsoft/api-extractor@7.38.2(@types/node@20.8.10): - resolution: {integrity: sha512-JOARuhTwOcOMIU0O2czscoJy3ddVzIRhSA9/7T1ALuZSNphgWsPk+Bv4E7AnBDmTV4pP4lBNLtCxEHjjpWaytQ==} + /@microsoft/api-extractor@7.38.3(@types/node@20.9.1): + resolution: {integrity: sha512-xt9iYyC5f39281j77JTA9C3ISJpW1XWkCcnw+2vM78CPnro6KhPfwQdPDfwS5JCPNuq0grm8cMdPUOPvrchDWw==} hasBin: true dependencies: - '@microsoft/api-extractor-model': 7.28.2(@types/node@20.8.10) + '@microsoft/api-extractor-model': 7.28.2(@types/node@20.9.1) '@microsoft/tsdoc': 0.14.2 '@microsoft/tsdoc-config': 0.16.2 - '@rushstack/node-core-library': 3.61.0(@types/node@20.8.10) + '@rushstack/node-core-library': 3.61.0(@types/node@20.9.1) '@rushstack/rig-package': 0.5.1 '@rushstack/ts-command-line': 4.17.1 colors: 1.2.5 @@ -4464,7 +4767,7 @@ packages: ext-name: 5.0.0 file-type: 17.1.6 filenamify: 5.1.1 - got: 11.8.5 + got: 11.8.6 os-filter-obj: 2.0.0 dev: false @@ -4640,6 +4943,19 @@ packages: '@nodelib/fs.scandir': 2.1.5 fastq: 1.15.0 + /@npmcli/agent@2.2.0: + resolution: {integrity: sha512-2yThA1Es98orMkpSLVqlDZAMPK3jHJhifP2gnNUdk1754uZ8yI5c+ulCoVG+WlntQA6MzhrURMXjSd9Z7dJ2/Q==} + engines: {node: ^16.14.0 || >=18.0.0} + dependencies: + agent-base: 7.1.0 + http-proxy-agent: 7.0.0 + https-proxy-agent: 7.0.2 + lru-cache: 10.1.0 + socks-proxy-agent: 8.0.2 + transitivePeerDependencies: + - supports-color + dev: false + /@npmcli/fs@3.1.0: resolution: {integrity: sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} @@ -5254,7 +5570,7 @@ packages: '@babel/runtime': 7.23.2 dev: true - /@rollup/plugin-alias@5.0.1(rollup@4.2.0): + /@rollup/plugin-alias@5.0.1(rollup@4.4.1): resolution: {integrity: sha512-JObvbWdOHoMy9W7SU0lvGhDtWq9PllP5mjpAy+TUslZG/WzOId9u80Hsqq1vCUn9pFJ0cxpdcnAv+QzU2zFH3Q==} engines: {node: '>=14.0.0'} peerDependencies: @@ -5263,11 +5579,11 @@ packages: rollup: optional: true dependencies: - rollup: 4.2.0 + rollup: 4.4.1 slash: 4.0.0 dev: false - /@rollup/plugin-json@6.0.1(rollup@4.2.0): + /@rollup/plugin-json@6.0.1(rollup@4.4.1): resolution: {integrity: sha512-RgVfl5hWMkxN1h/uZj8FVESvPuBJ/uf6ly6GTj0GONnkfoBN5KC0MSz+PN2OLDgYXMhtG0mWpTrkiOjoxAIevw==} engines: {node: '>=14.0.0'} peerDependencies: @@ -5276,11 +5592,11 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.5(rollup@4.2.0) - rollup: 4.2.0 + '@rollup/pluginutils': 5.0.5(rollup@4.4.1) + rollup: 4.4.1 dev: false - /@rollup/plugin-replace@5.0.5(rollup@4.2.0): + /@rollup/plugin-replace@5.0.5(rollup@4.4.1): resolution: {integrity: sha512-rYO4fOi8lMaTg/z5Jb+hKnrHHVn8j2lwkqwyS4kTRhKyWOLf2wST2sWXr4WzWiTcoHTp2sTjqUbqIj2E39slKQ==} engines: {node: '>=14.0.0'} peerDependencies: @@ -5289,12 +5605,12 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.5(rollup@4.2.0) + '@rollup/pluginutils': 5.0.5(rollup@4.4.1) magic-string: 0.30.5 - rollup: 4.2.0 + rollup: 4.4.1 dev: false - /@rollup/pluginutils@5.0.5(rollup@4.2.0): + /@rollup/pluginutils@5.0.5(rollup@4.4.1): resolution: {integrity: sha512-6aEYR910NyP73oHiJglti74iRyOwgFU4x3meH/H8OJx6Ry0j6cOVZ5X/wTvub7G7Ao6qaHBEaNsV3GLJkSsF+Q==} engines: {node: '>=14.0.0'} peerDependencies: @@ -5303,96 +5619,96 @@ packages: rollup: optional: true dependencies: - '@types/estree': 1.0.4 + '@types/estree': 1.0.5 estree-walker: 2.0.2 picomatch: 2.3.1 - rollup: 4.2.0 + rollup: 4.4.1 - /@rollup/rollup-android-arm-eabi@4.2.0: - resolution: {integrity: sha512-8PlggAxGxavr+pkCNeV1TM2wTb2o+cUWDg9M1cm9nR27Dsn287uZtSLYXoQqQcmq+sYfF7lHfd3sWJJinH9GmA==} + /@rollup/rollup-android-arm-eabi@4.4.1: + resolution: {integrity: sha512-Ss4suS/sd+6xLRu+MLCkED2mUrAyqHmmvZB+zpzZ9Znn9S8wCkTQCJaQ8P8aHofnvG5L16u9MVnJjCqioPErwQ==} cpu: [arm] os: [android] requiresBuild: true optional: true - /@rollup/rollup-android-arm64@4.2.0: - resolution: {integrity: sha512-+71T85hbMFrJI+zKQULNmSYBeIhru55PYoF/u75MyeN2FcxE4HSPw20319b+FcZ4lWx2Nx/Ql9tN+hoaD3GH/A==} + /@rollup/rollup-android-arm64@4.4.1: + resolution: {integrity: sha512-sRSkGTvGsARwWd7TzC8LKRf8FiPn7257vd/edzmvG4RIr9x68KBN0/Ek48CkuUJ5Pj/Dp9vKWv6PEupjKWjTYA==} cpu: [arm64] os: [android] requiresBuild: true optional: true - /@rollup/rollup-darwin-arm64@4.2.0: - resolution: {integrity: sha512-IIIQLuG43QIElT1JZqUP/zqIdiJl4t9U/boa0GZnQTw9m1X0k3mlBuysbgYXeloLT1RozdL7bgw4lpSaI8GOXw==} + /@rollup/rollup-darwin-arm64@4.4.1: + resolution: {integrity: sha512-nz0AiGrrXyaWpsmBXUGOBiRDU0wyfSXbFuF98pPvIO8O6auQsPG6riWsfQqmCCC5FNd8zKQ4JhgugRNAkBJ8mQ==} cpu: [arm64] os: [darwin] requiresBuild: true optional: true - /@rollup/rollup-darwin-x64@4.2.0: - resolution: {integrity: sha512-BXcXvnLaea1Xz900omrGJhxHFJfH9jZ0CpJuVsbjjhpniJ6qiLXz3xA8Lekaa4MuhFcJd4f0r+Ky1G4VFbYhWw==} + /@rollup/rollup-darwin-x64@4.4.1: + resolution: {integrity: sha512-Ogqvf4/Ve/faMaiPRvzsJEqajbqs00LO+8vtrPBVvLgdw4wBg6ZDXdkDAZO+4MLnrc8mhGV6VJAzYScZdPLtJg==} cpu: [x64] os: [darwin] requiresBuild: true optional: true - /@rollup/rollup-linux-arm-gnueabihf@4.2.0: - resolution: {integrity: sha512-f4K3MKw9Y4AKi4ANGnmPIglr+S+8tO858YrGVuqAHXxJdVghBmz9CPU9kDpOnGvT4g4vg5uNyIFpOOFvffXyMA==} + /@rollup/rollup-linux-arm-gnueabihf@4.4.1: + resolution: {integrity: sha512-9zc2tqlr6HfO+hx9+wktUlWTRdje7Ub15iJqKcqg5uJZ+iKqmd2CMxlgPpXi7+bU7bjfDIuvCvnGk7wewFEhCg==} cpu: [arm] os: [linux] requiresBuild: true optional: true - /@rollup/rollup-linux-arm64-gnu@4.2.0: - resolution: {integrity: sha512-bNsTYQBgp4H7w6cT7FZhesxpcUPahsSIy4NgdZjH1ZwEoZHxi4XKglj+CsSEkhsKi+x6toVvMylhjRKhEMYfnA==} + /@rollup/rollup-linux-arm64-gnu@4.4.1: + resolution: {integrity: sha512-phLb1fN3rq2o1j1v+nKxXUTSJnAhzhU0hLrl7Qzb0fLpwkGMHDem+o6d+ZI8+/BlTXfMU4kVWGvy6g9k/B8L6Q==} cpu: [arm64] os: [linux] requiresBuild: true optional: true - /@rollup/rollup-linux-arm64-musl@4.2.0: - resolution: {integrity: sha512-Jp1NxBJpGLuxRU2ihrQk4IZ+ia5nffobG6sOFUPW5PMYkF0kQtxEbeDuCa69Xif211vUOcxlOnf5IOEIpTEySA==} + /@rollup/rollup-linux-arm64-musl@4.4.1: + resolution: {integrity: sha512-M2sDtw4tf57VPSjbTAN/lz1doWUqO2CbQuX3L9K6GWIR5uw9j+ROKCvvUNBY8WUbMxwaoc8mH9HmmBKsLht7+w==} cpu: [arm64] os: [linux] requiresBuild: true optional: true - /@rollup/rollup-linux-x64-gnu@4.2.0: - resolution: {integrity: sha512-3p3iRtQmv2aXw+vtKNyZMLOQ+LSRsqArXjKAh2Oj9cqwfIRe7OXvdkOzWfZOIp1F/x5KJzVAxGxnniF4cMbnsQ==} + /@rollup/rollup-linux-x64-gnu@4.4.1: + resolution: {integrity: sha512-mHIlRLX+hx+30cD6c4BaBOsSqdnCE4ok7/KDvjHYAHoSuveoMMxIisZFvcLhUnyZcPBXDGZTuBoalcuh43UfQQ==} cpu: [x64] os: [linux] requiresBuild: true optional: true - /@rollup/rollup-linux-x64-musl@4.2.0: - resolution: {integrity: sha512-atih7IF/reUZe4LBLC5Izd44hth2tfDIG8LaPp4/cQXdHh9jabcZEvIeRPrpDq0i/Uu487Qu5gl5KwyAnWajnw==} + /@rollup/rollup-linux-x64-musl@4.4.1: + resolution: {integrity: sha512-tB+RZuDi3zxFx7vDrjTNGVLu2KNyzYv+UY8jz7e4TMEoAj7iEt8Qk6xVu6mo3pgjnsHj6jnq3uuRsHp97DLwOA==} cpu: [x64] os: [linux] requiresBuild: true optional: true - /@rollup/rollup-win32-arm64-msvc@4.2.0: - resolution: {integrity: sha512-vYxF3tKJeUE4ceYzpNe2p84RXk/fGK30I8frpRfv/MyPStej/mRlojztkN7Jtd1014HHVeq/tYaMBz/3IxkxZw==} + /@rollup/rollup-win32-arm64-msvc@4.4.1: + resolution: {integrity: sha512-Hdn39PzOQowK/HZzYpCuZdJC91PE6EaGbTe2VCA9oq2u18evkisQfws0Smh9QQGNNRa/T7MOuGNQoLeXhhE3PQ==} cpu: [arm64] os: [win32] requiresBuild: true optional: true - /@rollup/rollup-win32-ia32-msvc@4.2.0: - resolution: {integrity: sha512-1LZJ6zpl93SaPQvas618bMFarVwufWTaczH4ESAbFcwiC4OtznA6Ym+hFPyIGaJaGEB8uMWWac0uXGPXOg5FGA==} + /@rollup/rollup-win32-ia32-msvc@4.4.1: + resolution: {integrity: sha512-tLpKb1Elm9fM8c5w3nl4N1eLTP4bCqTYw9tqUBxX8/hsxqHO3dxc2qPbZ9PNkdK4tg4iLEYn0pOUnVByRd2CbA==} cpu: [ia32] os: [win32] requiresBuild: true optional: true - /@rollup/rollup-win32-x64-msvc@4.2.0: - resolution: {integrity: sha512-dgQfFdHCNg08nM5zBmqxqc9vrm0DVzhWotpavbPa0j4//MAOKZEB75yGAfzQE9fUJ+4pvM1239Y4IhL8f6sSog==} + /@rollup/rollup-win32-x64-msvc@4.4.1: + resolution: {integrity: sha512-eAhItDX9yQtZVM3yvXS/VR3qPqcnXvnLyx1pLXl4JzyNMBNO3KC986t/iAg2zcMzpAp9JSvxB5VZGnBiNoA98w==} cpu: [x64] os: [win32] requiresBuild: true optional: true - /@rushstack/node-core-library@3.61.0(@types/node@20.8.10): + /@rushstack/node-core-library@3.61.0(@types/node@20.9.1): resolution: {integrity: sha512-tdOjdErme+/YOu4gPed3sFS72GhtWCgNV9oDsHDnoLY5oDfwjKUc9Z+JOZZ37uAxcm/OCahDHfuu2ugqrfWAVQ==} peerDependencies: '@types/node': '*' @@ -5400,7 +5716,7 @@ packages: '@types/node': optional: true dependencies: - '@types/node': 20.8.10 + '@types/node': 20.9.1 colors: 1.2.5 fs-extra: 7.0.1 import-lazy: 4.0.0 @@ -5475,6 +5791,11 @@ packages: /@sindresorhus/is@5.3.0: resolution: {integrity: sha512-CX6t4SYQ37lzxicAqsBtxA3OseeoVrh9cSJ5PFYam0GksYlupRfy1A+Q4aYD3zvcfECLc0zO2u+ZnR2UYKvCrw==} engines: {node: '>=14.16'} + dev: false + + /@sindresorhus/is@5.6.0: + resolution: {integrity: sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==} + engines: {node: '>=14.16'} /@sinonjs/commons@1.8.6: resolution: {integrity: sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==} @@ -5954,8 +6275,8 @@ packages: resolution: {integrity: sha512-Uy0+khmZqUrUGm5dmMqVlnvufZRSK0FbYzVgp0UMstm+F5+W2/jnEEQyc9vo1ZR/E5ZI/B1WjjoTqBqwJL6Krw==} dev: false - /@storybook/addon-actions@7.5.2(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-jKF3rrMEu42TgZ5AEszADpVdASDu1S4Ozp1Ymf4akHLkaMOv+yzzD7LV6YGjJz8S2IryndZqE47e6stF0T99uA==} + /@storybook/addon-actions@7.5.3(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-v3yL6Eq/jCiXfA24JjRdbEQUuorms6tmrywaKcd1tAy4Ftgof0KHB4tTcTyiajrI5bh6PVJoRBkE8IDqmNAHkA==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -5965,14 +6286,14 @@ packages: react-dom: optional: true dependencies: - '@storybook/client-logger': 7.5.2 - '@storybook/components': 7.5.2(react-dom@18.2.0)(react@18.2.0) - '@storybook/core-events': 7.5.2 + '@storybook/client-logger': 7.5.3 + '@storybook/components': 7.5.3(react-dom@18.2.0)(react@18.2.0) + '@storybook/core-events': 7.5.3 '@storybook/global': 5.0.0 - '@storybook/manager-api': 7.5.2(react-dom@18.2.0)(react@18.2.0) - '@storybook/preview-api': 7.5.2 - '@storybook/theming': 7.5.2(react-dom@18.2.0)(react@18.2.0) - '@storybook/types': 7.5.2 + '@storybook/manager-api': 7.5.3(react-dom@18.2.0)(react@18.2.0) + '@storybook/preview-api': 7.5.3 + '@storybook/theming': 7.5.3(react-dom@18.2.0)(react@18.2.0) + '@storybook/types': 7.5.3 dequal: 2.0.3 lodash: 4.17.21 polished: 4.2.2 @@ -5988,8 +6309,8 @@ packages: - '@types/react-dom' dev: true - /@storybook/addon-backgrounds@7.5.2(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-CII8c+db8sVciWjFY0ProZi5E2d+cOc+XlVHCAVaUYp2Bp/1MV7en8etfLK7DEoH6kBVz1+t3TaPU+xjUTR8Ig==} + /@storybook/addon-backgrounds@7.5.3(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-UCOVd4UNIL5FRiwi9nyiWFocn/7ewwS6bIWnq66AaHg/sv92YwsPmgQJn0DMBGDOvUAWpiHdVsZNOTX6nvw4gA==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -5999,14 +6320,14 @@ packages: react-dom: optional: true dependencies: - '@storybook/client-logger': 7.5.2 - '@storybook/components': 7.5.2(react-dom@18.2.0)(react@18.2.0) - '@storybook/core-events': 7.5.2 + '@storybook/client-logger': 7.5.3 + '@storybook/components': 7.5.3(react-dom@18.2.0)(react@18.2.0) + '@storybook/core-events': 7.5.3 '@storybook/global': 5.0.0 - '@storybook/manager-api': 7.5.2(react-dom@18.2.0)(react@18.2.0) - '@storybook/preview-api': 7.5.2 - '@storybook/theming': 7.5.2(react-dom@18.2.0)(react@18.2.0) - '@storybook/types': 7.5.2 + '@storybook/manager-api': 7.5.3(react-dom@18.2.0)(react@18.2.0) + '@storybook/preview-api': 7.5.3 + '@storybook/theming': 7.5.3(react-dom@18.2.0)(react@18.2.0) + '@storybook/types': 7.5.3 memoizerific: 1.11.3 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -6016,8 +6337,8 @@ packages: - '@types/react-dom' dev: true - /@storybook/addon-controls@7.5.2(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-f04VcBSfm3yMT1hvaFEwCRbdwiXQbddfEwhwjEVsqd+CA0s600W4L7B8tT4daXMsU6NsZyibev910IKTnDw6xQ==} + /@storybook/addon-controls@7.5.3(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-KEuU4X5Xr6cJI9xrzOUVGEmUf1iHPfK7cj0GACKv0GElsdIsQryv+OZ7gRnvmNax/e2hm2t9cJcFxB24/p6rVg==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -6027,16 +6348,16 @@ packages: react-dom: optional: true dependencies: - '@storybook/blocks': 7.5.2(react-dom@18.2.0)(react@18.2.0) - '@storybook/client-logger': 7.5.2 - '@storybook/components': 7.5.2(react-dom@18.2.0)(react@18.2.0) - '@storybook/core-common': 7.5.2 - '@storybook/core-events': 7.5.2 - '@storybook/manager-api': 7.5.2(react-dom@18.2.0)(react@18.2.0) - '@storybook/node-logger': 7.5.2 - '@storybook/preview-api': 7.5.2 - '@storybook/theming': 7.5.2(react-dom@18.2.0)(react@18.2.0) - '@storybook/types': 7.5.2 + '@storybook/blocks': 7.5.3(react-dom@18.2.0)(react@18.2.0) + '@storybook/client-logger': 7.5.3 + '@storybook/components': 7.5.3(react-dom@18.2.0)(react@18.2.0) + '@storybook/core-common': 7.5.3 + '@storybook/core-events': 7.5.3 + '@storybook/manager-api': 7.5.3(react-dom@18.2.0)(react@18.2.0) + '@storybook/node-logger': 7.5.3 + '@storybook/preview-api': 7.5.3 + '@storybook/theming': 7.5.3(react-dom@18.2.0)(react@18.2.0) + '@storybook/types': 7.5.3 lodash: 4.17.21 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -6048,27 +6369,27 @@ packages: - supports-color dev: true - /@storybook/addon-docs@7.5.2(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-KxX4XuxK6YcI2mUosFkAlueMon/nby6mp3GRHenuK+nobY0ecfILqSTbsOeO1wqPxALBoq7fLnrgYhdDlandgQ==} + /@storybook/addon-docs@7.5.3(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-JVQ6iCXKESij/SbE4Wq47dkSSgBRulvA8SUf8NWL5m9qpiHrg0lPSERHfoTLiB5uC/JwF0OKIlhxoWl+zCmtYg==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: '@jest/transform': 29.7.0 '@mdx-js/react': 2.3.0(react@18.2.0) - '@storybook/blocks': 7.5.2(react-dom@18.2.0)(react@18.2.0) - '@storybook/client-logger': 7.5.2 - '@storybook/components': 7.5.2(react-dom@18.2.0)(react@18.2.0) - '@storybook/csf-plugin': 7.5.2 - '@storybook/csf-tools': 7.5.2 + '@storybook/blocks': 7.5.3(react-dom@18.2.0)(react@18.2.0) + '@storybook/client-logger': 7.5.3 + '@storybook/components': 7.5.3(react-dom@18.2.0)(react@18.2.0) + '@storybook/csf-plugin': 7.5.3 + '@storybook/csf-tools': 7.5.3 '@storybook/global': 5.0.0 '@storybook/mdx2-csf': 1.0.0 - '@storybook/node-logger': 7.5.2 - '@storybook/postinstall': 7.5.2 - '@storybook/preview-api': 7.5.2 - '@storybook/react-dom-shim': 7.5.2(react-dom@18.2.0)(react@18.2.0) - '@storybook/theming': 7.5.2(react-dom@18.2.0)(react@18.2.0) - '@storybook/types': 7.5.2 + '@storybook/node-logger': 7.5.3 + '@storybook/postinstall': 7.5.3 + '@storybook/preview-api': 7.5.3 + '@storybook/react-dom-shim': 7.5.3(react-dom@18.2.0)(react@18.2.0) + '@storybook/theming': 7.5.3(react-dom@18.2.0)(react@18.2.0) + '@storybook/types': 7.5.3 fs-extra: 11.1.1 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -6082,25 +6403,25 @@ packages: - supports-color dev: true - /@storybook/addon-essentials@7.5.2(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-bN7Q+8J3xVgNoBKCwtyX1O5jXuuJavYdAPiPQGrt6YegUi3gVfr5n/+/mNlu6Fd5AThFcVFei6gS9aiYmU/h8g==} + /@storybook/addon-essentials@7.5.3(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-PYj6swEI4nEzIbOTyHJB8u3K8ABYKoaW8XB5emMwsnrzB/TN7auHVhze2bQ/+ax5wyPKZpArPjxbWlSHtSws+A==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: - '@storybook/addon-actions': 7.5.2(react-dom@18.2.0)(react@18.2.0) - '@storybook/addon-backgrounds': 7.5.2(react-dom@18.2.0)(react@18.2.0) - '@storybook/addon-controls': 7.5.2(react-dom@18.2.0)(react@18.2.0) - '@storybook/addon-docs': 7.5.2(react-dom@18.2.0)(react@18.2.0) - '@storybook/addon-highlight': 7.5.2 - '@storybook/addon-measure': 7.5.2(react-dom@18.2.0)(react@18.2.0) - '@storybook/addon-outline': 7.5.2(react-dom@18.2.0)(react@18.2.0) - '@storybook/addon-toolbars': 7.5.2(react-dom@18.2.0)(react@18.2.0) - '@storybook/addon-viewport': 7.5.2(react-dom@18.2.0)(react@18.2.0) - '@storybook/core-common': 7.5.2 - '@storybook/manager-api': 7.5.2(react-dom@18.2.0)(react@18.2.0) - '@storybook/node-logger': 7.5.2 - '@storybook/preview-api': 7.5.2 + '@storybook/addon-actions': 7.5.3(react-dom@18.2.0)(react@18.2.0) + '@storybook/addon-backgrounds': 7.5.3(react-dom@18.2.0)(react@18.2.0) + '@storybook/addon-controls': 7.5.3(react-dom@18.2.0)(react@18.2.0) + '@storybook/addon-docs': 7.5.3(react-dom@18.2.0)(react@18.2.0) + '@storybook/addon-highlight': 7.5.3 + '@storybook/addon-measure': 7.5.3(react-dom@18.2.0)(react@18.2.0) + '@storybook/addon-outline': 7.5.3(react-dom@18.2.0)(react@18.2.0) + '@storybook/addon-toolbars': 7.5.3(react-dom@18.2.0)(react@18.2.0) + '@storybook/addon-viewport': 7.5.3(react-dom@18.2.0)(react@18.2.0) + '@storybook/core-common': 7.5.3 + '@storybook/manager-api': 7.5.3(react-dom@18.2.0)(react@18.2.0) + '@storybook/node-logger': 7.5.3 + '@storybook/preview-api': 7.5.3 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) ts-dedent: 2.2.0 @@ -6111,16 +6432,16 @@ packages: - supports-color dev: true - /@storybook/addon-highlight@7.5.2: - resolution: {integrity: sha512-0vek42fHh7Aeinvkwge0ZTq5VfNsuMSejUv0wHa3zQWgUmlaRlGY8zDw7nG6LiIz6rnTBDTznsfyWenAySSHXg==} + /@storybook/addon-highlight@7.5.3: + resolution: {integrity: sha512-jb+aNRhj+tFK7EqqTlNCjGkTrkWqWHGdD1ubgnj29v8XhRuCR9YboPS+306KYwBEkuF4kNCHZofLiEBPf6nCJg==} dependencies: - '@storybook/core-events': 7.5.2 + '@storybook/core-events': 7.5.3 '@storybook/global': 5.0.0 - '@storybook/preview-api': 7.5.2 + '@storybook/preview-api': 7.5.3 dev: true - /@storybook/addon-interactions@7.5.2(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-upddA+pvJtU3pRZqu3Chl5QbVfVv2eCIuUxaAG9rvasaqkLTTrNvna8rmnXwqL8sBKHL1XzSyO2sQF4vzQwymg==} + /@storybook/addon-interactions@7.5.3(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-gD3cU8sYSM/mdbA9ooYIb4c689JkDsJbZ17vfYJ5RjNkSmqKehybdpZOfkj27sVIyFtmscSi75t+pzK4Pv4rZw==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -6130,16 +6451,16 @@ packages: react-dom: optional: true dependencies: - '@storybook/client-logger': 7.5.2 - '@storybook/components': 7.5.2(react-dom@18.2.0)(react@18.2.0) - '@storybook/core-common': 7.5.2 - '@storybook/core-events': 7.5.2 + '@storybook/client-logger': 7.5.3 + '@storybook/components': 7.5.3(react-dom@18.2.0)(react@18.2.0) + '@storybook/core-common': 7.5.3 + '@storybook/core-events': 7.5.3 '@storybook/global': 5.0.0 - '@storybook/instrumenter': 7.5.2 - '@storybook/manager-api': 7.5.2(react-dom@18.2.0)(react@18.2.0) - '@storybook/preview-api': 7.5.2 - '@storybook/theming': 7.5.2(react-dom@18.2.0)(react@18.2.0) - '@storybook/types': 7.5.2 + '@storybook/instrumenter': 7.5.3 + '@storybook/manager-api': 7.5.3(react-dom@18.2.0)(react@18.2.0) + '@storybook/preview-api': 7.5.3 + '@storybook/theming': 7.5.3(react-dom@18.2.0)(react@18.2.0) + '@storybook/types': 7.5.3 jest-mock: 27.5.1 polished: 4.2.2 react: 18.2.0 @@ -6152,8 +6473,8 @@ packages: - supports-color dev: true - /@storybook/addon-links@7.5.2(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-IhUYNOJQYJd8Cnb93l8egnGCGhHV0VHo6HmZT9YjBVuUtetGQbW8Eoh0pQwuklUrJ3jLPwMoKFhN1irQXJjZwQ==} + /@storybook/addon-links@7.5.3(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-NcigW0HX8AllZ/KJ4u1KMiK30QvjqtC+zApI6Yc3tTaa6+BldbLv06fEgHgMY0yC8R+Ly9mUN7S1HiU7LQ7Qxg==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -6163,22 +6484,22 @@ packages: react-dom: optional: true dependencies: - '@storybook/client-logger': 7.5.2 - '@storybook/core-events': 7.5.2 + '@storybook/client-logger': 7.5.3 + '@storybook/core-events': 7.5.3 '@storybook/csf': 0.1.0 '@storybook/global': 5.0.0 - '@storybook/manager-api': 7.5.2(react-dom@18.2.0)(react@18.2.0) - '@storybook/preview-api': 7.5.2 - '@storybook/router': 7.5.2(react-dom@18.2.0)(react@18.2.0) - '@storybook/types': 7.5.2 + '@storybook/manager-api': 7.5.3(react-dom@18.2.0)(react@18.2.0) + '@storybook/preview-api': 7.5.3 + '@storybook/router': 7.5.3(react-dom@18.2.0)(react@18.2.0) + '@storybook/types': 7.5.3 prop-types: 15.8.1 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) ts-dedent: 2.2.0 dev: true - /@storybook/addon-measure@7.5.2(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-fkvORLaYVC/yNMFzHRHmzlvniY7sWtpFxaRW+e4++hGXYV4VQjOBlXzdMxQhAg1DCVWD6QV8xnUQPBGrsEklog==} + /@storybook/addon-measure@7.5.3(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-fun9BqUTGXgcMpcbX9wUowGDkjCL8oKasZbjp/MvGM3vPTM6HQdwzHTLJGPBnmJ1xK92NhwFRs0BrQX6uF1yrg==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -6188,13 +6509,13 @@ packages: react-dom: optional: true dependencies: - '@storybook/client-logger': 7.5.2 - '@storybook/components': 7.5.2(react-dom@18.2.0)(react@18.2.0) - '@storybook/core-events': 7.5.2 + '@storybook/client-logger': 7.5.3 + '@storybook/components': 7.5.3(react-dom@18.2.0)(react@18.2.0) + '@storybook/core-events': 7.5.3 '@storybook/global': 5.0.0 - '@storybook/manager-api': 7.5.2(react-dom@18.2.0)(react@18.2.0) - '@storybook/preview-api': 7.5.2 - '@storybook/types': 7.5.2 + '@storybook/manager-api': 7.5.3(react-dom@18.2.0)(react@18.2.0) + '@storybook/preview-api': 7.5.3 + '@storybook/types': 7.5.3 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) tiny-invariant: 1.3.1 @@ -6203,8 +6524,8 @@ packages: - '@types/react-dom' dev: true - /@storybook/addon-outline@7.5.2(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-BgDnVzE9xCN1xwuCebK6+apNCtVcw1ToW8N6R3vNgXgNPE1euT3jxkDH7K4RJR24Flu6BotWjX3dqv8k+8xGKw==} + /@storybook/addon-outline@7.5.3(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-c9vCi1SCGrtWr8qaOu/1GNWlrlrpl2lg4F9r+xtYf/KopenI3jSMz0YeTfmepZGAl+6Yc2Ywhm60jgpQ6SKciA==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -6214,13 +6535,13 @@ packages: react-dom: optional: true dependencies: - '@storybook/client-logger': 7.5.2 - '@storybook/components': 7.5.2(react-dom@18.2.0)(react@18.2.0) - '@storybook/core-events': 7.5.2 + '@storybook/client-logger': 7.5.3 + '@storybook/components': 7.5.3(react-dom@18.2.0)(react@18.2.0) + '@storybook/core-events': 7.5.3 '@storybook/global': 5.0.0 - '@storybook/manager-api': 7.5.2(react-dom@18.2.0)(react@18.2.0) - '@storybook/preview-api': 7.5.2 - '@storybook/types': 7.5.2 + '@storybook/manager-api': 7.5.3(react-dom@18.2.0)(react@18.2.0) + '@storybook/preview-api': 7.5.3 + '@storybook/types': 7.5.3 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) ts-dedent: 2.2.0 @@ -6229,8 +6550,8 @@ packages: - '@types/react-dom' dev: true - /@storybook/addon-storysource@7.5.2(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-cKw6bNNgguo1V4FZhNIWI1/M0NqxrRWjoWq2MiC+S1YkKrfZcyssHvy0/4XgWcf/vPKWjwD3nGLLt8BJQL+3bg==} + /@storybook/addon-storysource@7.5.3(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-3t/ypTGyPSxRwOJkAtYw+HKZWUzIayx1xZTU6iip7gTMWz56mhZrsBBcNFXOnQkRBAsQHi1Nhr3Ef1JRguiMMQ==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -6240,13 +6561,13 @@ packages: react-dom: optional: true dependencies: - '@storybook/client-logger': 7.5.2 - '@storybook/components': 7.5.2(react-dom@18.2.0)(react@18.2.0) - '@storybook/manager-api': 7.5.2(react-dom@18.2.0)(react@18.2.0) - '@storybook/preview-api': 7.5.2 - '@storybook/router': 7.5.2(react-dom@18.2.0)(react@18.2.0) - '@storybook/source-loader': 7.5.2(react-dom@18.2.0)(react@18.2.0) - '@storybook/theming': 7.5.2(react-dom@18.2.0)(react@18.2.0) + '@storybook/client-logger': 7.5.3 + '@storybook/components': 7.5.3(react-dom@18.2.0)(react@18.2.0) + '@storybook/manager-api': 7.5.3(react-dom@18.2.0)(react@18.2.0) + '@storybook/preview-api': 7.5.3 + '@storybook/router': 7.5.3(react-dom@18.2.0)(react@18.2.0) + '@storybook/source-loader': 7.5.3(react-dom@18.2.0)(react@18.2.0) + '@storybook/theming': 7.5.3(react-dom@18.2.0)(react@18.2.0) estraverse: 5.3.0 prop-types: 15.8.1 react: 18.2.0 @@ -6258,8 +6579,8 @@ packages: - '@types/react-dom' dev: true - /@storybook/addon-toolbars@7.5.2(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-BXzb5NOpILFOM7EOBxcF2Qj/q6BicWZ1AvAddORWGmqSa/MxMIa4X52oKXFUTHKBkrTO1X0XqHmoF88qm3TUFg==} + /@storybook/addon-toolbars@7.5.3(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-KdLr4sGMJzhtjNTNE2ocfu58yOHHUyZ/cI3BTp7a0gq9YbUpHmC3XTNr26/yOYYrdjkiMD26XusJUjXe+/V2xw==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -6269,11 +6590,11 @@ packages: react-dom: optional: true dependencies: - '@storybook/client-logger': 7.5.2 - '@storybook/components': 7.5.2(react-dom@18.2.0)(react@18.2.0) - '@storybook/manager-api': 7.5.2(react-dom@18.2.0)(react@18.2.0) - '@storybook/preview-api': 7.5.2 - '@storybook/theming': 7.5.2(react-dom@18.2.0)(react@18.2.0) + '@storybook/client-logger': 7.5.3 + '@storybook/components': 7.5.3(react-dom@18.2.0)(react@18.2.0) + '@storybook/manager-api': 7.5.3(react-dom@18.2.0)(react@18.2.0) + '@storybook/preview-api': 7.5.3 + '@storybook/theming': 7.5.3(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) transitivePeerDependencies: @@ -6281,8 +6602,8 @@ packages: - '@types/react-dom' dev: true - /@storybook/addon-viewport@7.5.2(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-qN5X9vgp0v+WGXyFBHQ/CqjdtmnCoHhUjqXmBxEGBziJz/tZwWwtTGWeUUZpuTjCGiZutLrizOFl5MqQAI+ipg==} + /@storybook/addon-viewport@7.5.3(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-gT2XX0NNBrzSs1nrxadl6LnvcwgN7z2R0LzTK8/hxvx4D0EnXrV3feXLzjewr8ZYjzfEeSpO+W+bQTVNm3fNsg==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -6292,13 +6613,13 @@ packages: react-dom: optional: true dependencies: - '@storybook/client-logger': 7.5.2 - '@storybook/components': 7.5.2(react-dom@18.2.0)(react@18.2.0) - '@storybook/core-events': 7.5.2 + '@storybook/client-logger': 7.5.3 + '@storybook/components': 7.5.3(react-dom@18.2.0)(react@18.2.0) + '@storybook/core-events': 7.5.3 '@storybook/global': 5.0.0 - '@storybook/manager-api': 7.5.2(react-dom@18.2.0)(react@18.2.0) - '@storybook/preview-api': 7.5.2 - '@storybook/theming': 7.5.2(react-dom@18.2.0)(react@18.2.0) + '@storybook/manager-api': 7.5.3(react-dom@18.2.0)(react@18.2.0) + '@storybook/preview-api': 7.5.3 + '@storybook/theming': 7.5.3(react-dom@18.2.0)(react@18.2.0) memoizerific: 1.11.3 prop-types: 15.8.1 react: 18.2.0 @@ -6308,36 +6629,36 @@ packages: - '@types/react-dom' dev: true - /@storybook/addons@7.5.2(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-hRiy56zQbz72Pwa4F40srUWXKGNIriNkZ1R0j5KPd8ZqoMk1hIeW0S8E7s1vuM/MplnUE/jFJZqu6HQCvbqmGg==} + /@storybook/addons@7.5.3(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-1JDndMZ/Pju4YJ4aXegeF0O6BVT19c+Gu7WOlsD0aHbmAsPK5qH9QvcpR04nby6VrVZYtBOEJhGsWtAytzLVZw==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: - '@storybook/manager-api': 7.5.2(react-dom@18.2.0)(react@18.2.0) - '@storybook/preview-api': 7.5.2 - '@storybook/types': 7.5.2 + '@storybook/manager-api': 7.5.3(react-dom@18.2.0)(react@18.2.0) + '@storybook/preview-api': 7.5.3 + '@storybook/types': 7.5.3 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: true - /@storybook/blocks@7.5.2(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-Tf6XE/YcnWQVBJRcJWJzhkahjSymv6QZuxMAiKFD8v48QRJ8kTxz1tBN9676Ux+l1WwtVWxwvd/0kRKKxE70wQ==} + /@storybook/blocks@7.5.3(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-Z8yF820v78clQWkwG5OA5qugbQn7rtutq9XCsd03NDB+IEfDaTFQAZG8gs62ZX2ZaXAJsqJSr/mL9oURzXto2A==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: - '@storybook/channels': 7.5.2 - '@storybook/client-logger': 7.5.2 - '@storybook/components': 7.5.2(react-dom@18.2.0)(react@18.2.0) - '@storybook/core-events': 7.5.2 + '@storybook/channels': 7.5.3 + '@storybook/client-logger': 7.5.3 + '@storybook/components': 7.5.3(react-dom@18.2.0)(react@18.2.0) + '@storybook/core-events': 7.5.3 '@storybook/csf': 0.1.0 - '@storybook/docs-tools': 7.5.2 + '@storybook/docs-tools': 7.5.3 '@storybook/global': 5.0.0 - '@storybook/manager-api': 7.5.2(react-dom@18.2.0)(react@18.2.0) - '@storybook/preview-api': 7.5.2 - '@storybook/theming': 7.5.2(react-dom@18.2.0)(react@18.2.0) - '@storybook/types': 7.5.2 + '@storybook/manager-api': 7.5.3(react-dom@18.2.0)(react@18.2.0) + '@storybook/preview-api': 7.5.3 + '@storybook/theming': 7.5.3(react-dom@18.2.0)(react@18.2.0) + '@storybook/types': 7.5.3 '@types/lodash': 4.14.191 color-convert: 2.0.1 dequal: 2.0.3 @@ -6359,13 +6680,13 @@ packages: - supports-color dev: true - /@storybook/builder-manager@7.5.2: - resolution: {integrity: sha512-s4gOudrft/E4lQ19YNrzL2VJwMEpdY6z319fTlc16J1F6XZSytw6CIZPs3x9yX5CKf4/leWnN5etODaOx7NajQ==} + /@storybook/builder-manager@7.5.3: + resolution: {integrity: sha512-uf4Vyj8ofHaq94m065SMvFKak1XrrxgI83VZAxc2QjiPcbRwcVOZd+wcKFdZydqqA6FlBDdJrU+k9INA4Qkfcw==} dependencies: '@fal-works/esbuild-plugin-global-externals': 2.1.2 - '@storybook/core-common': 7.5.2 - '@storybook/manager': 7.5.2 - '@storybook/node-logger': 7.5.2 + '@storybook/core-common': 7.5.3 + '@storybook/manager': 7.5.3 + '@storybook/node-logger': 7.5.3 '@types/ejs': 3.1.2 '@types/find-cache-dir': 3.2.1 '@yarnpkg/esbuild-plugin-pnp': 3.0.0-rc.15(esbuild@0.18.17) @@ -6383,8 +6704,8 @@ packages: - supports-color dev: true - /@storybook/builder-vite@7.5.2(typescript@5.2.2)(vite@4.5.0): - resolution: {integrity: sha512-j96m5K0ahlAjQY6uUxEbybvmRFc3eMpQ3wiosuunc8NkXtfohXZeRVQowAcVrfPktKMufRNGY86RTYxe7sMABw==} + /@storybook/builder-vite@7.5.3(typescript@5.2.2)(vite@4.5.0): + resolution: {integrity: sha512-c104V3O75OCVnfZj0Jr70V09g0KSbPGvQK2Zh31omXGvakG8XrhWolYxkmjOcForJmAqsXnKs/nw3F75Gp853g==} peerDependencies: '@preact/preset-vite': '*' typescript: '>= 4.3.x' @@ -6398,14 +6719,14 @@ packages: vite-plugin-glimmerx: optional: true dependencies: - '@storybook/channels': 7.5.2 - '@storybook/client-logger': 7.5.2 - '@storybook/core-common': 7.5.2 - '@storybook/csf-plugin': 7.5.2 - '@storybook/node-logger': 7.5.2 - '@storybook/preview': 7.5.2 - '@storybook/preview-api': 7.5.2 - '@storybook/types': 7.5.2 + '@storybook/channels': 7.5.3 + '@storybook/client-logger': 7.5.3 + '@storybook/core-common': 7.5.3 + '@storybook/csf-plugin': 7.5.3 + '@storybook/node-logger': 7.5.3 + '@storybook/preview': 7.5.3 + '@storybook/preview-api': 7.5.3 + '@storybook/types': 7.5.3 '@types/find-cache-dir': 3.2.1 browser-assert: 1.2.1 es-module-lexer: 0.9.3 @@ -6415,40 +6736,40 @@ packages: magic-string: 0.30.5 rollup: 3.29.4 typescript: 5.2.2 - vite: 4.5.0(@types/node@20.8.10)(sass@1.69.5)(terser@5.24.0) + vite: 4.5.0(@types/node@20.9.1)(sass@1.69.5)(terser@5.24.0) transitivePeerDependencies: - encoding - supports-color dev: true - /@storybook/channels@7.5.2: - resolution: {integrity: sha512-3SgqWq9NS0XX1QxK3riuaOLrReHWwVhI63u6q1ryDD3SttpmAezZETibOAtzDuk2FKgsyHTmAlmcGQf4ZxhOJA==} + /@storybook/channels@7.5.3: + resolution: {integrity: sha512-dhWuV2o2lmxH0RKuzND8jxYzvSQTSmpE13P0IT/k8+I1up/rSNYOBQJT6SalakcNWXFAMXguo/8E7ApmnKKcEw==} dependencies: - '@storybook/client-logger': 7.5.2 - '@storybook/core-events': 7.5.2 + '@storybook/client-logger': 7.5.3 + '@storybook/core-events': 7.5.3 '@storybook/global': 5.0.0 qs: 6.11.1 telejson: 7.2.0 tiny-invariant: 1.3.1 dev: true - /@storybook/cli@7.5.2: - resolution: {integrity: sha512-8JPvA/K66zBmRFpRRwsD0JLqZUODRrGmNuAWx+Bj1K8wqbg68MYnOflbkSIxIVxrfhd39OrffV0h8CwKNL9gAg==} + /@storybook/cli@7.5.3: + resolution: {integrity: sha512-XysHSnknZTAcTbQ0bQsbfv5J8ifHpOBsmXjk1HCA05E9WGGrn9JrQRCfpDUQJ6O6UWq0bpMqzP8gFLWXFE7hug==} hasBin: true dependencies: '@babel/core': 7.22.11 '@babel/preset-env': 7.22.9(@babel/core@7.22.11) '@babel/types': 7.22.17 '@ndelangen/get-tarball': 3.0.7 - '@storybook/codemod': 7.5.2 - '@storybook/core-common': 7.5.2 - '@storybook/core-events': 7.5.2 - '@storybook/core-server': 7.5.2 - '@storybook/csf-tools': 7.5.2 - '@storybook/node-logger': 7.5.2 - '@storybook/telemetry': 7.5.2 - '@storybook/types': 7.5.2 - '@types/semver': 7.5.4 + '@storybook/codemod': 7.5.3 + '@storybook/core-common': 7.5.3 + '@storybook/core-events': 7.5.3 + '@storybook/core-server': 7.5.3 + '@storybook/csf-tools': 7.5.3 + '@storybook/node-logger': 7.5.3 + '@storybook/telemetry': 7.5.3 + '@storybook/types': 7.5.3 + '@types/semver': 7.5.6 '@yarnpkg/fslib': 2.10.3 '@yarnpkg/libzip': 2.3.0 chalk: 4.1.2 @@ -6484,22 +6805,22 @@ packages: - utf-8-validate dev: true - /@storybook/client-logger@7.5.2: - resolution: {integrity: sha512-7YgLItlmiYDzWYexTaRNuHhtFarh9krsI+8l7Yjn9ryoHSTJUcTWx+yPJm1II+PQR8v/x5UgsxzultjgEurfRQ==} + /@storybook/client-logger@7.5.3: + resolution: {integrity: sha512-vUFYALypjix5FoJ5M/XUP6KmyTnQJNW1poHdW7WXUVSg+lBM6E5eAtjTm0hdxNNDH8KSrdy24nCLra5h0X0BWg==} dependencies: '@storybook/global': 5.0.0 dev: true - /@storybook/codemod@7.5.2: - resolution: {integrity: sha512-PxZg0w4OlmFB4dBzB+sCgwmHNke0n1N8vNooxtcuusrLKlbUfmssYRnQn6yRSJw0WfkUYgI10CWxGaamaOFekA==} + /@storybook/codemod@7.5.3: + resolution: {integrity: sha512-gzycFdqnF4drUjfzMTrLNHqi2jkw1lDeACUzQdug5uWxynZKAvMTHAgU0q9wvoYRR9Xhq8PhfKtXtYCCj2Er4Q==} dependencies: '@babel/core': 7.22.11 '@babel/preset-env': 7.22.9(@babel/core@7.22.11) '@babel/types': 7.22.17 '@storybook/csf': 0.1.0 - '@storybook/csf-tools': 7.5.2 - '@storybook/node-logger': 7.5.2 - '@storybook/types': 7.5.2 + '@storybook/csf-tools': 7.5.3 + '@storybook/node-logger': 7.5.3 + '@storybook/types': 7.5.3 '@types/cross-spawn': 6.0.2 cross-spawn: 7.0.3 globby: 11.1.0 @@ -6511,19 +6832,19 @@ packages: - supports-color dev: true - /@storybook/components@7.5.2(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-OP+o6AoxoQDbqjk/jdQ1arlc1T8601eCL+rS1dJY9EtAFq7Z0LEFtafhEW/Lx8FotfVGjfCNptH9ODhHU6e5Jw==} + /@storybook/components@7.5.3(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-M3+cjvEsDGLUx8RvK5wyF6/13LNlUnKbMgiDE8Sxk/v/WPpyhOAIh/B8VmrU1psahS61Jd4MTkFmLf1cWau1vw==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: '@radix-ui/react-select': 1.2.2(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-toolbar': 1.0.4(react-dom@18.2.0)(react@18.2.0) - '@storybook/client-logger': 7.5.2 + '@storybook/client-logger': 7.5.3 '@storybook/csf': 0.1.0 '@storybook/global': 5.0.0 - '@storybook/theming': 7.5.2(react-dom@18.2.0)(react@18.2.0) - '@storybook/types': 7.5.2 + '@storybook/theming': 7.5.3(react-dom@18.2.0)(react@18.2.0) + '@storybook/types': 7.5.3 memoizerific: 1.11.3 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -6534,19 +6855,19 @@ packages: - '@types/react-dom' dev: true - /@storybook/core-client@7.5.2: - resolution: {integrity: sha512-mMDSBxc7esMCu0FOkama9XYHzIHYGhBj8roX+XaTaLDYXaw/UajcCuzcO7fFBHNn3Vdqh2ufIxlI7359v3IqPw==} + /@storybook/core-client@7.5.3: + resolution: {integrity: sha512-sIviDytbhos02TVXxU8XLymzty7IAtLs5e16hv49JSdBp47iBajRaNBmBj/l+sgTH+3M+R6gP8yGFMsZSCnU2g==} dependencies: - '@storybook/client-logger': 7.5.2 - '@storybook/preview-api': 7.5.2 + '@storybook/client-logger': 7.5.3 + '@storybook/preview-api': 7.5.3 dev: true - /@storybook/core-common@7.5.2: - resolution: {integrity: sha512-js7fIH4wHS08dBuIVsr3JnwMtKn5O1Izc/Zor4t6PntLWkGGX4X/GxbOkasGX5SkCT1qUtB9RpdPd1sUkLhIgw==} + /@storybook/core-common@7.5.3: + resolution: {integrity: sha512-WGMwjtVUxUzFwQz7Mgs0gLuNebIGNV55dCdZgurx2/y6QOkJ2v8D0b3iL+xKMV4B5Nwoc2DsM418Y+Hy3UQd+w==} dependencies: - '@storybook/core-events': 7.5.2 - '@storybook/node-logger': 7.5.2 - '@storybook/types': 7.5.2 + '@storybook/core-events': 7.5.3 + '@storybook/node-logger': 7.5.3 + '@storybook/types': 7.5.3 '@types/find-cache-dir': 3.2.1 '@types/node': 18.17.15 '@types/node-fetch': 2.6.4 @@ -6572,34 +6893,34 @@ packages: - supports-color dev: true - /@storybook/core-events@7.5.2: - resolution: {integrity: sha512-DV8bFEFVKDEvaH87KYPXDE0YEV+Y9yjFv2xxmC9pF8l+MWCtVW72RBLhB+gU5NM1bkHrRDNb0lOJfVGKlhxOog==} + /@storybook/core-events@7.5.3: + resolution: {integrity: sha512-DFOpyQ22JD5C1oeOFzL8wlqSWZzrqgDfDbUGP8xdO4wJu+FVTxnnWN6ZYLdTPB1u27DOhd7TzjQMfLDHLu7kbQ==} dependencies: ts-dedent: 2.2.0 dev: true - /@storybook/core-server@7.5.2: - resolution: {integrity: sha512-4oXpy1L/NyHiz/OXNUFnSeMLA/+lTgQAlVx86pRbEBDj6snt1/NSx2+yZyFtZ/XTnJ22BPpM8IIrgm95ZlQKmA==} + /@storybook/core-server@7.5.3: + resolution: {integrity: sha512-Gmq1w7ulN/VIeTDboNcb6GNM+S8T0SqhJUqeoHzn0vLGnzxeuYRJ0V3ZJhGZiJfSmCNqYAjC8QUBf6uU1gLipw==} dependencies: '@aw-web-design/x-default-browser': 1.4.126 '@discoveryjs/json-ext': 0.5.7 - '@storybook/builder-manager': 7.5.2 - '@storybook/channels': 7.5.2 - '@storybook/core-common': 7.5.2 - '@storybook/core-events': 7.5.2 + '@storybook/builder-manager': 7.5.3 + '@storybook/channels': 7.5.3 + '@storybook/core-common': 7.5.3 + '@storybook/core-events': 7.5.3 '@storybook/csf': 0.1.0 - '@storybook/csf-tools': 7.5.2 + '@storybook/csf-tools': 7.5.3 '@storybook/docs-mdx': 0.1.0 '@storybook/global': 5.0.0 - '@storybook/manager': 7.5.2 - '@storybook/node-logger': 7.5.2 - '@storybook/preview-api': 7.5.2 - '@storybook/telemetry': 7.5.2 - '@storybook/types': 7.5.2 + '@storybook/manager': 7.5.3 + '@storybook/node-logger': 7.5.3 + '@storybook/preview-api': 7.5.3 + '@storybook/telemetry': 7.5.3 + '@storybook/types': 7.5.3 '@types/detect-port': 1.3.2 '@types/node': 18.17.15 '@types/pretty-hrtime': 1.0.1 - '@types/semver': 7.5.4 + '@types/semver': 7.5.6 better-opn: 3.0.2 chalk: 4.1.2 cli-table3: 0.6.3 @@ -6629,24 +6950,24 @@ packages: - utf-8-validate dev: true - /@storybook/csf-plugin@7.5.2: - resolution: {integrity: sha512-ndjn1ia2rQLO1r1z6mXv6nipLzJMwWJp31h16lQUXIBQEOiGKjGGvObiuKaad3nNHxWHpGra4zUg7R+54Yw0Hw==} + /@storybook/csf-plugin@7.5.3: + resolution: {integrity: sha512-yQ3S/IOT08Y7XTnlc3SPkrJKZ6Xld6liAlHn+ddjge4oZa0hUqwYLb+piXUhFMfL6Ij65cj4hu3vMbw89azIhg==} dependencies: - '@storybook/csf-tools': 7.5.2 + '@storybook/csf-tools': 7.5.3 unplugin: 1.4.0 transitivePeerDependencies: - supports-color dev: true - /@storybook/csf-tools@7.5.2: - resolution: {integrity: sha512-yXaEDREc2wvkjYkQqDMatJw23f0fEFhMIf/zBNF7YljeYw0j8jAg/7XI5WJJSN2KTxD/feD/yD+6eaLUXvrneQ==} + /@storybook/csf-tools@7.5.3: + resolution: {integrity: sha512-676C3ISn7FQJKjb3DBWXhjGN2OQEv4s71dx+5D0TlmswDCOOGS8dYFjP8wVx51+mAIE8CROAw7vLHLtVKU7SwQ==} dependencies: '@babel/generator': 7.22.10 '@babel/parser': 7.23.0 '@babel/traverse': 7.22.11 '@babel/types': 7.22.17 '@storybook/csf': 0.1.0 - '@storybook/types': 7.5.2 + '@storybook/types': 7.5.3 fs-extra: 11.1.1 recast: 0.23.1 ts-dedent: 2.2.0 @@ -6664,12 +6985,12 @@ packages: resolution: {integrity: sha512-JDaBR9lwVY4eSH5W8EGHrhODjygPd6QImRbwjAuJNEnY0Vw4ie3bPkeGfnacB3OBW6u/agqPv2aRlR46JcAQLg==} dev: true - /@storybook/docs-tools@7.5.2: - resolution: {integrity: sha512-mBiZFhzMA2ub7wX0ho3UqKqKXO+xUi/rqb4KV4PihLKlhThEdzKyYrIZO4W90NOmlp1yUJJcjG8D8SUPuHQoTw==} + /@storybook/docs-tools@7.5.3: + resolution: {integrity: sha512-f20EUQlwamcSPrOFn42fj9gpkZIDNCZkC3N19yGzLYiE4UMyaYQgRl18oLvqd3M6aBm6UW6SCoIIgeaOViBSqg==} dependencies: - '@storybook/core-common': 7.5.2 - '@storybook/preview-api': 7.5.2 - '@storybook/types': 7.5.2 + '@storybook/core-common': 7.5.3 + '@storybook/preview-api': 7.5.3 + '@storybook/types': 7.5.3 '@types/doctrine': 0.0.3 doctrine: 3.0.0 lodash: 4.17.21 @@ -6688,14 +7009,14 @@ packages: resolution: {integrity: sha512-FcOqPAXACP0I3oJ/ws6/rrPT9WGhu915Cg8D02a9YxLo0DE9zI+a9A5gRGvmQ09fiWPukqI8ZAEoQEdWUKMQdQ==} dev: true - /@storybook/instrumenter@7.5.2: - resolution: {integrity: sha512-1l36cc7GaVeTiknhToZcaqI6RsIOfcBgdnvgJ0tiL1naN1GkneCMr+1oLWnlHVrWIOXgh6vNyD792kE3uTLkFg==} + /@storybook/instrumenter@7.5.3: + resolution: {integrity: sha512-p6b+/6ohTCKxWn00bXT8KBqVjXUOxeILnJtLlG83USLQCpI+XVkpmK57HYuydqEwy/1XjG+4S4ntPk9VVz3u7w==} dependencies: - '@storybook/channels': 7.5.2 - '@storybook/client-logger': 7.5.2 - '@storybook/core-events': 7.5.2 + '@storybook/channels': 7.5.3 + '@storybook/client-logger': 7.5.3 + '@storybook/core-events': 7.5.3 '@storybook/global': 5.0.0 - '@storybook/preview-api': 7.5.2 + '@storybook/preview-api': 7.5.3 dev: true /@storybook/jest@0.2.3(vitest@0.34.6): @@ -6711,20 +7032,20 @@ packages: - vitest dev: true - /@storybook/manager-api@7.5.2(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-WX8GjBkITRQzhQ08WEAVjdDW8QqqIQhWOpFzXUYCxCNzt1eSALI31QQ+M1/MYymw+TOkotC/SMcn/puIAm4rdA==} + /@storybook/manager-api@7.5.3(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-d8mVLr/5BEG4bAS2ZeqYTy/aX4jPEpZHdcLaWoB4mAM+PAL9wcWsirUyApKtDVYLITJf/hd8bb2Dm2ok6E45gA==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: - '@storybook/channels': 7.5.2 - '@storybook/client-logger': 7.5.2 - '@storybook/core-events': 7.5.2 + '@storybook/channels': 7.5.3 + '@storybook/client-logger': 7.5.3 + '@storybook/core-events': 7.5.3 '@storybook/csf': 0.1.0 '@storybook/global': 5.0.0 - '@storybook/router': 7.5.2(react-dom@18.2.0)(react@18.2.0) - '@storybook/theming': 7.5.2(react-dom@18.2.0)(react@18.2.0) - '@storybook/types': 7.5.2 + '@storybook/router': 7.5.3(react-dom@18.2.0)(react@18.2.0) + '@storybook/theming': 7.5.3(react-dom@18.2.0)(react@18.2.0) + '@storybook/types': 7.5.3 dequal: 2.0.3 lodash: 4.17.21 memoizerific: 1.11.3 @@ -6736,31 +7057,31 @@ packages: ts-dedent: 2.2.0 dev: true - /@storybook/manager@7.5.2: - resolution: {integrity: sha512-5l1z9SpCFQBcHjC5mbfWQ8mPTYFxD8GQ9mNZ6PPrj47yu9TyCRYSQj7A8ZXJiIY1ZEg4a2BCW7fPUYG+lX6Drw==} + /@storybook/manager@7.5.3: + resolution: {integrity: sha512-3ZZrHYcXWAQXpDQZBvKyScGgQaAaBc63i+KC2mXqzTdXuJhVDUiylvqLRprBnrEprgePQLFrxGC2JSHUwH7dqg==} dev: true /@storybook/mdx2-csf@1.0.0: resolution: {integrity: sha512-dBAnEL4HfxxJmv7LdEYUoZlQbWj9APZNIbOaq0tgF8XkxiIbzqvgB0jhL/9UOrysSDbQWBiCRTu2wOVxedGfmw==} dev: true - /@storybook/node-logger@7.5.2: - resolution: {integrity: sha512-VIBuwPJOylu8vJofk1VfmqxlhXgbBgV0pCTo/UzdQAbc3w5y+qNRemf8goWxYEY+L9p6oUXqm/i9+bNGyX7/Mw==} + /@storybook/node-logger@7.5.3: + resolution: {integrity: sha512-7ZZDw/q3hakBj1FngsBjaHNIBguYAWojp7R1fFTvwkeunCi21EUzZjRBcqp10kB6BP3/NLX32bIQknsCWD76rQ==} dev: true - /@storybook/postinstall@7.5.2: - resolution: {integrity: sha512-fKgyV1fAgckDoxQkUGJl5uzjzGC5esC/nITiCjccZFrqxt9mgmz4VAUkMeseD5tfWQ5oFA0Xdgtrrcl39+chnw==} + /@storybook/postinstall@7.5.3: + resolution: {integrity: sha512-r+H3xGMu2A9yOSsygc3bDFhku8wpOZF3SqO19B7eAML12viHwUtYfyGL74svw4TMcKukyQ+KPn5QsSG+4bjZMg==} dev: true - /@storybook/preview-api@7.5.2: - resolution: {integrity: sha512-rpmHR/09UBSnorDBTcE7JgHUQjZLO146NCI+vbI7Pqfb4QX/8lhwkFr4cuHRAR16mv6DAJbDVoPETO0Z/CH9aw==} + /@storybook/preview-api@7.5.3: + resolution: {integrity: sha512-LNmEf7oBRnZ1wG3bQ+P+TO29+NN5pSDJiAA6FabZBrtIVm+psc2lxBCDQvFYyAFzQSlt60toGKNW8+RfFNdR5Q==} dependencies: - '@storybook/channels': 7.5.2 - '@storybook/client-logger': 7.5.2 - '@storybook/core-events': 7.5.2 + '@storybook/channels': 7.5.3 + '@storybook/client-logger': 7.5.3 + '@storybook/core-events': 7.5.3 '@storybook/csf': 0.1.0 '@storybook/global': 5.0.0 - '@storybook/types': 7.5.2 + '@storybook/types': 7.5.3 '@types/qs': 6.9.7 dequal: 2.0.3 lodash: 4.17.21 @@ -6771,12 +7092,12 @@ packages: util-deprecate: 1.0.2 dev: true - /@storybook/preview@7.5.2: - resolution: {integrity: sha512-dA5VpHp0D9nh9/wOzWP8At1wtz/SiaMBbwaiEOFTFUGcPerrkroEWadIlSSB7vgQJ9yWiD4l3KDaS8ANzHWtPQ==} + /@storybook/preview@7.5.3: + resolution: {integrity: sha512-Hf90NlLaSrdMZXPOHDCMPjTywVrQKK0e5CtzqWx/ZQz91JDINxJD+sGj2wZU+wuBtQcTtlsXc9OewlJ+9ETwIw==} dev: true - /@storybook/react-dom-shim@7.5.2(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-x7h3TTLRLs8mrsCBKXbvjBRFms73XrNlm0Lo5Tu/Tf//+pwOFq+2sGBkqbRkYd54jNHhpqNF7+UUdzA93ESnbQ==} + /@storybook/react-dom-shim@7.5.3(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-9aNcKdhoP36jMrcXgfzE9jVg/SpqPpWnUJM70upYoZXytG2wQSPtawLHHyC6kycvTzwncyfF3rwUnOFBB8zmig==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -6785,8 +7106,8 @@ packages: react-dom: 18.2.0(react@18.2.0) dev: true - /@storybook/react-vite@7.5.2(react-dom@18.2.0)(react@18.2.0)(rollup@4.2.0)(typescript@5.2.2)(vite@4.5.0): - resolution: {integrity: sha512-faYGER/qU/jeaMEf5kgx4dNeKno+HkCEviXo/bgRswRg7odW5XydlGGSATOYLYxLhWG6jztaYHYIaDk21KoOVA==} + /@storybook/react-vite@7.5.3(react-dom@18.2.0)(react@18.2.0)(rollup@4.4.1)(typescript@5.2.2)(vite@4.5.0): + resolution: {integrity: sha512-ArPyHgiPbT5YvcyK4xK/DfqBOpn4R4/EP3kfIGhx8QKJyOtxPEYFdkLIZ5xu3KnPX7/z7GT+4a6Rb+8sk9gliA==} engines: {node: '>=16'} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -6794,15 +7115,15 @@ packages: vite: ^3.0.0 || ^4.0.0 || ^5.0.0 dependencies: '@joshwooding/vite-plugin-react-docgen-typescript': 0.3.0(typescript@5.2.2)(vite@4.5.0) - '@rollup/pluginutils': 5.0.5(rollup@4.2.0) - '@storybook/builder-vite': 7.5.2(typescript@5.2.2)(vite@4.5.0) - '@storybook/react': 7.5.2(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2) + '@rollup/pluginutils': 5.0.5(rollup@4.4.1) + '@storybook/builder-vite': 7.5.3(typescript@5.2.2)(vite@4.5.0) + '@storybook/react': 7.5.3(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2) '@vitejs/plugin-react': 3.1.0(vite@4.5.0) magic-string: 0.30.5 react: 18.2.0 react-docgen: 6.0.4 react-dom: 18.2.0(react@18.2.0) - vite: 4.5.0(@types/node@20.8.10)(sass@1.69.5)(terser@5.24.0) + vite: 4.5.0(@types/node@20.9.1)(sass@1.69.5)(terser@5.24.0) transitivePeerDependencies: - '@preact/preset-vite' - encoding @@ -6812,8 +7133,8 @@ packages: - vite-plugin-glimmerx dev: true - /@storybook/react@7.5.2(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2): - resolution: {integrity: sha512-7X8GtqvRjWmVS112ifChJMxfD15rMVg5m3t6apZqi0uui1S/DImAveHwz8M4FhsElW6MIHs5xK0uJhR9rVQgTA==} + /@storybook/react@7.5.3(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2): + resolution: {integrity: sha512-dZILdM36xMFDjdmmy421G5X+sOIncB2qF3IPTooniG1i1Z6v/dVNo57ovdID9lDTNa+AWr2fLB9hANiISMqmjQ==} engines: {node: '>=16.0.0'} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -6823,13 +7144,13 @@ packages: typescript: optional: true dependencies: - '@storybook/client-logger': 7.5.2 - '@storybook/core-client': 7.5.2 - '@storybook/docs-tools': 7.5.2 + '@storybook/client-logger': 7.5.3 + '@storybook/core-client': 7.5.3 + '@storybook/docs-tools': 7.5.3 '@storybook/global': 5.0.0 - '@storybook/preview-api': 7.5.2 - '@storybook/react-dom-shim': 7.5.2(react-dom@18.2.0)(react@18.2.0) - '@storybook/types': 7.5.2 + '@storybook/preview-api': 7.5.3 + '@storybook/react-dom-shim': 7.5.3(react-dom@18.2.0)(react@18.2.0) + '@storybook/types': 7.5.3 '@types/escodegen': 0.0.6 '@types/estree': 0.0.51 '@types/node': 18.17.15 @@ -6852,27 +7173,27 @@ packages: - supports-color dev: true - /@storybook/router@7.5.2(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-jlh48TVUlqvGkU8MnkVp9SrCHomWGtQGx1WMK94NMyOPVPTLWzM6LjIybgmHz0MTe4lpzmbiIOfSlU3pPX054w==} + /@storybook/router@7.5.3(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-/iNYCFore7R5n6eFHbBYoB0P2/sybTVpA+uXTNUd3UEt7Ro6CEslTaFTEiH2RVQwOkceBp/NpyWon74xZuXhMg==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: - '@storybook/client-logger': 7.5.2 + '@storybook/client-logger': 7.5.3 memoizerific: 1.11.3 qs: 6.11.1 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: true - /@storybook/source-loader@7.5.2(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-9j52EWVXwkK5kBf1EryNCdFJVoel4Mf2STFYqyTyWV0EyYQu+RrSQpqqduaF6tbYY1spDXCnyTg0AmduXazMlw==} + /@storybook/source-loader@7.5.3(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-cPOi/hxdblTPw2AvwlR0VaGmELXyLGGE8KQDGcOnZtU6PpyyCwV4ZJiJz1qjiHdjfHlJMJG33JiyHfvsngT8jQ==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: '@storybook/csf': 0.1.0 - '@storybook/types': 7.5.2 + '@storybook/types': 7.5.3 estraverse: 5.3.0 lodash: 4.17.21 prettier: 2.8.8 @@ -6880,12 +7201,12 @@ packages: react-dom: 18.2.0(react@18.2.0) dev: true - /@storybook/telemetry@7.5.2: - resolution: {integrity: sha512-tUgrcIx1vTMhTySp11JbBnWLsaMUNlil5yuOWEJy5i71E4Xy/2hYUtLfxzgXWd/0W7eTl4p2tjUk9uS8AP+S0Q==} + /@storybook/telemetry@7.5.3: + resolution: {integrity: sha512-X6alII3o0jCb5xALuw+qcWmvyrbhlkmPeNZ6ZQXknOfB4DkwponFdWN5y6W7yGvr01xa5QBepJRV79isl97d8g==} dependencies: - '@storybook/client-logger': 7.5.2 - '@storybook/core-common': 7.5.2 - '@storybook/csf-tools': 7.5.2 + '@storybook/client-logger': 7.5.3 + '@storybook/core-common': 7.5.3 + '@storybook/csf-tools': 7.5.3 chalk: 4.1.2 detect-package-manager: 2.0.1 fetch-retry: 5.0.4 @@ -6904,46 +7225,46 @@ packages: ts-dedent: 2.2.0 dev: true - /@storybook/theming@7.5.2(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-DZBTcYErSYvmTYsGz7lKtiIcBe8flBw5Ojp52r3O4GcRYG4AbuUwwVvehz+O1cWaS+UW3HavrcgapERH7ZHd1A==} + /@storybook/theming@7.5.3(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-Cjmthe1MAk0z4RKCZ7m72gAD8YD0zTAH97z5ryM1Qv84QXjiCQ143fGOmYz1xEQdNFpOThPcwW6FEccLHTkVcg==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: '@emotion/use-insertion-effect-with-fallbacks': 1.0.0(react@18.2.0) - '@storybook/client-logger': 7.5.2 + '@storybook/client-logger': 7.5.3 '@storybook/global': 5.0.0 memoizerific: 1.11.3 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: true - /@storybook/types@7.5.2: - resolution: {integrity: sha512-RDKHo6WUES+4nt7uZMfankjxdpYX2EI2GpJ2n2RPcnhzmb/ub1huNTjbzDEYMqY24SppljZeIN57m3Ar6L6f9A==} + /@storybook/types@7.5.3: + resolution: {integrity: sha512-iu5W0Kdd6nysN5CPkY4GRl+0BpxRTdSfBIJak7mb6xCIHSB5t1tw4BOuqMQ5EgpikRY3MWJ4gY647QkWBX3MNQ==} dependencies: - '@storybook/channels': 7.5.2 + '@storybook/channels': 7.5.3 '@types/babel__core': 7.20.0 '@types/express': 4.17.17 file-system-cache: 2.3.0 dev: true - /@storybook/vue3-vite@7.5.2(@vue/compiler-core@3.3.7)(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2)(vite@4.5.0)(vue@3.3.7): - resolution: {integrity: sha512-SChxq87nSFrf3Nywfa/iBNHIoBO0hcvoQdob0ePGSS1tXL2uVEP+A3NFeXb50MXBUSl+ojZpmkEaO4YRt2cZ1w==} + /@storybook/vue3-vite@7.5.3(@vue/compiler-core@3.3.8)(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2)(vite@4.5.0)(vue@3.3.8): + resolution: {integrity: sha512-gkNwDDn2AKthAtaoPrHb0+2gi33UluxpfSq/M5COoMEVFphj6y/jyDa+OEYlceXgnD8g2xvX4/yv2TbTNDzmcQ==} engines: {node: ^14.18 || >=16} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 vite: ^3.0.0 || ^4.0.0 || ^5.0.0 dependencies: - '@storybook/builder-vite': 7.5.2(typescript@5.2.2)(vite@4.5.0) - '@storybook/core-server': 7.5.2 - '@storybook/vue3': 7.5.2(@vue/compiler-core@3.3.7)(vue@3.3.7) - '@vitejs/plugin-vue': 4.4.0(vite@4.5.0)(vue@3.3.7) + '@storybook/builder-vite': 7.5.3(typescript@5.2.2)(vite@4.5.0) + '@storybook/core-server': 7.5.3 + '@storybook/vue3': 7.5.3(@vue/compiler-core@3.3.8)(vue@3.3.8) + '@vitejs/plugin-vue': 4.5.0(vite@4.5.0)(vue@3.3.8) magic-string: 0.30.5 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - vite: 4.5.0(@types/node@20.8.10)(sass@1.69.5)(terser@5.24.0) - vue-docgen-api: 4.64.1(vue@3.3.7) + vite: 4.5.0(@types/node@20.9.1)(sass@1.69.5)(terser@5.24.0) + vue-docgen-api: 4.64.1(vue@3.3.8) transitivePeerDependencies: - '@preact/preset-vite' - '@vue/compiler-core' @@ -6956,31 +7277,31 @@ packages: - vue dev: true - /@storybook/vue3@7.5.2(@vue/compiler-core@3.3.7)(vue@3.3.7): - resolution: {integrity: sha512-k25uwQ33NuQOWEs+0kQUakHzeSu4suCthGv0qCMBoI55mXE7IvMjaPgPDgz/tKVh2qqNa36w1prfqwfWF9uKGw==} + /@storybook/vue3@7.5.3(@vue/compiler-core@3.3.8)(vue@3.3.8): + resolution: {integrity: sha512-JaxtOl3UD9YhPrOqHuKtpqHMnFril3sBUxx/no2yM/mZYmNpAVd/C6PFM839WCay1mAywPuUoebJvmwWxWijkw==} engines: {node: '>=16.0.0'} peerDependencies: '@vue/compiler-core': ^3.0.0 vue: ^3.0.0 dependencies: - '@storybook/core-client': 7.5.2 - '@storybook/docs-tools': 7.5.2 + '@storybook/core-client': 7.5.3 + '@storybook/docs-tools': 7.5.3 '@storybook/global': 5.0.0 - '@storybook/preview-api': 7.5.2 - '@storybook/types': 7.5.2 - '@vue/compiler-core': 3.3.7 + '@storybook/preview-api': 7.5.3 + '@storybook/types': 7.5.3 + '@vue/compiler-core': 3.3.8 lodash: 4.17.21 ts-dedent: 2.2.0 type-fest: 2.19.0 - vue: 3.3.7(typescript@5.2.2) + vue: 3.3.8(typescript@5.2.2) vue-component-type-helpers: 1.8.22 transitivePeerDependencies: - encoding - supports-color dev: true - /@swc/cli@0.1.62(@swc/core@1.3.95)(chokidar@3.5.3): - resolution: {integrity: sha512-kOFLjKY3XH1DWLfXL1/B5MizeNorHR8wHKEi92S/Zi9Md/AK17KSqR8MgyRJ6C1fhKHvbBCl8wboyKAFXStkYw==} + /@swc/cli@0.1.63(@swc/core@1.3.96)(chokidar@3.5.3): + resolution: {integrity: sha512-EM9oxxHzmmsprYRbGqsS2M4M/Gr5Gkcl0ROYYIdlUyTkhOiX822EQiRCpPCwdutdnzH2GyaTN7wc6i0Y+CKd3A==} engines: {node: '>= 12.13'} hasBin: true peerDependencies: @@ -6991,10 +7312,10 @@ packages: optional: true dependencies: '@mole-inc/bin-wrapper': 8.0.1 - '@swc/core': 1.3.95 + '@swc/core': 1.3.96 chokidar: 3.5.3 commander: 7.2.0 - fast-glob: 3.3.1 + fast-glob: 3.3.2 semver: 7.5.4 slash: 3.0.0 source-map: 0.7.4 @@ -7020,8 +7341,8 @@ packages: dev: false optional: true - /@swc/core-darwin-arm64@1.3.95: - resolution: {integrity: sha512-VAuBAP3MNetO/yBIBzvorUXq7lUBwhfpJxYViSxyluMwtoQDhE/XWN598TWMwMl1ZuImb56d7eUsuFdjgY7pJw==} + /@swc/core-darwin-arm64@1.3.96: + resolution: {integrity: sha512-8hzgXYVd85hfPh6mJ9yrG26rhgzCmcLO0h1TIl8U31hwmTbfZLzRitFQ/kqMJNbIBCwmNH1RU2QcJnL3d7f69A==} engines: {node: '>=10'} cpu: [arm64] os: [darwin] @@ -7037,8 +7358,8 @@ packages: dev: false optional: true - /@swc/core-darwin-x64@1.3.95: - resolution: {integrity: sha512-20vF2rvUsN98zGLZc+dsEdHvLoCuiYq/1B+TDeE4oolgTFDmI1jKO+m44PzWjYtKGU9QR95sZ6r/uec0QC5O4Q==} + /@swc/core-darwin-x64@1.3.96: + resolution: {integrity: sha512-mFp9GFfuPg+43vlAdQZl0WZpZSE8sEzqL7sr/7Reul5McUHP0BaLsEzwjvD035ESfkY8GBZdLpMinblIbFNljQ==} engines: {node: '>=10'} cpu: [x64] os: [darwin] @@ -7065,8 +7386,8 @@ packages: dev: false optional: true - /@swc/core-linux-arm-gnueabihf@1.3.95: - resolution: {integrity: sha512-oEudEM8PST1MRNGs+zu0cx5i9uP8TsLE4/L9HHrS07Ck0RJ3DCj3O2fU832nmLe2QxnAGPwBpSO9FntLfOiWEQ==} + /@swc/core-linux-arm-gnueabihf@1.3.96: + resolution: {integrity: sha512-8UEKkYJP4c8YzYIY/LlbSo8z5Obj4hqcv/fUTHiEePiGsOddgGf7AWjh56u7IoN/0uEmEro59nc1ChFXqXSGyg==} engines: {node: '>=10'} cpu: [arm] os: [linux] @@ -7082,8 +7403,8 @@ packages: dev: false optional: true - /@swc/core-linux-arm64-gnu@1.3.95: - resolution: {integrity: sha512-pIhFI+cuC1aYg+0NAPxwT/VRb32f2ia8oGxUjQR6aJg65gLkUYQzdwuUmpMtFR2WVf7WVFYxUnjo4UyMuyh3ng==} + /@swc/core-linux-arm64-gnu@1.3.96: + resolution: {integrity: sha512-c/IiJ0s1y3Ymm2BTpyC/xr6gOvoqAVETrivVXHq68xgNms95luSpbYQ28rqaZC8bQC8M5zdXpSc0T8DJu8RJGw==} engines: {node: '>=10'} cpu: [arm64] os: [linux] @@ -7099,8 +7420,8 @@ packages: dev: false optional: true - /@swc/core-linux-arm64-musl@1.3.95: - resolution: {integrity: sha512-ZpbTr+QZDT4OPJfjPAmScqdKKaT+wGurvMU5AhxLaf85DuL8HwUwwlL0n1oLieLc47DwIJEMuKQkYhXMqmJHlg==} + /@swc/core-linux-arm64-musl@1.3.96: + resolution: {integrity: sha512-i5/UTUwmJLri7zhtF6SAo/4QDQJDH2fhYJaBIUhrICmIkRO/ltURmpejqxsM/ye9Jqv5zG7VszMC0v/GYn/7BQ==} engines: {node: '>=10'} cpu: [arm64] os: [linux] @@ -7116,8 +7437,8 @@ packages: dev: false optional: true - /@swc/core-linux-x64-gnu@1.3.95: - resolution: {integrity: sha512-n9SuHEFtdfSJ+sHdNXNRuIOVprB8nbsz+08apKfdo4lEKq6IIPBBAk5kVhPhkjmg2dFVHVo4Tr/OHXM1tzWCCw==} + /@swc/core-linux-x64-gnu@1.3.96: + resolution: {integrity: sha512-USdaZu8lTIkm4Yf9cogct/j5eqtdZqTgcTib4I+NloUW0E/hySou3eSyp3V2UAA1qyuC72ld1otXuyKBna0YKQ==} engines: {node: '>=10'} cpu: [x64] os: [linux] @@ -7133,8 +7454,8 @@ packages: dev: false optional: true - /@swc/core-linux-x64-musl@1.3.95: - resolution: {integrity: sha512-L1JrVlsXU3LC0WwmVnMK9HrOT2uhHahAoPNMJnZQpc18a0paO9fqifPG8M/HjNRffMUXR199G/phJsf326UvVg==} + /@swc/core-linux-x64-musl@1.3.96: + resolution: {integrity: sha512-QYErutd+G2SNaCinUVobfL7jWWjGTI0QEoQ6hqTp7PxCJS/dmKmj3C5ZkvxRYcq7XcZt7ovrYCTwPTHzt6lZBg==} engines: {node: '>=10'} cpu: [x64] os: [linux] @@ -7150,8 +7471,8 @@ packages: dev: false optional: true - /@swc/core-win32-arm64-msvc@1.3.95: - resolution: {integrity: sha512-YaP4x/aZbUyNdqCBpC2zL8b8n58MEpOUpmOIZK6G1SxGi+2ENht7gs7+iXpWPc0sy7X3YPKmSWMAuui0h8lgAA==} + /@swc/core-win32-arm64-msvc@1.3.96: + resolution: {integrity: sha512-hjGvvAduA3Un2cZ9iNP4xvTXOO4jL3G9iakhFsgVhpkU73SGmK7+LN8ZVBEu4oq2SUcHO6caWvnZ881cxGuSpg==} engines: {node: '>=10'} cpu: [arm64] os: [win32] @@ -7167,8 +7488,8 @@ packages: dev: false optional: true - /@swc/core-win32-ia32-msvc@1.3.95: - resolution: {integrity: sha512-w0u3HI916zT4BC/57gOd+AwAEjXeUlQbGJ9H4p/gzs1zkSHtoDQghVUNy3n/ZKp9KFod/95cA8mbVF9t1+6epQ==} + /@swc/core-win32-ia32-msvc@1.3.96: + resolution: {integrity: sha512-Far2hVFiwr+7VPCM2GxSmbh3ikTpM3pDombE+d69hkedvYHYZxtTF+2LTKl/sXtpbUnsoq7yV/32c9R/xaaWfw==} engines: {node: '>=10'} cpu: [ia32] os: [win32] @@ -7184,16 +7505,16 @@ packages: dev: false optional: true - /@swc/core-win32-x64-msvc@1.3.95: - resolution: {integrity: sha512-5RGnMt0S6gg4Gc6QtPUJ3Qs9Un4sKqccEzgH/tj7V/DVTJwKdnBKxFZfgQ34OR2Zpz7zGOn889xwsFVXspVWNA==} + /@swc/core-win32-x64-msvc@1.3.96: + resolution: {integrity: sha512-4VbSAniIu0ikLf5mBX81FsljnfqjoVGleEkCQv4+zRlyZtO3FHoDPkeLVoy6WRlj7tyrRcfUJ4mDdPkbfTO14g==} engines: {node: '>=10'} cpu: [x64] os: [win32] requiresBuild: true optional: true - /@swc/core@1.3.95: - resolution: {integrity: sha512-PMrNeuqIusq9DPDooV3FfNEbZuTu5jKAc04N3Hm6Uk2Fl49cqElLFQ4xvl4qDmVDz97n3n/C1RE0/f6WyGPEiA==} + /@swc/core@1.3.96: + resolution: {integrity: sha512-zwE3TLgoZwJfQygdv2SdCK9mRLYluwDOM53I+dT6Z5ZvrgVENmY3txvWDvduzkV+/8IuvrRbVezMpxcojadRdQ==} engines: {node: '>=10'} requiresBuild: true peerDependencies: @@ -7205,28 +7526,28 @@ packages: '@swc/counter': 0.1.2 '@swc/types': 0.1.5 optionalDependencies: - '@swc/core-darwin-arm64': 1.3.95 - '@swc/core-darwin-x64': 1.3.95 - '@swc/core-linux-arm-gnueabihf': 1.3.95 - '@swc/core-linux-arm64-gnu': 1.3.95 - '@swc/core-linux-arm64-musl': 1.3.95 - '@swc/core-linux-x64-gnu': 1.3.95 - '@swc/core-linux-x64-musl': 1.3.95 - '@swc/core-win32-arm64-msvc': 1.3.95 - '@swc/core-win32-ia32-msvc': 1.3.95 - '@swc/core-win32-x64-msvc': 1.3.95 + '@swc/core-darwin-arm64': 1.3.96 + '@swc/core-darwin-x64': 1.3.96 + '@swc/core-linux-arm-gnueabihf': 1.3.96 + '@swc/core-linux-arm64-gnu': 1.3.96 + '@swc/core-linux-arm64-musl': 1.3.96 + '@swc/core-linux-x64-gnu': 1.3.96 + '@swc/core-linux-x64-musl': 1.3.96 + '@swc/core-win32-arm64-msvc': 1.3.96 + '@swc/core-win32-ia32-msvc': 1.3.96 + '@swc/core-win32-x64-msvc': 1.3.96 /@swc/counter@0.1.2: resolution: {integrity: sha512-9F4ys4C74eSTEUNndnER3VJ15oru2NumfQxS8geE+f3eB5xvfxpWyqE5XlVnxb/R14uoXi6SLbBwwiDSkv+XEw==} - /@swc/jest@0.2.29(@swc/core@1.3.95): + /@swc/jest@0.2.29(@swc/core@1.3.96): resolution: {integrity: sha512-8reh5RvHBsSikDC3WGCd5ZTd2BXKkyOdK7QwynrCH58jk2cQFhhHhFBg/jvnWZehUQe/EoOImLENc9/DwbBFow==} engines: {npm: '>= 7.0.0'} peerDependencies: '@swc/core': '*' dependencies: '@jest/create-cache-key-function': 27.5.1 - '@swc/core': 1.3.95 + '@swc/core': 1.3.96 jsonc-parser: 3.2.0 dev: true @@ -7327,7 +7648,7 @@ packages: '@testing-library/dom': 9.2.0 dev: true - /@testing-library/vue@8.0.0(@vue/compiler-sfc@3.3.7)(vue@3.3.7): + /@testing-library/vue@8.0.0(@vue/compiler-sfc@3.3.8)(vue@3.3.8): resolution: {integrity: sha512-SP0qEY/SGpdT9+bPuHxYD3P/HCG0ZY8GlGJocVqdLn9EojbdQu69x06trJi1V7RW9tAZai/wwy+ZFcRsTp47kg==} engines: {node: '>=14'} peerDependencies: @@ -7336,9 +7657,9 @@ packages: dependencies: '@babel/runtime': 7.23.2 '@testing-library/dom': 9.3.3 - '@vue/compiler-sfc': 3.3.7 - '@vue/test-utils': 2.4.1(vue@3.3.7) - vue: 3.3.7(typescript@5.2.2) + '@vue/compiler-sfc': 3.3.8 + '@vue/test-utils': 2.4.1(vue@3.3.8) + vue: 3.3.8(typescript@5.2.2) transitivePeerDependencies: - '@vue/server-renderer' dev: true @@ -7362,14 +7683,14 @@ packages: engines: {node: '>=14.17'} dev: true - /@types/accepts@1.3.6: - resolution: {integrity: sha512-6+qlUg57yfE9OO63wnsJXLeq9cG3gSHBBIxNMOjNrbDRlDnm/NaR7RctfYcVCPq+j7d+MwOxqVEludH5+FKrlg==} + /@types/accepts@1.3.7: + resolution: {integrity: sha512-Pay9fq2lM2wXPWbteBsRAGiWH2hig4ZE2asK+mm7kUzlxRTfL961rj89I6zV/E3PcIkDqyuBEcMxFT7rccugeQ==} dependencies: - '@types/node': 20.8.10 + '@types/node': 20.9.1 dev: true - /@types/archiver@6.0.0: - resolution: {integrity: sha512-I1bHy/iSj8/u552lUjnOMG7rUhVkcbGIoNOj7CB/EMah1In+oQAwVZjw2mTI6qx04e5lF2V0JH/1w78jm/Dejw==} + /@types/archiver@6.0.1: + resolution: {integrity: sha512-F2+JkmDYvtQrtb2YldwL0apRB1/WB6ub+1zVF/bKp3TOygUMFqfOLuw5Fj62Q+DPwJUFz1eocMxJMu7yVpplZA==} dependencies: '@types/readdir-glob': 1.1.1 dev: true @@ -7392,12 +7713,28 @@ packages: '@types/babel__traverse': 7.20.0 dev: true + /@types/babel__core@7.20.5: + resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} + dependencies: + '@babel/parser': 7.23.4 + '@babel/types': 7.23.4 + '@types/babel__generator': 7.6.7 + '@types/babel__template': 7.4.4 + '@types/babel__traverse': 7.20.4 + dev: true + /@types/babel__generator@7.6.4: resolution: {integrity: sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==} dependencies: '@babel/types': 7.22.17 dev: true + /@types/babel__generator@7.6.7: + resolution: {integrity: sha512-6Sfsq+EaaLrw4RmdFWE9Onp63TOUue71AWb4Gpa6JxzgTYtimbM086WnYTy2U67AofR++QKCo08ZP6pwx8YFHQ==} + dependencies: + '@babel/types': 7.23.4 + dev: true + /@types/babel__template@7.4.1: resolution: {integrity: sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==} dependencies: @@ -7405,21 +7742,34 @@ packages: '@babel/types': 7.22.17 dev: true + /@types/babel__template@7.4.4: + resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} + dependencies: + '@babel/parser': 7.23.4 + '@babel/types': 7.23.4 + dev: true + /@types/babel__traverse@7.20.0: resolution: {integrity: sha512-TBOjqAGf0hmaqRwpii5LLkJLg7c6OMm4nHLmpsUxwk9bBHtoTC6dAHdVWdGv4TBxj2CZOZY8Xfq8WmfoVi7n4Q==} dependencies: '@babel/types': 7.22.17 dev: true - /@types/bcryptjs@2.4.5: - resolution: {integrity: sha512-tOF6TivOIvq+TWQm78335CMdyVJhpBG3NUdWQDAp95ax4E2rSKbws/ELHLk5EBoucwx/tHt3/hhLOHwWJgVrSw==} + /@types/babel__traverse@7.20.4: + resolution: {integrity: sha512-mSM/iKUk5fDDrEV/e83qY+Cr3I1+Q3qqTuEn++HAWYjEa1+NxZr6CNrcJGf2ZTnq4HoFGC3zaTPZTobCzCFukA==} + dependencies: + '@babel/types': 7.23.4 dev: true - /@types/body-parser@1.19.4: - resolution: {integrity: sha512-N7UDG0/xiPQa2D/XrVJXjkWbpqHCd2sBaB32ggRF2l83RhPfamgKGF8gwwqyksS95qUS5ZYF9aF+lLPRlwI2UA==} + /@types/bcryptjs@2.4.6: + resolution: {integrity: sha512-9xlo6R2qDs5uixm0bcIqCeMCE6HiQsIyel9KQySStiyqNl2tnj2mP3DX1Nf56MD6KMenNNlBBsy3LJ7gUEQPXQ==} + dev: true + + /@types/body-parser@1.19.5: + resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==} dependencies: '@types/connect': 3.4.35 - '@types/node': 20.8.10 + '@types/node': 20.9.1 dev: true /@types/braces@3.0.1: @@ -7429,9 +7779,9 @@ packages: /@types/cacheable-request@6.0.3: resolution: {integrity: sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==} dependencies: - '@types/http-cache-semantics': 4.0.1 + '@types/http-cache-semantics': 4.0.4 '@types/keyv': 3.1.4 - '@types/node': 20.8.10 + '@types/node': 20.9.1 '@types/responselike': 1.0.0 dev: false @@ -7451,8 +7801,8 @@ packages: resolution: {integrity: sha512-mEo1sAde+UCE6b2hxn332f1g1E8WfYRu6p5SvTKr2ZKC1f7gFJXk4h5PyGP9Dt6gCaG8y8XhwnXWC6Iy2cmBng==} dev: true - /@types/color-convert@2.0.2: - resolution: {integrity: sha512-KGRIgCxwcgazts4MXRCikPbIMzBpjfdgEZSy8TRHU/gtg+f9sOfHdtK8unPfxIoBtyd2aTTwINVLSNENlC8U8A==} + /@types/color-convert@2.0.3: + resolution: {integrity: sha512-2Q6wzrNiuEvYxVQqhh7sXM2mhIhvZR/Paq4FdsQkOMgWsCIkKvSGj8Le1/XalulrmgOzPMqNa0ix+ePY4hTrfg==} dependencies: '@types/color-name': 1.1.1 dev: true @@ -7464,31 +7814,31 @@ packages: /@types/connect@3.4.35: resolution: {integrity: sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==} dependencies: - '@types/node': 20.8.10 + '@types/node': 20.9.1 dev: true - /@types/content-disposition@0.5.7: - resolution: {integrity: sha512-V9/5u21RHFR1zfdm3rQ6pJUKV+zSSVQt+yq16i1YhdivVzWgPEoKedc3GdT8aFjsqQbakdxuy3FnEdePUQOamQ==} + /@types/content-disposition@0.5.8: + resolution: {integrity: sha512-QVSSvno3dE0MgO76pJhmv4Qyi/j0Yk9pBp0Y7TJ2Tlj+KCgJWY6qX7nnxCOLkZ3VYRSIk1WTxCvwUSdx6CCLdg==} dev: true /@types/cookie@0.4.1: resolution: {integrity: sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==} dev: true - /@types/core-js@2.5.6: - resolution: {integrity: sha512-zLzoC7avO4EYUUYCSzDaahSP1QJEpZQcPxqs91mPeFdh2NS4hQBcnRoEc9RuXfJ8cdN/KXUWukMmZGcKaWeOvw==} + /@types/core-js@2.5.8: + resolution: {integrity: sha512-VgnAj6tIAhJhZdJ8/IpxdatM8G4OD3VWGlp6xIxUGENZlpbob9Ty4VVdC1FIEp0aK6DBscDDjyzy5FB60TuNqg==} dev: false /@types/cross-spawn@6.0.2: resolution: {integrity: sha512-KuwNhp3eza+Rhu8IFI5HUXRP0LIhqH5cAjubUvGXXthh4YYBuP2ntwEX+Cz8GJoZUHlKo247wPWOfA9LYEq4cw==} dependencies: - '@types/node': 20.8.10 + '@types/node': 20.9.1 dev: true /@types/debug@4.1.7: resolution: {integrity: sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==} dependencies: - '@types/ms': 0.7.33 + '@types/ms': 0.7.34 dev: true /@types/detect-port@1.3.2: @@ -7515,8 +7865,8 @@ packages: resolution: {integrity: sha512-tLqYV94vuqDrXh515F/FOGtBcRMTPGvVV1LzLbtYDcQmmhtpf/gLYf+hikBbQk8MzOHNz37wpFfJbYAuSn8HqA==} dev: true - /@types/escape-regexp@0.0.2: - resolution: {integrity: sha512-YHLqlrMdV19R7f4z0eZrJMj3MjCYC3hi36s8n1oiAOwU1aoxIlne/3OVtCdGGb1lXIZ5YVfx6ZJeEIx2U3EySA==} + /@types/escape-regexp@0.0.3: + resolution: {integrity: sha512-FQMYUxaf1dVeWLUzJFSvfdDugfOpDyM13p67QfyMdagxSkBa689opkr/q9uR/VWyrWrl0jAyQaSPKxX9MpAXFw==} dev: true /@types/escodegen@0.0.6: @@ -7526,21 +7876,21 @@ packages: /@types/eslint@7.29.0: resolution: {integrity: sha512-VNcvioYDH8/FxaeTKkM4/TiTwt6pBV9E3OfGmvaw8tPl0rrHCJ4Ll15HRT+pMiFAf/MLQvAzC+6RzUMEL9Ceng==} dependencies: - '@types/estree': 1.0.4 - '@types/json-schema': 7.0.12 + '@types/estree': 1.0.5 + '@types/json-schema': 7.0.15 dev: true /@types/estree@0.0.51: resolution: {integrity: sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==} dev: true - /@types/estree@1.0.4: - resolution: {integrity: sha512-2JwWnHK9H+wUZNorf2Zr6ves96WHoWDJIftkcxPKsS7Djta6Zu519LarhRNljPXkpsZR2ZMwNCPeW7omW07BJw==} + /@types/estree@1.0.5: + resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} /@types/express-serve-static-core@4.17.33: resolution: {integrity: sha512-TPBqmR/HRYI3eC2E5hmiivIzv+bidAfXofM+sbonAGvyDhySGw9/PQZFt2BLOrjUUR++4eJVpx6KnLQK1Fk9tA==} dependencies: - '@types/node': 20.8.10 + '@types/node': 20.9.1 '@types/qs': 6.9.7 '@types/range-parser': 1.2.4 dev: true @@ -7548,7 +7898,7 @@ packages: /@types/express@4.17.17: resolution: {integrity: sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q==} dependencies: - '@types/body-parser': 1.19.4 + '@types/body-parser': 1.19.5 '@types/express-serve-static-core': 4.17.33 '@types/qs': 6.9.7 '@types/serve-static': 1.15.1 @@ -7558,10 +7908,10 @@ packages: resolution: {integrity: sha512-frsJrz2t/CeGifcu/6uRo4b+SzAwT4NYCVPu1GN8IB9XTzrpPkGuV0tmh9mN+/L0PklAlsC3u5Fxt0ju00LXIw==} dev: true - /@types/fluent-ffmpeg@2.1.23: - resolution: {integrity: sha512-ZEogBz8YpWflRox2uzGUNOYolQPUDGMNUFhf6fY/cW+6i00oeSTD0tYf4az6/162jv0YsRYi6uxigssnag7E7A==} + /@types/fluent-ffmpeg@2.1.24: + resolution: {integrity: sha512-g5oQO8Jgi2kFS3tTub7wLvfLztr1s8tdXmRd8PiL/hLMLzTIAyMR2sANkTggM/rdEDAg3d63nYRRVepwBiCw5A==} dependencies: - '@types/node': 20.8.10 + '@types/node': 20.9.1 dev: true /@types/form-data@2.5.0: @@ -7575,13 +7925,13 @@ packages: resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} dependencies: '@types/minimatch': 5.1.2 - '@types/node': 20.8.10 + '@types/node': 20.9.1 dev: true - /@types/graceful-fs@4.1.6: - resolution: {integrity: sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==} + /@types/graceful-fs@4.1.9: + resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} dependencies: - '@types/node': 20.8.10 + '@types/node': 20.9.4 dev: true /@types/hast@2.3.4: @@ -7592,25 +7942,45 @@ packages: /@types/http-cache-semantics@4.0.1: resolution: {integrity: sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==} + dev: false + + /@types/http-cache-semantics@4.0.4: + resolution: {integrity: sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==} - /@types/http-link-header@1.0.4: - resolution: {integrity: sha512-UeasLdPPSfmX45RH6h1lo932WfQUTuc1adQCpPioqRRVBM25dWwIPDBhM0CjWbdflmvr8vIzQg48yk1JzylhXg==} + /@types/http-link-header@1.0.5: + resolution: {integrity: sha512-AxhIKR8UbyoqCTNp9rRepkktHuUOw3DjfOfDCaO9kwI8AYzjhxyrvZq4+mRw/2daD3hYDknrtSeV6SsPwmc71w==} dependencies: - '@types/node': 20.8.10 + '@types/node': 20.9.1 dev: true /@types/istanbul-lib-coverage@2.0.4: resolution: {integrity: sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==} + dev: true + + /@types/istanbul-lib-coverage@2.0.6: + resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} /@types/istanbul-lib-report@3.0.0: resolution: {integrity: sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==} dependencies: '@types/istanbul-lib-coverage': 2.0.4 + dev: true + + /@types/istanbul-lib-report@3.0.3: + resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==} + dependencies: + '@types/istanbul-lib-coverage': 2.0.6 /@types/istanbul-reports@3.0.1: resolution: {integrity: sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==} dependencies: '@types/istanbul-lib-report': 3.0.0 + dev: true + + /@types/istanbul-reports@3.0.4: + resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} + dependencies: + '@types/istanbul-lib-report': 3.0.3 /@types/jest@28.1.3: resolution: {integrity: sha512-Tsbjk8Y2hkBaY/gJsataeb4q9Mubw9EOz7+4RjPkzD5KjTvHHs7cpws22InaoXxAVAhF5HfFbzJjo6oKWqSZLw==} @@ -7619,15 +7989,15 @@ packages: pretty-format: 28.1.3 dev: true - /@types/jest@29.5.5: - resolution: {integrity: sha512-ebylz2hnsWR9mYvmBFbXJXr+33UPc4+ZdxyDXh5w0FlPBTfCVN3wPL+kuOiQt3xvrK419v7XWeAs+AeOksafXg==} + /@types/jest@29.5.10: + resolution: {integrity: sha512-tE4yxKEphEyxj9s4inideLHktW/x6DwesIwWZ9NN1FKf9zbJYsnhBoA9vrHA/IuIOKwPa5PcFBNV4lpMIOEzyQ==} dependencies: expect: 29.7.0 pretty-format: 29.7.0 dev: false - /@types/jest@29.5.7: - resolution: {integrity: sha512-HLyetab6KVPSiF+7pFcUyMeLsx25LDNDemw9mGsJBkai/oouwrjTycocSDYopMEwFhN2Y4s9oPyOCZNofgSt2g==} + /@types/jest@29.5.8: + resolution: {integrity: sha512-fXEFTxMV2Co8ZF5aYFJv+YeA08RTYJfhtN5c9JSv/mFEMe+xxjufCb+PHL+bJcMs/ebPUsBu+UNTEz+ydXrR6g==} dependencies: expect: 29.7.0 pretty-format: 29.7.0 @@ -7637,14 +8007,14 @@ packages: resolution: {integrity: sha512-qC4bCqYGy1y/NP7dDVr7KJarn+PbX1nSpwA7JXdu0HxT3QYjO8MJ+cntENtHFVy2dRAyBV23OZ6MxsW1AM1L8g==} dev: true - /@types/js-yaml@4.0.8: - resolution: {integrity: sha512-m6jnPk1VhlYRiLFm3f8X9Uep761f+CK8mHyS65LutH2OhmBF0BeMEjHgg05usH8PLZMWWc/BUR9RPmkvpWnyRA==} + /@types/js-yaml@4.0.9: + resolution: {integrity: sha512-k4MGaQl5TGo/iipqb2UDG2UwjXziSWkh0uysQelTlJpX1qGlpUZYm8PnO4DxG1qBomtJUdYJ6qR6xdIah10JLg==} dev: true - /@types/jsdom@21.1.4: - resolution: {integrity: sha512-NzAMLEV0KQ4cBaDx3Ls8VfJUElyDUm1xrtYRmcMK0gF8L5xYbujFVaQlJ50yinQ/d47j2rEP1XUzkiYrw4YRFA==} + /@types/jsdom@21.1.5: + resolution: {integrity: sha512-sBK/3YjS3uuPj+HzZyhB4GGTnFmk0mdyQfhzZ/sqs9ciyG41QJdZZdwcPa6OfW97OTNTwl5tBAsfEOm/dui9pQ==} dependencies: - '@types/node': 20.8.10 + '@types/node': 20.9.1 '@types/tough-cookie': 4.0.2 parse5: 7.1.2 dev: true @@ -7653,44 +8023,48 @@ packages: resolution: {integrity: sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==} dev: true + /@types/json-schema@7.0.15: + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + dev: true + /@types/json5@0.0.29: resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} dev: true - /@types/jsonld@1.5.11: - resolution: {integrity: sha512-/B5yjthc6MEJMR4+TUtaj5LgE3bByVSNIXvPcUxiecj5F7GZKQJS5oery5rbOni7T9QBpjDF0RufCcVVlCe4hw==} + /@types/jsonld@1.5.12: + resolution: {integrity: sha512-y2EDlpPhuifmqcijoLV0zu9Pw3fd40RIZqpX4V0v7cq6vVFXjBOMhCGe2SlfTPzTZBJLZUFBidWshTYFfInvDQ==} dev: true - /@types/jsrsasign@10.5.11: - resolution: {integrity: sha512-dBjGoI99kzjDe79LEfOpSHjc/U2BnEvY/FG6Yy1qvPYS2S0yxuWRKOk2Urzh3vGeb5dDq2JRqzilSKhH05t//Q==} + /@types/jsrsasign@10.5.12: + resolution: {integrity: sha512-sOA+eVnHU+FziThpMhuqs/tjFKe5gHVJKIS7g1BzhXP+e2FS8OvtzM0K3IzFxVksDOr98Gz5FJiZVxZ9uFoHhw==} dev: true /@types/keyv@3.1.4: resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} dependencies: - '@types/node': 20.8.10 + '@types/node': 20.9.1 dev: false /@types/lodash@4.14.191: resolution: {integrity: sha512-BdZ5BCCvho3EIXw6wUCXHe7rS53AIDPLE+JzwgT+OsJk53oBfbSmZZ7CX4VaRoN78N+TJpFi9QPlfIVNmJYWxQ==} dev: true - /@types/matter-js@0.19.2: - resolution: {integrity: sha512-017JF8XkqIsuCpSAQOK94bpcs7Fyqx4YR3j1ZS68w18HLNEnG1KSfdMW098QN8alrbHFJOec8QDbyrsE7tx8ww==} + /@types/matter-js@0.19.4: + resolution: {integrity: sha512-CHKobJ2Kr9GJqr1uvoL4v3DCCgf44b0qJcOctbHtkmPBDMMN0ORnIwNS0WNFxiD0YqtySZH7IgaefGFZ0NUcMA==} dev: true /@types/mdx@2.0.3: resolution: {integrity: sha512-IgHxcT3RC8LzFLhKwP3gbMPeaK7BM9eBH46OdapPA7yvuIUJ8H6zHZV53J8hGZcTSnt95jANt+rTBNUUc22ACQ==} dev: true - /@types/micromatch@4.0.4: - resolution: {integrity: sha512-ZeDgs/tFSdUqkAZmgdnu5enRwFXJ+nIF4TxK5ENw6x0bvfcgMD1H3GnTS+fIkBUcvijQNF7ZOa2tuOtOaEjt3w==} + /@types/micromatch@4.0.5: + resolution: {integrity: sha512-B1o0zVdb9GsbKT4Fucy3oeG9G1qy/TOHrYM+NsEPazT+ktsGXOJSb1+Bg9hP7BH14Bv4dd5m7r+FohwXkY/39A==} dependencies: '@types/braces': 3.0.1 dev: true - /@types/mime-types@2.1.3: - resolution: {integrity: sha512-bvxCbHeeS7quxS7uOJShyoOQj/BfLabhF6mk9Rmr+2MRfW8W1yxyyL/0GTxLFTHen41GrIw4K3D4DrLouhb8vg==} + /@types/mime-types@2.1.4: + resolution: {integrity: sha512-lfU4b34HOri+kAY5UheuFMWPDOI+OPceBSHZKp69gEyTL/mmJ4cnU6Y/rlme3UL3GyOn6Y42hyIEw0/q8sWx5w==} dev: true /@types/mime@3.0.1: @@ -7705,14 +8079,14 @@ packages: resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==} dev: true - /@types/ms@0.7.33: - resolution: {integrity: sha512-AuHIyzR5Hea7ij0P9q7vx7xu4z0C28ucwjAZC0ja7JhINyCnOw8/DnvAPQQ9TfOlCtZAmCERKQX9+o1mgQhuOQ==} + /@types/ms@0.7.34: + resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==} dev: true /@types/node-fetch@2.6.4: resolution: {integrity: sha512-1ZX9fcN4Rvkvgv4E6PAY5WXUFWFcRWxZa3EW83UjycOB9ljJCedb2CupIP4RZMEwF/M3eTcCihbBRgwtGbg5Rg==} dependencies: - '@types/node': 20.8.10 + '@types/node': 20.9.1 form-data: 3.0.1 dev: true @@ -7726,58 +8100,56 @@ packages: resolution: {integrity: sha512-2yrWpBk32tvV/JAd3HNHWuZn/VDN1P+72hWirHnvsvTGSqbANi+kSeuQR9yAHnbvaBvHDsoTdXV0Fe+iRtHLKA==} dev: true - /@types/node@20.8.10: - resolution: {integrity: sha512-TlgT8JntpcbmKUFzjhsyhGfP2fsiz1Mv56im6enJ905xG1DAYesxJaeSbGqQmAw8OWPdhyJGhGSQGKRNJ45u9w==} + /@types/node@20.9.1: + resolution: {integrity: sha512-HhmzZh5LSJNS5O8jQKpJ/3ZcrrlG6L70hpGqMIAoM9YVD0YBRNWYsfwcXq8VnSjlNpCpgLzMXdiPo+dxcvSmiA==} + dependencies: + undici-types: 5.26.5 + + /@types/node@20.9.4: + resolution: {integrity: sha512-wmyg8HUhcn6ACjsn8oKYjkN/zUzQeNtMy44weTJSM6p4MMzEOuKbA3OjJ267uPCOW7Xex9dyrNTful8XTQYoDA==} dependencies: undici-types: 5.26.5 - /@types/nodemailer@6.4.13: - resolution: {integrity: sha512-889Vq/77eEpidCwh52sVWpbnqQmIwL8yVBekNbrztVEaWKOCRH3Eq6hjIJh1jwsGDEAJEH0RR+YhpH9mfELLKA==} + /@types/nodemailer@6.4.14: + resolution: {integrity: sha512-fUWthHO9k9DSdPCSPRqcu6TWhYyxTBg382vlNIttSe9M7XfsT06y0f24KHXtbnijPGGRIcVvdKHTNikOI6qiHA==} dependencies: - '@types/node': 20.8.10 + '@types/node': 20.9.1 dev: true /@types/normalize-package-data@2.4.1: resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} dev: true - /@types/oauth2orize-pkce@0.1.1: - resolution: {integrity: sha512-nDQDDO+SegfJ8rfz3MUYwDaxY0tmIOdKDBlxmpOvygx7LIPo3GF3Ogig67Qh6D8YG7v1ruoGgqFeVX6NT4v2Ew==} + /@types/oauth2orize-pkce@0.1.2: + resolution: {integrity: sha512-g5rDzqQTTUIJJpY7UWxb0EU1WyURIwOj3TndKC2krEEEmaKrnZXgoEBkR72QY2kp4cJ6N9cF2AqTPJ0Qyg+caA==} dependencies: - '@types/oauth2orize': 1.11.2 + '@types/oauth2orize': 1.11.3 dev: true - /@types/oauth2orize@1.11.2: - resolution: {integrity: sha512-ZnHWsUZf3+gdR4sdsNRtu1jhULpLORn62s5UIvTtXStxy/P6/LiGjbeXVqNkNwCUNlBq6XItc9phMOfxNLX17w==} + /@types/oauth2orize@1.11.3: + resolution: {integrity: sha512-Ali0fUUn+zgr4Yy/pCTFbuiaiJpq7l7OQwFnxYVchNbNGIx0c4Wkcdje6WO89I91RAaYF+gVc1pOaizA4YKZmA==} dependencies: '@types/express': 4.17.17 - '@types/node': 20.8.10 + '@types/node': 20.9.1 dev: true - /@types/oauth@0.9.2: - resolution: {integrity: sha512-Nu3/abQ6yR9VlsCdX3aiGsWFkj6OJvJqDvg/36t8Gwf2mFXdBZXPDN3K+2yfeA6Lo2m1Q12F8Qil9TZ48nWhOQ==} - dependencies: - '@types/node': 20.8.10 - dev: false - - /@types/oauth@0.9.3: - resolution: {integrity: sha512-avZiwxSz/WS6EaEjhchzXKgWtlGGYGnEVJoHuQuDLHf7gIW1Gmm9eIxOMuJ6umQNNKZkJ3Uy+C/rLzEvL3I8Sw==} + /@types/oauth@0.9.4: + resolution: {integrity: sha512-qk9orhti499fq5XxKCCEbd0OzdPZuancneyse3KtR+vgMiHRbh+mn8M4G6t64ob/Fg+GZGpa565MF/2dKWY32A==} dependencies: - '@types/node': 20.8.10 - dev: true + '@types/node': 20.9.4 - /@types/object-assign-deep@0.4.1: - resolution: {integrity: sha512-uWJatOM1JKDdF6Fwa16124b76BtxvTz5Lv+ORGuI7dwqU4iqExXpeHrHOi1c8BU4FgSJ6PdH0skR9Zmz8+MUqQ==} + /@types/object-assign-deep@0.4.3: + resolution: {integrity: sha512-d9Gxaj5j1hzrxJ61EFEg13B4g4FgrT/DYtcDWFXPehR8DF2SUZbVMFtZIs8exkVRiqrqBpdTc/lUUZjncsPpMw==} dev: false - /@types/parse-link-header@2.0.1: - resolution: {integrity: sha512-BrKNSrRTqn3UkMXvdVtr/znJch0PMBpEvEP8oBkxDx7eEGntuFLI+WpA5HGsNHK4SlqyhaMa+Ks0ViwyixQB5w==} + /@types/parse-link-header@2.0.3: + resolution: {integrity: sha512-ffLAxD6Xqcf2gSbtEJehj8yJ5R/2OZqD4liodQvQQ+hhO4kg1mk9ToEZQPMtNTm/zIQj2GNleQbsjPp9+UQm4Q==} dev: false - /@types/pg@8.10.7: - resolution: {integrity: sha512-ksJqHipwYaSEHz9e1fr6H6erjoEdNNaOxwyJgPx9bNeaqOW3iWBQgVHfpwiSAoqGzchfc+ZyRLwEfeCcyYD3uQ==} + /@types/pg@8.10.9: + resolution: {integrity: sha512-UksbANNE/f8w0wOMxVKKIrLCbEMV+oM1uKejmwXr39olg4xqcfBDbXxObJAt6XxHbDa4XTKOlUEcEltXDX+XLQ==} dependencies: - '@types/node': 20.8.10 + '@types/node': 20.9.1 pg-protocol: 1.6.0 pg-types: 4.0.1 dev: true @@ -7790,34 +8162,34 @@ packages: resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} dev: true - /@types/pug@2.0.8: - resolution: {integrity: sha512-QzhsZ1dMGyJbn/D9V80zp4GIA4J4rfAjCCxc3MP+new0E8dyVdSkR735Lx+n3LIaHNFcjHL5+TbziccuT+fdoQ==} + /@types/pug@2.0.9: + resolution: {integrity: sha512-Yg4LkgFYvn1faISbDNWmcAC1XoDT8IoMUFspp5mnagKk+UvD2N0IWt5A7GRdMubsNWqgCLmrkf8rXkzNqb4szA==} dev: true - /@types/punycode@2.1.1: - resolution: {integrity: sha512-41wbJ1+JU2hECp2FDMAAzUZyiFyfeqAW/aTVsqY2RsDi5M2sliZgBp+7rv1Rc8oMJv0tt+74b6Sb1EcWldTCpA==} + /@types/punycode@2.1.2: + resolution: {integrity: sha512-KKQ4GjRCpswGPA6ZfvPrC+7h84bAvPkU1kFGJ3FuQOgZIEc8JmO1jcDCaxSiYcN3qzOOp9YqHq+njKEO3Q4BnA==} dev: true - /@types/qrcode@1.5.4: - resolution: {integrity: sha512-ufYqUO7wUBq49hugJry+oIYKscvxIQerJSmXeny215aJKfrepN04DDZP8FCgxvV82kOqKPULCE4PIW3qUmZrRA==} + /@types/qrcode@1.5.5: + resolution: {integrity: sha512-CdfBi/e3Qk+3Z/fXYShipBT13OJ2fDO2Q2w5CIP5anLTLIndQG9z6P1cnm+8zCWSpm5dnxMFd/uREtb0EXuQzg==} dependencies: - '@types/node': 20.8.10 + '@types/node': 20.9.1 dev: true /@types/qs@6.9.7: resolution: {integrity: sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==} dev: true - /@types/random-seed@0.3.4: - resolution: {integrity: sha512-9YOd099WU/gzKG5zOZKfE31fDt/6rYAOxh7OA1jgLhFMqF0uwDZNnsb+1vuCwycZZ71BlmPieeQiTW6BWkS+KQ==} + /@types/random-seed@0.3.5: + resolution: {integrity: sha512-CftxcDPAHgs0SLHU2dt+ZlDPJfGqLW3sZlC/ATr5vJDSe5tRLeOne7HMvCOJnFyF8e1U41wqzs3h6AMC613xtA==} dev: true /@types/range-parser@1.2.4: resolution: {integrity: sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==} dev: true - /@types/ratelimiter@3.4.5: - resolution: {integrity: sha512-lAB/Va9OCFSi5jQHLz7x7MKPjRVHnyvOYzXSQorN30qWIJpudPbDkMHBWUoo38MFG3dr+/jsWhjcUkJwunoVUA==} + /@types/ratelimiter@3.4.6: + resolution: {integrity: sha512-Bv6WLSXPGLVsBjkizXtn+ef78R92e36/DFQo2wXPTHtp1cYXF6rCULMqf9WcZPAtyMZMvQAtIPeYMA1xAyxghw==} dev: true /@types/react@18.0.28: @@ -7831,11 +8203,11 @@ packages: /@types/readdir-glob@1.1.1: resolution: {integrity: sha512-ImM6TmoF8bgOwvehGviEj3tRdRBbQujr1N+0ypaln/GWjaerOB26jb93vsRHmdMtvVQZQebOlqt2HROark87mQ==} dependencies: - '@types/node': 20.8.10 + '@types/node': 20.9.1 dev: true - /@types/rename@1.0.6: - resolution: {integrity: sha512-uLznlquGwzyFMxjBGcR3mY+k/zWv+9kk3yEzsldIU5OzjRw0i6EdZ1ydVCjTEYQ4HkWGBY+bXn62lrGKS+G1iw==} + /@types/rename@1.0.7: + resolution: {integrity: sha512-E9qapfghUGfBMi3jNhsmCKPIp3f2zvNKpaX1BDGLGJNjzpgsZ/RTx7NaNksFjGoJ+r9NvWF1NSM5vVecnNjVmw==} dev: true /@types/resolve@1.20.4: @@ -7845,11 +8217,11 @@ packages: /@types/responselike@1.0.0: resolution: {integrity: sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==} dependencies: - '@types/node': 20.8.10 + '@types/node': 20.9.1 dev: false - /@types/sanitize-html@2.9.3: - resolution: {integrity: sha512-1rsSdEJLV7utAG+Fms2uP+nSmmYmOhUUSSZvUz4wF2wlA0M5/A/gVgnpWZ7EKaPWsrrxWiSuNJqSBW8dh2isBA==} + /@types/sanitize-html@2.9.4: + resolution: {integrity: sha512-Ym4hjmAFxF/eux7nW2yDPAj2o9RYh0vP/9V5ECoHtgJ/O9nPGslUd20CMn6WatRMlFVfjMTg3lMcWq8YyO6QnA==} dependencies: htmlparser2: 8.0.1 dev: true @@ -7858,15 +8230,19 @@ packages: resolution: {integrity: sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==} dev: true - /@types/semver@7.5.4: - resolution: {integrity: sha512-MMzuxN3GdFwskAnb6fz0orFvhfqi752yjaXylr0Rp4oDg5H0Zn1IuyRhDVvYOwAXoJirx2xuS16I3WjxnAIHiQ==} + /@types/semver@7.5.5: + resolution: {integrity: sha512-+d+WYC1BxJ6yVOgUgzK8gWvp5qF8ssV5r4nsDcZWKRWcDQLQ619tvWAxJQYGgBrO1MnLJC7a5GtiYsAoQ47dJg==} + dev: true + + /@types/semver@7.5.6: + resolution: {integrity: sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==} dev: true /@types/serve-static@1.15.1: resolution: {integrity: sha512-NUo5XNiAdULrJENtJXZZ3fHtfMolzZwczzBbnAeBbqBwG+LaG6YaJtuwzwGSQZ2wsCrxjEhNNjAkKigy3n8teQ==} dependencies: '@types/mime': 3.0.1 - '@types/node': 20.8.10 + '@types/node': 20.9.1 dev: true /@types/serviceworker@0.0.67: @@ -7876,7 +8252,7 @@ packages: /@types/set-cookie-parser@2.4.3: resolution: {integrity: sha512-7QhnH7bi+6KAhBB+Auejz1uV9DHiopZqu7LfR/5gZZTkejJV5nYeZZpgfFoE0N8aDsXuiYpfKyfyMatCwQhyTQ==} dependencies: - '@types/node': 20.8.10 + '@types/node': 20.9.1 dev: true /@types/sharp@0.32.0: @@ -7886,41 +8262,41 @@ packages: sharp: 0.32.6 dev: true - /@types/simple-oauth2@5.0.6: - resolution: {integrity: sha512-i1tx1TwdET6m9tit+p+pWABuNWz0W8LThmzwh+cYC9yKJTXD3q3zPWOwstuL8/ELO0HoE0f9r/yYQ3XHaiTjrw==} + /@types/simple-oauth2@5.0.7: + resolution: {integrity: sha512-8JbWVJbiTSBQP/7eiyGKyXWAqp3dKQZpaA+pdW16FCi32ujkzRMG8JfjoAzdWt6W8U591ZNdHcPtP2D7ILTKuA==} dev: true /@types/sinon@10.0.13: resolution: {integrity: sha512-UVjDqJblVNQYvVNUsj0PuYYw0ELRmgt1Nt5Vk0pT5f16ROGfcKJY8o1HVuMOJOpD727RrGB9EGvoaTQE5tgxZQ==} dependencies: - '@types/sinonjs__fake-timers': 8.1.4 + '@types/sinonjs__fake-timers': 8.1.5 dev: true /@types/sinonjs__fake-timers@8.1.1: resolution: {integrity: sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g==} dev: true - /@types/sinonjs__fake-timers@8.1.4: - resolution: {integrity: sha512-GDV68H0mBSN449sa5HEj51E0wfpVQb8xNSMzxf/PrypMFcLTMwJMOM/cgXiv71Mq5drkOQmUGvL1okOZcu6RrQ==} + /@types/sinonjs__fake-timers@8.1.5: + resolution: {integrity: sha512-mQkU2jY8jJEF7YHjHvsQO8+3ughTL1mcnn96igfhONmR+fUPSKIkefQYpSe8bsly2Ep7oQbn/6VG5/9/0qcArQ==} dev: true /@types/sizzle@2.3.3: resolution: {integrity: sha512-JYM8x9EGF163bEyhdJBpR2QX1R5naCJHC8ucJylJ3w9/CVBaskdQ8WqBf8MmQrd1kRvp/a4TS8HJ+bxzR7ZJYQ==} dev: true - /@types/stack-utils@2.0.1: - resolution: {integrity: sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==} + /@types/stack-utils@2.0.3: + resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} - /@types/throttle-debounce@5.0.1: - resolution: {integrity: sha512-/fifasjlhpz/r4YsH0r0ZXJvivXFB3F6bmezMnqgsn/NK/fYJn7vN84k7eYn/oALu/aenXo+t8Pv+QlkS6iYBg==} + /@types/throttle-debounce@5.0.2: + resolution: {integrity: sha512-pDzSNulqooSKvSNcksnV72nk8p7gRqN8As71Sp28nov1IgmPKWbOEIwAWvBME5pPTtaXJAvG3O4oc76HlQ4kqQ==} dev: true - /@types/tinycolor2@1.4.5: - resolution: {integrity: sha512-uLJijDHN5E6j5n1qefF9oaeplgszXglWXWTviMoFr/YxgvbyrkFil20yDT7ljhCiTQ/BfCYtxfJS81LdTro5DQ==} + /@types/tinycolor2@1.4.6: + resolution: {integrity: sha512-iEN8J0BoMnsWBqjVbWH/c0G0Hh7O21lpR2/+PrvAVgWdzL7eexIFm4JN/Wn10PTcmNdtS6U67r499mlWMXOxNw==} dev: true - /@types/tmp@0.2.5: - resolution: {integrity: sha512-KodRrjqWrk/3VyzfR4aeXkf2n5Ssg+bvVUhXlvHVffLiIHriLlrO3vYobB+Kvnr9DkNzMiyWHT3G6hT/xX0ryQ==} + /@types/tmp@0.2.6: + resolution: {integrity: sha512-chhaNf2oKHlRkDGt+tiKE2Z5aJ6qalm7Z9rlLdBwmOiAAf09YQvvoLXjWK4HWPF1xU/fqvMgfNfpVoBscA/tKA==} dev: true /@types/tough-cookie@4.0.2: @@ -7933,43 +8309,47 @@ packages: /@types/uuid@9.0.4: resolution: {integrity: sha512-zAuJWQflfx6dYJM62vna+Sn5aeSWhh3OB+wfUEACNcqUSc0AGc5JKl+ycL1vrH7frGTXhJchYjE1Hak8L819dA==} - - /@types/uuid@9.0.6: - resolution: {integrity: sha512-BT2Krtx4xaO6iwzwMFUYvWBWkV2pr37zD68Vmp1CDV196MzczBRxuEpD6Pr395HAgebC/co7hOphs53r8V7jew==} dev: true - /@types/vary@1.1.2: - resolution: {integrity: sha512-eg5VDqVer3MPty3Ftd/T1ZMGhhBZVvW9rMn4psghY4JqcleHvyU0y2wkyIzrID34AYzdeXLDuxT3oc0AM8nJJQ==} + /@types/uuid@9.0.7: + resolution: {integrity: sha512-WUtIVRUZ9i5dYXefDEAI7sh9/O7jGvHg7Df/5O/gtH3Yabe5odI3UWopVR1qbPXQtvOxWu3mM4XxlYeZtMWF4g==} + + /@types/vary@1.1.3: + resolution: {integrity: sha512-XJT8/ZQCL7NUut9QDLf6l24JfAEl7bnNdgxfj50cHIpEPRJLHHDDFOAq6i+GsEmeFfH7NamhBE4c4Thtb2egWg==} dependencies: - '@types/node': 20.8.10 + '@types/node': 20.9.1 dev: true - /@types/web-push@3.6.2: - resolution: {integrity: sha512-v6Wdk1eIVbAJQjEAa1ZxuG3cfOYTd6nSv55BVJMtLQUvQ07v80MPt2Voq/z71WKhy4CORu4L3aH+8SXKX4BD5g==} + /@types/web-push@3.6.3: + resolution: {integrity: sha512-v3oT4mMJsHeJ/rraliZ+7TbZtr5bQQuxcgD7C3/1q/zkAj29c8RE0F9lVZVu3hiQe5Z9fYcBreV7TLnfKR+4mg==} dependencies: - '@types/node': 20.8.10 + '@types/node': 20.9.1 dev: true - /@types/websocket@1.0.8: - resolution: {integrity: sha512-wvkOpWApbuxVfHhSQ1XrjVN4363vsfLJwEo4AboIZk0g1vJA5nmLp8GXUHuIdf4/Fe7+/V0Efe2HvWiLqHtlqw==} + /@types/websocket@1.0.9: + resolution: {integrity: sha512-xrMBdqdKdlE+7L9Wg2PQblIkZGSgiMlEoP6UAaYKMHbbxqCJ6PV/pTZ2RcMcSSERurU2TtGbmO4lqpFOJd01ww==} dependencies: - '@types/node': 20.8.10 + '@types/node': 20.9.1 dev: true - /@types/ws@8.5.5: - resolution: {integrity: sha512-lwhs8hktwxSjf9UaZ9tG5M03PGogvFaH8gUgLNbN9HKIg0dvv6q+gkSuJ8HN4/VbyxkuLzCjlN7GquQ0gUJfIg==} + /@types/ws@8.5.10: + resolution: {integrity: sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==} dependencies: - '@types/node': 20.8.10 + '@types/node': 20.9.4 dev: false - /@types/ws@8.5.8: - resolution: {integrity: sha512-flUksGIQCnJd6sZ1l5dqCEG/ksaoAg/eUwiLAGTJQcfgvZJKF++Ta4bJA6A5aPSJmsr+xlseHn4KLgVlNnvPTg==} + /@types/ws@8.5.9: + resolution: {integrity: sha512-jbdrY0a8lxfdTp/+r7Z4CkycbOFN8WX+IOchLJr3juT/xzbJ8URyTVSJ/hvNdadTgM1mnedb47n+Y31GsFnQlg==} dependencies: - '@types/node': 20.8.10 + '@types/node': 20.9.1 dev: true /@types/yargs-parser@21.0.0: resolution: {integrity: sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==} + dev: true + + /@types/yargs-parser@21.0.3: + resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} /@types/yargs@16.0.5: resolution: {integrity: sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==} @@ -7977,21 +8357,21 @@ packages: '@types/yargs-parser': 21.0.0 dev: true - /@types/yargs@17.0.19: - resolution: {integrity: sha512-cAx3qamwaYX9R0fzOIZAlFpo4A+1uBVCxqpKz9D26uTF4srRXaGTTsikQmaotCtNdbhzyUH7ft6p9ktz9s6UNQ==} + /@types/yargs@17.0.32: + resolution: {integrity: sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==} dependencies: - '@types/yargs-parser': 21.0.0 + '@types/yargs-parser': 21.0.3 - /@types/yauzl@2.10.0: - resolution: {integrity: sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==} + /@types/yauzl@2.10.3: + resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} requiresBuild: true dependencies: - '@types/node': 20.8.10 + '@types/node': 18.17.15 dev: true optional: true - /@typescript-eslint/eslint-plugin@6.7.2(@typescript-eslint/parser@6.7.2)(eslint@8.49.0)(typescript@5.1.6): - resolution: {integrity: sha512-ooaHxlmSgZTM6CHYAFRlifqh1OAr3PAQEwi7lhYhaegbnXrnh7CDcHmc3+ihhbQC7H0i4JF0psI5ehzkF6Yl6Q==} + /@typescript-eslint/eslint-plugin@6.11.0(@typescript-eslint/parser@6.11.0)(eslint@8.53.0)(typescript@5.2.2): + resolution: {integrity: sha512-uXnpZDc4VRjY4iuypDBKzW1rz9T5YBBK0snMn8MaTSNd2kMlj50LnLBABELjJiOL5YHk7ZD8hbSpI9ubzqYI0w==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha @@ -8002,25 +8382,25 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.6.2 - '@typescript-eslint/parser': 6.7.2(eslint@8.49.0)(typescript@5.1.6) - '@typescript-eslint/scope-manager': 6.7.2 - '@typescript-eslint/type-utils': 6.7.2(eslint@8.49.0)(typescript@5.1.6) - '@typescript-eslint/utils': 6.7.2(eslint@8.49.0)(typescript@5.1.6) - '@typescript-eslint/visitor-keys': 6.7.2 + '@typescript-eslint/parser': 6.11.0(eslint@8.53.0)(typescript@5.2.2) + '@typescript-eslint/scope-manager': 6.11.0 + '@typescript-eslint/type-utils': 6.11.0(eslint@8.53.0)(typescript@5.2.2) + '@typescript-eslint/utils': 6.11.0(eslint@8.53.0)(typescript@5.2.2) + '@typescript-eslint/visitor-keys': 6.11.0 debug: 4.3.4(supports-color@8.1.1) - eslint: 8.49.0 + eslint: 8.53.0 graphemer: 1.4.0 ignore: 5.2.4 natural-compare: 1.4.0 semver: 7.5.4 - ts-api-utils: 1.0.1(typescript@5.1.6) - typescript: 5.1.6 + ts-api-utils: 1.0.1(typescript@5.2.2) + typescript: 5.2.2 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/eslint-plugin@6.9.1(@typescript-eslint/parser@6.9.1)(eslint@8.52.0)(typescript@5.2.2): - resolution: {integrity: sha512-w0tiiRc9I4S5XSXXrMHOWgHgxbrBn1Ro+PmiYhSg2ZVdxrAJtQgzU5o2m1BfP6UOn7Vxcc6152vFjQfmZR4xEg==} + /@typescript-eslint/eslint-plugin@6.12.0(@typescript-eslint/parser@6.12.0)(eslint@8.54.0)(typescript@5.1.6): + resolution: {integrity: sha512-XOpZ3IyJUIV1b15M7HVOpgQxPPF7lGXgsfcEIu3yDxFPaf/xZKt7s9QO/pbk7vpWQyVulpJbu4E5LwpZiQo4kA==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha @@ -8030,26 +8410,26 @@ packages: typescript: optional: true dependencies: - '@eslint-community/regexpp': 4.6.2 - '@typescript-eslint/parser': 6.9.1(eslint@8.52.0)(typescript@5.2.2) - '@typescript-eslint/scope-manager': 6.9.1 - '@typescript-eslint/type-utils': 6.9.1(eslint@8.52.0)(typescript@5.2.2) - '@typescript-eslint/utils': 6.9.1(eslint@8.52.0)(typescript@5.2.2) - '@typescript-eslint/visitor-keys': 6.9.1 + '@eslint-community/regexpp': 4.10.0 + '@typescript-eslint/parser': 6.12.0(eslint@8.54.0)(typescript@5.1.6) + '@typescript-eslint/scope-manager': 6.12.0 + '@typescript-eslint/type-utils': 6.12.0(eslint@8.54.0)(typescript@5.1.6) + '@typescript-eslint/utils': 6.12.0(eslint@8.54.0)(typescript@5.1.6) + '@typescript-eslint/visitor-keys': 6.12.0 debug: 4.3.4(supports-color@8.1.1) - eslint: 8.52.0 + eslint: 8.54.0 graphemer: 1.4.0 - ignore: 5.2.4 + ignore: 5.3.0 natural-compare: 1.4.0 semver: 7.5.4 - ts-api-utils: 1.0.1(typescript@5.2.2) - typescript: 5.2.2 + ts-api-utils: 1.0.3(typescript@5.1.6) + typescript: 5.1.6 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/parser@6.7.2(eslint@8.49.0)(typescript@5.1.6): - resolution: {integrity: sha512-KA3E4ox0ws+SPyxQf9iSI25R6b4Ne78ORhNHeVKrPQnoYsb9UhieoiRoJgrzgEeKGOXhcY1i8YtOeCHHTDa6Fw==} + /@typescript-eslint/parser@6.11.0(eslint@8.53.0)(typescript@5.2.2): + resolution: {integrity: sha512-+whEdjk+d5do5nxfxx73oanLL9ghKO3EwM9kBCkUtWMRwWuPaFv9ScuqlYfQ6pAD6ZiJhky7TZ2ZYhrMsfMxVQ==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -8058,19 +8438,19 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 6.7.2 - '@typescript-eslint/types': 6.7.2 - '@typescript-eslint/typescript-estree': 6.7.2(typescript@5.1.6) - '@typescript-eslint/visitor-keys': 6.7.2 + '@typescript-eslint/scope-manager': 6.11.0 + '@typescript-eslint/types': 6.11.0 + '@typescript-eslint/typescript-estree': 6.11.0(typescript@5.2.2) + '@typescript-eslint/visitor-keys': 6.11.0 debug: 4.3.4(supports-color@8.1.1) - eslint: 8.49.0 - typescript: 5.1.6 + eslint: 8.53.0 + typescript: 5.2.2 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/parser@6.9.1(eslint@8.52.0)(typescript@5.2.2): - resolution: {integrity: sha512-C7AK2wn43GSaCUZ9do6Ksgi2g3mwFkMO3Cis96kzmgudoVaKyt62yNzJOktP0HDLb/iO2O0n2lBOzJgr6Q/cyg==} + /@typescript-eslint/parser@6.12.0(eslint@8.54.0)(typescript@5.1.6): + resolution: {integrity: sha512-s8/jNFPKPNRmXEnNXfuo1gemBdVmpQsK1pcu+QIvuNJuhFzGrpD7WjOcvDc/+uEdfzSYpNu7U/+MmbScjoQ6vg==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -8079,35 +8459,35 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 6.9.1 - '@typescript-eslint/types': 6.9.1 - '@typescript-eslint/typescript-estree': 6.9.1(typescript@5.2.2) - '@typescript-eslint/visitor-keys': 6.9.1 + '@typescript-eslint/scope-manager': 6.12.0 + '@typescript-eslint/types': 6.12.0 + '@typescript-eslint/typescript-estree': 6.12.0(typescript@5.1.6) + '@typescript-eslint/visitor-keys': 6.12.0 debug: 4.3.4(supports-color@8.1.1) - eslint: 8.52.0 - typescript: 5.2.2 + eslint: 8.54.0 + typescript: 5.1.6 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/scope-manager@6.7.2: - resolution: {integrity: sha512-bgi6plgyZjEqapr7u2mhxGR6E8WCzKNUFWNh6fkpVe9+yzRZeYtDTbsIBzKbcxI+r1qVWt6VIoMSNZ4r2A+6Yw==} + /@typescript-eslint/scope-manager@6.11.0: + resolution: {integrity: sha512-0A8KoVvIURG4uhxAdjSaxy8RdRE//HztaZdG8KiHLP8WOXSk0vlF7Pvogv+vlJA5Rnjj/wDcFENvDaHb+gKd1A==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.7.2 - '@typescript-eslint/visitor-keys': 6.7.2 + '@typescript-eslint/types': 6.11.0 + '@typescript-eslint/visitor-keys': 6.11.0 dev: true - /@typescript-eslint/scope-manager@6.9.1: - resolution: {integrity: sha512-38IxvKB6NAne3g/+MyXMs2Cda/Sz+CEpmm+KLGEM8hx/CvnSRuw51i8ukfwB/B/sESdeTGet1NH1Wj7I0YXswg==} + /@typescript-eslint/scope-manager@6.12.0: + resolution: {integrity: sha512-5gUvjg+XdSj8pcetdL9eXJzQNTl3RD7LgUiYTl8Aabdi8hFkaGSYnaS6BLc0BGNaDH+tVzVwmKtWvu0jLgWVbw==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.9.1 - '@typescript-eslint/visitor-keys': 6.9.1 + '@typescript-eslint/types': 6.12.0 + '@typescript-eslint/visitor-keys': 6.12.0 dev: true - /@typescript-eslint/type-utils@6.7.2(eslint@8.49.0)(typescript@5.1.6): - resolution: {integrity: sha512-36F4fOYIROYRl0qj95dYKx6kybddLtsbmPIYNK0OBeXv2j9L5nZ17j9jmfy+bIDHKQgn2EZX+cofsqi8NPATBQ==} + /@typescript-eslint/type-utils@6.11.0(eslint@8.53.0)(typescript@5.2.2): + resolution: {integrity: sha512-nA4IOXwZtqBjIoYrJcYxLRO+F9ri+leVGoJcMW1uqr4r1Hq7vW5cyWrA43lFbpRvQ9XgNrnfLpIkO3i1emDBIA==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -8116,18 +8496,18 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 6.7.2(typescript@5.1.6) - '@typescript-eslint/utils': 6.7.2(eslint@8.49.0)(typescript@5.1.6) + '@typescript-eslint/typescript-estree': 6.11.0(typescript@5.2.2) + '@typescript-eslint/utils': 6.11.0(eslint@8.53.0)(typescript@5.2.2) debug: 4.3.4(supports-color@8.1.1) - eslint: 8.49.0 - ts-api-utils: 1.0.1(typescript@5.1.6) - typescript: 5.1.6 + eslint: 8.53.0 + ts-api-utils: 1.0.1(typescript@5.2.2) + typescript: 5.2.2 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/type-utils@6.9.1(eslint@8.52.0)(typescript@5.2.2): - resolution: {integrity: sha512-eh2oHaUKCK58qIeYp19F5V5TbpM52680sB4zNSz29VBQPTWIlE/hCj5P5B1AChxECe/fmZlspAWFuRniep1Skg==} + /@typescript-eslint/type-utils@6.12.0(eslint@8.54.0)(typescript@5.1.6): + resolution: {integrity: sha512-WWmRXxhm1X8Wlquj+MhsAG4dU/Blvf1xDgGaYCzfvStP2NwPQh6KBvCDbiOEvaE0filhranjIlK/2fSTVwtBng==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -8136,28 +8516,28 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 6.9.1(typescript@5.2.2) - '@typescript-eslint/utils': 6.9.1(eslint@8.52.0)(typescript@5.2.2) + '@typescript-eslint/typescript-estree': 6.12.0(typescript@5.1.6) + '@typescript-eslint/utils': 6.12.0(eslint@8.54.0)(typescript@5.1.6) debug: 4.3.4(supports-color@8.1.1) - eslint: 8.52.0 - ts-api-utils: 1.0.1(typescript@5.2.2) - typescript: 5.2.2 + eslint: 8.54.0 + ts-api-utils: 1.0.3(typescript@5.1.6) + typescript: 5.1.6 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/types@6.7.2: - resolution: {integrity: sha512-flJYwMYgnUNDAN9/GAI3l8+wTmvTYdv64fcH8aoJK76Y+1FCZ08RtI5zDerM/FYT5DMkAc+19E4aLmd5KqdFyg==} + /@typescript-eslint/types@6.11.0: + resolution: {integrity: sha512-ZbEzuD4DwEJxwPqhv3QULlRj8KYTAnNsXxmfuUXFCxZmO6CF2gM/y+ugBSAQhrqaJL3M+oe4owdWunaHM6beqA==} engines: {node: ^16.0.0 || >=18.0.0} dev: true - /@typescript-eslint/types@6.9.1: - resolution: {integrity: sha512-BUGslGOb14zUHOUmDB2FfT6SI1CcZEJYfF3qFwBeUrU6srJfzANonwRYHDpLBuzbq3HaoF2XL2hcr01c8f8OaQ==} + /@typescript-eslint/types@6.12.0: + resolution: {integrity: sha512-MA16p/+WxM5JG/F3RTpRIcuOghWO30//VEOvzubM8zuOOBYXsP+IfjoCXXiIfy2Ta8FRh9+IO9QLlaFQUU+10Q==} engines: {node: ^16.0.0 || >=18.0.0} dev: true - /@typescript-eslint/typescript-estree@6.7.2(typescript@5.1.6): - resolution: {integrity: sha512-kiJKVMLkoSciGyFU0TOY0fRxnp9qq1AzVOHNeN1+B9erKFCJ4Z8WdjAkKQPP+b1pWStGFqezMLltxO+308dJTQ==} + /@typescript-eslint/typescript-estree@6.11.0(typescript@5.2.2): + resolution: {integrity: sha512-Aezzv1o2tWJwvZhedzvD5Yv7+Lpu1by/U1LZ5gLc4tCx8jUmuSCMioPFRjliN/6SJIvY6HpTtJIWubKuYYYesQ==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: typescript: '*' @@ -8165,20 +8545,20 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 6.7.2 - '@typescript-eslint/visitor-keys': 6.7.2 + '@typescript-eslint/types': 6.11.0 + '@typescript-eslint/visitor-keys': 6.11.0 debug: 4.3.4(supports-color@8.1.1) globby: 11.1.0 is-glob: 4.0.3 semver: 7.5.4 - ts-api-utils: 1.0.1(typescript@5.1.6) - typescript: 5.1.6 + ts-api-utils: 1.0.1(typescript@5.2.2) + typescript: 5.2.2 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/typescript-estree@6.9.1(typescript@5.2.2): - resolution: {integrity: sha512-U+mUylTHfcqeO7mLWVQ5W/tMLXqVpRv61wm9ZtfE5egz7gtnmqVIw9ryh0mgIlkKk9rZLY3UHygsBSdB9/ftyw==} + /@typescript-eslint/typescript-estree@6.12.0(typescript@5.1.6): + resolution: {integrity: sha512-vw9E2P9+3UUWzhgjyyVczLWxZ3GuQNT7QpnIY3o5OMeLO/c8oHljGc8ZpryBMIyympiAAaKgw9e5Hl9dCWFOYw==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: typescript: '*' @@ -8186,69 +8566,69 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 6.9.1 - '@typescript-eslint/visitor-keys': 6.9.1 + '@typescript-eslint/types': 6.12.0 + '@typescript-eslint/visitor-keys': 6.12.0 debug: 4.3.4(supports-color@8.1.1) globby: 11.1.0 is-glob: 4.0.3 semver: 7.5.4 - ts-api-utils: 1.0.1(typescript@5.2.2) - typescript: 5.2.2 + ts-api-utils: 1.0.3(typescript@5.1.6) + typescript: 5.1.6 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/utils@6.7.2(eslint@8.49.0)(typescript@5.1.6): - resolution: {integrity: sha512-ZCcBJug/TS6fXRTsoTkgnsvyWSiXwMNiPzBUani7hDidBdj1779qwM1FIAmpH4lvlOZNF3EScsxxuGifjpLSWQ==} + /@typescript-eslint/utils@6.11.0(eslint@8.53.0)(typescript@5.2.2): + resolution: {integrity: sha512-p23ibf68fxoZy605dc0dQAEoUsoiNoP3MD9WQGiHLDuTSOuqoTsa4oAy+h3KDkTcxbbfOtUjb9h3Ta0gT4ug2g==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.49.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.53.0) '@types/json-schema': 7.0.12 - '@types/semver': 7.5.4 - '@typescript-eslint/scope-manager': 6.7.2 - '@typescript-eslint/types': 6.7.2 - '@typescript-eslint/typescript-estree': 6.7.2(typescript@5.1.6) - eslint: 8.49.0 + '@types/semver': 7.5.5 + '@typescript-eslint/scope-manager': 6.11.0 + '@typescript-eslint/types': 6.11.0 + '@typescript-eslint/typescript-estree': 6.11.0(typescript@5.2.2) + eslint: 8.53.0 semver: 7.5.4 transitivePeerDependencies: - supports-color - typescript dev: true - /@typescript-eslint/utils@6.9.1(eslint@8.52.0)(typescript@5.2.2): - resolution: {integrity: sha512-L1T0A5nFdQrMVunpZgzqPL6y2wVreSyHhKGZryS6jrEN7bD9NplVAyMryUhXsQ4TWLnZmxc2ekar/lSGIlprCA==} + /@typescript-eslint/utils@6.12.0(eslint@8.54.0)(typescript@5.1.6): + resolution: {integrity: sha512-LywPm8h3tGEbgfyjYnu3dauZ0U7R60m+miXgKcZS8c7QALO9uWJdvNoP+duKTk2XMWc7/Q3d/QiCuLN9X6SWyQ==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.52.0) - '@types/json-schema': 7.0.12 - '@types/semver': 7.5.4 - '@typescript-eslint/scope-manager': 6.9.1 - '@typescript-eslint/types': 6.9.1 - '@typescript-eslint/typescript-estree': 6.9.1(typescript@5.2.2) - eslint: 8.52.0 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.54.0) + '@types/json-schema': 7.0.15 + '@types/semver': 7.5.6 + '@typescript-eslint/scope-manager': 6.12.0 + '@typescript-eslint/types': 6.12.0 + '@typescript-eslint/typescript-estree': 6.12.0(typescript@5.1.6) + eslint: 8.54.0 semver: 7.5.4 transitivePeerDependencies: - supports-color - typescript dev: true - /@typescript-eslint/visitor-keys@6.7.2: - resolution: {integrity: sha512-uVw9VIMFBUTz8rIeaUT3fFe8xIUx8r4ywAdlQv1ifH+6acn/XF8Y6rwJ7XNmkNMDrTW+7+vxFFPIF40nJCVsMQ==} + /@typescript-eslint/visitor-keys@6.11.0: + resolution: {integrity: sha512-+SUN/W7WjBr05uRxPggJPSzyB8zUpaYo2hByKasWbqr3PM8AXfZt8UHdNpBS1v9SA62qnSSMF3380SwDqqprgQ==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.7.2 + '@typescript-eslint/types': 6.11.0 eslint-visitor-keys: 3.4.3 dev: true - /@typescript-eslint/visitor-keys@6.9.1: - resolution: {integrity: sha512-MUaPUe/QRLEffARsmNfmpghuQkW436DvESW+h+M52w0coICHRfD6Np9/K6PdACwnrq1HmuLl+cSPZaJmeVPkSw==} + /@typescript-eslint/visitor-keys@6.12.0: + resolution: {integrity: sha512-rg3BizTZHF1k3ipn8gfrzDXXSFKyOEB5zxYXInQ6z0hUvmQlhaZQzK+YmHmNViMA9HzW5Q9+bPPt90bU6GQwyw==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.9.1 + '@typescript-eslint/types': 6.12.0 eslint-visitor-keys: 3.4.3 dev: true @@ -8267,20 +8647,20 @@ packages: '@babel/plugin-transform-react-jsx-source': 7.19.6(@babel/core@7.22.11) magic-string: 0.27.0 react-refresh: 0.14.0 - vite: 4.5.0(@types/node@20.8.10)(sass@1.69.5)(terser@5.24.0) + vite: 4.5.0(@types/node@20.9.1)(sass@1.69.5)(terser@5.24.0) transitivePeerDependencies: - supports-color dev: true - /@vitejs/plugin-vue@4.4.0(vite@4.5.0)(vue@3.3.7): - resolution: {integrity: sha512-xdguqb+VUwiRpSg+nsc2HtbAUSGak25DXYvpQQi4RVU1Xq1uworyoH/md9Rfd8zMmPR/pSghr309QNcftUVseg==} + /@vitejs/plugin-vue@4.5.0(vite@4.5.0)(vue@3.3.8): + resolution: {integrity: sha512-a2WSpP8X8HTEww/U00bU4mX1QpLINNuz/2KMNpLsdu3BzOpak3AGI1CJYBTXcc4SPhaD0eNRUp7IyQK405L5dQ==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: - vite: ^4.0.0 + vite: ^4.0.0 || ^5.0.0 vue: ^3.2.25 dependencies: - vite: 4.5.0(@types/node@20.8.10)(sass@1.69.5)(terser@5.24.0) - vue: 3.3.7(typescript@5.2.2) + vite: 4.5.0(@types/node@20.9.1)(sass@1.69.5)(terser@5.24.0) + vue: 3.3.8(typescript@5.2.2) /@vitest/coverage-v8@0.34.6(vitest@0.34.6): resolution: {integrity: sha512-fivy/OK2d/EsJFoEoxHFEnNGTg+MmdZBAVK9Ka4qhXR2K3J0DS08vcGVwzDtXSuUMabLv4KtPcpSKkcMXFDViw==} @@ -8360,8 +8740,8 @@ packages: path-browserify: 1.0.1 dev: true - /@vue-macros/common@1.8.0(rollup@4.2.0)(vue@3.3.7): - resolution: {integrity: sha512-auDJJzE0z3uRe3867e0DsqcseKImktNf5ojCZgUKqiVxb2yTlwlgOVAYCgoep9oITqxkXQymSvFeKhedi8PhaA==} + /@vue-macros/common@1.9.0(rollup@4.4.1)(vue@3.3.8): + resolution: {integrity: sha512-LbfRHDkceuokkLlVuQW9Wq3ZLmRs6KIDPzCjUvvL14HB4GslWdtvBB1suFfNs6VMvh9Zj30cEKF/EAP7QBCZ6Q==} engines: {node: '>=16.14.0'} peerDependencies: vue: ^2.7.0 || ^3.2.25 @@ -8369,30 +8749,30 @@ packages: vue: optional: true dependencies: - '@babel/types': 7.22.17 - '@rollup/pluginutils': 5.0.5(rollup@4.2.0) - '@vue/compiler-sfc': 3.3.7 - ast-kit: 0.11.2(rollup@4.2.0) - local-pkg: 0.4.3 + '@babel/types': 7.23.4 + '@rollup/pluginutils': 5.0.5(rollup@4.4.1) + '@vue/compiler-sfc': 3.3.8 + ast-kit: 0.11.2(rollup@4.4.1) + local-pkg: 0.5.0 magic-string-ast: 0.3.0 - vue: 3.3.7(typescript@5.2.2) + vue: 3.3.8(typescript@5.2.2) transitivePeerDependencies: - rollup dev: false - /@vue-macros/reactivity-transform@0.3.23(rollup@4.2.0)(vue@3.3.7): - resolution: {integrity: sha512-SubIg1GsNpQdIDJusrcA2FWBgwSY+4jmL0j6SJ6PU85r3rlS+uDhn6AUkqxeZRAdmJnrbGHXDyWUdygOZmWrSg==} + /@vue-macros/reactivity-transform@0.4.0(rollup@4.4.1)(vue@3.3.8): + resolution: {integrity: sha512-3DG+FWkIZe5xZJhIdxyieIYcDKJGC3aUab1JWtEOkS8Q21rLpu6VKUjV6TmB5LNyLSGVp+7de/87Ptd6C6RHOA==} engines: {node: '>=16.14.0'} peerDependencies: vue: ^2.7.0 || ^3.2.25 dependencies: - '@babel/parser': 7.22.16 - '@vue-macros/common': 1.8.0(rollup@4.2.0)(vue@3.3.7) - '@vue/compiler-core': 3.3.4 - '@vue/shared': 3.3.4 - magic-string: 0.30.3 - unplugin: 1.4.0 - vue: 3.3.7(typescript@5.2.2) + '@babel/parser': 7.23.4 + '@vue-macros/common': 1.9.0(rollup@4.4.1)(vue@3.3.8) + '@vue/compiler-core': 3.3.8 + '@vue/shared': 3.3.8 + magic-string: 0.30.5 + unplugin: 1.5.1 + vue: 3.3.8(typescript@5.2.2) transitivePeerDependencies: - rollup dev: false @@ -8404,6 +8784,7 @@ packages: '@vue/shared': 3.3.4 estree-walker: 2.0.2 source-map-js: 1.0.2 + dev: true /@vue/compiler-core@3.3.7: resolution: {integrity: sha512-pACdY6YnTNVLXsB86YD8OF9ihwpolzhhtdLVHhBL6do/ykr6kKXNYABRtNMGrsQXpEXXyAdwvWWkuTbs4MFtPQ==} @@ -8412,6 +8793,15 @@ packages: '@vue/shared': 3.3.7 estree-walker: 2.0.2 source-map-js: 1.0.2 + dev: true + + /@vue/compiler-core@3.3.8: + resolution: {integrity: sha512-hN/NNBUECw8SusQvDSqqcVv6gWq8L6iAktUR0UF3vGu2OhzRqcOiAno0FmBJWwxhYEXRlQJT5XnoKsVq1WZx4g==} + dependencies: + '@babel/parser': 7.23.4 + '@vue/shared': 3.3.8 + estree-walker: 2.0.2 + source-map-js: 1.0.2 /@vue/compiler-dom@3.3.4: resolution: {integrity: sha512-wyM+OjOVpuUukIq6p5+nwHYtj9cFroz9cwkfmP9O1nzH68BenTTv0u7/ndggT8cIQlnBeOo6sUT/gvHcIkLA5w==} @@ -8425,26 +8815,33 @@ packages: dependencies: '@vue/compiler-core': 3.3.7 '@vue/shared': 3.3.7 + dev: true + + /@vue/compiler-dom@3.3.8: + resolution: {integrity: sha512-+PPtv+p/nWDd0AvJu3w8HS0RIm/C6VGBIRe24b9hSyNWOAPEUosFZ5diwawwP8ip5sJ8n0Pe87TNNNHnvjs0FQ==} + dependencies: + '@vue/compiler-core': 3.3.8 + '@vue/shared': 3.3.8 - /@vue/compiler-sfc@3.3.7: - resolution: {integrity: sha512-7pfldWy/J75U/ZyYIXRVqvLRw3vmfxDo2YLMwVtWVNew8Sm8d6wodM+OYFq4ll/UxfqVr0XKiVwti32PCrruAw==} + /@vue/compiler-sfc@3.3.8: + resolution: {integrity: sha512-WMzbUrlTjfYF8joyT84HfwwXo+8WPALuPxhy+BZ6R4Aafls+jDBnSz8PDz60uFhuqFbl3HxRfxvDzrUf3THwpA==} dependencies: '@babel/parser': 7.23.0 - '@vue/compiler-core': 3.3.7 - '@vue/compiler-dom': 3.3.7 - '@vue/compiler-ssr': 3.3.7 - '@vue/reactivity-transform': 3.3.7 - '@vue/shared': 3.3.7 + '@vue/compiler-core': 3.3.8 + '@vue/compiler-dom': 3.3.8 + '@vue/compiler-ssr': 3.3.8 + '@vue/reactivity-transform': 3.3.8 + '@vue/shared': 3.3.8 estree-walker: 2.0.2 magic-string: 0.30.5 postcss: 8.4.31 source-map-js: 1.0.2 - /@vue/compiler-ssr@3.3.7: - resolution: {integrity: sha512-TxOfNVVeH3zgBc82kcUv+emNHo+vKnlRrkv8YvQU5+Y5LJGJwSNzcmLUoxD/dNzv0bhQ/F0s+InlgV0NrApJZg==} + /@vue/compiler-ssr@3.3.8: + resolution: {integrity: sha512-hXCqQL/15kMVDBuoBYpUnSYT8doDNwsjvm3jTefnXr+ytn294ySnT8NlsFHmTgKNjwpuFy7XVV8yTeLtNl/P6w==} dependencies: - '@vue/compiler-dom': 3.3.7 - '@vue/shared': 3.3.7 + '@vue/compiler-dom': 3.3.8 + '@vue/shared': 3.3.8 /@vue/language-core@1.8.22(typescript@5.2.2): resolution: {integrity: sha512-bsMoJzCrXZqGsxawtUea1cLjUT9dZnDsy5TuZ+l1fxRMzUGQUG9+Ypq4w//CqpWmrx7nIAJpw2JVF/t258miRw==} @@ -8465,49 +8862,54 @@ packages: vue-template-compiler: 2.7.14 dev: true - /@vue/reactivity-transform@3.3.7: - resolution: {integrity: sha512-APhRmLVbgE1VPGtoLQoWBJEaQk4V8JUsqrQihImVqKT+8U6Qi3t5ATcg4Y9wGAPb3kIhetpufyZ1RhwbZCIdDA==} + /@vue/reactivity-transform@3.3.8: + resolution: {integrity: sha512-49CvBzmZNtcHua0XJ7GdGifM8GOXoUMOX4dD40Y5DxI3R8OUhMlvf2nvgUAcPxaXiV5MQQ1Nwy09ADpnLQUqRw==} dependencies: '@babel/parser': 7.23.0 - '@vue/compiler-core': 3.3.7 - '@vue/shared': 3.3.7 + '@vue/compiler-core': 3.3.8 + '@vue/shared': 3.3.8 estree-walker: 2.0.2 magic-string: 0.30.5 - /@vue/reactivity@3.3.7: - resolution: {integrity: sha512-cZNVjWiw00708WqT0zRpyAgduG79dScKEPYJXq2xj/aMtk3SKvL3FBt2QKUlh6EHBJ1m8RhBY+ikBUzwc7/khg==} + /@vue/reactivity@3.3.8: + resolution: {integrity: sha512-ctLWitmFBu6mtddPyOKpHg8+5ahouoTCRtmAHZAXmolDtuZXfjL2T3OJ6DL6ezBPQB1SmMnpzjiWjCiMYmpIuw==} dependencies: - '@vue/shared': 3.3.7 + '@vue/shared': 3.3.8 - /@vue/runtime-core@3.3.7: - resolution: {integrity: sha512-LHq9du3ubLZFdK/BP0Ysy3zhHqRfBn80Uc+T5Hz3maFJBGhci1MafccnL3rpd5/3wVfRHAe6c+PnlO2PAavPTQ==} + /@vue/runtime-core@3.3.8: + resolution: {integrity: sha512-qurzOlb6q26KWQ/8IShHkMDOuJkQnQcTIp1sdP4I9MbCf9FJeGVRXJFr2mF+6bXh/3Zjr9TDgURXrsCr9bfjUw==} dependencies: - '@vue/reactivity': 3.3.7 - '@vue/shared': 3.3.7 + '@vue/reactivity': 3.3.8 + '@vue/shared': 3.3.8 - /@vue/runtime-dom@3.3.7: - resolution: {integrity: sha512-PFQU1oeJxikdDmrfoNQay5nD4tcPNYixUBruZzVX/l0eyZvFKElZUjW4KctCcs52nnpMGO6UDK+jF5oV4GT5Lw==} + /@vue/runtime-dom@3.3.8: + resolution: {integrity: sha512-Noy5yM5UIf9UeFoowBVgghyGGPIDPy1Qlqt0yVsUdAVbqI8eeMSsTqBtauaEoT2UFXUk5S64aWVNJN4MJ2vRdA==} dependencies: - '@vue/runtime-core': 3.3.7 - '@vue/shared': 3.3.7 + '@vue/runtime-core': 3.3.8 + '@vue/shared': 3.3.8 csstype: 3.1.2 - /@vue/server-renderer@3.3.7(vue@3.3.7): - resolution: {integrity: sha512-UlpKDInd1hIZiNuVVVvLgxpfnSouxKQOSE2bOfQpBuGwxRV/JqqTCyyjXUWiwtVMyeRaZhOYYqntxElk8FhBhw==} + /@vue/server-renderer@3.3.8(vue@3.3.8): + resolution: {integrity: sha512-zVCUw7RFskvPuNlPn/8xISbrf0zTWsTSdYTsUTN1ERGGZGVnRxM2QZ3x1OR32+vwkkCm0IW6HmJ49IsPm7ilLg==} peerDependencies: - vue: 3.3.7 + vue: 3.3.8 dependencies: - '@vue/compiler-ssr': 3.3.7 - '@vue/shared': 3.3.7 - vue: 3.3.7(typescript@5.2.2) + '@vue/compiler-ssr': 3.3.8 + '@vue/shared': 3.3.8 + vue: 3.3.8(typescript@5.2.2) /@vue/shared@3.3.4: resolution: {integrity: sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ==} + dev: true /@vue/shared@3.3.7: resolution: {integrity: sha512-N/tbkINRUDExgcPTBvxNkvHGu504k8lzlNQRITVnm6YjOjwa4r0nnbd4Jb01sNpur5hAllyRJzSK5PvB9PPwRg==} + dev: true + + /@vue/shared@3.3.8: + resolution: {integrity: sha512-8PGwybFwM4x8pcfgqEQFy70NaQxASvOC5DJwLQfpArw1UDfUXrJkdxD3BhVTMS+0Lef/TU7YO0Jvr0jJY8T+mw==} - /@vue/test-utils@2.4.1(vue@3.3.7): + /@vue/test-utils@2.4.1(vue@3.3.8): resolution: {integrity: sha512-VO8nragneNzUZUah6kOjiFmD/gwRjUauG9DROh6oaOeFwX1cZRUNHhdeogE8635cISigXFTtGLUQWx5KCb0xeg==} peerDependencies: '@vue/server-renderer': ^3.0.1 @@ -8517,7 +8919,7 @@ packages: optional: true dependencies: js-beautify: 1.14.9 - vue: 3.3.7(typescript@5.2.2) + vue: 3.3.8(typescript@5.2.2) vue-component-type-helpers: 1.8.4 dev: true @@ -8565,6 +8967,11 @@ packages: /abbrev@1.1.1: resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} + /abbrev@2.0.0: + resolution: {integrity: sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dev: false + /abort-controller@3.0.0: resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} engines: {node: '>=6.5'} @@ -8633,7 +9040,7 @@ packages: resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} engines: {node: '>= 6.0.0'} dependencies: - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) transitivePeerDependencies: - supports-color @@ -8641,18 +9048,7 @@ packages: resolution: {integrity: sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==} engines: {node: '>= 14'} dependencies: - debug: 4.3.4 - transitivePeerDependencies: - - supports-color - dev: false - - /agentkeepalive@4.2.1: - resolution: {integrity: sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==} - engines: {node: '>= 8.0.0'} - dependencies: - debug: 4.3.4 - depd: 1.1.2 - humanize-ms: 1.2.1 + debug: 4.3.4(supports-color@8.1.1) transitivePeerDependencies: - supports-color dev: false @@ -8805,14 +9201,6 @@ packages: readable-stream: 3.6.0 dev: false - /are-we-there-yet@3.0.1: - resolution: {integrity: sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - dependencies: - delegates: 1.0.0 - readable-stream: 3.6.0 - dev: false - /arg@5.0.2: resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} dev: true @@ -8971,12 +9359,12 @@ packages: resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} dev: true - /ast-kit@0.11.2(rollup@4.2.0): + /ast-kit@0.11.2(rollup@4.4.1): resolution: {integrity: sha512-Q0DjXK4ApbVoIf9GLyCo252tUH44iTnD/hiJ2TQaJeydYWSpKk0sI34+WMel8S9Wt5pbLgG02oJ+gkgX5DV3sQ==} engines: {node: '>=16.14.0'} dependencies: - '@babel/parser': 7.22.16 - '@rollup/pluginutils': 5.0.5(rollup@4.2.0) + '@babel/parser': 7.23.4 + '@rollup/pluginutils': 5.0.5(rollup@4.4.1) pathe: 1.1.1 transitivePeerDependencies: - rollup @@ -9052,7 +9440,7 @@ packages: resolution: {integrity: sha512-TAlMYvOuwGyLK3PfBb5WKBXZmXz2fVCgv23d6zZFdle/q3gPjmxBaeuC0pY0Dzs5PWMSgfqqEZkrye19GlDTgw==} dependencies: archy: 1.0.0 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) fastq: 1.15.0 transitivePeerDependencies: - supports-color @@ -9077,29 +9465,30 @@ packages: /axios@0.24.0: resolution: {integrity: sha512-Q6cWsys88HoPgAaFAVUb0WpPk0O8iTeisR9IMqy9G8AbO4NlpVknrnQS03zzF9PGAWgO3cgletO3VjV/P7VztA==} dependencies: - follow-redirects: 1.15.2 + follow-redirects: 1.15.3(debug@4.3.4) transitivePeerDependencies: - debug dev: false - /axios@0.27.2(debug@4.3.4): - resolution: {integrity: sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==} + /axios@1.5.0: + resolution: {integrity: sha512-D4DdjDo5CY50Qms0qGQTTw6Q44jl7zRwY7bthds06pUGfChBCTcQs+N743eFWGEd6pRTMd6A+I87aWyFV5wiZQ==} dependencies: - follow-redirects: 1.15.2(debug@4.3.4) + follow-redirects: 1.15.3(debug@4.3.4) form-data: 4.0.0 + proxy-from-env: 1.1.0 transitivePeerDependencies: - debug - dev: true + dev: false - /axios@1.5.0: - resolution: {integrity: sha512-D4DdjDo5CY50Qms0qGQTTw6Q44jl7zRwY7bthds06pUGfChBCTcQs+N743eFWGEd6pRTMd6A+I87aWyFV5wiZQ==} + /axios@1.6.2(debug@4.3.4): + resolution: {integrity: sha512-7i24Ri4pmDRfJTR7LDBhsOTtcm+9kjX5WiY1X3wIisx6G9So3pfMkEiU7emUBe46oceVImccTEM3k6C5dbVW8A==} dependencies: - follow-redirects: 1.15.2(debug@4.3.4) + follow-redirects: 1.15.3(debug@4.3.4) form-data: 4.0.0 proxy-from-env: 1.1.0 transitivePeerDependencies: - debug - dev: false + dev: true /b4a@1.6.4: resolution: {integrity: sha512-fpWrvyVHEKyeEvbKZTVOeZF3VSKKWtJxFIxX/jaVPf+cLbGUSitjb49pHLqPV2BUNNZ0LcoeEGfE/YCpyDYHIw==} @@ -9130,6 +9519,24 @@ packages: - supports-color dev: true + /babel-jest@29.7.0(@babel/core@7.23.3): + resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@babel/core': ^7.8.0 + dependencies: + '@babel/core': 7.23.3 + '@jest/transform': 29.7.0 + '@types/babel__core': 7.20.5 + babel-plugin-istanbul: 6.1.1 + babel-preset-jest: 29.6.3(@babel/core@7.23.3) + chalk: 4.1.2 + graceful-fs: 4.2.11 + slash: 3.0.0 + transitivePeerDependencies: + - supports-color + dev: true + /babel-plugin-istanbul@6.1.1: resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} engines: {node: '>=8'} @@ -9209,6 +9616,26 @@ packages: '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.22.11) dev: true + /babel-preset-current-node-syntax@1.0.1(@babel/core@7.23.3): + resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.3 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.3) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.23.3) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.23.3) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.23.3) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.3) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.3) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.3) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.3) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.3) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.3) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.3) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.23.3) + dev: true + /babel-preset-jest@29.6.3(@babel/core@7.22.11): resolution: {integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -9220,6 +9647,17 @@ packages: babel-preset-current-node-syntax: 1.0.1(@babel/core@7.22.11) dev: true + /babel-preset-jest@29.6.3(@babel/core@7.23.3): + resolution: {integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.3 + babel-plugin-jest-hoist: 29.6.3 + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.23.3) + dev: true + /babel-walk@3.0.0-canary-5: resolution: {integrity: sha512-GAwkz0AihzY5bkwIY5QDR+LvsRQgB/B+1foMPvi0FZPMl5fjD7ICiznUiBdLYMH1QYe6vqu4gWYytZOccLouFw==} engines: {node: '>= 10.0.0'} @@ -9404,6 +9842,17 @@ packages: node-releases: 2.0.13 update-browserslist-db: 1.0.11(browserslist@4.21.9) + /browserslist@4.22.1: + resolution: {integrity: sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + dependencies: + caniuse-lite: 1.0.30001564 + electron-to-chromium: 1.4.591 + node-releases: 2.0.13 + update-browserslist-db: 1.0.13(browserslist@4.22.1) + dev: true + /bs-logger@0.2.6: resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==} engines: {node: '>= 6'} @@ -9459,8 +9908,8 @@ packages: dependencies: node-gyp-build: 4.6.0 - /bullmq@4.12.8: - resolution: {integrity: sha512-aG9o2/y6P+SvsIlIfjTP4Cn2wOsD6r7IplWBovi1wCmTMDBhtKsPVCC2ZKezaagtTCGtV6IN5Bx5g6WrtMUz0Q==} + /bullmq@4.13.3: + resolution: {integrity: sha512-CGCT62MJ9vB57iZpoNVhyJUTH1yO7tEdxHfcvtnHxlA16t4FxeK7dPeCnKzlx3nfy4nJ900WTts1EPSXaQvTbA==} dependencies: cron-parser: 4.8.1 glob: 8.1.0 @@ -9500,15 +9949,15 @@ packages: engines: {node: '>=8'} dev: true - /cacache@17.1.3: - resolution: {integrity: sha512-jAdjGxmPxZh0IipMdR7fK/4sDSrHMLUV0+GvVUsjwyGNKHsh79kW/otg+GkbXwl6Uzvy9wsvHOX4nUoWldeZMg==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + /cacache@18.0.0: + resolution: {integrity: sha512-I7mVOPl3PUCeRub1U8YoGz2Lqv9WOBpobZ8RyWFXmReuILz+3OAyTa5oH3QPdtKZD7N0Yk00aLfzn0qvp8dZ1w==} + engines: {node: ^16.14.0 || >=18.0.0} dependencies: '@npmcli/fs': 3.1.0 fs-minipass: 3.0.2 - glob: 10.3.0 - lru-cache: 7.14.1 - minipass: 5.0.0 + glob: 10.3.10 + lru-cache: 10.1.0 + minipass: 7.0.4 minipass-collect: 1.0.2 minipass-flush: 1.0.5 minipass-pipeline: 1.2.4 @@ -9527,6 +9976,18 @@ packages: resolution: {integrity: sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==} engines: {node: '>=14.16'} + /cacheable-request@10.2.14: + resolution: {integrity: sha512-zkDT5WAF4hSSoUgyfg5tFIxz8XQK+25W/TLVojJTMKBaxevLBBtLxgqguAuVQB8PVW79FVjHcU+GJ9tVbDZ9mQ==} + engines: {node: '>=14.16'} + dependencies: + '@types/http-cache-semantics': 4.0.4 + get-stream: 6.0.1 + http-cache-semantics: 4.1.1 + keyv: 4.5.4 + mimic-response: 4.0.0 + normalize-url: 8.0.0 + responselike: 3.0.0 + /cacheable-request@10.2.8: resolution: {integrity: sha512-IDVO5MJ4LItE6HKFQTqT2ocAQsisOoCTUDu1ddCmnhyiwFQjXNPp4081Xj23N4tO+AFEFNzGuNEf/c8Gwwt15A==} engines: {node: '>=14.16'} @@ -9538,15 +9999,16 @@ packages: mimic-response: 4.0.0 normalize-url: 8.0.0 responselike: 3.0.0 + dev: false - /cacheable-request@7.0.2: - resolution: {integrity: sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew==} + /cacheable-request@7.0.4: + resolution: {integrity: sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==} engines: {node: '>=8'} dependencies: clone-response: 1.0.3 get-stream: 5.2.0 http-cache-semantics: 4.1.1 - keyv: 4.5.2 + keyv: 4.5.4 lowercase-keys: 2.0.0 normalize-url: 6.1.0 responselike: 2.0.1 @@ -9598,6 +10060,10 @@ packages: /caniuse-lite@1.0.30001516: resolution: {integrity: sha512-Wmec9pCBY8CWbmI4HsjBeQLqDTqV91nFVR83DnZpYyRnPI1wePDsTg0bGLPC5VU/3OIZV1fmxEea1b+tFKe86g==} + /caniuse-lite@1.0.30001564: + resolution: {integrity: sha512-DqAOf+rhof+6GVx1y+xzbFPeOumfQnhYzVnZD6LAXijR77yPtm9mfOcqOnT3mpnJiZVT+kwLAFnRlZcIz+c6bg==} + dev: true + /canonicalize@1.0.8: resolution: {integrity: sha512-0CNTVCLZggSh7bc5VkX5WWPWO+cyZbNd07IHIsSXLia/eAq+r836hgk+8BKoEh7949Mda87VUOitx5OddVj64A==} dev: false @@ -9772,7 +10238,7 @@ packages: css-what: 6.1.0 domelementtype: 2.3.0 domhandler: 5.0.3 - domutils: 3.0.1 + domutils: 3.1.0 /cheerio@1.0.0-rc.12: resolution: {integrity: sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==} @@ -9781,8 +10247,8 @@ packages: cheerio-select: 2.1.0 dom-serializer: 2.0.0 domhandler: 5.0.3 - domutils: 3.0.1 - htmlparser2: 8.0.1 + domutils: 3.1.0 + htmlparser2: 8.0.2 parse5: 7.1.2 parse5-htmlparser2-tree-adapter: 7.0.0 @@ -9798,7 +10264,7 @@ packages: normalize-path: 3.0.0 readdirp: 3.6.0 optionalDependencies: - fsevents: 2.3.2 + fsevents: 2.3.3 /chownr@1.1.4: resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} @@ -9808,14 +10274,19 @@ packages: engines: {node: '>=10'} requiresBuild: true - /chromatic@7.6.0: - resolution: {integrity: sha512-4MwlX8EDMyfQKf1NXTdUhJ2b0EYueByaVrF75pdFaOzHH7n3OhzknmQYbUSegLiFhKvHuvM8nZvf9SCajO+Cow==} + /chromatic@9.0.0: + resolution: {integrity: sha512-PczbWYOfqsf/SM0yIzI3ZOpFznEyf9Fc96EkxoYkhztFaA9CEOcpA9nk8zpmNgPUQWmIWNyG7z4xEK40sApFzw==} hasBin: true dev: false /ci-info@3.7.1: resolution: {integrity: sha512-4jYS4MOAaCIStSRwiuxc4B8MYhIe676yO1sYGzARnjXkWpmzZMMYxY6zu8WYWDhSuth5zhrQ1rhNSibyyvv4/w==} engines: {node: '>=8'} + dev: true + + /ci-info@3.9.0: + resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} + engines: {node: '>=8'} /cjs-module-lexer@1.2.2: resolution: {integrity: sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==} @@ -9929,6 +10400,10 @@ packages: resolution: {integrity: sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==} dev: true + /collect-v8-coverage@1.0.2: + resolution: {integrity: sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==} + dev: true + /color-convert@1.9.3: resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} dependencies: @@ -10067,7 +10542,7 @@ packages: dependencies: buffer-from: 1.1.2 inherits: 2.0.4 - readable-stream: 2.3.7 + readable-stream: 2.3.8 typedarray: 0.0.6 dev: true @@ -10123,6 +10598,11 @@ packages: /cookie-signature@1.0.6: resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} + /cookie-signature@1.2.1: + resolution: {integrity: sha512-78KWk9T26NhzXtuL26cIJ8/qNHANyJ/ZYrmEXFzUmhZdjpBv+DlWlOANRTGBt48YcyslsLrj0bMLFTmXvLRCOw==} + engines: {node: '>=6.6.0'} + dev: false + /cookie@0.4.2: resolution: {integrity: sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==} engines: {node: '>= 0.6'} @@ -10158,7 +10638,26 @@ packages: readable-stream: 3.6.0 dev: false - /create-jest@29.7.0(@types/node@20.8.10): + /create-jest@29.7.0: + resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + dependencies: + '@jest/types': 29.6.3 + chalk: 4.1.2 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-config: 29.7.0(@types/node@20.9.4) + jest-util: 29.7.0 + prompts: 2.4.2 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + dev: true + + /create-jest@29.7.0(@types/node@20.9.1): resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -10167,7 +10666,7 @@ packages: chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.11 - jest-config: 29.7.0(@types/node@20.8.10) + jest-config: 29.7.0(@types/node@20.9.1) jest-util: 29.7.0 prompts: 2.4.2 transitivePeerDependencies: @@ -10258,7 +10757,7 @@ packages: boolbase: 1.0.0 css-what: 6.1.0 domhandler: 5.0.3 - domutils: 3.0.1 + domutils: 3.1.0 nth-check: 2.1.1 /css-tree@2.2.1: @@ -10364,8 +10863,8 @@ packages: /csstype@3.1.2: resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} - /cypress@13.4.0: - resolution: {integrity: sha512-KeWNC9xSHG/ewZURVbaQsBQg2mOKw4XhjJZFKjWbEjgZCdxpPXLpJnfq5Jns1Gvnjp6AlnIfpZfWFlDgVKXdWQ==} + /cypress@13.5.1: + resolution: {integrity: sha512-yqLViT0D/lPI8Kkm7ciF/x/DCK/H/DnogdGyiTnQgX4OVR2aM30PtK+kvklTOD1u3TuItiD9wUQAF8EYWtyZug==} engines: {node: ^16.0.0 || ^18.0.0 || >=20.0.0} hasBin: true requiresBuild: true @@ -10386,7 +10885,7 @@ packages: cli-table3: 0.6.3 commander: 6.2.1 common-tags: 1.8.2 - dayjs: 1.11.9 + dayjs: 1.11.10 debug: 4.3.4(supports-color@8.1.1) enquirer: 2.3.6 eventemitter2: 6.4.7 @@ -10441,8 +10940,8 @@ packages: '@babel/runtime': 7.21.0 dev: false - /dayjs@1.11.9: - resolution: {integrity: sha512-QvzAURSbQ0pKdIye2txOzNaHmxtUBXerpY0FJsFXUMKbIZeFm5ht1LS/jFsrncjnmtv8HsG0W2g6c0zUjZWmpA==} + /dayjs@1.11.10: + resolution: {integrity: sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==} /de-indent@1.0.2: resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==} @@ -10458,16 +10957,6 @@ packages: dependencies: ms: 2.0.0 - /debug@3.2.7: - resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - dependencies: - ms: 2.1.3 - /debug@3.2.7(supports-color@5.5.0): resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} peerDependencies: @@ -10478,7 +10967,6 @@ packages: dependencies: ms: 2.1.3 supports-color: 5.5.0 - dev: true /debug@3.2.7(supports-color@8.1.1): resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} @@ -10492,17 +10980,6 @@ packages: supports-color: 8.1.1 dev: true - /debug@4.3.4: - resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - dependencies: - ms: 2.1.2 - /debug@4.3.4(supports-color@8.1.1): resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} engines: {node: '>=6.0'} @@ -10554,8 +11031,8 @@ packages: dependencies: mimic-response: 3.1.0 - /dedent@1.3.0: - resolution: {integrity: sha512-7glNLfvdsMzZm3FpRY1CHuI2lbYDR+71YmrhmTZjYFD5pfT0ACgnGRdrrC9Mk2uICnzkcdelCx5at787UDGOvg==} + /dedent@1.5.1: + resolution: {integrity: sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==} peerDependencies: babel-plugin-macros: ^3.1.0 peerDependenciesMeta: @@ -10615,6 +11092,11 @@ packages: resolution: {integrity: sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==} engines: {node: '>=0.10.0'} + /deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} + dev: true + /default-browser-id@3.0.0: resolution: {integrity: sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==} engines: {node: '>=12'} @@ -10677,11 +11159,6 @@ packages: engines: {node: '>=0.10'} dev: false - /depd@1.1.2: - resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==} - engines: {node: '>= 0.6'} - dev: false - /depd@2.0.0: resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} engines: {node: '>= 0.8'} @@ -10812,6 +11289,13 @@ packages: domelementtype: 2.3.0 domhandler: 5.0.3 + /domutils@3.1.0: + resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==} + dependencies: + dom-serializer: 2.0.0 + domelementtype: 2.3.0 + domhandler: 5.0.3 + /dotenv-expand@10.0.0: resolution: {integrity: sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A==} engines: {node: '>=12'} @@ -10873,6 +11357,10 @@ packages: /electron-to-chromium@1.4.463: resolution: {integrity: sha512-fT3hvdUWLjDbaTGzyOjng/CQhQJSQP8ThO3XZAoaxHvHo2kUXiRQVMj9M235l8uDFiNPsPa6KHT1p3RaR6ugRw==} + /electron-to-chromium@1.4.591: + resolution: {integrity: sha512-vLv/P7wwAPKQoY+CVMyyI6rsTp+A14KGtPXx92oz1FY41AAqa9l6Wkizcixg0LDuJgyeo8xgNN9+9hsnGp66UA==} + dev: true + /emittery@0.13.1: resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} engines: {node: '>=12'} @@ -11145,13 +11633,13 @@ packages: source-map: 0.6.1 dev: true - /eslint-config-prettier@9.0.0(eslint@8.49.0): + /eslint-config-prettier@9.0.0(eslint@8.54.0): resolution: {integrity: sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==} hasBin: true peerDependencies: eslint: '>=7.0.0' dependencies: - eslint: 8.49.0 + eslint: 8.54.0 dev: true /eslint-formatter-pretty@4.1.0: @@ -11171,14 +11659,14 @@ packages: /eslint-import-resolver-node@0.3.9: resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} dependencies: - debug: 3.2.7 + debug: 3.2.7(supports-color@5.5.0) is-core-module: 2.13.1 resolve: 1.22.8 transitivePeerDependencies: - supports-color dev: true - /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.9.1)(eslint-import-resolver-node@0.3.9)(eslint@8.52.0): + /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.11.0)(eslint-import-resolver-node@0.3.9)(eslint@8.53.0): resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} engines: {node: '>=4'} peerDependencies: @@ -11199,15 +11687,15 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 6.9.1(eslint@8.52.0)(typescript@5.2.2) - debug: 3.2.7 - eslint: 8.52.0 + '@typescript-eslint/parser': 6.11.0(eslint@8.53.0)(typescript@5.2.2) + debug: 3.2.7(supports-color@5.5.0) + eslint: 8.53.0 eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: - supports-color dev: true - /eslint-plugin-import@2.29.0(@typescript-eslint/parser@6.9.1)(eslint@8.52.0): + /eslint-plugin-import@2.29.0(@typescript-eslint/parser@6.11.0)(eslint@8.53.0): resolution: {integrity: sha512-QPOO5NO6Odv5lpoTkddtutccQjysJuFxoPS7fAHO+9m9udNHvTCPSAMW9zGAYj8lAIdr40I8yPCdUYrncXtrwg==} engines: {node: '>=4'} peerDependencies: @@ -11217,16 +11705,16 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 6.9.1(eslint@8.52.0)(typescript@5.2.2) + '@typescript-eslint/parser': 6.11.0(eslint@8.53.0)(typescript@5.2.2) array-includes: 3.1.7 array.prototype.findlastindex: 1.2.3 array.prototype.flat: 1.3.2 array.prototype.flatmap: 1.3.2 - debug: 3.2.7 + debug: 3.2.7(supports-color@5.5.0) doctrine: 2.1.0 - eslint: 8.52.0 + eslint: 8.53.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.9.1)(eslint-import-resolver-node@0.3.9)(eslint@8.52.0) + eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.11.0)(eslint-import-resolver-node@0.3.9)(eslint@8.53.0) hasown: 2.0.0 is-core-module: 2.13.1 is-glob: 4.0.3 @@ -11242,19 +11730,19 @@ packages: - supports-color dev: true - /eslint-plugin-vue@9.18.1(eslint@8.52.0): + /eslint-plugin-vue@9.18.1(eslint@8.53.0): resolution: {integrity: sha512-7hZFlrEgg9NIzuVik2I9xSnJA5RsmOfueYgsUGUokEDLJ1LHtxO0Pl4duje1BriZ/jDWb+44tcIlC3yi0tdlZg==} engines: {node: ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.2.0 || ^7.0.0 || ^8.0.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.52.0) - eslint: 8.52.0 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.53.0) + eslint: 8.53.0 natural-compare: 1.4.0 nth-check: 2.1.1 postcss-selector-parser: 6.0.13 semver: 7.5.4 - vue-eslint-parser: 9.3.2(eslint@8.52.0) + vue-eslint-parser: 9.3.2(eslint@8.53.0) xml-name-validator: 4.0.0 transitivePeerDependencies: - supports-color @@ -11277,18 +11765,19 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /eslint@8.49.0: - resolution: {integrity: sha512-jw03ENfm6VJI0jA9U+8H5zfl5b+FvuU3YYvZRdZHOlU2ggJkxrlkJH4HcDrZpj6YwD8kuYqvQM8LyesoazrSOQ==} + /eslint@8.53.0: + resolution: {integrity: sha512-N4VuiPjXDUa4xVeV/GC/RV3hQW9Nw+Y463lkWaKKXKYMvmRiRDAtfpuPFLN+E1/6ZhyR8J2ig+eVREnYgUsiag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.49.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.53.0) '@eslint-community/regexpp': 4.6.2 - '@eslint/eslintrc': 2.1.2 - '@eslint/js': 8.49.0 - '@humanwhocodes/config-array': 0.11.11 + '@eslint/eslintrc': 2.1.3 + '@eslint/js': 8.53.0 + '@humanwhocodes/config-array': 0.11.13 '@humanwhocodes/module-importer': 1.0.1 '@nodelib/fs.walk': 1.2.8 + '@ungap/structured-clone': 1.2.0 ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 @@ -11323,15 +11812,15 @@ packages: - supports-color dev: true - /eslint@8.52.0: - resolution: {integrity: sha512-zh/JHnaixqHZsolRB/w9/02akBk9EPrOs9JwcTP2ek7yL5bVvXuRariiaAjjoJ5DvuwQ1WAE/HsMz+w17YgBCg==} + /eslint@8.54.0: + resolution: {integrity: sha512-NY0DfAkM8BIZDVl6PgSa1ttZbx3xHgJzSNJKYcQglem6CppHyMhRIQkBVSSMaSRnLhig3jsDbEzOjwCVt4AmmA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.52.0) - '@eslint-community/regexpp': 4.6.2 - '@eslint/eslintrc': 2.1.2 - '@eslint/js': 8.52.0 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.54.0) + '@eslint-community/regexpp': 4.10.0 + '@eslint/eslintrc': 2.1.3 + '@eslint/js': 8.54.0 '@humanwhocodes/config-array': 0.11.13 '@humanwhocodes/module-importer': 1.0.1 '@nodelib/fs.walk': 1.2.8 @@ -11345,15 +11834,15 @@ packages: eslint-scope: 7.2.2 eslint-visitor-keys: 3.4.3 espree: 9.6.1 - esquery: 1.4.2 + esquery: 1.5.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 file-entry-cache: 6.0.1 find-up: 5.0.0 glob-parent: 6.0.2 - globals: 13.19.0 + globals: 13.23.0 graphemer: 1.4.0 - ignore: 5.2.4 + ignore: 5.3.0 imurmurhash: 0.1.4 is-glob: 4.0.3 is-path-inside: 3.0.3 @@ -11392,6 +11881,13 @@ packages: estraverse: 5.3.0 dev: true + /esquery@1.5.0: + resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} + engines: {node: '>=0.10'} + dependencies: + estraverse: 5.3.0 + dev: true + /esrecurse@4.3.0: resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} engines: {node: '>=4.0'} @@ -11410,7 +11906,7 @@ packages: /estree-walker@3.0.3: resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} dependencies: - '@types/estree': 1.0.4 + '@types/estree': 1.0.5 dev: false /esutils@2.0.3: @@ -11627,7 +12123,7 @@ packages: get-stream: 5.2.0 yauzl: 2.10.0 optionalDependencies: - '@types/yauzl': 2.10.0 + '@types/yauzl': 2.10.3 transitivePeerDependencies: - supports-color dev: true @@ -11650,8 +12146,8 @@ packages: /fast-fifo@1.3.0: resolution: {integrity: sha512-IgfweLvEpwyA4WgiQe9Nx6VV2QkML2NkvZnk1oKnIzXgXdWxuhF7zw4DvLTPZJn6PIUneiAXPF24QmoEqHTjyw==} - /fast-glob@3.3.1: - resolution: {integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==} + /fast-glob@3.3.2: + resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} engines: {node: '>=8.6.0'} dependencies: '@nodelib/fs.stat': 2.0.5 @@ -11685,6 +12181,12 @@ packages: fast-decode-uri-component: 1.0.1 dev: false + /fast-querystring@1.1.2: + resolution: {integrity: sha512-g6KuKWmFXc0fID8WWH0jit4g0AGBoJhCkJMb1RmbsSEUNvQ+ZC8D6CUZ+GtF8nMzSPXnhiePyyqqipzNNEnHjg==} + dependencies: + fast-decode-uri-component: 1.0.1 + dev: false + /fast-redact@3.1.2: resolution: {integrity: sha512-+0em+Iya9fKGfEQGcd62Yv6onjBmmhV1uh86XVfOU8VwAe6kaFdQCWI9s0/Nnugx5Vd9tdbZ7e6gE2tR9dzXdw==} engines: {node: '>=6'} @@ -11729,6 +12231,15 @@ packages: resolution: {integrity: sha512-79ak0JxddO0utAXAQ5ccKhvs6vX2MGyHHMMsmZkBANrq3hXc1CHzvNPHOcvTsVMEPl5I+NT+RO4YKMGehOfSIg==} dev: false + /fastify-raw-body@4.3.0: + resolution: {integrity: sha512-F4o8ZIMVx4YoxGfwrZys6wyjl40gF3Yv6AWWRy62ozFAyZBSS831/uyyCAqKYw3tR73g180ryG98yih6To1PUQ==} + engines: {node: '>= 10'} + dependencies: + fastify-plugin: 4.5.0 + raw-body: 2.5.2 + secure-json-parse: 2.7.0 + dev: false + /fastify@4.24.3: resolution: {integrity: sha512-6HHJ+R2x2LS3y1PqxnwEIjOTZxFl+8h4kSC/TuDPXtA+v2JnV9yEtOsNSKK1RMD7sIR2y1ZsA4BEFaid/cK5pg==} dependencies: @@ -11823,8 +12334,8 @@ packages: token-types: 5.0.1 dev: false - /file-type@18.6.0: - resolution: {integrity: sha512-uLqXnIAIyy8K9rnvdU9IYi3WIL+6qVBWn24kThYOPlnyU+6yrr2oarn+j7seMLh1wOEG4hEjRP6a30IiKR9OaA==} + /file-type@18.7.0: + resolution: {integrity: sha512-ihHtXRzXEziMrQ56VSgU7wkxh55iNchFkosu7Y9/S+tXHdKyrGjVK0ujbqNnsxzea+78MaLhN6PGmfYSAv1ACw==} engines: {node: '>=14.16'} dependencies: readable-web-to-node-stream: 3.0.2 @@ -11835,7 +12346,7 @@ packages: /filelist@1.0.4: resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==} dependencies: - minimatch: 5.1.2 + minimatch: 5.1.6 /filename-reserved-regex@3.0.0: resolution: {integrity: sha512-hn4cQfU6GOT/7cFHXBqeBg2TbrMBgdD0kcjLhvSQYYwm3s4B6cjvBfb7nBALJLAXqmU5xajSa7X2NnUud/VCdw==} @@ -11952,18 +12463,8 @@ packages: which: 1.3.1 dev: false - /follow-redirects@1.15.2: - resolution: {integrity: sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==} - engines: {node: '>=4.0'} - peerDependencies: - debug: '*' - peerDependenciesMeta: - debug: - optional: true - dev: false - - /follow-redirects@1.15.2(debug@4.3.4): - resolution: {integrity: sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==} + /follow-redirects@1.15.3(debug@4.3.4): + resolution: {integrity: sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==} engines: {node: '>=4.0'} peerDependencies: debug: '*' @@ -12101,8 +12602,8 @@ packages: /fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - /fsevents@2.3.2: - resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + /fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] requiresBuild: true @@ -12145,20 +12646,6 @@ packages: wide-align: 1.1.5 dev: false - /gauge@4.0.4: - resolution: {integrity: sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - dependencies: - aproba: 2.0.0 - color-support: 1.1.3 - console-control-strings: 1.1.0 - has-unicode: 2.0.1 - signal-exit: 3.0.7 - string-width: 4.2.3 - strip-ansi: 6.0.1 - wide-align: 1.1.5 - dev: false - /gensync@1.0.0-beta.2: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} @@ -12305,6 +12792,19 @@ packages: minimatch: 9.0.3 minipass: 5.0.0 path-scurry: 1.9.2 + dev: true + + /glob@10.3.10: + resolution: {integrity: sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true + dependencies: + foreground-child: 3.1.1 + jackspeak: 2.3.6 + minimatch: 9.0.3 + minipass: 5.0.0 + path-scurry: 1.10.1 + dev: false /glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} @@ -12345,6 +12845,13 @@ packages: type-fest: 0.20.2 dev: true + /globals@13.23.0: + resolution: {integrity: sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==} + engines: {node: '>=8'} + dependencies: + type-fest: 0.20.2 + dev: true + /globalthis@1.0.3: resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} engines: {node: '>= 0.4'} @@ -12358,8 +12865,8 @@ packages: dependencies: array-union: 2.1.0 dir-glob: 3.0.1 - fast-glob: 3.3.1 - ignore: 5.2.4 + fast-glob: 3.3.2 + ignore: 5.3.0 merge2: 1.4.1 slash: 3.0.0 @@ -12369,8 +12876,8 @@ packages: get-intrinsic: 1.2.1 dev: true - /got@11.8.5: - resolution: {integrity: sha512-o0Je4NvQObAuZPHLFoRSkdG2lTgtcynqymzg2Vupdx6PorhaT5MCbIyXG6d4D94kk8ZG57QeosgdiqfJWhEhlQ==} + /got@11.8.6: + resolution: {integrity: sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==} engines: {node: '>=10.19.0'} dependencies: '@sindresorhus/is': 4.6.0 @@ -12378,7 +12885,7 @@ packages: '@types/cacheable-request': 6.0.3 '@types/responselike': 1.0.0 cacheable-lookup: 5.0.4 - cacheable-request: 7.0.2 + cacheable-request: 7.0.4 decompress-response: 6.0.0 http2-wrapper: 1.0.3 lowercase-keys: 2.0.0 @@ -12386,18 +12893,18 @@ packages: responselike: 2.0.1 dev: false - /got@12.6.0: - resolution: {integrity: sha512-WTcaQ963xV97MN3x0/CbAriXFZcXCfgxVp91I+Ze6pawQOa7SgzwSx2zIJJsX+kTajMnVs0xcFD1TxZKFqhdnQ==} + /got@12.6.1: + resolution: {integrity: sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ==} engines: {node: '>=14.16'} dependencies: - '@sindresorhus/is': 5.3.0 + '@sindresorhus/is': 5.6.0 '@szmarczak/http-timer': 5.0.1 cacheable-lookup: 7.0.0 - cacheable-request: 10.2.8 + cacheable-request: 10.2.14 decompress-response: 6.0.0 form-data-encoder: 2.1.4 get-stream: 6.0.1 - http2-wrapper: 2.2.0 + http2-wrapper: 2.2.1 lowercase-keys: 3.0.0 p-cancelable: 3.0.0 responselike: 3.0.0 @@ -12611,6 +13118,14 @@ packages: domutils: 3.0.1 entities: 4.5.0 + /htmlparser2@8.0.2: + resolution: {integrity: sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==} + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + domutils: 3.1.0 + entities: 4.5.0 + /http-cache-semantics@4.1.1: resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} @@ -12635,7 +13150,17 @@ packages: dependencies: '@tootallnate/once': 2.0.0 agent-base: 6.0.2 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) + transitivePeerDependencies: + - supports-color + dev: false + + /http-proxy-agent@7.0.0: + resolution: {integrity: sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ==} + engines: {node: '>= 14'} + dependencies: + agent-base: 7.1.0 + debug: 4.3.4(supports-color@8.1.1) transitivePeerDependencies: - supports-color dev: false @@ -12663,6 +13188,14 @@ packages: dependencies: quick-lru: 5.1.1 resolve-alpn: 1.2.1 + dev: false + + /http2-wrapper@2.2.1: + resolution: {integrity: sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==} + engines: {node: '>=10.19.0'} + dependencies: + quick-lru: 5.1.1 + resolve-alpn: 1.2.1 /http_ece@1.1.0: resolution: {integrity: sha512-bptAfCDdPJxOs5zYSe7Y3lpr772s1G346R4Td5LgRUeCwIGpCGDUTJxRrhTNcAXbx37spge0kWEIH7QAYWNTlA==} @@ -12686,7 +13219,7 @@ packages: engines: {node: '>= 6'} dependencies: agent-base: 6.0.2 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) transitivePeerDependencies: - supports-color @@ -12695,7 +13228,7 @@ packages: engines: {node: '>= 14'} dependencies: agent-base: 7.1.0 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) transitivePeerDependencies: - supports-color dev: false @@ -12723,12 +13256,6 @@ packages: resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} engines: {node: '>=16.17.0'} - /humanize-ms@1.2.1: - resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} - dependencies: - ms: 2.1.3 - dev: false - /iconv-lite@0.4.24: resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} engines: {node: '>=0.10.0'} @@ -12755,6 +13282,11 @@ packages: /ignore@5.2.4: resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} engines: {node: '>= 4'} + dev: true + + /ignore@5.3.0: + resolution: {integrity: sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==} + engines: {node: '>= 4'} /immutable@4.2.2: resolution: {integrity: sha512-fTMKDwtbvO5tldky9QZ2fMX7slR0mYpY5nbnFWYp0fOzDhHqhgIw9KoYgxLWsoNTS9ZHGauHj18DTyEw6BK3Og==} @@ -12831,8 +13363,8 @@ packages: resolution: {integrity: sha512-/nPtyeX9xPUvxZf+r0518B7uqNKlP+LqNJqSiXFEaa2T71rWIwTVXGH7hB9xO/EVdwa5/pWlFCPwShOW81XIxQ==} dev: false - /install-artifact-from-github@1.3.3: - resolution: {integrity: sha512-x79SL0d8WOi1ZjXSTUqqs0GPQZ92YArJAN9O46wgU9wdH2U9ecyyhB9YGDbPe2OLV4ptmt6AZYRQZ2GydQZosQ==} + /install-artifact-from-github@1.3.5: + resolution: {integrity: sha512-gZHC7f/cJgXz7MXlHFBxPVMsvIbev1OQN1uKQYKVJDydGNm9oYf9JstbU4Atnh/eSvk41WtEovoRm+8IF686xg==} hasBin: true dev: false @@ -12857,7 +13389,7 @@ packages: dependencies: '@ioredis/commands': 1.2.0 cluster-key-slot: 1.1.2 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) denque: 2.1.0 lodash.defaults: 4.2.0 lodash.isarguments: 3.1.0 @@ -13248,6 +13780,11 @@ packages: /isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + /isexe@3.1.1: + resolution: {integrity: sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==} + engines: {node: '>=16'} + dev: false + /isobject@3.0.1: resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} engines: {node: '>=0.10.0'} @@ -13262,27 +13799,32 @@ packages: engines: {node: '>=8'} dev: true + /istanbul-lib-coverage@3.2.2: + resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} + engines: {node: '>=8'} + dev: true + /istanbul-lib-instrument@5.2.1: resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} engines: {node: '>=8'} dependencies: - '@babel/core': 7.22.11 - '@babel/parser': 7.23.0 + '@babel/core': 7.23.3 + '@babel/parser': 7.23.4 '@istanbuljs/schema': 0.1.3 - istanbul-lib-coverage: 3.2.0 + istanbul-lib-coverage: 3.2.2 semver: 6.3.1 transitivePeerDependencies: - supports-color dev: true - /istanbul-lib-instrument@6.0.0: - resolution: {integrity: sha512-x58orMzEVfzPUKqlbLd1hXCnySCxKdDKa6Rjg97CwuLLRI4g3FHTdnExu1OqffVFay6zeMW+T6/DowFLndWnIw==} + /istanbul-lib-instrument@6.0.1: + resolution: {integrity: sha512-EAMEJBsYuyyztxMxW3g7ugGPkrZsV57v0Hmv3mm1uQsmB+QnZuepg731CRaIgeUVSdmsTngOkSnauNF8p7FIhA==} engines: {node: '>=10'} dependencies: - '@babel/core': 7.22.11 - '@babel/parser': 7.23.0 + '@babel/core': 7.23.3 + '@babel/parser': 7.23.4 '@istanbuljs/schema': 0.1.3 - istanbul-lib-coverage: 3.2.0 + istanbul-lib-coverage: 3.2.2 semver: 7.5.4 transitivePeerDependencies: - supports-color @@ -13301,15 +13843,23 @@ packages: resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} engines: {node: '>=10'} dependencies: - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) istanbul-lib-coverage: 3.2.0 source-map: 0.6.1 transitivePeerDependencies: - supports-color dev: true - /istanbul-reports@3.1.5: - resolution: {integrity: sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==} + /istanbul-reports@3.1.5: + resolution: {integrity: sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==} + engines: {node: '>=8'} + dependencies: + html-escaper: 2.0.2 + istanbul-lib-report: 3.0.1 + dev: true + + /istanbul-reports@3.1.6: + resolution: {integrity: sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==} engines: {node: '>=8'} dependencies: html-escaper: 2.0.2 @@ -13328,6 +13878,16 @@ packages: '@isaacs/cliui': 8.0.2 optionalDependencies: '@pkgjs/parseargs': 0.11.0 + dev: true + + /jackspeak@2.3.6: + resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} + engines: {node: '>=14'} + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + dev: false /jake@10.8.5: resolution: {integrity: sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==} @@ -13356,10 +13916,10 @@ packages: '@jest/expect': 29.7.0 '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.8.10 + '@types/node': 20.9.4 chalk: 4.1.2 co: 4.6.0 - dedent: 1.3.0 + dedent: 1.5.1 is-generator-fn: 2.1.0 jest-each: 29.7.0 jest-matcher-utils: 29.7.0 @@ -13369,7 +13929,7 @@ packages: jest-util: 29.7.0 p-limit: 3.1.0 pretty-format: 29.7.0 - pure-rand: 6.0.0 + pure-rand: 6.0.4 slash: 3.0.0 stack-utils: 2.0.6 transitivePeerDependencies: @@ -13377,7 +13937,35 @@ packages: - supports-color dev: true - /jest-cli@29.7.0(@types/node@20.8.10): + /jest-cli@29.7.0: + resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@jest/core': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 + chalk: 4.1.2 + create-jest: 29.7.0 + exit: 0.1.2 + import-local: 3.1.0 + jest-config: 29.7.0(@types/node@20.9.4) + jest-util: 29.7.0 + jest-validate: 29.7.0 + yargs: 17.7.2 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + dev: true + + /jest-cli@29.7.0(@types/node@20.9.1): resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -13391,10 +13979,10 @@ packages: '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 chalk: 4.1.2 - create-jest: 29.7.0(@types/node@20.8.10) + create-jest: 29.7.0(@types/node@20.9.1) exit: 0.1.2 import-local: 3.1.0 - jest-config: 29.7.0(@types/node@20.8.10) + jest-config: 29.7.0(@types/node@20.9.1) jest-util: 29.7.0 jest-validate: 29.7.0 yargs: 17.6.2 @@ -13405,7 +13993,7 @@ packages: - ts-node dev: true - /jest-config@29.7.0(@types/node@20.8.10): + /jest-config@29.7.0(@types/node@20.9.1): resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -13420,7 +14008,7 @@ packages: '@babel/core': 7.22.11 '@jest/test-sequencer': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.8.10 + '@types/node': 20.9.1 babel-jest: 29.7.0(@babel/core@7.22.11) chalk: 4.1.2 ci-info: 3.7.1 @@ -13445,6 +14033,46 @@ packages: - supports-color dev: true + /jest-config@29.7.0(@types/node@20.9.4): + resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@types/node': '*' + ts-node: '>=9.0.0' + peerDependenciesMeta: + '@types/node': + optional: true + ts-node: + optional: true + dependencies: + '@babel/core': 7.23.3 + '@jest/test-sequencer': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.9.4 + babel-jest: 29.7.0(@babel/core@7.23.3) + chalk: 4.1.2 + ci-info: 3.9.0 + deepmerge: 4.3.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-circus: 29.7.0 + jest-environment-node: 29.7.0 + jest-get-type: 29.6.3 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-runner: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 + micromatch: 4.0.5 + parse-json: 5.2.0 + pretty-format: 29.7.0 + slash: 3.0.0 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + dev: true + /jest-diff@28.1.3: resolution: {integrity: sha512-8RqP1B/OXzjjTWkqMX67iqgwBVJRgCyKD3L9nq+6ZqJMdvjE8RgHktqZ6jNrkdMT+dJuYNI3rhQpxaz7drJHfw==} engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} @@ -13499,7 +14127,7 @@ packages: '@jest/environment': 29.7.0 '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.8.10 + '@types/node': 20.9.4 jest-mock: 29.7.0 jest-util: 29.7.0 dev: true @@ -13527,8 +14155,8 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 - '@types/graceful-fs': 4.1.6 - '@types/node': 20.8.10 + '@types/graceful-fs': 4.1.9 + '@types/node': 20.9.4 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.11 @@ -13538,7 +14166,7 @@ packages: micromatch: 4.0.5 walker: 1.0.8 optionalDependencies: - fsevents: 2.3.2 + fsevents: 2.3.3 dev: true /jest-leak-detector@29.7.0: @@ -13572,9 +14200,9 @@ packages: resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@babel/code-frame': 7.22.13 + '@babel/code-frame': 7.23.4 '@jest/types': 29.6.3 - '@types/stack-utils': 2.0.1 + '@types/stack-utils': 2.0.3 chalk: 4.1.2 graceful-fs: 4.2.11 micromatch: 4.0.5 @@ -13587,7 +14215,7 @@ packages: engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: '@jest/types': 27.5.1 - '@types/node': 20.8.10 + '@types/node': 20.9.1 dev: true /jest-mock@29.7.0: @@ -13595,7 +14223,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 - '@types/node': 20.8.10 + '@types/node': 20.9.1 jest-util: 29.7.0 dev: true @@ -13636,8 +14264,8 @@ packages: jest-pnp-resolver: 1.2.3(jest-resolve@29.7.0) jest-util: 29.7.0 jest-validate: 29.7.0 - resolve: 1.22.3 - resolve.exports: 2.0.0 + resolve: 1.22.8 + resolve.exports: 2.0.2 slash: 3.0.0 dev: true @@ -13650,7 +14278,7 @@ packages: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.8.10 + '@types/node': 20.9.1 chalk: 4.1.2 emittery: 0.13.1 graceful-fs: 4.2.11 @@ -13681,7 +14309,7 @@ packages: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.8.10 + '@types/node': 20.9.1 chalk: 4.1.2 cjs-module-lexer: 1.2.2 collect-v8-coverage: 1.0.1 @@ -13704,15 +14332,15 @@ packages: resolution: {integrity: sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@babel/core': 7.22.11 - '@babel/generator': 7.22.10 - '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.22.11) - '@babel/plugin-syntax-typescript': 7.20.0(@babel/core@7.22.11) - '@babel/types': 7.22.17 + '@babel/core': 7.23.3 + '@babel/generator': 7.23.4 + '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-syntax-typescript': 7.23.3(@babel/core@7.23.3) + '@babel/types': 7.23.4 '@jest/expect-utils': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - babel-preset-current-node-syntax: 1.0.1(@babel/core@7.22.11) + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.23.3) chalk: 4.1.2 expect: 29.7.0 graceful-fs: 4.2.11 @@ -13733,9 +14361,9 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 - '@types/node': 20.8.10 + '@types/node': 20.9.4 chalk: 4.1.2 - ci-info: 3.7.1 + ci-info: 3.9.0 graceful-fs: 4.2.11 picomatch: 2.3.1 @@ -13757,7 +14385,7 @@ packages: dependencies: '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.8.10 + '@types/node': 20.9.4 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 @@ -13776,13 +14404,34 @@ packages: resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@types/node': 20.8.10 + '@types/node': 20.9.4 jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 dev: true - /jest@29.7.0(@types/node@20.8.10): + /jest@29.7.0: + resolution: {integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@jest/core': 29.7.0 + '@jest/types': 29.6.3 + import-local: 3.1.0 + jest-cli: 29.7.0 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + dev: true + + /jest@29.7.0(@types/node@20.9.1): resolution: {integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -13795,7 +14444,7 @@ packages: '@jest/core': 29.7.0 '@jest/types': 29.6.3 import-local: 3.1.0 - jest-cli: 29.7.0(@types/node@20.8.10) + jest-cli: 29.7.0(@types/node@20.9.1) transitivePeerDependencies: - '@types/node' - babel-plugin-macros @@ -13807,6 +14456,16 @@ packages: resolution: {integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==} dev: true + /joi@17.11.0: + resolution: {integrity: sha512-NgB+lZLNoqISVy1rZocE9PZI36bL/77ie924Ri43yEvi9GUUMPeyVIr8KdFTMUlby1p0PBYMk9spIxEUQYqrJQ==} + dependencies: + '@hapi/hoek': 9.3.0 + '@hapi/topo': 5.1.0 + '@sideway/address': 4.1.4 + '@sideway/formula': 3.0.1 + '@sideway/pinpoint': 2.0.0 + dev: true + /joi@17.7.0: resolution: {integrity: sha512-1/ugc8djfn93rTE3WRKdCzGGt/EtiYKxITMO4Wiv6q5JL1gl9ePt4kBsl1S499nbosspfctIQTpYIhSmHA3WAg==} dependencies: @@ -13957,7 +14616,7 @@ packages: resolution: {integrity: sha512-pJ4XLQP4Q9HTxl6RVDLJ8Cyh1uitSs0CzDBAz1uoJ4sRD/Bk7cFSXL1FUXDW3zJ7YnfliJx6eu8Jn283bpZ4Yg==} engines: {node: '>=10'} dependencies: - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) rfdc: 1.3.0 uri-js: 4.4.1 transitivePeerDependencies: @@ -14086,6 +14745,12 @@ packages: resolution: {integrity: sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g==} dependencies: json-buffer: 3.0.1 + dev: false + + /keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + dependencies: + json-buffer: 3.0.1 /kind-of@6.0.3: resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} @@ -14191,6 +14856,15 @@ packages: /local-pkg@0.4.3: resolution: {integrity: sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==} engines: {node: '>=14'} + dev: true + + /local-pkg@0.5.0: + resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==} + engines: {node: '>=14'} + dependencies: + mlly: 1.4.2 + pkg-types: 1.0.3 + dev: false /locate-path@3.0.0: resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==} @@ -14297,6 +14971,11 @@ packages: highlight.js: 10.7.3 dev: true + /lru-cache@10.1.0: + resolution: {integrity: sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==} + engines: {node: 14 || >=16.14} + dev: false + /lru-cache@4.1.5: resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==} dependencies: @@ -14316,11 +14995,6 @@ packages: dependencies: yallist: 4.0.0 - /lru-cache@7.14.1: - resolution: {integrity: sha512-ysxwsnTKdAx96aTRdhDOCQfDgbHnt8SK0KY8SEjO0wHinhWOFTESbjVCMPbU1uGXg/ch4lifqx0wfjOawU2+WA==} - engines: {node: '>=12'} - dev: false - /lru-cache@8.0.4: resolution: {integrity: sha512-E9FF6+Oc/uFLqZCuZwRKUzgFt5Raih6LfxknOSAVTjNkrCZkBf7DQCwJxZQgd9l4eHjIJDGR+E+1QKD1RhThPw==} engines: {node: '>=16.14'} @@ -14363,6 +15037,7 @@ packages: engines: {node: '>=12'} dependencies: '@jridgewell/sourcemap-codec': 1.4.15 + dev: true /magic-string@0.30.5: resolution: {integrity: sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==} @@ -14379,7 +15054,7 @@ packages: engines: {node: '>=6'} dependencies: pify: 4.0.1 - semver: 5.7.1 + semver: 5.7.2 dev: true /make-dir@3.1.0: @@ -14399,24 +15074,20 @@ packages: resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} dev: true - /make-fetch-happen@11.1.1: - resolution: {integrity: sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + /make-fetch-happen@13.0.0: + resolution: {integrity: sha512-7ThobcL8brtGo9CavByQrQi+23aIfgYU++wg4B87AIS8Rb2ZBt/MEaDqzA00Xwv/jUjAjYkLHjVolYuTLKda2A==} + engines: {node: ^16.14.0 || >=18.0.0} dependencies: - agentkeepalive: 4.2.1 - cacache: 17.1.3 + '@npmcli/agent': 2.2.0 + cacache: 18.0.0 http-cache-semantics: 4.1.1 - http-proxy-agent: 5.0.0 - https-proxy-agent: 5.0.1 is-lambda: 1.0.1 - lru-cache: 7.14.1 - minipass: 5.0.0 + minipass: 7.0.4 minipass-fetch: 3.0.3 minipass-flush: 1.0.5 minipass-pipeline: 1.2.4 negotiator: 0.6.3 promise-retry: 2.0.1 - socks-proxy-agent: 7.0.0 ssri: 10.0.4 transitivePeerDependencies: - supports-color @@ -14621,6 +15292,12 @@ packages: dependencies: brace-expansion: 2.0.1 + /minimatch@5.1.6: + resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} + engines: {node: '>=10'} + dependencies: + brace-expansion: 2.0.1 + /minimatch@9.0.1: resolution: {integrity: sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==} engines: {node: '>=16 || 14 >=14.17'} @@ -14704,6 +15381,11 @@ packages: resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} engines: {node: '>=8'} + /minipass@7.0.4: + resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==} + engines: {node: '>=16 || 14 >=14.17'} + dev: false + /minizlib@2.1.2: resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} engines: {node: '>= 8'} @@ -14740,7 +15422,15 @@ packages: pathe: 1.1.1 pkg-types: 1.0.3 ufo: 1.1.2 - dev: true + + /mlly@1.4.2: + resolution: {integrity: sha512-i/Ykufi2t1EZ6NaPLdfnZk2AX8cs0d+mTzVKuPfqPKPatxLApaBoxJQ9x1/uckXtrS/U5oisPMDkNs0yQTaBRg==} + dependencies: + acorn: 8.11.2 + pathe: 1.1.1 + pkg-types: 1.0.3 + ufo: 1.3.2 + dev: false /mnemonist@0.39.5: resolution: {integrity: sha512-FPUtkhtJ0efmEFGpU14x7jGbTB+s18LrzRL2KgoWz9YvcY3cPomz8tih01GbHwnGk/OmkOKfqd/RAQoc8Lm7DQ==} @@ -14869,8 +15559,8 @@ packages: engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true - /nanoid@5.0.2: - resolution: {integrity: sha512-2ustYUX1R2rL/Br5B/FMhi8d5/QzvkJ912rBYxskcpu0myTHzSZfTr1LAS2Sm7jxRUObRrSBFoyzwAhL49aVSg==} + /nanoid@5.0.3: + resolution: {integrity: sha512-I7X2b22cxA4LIHXPSqbBCEQSL+1wv8TuoefejsX4HFWyC6jc5JG7CEaxOltiKjc1M+YCS2YkrZZcj4+dytw9GA==} engines: {node: ^18 || >=20} hasBin: true dev: false @@ -14886,7 +15576,7 @@ packages: resolution: {integrity: sha512-6R9fqJ5Zcmf+uYaFgdIHmLwNldn5HbK8L5ybn7Uz+ylX/rnOsSp1AHcvQSrCaFN+qNM1wpymHqD7mVasEOlHGQ==} engines: {node: '>= 4.4.x'} dependencies: - debug: 3.2.7 + debug: 3.2.7(supports-color@5.5.0) iconv-lite: 0.4.24 sax: 1.2.4 transitivePeerDependencies: @@ -14929,8 +15619,8 @@ packages: resolution: {integrity: sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==} dev: false - /node-addon-api@5.0.0: - resolution: {integrity: sha512-CvkDw2OEnme7ybCykJpVcKH+uAOLV2qLqiyla128dN9TkEWfrYmxG6C2boDe5KcNQqZF3orkqzGgOMvZ/JNekA==} + /node-addon-api@5.1.0: + resolution: {integrity: sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==} dev: false /node-addon-api@6.1.0: @@ -15005,22 +15695,21 @@ packages: hasBin: true requiresBuild: true - /node-gyp@9.4.0: - resolution: {integrity: sha512-dMXsYP6gc9rRbejLXmTbVRYjAHw7ppswsKyMxuxJxxOHzluIO1rGp9TOQgjFJ+2MCqcOcQTOPB/8Xwhr+7s4Eg==} - engines: {node: ^12.13 || ^14.13 || >=16} + /node-gyp@10.0.1: + resolution: {integrity: sha512-gg3/bHehQfZivQVfqIyy8wTdSymF9yTyP4CJifK73imyNMU8AIGQE2pUa7dNWfmMeG9cDVF2eehiRMv0LC1iAg==} + engines: {node: ^16.14.0 || >=18.0.0} hasBin: true dependencies: env-paths: 2.2.1 exponential-backoff: 3.1.1 - glob: 7.2.3 + glob: 10.3.10 graceful-fs: 4.2.11 - make-fetch-happen: 11.1.1 - nopt: 6.0.0 - npmlog: 6.0.2 - rimraf: 3.0.2 + make-fetch-happen: 13.0.0 + nopt: 7.2.0 + proc-log: 3.0.0 semver: 7.5.4 tar: 6.1.13 - which: 2.0.2 + which: 4.0.0 transitivePeerDependencies: - supports-color dev: false @@ -15080,13 +15769,22 @@ packages: hasBin: true dependencies: abbrev: 1.1.1 + dev: true + + /nopt@7.2.0: + resolution: {integrity: sha512-CVDtwCdhYIvnAzFoJ6NJ6dX3oga9/HyciQDnG1vQDjSLMeKLJ4A93ZqYKDrgYSr1FBY5/hMYC+2VCi24pgpkGA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + hasBin: true + dependencies: + abbrev: 2.0.0 + dev: false /normalize-package-data@2.5.0: resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} dependencies: hosted-git-info: 2.8.9 resolve: 1.22.8 - semver: 5.7.1 + semver: 5.7.2 validate-npm-package-license: 3.0.4 dev: true @@ -15142,16 +15840,6 @@ packages: set-blocking: 2.0.0 dev: false - /npmlog@6.0.2: - resolution: {integrity: sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - dependencies: - are-we-there-yet: 3.0.1 - console-control-strings: 1.1.0 - gauge: 4.0.4 - set-blocking: 2.0.0 - dev: false - /nth-check@2.1.1: resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} dependencies: @@ -15352,8 +16040,8 @@ packages: resolution: {integrity: sha512-o6E5qJV5zkAbIDNhGSIlyOhScKXgQrSRMilfph0clDfM0nEnBOlKlH4sWDmG95BW/CvwNz0vmm7dJVtU2KlMiA==} dev: true - /otpauth@9.1.5: - resolution: {integrity: sha512-mnic91MZxvj04Ir7FN8Xi6wF3FU8D+s6M5p6FQaSS91/csKswoOI9Dk7kKSnGFAoBYgGTTO+OWScV0nJuzrbPg==} + /otpauth@9.2.0: + resolution: {integrity: sha512-vbiHaeTJHrRG4fWRAZwVVrCnQz9SEzNINk2Hfx8BZY8UxTJEnqpOHxr11KfrRVAqWZdD6Y5jdyXW6Xp/ls9O/w==} dependencies: jssha: 3.3.1 dev: false @@ -15470,7 +16158,7 @@ packages: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} dependencies: - '@babel/code-frame': 7.22.13 + '@babel/code-frame': 7.23.4 error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 @@ -15548,12 +16236,21 @@ packages: /path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + /path-scurry@1.10.1: + resolution: {integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + lru-cache: 9.1.2 + minipass: 5.0.0 + dev: false + /path-scurry@1.9.2: resolution: {integrity: sha512-qSDLy2aGFPm8i4rsbHd4MNyTcrzHFsLQykrtbuGRknZZCBBVXSv2tSCDN2Cg6Rt/GFRw8GoW9y9Ecw5rIPG1sg==} engines: {node: '>=16 || 14 >=14.17'} dependencies: lru-cache: 9.1.2 minipass: 5.0.0 + dev: true /path-to-regexp@0.1.7: resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==} @@ -15739,8 +16436,8 @@ packages: thread-stream: 2.3.0 dev: false - /pirates@4.0.5: - resolution: {integrity: sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==} + /pirates@4.0.6: + resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} engines: {node: '>= 6'} dev: true @@ -15776,7 +16473,6 @@ packages: jsonc-parser: 3.2.0 mlly: 1.4.0 pathe: 1.1.1 - dev: true /plimit-lit@1.5.0: resolution: {integrity: sha512-Eb/MqCb1Iv/ok4m1FqIXqvUKPISufcjZ605hl3KM/n8GaX8zfhtgdLwZU3vKjuHGh2O9Rjog/bHTq8ofIShdng==} @@ -16186,8 +16882,8 @@ packages: hasBin: true dev: true - /prettier@3.0.3: - resolution: {integrity: sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==} + /prettier@3.1.0: + resolution: {integrity: sha512-TQLvXjq5IAibjh8EpBIkNKxO749UEWABoiIZehEPiY4GNpVdhaFKqSTu+QrlU6D2dPAfubRmtJTi4K4YkQ5eXw==} engines: {node: '>=14'} hasBin: true dev: true @@ -16257,6 +16953,11 @@ packages: - supports-color dev: false + /proc-log@3.0.0: + resolution: {integrity: sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dev: false + /process-nextick-args@2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} @@ -16461,7 +17162,7 @@ packages: resolution: {integrity: sha512-n13AWriBMPYxnpbb6bnaY5YoY6rGj8vPLrz6CZF3o0qJNEwlcfJVxBzYZ0NJsQ21UbdJoijPCDrM++SUVEz7+w==} engines: {node: '>=8.16.0'} dependencies: - '@types/mime-types': 2.1.3 + '@types/mime-types': 2.1.4 debug: 4.3.4(supports-color@8.1.1) extract-zip: 1.7.0 https-proxy-agent: 4.0.0 @@ -16477,8 +17178,8 @@ packages: - utf-8-validate dev: true - /pure-rand@6.0.0: - resolution: {integrity: sha512-rLSBxJjP+4DQOgcJAx6RZHT2he2pkhQdSnofG5VWyVl6GRq/K02ISOuOLcsMOrtKDIJb8JN2zm3FFzWNbezdPw==} + /pure-rand@6.0.4: + resolution: {integrity: sha512-LA0Y9kxMYv47GIPJy6MI84fqTd2HmYZI83W/kM/SkKfDlajnZYfmXFTxkbY+xSBPkLJxltMa9hIkmdc29eguMA==} dev: true /pureimage@0.3.17: @@ -16617,13 +17318,13 @@ packages: setimmediate: 1.0.5 dev: false - /re2@1.20.5: - resolution: {integrity: sha512-wZAqOjJ3m0PBgM2B8KG9dNJLwSNIAOZGiHN/c0FpKpaM1Hkg5NpKNAWSVbCXe+bb2K0xmHz6DPR4HJaQ2MejgQ==} + /re2@1.20.8: + resolution: {integrity: sha512-5GArE3towC0ZyinRkkaZARZxlbX3K+z2REXSVltGSW+F/ID8SLrbh1okTXEcTFBp9zsAhKcGH1Vm+zJ2IwMb7Q==} requiresBuild: true dependencies: - install-artifact-from-github: 1.3.3 + install-artifact-from-github: 1.3.5 nan: 2.18.0 - node-gyp: 9.4.0 + node-gyp: 10.0.1 transitivePeerDependencies: - supports-color dev: false @@ -16814,6 +17515,18 @@ packages: string_decoder: 1.1.1 util-deprecate: 1.0.2 + /readable-stream@2.3.8: + resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 1.0.0 + process-nextick-args: 2.0.1 + safe-buffer: 5.1.2 + string_decoder: 1.1.1 + util-deprecate: 1.0.2 + dev: true + /readable-stream@3.6.0: resolution: {integrity: sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==} engines: {node: '>= 6'} @@ -16822,6 +17535,14 @@ packages: string_decoder: 1.3.0 util-deprecate: 1.0.2 + /readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + /readable-stream@4.3.0: resolution: {integrity: sha512-MuEnA0lbSi7JS8XM+WNJlWZkHAAdm7gETHdFK//Q/mChGyj2akEFtdLZh32jSdkWGbRwCW9pn6g3LWDdDeZnBQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -17063,8 +17784,8 @@ packages: engines: {node: '>=8'} dev: true - /resolve.exports@2.0.0: - resolution: {integrity: sha512-6K/gDlqgQscOlg9fSRpWstA8sYe8rbELsSTNpx+3kTrsVCzvSl0zIvRErM7fdl9ERWDsKnrLnwB+Ne89918XOg==} + /resolve.exports@2.0.2: + resolution: {integrity: sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==} engines: {node: '>=10'} dev: true @@ -17154,26 +17875,26 @@ packages: engines: {node: '>=14.18.0', npm: '>=8.0.0'} hasBin: true optionalDependencies: - fsevents: 2.3.2 + fsevents: 2.3.3 - /rollup@4.2.0: - resolution: {integrity: sha512-deaMa9Z+jPVeBD2dKXv+h7EbdKte9++V2potc/ADqvVgEr6DEJ3ia9u0joarjC2lX/ubaCRYz3QVx0TzuVqAJA==} + /rollup@4.4.1: + resolution: {integrity: sha512-idZzrUpWSblPJX66i+GzrpjKE3vbYrlWirUHteoAbjKReZwa0cohAErOYA5efoMmNCdvG9yrJS+w9Kl6csaH4w==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.2.0 - '@rollup/rollup-android-arm64': 4.2.0 - '@rollup/rollup-darwin-arm64': 4.2.0 - '@rollup/rollup-darwin-x64': 4.2.0 - '@rollup/rollup-linux-arm-gnueabihf': 4.2.0 - '@rollup/rollup-linux-arm64-gnu': 4.2.0 - '@rollup/rollup-linux-arm64-musl': 4.2.0 - '@rollup/rollup-linux-x64-gnu': 4.2.0 - '@rollup/rollup-linux-x64-musl': 4.2.0 - '@rollup/rollup-win32-arm64-msvc': 4.2.0 - '@rollup/rollup-win32-ia32-msvc': 4.2.0 - '@rollup/rollup-win32-x64-msvc': 4.2.0 - fsevents: 2.3.2 + '@rollup/rollup-android-arm-eabi': 4.4.1 + '@rollup/rollup-android-arm64': 4.4.1 + '@rollup/rollup-darwin-arm64': 4.4.1 + '@rollup/rollup-darwin-x64': 4.4.1 + '@rollup/rollup-linux-arm-gnueabihf': 4.4.1 + '@rollup/rollup-linux-arm64-gnu': 4.4.1 + '@rollup/rollup-linux-arm64-musl': 4.4.1 + '@rollup/rollup-linux-x64-gnu': 4.4.1 + '@rollup/rollup-linux-x64-musl': 4.4.1 + '@rollup/rollup-win32-arm64-msvc': 4.4.1 + '@rollup/rollup-win32-ia32-msvc': 4.4.1 + '@rollup/rollup-win32-x64-msvc': 4.4.1 + fsevents: 2.3.3 /rrweb-cssom@0.6.0: resolution: {integrity: sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==} @@ -17296,8 +18017,8 @@ packages: semver: 6.3.1 dev: false - /semver@5.7.1: - resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==} + /semver@5.7.2: + resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} hasBin: true dev: true @@ -17379,7 +18100,7 @@ packages: dependencies: color: 4.2.3 detect-libc: 2.0.2 - node-addon-api: 5.0.0 + node-addon-api: 5.1.0 prebuild-install: 7.1.1 semver: 7.5.4 simple-get: 4.0.1 @@ -17423,15 +18144,6 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} - /shiki@0.14.4: - resolution: {integrity: sha512-IXCRip2IQzKwxArNNq1S+On4KPML3Yyn8Zzs/xRgcgOWIr8ntIK3IKzjFPfjy/7kt9ZMjc+FItfqHRBg8b6tNQ==} - dependencies: - ansi-sequence-parser: 1.1.1 - jsonc-parser: 3.2.0 - vscode-oniguruma: 1.7.0 - vscode-textmate: 8.0.0 - dev: true - /shiki@0.14.5: resolution: {integrity: sha512-1gCAYOcmCFONmErGTrS1fjzJLA7MGZmKzrBNX7apqSwhyITJg2O102uFzXUeBxNnEkDA9vHIKLyeKq0V083vIw==} dependencies: @@ -17439,7 +18151,6 @@ packages: jsonc-parser: 3.2.0 vscode-oniguruma: 1.7.0 vscode-textmate: 8.0.0 - dev: false /side-channel@1.0.4: resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} @@ -17474,7 +18185,7 @@ packages: dependencies: '@hapi/hoek': 10.0.1 '@hapi/wreck': 18.0.1 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) joi: 17.7.0 transitivePeerDependencies: - supports-color @@ -17674,17 +18385,6 @@ packages: engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} dev: false - /socks-proxy-agent@7.0.0: - resolution: {integrity: sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==} - engines: {node: '>= 10'} - dependencies: - agent-base: 6.0.2 - debug: 4.3.4 - socks: 2.7.1 - transitivePeerDependencies: - - supports-color - dev: false - /socks-proxy-agent@8.0.2: resolution: {integrity: sha512-8zuqoLv1aP/66PHF5TqwJ7Czm3Yv32urJQHrVyhD7mmA6d61Zv8cIXQYPTWwmg6qlupnPvs/QKDmfa4P/qct2g==} engines: {node: '>= 14'} @@ -17835,8 +18535,8 @@ packages: resolution: {integrity: sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A==} dev: false - /start-server-and-test@2.0.1: - resolution: {integrity: sha512-8PFo4DLLLCDMuS51/BEEtE1m9CAXw1LNVtZSS1PzkYQh6Qf9JUwM4huYeSoUumaaoAyuwYBwCa9OsrcpMqcOdQ==} + /start-server-and-test@2.0.3: + resolution: {integrity: sha512-QsVObjfjFZKJE6CS6bSKNwWZCKBG6975/jKRPPGFfFh+yOQglSeGXiNWjzgQNXdphcBI9nXbyso9tPfX4YAUhg==} engines: {node: '>=16'} hasBin: true dependencies: @@ -17847,7 +18547,7 @@ packages: execa: 5.1.1 lazy-ass: 1.6.0 ps-tree: 1.2.0 - wait-on: 7.0.1(debug@4.3.4) + wait-on: 7.2.0(debug@4.3.4) transitivePeerDependencies: - supports-color dev: true @@ -17871,11 +18571,11 @@ packages: resolution: {integrity: sha512-siT1RiqlfQnGqgT/YzXVUNsom9S0H1OX+dpdGN1xkyYATo4I6sep5NmsRD/40s3IIOvlCq6akxkqG82urIZW1w==} dev: true - /storybook@7.5.2: - resolution: {integrity: sha512-wuB5VdmI6teU2z5iiBEZ2ziNeP6g6Da/dGM7+tWQVUl8bmfOmpEgzgEyS1/XqdOfm+HoZplspwM0XMHOLo/Now==} + /storybook@7.5.3: + resolution: {integrity: sha512-lkn9hcedNmSNCzbDIrky2LpZJqlpS7Fy1KpGBZmLY34g5Mb0+KnXaUqzY0dxsd7aFm8Oa7Du/emceMYNNL4DMA==} hasBin: true dependencies: - '@storybook/cli': 7.5.2 + '@storybook/cli': 7.5.3 transitivePeerDependencies: - bufferutil - encoding @@ -18150,8 +18850,8 @@ packages: resolution: {integrity: sha512-AsS729u2RHUfEra9xJrE39peJcc2stq2+poBXX8bcM08Y6g9j/i/PUzwNQqkaJde7Ntg1TO7bSREbR5sdosQ+g==} dev: true - /systeminformation@5.21.15: - resolution: {integrity: sha512-vMLwsGgJZW6GvoBXVWNZuRQG0MPxlfQnIIIY9ZxoogWftUpJ9C33qD+32e1meFlXuWpN0moNApPFLpbsSi4OaQ==} + /systeminformation@5.21.17: + resolution: {integrity: sha512-JZYRCbIjk3WuBV59A9/rTla2rROX+aAJ9uo2Z1dI+bjieORcukClN8rlM1zE9NYKpULSbaGc+KKct/870lO0DA==} engines: {node: '>=8.0.0'} os: [darwin, linux, win32, freebsd, openbsd, netbsd, sunos, android] hasBin: true @@ -18180,7 +18880,7 @@ packages: end-of-stream: 1.4.4 fs-constants: 1.0.0 inherits: 2.0.4 - readable-stream: 3.6.0 + readable-stream: 3.6.2 /tar-stream@3.1.6: resolution: {integrity: sha512-B/UyjYwPpMBv+PaFSWAmtYjwdrlEaZQEhMIBFNC5oEG8lpiW8XjcSdmEaClj28ArfKScKHs2nshz3k2le6crsg==} @@ -18438,22 +19138,22 @@ packages: escape-string-regexp: 5.0.0 dev: false - /ts-api-utils@1.0.1(typescript@5.1.6): + /ts-api-utils@1.0.1(typescript@5.2.2): resolution: {integrity: sha512-lC/RGlPmwdrIBFTX59wwNzqh7aR2otPNPR/5brHZm/XKFYKsfqxihXUe9pU3JI+3vGkl+vyCoNNnPhJn3aLK1A==} engines: {node: '>=16.13.0'} peerDependencies: typescript: '>=4.2.0' dependencies: - typescript: 5.1.6 + typescript: 5.2.2 dev: true - /ts-api-utils@1.0.1(typescript@5.2.2): - resolution: {integrity: sha512-lC/RGlPmwdrIBFTX59wwNzqh7aR2otPNPR/5brHZm/XKFYKsfqxihXUe9pU3JI+3vGkl+vyCoNNnPhJn3aLK1A==} + /ts-api-utils@1.0.3(typescript@5.1.6): + resolution: {integrity: sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==} engines: {node: '>=16.13.0'} peerDependencies: typescript: '>=4.2.0' dependencies: - typescript: 5.2.2 + typescript: 5.1.6 dev: true /ts-dedent@2.2.0: @@ -18461,7 +19161,7 @@ packages: engines: {node: '>=6.10'} dev: true - /ts-jest@29.1.1(@babel/core@7.22.11)(jest@29.7.0)(typescript@5.1.6): + /ts-jest@29.1.1(@babel/core@7.23.3)(jest@29.7.0)(typescript@5.1.6): resolution: {integrity: sha512-D6xjnnbP17cC85nliwGiL+tpoKN0StpgE0TeOjXQTU6MVCfsB4v7aW05CgQ/1OywGb0x/oy9hHFnN+sczTiRaA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -18482,10 +19182,10 @@ packages: esbuild: optional: true dependencies: - '@babel/core': 7.22.11 + '@babel/core': 7.23.3 bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 - jest: 29.7.0(@types/node@20.8.10) + jest: 29.7.0 jest-util: 29.7.0 json5: 2.2.3 lodash.memoize: 4.1.2 @@ -18665,8 +19365,8 @@ packages: /typedarray@0.0.6: resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} - /typedoc@0.25.1(typescript@5.1.6): - resolution: {integrity: sha512-c2ye3YUtGIadxN2O6YwPEXgrZcvhlZ6HlhWZ8jQRNzwLPn2ylhdGqdR8HbyDRyALP8J6lmSANILCkkIdNPFxqA==} + /typedoc@0.25.3(typescript@5.1.6): + resolution: {integrity: sha512-Ow8Bo7uY1Lwy7GTmphRIMEo6IOZ+yYUyrc8n5KXIZg1svpqhZSWgni2ZrDhe+wLosFS8yswowUzljTAV/3jmWw==} engines: {node: '>= 16'} hasBin: true peerDependencies: @@ -18675,7 +19375,7 @@ packages: lunr: 2.3.9 marked: 4.3.0 minimatch: 9.0.3 - shiki: 0.14.4 + shiki: 0.14.5 typescript: 5.1.6 dev: true @@ -18743,7 +19443,7 @@ packages: chalk: 4.1.2 cli-highlight: 2.1.11 date-fns: 2.30.0 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) dotenv: 16.0.3 glob: 8.1.0 ioredis: 5.3.2 @@ -18776,7 +19476,10 @@ packages: /ufo@1.1.2: resolution: {integrity: sha512-TrY6DsjTQQgyS3E3dBaOXf0TpPD8u9FVrVYmKVegJuFw51n/YB9XPt+U6ydzFG5ZIN7+DIjPbNmXoBj9esYhgQ==} - dev: true + + /ufo@1.3.2: + resolution: {integrity: sha512-o+ORpgGwaYQXgqGDwd+hkS4PuZ3QnmqMMxRuajK/a38L6fTpcE5GPIfrf+L/KemFzfUpeUQc1rRS1iDBozvnFA==} + dev: false /uglify-js@3.17.4: resolution: {integrity: sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==} @@ -18915,6 +19618,16 @@ packages: chokidar: 3.5.3 webpack-sources: 3.2.3 webpack-virtual-modules: 0.5.0 + dev: true + + /unplugin@1.5.1: + resolution: {integrity: sha512-0QkvG13z6RD+1L1FoibQqnvTwVBXvS4XSPwAyinVgoOCl2jAgwzdUKmEj05o4Lt8xwQI85Hb6mSyYkcAGwZPew==} + dependencies: + acorn: 8.11.2 + chokidar: 3.5.3 + webpack-sources: 3.2.3 + webpack-virtual-modules: 0.6.1 + dev: false /untildify@4.0.0: resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==} @@ -18931,6 +19644,17 @@ packages: escalade: 3.1.1 picocolors: 1.0.0 + /update-browserslist-db@1.0.13(browserslist@4.22.1): + resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + dependencies: + browserslist: 4.22.1 + escalade: 3.1.1 + picocolors: 1.0.0 + dev: true + /uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} dependencies: @@ -19018,7 +19742,7 @@ packages: resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} hasBin: true - /v-code-diff@1.7.2(vue@3.3.7): + /v-code-diff@1.7.2(vue@3.3.8): resolution: {integrity: sha512-y+q8ZHf8GfphYLhcZbjAKcId/h6vZujS71Ryq5u+dI6Jg4ZLTdLrBNVSzYpHywHSSFFfBMdilm6XvVryEaH4+A==} requiresBuild: true peerDependencies: @@ -19031,8 +19755,8 @@ packages: diff: 5.1.0 diff-match-patch: 1.0.5 highlight.js: 11.8.0 - vue: 3.3.7(typescript@5.2.2) - vue-demi: 0.13.11(vue@3.3.7) + vue: 3.3.8(typescript@5.2.2) + vue-demi: 0.13.11(vue@3.3.8) dev: false /v8-to-istanbul@9.1.0: @@ -19044,6 +19768,15 @@ packages: convert-source-map: 1.9.0 dev: true + /v8-to-istanbul@9.2.0: + resolution: {integrity: sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA==} + engines: {node: '>=10.12.0'} + dependencies: + '@jridgewell/trace-mapping': 0.3.20 + '@types/istanbul-lib-coverage': 2.0.6 + convert-source-map: 2.0.0 + dev: true + /validate-npm-package-license@3.0.4: resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} dependencies: @@ -19072,7 +19805,7 @@ packages: core-util-is: 1.0.2 extsprintf: 1.3.0 - /vite-node@0.34.6(@types/node@20.8.10)(sass@1.69.5)(terser@5.24.0): + /vite-node@0.34.6(@types/node@20.9.1)(sass@1.69.5)(terser@5.24.0): resolution: {integrity: sha512-nlBMJ9x6n7/Amaz6F3zJ97EBwR2FkzhBRxF5e+jE6LA3yi6Wtc2lyTij1OnDMIr34v5g/tVQtsVAzhT0jc5ygA==} engines: {node: '>=v14.18.0'} hasBin: true @@ -19082,7 +19815,7 @@ packages: mlly: 1.4.0 pathe: 1.1.1 picocolors: 1.0.0 - vite: 4.5.0(@types/node@20.8.10)(sass@1.69.5)(terser@5.24.0) + vite: 4.5.0(@types/node@20.9.1)(sass@1.69.5)(terser@5.24.0) transitivePeerDependencies: - '@types/node' - less @@ -19098,7 +19831,7 @@ packages: resolution: {integrity: sha512-p4D8CFVhZS412SyQX125qxyzOgIFouwOcvjZWk6bQbNPR1wtaEzFT6jZxAjf1dejlGqa6fqHcuCvQea6EWUkUA==} dev: true - /vite@4.5.0(@types/node@20.8.10)(sass@1.69.5)(terser@5.24.0): + /vite@4.5.0(@types/node@20.9.1)(sass@1.69.5)(terser@5.24.0): resolution: {integrity: sha512-ulr8rNLA6rkyFAlVWw2q5YJ91v098AFQ2R0PRFwPzREXOUJQPtFUG0t+/ZikhaOCDqFoDhN6/v8Sq0o4araFAw==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true @@ -19126,14 +19859,14 @@ packages: terser: optional: true dependencies: - '@types/node': 20.8.10 + '@types/node': 20.9.1 esbuild: 0.18.17 postcss: 8.4.31 rollup: 3.29.4 sass: 1.69.5 terser: 5.24.0 optionalDependencies: - fsevents: 2.3.2 + fsevents: 2.3.3 /vitest-fetch-mock@0.2.2(vitest@0.34.6): resolution: {integrity: sha512-XmH6QgTSjCWrqXoPREIdbj40T7i1xnGmAsTAgfckoO75W1IEHKR8hcPCQ7SO16RsdW1t85oUm6pcQRLeBgjVYQ==} @@ -19180,7 +19913,7 @@ packages: dependencies: '@types/chai': 4.3.5 '@types/chai-subset': 1.3.3 - '@types/node': 20.8.10 + '@types/node': 20.9.1 '@vitest/expect': 0.34.6 '@vitest/runner': 0.34.6 '@vitest/snapshot': 0.34.6 @@ -19200,8 +19933,8 @@ packages: strip-literal: 1.0.1 tinybench: 2.5.0 tinypool: 0.7.0 - vite: 4.5.0(@types/node@20.8.10)(sass@1.69.5)(terser@5.24.0) - vite-node: 0.34.6(@types/node@20.8.10)(sass@1.69.5)(terser@5.24.0) + vite: 4.5.0(@types/node@20.9.1)(sass@1.69.5)(terser@5.24.0) + vite-node: 0.34.6(@types/node@20.9.1)(sass@1.69.5)(terser@5.24.0) why-is-node-running: 2.2.2 transitivePeerDependencies: - less @@ -19231,7 +19964,7 @@ packages: resolution: {integrity: sha512-6bnLkn8O0JJyiFSIF0EfCogzeqNXpnjJ0vW/SZzNHfe6sPx30lTtTXlE5TFs2qhJlAtDFybStVNpL73cPe3OMQ==} dev: true - /vue-demi@0.13.11(vue@3.3.7): + /vue-demi@0.13.11(vue@3.3.8): resolution: {integrity: sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A==} engines: {node: '>=12'} hasBin: true @@ -19243,35 +19976,35 @@ packages: '@vue/composition-api': optional: true dependencies: - vue: 3.3.7(typescript@5.2.2) + vue: 3.3.8(typescript@5.2.2) dev: false - /vue-docgen-api@4.64.1(vue@3.3.7): + /vue-docgen-api@4.64.1(vue@3.3.8): resolution: {integrity: sha512-jbOf7ByE3Zvtuk+429Jorl+eIeh2aB2Fx1GUo3xJd1aByJWE8KDlSEa6b11PB1ze8f0sRUBraRDinICCk0KY7g==} dependencies: '@babel/parser': 7.23.0 '@babel/types': 7.22.17 '@vue/compiler-dom': 3.3.7 - '@vue/compiler-sfc': 3.3.7 + '@vue/compiler-sfc': 3.3.8 ast-types: 0.14.2 hash-sum: 2.0.0 lru-cache: 8.0.4 pug: 3.0.2 recast: 0.22.0 ts-map: 1.0.3 - vue-inbrowser-compiler-independent-utils: 4.64.1(vue@3.3.7) + vue-inbrowser-compiler-independent-utils: 4.64.1(vue@3.3.8) transitivePeerDependencies: - vue dev: true - /vue-eslint-parser@9.3.2(eslint@8.52.0): + /vue-eslint-parser@9.3.2(eslint@8.53.0): resolution: {integrity: sha512-q7tWyCVaV9f8iQyIA5Mkj/S6AoJ9KBN8IeUSf3XEmBrOtxOZnfTg5s4KClbZBCK3GtnT/+RyCLZyDHuZwTuBjg==} engines: {node: ^14.17.0 || >=16.0.0} peerDependencies: eslint: '>=6.0.0' dependencies: debug: 4.3.4(supports-color@8.1.1) - eslint: 8.52.0 + eslint: 8.53.0 eslint-scope: 7.2.2 eslint-visitor-keys: 3.4.3 espree: 9.6.1 @@ -19282,12 +20015,12 @@ packages: - supports-color dev: true - /vue-inbrowser-compiler-independent-utils@4.64.1(vue@3.3.7): + /vue-inbrowser-compiler-independent-utils@4.64.1(vue@3.3.8): resolution: {integrity: sha512-Hn32n07XZ8j9W8+fmOXPQL+i+W2e/8i6mkH4Ju3H6nR0+cfvmWM95GhczYi5B27+Y8JlCKgAo04IUiYce4mKAw==} peerDependencies: vue: '>=2' dependencies: - vue: 3.3.7(typescript@5.2.2) + vue: 3.3.8(typescript@5.2.2) dev: true /vue-template-compiler@2.7.14: @@ -19309,28 +20042,28 @@ packages: typescript: 5.2.2 dev: true - /vue@3.3.7(typescript@5.2.2): - resolution: {integrity: sha512-YEMDia1ZTv1TeBbnu6VybatmSteGOS3A3YgfINOfraCbf85wdKHzscD6HSS/vB4GAtI7sa1XPX7HcQaJ1l24zA==} + /vue@3.3.8(typescript@5.2.2): + resolution: {integrity: sha512-5VSX/3DabBikOXMsxzlW8JyfeLKlG9mzqnWgLQLty88vdZL7ZJgrdgBOmrArwxiLtmS+lNNpPcBYqrhE6TQW5w==} peerDependencies: typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: - '@vue/compiler-dom': 3.3.7 - '@vue/compiler-sfc': 3.3.7 - '@vue/runtime-dom': 3.3.7 - '@vue/server-renderer': 3.3.7(vue@3.3.7) - '@vue/shared': 3.3.7 + '@vue/compiler-dom': 3.3.8 + '@vue/compiler-sfc': 3.3.8 + '@vue/runtime-dom': 3.3.8 + '@vue/server-renderer': 3.3.8(vue@3.3.8) + '@vue/shared': 3.3.8 typescript: 5.2.2 - /vuedraggable@4.1.0(vue@3.3.7): + /vuedraggable@4.1.0(vue@3.3.8): resolution: {integrity: sha512-FU5HCWBmsf20GpP3eudURW3WdWTKIbEIQxh9/8GE806hydR9qZqRRxRE3RjqX7PkuLuMQG/A7n3cfj9rCEchww==} peerDependencies: vue: ^3.0.1 dependencies: sortablejs: 1.14.0 - vue: 3.3.7(typescript@5.2.2) + vue: 3.3.8(typescript@5.2.2) dev: false /w3c-xmlserializer@4.0.0: @@ -19340,13 +20073,13 @@ packages: xml-name-validator: 4.0.0 dev: false - /wait-on@7.0.1(debug@4.3.4): - resolution: {integrity: sha512-9AnJE9qTjRQOlTZIldAaf/da2eW0eSRSgcqq85mXQja/DW3MriHxkpODDSUEg+Gri/rKEcXUZHe+cevvYItaog==} + /wait-on@7.2.0(debug@4.3.4): + resolution: {integrity: sha512-wCQcHkRazgjG5XoAq9jbTMLpNIjoSlZslrJ2+N9MxDsGEv1HnFoVjOCexL0ESva7Y9cu350j+DWADdk54s4AFQ==} engines: {node: '>=12.0.0'} hasBin: true dependencies: - axios: 0.27.2(debug@4.3.4) - joi: 17.7.0 + axios: 1.6.2(debug@4.3.4) + joi: 17.11.0 lodash: 4.17.21 minimist: 1.2.8 rxjs: 7.8.1 @@ -19414,6 +20147,11 @@ packages: /webpack-virtual-modules@0.5.0: resolution: {integrity: sha512-kyDivFZ7ZM0BVOUteVbDFhlRt7Ah/CSPwJdi8hBpkK7QLumUqdLtVfm/PX/hkcnrvr0i77fO5+TjZ94Pe+C9iw==} + dev: true + + /webpack-virtual-modules@0.6.1: + resolution: {integrity: sha512-poXpCylU7ExuvZK8z+On3kX+S8o/2dQ/SVYueKA0D4WEMXROXgY8Ez50/bQEUmvoSMMrWcrJqCHuhAbsiwg7Dg==} + dev: false /whatwg-encoding@2.0.0: resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==} @@ -19499,6 +20237,14 @@ packages: dependencies: isexe: 2.0.0 + /which@4.0.0: + resolution: {integrity: sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==} + engines: {node: ^16.13.0 || >=18.0.0} + hasBin: true + dependencies: + isexe: 3.1.1 + dev: false + /why-is-node-running@2.2.2: resolution: {integrity: sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==} engines: {node: '>=8'} @@ -19716,6 +20462,19 @@ packages: y18n: 5.0.8 yargs-parser: 21.1.1 + /yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} + dependencies: + cliui: 8.0.1 + escalade: 3.1.1 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + dev: true + /yauzl@2.10.0: resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==} dependencies: @@ -19753,10 +20512,10 @@ packages: readable-stream: 3.6.0 dev: false - github.com/aiscript-dev/aiscript-vscode/a8fa5bb41885391cdb6a6e3165eaa6e4868da86e: - resolution: {tarball: https://codeload.github.com/aiscript-dev/aiscript-vscode/tar.gz/a8fa5bb41885391cdb6a6e3165eaa6e4868da86e} + github.com/aiscript-dev/aiscript-vscode/b5a8aa0ad927831a0b867d1c183460a14e6c48cd: + resolution: {tarball: https://codeload.github.com/aiscript-dev/aiscript-vscode/tar.gz/b5a8aa0ad927831a0b867d1c183460a14e6c48cd} name: aiscript-vscode - version: 0.0.5 + version: 0.0.6 engines: {vscode: ^1.83.0} dev: false @@ -19776,7 +20535,7 @@ packages: sharp: 0.31.3 dev: false - github.com/misskey-dev/storybook-addon-misskey-theme/cf583db098365b2ccc81a82f63ca9c93bc32b640(@storybook/blocks@7.5.2)(@storybook/components@7.5.2)(@storybook/core-events@7.5.2)(@storybook/manager-api@7.5.2)(@storybook/preview-api@7.5.2)(@storybook/theming@7.5.2)(@storybook/types@7.5.2)(react-dom@18.2.0)(react@18.2.0): + github.com/misskey-dev/storybook-addon-misskey-theme/cf583db098365b2ccc81a82f63ca9c93bc32b640(@storybook/blocks@7.5.3)(@storybook/components@7.5.3)(@storybook/core-events@7.5.3)(@storybook/manager-api@7.5.3)(@storybook/preview-api@7.5.3)(@storybook/theming@7.5.3)(@storybook/types@7.5.3)(react-dom@18.2.0)(react@18.2.0): resolution: {tarball: https://codeload.github.com/misskey-dev/storybook-addon-misskey-theme/tar.gz/cf583db098365b2ccc81a82f63ca9c93bc32b640} id: github.com/misskey-dev/storybook-addon-misskey-theme/cf583db098365b2ccc81a82f63ca9c93bc32b640 name: storybook-addon-misskey-theme @@ -19797,25 +20556,25 @@ packages: react-dom: optional: true dependencies: - '@storybook/blocks': 7.5.2(react-dom@18.2.0)(react@18.2.0) - '@storybook/components': 7.5.2(react-dom@18.2.0)(react@18.2.0) - '@storybook/core-events': 7.5.2 - '@storybook/manager-api': 7.5.2(react-dom@18.2.0)(react@18.2.0) - '@storybook/preview-api': 7.5.2 - '@storybook/theming': 7.5.2(react-dom@18.2.0)(react@18.2.0) - '@storybook/types': 7.5.2 + '@storybook/blocks': 7.5.3(react-dom@18.2.0)(react@18.2.0) + '@storybook/components': 7.5.3(react-dom@18.2.0)(react@18.2.0) + '@storybook/core-events': 7.5.3 + '@storybook/manager-api': 7.5.3(react-dom@18.2.0)(react@18.2.0) + '@storybook/preview-api': 7.5.3 + '@storybook/theming': 7.5.3(react-dom@18.2.0)(react@18.2.0) + '@storybook/types': 7.5.3 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: true - github.com/misskey-dev/summaly/d2d8db49943ccb201c1b1b283e9d0a630519fac7: - resolution: {tarball: https://codeload.github.com/misskey-dev/summaly/tar.gz/d2d8db49943ccb201c1b1b283e9d0a630519fac7} + github.com/misskey-dev/summaly/d2a3e07205c3c9769bc5a7b42031c8884b5a25c8: + resolution: {tarball: https://codeload.github.com/misskey-dev/summaly/tar.gz/d2a3e07205c3c9769bc5a7b42031c8884b5a25c8} name: summaly version: 4.0.2 dependencies: cheerio: 1.0.0-rc.12 escape-regexp: 0.0.1 - got: 12.6.0 + got: 12.6.1 html-entities: 2.3.2 iconv-lite: 0.6.3 jschardet: 3.0.0