summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordakkar <dakkar@thenautilus.net>2024-11-22 12:29:04 +0000
committerdakkar <dakkar@thenautilus.net>2024-11-22 12:29:04 +0000
commitbc816cb166d907d38eb096a02c5f4f57d9a2f1a0 (patch)
treea0e6b1dfeed8aa2b0543846eb65b8aae0ce631ad
parentbetter wording for moderator inactivity messages (diff)
parentRelease: 2024.11.0 (diff)
downloadsharkey-bc816cb166d907d38eb096a02c5f4f57d9a2f1a0.tar.gz
sharkey-bc816cb166d907d38eb096a02c5f4f57d9a2f1a0.tar.bz2
sharkey-bc816cb166d907d38eb096a02c5f4f57d9a2f1a0.zip
Merge tag '2024.11.0' into feature/2024.10
-rw-r--r--.devcontainer/devcontainer.json2
-rw-r--r--.gitignore2
-rw-r--r--.node-version2
-rw-r--r--CHANGELOG.md76
-rw-r--r--CONTRIBUTING.md46
-rw-r--r--Dockerfile2
-rw-r--r--SECURITY.md7
-rw-r--r--locales/ar-SA.yml1
-rw-r--r--locales/bn-BD.yml1
-rw-r--r--locales/ca-ES.yml294
-rw-r--r--locales/cs-CZ.yml1
-rw-r--r--locales/de-DE.yml191
-rw-r--r--locales/en-US.yml43
-rw-r--r--locales/es-ES.yml19
-rw-r--r--locales/fr-FR.yml201
-rw-r--r--locales/hu-HU.yml2
-rw-r--r--locales/id-ID.yml29
-rw-r--r--locales/index.d.ts138
-rw-r--r--locales/index.js1
-rw-r--r--locales/it-IT.yml86
-rw-r--r--locales/ja-JP.yml45
-rw-r--r--locales/ja-KS.yml93
-rw-r--r--locales/ko-GS.yml5
-rw-r--r--locales/ko-KR.yml42
-rw-r--r--locales/lo-LA.yml1
-rw-r--r--locales/nl-NL.yml1
-rw-r--r--locales/no-NO.yml1
-rw-r--r--locales/pl-PL.yml27
-rw-r--r--locales/pt-PT.yml1
-rw-r--r--locales/ro-RO.yml1
-rw-r--r--locales/ru-RU.yml9
-rw-r--r--locales/sk-SK.yml1
-rw-r--r--locales/sv-SE.yml125
-rw-r--r--locales/th-TH.yml80
-rw-r--r--locales/tr-TR.yml1
-rw-r--r--locales/uk-UA.yml1
-rw-r--r--locales/uz-UZ.yml1
-rw-r--r--locales/vi-VN.yml4
-rw-r--r--locales/zh-CN.yml128
-rw-r--r--locales/zh-TW.yml44
-rw-r--r--package.json18
-rw-r--r--packages/backend/migration/1729333924409-signinRequiredForShowContents.js16
-rw-r--r--packages/backend/migration/1729486255072-makeNotesHiddenBefore.js18
-rw-r--r--packages/backend/package.json66
-rw-r--r--packages/backend/src/core/AbuseReportNotificationService.ts6
-rw-r--r--packages/backend/src/core/AnnouncementService.ts2
-rw-r--r--packages/backend/src/core/NoteCreateService.ts17
-rw-r--r--packages/backend/src/core/QueueService.ts18
-rw-r--r--packages/backend/src/core/SystemWebhookService.ts33
-rw-r--r--packages/backend/src/core/UserWebhookService.ts14
-rw-r--r--packages/backend/src/core/UtilityService.ts1
-rw-r--r--packages/backend/src/core/WebAuthnService.ts4
-rw-r--r--packages/backend/src/core/WebhookTestService.ts68
-rw-r--r--packages/backend/src/core/activitypub/ApInboxService.ts1
-rw-r--r--packages/backend/src/core/activitypub/ApRendererService.ts3
-rw-r--r--packages/backend/src/core/activitypub/ApRequestService.ts8
-rw-r--r--packages/backend/src/core/activitypub/misc/contexts.ts3
-rw-r--r--packages/backend/src/core/activitypub/models/ApNoteService.ts15
-rw-r--r--packages/backend/src/core/activitypub/models/ApPersonService.ts15
-rw-r--r--packages/backend/src/core/activitypub/models/ApQuestionService.ts2
-rw-r--r--packages/backend/src/core/activitypub/type.ts3
-rw-r--r--packages/backend/src/core/entities/NoteEntityService.ts95
-rw-r--r--packages/backend/src/core/entities/UserEntityService.ts3
-rw-r--r--packages/backend/src/misc/sql-like-escape.ts2
-rw-r--r--packages/backend/src/models/AbuseUserReport.ts4
-rw-r--r--packages/backend/src/models/User.ts17
-rw-r--r--packages/backend/src/models/json-schema/user.ts12
-rw-r--r--packages/backend/src/server/ActivityPubServerService.ts23
-rw-r--r--packages/backend/src/server/api/GetterService.ts11
-rw-r--r--packages/backend/src/server/api/endpoints/admin/accounts/delete.ts2
-rw-r--r--packages/backend/src/server/api/endpoints/admin/announcements/create.ts5
-rw-r--r--packages/backend/src/server/api/endpoints/admin/avatar-decorations/create.ts57
-rw-r--r--packages/backend/src/server/api/endpoints/admin/avatar-decorations/list.ts3
-rw-r--r--packages/backend/src/server/api/endpoints/admin/delete-account.ts4
-rw-r--r--packages/backend/src/server/api/endpoints/ap/show.ts1
-rw-r--r--packages/backend/src/server/api/endpoints/i/update.ts12
-rw-r--r--packages/backend/src/server/api/endpoints/notes/show.ts17
-rw-r--r--packages/backend/src/server/api/endpoints/users/notes.ts6
-rw-r--r--packages/backend/src/server/web/ClientServerService.ts65
-rw-r--r--packages/backend/src/server/web/views/announcement.pug21
-rw-r--r--packages/backend/src/server/web/views/base.pug6
-rw-r--r--packages/backend/test-federation/.config/example.default.yml7
-rw-r--r--packages/backend/test-federation/test/utils.ts2
-rw-r--r--packages/backend/test/e2e/fetch-resource.ts2
-rw-r--r--packages/backend/test/unit/WebhookTestService.ts16
-rw-r--r--packages/frontend-embed/package.json32
-rw-r--r--packages/frontend-embed/src/boot.ts22
-rw-r--r--packages/frontend-shared/package.json10
-rw-r--r--packages/frontend/package.json78
-rw-r--r--packages/frontend/src/_boot_.ts2
-rw-r--r--packages/frontend/src/account.ts87
-rw-r--r--packages/frontend/src/boot/common.ts29
-rw-r--r--packages/frontend/src/boot/main-boot.ts58
-rw-r--r--packages/frontend/src/components/MkAbuseReport.vue4
-rw-r--r--packages/frontend/src/components/MkAnnouncementDialog.vue4
-rw-r--r--packages/frontend/src/components/MkAntennaEditor.vue2
-rw-r--r--packages/frontend/src/components/MkAuthConfirm.stories.impl.ts7
-rw-r--r--packages/frontend/src/components/MkAuthConfirm.vue450
-rw-r--r--packages/frontend/src/components/MkCaptcha.vue4
-rw-r--r--packages/frontend/src/components/MkChannelPreview.vue3
-rw-r--r--packages/frontend/src/components/MkContainer.vue24
-rw-r--r--packages/frontend/src/components/MkCropperDialog.vue2
-rw-r--r--packages/frontend/src/components/MkCustomEmojiDetailedDialog.vue2
-rw-r--r--packages/frontend/src/components/MkDateSeparatedList.vue8
-rw-r--r--packages/frontend/src/components/MkDialog.vue4
-rw-r--r--packages/frontend/src/components/MkDrive.vue50
-rw-r--r--packages/frontend/src/components/MkEmbedCodeGenDialog.vue2
-rw-r--r--packages/frontend/src/components/MkEmojiPicker.section.vue2
-rw-r--r--packages/frontend/src/components/MkEmojiPicker.vue4
-rw-r--r--packages/frontend/src/components/MkExtensionInstaller.vue2
-rw-r--r--packages/frontend/src/components/MkFoldableSection.vue52
-rw-r--r--packages/frontend/src/components/MkFolder.vue38
-rw-r--r--packages/frontend/src/components/MkFollowButton.vue14
-rw-r--r--packages/frontend/src/components/MkFormDialog.vue2
-rw-r--r--packages/frontend/src/components/MkInput.vue8
-rw-r--r--packages/frontend/src/components/MkMediaVideo.vue43
-rw-r--r--packages/frontend/src/components/MkModalWindow.vue10
-rw-r--r--packages/frontend/src/components/MkNote.vue38
-rw-r--r--packages/frontend/src/components/MkNoteDetailed.vue42
-rw-r--r--packages/frontend/src/components/MkNotificationSelectWindow.vue2
-rw-r--r--packages/frontend/src/components/MkObjectView.value.vue10
-rw-r--r--packages/frontend/src/components/MkPageWindow.vue10
-rw-r--r--packages/frontend/src/components/MkPoll.vue8
-rw-r--r--packages/frontend/src/components/MkPopupMenu.vue2
-rw-r--r--packages/frontend/src/components/MkPostForm.vue40
-rw-r--r--packages/frontend/src/components/MkPostFormAttaches.vue8
-rw-r--r--packages/frontend/src/components/MkPostFormDialog.vue16
-rw-r--r--packages/frontend/src/components/MkRadio.vue8
-rw-r--r--packages/frontend/src/components/MkReactionsViewer.details.vue3
-rw-r--r--packages/frontend/src/components/MkSelect.vue82
-rw-r--r--packages/frontend/src/components/MkSignin.password.vue12
-rw-r--r--packages/frontend/src/components/MkSignupDialog.form.vue4
-rw-r--r--packages/frontend/src/components/MkSignupDialog.vue12
-rw-r--r--packages/frontend/src/components/MkSuperMenu.vue33
-rw-r--r--packages/frontend/src/components/MkTimeline.vue6
-rw-r--r--packages/frontend/src/components/MkTokenGenerateWindow.vue2
-rw-r--r--packages/frontend/src/components/MkUrlPreview.vue10
-rw-r--r--packages/frontend/src/components/MkUserAnnouncementEditDialog.vue18
-rw-r--r--packages/frontend/src/components/MkUserSelectDialog.vue2
-rw-r--r--packages/frontend/src/components/MkUsersTooltip.vue4
-rw-r--r--packages/frontend/src/components/MkWidgets.vue2
-rw-r--r--packages/frontend/src/components/MkWindow.vue13
-rw-r--r--packages/frontend/src/components/form/suspense.vue6
-rw-r--r--packages/frontend/src/components/global/MkAd.vue6
-rw-r--r--packages/frontend/src/components/global/MkCustomEmoji.vue29
-rw-r--r--packages/frontend/src/components/global/MkMfm.ts4
-rw-r--r--packages/frontend/src/components/global/MkPageHeader.tabs.vue27
-rw-r--r--packages/frontend/src/directives/adaptive-bg.ts12
-rw-r--r--packages/frontend/src/directives/adaptive-border.ts12
-rw-r--r--packages/frontend/src/directives/panel.ts12
-rw-r--r--packages/frontend/src/nirax.ts12
-rw-r--r--packages/frontend/src/os.ts37
-rw-r--r--packages/frontend/src/pages/admin-user.vue1
-rw-r--r--packages/frontend/src/pages/admin/index.vue2
-rw-r--r--packages/frontend/src/pages/admin/moderation.vue21
-rw-r--r--packages/frontend/src/pages/admin/users.vue6
-rw-r--r--packages/frontend/src/pages/announcement.vue6
-rw-r--r--packages/frontend/src/pages/announcements.vue4
-rw-r--r--packages/frontend/src/pages/auth.vue2
-rw-r--r--packages/frontend/src/pages/avatar-decoration-edit-dialog.vue220
-rw-r--r--packages/frontend/src/pages/avatar-decorations.vue172
-rw-r--r--packages/frontend/src/pages/clip.vue14
-rw-r--r--packages/frontend/src/pages/custom-emojis-manager.vue26
-rw-r--r--packages/frontend/src/pages/emoji-edit-dialog.vue33
-rw-r--r--packages/frontend/src/pages/emojis.emoji.vue28
-rw-r--r--packages/frontend/src/pages/follow-requests.vue47
-rw-r--r--packages/frontend/src/pages/invite.vue8
-rw-r--r--packages/frontend/src/pages/list.vue6
-rw-r--r--packages/frontend/src/pages/lookup.vue2
-rw-r--r--packages/frontend/src/pages/miauth.vue145
-rw-r--r--packages/frontend/src/pages/my-clips/index.vue6
-rw-r--r--packages/frontend/src/pages/my-lists/list.vue4
-rw-r--r--packages/frontend/src/pages/not-found.vue2
-rw-r--r--packages/frontend/src/pages/note.vue17
-rw-r--r--packages/frontend/src/pages/oauth.vue111
-rw-r--r--packages/frontend/src/pages/page-editor/els/page-editor.el.image.vue7
-rw-r--r--packages/frontend/src/pages/page-editor/els/page-editor.el.note.vue15
-rw-r--r--packages/frontend/src/pages/page-editor/els/page-editor.el.section.vue16
-rw-r--r--packages/frontend/src/pages/page-editor/els/page-editor.el.text.vue9
-rw-r--r--packages/frontend/src/pages/page-editor/page-editor.blocks.vue2
-rw-r--r--packages/frontend/src/pages/registry.keys.vue2
-rw-r--r--packages/frontend/src/pages/reversi/game.setting.vue6
-rw-r--r--packages/frontend/src/pages/role.vue24
-rw-r--r--packages/frontend/src/pages/scratchpad.vue6
-rw-r--r--packages/frontend/src/pages/settings/2fa.qrdialog.vue7
-rw-r--r--packages/frontend/src/pages/settings/2fa.vue4
-rw-r--r--packages/frontend/src/pages/settings/accounts.vue22
-rw-r--r--packages/frontend/src/pages/settings/apps.vue3
-rw-r--r--packages/frontend/src/pages/settings/avatar-decoration.decoration.vue7
-rw-r--r--packages/frontend/src/pages/settings/avatar-decoration.dialog.vue12
-rw-r--r--packages/frontend/src/pages/settings/navbar.vue4
-rw-r--r--packages/frontend/src/pages/settings/notifications.notification-config.vue57
-rw-r--r--packages/frontend/src/pages/settings/notifications.vue16
-rw-r--r--packages/frontend/src/pages/settings/privacy.vue136
-rw-r--r--packages/frontend/src/pages/settings/webhook.edit.vue2
-rw-r--r--packages/frontend/src/pages/settings/webhook.new.vue2
-rw-r--r--packages/frontend/src/pages/timeline.vue8
-rw-r--r--packages/frontend/src/pages/user/home.vue2
-rw-r--r--packages/frontend/src/pages/user/index.vue18
-rw-r--r--packages/frontend/src/pizzax.ts12
-rw-r--r--packages/frontend/src/router/definition.ts4
-rw-r--r--packages/frontend/src/router/main.ts8
-rw-r--r--packages/frontend/src/scripts/check-word-mute.ts5
-rw-r--r--packages/frontend/src/scripts/device-kind.ts24
-rw-r--r--packages/frontend/src/scripts/form.ts16
-rw-r--r--packages/frontend/src/scripts/fullscreen.ts46
-rw-r--r--packages/frontend/src/scripts/get-bg-color.ts18
-rw-r--r--packages/frontend/src/scripts/misskey-api.ts6
-rw-r--r--packages/frontend/src/scripts/please-login.ts14
-rw-r--r--packages/frontend/src/scripts/select-file.ts6
-rw-r--r--packages/frontend/src/scripts/shuffle.ts5
-rw-r--r--packages/frontend/src/scripts/upload.ts8
-rw-r--r--packages/frontend/src/server-context.ts23
-rw-r--r--packages/frontend/src/store.ts18
-rw-r--r--packages/frontend/src/style.scss15
-rw-r--r--packages/frontend/src/types/post-form.ts22
-rw-r--r--packages/frontend/src/ui/_common_/navbar.vue67
-rw-r--r--packages/frontend/src/ui/_common_/statusbar-rss.vue2
-rw-r--r--packages/frontend/src/ui/deck/deck-store.ts1
-rw-r--r--packages/frontend/src/ui/deck/tl-column.vue12
-rw-r--r--packages/frontend/src/widgets/WidgetPhotos.vue4
-rw-r--r--packages/frontend/src/widgets/WidgetRss.vue2
-rw-r--r--packages/frontend/src/widgets/WidgetRssTicker.vue2
-rw-r--r--packages/misskey-bubble-game/package.json12
-rw-r--r--packages/misskey-js/etc/misskey-js.api.md7
-rw-r--r--packages/misskey-js/generator/package.json6
-rw-r--r--packages/misskey-js/package.json18
-rw-r--r--packages/misskey-js/src/autogen/endpoint.ts3
-rw-r--r--packages/misskey-js/src/autogen/entities.ts1
-rw-r--r--packages/misskey-js/src/autogen/types.ts26
-rw-r--r--packages/misskey-js/src/streaming.ts2
-rw-r--r--packages/misskey-reversi/package.json10
-rw-r--r--packages/sw/package.json4
-rw-r--r--pnpm-lock.yaml5409
234 files changed, 6584 insertions, 4606 deletions
diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json
index fbf959d449..713c2e5fdd 100644
--- a/.devcontainer/devcontainer.json
+++ b/.devcontainer/devcontainer.json
@@ -5,7 +5,7 @@
"workspaceFolder": "/workspace",
"features": {
"ghcr.io/devcontainers/features/node:1": {
- "version": "20.16.0"
+ "version": "22.11.0"
},
"ghcr.io/devcontainers-contrib/features/corepack:1": {}
},
diff --git a/.gitignore b/.gitignore
index aba71c5876..b07d195a3f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -72,6 +72,8 @@ misskey-assets
# Vite temporary files
vite.config.js.timestamp-*
vite.config.ts.timestamp-*
+vite.config.local-dev.js.timestamp-*
+vite.config.local-dev.ts.timestamp-*
# blender backups
*.blend1
diff --git a/.node-version b/.node-version
index 8ce7030825..7af24b7ddb 100644
--- a/.node-version
+++ b/.node-version
@@ -1 +1 @@
-20.16.0
+22.11.0
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 7e32576d45..2dbc457710 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,79 @@
+## 2024.11.0
+
+### Note
+- Node.js 20.xã¯éžæŽ¨å¥¨ã«ãªã‚Šã¾ã—ãŸã€‚Node.js 22.x (LTS)ã®åˆ©ç”¨ã‚’推奨ã—ã¾ã™ã€‚
+ - ãªãŠã€Node.js 23.xã¯å¯¾å¿œã—ã¦ã„ã¾ã›ã‚“。
+- Dockerã®Node.jsãŒ22.11.0ã«æ›´æ–°ã•れã¾ã—ãŸ
+
+### General
+- Feat: コンテンツã®è¡¨ç¤ºã«ãƒ­ã‚°ã‚¤ãƒ³ã‚’å¿…é ˆã«ã§ãるよã†ã«
+- Feat: éŽåŽ»ã®ãƒŽãƒ¼ãƒˆã‚’éžå…¬é–‹åŒ–/フォロワーã®ã¿è¡¨ç¤ºå¯èƒ½ã«ã§ãるよã†ã«
+- Enhance: ä¾å­˜é–¢ä¿‚ã®æ›´æ–°
+- Enhance: l10nã®æ›´æ–°
+- Fix: ãŠçŸ¥ã‚‰ã›ä½œæˆæ™‚ã«ç”»åƒURL入力欄を空欄ã«å¤‰æ›´ã§ããªã„ã®ã‚’修正 ( #14976 )
+
+### Client
+- Enhance: Bull Dashboardã§Relationship Queueã®çŠ¶æ…‹ã‚‚ç¢ºèªã§ãるよã†ã«
+ (Cherry-picked from https://github.com/MisskeyIO/misskey/pull/751)
+- Enhance: ドライブã§ã‚½ãƒ¼ãƒˆãŒã§ãるよã†ã«
+- Enhance: アイコンデコレーション管ç†ç”»é¢ã®æ”¹å–„
+- Enhance: 「å˜ãªã‚‹ãƒ©ãƒƒã‚­ãƒ¼ã€ã®å–å¾—æ¡ä»¶ã‚’変更
+- Enhance: 投稿フォームã§Escキーを押ã—ãŸã¨ãIME入力中ãªã‚‰ãƒ•ォームを閉ã˜ãªã„よã†ã«ï¼ˆ #10866 )
+- Enhance: MiAuth, OAuthã®èªå¯ç”»é¢ã®æ”¹å–„
+ - ã©ã®ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã§èªè¨¼ã—よã†ã¨ã—ã¦ã„ã‚‹ã®ã‹ãŒã‚ã‹ã‚‹ã‚ˆã†ã«
+ - èªè¨¼ã™ã‚‹ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã‚’切り替ãˆã‚‰ã‚Œã‚‹ã‚ˆã†ã«
+- Enhance: Self-XSS防止用ã®è­¦å‘Šã‚’追加
+- Enhance: カタルーニャ語 (ca-ES) ã«å¯¾å¿œ
+- Enhance: 個別ãŠçŸ¥ã‚‰ã›ãƒšãƒ¼ã‚¸ã§ã¯Metaタグを出力ã™ã‚‹ã‚ˆã†ã«
+- Enhance: ノート詳細画é¢ã«ãƒ­ãƒ¼ãƒ«ã®ãƒãƒƒã‚¸ã‚’表示
+- Enhance: éŽåŽ»ã«é€ä¿¡ã—ãŸãƒ•ォローリクエストを確èªã§ãるよã†ã«
+ (Based on https://activitypub.software/TransFem-org/Sharkey/-/merge_requests/663)
+- Enhance: サイドãƒãƒ¼ã‚’ç°¡å˜ã«å±•開・折りãŸãŸã¿ã§ãるよã†ã« ( #14981 )
+- Enhance: リノートメニューã«ã€ŒãƒªãƒŽãƒ¼ãƒˆã®è©³ç´°ã€ã‚’追加
+- Enhance: éžãƒ­ã‚°ã‚¤ãƒ³çŠ¶æ…‹ã§Misskeyã‚’é–‹ã„ãŸéš›ã®ãƒ‘フォーマンスをå‘上
+- Fix: 通知ã®ç¯„囲指定ã®è¨­å®šé …ç›®ãŒå¿…è¦ãªã„通知設定ã§ã‚‚範囲指定ã®è¨­å®šãŒã§ã¦ã„ã‚‹å•題を修正
+- Fix: TurnstileãŒå¤±æ•—・期é™åˆ‡ã‚Œã—ãŸéš›ã«ã‚‚æˆåŠŸæ‰±ã„ã¨ãªã£ã¦ã—ã¾ã†å•題を修正
+ (Cherry-picked from https://github.com/MisskeyIO/misskey/pull/768)
+- Fix: デッキã®ã‚¿ã‚¤ãƒ ãƒ©ã‚¤ãƒ³ã‚«ãƒ©ãƒ ã§ã€Œã‚»ãƒ³ã‚·ãƒ†ã‚£ãƒ–ãªãƒ•ァイルをå«ã‚€ãƒŽãƒ¼ãƒˆã‚’表示ã€è¨­å®šãŒä½¿ç”¨ã§ããªã‹ã£ãŸå•題を修正
+- Fix: Encode RSS urls with escape sequences before fetching allowing query parameters to be used
+- Fix: リンク切れを修正
+= Fix: ノート投稿ボタンã«ãƒ›ãƒãƒ¼æ™‚ã®ã‚¹ã‚¿ã‚¤ãƒ«ãŒé©ç”¨ã•れã¦ã„ãªã„ã®ã‚’修正
+ (Cherry-picked from https://github.com/taiyme/misskey/pull/305)
+- Fix: メールアドレス登録有効化時ã®ã€Œå®Œäº†ã€ãƒ€ã‚¤ã‚¢ãƒ­ã‚°ãƒœãƒƒã‚¯ã‚¹ã®è¡¨ç¤ºæ¡ä»¶ã‚’修正
+- Fix: ç”»é¢å¹…ãŒç‹­ã„環境ã§ãƒ‡ã‚¶ã‚¤ãƒ³ãŒå´©ã‚Œã‚‹å•題を修正
+ (Cherry-picked from https://github.com/MisskeyIO/misskey/pull/815)
+- Fix: TypeScriptã®åž‹ãƒã‚§ãƒƒã‚¯å¯¾è±¡ãƒ•ァイルをé™å®šã—ã¦ãƒ“ルドを高速化ã™ã‚‹ã‚ˆã†ã«
+ (Cherry-picked from https://activitypub.software/TransFem-org/Sharkey/-/merge_requests/725)
+
+### Server
+- Enhance: Dockerã®Node.jsã‚’22.11.0ã«æ›´æ–°
+- Enhance: èµ·å‹•å‰ã®ç–Žé€šãƒã‚§ãƒƒã‚¯ã§ã€DBã¨ãƒ¡ã‚¤ãƒ³ä»¥å¤–ã®Redisã®ç–Žé€šç¢ºèªã‚‚行ã†ã‚ˆã†ã«
+ (Based on https://activitypub.software/TransFem-org/Sharkey/-/merge_requests/588)
+ (Cherry-picked from https://activitypub.software/TransFem-org/Sharkey/-/merge_requests/715)
+- Enhance: リモートユーザーã®ç…§ä¼šã‚’オリジナルã«ãƒªãƒ€ã‚¤ãƒ¬ã‚¯ãƒˆã™ã‚‹ã‚ˆã†ã«
+- Fix: sharedInboxãŒç„¡ã„Actorã«ç´ã¥ãリモートユーザーを照会ã§ããªã„
+- Fix: Aproving request from GtS appears with some delay
+- Fix: フォロワーã¸ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã®çµµæ–‡å­—ã‚’emojisã«å«ã‚るよã†ã«
+- Fix: Nested proxy requestsを検出ã—ãŸéš›ã«ãƒ–ロックã™ã‚‹ã‚ˆã†ã«
+ [ghsa-gq5q-c77c-v236](https://github.com/misskey-dev/misskey/security/advisories/ghsa-gq5q-c77c-v236)
+- Fix: 招待コードã®ç™ºè¡Œå¯èƒ½ãªæ®‹ã‚Šæ•°ç®—出ã«ä½¿ç”¨ã™ã¹ãロールãƒãƒªã‚·ãƒ¼ã®å€¤ãŒé•ã†å•題を修正
+ (Cherry-picked from https://activitypub.software/TransFem-org/Sharkey/-/merge_requests/706)
+- Fix: 連åˆã¸ã®é…信時ã«ã€acctã®å¤§å°æ–‡å­—ãŒåŒºåˆ¥ã•れã¦ã—ã¾ã„æ­£ã—ãメンションãŒå‡¦ç†ã•れãªã„ã“ã¨ãŒã‚ã‚‹å•題を修正
+ (Cherry-picked from https://activitypub.software/TransFem-org/Sharkey/-/merge_requests/711)
+- Fix: ローカルユーザーã¸ã®ãƒ¡ãƒ³ã‚·ãƒ§ãƒ³ã‚’å«ã‚€ãƒŽãƒ¼ãƒˆãŒé€£åˆã•ã‚Œã‚‹éš›ã«æ­£ã—ã„URLã«å¤‰æ›ã•れãªã„ã“ã¨ãŒã‚ã‚‹å•題を修正
+ (Cherry-picked from https://activitypub.software/TransFem-org/Sharkey/-/merge_requests/712)
+- Fix: FTT無効時ã«ãƒ¦ãƒ¼ã‚¶ãƒ¼ãƒªã‚¹ãƒˆã‚¿ã‚¤ãƒ ãƒ©ã‚¤ãƒ³ãŒä½¿ç”¨ã§ããªã„å•題を修正
+ (Cherry-picked from https://activitypub.software/TransFem-org/Sharkey/-/merge_requests/709)
+- Fix: User Webhookテスト機能ã®Mock Payloadを修正
+- Fix: アカウント削除ã®ãƒ¢ãƒ‡ãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³ãƒ­ã‚°ãŒå‹•作ã—ã¦ã„ãªã„ã®ã‚’修正 (#14996)
+- Fix: ãƒªãƒŽãƒ¼ãƒˆãƒŸãƒ¥ãƒ¼ãƒˆãŒæ–°è¦æŠ•稿通知ã«å¯¾ã—ã¦ä½œç”¨ã—ã¦ã„ãªã‹ã£ãŸå•題を修正
+- Fix: Inboxã®å‡¦ç†ã§ç”Ÿã˜ã‚‹ã‚¨ãƒ©ãƒ¼ã‚’誤ã£ã¦Activityã¨ã—ã¦å‡¦ç†ã™ã‚‹ã“ã¨ãŒã‚ã‚‹å•題を修正
+ (Cherry-picked from https://activitypub.software/TransFem-org/Sharkey/-/merge_requests/730)
+- Fix: セキュリティã«é–¢ã™ã‚‹ä¿®æ­£
+
+### Misskey.js
+- Fix: StreamåˆæœŸåŒ–時ã€åˆ¥é€”WebSocketを指定ã™ã‚‹å ´åˆã®åž‹å®šç¾©ã‚’修正
+
## 2024.10.1
### Note
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index e774e4b8c1..11b056b318 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -62,9 +62,29 @@ Thank you for your PR! Before creating a PR, please check the following:
Thanks for your cooperation 🤗
+### Additional things for ActivityPub payload changes
+*This section is specific to misskey-dev implementation. Other fork or implementation may take different way. A significant difference is that non-"misskey-dev" extension is not described in the misskey-hub's document.*
+
+If PR includes changes to ActivityPub payload, please reflect it in [misskey-hub's document](https://github.com/misskey-dev/misskey-hub-next/blob/master/content/ns.md) by sending PR.
+
+The name of purporsed extension property (referred as "extended property" in later) to ActivityPub shall be prefixed by `_misskey_`. (i.e. `_misskey_quote`)
+
+The extended property in `packages/backend/src/core/activitypub/type.ts` **must** be declared as optional because ActivityPub payloads that comes from older Misskey or other implementation may not contain it.
+
+The extended property must be included in the context definition. Context is defined in `packages/backend/src/core/activitypub/misc/contexts.ts`.
+The key shall be same as the name of extended property, and the value shall be same as "short IRI".
+
+"Short IRI" is defined in misskey-hub's document, but usually takes form of `misskey:<name of extended property>`. (i.e. `misskey:_misskey_quote`)
+
+One should not add property that has defined before by other implementation, or add custom variant value to "well-known" property.
+
## Reviewers guide
Be willing to comment on the good points and not just the things you want fixed 💯
+読んã§ãŠãã¨ã„ã„ã‚„ã¤
+- https://blog.lacolaco.net/posts/1e2cf439b3c2/
+- https://konifar-zatsu.hatenadiary.jp/entry/2024/11/05/192421
+
### Review perspective
- Scope
- Are the goals of the PR clear?
@@ -79,6 +99,29 @@ Be willing to comment on the good points and not just the things you want fixed
- Are there any omissions or gaps?
- Does it check for anomalies?
+## Security Advisory
+### For reporter
+Thank you for your reporting!
+
+If you can also create a patch to fix the vulnerability, please create a PR on the private fork.
+
+> [!note]
+> There is a GitHub bug that prevents merging if a PR not following the develop branch of upstream, so please keep follow the develop branch.
+
+### For misskey-dev member
+修正PRãŒdevelopã«è¿½å¾“ã•れã¦ã„ãªã„ã¨ãƒžãƒ¼ã‚¸ã§ããªã„ã®ã§ã€ãƒžãƒ¼ã‚¸ã§ããªã‹ã£ãŸã‚‰
+
+> Could you merge or rebase onto upstream develop branch?
+
+ãªã©ã¨ä¼ãˆã‚‹ã€‚
+
+## Deploy
+The `/deploy` command by issue comment can be used to deploy the contents of a PR to the preview environment.
+```
+/deploy sha=<commit hash>
+```
+An actual domain will be assigned so you can test the federation.
+
## Merge
## Release
@@ -107,7 +150,8 @@ You can improve our translations with your Crowdin account.
Your changes in Crowdin are automatically submitted as a PR (with the title "New Crowdin translations") to the repository.
The owner [@syuilo](https://github.com/syuilo) merges the PR into the develop branch before the next release.
-If your language is not listed in Crowdin, please open an issue.
+If your language is not listed in Crowdin, please open an issue. We will add it to Crowdin.
+For newly added languages, once the translation progress per language exceeds 70%, it will be officially introduced into Misskey and made available to users.
![Crowdin](https://d322cqt584bo4o.cloudfront.net/misskey/localized.svg)
diff --git a/Dockerfile b/Dockerfile
index abee7fb098..8f7f8c0805 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,6 +1,6 @@
# syntax = docker/dockerfile:1.4
-ARG NODE_VERSION=20.16.0-alpine3.20
+ARG NODE_VERSION=22.11.0-alpine3.20
FROM node:${NODE_VERSION} as build
diff --git a/SECURITY.md b/SECURITY.md
index cfc0614dd6..8d3d44db41 100644
--- a/SECURITY.md
+++ b/SECURITY.md
@@ -7,3 +7,10 @@ This will allow us to assess the risk, and make a fix available before we add a
bug report to the GitLab repository.
Thanks for helping make Sharkey safe for everyone.
+
+## When create a patch
+
+If you can also create a patch to fix the vulnerability, please create a PR on the private fork.
+
+> [!note]
+> There is a GitHub bug that prevents merging if a PR not following the develop branch of upstream, so please keep follow the develop branch.
diff --git a/locales/ar-SA.yml b/locales/ar-SA.yml
index de24ad4bb9..2f1b391b53 100644
--- a/locales/ar-SA.yml
+++ b/locales/ar-SA.yml
@@ -343,7 +343,6 @@ enableLocalTimeline: "ØªÙØ¹ÙŠÙ„ الخيط المحلي"
enableGlobalTimeline: "ØªÙØ¹ÙŠÙ„ الخيط الزمني الشامل"
disablingTimelinesInfo: "سيتمكن المديرون والمشرÙون من الوصول إلى كل الخيوط الزمنية حتى وإن لم ØªÙØ¹Ù‘Ù„."
registration: "إنشاء حساب"
-enableRegistration: "ØªÙØ¹ÙŠÙ„ إنشاء الحسابات الجديدة"
invite: "دعوة"
driveCapacityPerLocalAccount: "حصة التخزين لكل مستخدم محلي"
driveCapacityPerRemoteAccount: "حصة التخزين لكل مستخدم بعيد"
diff --git a/locales/bn-BD.yml b/locales/bn-BD.yml
index 0e761b0743..6cd577b4a9 100644
--- a/locales/bn-BD.yml
+++ b/locales/bn-BD.yml
@@ -339,7 +339,6 @@ enableLocalTimeline: "সà§à¦¥à¦¾à¦¨à§€à§Ÿ টাইমলাইন চালà§
enableGlobalTimeline: "গà§à¦²à§‹à¦¬à¦¾à¦² টাইমলাইন চালৠকরà§à¦¨"
disablingTimelinesInfo: "আপনি à¦à¦‡ টাইমলাইনগà§à¦²à¦¿ বনà§à¦§ করলেও পà§à¦°à¦¶à¦¾à¦¸à¦• à¦à¦¬à¦‚ মডারেটররা à¦à¦‡ টাইমলাইনগà§à¦²à¦¿ বà§à¦¯à¦¾à¦¬à¦¹à¦¾à¦° করতে পারবে"
registration: "নিবনà§à¦§à¦¨"
-enableRegistration: "নতà§à¦¨ বà§à¦¯à¦¾à¦¬à¦¹à¦¾à¦°à¦•ারী নিবনà§à¦§à¦¨ চালৠকরà§à¦¨"
invite: "আমনà§à¦¤à§à¦°à¦£"
driveCapacityPerLocalAccount: "পà§à¦°à¦¤à§à¦¯à§‡à¦• সà§à¦¥à¦¾à¦¨à§€à§Ÿ বà§à¦¯à¦¾à¦¬à¦¹à¦¾à¦°à¦•ারীর জনà§à¦¯ ডà§à¦°à¦¾à¦‡à¦­à§‡à¦° জায়গা"
driveCapacityPerRemoteAccount: "পà§à¦°à¦¤à§à¦¯à§‡à¦• রিমোট বà§à¦¯à¦¾à¦¬à¦¹à¦¾à¦°à¦•ারীর জনà§à¦¯ ডà§à¦°à¦¾à¦‡à¦­à§‡à¦° জায়গা"
diff --git a/locales/ca-ES.yml b/locales/ca-ES.yml
index b9f3fecc76..1aca3390e6 100644
--- a/locales/ca-ES.yml
+++ b/locales/ca-ES.yml
@@ -2,42 +2,43 @@
_lang_: "Català"
headlineMisskey: "Una xarxa connectada per notes"
introMisskey: "Benvingut! Misskey és un servei de microblogging descentralitzat de codi obert.\nCrea \"notes\" per compartir els teus pensaments amb tots els que t'envolten. 📡\nAmb \"reaccions\", també pots expressar ràpidament els teus sentiments sobre les notes de tothom. ðŸ‘\nExplorem un món nou! 🚀"
-poweredByMisskeyDescription: "{name} És un del serveis (anomenats instàncies de Misskey) que utilitzen la plataforma de codi obert <b>Misskey</b>."
+poweredByMisskeyDescription: "{name} És un dels serveis (anomenats instàncies de Misskey) que utilitzen la plataforma de codi obert <b>Misskey</b>."
monthAndDay: "{day}/{month}"
search: "Cercar"
notifications: "Notificacions"
username: "Nom d'usuari"
password: "Contrasenya"
-initialPasswordForSetup: "Contrasenya inicial per la configuració inicial"
+initialPasswordForSetup: "Contrasenya inicial per fer la primera configuració "
initialPasswordIsIncorrect: "La contrasenya no és correcta."
-forgotPassword: "Contrasenya oblidada"
-fetchingAsApObject: "Cercant en el Fediverse..."
+initialPasswordForSetupDescription: "Fes servir la contrasenya que has fet servir al fitxer de configuració, si tu mateix has instal·lat Misskey.\nSi fas servir una empresa d'allotjament de Misskey, fes servir la contrasenya que t'han donat.\nSi no has posat cap contrasenya deixar l'espai en blanc."
+forgotPassword: "Restableix la contrasenya "
+fetchingAsApObject: "Cercant al Fediverse..."
ok: "OK"
-gotIt: "Ho he entès!"
+gotIt: "D'acord "
cancel: "Cancel·lar"
noThankYou: "No, gràcies"
enterUsername: "Introdueix el teu nom d'usuari"
-renotedBy: "Impulsat per {usuari}"
+renotedBy: "Impulsat per {user}"
noNotes: "Cap nota"
noNotifications: "Cap notificació"
-instance: "Servidor"
+instance: "Instància "
settings: "Preferències"
-notificationSettings: "Paràmetres de notificacions"
+notificationSettings: "Configurar les notificacions"
basicSettings: "Configuració bàsica"
-otherSettings: "Configuració avançada"
-openInWindow: "Obrir en una nova finestra"
+otherSettings: "Altres configuracions"
+openInWindow: "Obrir en una finestra nova"
profile: "Perfil"
timeline: "Línia de temps"
noAccountDescription: "Aquest usuari encara no ha escrit la seva biografia."
login: "Iniciar sessió"
-loggingIn: "Identificant-se"
+loggingIn: "Iniciar la sessió "
logout: "Tancar la sessió"
signup: "Registrar-se"
uploading: "Pujant..."
save: "Desa"
users: "Usuaris"
addUser: "Afegir un usuari"
-favorite: "Afegir a preferits"
+favorite: "Afegeix als preferits"
favorites: "Favorits"
unfavorite: "Eliminar dels preferits"
favorited: "Afegit als preferits."
@@ -49,26 +50,26 @@ copyContent: "Copiar el contingut"
copyLink: "Copiar l'enllaç"
copyLinkRenote: "Copiar l'enllaç de la renota"
delete: "Elimina"
-deleteAndEdit: "Elimina i edita"
+deleteAndEdit: "Eliminar i editar"
deleteAndEditConfirm: "Segur que vols eliminar aquesta publicació i editar-la? Perdràs totes les reaccions, impulsos i respostes."
addToList: "Afegir a una llista"
-addToAntenna: "Afegir a l'antena"
+addToAntenna: "Afegir a una antena"
sendMessage: "Enviar un missatge"
copyRSS: "Copiar RSS"
copyUsername: "Copiar nom d'usuari"
copyUserId: "Copiar ID d'usuari"
-copyNoteId: "Copiar ID de nota"
-copyFileId: "Copiar ID d'arxiu"
-copyFolderId: "Copiar ID de carpeta"
-copyProfileUrl: "Copiar URL del perfil"
+copyNoteId: "Copiar ID de la nota"
+copyFileId: "Copiar ID de l'arxiu"
+copyFolderId: "Copiar ID de la carpeta"
+copyProfileUrl: "Copiar adreça URL del perfil"
searchUser: "Cercar un usuari"
-searchThisUsersNotes: "Cerca les publicacions de l'usuari"
-reply: "Respondre"
+searchThisUsersNotes: "Cercar les publicacions de l'usuari"
+reply: "Respon"
loadMore: "Carregar més"
showMore: "Veure més"
-showLess: "Mostra menys"
+showLess: "Mostrar menys"
youGotNewFollower: "t'ha seguit"
-receiveFollowRequest: "Sol·licitud de seguiment rebuda"
+receiveFollowRequest: "Has rebut una sol·licitud de seguiment"
followRequestAccepted: "Sol·licitud de seguiment acceptada"
mention: "Menció"
mentions: "Mencions"
@@ -77,25 +78,25 @@ importAndExport: "Importar / Exportar"
import: "Importar"
export: "Exporta"
files: "Fitxers"
-download: "Baixar"
-driveFileDeleteConfirm: "Estàs segur que vols suprimir el fitxer \"{name}\"? Les notes associades a aquest fitxer adjunt també se suprimiran."
-unfollowConfirm: "Estàs segur que vols deixar de seguir {name}?"
-exportRequested: "Has sol·licitat una exportació. Això pot trigar una estona. S'afegirà a la teva unitat un cop completat."
-importRequested: "Has sol·licitat una importació. Això pot trigar una estona."
+download: "Descarregar"
+driveFileDeleteConfirm: "Estàs segur que vols suprimir el fitxer \"{name}\"? Les notes associades a aquest fitxer també seran esborrades."
+unfollowConfirm: "Segur que vols deixar de seguir a {name}?"
+exportRequested: "Has sol·licitat una exportació de dades. Això pot trigar una estona. S'afegirà a la teva unitat de disc un cop estigui completada."
+importRequested: "Has sol·licitat una importació de dades. Això pot trigar una estona."
lists: "Llistes"
noLists: "No tens cap llista"
note: "Nota"
notes: "Notes"
-following: "Seguint"
+following: "Segueixes "
followers: "Seguidors"
followsYou: "Et segueix"
createList: "Crear llista"
manageLists: "Gestionar les llistes"
error: "Error"
somethingHappened: "S'ha produït un error"
-retry: "Torna-ho a intentar"
+retry: "Torna-ho a provar"
pageLoadError: "S'ha produït un error en carregar la pàgina"
-pageLoadErrorDescription: "Això normalment es deu a errors de xarxa o a la memòria cau del navegador. Prova d'esborrar la memòria cau i torna-ho a provar després d'esperar una estona."
+pageLoadErrorDescription: "Això normalment és a causa d'errors a la xarxa o a la memòria cau del navegador. Prova d'esborrar la memòria cau i torna-ho a provar després d'esperar un temps."
serverIsDead: "Aquest servidor no respon. Espera una estona i torna-ho a provar."
youShouldUpgradeClient: "Per veure aquesta pàgina, actualitzeu-la per actualitzar el vostre client."
enterListName: "Introdueix un nom per a la llista"
@@ -103,52 +104,52 @@ privacy: "Privadesa"
makeFollowManuallyApprove: "Les sol·licituds de seguiment requereixen aprovació"
defaultNoteVisibility: "Visibilitat per defecte"
follow: "Seguint"
-followRequest: "Enviar la sol·licitud de seguiment"
+followRequest: "Enviar sol·licitud de seguiment"
followRequests: "Sol·licituds de seguiment"
unfollow: "Deixar de seguir"
followRequestPending: "Sol·licituds de seguiment pendents"
enterEmoji: "Introduir un emoji"
-renote: "Impulsa"
+renote: "Impulsar "
unrenote: "Anul·la l'impuls"
renoted: "S'ha impulsat"
renotedToX: "Impulsat per {name}."
cantRenote: "No es pot impulsar aquesta publicació"
-cantReRenote: "No es pot impulsar l'impuls."
+cantReRenote: "No es pot impulsar un impuls."
quote: "Cita"
-inChannelRenote: "Renotar només al Canal"
-inChannelQuote: "Citar només al Canal"
-renoteToChannel: "Impulsa a un canal"
-renoteToOtherChannel: "Impulsa a un altre canal"
+inChannelRenote: "Impulsar només a un canal"
+inChannelQuote: "Citar només a un canal"
+renoteToChannel: "Impulsar a un canal"
+renoteToOtherChannel: "Impulsar a un altre canal"
pinnedNote: "Nota fixada"
pinned: "Fixar al perfil"
you: "Tu"
clickToShow: "Fes clic per mostrar"
-sensitive: "NSFW"
+sensitive: "Sensible"
add: "Afegir"
-reaction: "Reaccions"
+reaction: "Reacció "
reactions: "Reaccions"
-emojiPicker: "Selecció d'emojis"
-pinnedEmojisForReactionSettingDescription: "Selecciona l'emoji amb el qual reaccionar"
-pinnedEmojisSettingDescription: "Selecciona l'emoji amb el qual reaccionar"
-emojiPickerDisplay: "Visualitza el selector d'emojis"
+emojiPicker: "Selector d'emojis"
+pinnedEmojisForReactionSettingDescription: "Selecciona l'emoji amb qui vols reaccionar"
+pinnedEmojisSettingDescription: "Selecciona quins emojis vols deixar fixats i es mostrin en obrir el selector d'emojis"
+emojiPickerDisplay: "Mostrar el selector d'emojis"
overwriteFromPinnedEmojisForReaction: "Reemplaça els emojis de la reacció"
-overwriteFromPinnedEmojis: "Sobreescriu des dels emojis fixats"
+overwriteFromPinnedEmojis: "Sobreescriu els emojis fixats al panel de reaccions"
reactionSettingDescription2: "Arrossega per reordenar, fes clic per suprimir, prem \"+\" per afegir."
rememberNoteVisibility: "Recorda la configuració de visibilitat de les notes"
attachCancel: "Eliminar el fitxer adjunt"
deleteFile: "Esborrar l'arxiu "
-markAsSensitive: "Marcar com a NSFW"
+markAsSensitive: "Marcar com a sensible"
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"
+renoteMute: "Silenciar impulsos"
+renoteUnmute: "Treure el silenci dels impulsos"
block: "Bloqueja"
unblock: "Desbloqueja"
suspend: "Suspèn"
unsuspend: "Deixa de suspendre"
-blockConfirm: "Vols bloquejar?"
+blockConfirm: "Vols bloquejar-lo?"
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?"
@@ -174,11 +175,11 @@ youCanCleanRemoteFilesCache: "Pots netejar la memòria cau fent clic al botó de
cacheRemoteSensitiveFiles: "Posar a la memòria cau arxius remots sensibles"
cacheRemoteSensitiveFilesDescription: "Quan aquesta opció és desactiva, els arxius remots sensibles es carregant directament del servidor d'origen sense que es guardin a la memòria cau."
flagAsBot: "Marca aquest compte com a bot"
-flagAsBotDescription: "Marca aquest compte com a bot"
+flagAsBotDescription: "Activa aquesta opció si el compte el controla un programa. Si s'activa, actuarà com un senyal per altres desenvolupadors per prevenir cadenes d'interacció sense fi i ajustar els paràmetres interns de Misskey pe tractar el compte com un bot."
flagAsCat: "Marca aquest compte com a gat"
flagAsCatDescription: "Activeu aquesta opció per marcar aquest compte com a gat."
flagShowTimelineReplies: "Mostra les respostes a la línia de temps"
-flagShowTimelineRepliesDescription: "Mostra les respostes a la línia de temps"
+flagShowTimelineRepliesDescription: "Mostra les respostes dels usuaris a les notes d'altres usuaris a la línia de temps."
autoAcceptFollowed: "Aprova automàticament les sol·licituds de seguiment dels usuaris que segueixes"
addAccount: "Afegeix un compte"
reloadAccountsList: "Recarregar la llista de contactes"
@@ -203,7 +204,7 @@ selectUser: "Selecciona usuari/a"
recipient: "Destinatari"
annotation: "Comentaris"
federation: "Federació"
-instances: "Servidors"
+instances: "Instàncies "
registeredAt: "Registrat a"
latestRequestReceivedAt: "Última petició rebuda"
latestStatus: "Últim estat"
@@ -212,7 +213,7 @@ charts: "Gràfics"
perHour: "Per hora"
perDay: "Per dia"
stopActivityDelivery: "Deixa d'enviar activitats"
-blockThisInstance: "Deixa d'enviar activitats"
+blockThisInstance: "Bloca aquesta instància "
silenceThisInstance: "Silencia aquesta instància "
mediaSilenceThisInstance: "Silenciar els arxius d'aquesta instància "
operations: "Accions"
@@ -227,7 +228,7 @@ network: "Xarxa"
disk: "Disc"
instanceInfo: "Informació del fitxer d'instal·lació"
statistics: "Estadístiques"
-clearQueue: "Esborrar la cua"
+clearQueue: "Esborra la cua de feina"
clearQueueConfirmTitle: "Esteu segur que voleu esborrar la cua?"
clearQueueConfirmText: "Les notes no lliurades que quedin a la cua no es federaran. Normalment aquesta operació no és necessària."
clearCachedFiles: "Esborra la memòria cau"
@@ -253,7 +254,7 @@ processing: "S'està processant..."
preview: "Vista prèvia"
default: "Per defecte"
defaultValueIs: "Per defecte: {value}"
-noCustomEmojis: "Cap emoji personalitzat"
+noCustomEmojis: "No hi ha emojis personalitzats"
noJobs: "No hi ha feines"
federating: "Federant"
blocked: "Bloquejat"
@@ -267,11 +268,11 @@ instanceFollowers: "Seguidors del servidor"
instanceUsers: "Usuaris del servidor"
changePassword: "Canvia la contrasenya"
security: "Seguretat"
-retypedNotMatch: "L'entrada no coincideix"
+retypedNotMatch: "Les entrades no coincideix"
currentPassword: "Contrasenya actual"
newPassword: "Contrasenya nova"
-newPasswordRetype: "Contrasenya nou (repeteix-la)"
-attachFile: "Adjunta fitxers"
+newPasswordRetype: "Contrasenya nova (repeteix-la)"
+attachFile: "Afegeix un arxiu"
more: "Més"
featured: "Destacat"
usernameOrUserId: "Nom o ID d'usuari"
@@ -281,25 +282,25 @@ announcements: "Anuncis"
imageUrl: "URL de la imatge"
remove: "Eliminar"
removed: "Eliminat"
-removeAreYouSure: "Segur que voleu retirar «{x}»?"
-deleteAreYouSure: "Segur que voleu retirar «{x}»?"
-resetAreYouSure: "Segur que voleu restablir-ho?"
-areYouSure: "Està segur?"
+removeAreYouSure: "Segur que vols esborrar «{x}»?"
+deleteAreYouSure: "Segur que vols esborrar «{x}»?"
+resetAreYouSure: "Segur que vols restablir-ho?"
+areYouSure: "Estàs segur?"
saved: "S'ha desat"
messaging: "Xat"
upload: "Puja"
keepOriginalUploading: "Guarda la imatge original"
-keepOriginalUploadingDescription: "Guarda la imatge pujada com hi és. Si està apagat, una versió per a la visualització a la xarxa serà generada quan sigui pujada."
-fromDrive: "Des de la unitat"
+keepOriginalUploadingDescription: "Guarda la imatge pujada sense modificar. Si està desactivat, es generarà una versió per visualitzar a la web en pujar la imatge."
+fromDrive: "Des del Disc"
fromUrl: "Des d'un enllaç"
uploadFromUrl: "Carrega des d'un enllaç"
uploadFromUrlDescription: "Enllaç del fitxer que vols carregar"
uploadFromUrlRequested: "Càrrega sol·licitada"
-uploadFromUrlMayTakeTime: "La càrrega des de l'enllaç pot prendre un temps"
+uploadFromUrlMayTakeTime: "La càrrega des de l'enllaç pot trigar un temps"
explore: "Explora"
messageRead: "Vist"
-noMoreHistory: "No hi resta més per veure"
-startMessaging: "Començar a xatejar"
+noMoreHistory: "No hi ha res més per veure"
+startMessaging: "Comença a xatejar"
nUsersRead: "Vist per {n}"
agreeTo: "Accepto que {0}"
agree: "Hi estic d'acord"
@@ -311,7 +312,7 @@ home: "Inici"
remoteUserCaution: "Ja que aquest usuari resideix a una instància remota, la informació mostrada es podria trobar incompleta."
activity: "Activitat"
images: "Imatges"
-image: "Imatges"
+image: "Imatge"
birthday: "Aniversari"
yearsOld: "{age} anys"
registeredDate: "Data de registre"
@@ -326,10 +327,10 @@ darkThemes: "Temes foscos"
syncDeviceDarkMode: "Sincronitza el mode fosc amb la configuració del dispositiu"
drive: "Unitat"
fileName: "Nom del Fitxer"
-selectFile: "Selecciona fitxers"
+selectFile: "Selecciona un fitxer"
selectFiles: "Selecciona fitxers"
selectFolder: "Selecció de carpeta"
-selectFolders: "Selecció de carpeta"
+selectFolders: "Selecció de carpetes"
fileNotSelected: "Cap fitxer seleccionat"
renameFile: "Canvia el nom del fitxer"
folderName: "Nom de la carpeta"
@@ -358,9 +359,9 @@ reload: "Actualitza"
doNothing: "Ignora"
reloadConfirm: "Vols recarregar?"
watch: "Veure"
-unwatch: "Deixar de veure"
+unwatch: "Deixa de veure"
accept: "Acceptar"
-reject: "Denegar"
+reject: "Denega"
normal: "Normal"
instanceName: "Nom del servidor"
instanceDescription: "Descripció del servidor"
@@ -381,7 +382,6 @@ enableLocalTimeline: "Activa la línia de temps local"
enableGlobalTimeline: "Activa la línia de temps global"
disablingTimelinesInfo: "Fins i tot si aquestes línies de temps són desactivades, els administradors i els moderadors poden continuar visualitzant per conveniència."
registration: "Registre"
-enableRegistration: "Permet els registres d'usuaris"
invite: "Convida"
driveCapacityPerLocalAccount: "Capacitat del disc per usuaris locals"
driveCapacityPerRemoteAccount: "Capacitat del disc per usuaris remots"
@@ -392,20 +392,20 @@ basicInfo: "Informació bàsica"
pinnedUsers: "Usuaris fixats"
pinnedUsersDescription: "Llista d'usuaris, separats per salts de línia, que seran fixats a la pestanya \"Explorar\"."
pinnedPages: "Pàgines fixades"
-pinnedPagesDescription: "Escriu els camins de les pàgines que vols fixar a la pàgina d'inici d'aquesta instància. Separades per salts de línia."
+pinnedPagesDescription: "Escriu les adreces de les pàgines que vols fixar a la pàgina d'inici d'aquesta instància. Separades per salts de línia."
pinnedClipId: "ID del retall fixat"
pinnedNotes: "Nota fixada"
hcaptcha: "hCaptcha"
-enableHcaptcha: "Activar hCaptcha"
+enableHcaptcha: "Activa hCaptcha"
hcaptchaSiteKey: "Clau del lloc"
hcaptchaSecretKey: "Clau secreta"
mcaptcha: "mCaptcha"
-enableMcaptcha: "Activar mCaptcha"
+enableMcaptcha: "Activa mCaptcha"
mcaptchaSiteKey: "Clau del lloc"
mcaptchaSecretKey: "Clau secreta"
mcaptchaInstanceUrl: "Adreça URL del servidor mCaptcha"
recaptcha: "reCAPTCHA"
-enableRecaptcha: "Activar reCAPTCHA"
+enableRecaptcha: "Activa reCAPTCHA"
recaptchaSiteKey: "Clau del lloc"
recaptchaSecretKey: "Clau secreta"
turnstile: "Turnstile"
@@ -447,14 +447,14 @@ aboutMisskey: "Quant a Misskey"
administrator: "Administrador/a"
token: "Codi de verificació"
2fa: "Autenticació de doble factor"
-setupOf2fa: "Configurar l'autenticació de doble factor"
+setupOf2fa: "Configura l'autenticació de doble factor"
totp: "Aplicació d'autenticació"
totpDescription: "Escriu una contrasenya d'un sol us fent servir l'aplicació d'autenticació"
moderator: "Moderador/a"
moderation: "Moderació"
moderationNote: "Nota de moderació "
moderationNoteDescription: "Pots escriure notes que es compartiran entre els moderadors."
-addModerationNote: "Afegir una nota de moderació "
+addModerationNote: "Afegeix una nota de moderació "
moderationLogs: "Registre de moderació "
nUsersMentioned: "{n} usuaris mencionats"
securityKeyAndPasskey: "Clau de seguretat / Clau de pas"
@@ -470,13 +470,13 @@ reduceUiAnimation: "Redueix les animacions de la interfície"
share: "Comparteix"
notFound: "No s'ha trobat"
notFoundDescription: "No es troba cap pàgina que correspongui a aquesta adreça"
-uploadFolder: "Carpeta per defecte per pujades"
+uploadFolder: "Carpeta per defecte on desar els arxius pujats"
markAsReadAllNotifications: "Marca totes les notificacions com a llegides"
markAsReadAllUnreadNotes: "Marca-ho tot com a llegit"
markAsReadAllTalkMessages: "Marcar tots els missatges com llegits"
help: "Ajuda"
inputMessageHere: "Escriu aquí el teu missatge "
-close: "Tancar"
+close: "Tanca"
invites: "Convida"
members: "Membres"
transfer: "Transferir"
@@ -507,7 +507,7 @@ normalPassword: "Bona contrasenya"
strongPassword: "Contrasenya segura"
passwordMatched: "Correcte!"
passwordNotMatched: "No coincideix"
-signinWith: "Inicia sessió amb amb {x}"
+signinWith: "Inicia sessió amb {x}"
signinFailed: "Autenticació sense èxit. Intenta-ho un altre cop utilitzant la contrasenya i el nom correctes."
or: "O"
language: "Idioma"
@@ -586,11 +586,12 @@ masterVolume: "Volum principal"
notUseSound: "Sense so"
useSoundOnlyWhenActive: "Reproduir sons només quan Misskey estigui actiu"
details: "Detalls"
+renoteDetails: "Més informació sobre l'impuls "
chooseEmoji: "Tria un emoji"
unableToProcess: "L'operació no pot ser completada "
recentUsed: "Utilitzat recentment"
install: "Instal·lació "
-uninstall: "Desinstal·lar "
+uninstall: "Desinstal·la"
installedApps: "Aplicacions autoritzades "
nothing: "No hi ha res per veure aquí "
installedDate: "Data d'instal·lació"
@@ -607,13 +608,13 @@ output: "Sortida"
script: "Script"
disablePagesScript: "Desactivar AiScript a les pàgines "
updateRemoteUser: "Actualitzar la informació de l'usuari remot"
-unsetUserAvatar: "Desactivar l'avatar "
+unsetUserAvatar: "Desactiva l'avatar "
unsetUserAvatarConfirm: "Segur que vols desactivar l'avatar?"
-unsetUserBanner: "Desactivar el bàner "
+unsetUserBanner: "Desactiva el bàner "
unsetUserBannerConfirm: "Segur que vols desactivar el bàner?"
-deleteAllFiles: "Esborrar tots els arxius"
+deleteAllFiles: "Esborra tots els arxius"
deleteAllFilesConfirm: "Segur que vols esborrar tots els arxius?"
-removeAllFollowing: "Deixar de seguir tots els usuaris seguits"
+removeAllFollowing: "Deixa de seguir tots els usuaris seguits"
removeAllFollowingDescription: "El fet d'executar això, et farà deixar de seguir a tots els usuaris de {host}. Si us plau, executa això si l'amfitrió, per exemple, ja no existeix."
userSuspended: "Aquest usuari ha sigut suspès"
userSilenced: "Aquest usuari està sent silenciat"
@@ -946,6 +947,9 @@ oneHour: "1 hora"
oneDay: "Un dia"
oneWeek: "Una setmana"
oneMonth: "Un mes"
+threeMonths: "3 mesos"
+oneYear: "1 any"
+threeDays: "3 dies"
reflectMayTakeTime: "Això pot trigar una estona a tenir efecte"
failedToFetchAccountInformation: "No es pot obtenir la informació del compte"
rateLimitExceeded: "S'ha arribat al màxim de peticions"
@@ -1086,6 +1090,7 @@ retryAllQueuesConfirmTitle: "Tornar a intentar-ho tot?"
retryAllQueuesConfirmText: "Això farà que la càrrega del servidor augmenti temporalment."
enableChartsForRemoteUser: "Generar gràfiques d'usuaris remots"
enableChartsForFederatedInstances: "Generar gràfiques d'instàncies remotes"
+enableStatsForFederatedInstances: "Activa les estadístiques de les instàncies remotes federades"
showClipButtonInNoteFooter: "Afegir \"Retall\" al menú d'acció de la nota"
reactionsDisplaySize: "Mida de les reaccions"
limitWidthOfReaction: "Limitar l'amplada màxima de la reacció i mostrar-les en una mida reduïda "
@@ -1178,8 +1183,8 @@ currentAnnouncements: "Informes actuals"
pastAnnouncements: "Informes passats"
youHaveUnreadAnnouncements: "Tens informes per llegir."
useSecurityKey: "Segueix les instruccions del teu navegador O dispositiu per fer servir el teu passkey."
-replies: "Respondre"
-renotes: "Impulsa"
+replies: "Respon"
+renotes: "Impulsar "
loadReplies: "Mostrar les respostes"
loadConversation: "Mostrar la conversació "
pinnedList: "Llista fixada"
@@ -1287,6 +1292,27 @@ passkeyVerificationSucceededButPasswordlessLoginDisabled: "La verificació de la
messageToFollower: "Missatge als meus seguidors"
target: "Assumpte "
testCaptchaWarning: "És una característica dissenyada per a la prova de CAPTCHA. <strong>No l'utilitzes en l'entorn real.</strong>"
+prohibitedWordsForNameOfUser: "Noms prohibits per escollir noms d'usuari "
+prohibitedWordsForNameOfUserDescription: "Si qualsevol d'aquestes paraules es troben a un nom d'usuari la creació de l'usuari no es durà a terme. Als moderadors no els afecta aquesta restricció."
+yourNameContainsProhibitedWords: "El nom conté paraules prohibides "
+yourNameContainsProhibitedWordsDescription: "Si de veritat vols fer servir aquest nom posat en contacte amb l'administrador."
+thisContentsAreMarkedAsSigninRequiredByAuthor: "L'autor requereix l'inici de sessió per poder veure"
+lockdown: "Bloquejat"
+pleaseSelectAccount: "Seleccionar un compte"
+availableRoles: "Roles disponibles "
+acknowledgeNotesAndEnable: "Activa'l després de comprendre els possibles perills."
+_accountSettings:
+ requireSigninToViewContents: "És obligatori l'inici de sessió per poder veure el contingut"
+ requireSigninToViewContentsDescription1: "Es requereix l'inici de sessió per poder veure totes les notes i el contingut que has creat. Amb això esperem evitar que els rastrejadors recopilin informació."
+ requireSigninToViewContentsDescription2: "També es desactivaran les vistes prèvies d'URLS (OGP), la incrustació a pàgines web i la visualització des de servidors que no admetin la citació de notes."
+ requireSigninToViewContentsDescription3: "Aquestes restriccions pot ser que no s'apliquin als continguts federats en servidors remots."
+ makeNotesFollowersOnlyBefore: "Permetre que les notes antigues només es mostrin als seguidors."
+ makeNotesFollowersOnlyBeforeDescription: "Mentre aquesta funció estigui activada, les notes que hagin passat la data i hora fixada o hagi passat els temps establert seran visibles només per als teus seguidors. Quan es desactivi, també es restableix l'estat públic de la nota."
+ makeNotesHiddenBefore: "Fes que les notes antigues siguin privades"
+ makeNotesHiddenBeforeDescription: "Mentres aquesta funció estigui activada les notes que hagin superat una data i hora fixada o hagi passat el temps establert només seran visibles per a tu. Si la desactives es restablirà també l'estat públic de les notes."
+ mayNotEffectForFederatedNotes: "Això pot ser que no afecti les notes federades."
+ notesHavePassedSpecifiedPeriod: "Notes publicades durant un període de temps especificat."
+ notesOlderThanSpecifiedDateAndTime: "Notes més antigues de la data i temps especificat "
_abuseUserReport:
forward: "Reenviar "
forwardDescription: "Reenvia l'informe a una altra instància com un compte del sistema anònima."
@@ -1431,6 +1457,8 @@ _serverSettings:
reactionsBufferingDescription: "Quan s'activa aquesta opció millora bastant el rendiment en recuperar les línies de temps reduint la càrrega de la base. Com a contrapunt, augmentarà l'ús de memòria de Redís. Desactiva aquesta opció en cas de tenir un servidor amb poca memòria o si tens problemes d'inestabilitat."
inquiryUrl: "URL de consulta "
inquiryUrlDescription: "Escriu adreça URL per al formulari de consulta per al mantenidor del servidor o una pàgina web amb el contacte d'informació."
+ openRegistration: "Registres oberts"
+ openRegistrationWarning: "Obrir els registres és arriscat. Es recomana obrir-los només si el servidor és monitorat constantment i per respondre immediatament davant qualsevol problema."
thisSettingWillAutomaticallyOffWhenModeratorsInactive: "Si no es detecta activitat per part del moderador durant un període de temps, aquesta opció es desactiva automàticament per evitar el correu brossa."
_accountMigration:
moveFrom: "Migrar un altre compte a aquest"
@@ -2151,8 +2179,11 @@ _auth:
permissionAsk: "Aquesta aplicació demana els següents permisos"
pleaseGoBack: "Si us plau, torna a l'aplicació"
callback: "Tornant a l'aplicació"
+ accepted: "Accés garantit"
denied: "Accés denegat"
+ scopeUser: "Opera com si fossis aquest usuari"
pleaseLogin: "Si us plau, identificat per autoritzar l'aplicació."
+ byClickingYouWillBeRedirectedToThisUrl: "Si es garanteix l'accés, seràs redirigit automàticament a la següent adreça URL"
_antennaSources:
all: "Totes les publicacions"
homeTimeline: "Publicacions dels usuaris seguits"
@@ -2402,7 +2433,8 @@ _notification:
renotedBySomeUsers: "L'han impulsat {n} usuaris"
followedBySomeUsers: "Et segueixen {n} usuaris"
flushNotification: "Netejar notificacions"
- exportOfXCompleted: "Completada l'exportació de {n}"
+ exportOfXCompleted: "Completada l'exportació de {x}"
+ login: "Algú ha iniciat sessió "
_types:
all: "Tots"
note: "Notes noves"
@@ -2485,6 +2517,8 @@ _webhookSettings:
abuseReport: "Quan reps un nou informe de moderació "
abuseReportResolved: "Quan resols un informe de moderació "
userCreated: "Quan es crea un usuari"
+ inactiveModeratorsWarning: "Quan el compte d'un moderador no té activitat durant un temps"
+ inactiveModeratorsInvitationOnlyChanged: "Quan el compte d'un moderador no té activitat durant un temps, i el servidor es canvia a registre per invitacions"
deleteConfirm: "Segur que vols esborrar el webhook?"
testRemarks: "Si feu clic al botó a la dreta de l'interruptor, podeu enviar un webhook de prova amb dades dummy."
_abuseReport:
@@ -2612,8 +2646,81 @@ _dataSaver:
description: "Les imatges en miniatura que serveixen com a vista prèvia de les URLs no es tornaran a carregar."
_code:
title: "Ressaltat del codi "
+ description: "Quan s'utilitza codi MFM, no es llegeix fins que es copiï. En els punts destacats del codi s'han de llegir els fitxers definits per a cada llengua que resulti alt, però no es poden llegir automàticament, per la qual cosa es poden reduir les quantitats de comunicació."
+_hemisphere:
+ N: "Hemisferi Nord "
+ S: "Hemisferi Sud"
+ caption: "El fan servir alguns clients per determinar l'estació de l'any."
_reversi:
+ reversi: "Reversi"
+ gameSettings: "Opcions del joc"
+ chooseBoard: "Escull un taulell"
+ blackOrWhite: "Negres/Blanques"
+ blackIs: "{name} juga amb negres "
+ rules: "Regles"
+ thisGameIsStartedSoon: "El joc començarà en breu"
+ waitingForOther: "Esperant la tirada de l'oponent "
+ waitingForMe: "Esperant el teu torn"
+ waitingBoth: "Prepara't "
+ ready: "Preparat "
+ cancelReady: " No preparat "
+ opponentTurn: "Torn de l'oponent "
+ myTurn: "El teu torn"
+ turnOf: "Li toca a {name}"
+ pastTurnOf: "Torn de {name}"
+ surrender: "Rendeix-te"
+ surrendered: "T'has rendit"
+ timeout: "Temps esgotat"
+ drawn: "Empat"
+ won: "{name} ha guanyat"
+ black: "Negres"
+ white: "Blanques"
total: "Total"
+ turnCount: "Torn {count}"
+ myGames: "Jugades"
+ allGames: "Totes les jugades"
+ ended: "Acabat"
+ playing: "Jugant"
+ isLlotheo: "Qui tingui menys pedres guanya (Llotheo)"
+ loopedMap: "Mapa de recursiu"
+ canPutEverywhere: "Les fitxes es poden posar a qualsevol lloc"
+ timeLimitForEachTurn: "Temps límit per jugada"
+ freeMatch: "Partida lliure"
+ lookingForPlayer: "Buscant contrincant..."
+ gameCanceled: "La partida s'ha cancel·lat "
+ shareToTlTheGameWhenStart: "Compartir la partida a la línia de temps quan comenci"
+ iStartedAGame: "La partida ha començat! #MisskeyReversi"
+ opponentHasSettingsChanged: "L'oponent h canviat la seva configuració "
+ allowIrregularRules: "Regles irregulars (totalment lliure)"
+ disallowIrregularRules: "Sense regles irregulars"
+ showBoardLabels: "Mostrar el número de línia i columna al tauler de joc"
+ useAvatarAsStone: "Fer servir els avatars dels usuaris com a fitxes"
+_offlineScreen:
+ title: "Fora de línia - No es pot connectar amb el servidor"
+ header: "Impossible connectar amb el servidor"
+_urlPreviewSetting:
+ title: "Configuració per a la previsualització de l'URL"
+ enable: "Activa la previsualització de l'URL"
+ timeout: "Temps màxim per carregar la previsualització de l'URL (ms)"
+ timeoutDescription: "Si l'obtenció de la previsualització triga més que el temps establert, no es generarà la vista prèvia."
+ maximumContentLength: "Longitud màxima del contingut (bytes)"
+ maximumContentLengthDescription: "Si la màxima longitud és més gran que aquest valor, la previsualització no es generarà."
+ requireContentLength: "Generar la previsualització només si es pot obtenir la longitud màxima "
+ requireContentLengthDescription: "Si l'altre servidor no proporciona la longitud màxima, la previsualització no es generarà."
+ userAgent: "User-Agent"
+ userAgentDescription: "Estableix l'User-Agent que és farà servir per a la recuperació de la vista prèvia. Si és deixa en blanc es farà servir l'User-Agent per defecte."
+ summaryProxy: "Proxy endpoints per generar vistes prèvies"
+ summaryProxyDescription: "La vista prèvia es genera fent servir Summaly proxy, no la genera el mateix Misskey."
+ summaryProxyDescription2: "Els següents paràmetres són passats al proxy com cadenes de consulta. Si el proxy no els admet, s'ignoren els valors configurats."
+_mediaControls:
+ pip: "Imatge sobre impressionada "
+ playbackRate: "Velocitat de reproducció "
+ loop: "Reproducció en bucle"
+_contextMenu:
+ title: "Menú contextual"
+ app: "Aplicació "
+ appWithShift: "Aplicació amb la tecla shift"
+ native: "Interfície del navegador"
_embedCodeGen:
title: "Personalitza el codi per incrustar"
header: "Mostrar la capçalera"
@@ -2628,3 +2735,12 @@ _embedCodeGen:
generateCode: "Crea el codi per incrustar"
codeGenerated: "Codi generat"
codeGeneratedDescription: "Si us plau, enganxeu el codi generat al lloc web."
+_selfXssPrevention:
+ warning: "Advertència "
+ title: "\"Enganxa qualsevol cosa en aquesta finestra\" És tot un engany."
+ description1: "Si posa alguna cosa al seu compte, un usuari malintencionat podria segrestar-la o robar-li les dades."
+ description2: "Si no entens que estàs fent %cpara ara mateix i tanca la finestra."
+ description3: "Per obtenir més informació. {link}"
+_followRequest:
+ recieved: "Sol·licituds rebudes"
+ sent: "Sol·licituds enviades"
diff --git a/locales/cs-CZ.yml b/locales/cs-CZ.yml
index caf6d6e163..504ba1f8c8 100644
--- a/locales/cs-CZ.yml
+++ b/locales/cs-CZ.yml
@@ -348,7 +348,6 @@ enableLocalTimeline: "Povolit lokální Äas"
enableGlobalTimeline: "Povolit globální Äas"
disablingTimelinesInfo: "AdministrátoÅ™i a ModerátoÅ™i budou mít stálý přístup ke vÅ¡em Äasovým osám i pÅ™es to že nejsou zapnuté."
registration: "Registrace"
-enableRegistration: "Povolit registraci novým uživatelům"
invite: "Pozvat"
driveCapacityPerLocalAccount: "Kapacita disku na lokálního uživatele"
driveCapacityPerRemoteAccount: "Kapacita disku na vzdáleného uživatele"
diff --git a/locales/de-DE.yml b/locales/de-DE.yml
index 4e2bd06934..d85c930b73 100644
--- a/locales/de-DE.yml
+++ b/locales/de-DE.yml
@@ -8,6 +8,9 @@ search: "Suchen"
notifications: "Benachrichtigungen"
username: "Benutzername"
password: "Passwort"
+initialPasswordForSetup: "Initiales Passwort für die Einrichtung"
+initialPasswordIsIncorrect: "Das initiale Passwort für die Einrichtung ist falsch"
+initialPasswordForSetupDescription: "Verwende das in der Konfigurationsdatei angegebene Passwort, wenn du Misskey selbst installiert hast.\nWenn du einen Misskey-Hostingdienst o.ä. nutzt, verwende das dort angegebene Kennwort.\nWenn du kein Passwort festgelegt hast, lasse es leer, um fortzufahren."
forgotPassword: "Passwort vergessen"
fetchingAsApObject: "Wird aus dem Fediverse angefragt …"
ok: "OK"
@@ -60,6 +63,7 @@ copyFileId: "Datei-ID kopieren"
copyFolderId: "Ordner-ID kopieren"
copyProfileUrl: "Profil-URL kopieren"
searchUser: "Nach einem Benutzer suchen"
+searchThisUsersNotes: "Notizen dieses Benutzers suchen"
reply: "Antworten"
loadMore: "Mehr laden"
showMore: "Mehr anzeigen"
@@ -108,11 +112,14 @@ enterEmoji: "Gib ein Emoji ein"
renote: "Renote"
unrenote: "Renote zurücknehmen"
renoted: "Renote getätigt."
+renotedToX: "Renoted zu {name}."
cantRenote: "Renote dieses Beitrags nicht möglich."
cantReRenote: "Renote einer Renote nicht möglich."
quote: "Zitieren"
inChannelRenote: "Kanal-interner Renote"
inChannelQuote: "Kanal-internes Zitat"
+renoteToChannel: "Renote zu Kanal"
+renoteToOtherChannel: "Renote zu anderem Kanal"
pinnedNote: "Angeheftete Notiz"
pinned: "Angeheftet"
you: "Du"
@@ -124,12 +131,13 @@ reactions: "Reaktionen"
emojiPicker: "Emoji auswählen"
pinnedEmojisForReactionSettingDescription: "Lege Emojis fest, die angepinnt werden sollen, um sie beim Reagieren als Erstes anzuzeigen."
pinnedEmojisSettingDescription: "Lege Emojis fest, die angepinnt werden sollen, um sie in der Emoji-Auswahl als Erstes anzuzeigen"
+emojiPickerDisplay: "Anzeige der Emoji-Auswahl"
overwriteFromPinnedEmojisForReaction: "Überschreiben mit den Reaktions-Einstellungen"
overwriteFromPinnedEmojis: "Überschreiben mit den allgemeinen Einstellungen"
reactionSettingDescription2: "Ziehe um Anzuordnen, klicke um zu löschen, drücke „+“ um hinzuzufügen"
rememberNoteVisibility: "Notizsichtbarkeit merken"
attachCancel: "Anhang entfernen"
-deleteFile: "Datei gelöscht"
+deleteFile: "Datei löschen"
markAsSensitive: "Als sensibel markieren"
unmarkAsSensitive: "Als nicht sensibel markieren"
enterFileName: "Dateinamen eingeben"
@@ -150,6 +158,7 @@ editList: "Liste bearbeiten"
selectChannel: "Kanal auswählen"
selectAntenna: "Antenne auswählen"
editAntenna: "Antenne bearbeiten"
+createAntenna: "Erstelle eine Antenne"
selectWidget: "Widget auswählen"
editWidgets: "Widgets bearbeiten"
editWidgetsExit: "Fertig"
@@ -176,6 +185,8 @@ addAccount: "Benutzerkonto hinzufügen"
reloadAccountsList: "Benutzerkontoliste aktualisieren"
loginFailed: "Anmeldung fehlgeschlagen"
showOnRemote: "Auf Ursprungsinstanz ansehen"
+chooseServerOnMisskeyHub: "Wähle einen Server aus dem Misskey Hub"
+inputHostName: "Gib die Domain an"
general: "Allgemein"
wallpaper: "Hintergrund"
setWallpaper: "Hintergrund festlegen"
@@ -186,6 +197,7 @@ followConfirm: "Möchtest du {name} wirklich folgen?"
proxyAccount: "Proxy-Benutzerkonto"
proxyAccountDescription: "Ein Proxy-Konto ist ein Benutzerkonto, das unter bestimmten Bedingungen als Follower für Benutzer fremder Instanzen fungiert. Wenn zum Beispiel ein Benutzer einen Benutzer einer fremden Instanz zu einer Liste hinzufügt, werden die Aktivitäten des entfernten Benutzers nicht an die Instanz übermittelt, wenn kein lokaler Benutzer diesem Benutzer folgt; stattdessen folgt das Proxy-Konto."
host: "Hostname"
+selectSelf: "Mich auswählen"
selectUser: "Benutzer auswählen"
recipient: "Empfänger"
annotation: "Anmerkung"
@@ -201,6 +213,7 @@ perDay: "Pro Tag"
stopActivityDelivery: "Senden von Aktivitäten einstellen"
blockThisInstance: "Diese Instanz blockieren"
silenceThisInstance: "Instanz stummschalten"
+mediaSilenceThisInstance: "Medien dieses Servers stummschalten"
operations: "Aktionen"
software: "Software"
version: "Version"
@@ -222,6 +235,8 @@ blockedInstances: "Blockierte Instanzen"
blockedInstancesDescription: "Gib die Hostnamen der Instanzen, welche blockiert werden sollen, durch Zeilenumbrüche getrennt an. Blockierte Instanzen können mit dieser instanz nicht mehr kommunizieren."
silencedInstances: "Stummgeschaltete Instanzen"
silencedInstancesDescription: "Gib die Hostnamen der Instanzen, welche stummgeschaltet werden sollen, durch Zeilenumbrüche getrennt an. Alle Konten dieser Instanzen werden als stummgeschaltet behandelt, können nur noch Follow-Anfragen stellen und wenn nicht gefolgt keine lokalen Konten erwähnen. Blockierte Instanzen sind davon nicht betroffen."
+mediaSilencedInstances: "Medien-stummgeschaltete Server"
+mediaSilencedInstancesDescription: "Gib pro Zeile die Hostnamen der Server ein, dessen Medien du stummschalten möchtest. Alle Benutzerkonten der aufgeführten Server werden als sensibel behandelt und können keine benutzerdefinierten Emojis verwenden. Gesperrte Server sind davon nicht betroffen."
muteAndBlock: "Stummschaltungen und Blockierungen"
mutedUsers: "Stummgeschaltete Benutzer"
blockedUsers: "Blockierte Benutzer"
@@ -312,6 +327,7 @@ selectFile: "Datei auswählen"
selectFiles: "Dateien auswählen"
selectFolder: "Ordner auswählen"
selectFolders: "Ordner auswählen"
+fileNotSelected: "Keine Datei ausgewählt"
renameFile: "Datei umbenennen"
folderName: "Ordnername"
createFolder: "Ordner erstellen"
@@ -319,6 +335,7 @@ renameFolder: "Ordner umbenennen"
deleteFolder: "Ordner löschen"
folder: "Ordner"
addFile: "Datei hinzufügen"
+showFile: "Datei anzeigen"
emptyDrive: "Deine Drive ist leer"
emptyFolder: "Dieser Ordner ist leer"
unableToDelete: "Nicht löschbar"
@@ -361,7 +378,6 @@ enableLocalTimeline: "Lokale Chronik aktivieren"
enableGlobalTimeline: "Globale Chronik aktivieren"
disablingTimelinesInfo: "Administratoren und Moderatoren haben immer Zugriff auf alle Chroniken, auch wenn diese deaktiviert sind."
registration: "Registrieren"
-enableRegistration: "Registrierung neuer Benutzer erlauben"
invite: "Einladen"
driveCapacityPerLocalAccount: "Drive-Kapazität pro lokalem Benutzerkonto"
driveCapacityPerRemoteAccount: "Drive-Kapazität pro Benutzer fremder Instanzen"
@@ -399,6 +415,7 @@ name: "Name"
antennaSource: "Antennenquelle"
antennaKeywords: "Zu beobachtende Schlüsselwörter"
antennaExcludeKeywords: "Zu ignorierende Schlüsselwörter"
+antennaExcludeBots: "Bot-Accounts ausschließen"
antennaKeywordsDescription: "Zum Nutzen einer \"UND\"-Verknüpfung Einträge mit Leerzeichen trennen, zum Nutzen einer \"ODER\"-Verknüpfung Einträge mit einem Zeilenumbruch trennen"
notifyAntenna: "Über neue Notizen benachrichtigen"
withFileAntenna: "Nur Notizen mit Dateien"
@@ -466,6 +483,7 @@ retype: "Erneut eingeben"
noteOf: "Notiz von {user}"
quoteAttached: "Zitat"
quoteQuestion: "Als Zitat anhängen?"
+attachAsFileQuestion: "Der Text in der Zwischenablage ist lang. Möchtest du ihn als Textdatei anhängen?"
noMessagesYet: "Noch keine Nachrichten vorhanden"
newMessageExists: "Du hast eine neue Nachricht"
onlyOneFileCanBeAttached: "Es kann pro Nachricht nur eine Datei angehängt werden"
@@ -491,7 +509,11 @@ uiLanguage: "Sprache der Benutzeroberfläche"
aboutX: "Über {x}"
emojiStyle: "Emoji-Stil"
native: "Nativ"
+menuStyle: "Menü Stil"
+style: "Stil"
+popup: "Pop-up"
showNoteActionsOnlyHover: "Notizmenü nur bei Mouseover anzeigen"
+showReactionsCount: "Zeige die Anzahl der Reaktionen auf Notizen an"
noHistory: "Kein Verlauf gefunden"
signinHistory: "Anmeldungsverlauf"
enableAdvancedMfm: "Erweitertes MFM aktivieren"
@@ -572,6 +594,7 @@ ascendingOrder: "Aufsteigende Reihenfolge"
descendingOrder: "Absteigende Reihenfolge"
scratchpad: "Testumgebung"
scratchpadDescription: "Die Testumgebung bietet einen Bereich für AiScript-Experimente. Dort kannst du AiScript schreiben, ausführen sowie dessen Auswirkungen auf Misskey überprüfen."
+uiInspector: "UI-Inspektor"
output: "Ausgabe"
script: "Skript"
disablePagesScript: "AiScript auf Seiten deaktivieren"
@@ -652,6 +675,7 @@ smtpSecure: "Für SMTP-Verbindungen implizit SSL/TLS verwenden"
smtpSecureInfo: "Schalte dies aus, falls du STARTTLS verwendest."
testEmail: "Emailversand testen"
wordMute: "Wortstummschaltung"
+hardWordMute: "Harte Wort-Stummschaltung"
regexpError: "Fehler in einem regulären Ausdruck"
regexpErrorDescription: "Im regulären Ausdruck deiner in Zeile {line} von {tab}en Wortstummschaltungen ist ein Fehler aufgetreten:"
instanceMute: "Instanzstummschaltungen"
@@ -673,6 +697,7 @@ useGlobalSettingDesc: "Ist diese Option aktiviert, werden die Benachrichtigungse
other: "Anderes"
regenerateLoginToken: "Anmeldetoken regenerieren"
regenerateLoginTokenDescription: "Den zur Anmeldung intern verwendeten Token regenerieren. Normalerweise wird dies nicht benötigt. Bei Regeneration werden alle Geräte ausgeloggt."
+theKeywordWhenSearchingForCustomEmoji: "Das ist das Schlagwort beim Suchen von benutzerdefinierten Emojis."
setMultipleBySeparatingWithSpace: "Trenne Elemente durch ein Leerzeichen um mehrere Einstellungen zu kofigurieren."
fileIdOrUrl: "Datei-ID oder URL"
behavior: "Verhalten"
@@ -882,9 +907,12 @@ makeReactionsPublicDescription: "Jeder wird die Liste deiner gesendeten Reaktion
classic: "Classic"
muteThread: "Thread stummschalten"
unmuteThread: "Threadstummschaltung aufheben"
+followingVisibility: "Sichtbarkeit der Gefolgten"
+followersVisibility: "Sichtbarkeit der Folgenden"
continueThread: "Weiteren Threadverlauf anzeigen"
deleteAccountConfirm: "Dein Benutzerkonto wird unwiderruflich gelöscht. Trotzdem fortfahren?"
incorrectPassword: "Falsches Passwort."
+incorrectTotp: "Das Einmalpasswort ist falsch oder abgelaufen."
voteConfirm: "Wirklich für „{choice}“ abstimmen?"
hide: "Inhalt verbergen"
useDrawerReactionPickerForMobile: "Auf mobilen Geräten ausfahrbare Reaktionsauswahl anzeigen"
@@ -909,6 +937,9 @@ oneHour: "Eine Stunde"
oneDay: "Einen Tag"
oneWeek: "Eine Woche"
oneMonth: "1 Monat"
+threeMonths: "3 Monate"
+oneYear: "1 Jahr"
+threeDays: "3 Tage"
reflectMayTakeTime: "Es kann etwas dauern, bis sich dies widerspiegelt."
failedToFetchAccountInformation: "Benutzerkontoinformationen konnten nicht abgefragt werden"
rateLimitExceeded: "Versuchsanzahl überschritten"
@@ -982,6 +1013,7 @@ neverShow: "Nicht wieder anzeigen"
remindMeLater: "Vielleicht später"
didYouLikeMisskey: "Gefällt dir Misskey?"
pleaseDonate: "Misskey ist die kostenlose Software, die von {host} verwendet wird. Wir würden uns über Spenden freuen, damit dessen Entwicklung weitergeführt werden kann!"
+correspondingSourceIsAvailable: "Der entsprechende Quellcode ist verfügbar unter {anchor}"
roles: "Rollen"
role: "Rolle"
noRole: "Rolle nicht gefunden"
@@ -1009,6 +1041,7 @@ thisPostMayBeAnnoyingHome: "Zur Startseite schicken"
thisPostMayBeAnnoyingCancel: "Abbrechen"
thisPostMayBeAnnoyingIgnore: "Trotzdem schicken"
collapseRenotes: "Bereits gesehene Renotes verkürzt anzeigen"
+collapseRenotesDescription: "Klappe Notizen ein, auf die du bereits reagiert oder die du renoted hast."
internalServerError: "Serverinterner Fehler"
internalServerErrorDescription: "Im Server ist ein unerwarteter Fehler aufgetreten."
copyErrorInfo: "Fehlerdetails kopieren"
@@ -1032,6 +1065,8 @@ resetPasswordConfirm: "Wirklich Passwort zurücksetzen?"
sensitiveWords: "Sensible Wörter"
sensitiveWordsDescription: "Die Notizsichtbarkeit aller Notizen, die diese Wörter enthalten, wird automatisch auf \"Startseite\" gesetzt. Durch Zeilenumbrüche können mehrere konfiguriert werden."
sensitiveWordsDescription2: "Durch die Verwendung von Leerzeichen können AND-Verknüpfungen angegeben werden und durch das Umgeben von Schrägstrichen können reguläre Ausdrücke verwendet werden."
+prohibitedWords: "Verbotene Wörter"
+prohibitedWordsDescription: "Aktiviert eine Fehlermeldung, wenn versucht wird, eine Notiz zu veröffentlichen, die das/die eingestellte(n) Wort(e) enthält. Mehrere Begriffe können durch Zeilenumbrüche getrennt festgelegt werden."
prohibitedWordsDescription2: "Durch die Verwendung von Leerzeichen können AND-Verknüpfungen angegeben werden und durch das Umgeben von Schrägstrichen können reguläre Ausdrücke verwendet werden."
hiddenTags: "Ausgeblendete Hashtags"
hiddenTagsDescription: "Die hier eingestellten Tags werden nicht mehr in den Trends angezeigt. Mit der Umschalttaste können mehrere ausgewählt werden."
@@ -1078,6 +1113,8 @@ preservedUsernames: "Reservierte Benutzernamen"
preservedUsernamesDescription: "Gib zu reservierende Benutzernamen durch Zeilenumbrüche getrennt an. Diese werden für die Registrierung gesperrt, können aber von Administratoren zur manuellen Erstellung von Konten verwendet werden. Existierende Konten, die diese Namen bereits verwenden, werden nicht beeinträchtigt."
createNoteFromTheFile: "Notiz für diese Datei schreiben"
archive: "Archivieren"
+archived: "Archiviert"
+unarchive: "Dearchivieren"
channelArchiveConfirmTitle: "{name} wirklich archivieren?"
channelArchiveConfirmDescription: "Ein archivierter Kanal taucht nicht mehr in der Kanalliste oder in Suchergebnissen auf. Zudem können ihm keine Beiträge mehr hinzugefügt werden."
thisChannelArchived: "Dieser Kanal wurde archiviert."
@@ -1155,6 +1192,9 @@ confirmShowRepliesAll: "Dies ist eine unwiderrufliche Aktion. Wirklich Antworten
confirmHideRepliesAll: "Dies ist eine unwiderrufliche Aktion. Wirklich Antworten von allen momentan gefolgten Benutzern nicht in der Chronik anzeigen?"
externalServices: "Externe Dienste"
sourceCode: "Quellcode"
+sourceCodeIsNotYetProvided: "Der Quellcode ist noch nicht verfügbar. Kontaktiere den Administrator, um das Problem zu lösen."
+repositoryUrl: "Repository URL"
+repositoryUrlOrTarballRequired: "Wenn du kein Repository veröffentlicht hast, musst du stattdessen einen Tarball bereitstellen. Siehe .config/example.yml für weitere Informationen."
impressum: "Impressum"
impressumUrl: "Impressums-URL"
impressumDescription: "In manchen Ländern, wie Deutschland und dessen Umgebung, ist die Angabe von Betreiberinformationen (ein Impressum) bei kommerziellem Betrieb zwingend."
@@ -1176,15 +1216,82 @@ signupPendingError: "Beim Überprüfen der Mailadresse ist etwas schiefgelaufen.
cwNotationRequired: "Ist \"Inhaltswarnung verwenden\" aktiviert, muss eine Beschreibung gegeben werden."
doReaction: "Reagieren"
code: "Code"
+remainingN: "Verbleibend: {n}"
+overwriteContentConfirm: "Bist du sicher, dass du den aktuellen Inhalt überschreiben willst?"
+seasonalScreenEffect: "Saisonaler Bildschirmeffekt"
decorate: "Dekorieren"
addMfmFunction: "MFM hinzufügen"
+enableQuickAddMfmFunction: "Erweiterte MFM-Auswahl anzeigen"
sfx: "Soundeffekte"
+soundWillBePlayed: "Es wird Ton wiedergegeben"
+showReplay: "Wiederholung anzeigen"
+ranking: "Rangliste"
lastNDays: "Letzten {n} Tage"
+backToTitle: "Zurück zum Startbildschirm"
+enableHorizontalSwipe: "Wischen, um zwischen Tabs zu wechseln"
+loading: "Laden"
surrender: "Abbrechen"
+gameRetry: "Erneut versuchen"
+notUsePleaseLeaveBlank: "Leer lassen, wenn nicht verwendet"
+useTotp: "Gib das Einmalpasswort ein"
+useBackupCode: "Verwende die Backup-Codes"
+launchApp: "Starte die App"
+useNativeUIForVideoAudioPlayer: "Browser-Benutzeroberfläche für die Video- und Audiowiedergabe verwenden"
+keepOriginalFilename: "Ursprünglichen Dateinamen beibehalten"
+keepOriginalFilenameDescription: "Wenn diese Einstellung deaktiviert ist, wird der Dateiname beim Hochladen automatisch durch eine zufällige Zeichenfolge ersetzt."
+noDescription: "Keine Beschreibung vorhanden"
+tryAgain: "Bitte später erneut versuchen"
+confirmWhenRevealingSensitiveMedia: "Das Anzeigen von sensiblen Medien bestätigen"
+sensitiveMediaRevealConfirm: "Es könnte sich um sensible Medien handeln. Möchtest du sie anzeigen?"
+createdLists: "Erstellte Listen"
+createdAntennas: "Erstellte Antennen"
+fromX: "Von {x}"
+genEmbedCode: "Einbettungscode generieren"
+noteOfThisUser: "Notizen dieses Benutzers"
+clipNoteLimitExceeded: "Zu diesem Clip können keine weiteren Notizen hinzugefügt werden."
+discard: "Verwerfen"
+thereAreNChanges: "Es gibt {n} Änderung(en)"
+signinWithPasskey: "Mit Passkey anmelden"
+passkeyVerificationFailed: "Die Passkey-Verifizierung ist fehlgeschlagen."
+passkeyVerificationSucceededButPasswordlessLoginDisabled: "Die Verifizierung des Passkeys war erfolgreich, aber die passwortlose Anmeldung ist deaktiviert."
+messageToFollower: "Nachricht an die Follower"
+testCaptchaWarning: "Diese Funktion ist für CAPTCHA-Testzwecke gedacht.\n<strong>Nicht in einer Produktivumgebung verwenden.</strong>"
+prohibitedWordsForNameOfUser: "Verbotene Begriffe für Benutzernamen"
+prohibitedWordsForNameOfUserDescription: "Wenn eine Zeichenfolge aus dieser Liste im Namen eines Benutzers enthalten ist, wird der Benutzername abgelehnt. Benutzer mit Moderatorenrechten sind von dieser Einschränkung nicht betroffen."
+yourNameContainsProhibitedWords: "Dein Name enthält einen verbotenen Begriff"
+yourNameContainsProhibitedWordsDescription: "Der Name enthält eine verbotene Zeichenfolge. Wende dich an deinen Serveradministrator, wenn du diesen Namen verwenden möchtest."
+pleaseSelectAccount: "Bitte Konto auswählen"
+availableRoles: "Verfügbare Rollen"
+_accountSettings:
+ requireSigninToViewContents: "Anmeldung erfordern, um Inhalte anzuzeigen"
+ requireSigninToViewContentsDescription1: "Erfordere eine Anmeldung, um alle Notizen und andere Inhalte anzuzeigen, die du erstellt hast. Dadurch wird verhindert, dass Crawler deine Informationen sammeln."
+ requireSigninToViewContentsDescription3: "Diese Einschränkungen gelten möglicherweise nicht für föderierte Inhalte von anderen Servern."
+ makeNotesFollowersOnlyBefore: "Macht frühere Notizen nur für Follower sichtbar"
+ makeNotesHiddenBefore: "Frühere Notizen privat machen"
+ mayNotEffectForFederatedNotes: "Dies hat möglicherweise keine Auswirkungen auf Notizen, die an andere Server föderiert werden."
+_abuseUserReport:
+ forward: "Weiterleiten"
+ forwardDescription: "Leite die Meldung an einen entfernten Server als anonymes Systemkonto weiter."
+ accept: "Akzeptieren"
+ reject: "Ablehnen"
_delivery:
stop: "Gesperrt"
_type:
none: "Wird veröffentlicht"
+ manuallySuspended: "Manuell gesperrt"
+_bubbleGame:
+ howToPlay: "Wie man spielt"
+ hold: "Halten"
+ _score:
+ score: "Spielstand"
+ scoreYen: "Verdienter Geldbetrag"
+ highScore: "Höchstpunktzahl"
+ maxChain: "Maximale Anzahl an Verkettungen"
+ yen: "{yen} Yen"
+ _howToPlay:
+ section1: "Passe die Position an und lasse das Objekt in das Spielfeld fallen."
+ section2: "Wenn sich zwei Objekte der gleichen Art berühren, verwandeln sie sich in ein anderes Objekt und du bekommst Punkte."
+ section3: "Das Spiel ist vorbei, wenn die Objekte aus dem Spielfeld herausragen. Versuche eine hohe Punktzahl zu erreichen, indem du die Objekte miteinander verschmelzt, ohne dass das Spielfeld überläuft!"
_announcement:
forExistingUsers: "Nur für existierende Nutzer"
forExistingUsersDescription: "Ist diese Option aktiviert, wird diese Ankündigung nur Nutzern angezeigt, die zum Zeitpunkt der Ankündigung bereits registriert sind. Ist sie deaktiviert, wird sie auch Nutzern, die sich nach dessen Veröffentlichung registrieren, angezeigt."
@@ -1228,8 +1335,18 @@ _initialTutorial:
reply: "Klicke auf diesen Button, um auf eine Nachricht zu antworten. Es ist auch möglich, auf Antworten zu antworten und die Unterhaltung wie einen Thread fortzusetzen."
_reaction:
title: "Was sind Reaktionen?"
+ description: "Auf Notizen kann mit verschiedenen Emojis reagiert werden. Reaktionen ermöglichen es dir, Nuancen auszudrücken, die mit einem einfachen „Gefällt mir“ vielleicht nicht ausgedrückt werden können."
+ letsTryReacting: "Reaktionen können durch Klicken auf die Schaltfläche „+“ in der Notiz hinzugefügt werden. Versuche, auf diese Beispielnotiz zu reagieren!"
reactToContinue: "Füge eine Reaktion hinzu, um fortzufahren."
reactNotification: "Du erhältst Echtzeit-Benachrichtigungen, wenn jemand auf deine Notiz reagiert."
+ reactDone: "Du kannst eine Reaktion zurücknehmen, indem du auf den '-' Button drückst."
+ _timeline:
+ title: "So funktionieren die Chroniken"
+ home: "Du kannst Beiträge von den Konten sehen, denen du folgst."
+ local: "Du kannst Beiträge aller Benutzer auf diesem Server sehen."
+ social: "Notizen von der Startseite und der lokalen Chronik werden angezeigt."
+ global: "Du kannst Notizen von allen föderierten Servern sehen."
+ description2: "Du kannst jederzeit am oberen Rand des Bildschirms zwischen den jeweiligen Chroniken wechseln."
_postNote:
_visibility:
description: "Du kannst einschränken, wer deine Notiz sehen kann."
@@ -1237,8 +1354,16 @@ _initialTutorial:
doNotSendConfidencialOnDirect1: "Sei vorsichtig, wenn du sensible Informationen verschickst!"
_cw:
title: "Inhaltswarnung"
+ _exampleNote:
+ note: "Ich hatte gerade einen Donut mit Schokoladenüberzug ðŸ©ðŸ˜‹"
+ _howToMakeAttachmentsSensitive:
+ tryThisFile: "Versuche, das angehängte Bild als sensibel zu markieren!"
+ method: "Um einen Anhang als sensibel zu kennzeichnen, klicke auf das Vorschaubild der Datei, um das Menü zu öffnen, und klicke auf „Als sensibel markieren“."
+ sensitiveSucceeded: "Wenn du Dateien anhängst, stelle bitte die Sensibilität entsprechend der Serverrichtlinien ein."
+ doItToContinue: "Markiere die angehängte Datei als sensibel, um fortzufahren."
_done:
title: "Du hast das Tutorial abgeschlossen! 🎉"
+ description: "Die hier beschriebenen Funktionen sind nur ein kleiner Teil dessen, was Misskey zu bieten hat; um mehr darüber zu erfahren, wie du Misskey benutzen kannst, besuche bitte {link}."
_timelineDescription:
local: "In der lokalen Chronik siehst du Notizen von allen Benutzern auf diesem Server."
global: "In der globalen Chronik siehst du Notizen von allen föderierten Servern."
@@ -1256,6 +1381,7 @@ _serverSettings:
fanoutTimelineDescription: "Ist diese Option aktiviert, kann eine erhebliche Verbesserung im Abrufen von Chroniken und eine Reduzierung der Datenbankbelastung erzielt werden, im Gegenzug zu einer Steigerung in der Speichernutzung von Redis. Bei geringem Serverspeicher oder Serverinstabilität kann diese Option deaktiviert werden."
fanoutTimelineDbFallback: "Auf die Datenbank zurückfallen"
fanoutTimelineDbFallbackDescription: "Ist diese Option aktiviert, wird die Chronik auf zusätzliche Abfragen in der Datenbank zurückgreifen, wenn sich die Chronik nicht im Cache befindet. Eine Deaktivierung führt zu geringerer Serverlast, aber schränkt den Zeitraum der abrufbaren Chronik ein. "
+ thisSettingWillAutomaticallyOffWhenModeratorsInactive: "Wenn über einen bestimmten Zeitraum keine Moderatorenaktivität festgestellt wird, wird diese Einstellung automatisch deaktiviert, um Spam zu verhindern."
_accountMigration:
moveFrom: "Von einem anderen Konto zu diesem migrieren"
moveFromSub: "Alias für ein anderes Konto erstellen"
@@ -1514,7 +1640,12 @@ _achievements:
title: "Testüberfluss"
description: "Betätige den Benachrichtigungstest mehrfach innerhalb einer extrem kurzen Zeitspanne"
_tutorialCompleted:
+ title: "Misskey Grundkurs-Diplom"
description: "Tutorial abgeschlossen"
+ _bubbleGameExplodingHead:
+ title: "🤯"
+ _bubbleGameDoubleExplodingHead:
+ title: "Doppel🤯"
_role:
new: "Rolle erstellen"
edit: "Rolle bearbeiten"
@@ -1555,6 +1686,7 @@ _role:
gtlAvailable: "Kann auf die globale Chronik zugreifen"
ltlAvailable: "Kann auf die lokale Chronik zugreifen"
canPublicNote: "Kann öffentliche Notizen erstellen"
+ mentionMax: "Maximale Anzahl von Erwähnungen in einer Notiz"
canInvite: "Erstellung von Einladungscodes für diese Instanz"
inviteLimit: "Maximalanzahl an Einladungen"
inviteLimitCycle: "Zyklus des Einladungslimits"
@@ -1577,9 +1709,12 @@ _role:
canSearchNotes: "Nutzung der Notizsuchfunktion"
canUseTranslator: "Verwendung des Übersetzers"
avatarDecorationLimit: "Maximale Anzahl an Profilbilddekorationen, die angebracht werden können"
+ canImportAntennas: "Importieren von Antennen erlauben"
_condition:
isLocal: "Lokaler Benutzer"
isRemote: "Benutzer fremder Instanz"
+ isCat: "Katzen-Benutzer"
+ isBot: "Bot-Benutzer"
createdLessThan: "Kontoerstellung liegt weniger als X zurück"
createdMoreThan: "Kontoerstellung liegt mehr als X zurück"
followersLessThanOrEq: "Hat X oder weniger Follower"
@@ -1795,6 +1930,12 @@ _sfx:
note: "Notizen"
noteMy: "Meine Notizen"
notification: "Benachrichtigungen"
+_soundSettings:
+ driveFile: "Audiodatei aus dem Drive verwenden"
+ driveFileWarn: "Wähle eine Audiodatei aus dem Drive"
+ driveFileTypeWarn: "Diese Datei wird nicht unterstützt"
+ driveFileTypeWarnDescription: "Bitte wähle eine Audiodatei"
+ driveFileDurationWarn: "Audio zu lang."
_ago:
future: "Zukunft"
justNow: "Gerade eben"
@@ -1876,6 +2017,23 @@ _permissions:
"write:flash": "Deine Plays bearbeiten oder löschen"
"read:flash-likes": "Liste der Plays, die mir gefallen, lesen"
"write:flash-likes": "Liste der Plays, die mir gefallen, bearbeiten"
+ "write:admin:delete-account": "Benutzerkonto löschen"
+ "write:admin:delete-all-files-of-a-user": "Alle Dateien eines Benutzers löschen"
+ "read:admin:index-stats": "Statistiken zu Datenbankindizes einsehen"
+ "read:admin:table-stats": "Statistiken zu Datenbanktabellen einsehen"
+ "read:admin:user-ips": "IP-Adressen von Benutzern anzeigen"
+ "read:admin:meta": "Metadaten der Instanz einsehen"
+ "write:admin:reset-password": "Benutzerpasswort zurücksetzen"
+ "write:admin:send-email": "E-Mail versenden"
+ "read:admin:server-info": "Serverinformationen anzeigen"
+ "read:admin:show-moderation-log": "Moderationsprotokoll einsehen"
+ "read:admin:show-user": "Private Benutzerinformationen einsehen"
+ "write:admin:invite-codes": "Einladungscodes verwalten"
+ "read:admin:invite-codes": "Einladungscodes anzeigen"
+ "write:admin:announcements": "Ankündigungen verwalten"
+ "read:admin:announcements": "Ankündigungen einsehen"
+ "write:admin:avatar-decorations": "Kann Avatar-Dekorationen verwalten"
+ "read:admin:avatar-decorations": "Avatar-Dekorationen ansehen"
_auth:
shareAccessTitle: "Verteilung von App-Berechtigungen"
shareAccess: "Möchtest du „{name}“ authorisieren, auf dieses Benutzerkonto zugreifen zu können?"
@@ -2115,6 +2273,7 @@ _notification:
pollEnded: "Umfrageergebnisse sind verfügbar"
newNote: "Neue Notiz"
unreadAntennaNote: "Antenne {name}"
+ roleAssigned: "Rolle zugewiesen"
emptyPushNotificationMessage: "Push-Benachrichtigungen wurden aktualisiert"
achievementEarned: "Errungenschaft freigeschaltet"
testNotification: "Testbenachrichtigung"
@@ -2289,3 +2448,31 @@ _reversi:
black: "Schwarz"
white: "Weiß"
total: "Gesamt"
+_offlineScreen:
+ header: "Verbindung zum Server nicht möglich"
+_urlPreviewSetting:
+ title: "Einstellungen der URL-Vorschau"
+ enable: "URL-Vorschau aktivieren"
+ timeout: "Zeitüberschreitung beim Abrufen der Vorschau (ms)"
+ maximumContentLength: "Maximale Content-Length (Bytes)"
+_mediaControls:
+ playbackRate: "Wiedergabegeschwindigkeit"
+_contextMenu:
+ title: "Kontextmenü"
+ app: "Anwendung"
+_embedCodeGen:
+ title: "Einbettungscode anpassen"
+ header: "Kopfzeile anzeigen"
+ autoload: "Automatisch mehr laden (veraltet)"
+ maxHeight: "Maximale Höhe"
+ maxHeightDescription: "Der Wert 0 deaktiviert die Einstellung der maximalen Höhe. Gib einen Wert an, um zu verhindern, dass das Widget weiterhin vertikal vergrößert wird."
+ maxHeightWarn: "Die Begrenzung der maximalen Höhe ist deaktiviert (0). Wenn dies nicht beabsichtigt war, setze die maximale Höhe auf einen Wert fest."
+ applyToPreview: "Auf die Vorschau anwenden"
+ generateCode: "Einbettungscode generieren"
+ codeGenerated: "Der Code wurde generiert"
+ codeGeneratedDescription: "Füge den generierten Code in deine Website ein, um den Inhalt einzubetten."
+_selfXssPrevention:
+ warning: "WARNUNG"
+ title: "„Füge in diesen Bereich etwas ein“ ist eine Betrugsmasche."
+ description1: "Wenn du hier etwas einfügst, könnte ein böswilliger Benutzer dein Konto übernehmen oder deine persönlichen Daten stehlen."
+ description3: "Weitere Informationen findest du hier. {link}"
diff --git a/locales/en-US.yml b/locales/en-US.yml
index 6ea7fb4f8d..69e6da1a6f 100644
--- a/locales/en-US.yml
+++ b/locales/en-US.yml
@@ -331,7 +331,7 @@ selectFile: "Select a file"
selectFiles: "Select files"
selectFolder: "Select a folder"
selectFolders: "Select folders"
-fileNotSelected: ""
+fileNotSelected: "No file selected"
renameFile: "Rename file"
folderName: "Folder name"
createFolder: "Create a folder"
@@ -382,7 +382,6 @@ enableLocalTimeline: "Enable local timeline"
enableGlobalTimeline: "Enable global timeline"
disablingTimelinesInfo: "Adminstrators and Moderators will always have access to all timelines, even if they are not enabled."
registration: "Register"
-enableRegistration: "Enable new user registration"
invite: "Invite"
driveCapacityPerLocalAccount: "Drive capacity per local user"
driveCapacityPerRemoteAccount: "Drive capacity per remote user"
@@ -587,6 +586,7 @@ masterVolume: "Master volume"
notUseSound: "Disable sound"
useSoundOnlyWhenActive: "Output sounds only if Misskey is active."
details: "Details"
+renoteDetails: "Renote details"
chooseEmoji: "Select an emoji"
unableToProcess: "The operation could not be completed"
recentUsed: "Recently used"
@@ -947,6 +947,9 @@ oneHour: "One hour"
oneDay: "One day"
oneWeek: "One week"
oneMonth: "One month"
+threeMonths: "3 months"
+oneYear: "1 year"
+threeDays: "3 days"
reflectMayTakeTime: "It may take some time for this to be reflected."
failedToFetchAccountInformation: "Could not fetch account information"
rateLimitExceeded: "Rate limit exceeded"
@@ -1087,6 +1090,7 @@ retryAllQueuesConfirmTitle: "Really retry all?"
retryAllQueuesConfirmText: "This will temporarily increase the server load."
enableChartsForRemoteUser: "Generate remote user data charts"
enableChartsForFederatedInstances: "Generate remote instance data charts"
+enableStatsForFederatedInstances: "Receive remote server stats"
showClipButtonInNoteFooter: "Add \"Clip\" to note action menu"
reactionsDisplaySize: "Reaction display size"
limitWidthOfReaction: "Limit the maximum width of reactions and display them in reduced size."
@@ -1287,6 +1291,27 @@ passkeyVerificationFailed: "Passkey verification has failed."
passkeyVerificationSucceededButPasswordlessLoginDisabled: "Passkey verification has succeeded but password-less login is disabled."
messageToFollower: "Message to followers"
target: "Target"
+testCaptchaWarning: "This function is intended for CAPTCHA testing purposes.\n<strong>Do not use in a production environment.</strong>"
+prohibitedWordsForNameOfUser: "Prohibited words for user names"
+prohibitedWordsForNameOfUserDescription: "If any of the strings in this list are included in the user's name, the name will be denied. Users with moderator privileges are not affected by this restriction."
+yourNameContainsProhibitedWords: "Your name contains prohibited words"
+yourNameContainsProhibitedWordsDescription: "If you wish to use this name, please contact your server administrator."
+thisContentsAreMarkedAsSigninRequiredByAuthor: "Set by the author to require login to view"
+lockdown: "Lockdown"
+pleaseSelectAccount: "Select an account"
+availableRoles: "Available roles"
+_accountSettings:
+ requireSigninToViewContents: "Require sign-in to view contents"
+ requireSigninToViewContentsDescription1: "Require login to view all notes and other content you have created. This will have the effect of preventing crawlers from collecting your information."
+ requireSigninToViewContentsDescription2: "Content will not be displayed in URL previews (OGP), embedded in web pages, or on servers that don't support note quotes."
+ requireSigninToViewContentsDescription3: "These restrictions may not apply to federated content from other remote servers."
+ makeNotesFollowersOnlyBefore: "Make past notes to be displayed only to followers"
+ makeNotesFollowersOnlyBeforeDescription: "While this feature is enabled, only followers can see notes past the set date and time or have been visible for a set time. When it is deactivated, the note publication status will also be restored."
+ makeNotesHiddenBefore: "Make past notes private"
+ makeNotesHiddenBeforeDescription: "While this feature is enabled, notes that are past the set date and time or have been visible only to you. When it is deactivated, the note publication status will also be restored."
+ mayNotEffectForFederatedNotes: "Notes federated to a remote server may not be affected."
+ notesHavePassedSpecifiedPeriod: "Note that the specified time has passed"
+ notesOlderThanSpecifiedDateAndTime: "Notes before the specified date and time"
_abuseUserReport:
forward: "Forward"
forwardDescription: "Forward the report to a remote server as an anonymous system account."
@@ -1431,6 +1456,7 @@ _serverSettings:
reactionsBufferingDescription: "When enabled, performance during reaction creation will be greatly improved, reducing the load on the database. However, Redis memory usage will increase."
inquiryUrl: "Inquiry URL"
inquiryUrlDescription: "Specify a URL for the inquiry form to the server maintainer or a web page for the contact information."
+ thisSettingWillAutomaticallyOffWhenModeratorsInactive: "If no moderator activity is detected for a while, this setting will be automatically turned off to prevent spam."
_accountMigration:
moveFrom: "Migrate another account to this one"
moveFromSub: "Create alias to another account"
@@ -2150,8 +2176,11 @@ _auth:
permissionAsk: "This application requests the following permissions"
pleaseGoBack: "Please go back to the application"
callback: "Returning to the application"
+ accepted: "Access granted"
denied: "Access denied"
+ scopeUser: "Operate as the following user"
pleaseLogin: "Please log in to authorize applications."
+ byClickingYouWillBeRedirectedToThisUrl: "When access is granted, you will automatically be redirected to the following URL"
_antennaSources:
all: "All notes"
homeTimeline: "Notes from followed users"
@@ -2196,7 +2225,7 @@ _widgets:
_userList:
chooseList: "Select a list"
clicker: "Clicker"
- birthdayFollowings: "Users who celebrate their birthday today"
+ birthdayFollowings: "Today's Birthdays"
_cw:
hide: "Hide"
show: "Show content"
@@ -2485,6 +2514,8 @@ _webhookSettings:
abuseReport: "When received a new report"
abuseReportResolved: "When resolved report"
userCreated: "When user is created"
+ inactiveModeratorsWarning: "When moderators have been inactive for a while"
+ inactiveModeratorsInvitationOnlyChanged: "When a moderator has been inactive for a while, and the server is changed to invitation-only"
deleteConfirm: "Are you sure you want to delete the Webhook?"
testRemarks: "Click the button to the right of the switch to send a test Webhook with dummy data."
_abuseReport:
@@ -2701,3 +2732,9 @@ _embedCodeGen:
generateCode: "Generate embed code"
codeGenerated: "The code has been generated"
codeGeneratedDescription: "Paste the generated code into your website to embed the content."
+_selfXssPrevention:
+ warning: "WARNING"
+ title: "\"Paste something on this screen\" is all a scam."
+ description1: "If you paste something here, a malicious user could hijack your account or steal your personal information."
+ description2: "If you do not understand exactly what you are trying to paste, %cstop working right now and close this window."
+ description3: "For more information, please refer to this. {link}"
diff --git a/locales/es-ES.yml b/locales/es-ES.yml
index d574999e40..a4ec114b15 100644
--- a/locales/es-ES.yml
+++ b/locales/es-ES.yml
@@ -8,6 +8,8 @@ search: "Buscar"
notifications: "Notificaciones"
username: "Nombre de usuario"
password: "Contraseña"
+initialPasswordForSetup: "Contraseña para iniciar la inicialización"
+initialPasswordIsIncorrect: "La contraseña para iniciar la configuración inicial es incorrecta."
forgotPassword: "Olvidé mi contraseña"
fetchingAsApObject: "Buscando en el fediverso"
ok: "OK"
@@ -371,7 +373,6 @@ enableLocalTimeline: "Habilitar linea de tiempo local"
enableGlobalTimeline: "Habilitar linea de tiempo global"
disablingTimelinesInfo: "Aunque se desactiven estas lineas de tiempo, por conveniencia el administrador y los moderadores pueden seguir usándolos"
registration: "Registro"
-enableRegistration: "Permitir nuevos registros"
invite: "Invitar"
driveCapacityPerLocalAccount: "Capacidad del drive por usuario local"
driveCapacityPerRemoteAccount: "Capacidad del drive por usuario remoto"
@@ -502,6 +503,8 @@ uiLanguage: "Idioma de visualización de la interfaz"
aboutX: "Acerca de {x}"
emojiStyle: "Estilo de emoji"
native: "Nativo"
+menuStyle: "Diseño del menú"
+style: "Diseño"
showNoteActionsOnlyHover: "Mostrar acciones de la nota sólo al pasar el cursor"
showReactionsCount: "Mostrar el número de reacciones en las notas"
noHistory: "No hay datos en el historial"
@@ -925,6 +928,9 @@ oneHour: "1 hora"
oneDay: "1 día"
oneWeek: "1 semana"
oneMonth: "1 mes"
+threeMonths: "Tres meses"
+oneYear: "Un año"
+threeDays: "Tres días"
reflectMayTakeTime: "Puede pasar un tiempo hasta que se reflejen los cambios"
failedToFetchAccountInformation: "No se pudo obtener información de la cuenta"
rateLimitExceeded: "Se excedió el límite de peticiones"
@@ -1240,6 +1246,14 @@ useNativeUIForVideoAudioPlayer: "Usar la interfaz del navegador cuando se reprod
keepOriginalFilename: "Mantener el nombre original del archivo"
noDescription: "No hay descripción"
alwaysConfirmFollow: "Confirmar siempre cuando se sigue a alguien"
+inquiry: "Contacto"
+tryAgain: "Por favor , inténtalo de nuevo"
+performance: "Rendimiento"
+unknownWebAuthnKey: "Esto no se ha registrado llave maestra."
+messageToFollower: "Mensaje a seguidores"
+_abuseUserReport:
+ accept: "Acepte"
+ reject: "repudio"
_delivery:
stop: "Suspendido"
_type:
@@ -2340,6 +2354,7 @@ _notification:
roleAssigned: "Rol asignado"
achievementEarned: "Logro desbloqueado"
login: "Iniciar sesión"
+ test: "Pruebas de nofiticaciones"
app: "Notificaciones desde aplicaciones"
_actions:
followBack: "Te sigue de vuelta"
@@ -2398,6 +2413,8 @@ _webhookSettings:
renote: "Cuando reciba un \"re-note\""
reaction: "Cuando se recibe una reacción"
mention: "Cuando hay una mención"
+ _systemEvents:
+ userCreated: "Cuando se crea el usuario."
_abuseReport:
_notificationRecipient:
_recipientType:
diff --git a/locales/fr-FR.yml b/locales/fr-FR.yml
index a7060c06fc..b105a86b5e 100644
--- a/locales/fr-FR.yml
+++ b/locales/fr-FR.yml
@@ -8,6 +8,9 @@ search: "Rechercher"
notifications: "Notifications"
username: "Nom d’utilisateur·rice"
password: "Mot de passe"
+initialPasswordForSetup: "Mot de passe initial pour la configuration"
+initialPasswordIsIncorrect: "Mot de passe initial pour la configuration est incorrecte"
+initialPasswordForSetupDescription: "Utilisez le mot de passe que vous avez entré pour le fichier de configuration si vous avez installé Misskey vous-même.\nSi vous utilisez un service d'hébergement Misskey, utilisez le mot de passe fourni.\nSi vous n'avez pas défini de mot de passe, laissez le champ vide pour continuer."
forgotPassword: "Mot de passe oublié"
fetchingAsApObject: "Récupération depuis le fédiverse …"
ok: "OK"
@@ -60,6 +63,7 @@ copyFileId: "Copier l'identifiant du fichier"
copyFolderId: "Copier l'identifiant du dossier"
copyProfileUrl: "Copier l'URL du profil"
searchUser: "Chercher un·e utilisateur·rice"
+searchThisUsersNotes: "Cherchez les notes de cet·te utilisateur·rice"
reply: "Répondre"
loadMore: "Afficher plus …"
showMore: "Voir plus"
@@ -108,6 +112,7 @@ enterEmoji: "Insérer un émoji"
renote: "Renoter"
unrenote: "Annuler la Renote"
renoted: "Renoté !"
+renotedToX: "Renoté en {name}"
cantRenote: "Ce message ne peut pas être renoté."
cantReRenote: "Impossible de renoter une Renote."
quote: "Citer"
@@ -151,6 +156,7 @@ editList: "Modifier la liste"
selectChannel: "Sélectionner un canal"
selectAntenna: "Sélectionner une antenne"
editAntenna: "Modifier l'antenne"
+createAntenna: "Créer une antenne"
selectWidget: "Sélectionner un widget"
editWidgets: "Modifier les widgets"
editWidgetsExit: "Valider les modifications"
@@ -177,6 +183,7 @@ addAccount: "Ajouter un compte"
reloadAccountsList: "Rafraichir la liste des comptes"
loginFailed: "Échec de la connexion"
showOnRemote: "Voir sur l’instance distante"
+continueOnRemote: "Continuer sur l'instance distante"
general: "Général"
wallpaper: "Fond d’écran"
setWallpaper: "Définir le fond d’écran"
@@ -187,6 +194,7 @@ followConfirm: "Êtes-vous sûr·e de vouloir suivre {name} ?"
proxyAccount: "Compte proxy"
proxyAccountDescription: "Un compte proxy se comporte, dans certaines conditions, comme un·e abonné·e distant·e pour les utilisateurs d'autres instances. Par exemple, quand un·e utilisateur·rice ajoute un·e utilisateur·rice distant·e à une liste, ses notes ne seront pas visibles sur l'instance si personne ne suit cet·te utilisateur·rice. Le compte proxy va donc suivre cet·te utilisateur·rice pour que ses notes soient acheminées."
host: "Serveur distant"
+selectSelf: "Sélectionner manuellement"
selectUser: "Sélectionner un·e utilisateur·rice"
recipient: "Destinataire"
annotation: "Commentaires"
@@ -320,6 +328,7 @@ renameFolder: "Renommer le dossier"
deleteFolder: "Supprimer le dossier"
folder: "Dossier"
addFile: "Ajouter un fichier"
+showFile: "Voir les fichiers"
emptyDrive: "Le Disque est vide"
emptyFolder: "Le dossier est vide"
unableToDelete: "Suppression impossible"
@@ -362,7 +371,6 @@ enableLocalTimeline: "Activer le fil local"
enableGlobalTimeline: "Activer le fil global"
disablingTimelinesInfo: "Même si vous désactivez ces fils, les administrateur·rice·s et les modérateur·rice·s pourront toujours y accéder."
registration: "S’inscrire"
-enableRegistration: "Autoriser les nouvelles inscriptions"
invite: "Inviter"
driveCapacityPerLocalAccount: "Capacité de stockage du Disque par utilisateur local"
driveCapacityPerRemoteAccount: "Capacité de stockage du Disque par utilisateur distant"
@@ -430,10 +438,11 @@ token: "Jeton"
2fa: "Authentification à deux facteurs"
setupOf2fa: "Configuration de l’authentification à deux facteurs"
totp: "Application d'authentification"
-totpDescription: "Entrez un mot de passe à usage unique à l'aide d'une application d'authentification"
+totpDescription: "Entrer un mot de passe à usage unique à l'aide d'une application d'authentification"
moderator: "Modérateur·rice·s"
moderation: "Modérations"
moderationNote: "Note de modération"
+moderationNoteDescription: "Vous pouvez remplir des notes qui seront partagés seulement entre modérateurs."
addModerationNote: "Ajouter une note de modération"
moderationLogs: "Journal de modération"
nUsersMentioned: "{n} utilisateur·rice·s mentionné·e·s"
@@ -493,6 +502,10 @@ uiLanguage: "Langue d’affichage de l’interface"
aboutX: "À propos de {x}"
emojiStyle: "Style des émojis"
native: "Natif"
+menuStyle: "Style du menu"
+style: "Style"
+drawer: "Sélecteur"
+popup: "Pop-up"
showNoteActionsOnlyHover: "Afficher les actions de note uniquement au survol"
showReactionsCount: "Afficher le nombre de réactions des notes"
noHistory: "Pas d'historique"
@@ -575,6 +588,7 @@ ascendingOrder: "Ascendant"
descendingOrder: "Descendant"
scratchpad: "ScratchPad"
scratchpadDescription: "ScratchPad fournit un environnement expérimental pour AiScript. Vous pouvez vérifier la rédaction de votre code, sa bonne exécution et le résultat de son interaction avec Misskey."
+uiInspector: "Inspecteur UI"
output: "Sortie"
script: "Script"
disablePagesScript: "Désactiver AiScript sur les Pages"
@@ -618,7 +632,7 @@ description: "Description"
describeFile: "Ajouter une description d'image"
enterFileDescription: "Saisissez une description"
author: "Auteur·rice"
-leaveConfirm: "Vous avez des modifications non-sauvegardées. Voulez-vous les ignorer ?"
+leaveConfirm: "Vous avez des modifications non sauvegardées. Voulez-vous les ignorer ?"
manage: "Gestion"
plugins: "Extensions"
preferencesBackups: "Sauvegarder les paramètres"
@@ -828,6 +842,7 @@ administration: "Gestion"
accounts: "Comptes"
switch: "Remplacer"
noMaintainerInformationWarning: "Informations administrateur non configurées."
+noInquiryUrlWarning: "L'URL demandé n'est pas définie"
noBotProtectionWarning: "La protection contre les bots n'est pas configurée."
configure: "Configurer"
postToGallery: "Publier dans la galerie"
@@ -892,6 +907,7 @@ followersVisibility: "Visibilité des abonnés"
continueThread: "Afficher la suite du fil"
deleteAccountConfirm: "Votre compte sera supprimé. Êtes vous certain ?"
incorrectPassword: "Le mot de passe est incorrect."
+incorrectTotp: "Le mot de passe à usage unique est incorrect ou a expiré."
voteConfirm: "Confirmez-vous votre vote pour « {choice} » ?"
hide: "Masquer"
useDrawerReactionPickerForMobile: "Afficher le sélecteur de réactions en tant que panneau sur mobile"
@@ -916,6 +932,9 @@ oneHour: "1 heure"
oneDay: "1 jour"
oneWeek: "1 semaine"
oneMonth: "Un mois"
+threeMonths: "3 mois"
+oneYear: "1 an"
+threeDays: "3 jours"
reflectMayTakeTime: "Cela peut prendre un certain temps avant que cela ne se termine."
failedToFetchAccountInformation: "Impossible de récupérer les informations du compte."
rateLimitExceeded: "Limite de taux dépassée"
@@ -923,7 +942,7 @@ cropImage: "Recadrer l'image"
cropImageAsk: "Voulez-vous recadrer cette image ?"
cropYes: "Rogner"
cropNo: "Utiliser en l'état"
-file: "Fichiers"
+file: "Fichier"
recentNHours: "Dernières {n} heures"
recentNDays: "Derniers {n} jours"
noEmailServerWarning: "Serveur de courrier non configuré."
@@ -1055,6 +1074,7 @@ retryAllQueuesConfirmTitle: "Vraiment réessayer ?"
retryAllQueuesConfirmText: "Cela peut augmenter temporairement la charge du serveur."
enableChartsForRemoteUser: "Générer les graphiques pour les utilisateurs distants"
enableChartsForFederatedInstances: "Générer les graphiques pour les instances distantes"
+enableStatsForFederatedInstances: "Recevoir les statistiques des instances distantes"
showClipButtonInNoteFooter: "Ajouter « Clip » au menu d'action de la note"
reactionsDisplaySize: "Taille de l'affichage des réactions"
limitWidthOfReaction: "Limiter la largeur maximale des réactions et les afficher en taille réduite"
@@ -1102,6 +1122,8 @@ preventAiLearning: "Refuser l'usage dans l'apprentissage automatique d'IA géné
preventAiLearningDescription: "Demander aux robots d'indexation de ne pas utiliser le contenu publié, tel que les notes et les images, dans l'apprentissage automatique d'IA générative. Cela est réalisé en incluant le drapeau « noai » dans la réponse HTML. Une prévention complète n'est toutefois pas possible, car il est au robot d'indexation de respecter cette demande."
options: "Options"
specifyUser: "Spécifier l'utilisateur·rice"
+openTagPageConfirm: "Ouvrir une page d'hashtags ?"
+specifyHost: "Spécifier un serveur distant"
failedToPreviewUrl: "Aperçu d'URL échoué"
update: "Mettre à jour"
rolesThatCanBeUsedThisEmojiAsReaction: "Rôles qui peuvent utiliser cet émoji comme réaction"
@@ -1222,13 +1244,55 @@ enableHorizontalSwipe: "Glisser pour changer d'onglet"
loading: "Chargement en cours"
surrender: "Annuler"
gameRetry: "Réessayer"
+notUsePleaseLeaveBlank: "Laisser vide si non utilisé"
+useTotp: "Entrer un mot de passe à usage unique"
+useBackupCode: "Utiliser le codes de secours"
launchApp: "Lancer l'app"
+useNativeUIForVideoAudioPlayer: "Lire les vidéos et audios en utilisant l'UI du navigateur"
+keepOriginalFilename: "Garder le nom original du fichier"
+keepOriginalFilenameDescription: "Si vous désactivez ce paramètre, les noms de fichiers seront automatiquement remplacés par des noms aléatoires lorsque vous téléchargerez des fichiers."
+noDescription: "Il n'y a pas de description"
+alwaysConfirmFollow: "Confirmer lors d'un abonnement"
inquiry: "Contact"
+tryAgain: "Veuillez réessayer plus tard"
+confirmWhenRevealingSensitiveMedia: "Confirmer pour révéler du contenu sensible"
+sensitiveMediaRevealConfirm: "Ceci pourrait être du contenu sensible. Voulez-vous l'afficher ?"
+createdLists: "Listes créées"
+createdAntennas: "Antennes créées"
+fromX: "De {x}"
+genEmbedCode: "Générer le code d'intégration"
+noteOfThisUser: "Notes de cet·te utilisateur·rice"
+clipNoteLimitExceeded: "Aucune note supplémentaire ne peut être ajoutée à ce clip."
+performance: "Performance"
+modified: "Modifié"
+discard: "Annuler"
+thereAreNChanges: "Il y a {n} modification(s)"
+signinWithPasskey: "Se connecter avec une clé d'accès"
+unknownWebAuthnKey: "Clé d'accès inconnue."
+passkeyVerificationFailed: "La vérification de la clé d'accès a échoué."
+passkeyVerificationSucceededButPasswordlessLoginDisabled: "La vérification de la clé d'accès a réussi, mais la connexion sans mot de passe est désactivée."
+messageToFollower: "Message aux abonné·es"
+target: "Destinataire"
+prohibitedWordsForNameOfUser: "Mots interdits pour les noms d'utilisateur·rices"
+lockdown: "Verrouiller"
+pleaseSelectAccount: "Sélectionner un compte"
+availableRoles: "Rôles disponibles"
+_abuseUserReport:
+ forward: "Transférer"
+ forwardDescription: "Transférer le signalement vers une instance distante en tant qu'anonyme."
+ resolve: "Résoudre"
+ accept: "Accepter"
+ reject: "Rejeter"
+ resolveTutorial: "Si le signalement est légitime dans son contenu, sélectionnez « Accepter » pour marquer le cas comme résolu par l'affirmative.\nSi le contenu du rapport n'est pas légitime, sélectionnez « Rejeter » pour marquer le cas comme résolu par la négative."
_delivery:
status: "Statut de la diffusion"
stop: "Suspendu·e"
+ resume: "Reprendre"
_type:
none: "Publié"
+ manuallySuspended: "Suspendre manuellement"
+ goneSuspended: "L'instance est suspendue en raison de la suppression de ce dernier"
+ autoSuspendedForNotResponding: "L'instance est suspendue car elle ne répond pas"
_bubbleGame:
howToPlay: "Comment jouer"
hold: "Réserver"
@@ -1239,6 +1303,7 @@ _bubbleGame:
maxChain: "Nombre maximum de chaînes"
yen: "{yen} yens"
estimatedQty: "{qty} pièces"
+ scoreSweets: "{onigiriQtyWithUnit} Onigiri(s)"
_announcement:
forExistingUsers: "Pour les utilisateurs existants seulement"
needConfirmationToRead: "Exiger la confirmation de la lecture"
@@ -1258,6 +1323,7 @@ _initialAccountSetting:
profileSetting: "Paramètres du profil"
privacySetting: "Paramètres de confidentialité"
initialAccountSettingCompleted: "Configuration du profil terminée avec succès !"
+ haveFun: "Profitez de {name} !"
youCanContinueTutorial: "Vous pouvez procéder au tutoriel sur l'utilisation de {name}(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 ?"
@@ -1351,18 +1417,60 @@ _achievements:
flavor: "Passez un bon moment avec Misskey !"
_notes10:
title: "Quelques notes"
+ description: "Poster 10 notes"
_notes100:
title: "Beaucoup de notes"
+ description: "Poster 100 notes"
+ _notes500:
+ title: "Couvert de notes"
+ description: "Poster 500 notes"
+ _notes1000:
+ title: "Une montagne de notes"
+ description: "Poster 1000 notes"
+ _notes5000:
+ title: "Débordement de notes"
+ description: "Poster 5 000 notes"
+ _notes10000:
+ title: "Super note"
+ description: "Poster 10 000 notes"
+ _notes20000:
+ title: "Encore... plus... de... notes..."
+ description: "Poster 20 000 notes"
+ _notes30000:
+ title: "Notes notes notes !"
+ description: "Poster 30 000 notes"
+ _notes40000:
+ title: "Usine de notes"
+ description: "Poster 40 000 notes"
+ _notes50000:
+ title: "Planète des notes"
+ description: "Poster 50 000 notes"
+ _notes60000:
+ title: "Quasar de note"
+ description: "Poster 50 000 notes"
+ _notes70000:
+ title: "Trou noir de notes"
+ description: "Poster 70 000 notes"
+ _notes80000:
+ title: "Galaxie de notes"
+ description: "Poster 80 000 notes"
+ _notes90000:
+ title: "Univers de notes"
+ description: "Poster 90 000 notes"
_notes100000:
title: "ALL YOUR NOTE ARE BELONG TO US"
+ description: "Poster 100 000 notes"
+ flavor: "Avez-vous tant de choses à dire ?"
_login3:
- title: "Débutant Ⅰ"
+ title: "Débutant I"
description: "Se connecter pour un total de 3 jours"
+ flavor: "Dès maintenant, appelez-moi Misskeynaute"
_login7:
- title: "Débutant Ⅱ"
+ title: "Débutant II"
description: "Se connecter pour un total de 7 jours"
+ flavor: "On s'habitue ?"
_login15:
- title: "Débutant Ⅲ"
+ title: "Débutant III"
description: "Se connecter pour un total de 15 jours"
_login30:
title: "Misskeynaute I"
@@ -1386,6 +1494,7 @@ _achievements:
_login500:
title: "Expert I"
description: "Se connecter pour un total de 500 jours"
+ flavor: "Non, mes amis, j'aime les notes"
_login600:
title: "Expert II"
description: "Se connecter pour un total de 600 jours"
@@ -1393,11 +1502,18 @@ _achievements:
title: "Expert III"
description: "Se connecter pour un total de 700 jours"
_login800:
+ title: "Maître des notes I"
description: "Se connecter pour un total de 800 jours"
_login900:
+ title: "Maître des notes II"
description: "Se connecter pour un total de 900 jours"
_login1000:
+ title: "Maître des notes III"
+ description: "Se connecter pour un total de 1 000 jours"
flavor: "Merci d'utiliser Misskey !"
+ _noteClipped1:
+ title: "Je... dois... clip..."
+ description: "Ajouter sa première note aux clips"
_profileFilled:
title: "Bien préparé"
description: "Configuration de votre profil"
@@ -1456,21 +1572,31 @@ _achievements:
_driveFolderCircularReference:
title: "Référence circulaire"
_setNameToSyuilo:
+ title: "Complexe de dieu"
description: "Vous avez spécifié « syuilo » comme nom"
_passedSinceAccountCreated1:
title: "Premier anniversaire"
+ description: "Un an est passé depuis la création du compte"
_passedSinceAccountCreated2:
title: "Second anniversaire"
+ description: "Deux ans sont passés depuis la création du compte"
_passedSinceAccountCreated3:
title: "3ème anniversaire"
+ description: "Trois ans sont passés depuis la création du compte"
_loggedInOnBirthday:
title: "Joyeux Anniversaire !"
description: "Vous vous êtes connecté à la date de votre anniversaire"
_loggedInOnNewYearsDay:
title: "Bonne année !"
+ description: "Vous vous êtes connecté le premier jour de l'année"
+ flavor: "Merci pour le soutient continue sur cette instance."
_cookieClicked:
+ title: "Jeu de clic sur des cookies"
+ description: "Cliqué sur un cookie"
flavor: "Attendez une minute, vous êtes sur le mauvais site web ?"
_brainDiver:
+ title: "Brain Diver"
+ description: "Poster le lien sur Brain Diver"
flavor: "Misskey-Misskey La-Tu-Ma"
_smashTestNotificationButton:
title: "Débordement de tests"
@@ -1478,6 +1604,11 @@ _achievements:
_tutorialCompleted:
title: "Diplôme de la course élémentaire de Misskey"
description: "Terminer le tutoriel"
+ _bubbleGameExplodingHead:
+ title: "🤯"
+ description: "Le plus gros objet du jeu de bulles"
+ _bubbleGameDoubleExplodingHead:
+ title: "Double🤯"
_role:
new: "Nouveau rôle"
edit: "Modifier le rôle"
@@ -1508,9 +1639,11 @@ _role:
canManageCustomEmojis: "Gestion des émojis personnalisés"
canManageAvatarDecorations: "Gestion des décorations d'avatar"
driveCapacity: "Capacité de stockage du Disque"
+ antennaMax: "Nombre maximum d'antennes"
wordMuteMax: "Nombre maximal de caractères dans le filtre de mots"
canUseTranslator: "Usage de la fonctionnalité de traduction"
avatarDecorationLimit: "Nombre maximal de décorations d'avatar"
+ canImportAntennas: "Autoriser l'importation d'antennes"
_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"
@@ -1793,6 +1926,29 @@ _permissions:
"write:gallery": "Éditer la galerie"
"read:gallery-likes": "Voir les mentions « J'aime » dans la galerie"
"write:gallery-likes": "Gérer les mentions « J'aime » dans la galerie"
+ "read:flash": "Voir le Play"
+ "write:flash": "Modifier le Play"
+ "read:flash-likes": "Lire vos mentions j'aime des Play"
+ "write:flash-likes": "Modifier vos mentions j'aime des Play"
+ "read:admin:abuse-user-reports": "Voir les utilisateurs signalés"
+ "write:admin:delete-account": "Supprimer le compte d'utilisateur"
+ "write:admin:delete-all-files-of-a-user": "Supprimer tous les fichiers d'un utilisateur"
+ "read:admin:index-stats": "Voir les statistiques sur les index de base de données"
+ "read:admin:table-stats": "Voir les statistiques sur les index de base de données"
+ "read:admin:user-ips": "Voir l'adresse IP de l'utilisateur"
+ "read:admin:meta": "Voir les métadonnées de l'instance"
+ "write:admin:reset-password": "Réinitialiser le mot de passe de l'utilisateur"
+ "write:admin:resolve-abuse-user-report": "Résoudre le signalement d'un utilisateur"
+ "write:admin:send-email": "Envoyer un mail"
+ "read:admin:server-info": "Voir les informations de l'instance"
+ "read:admin:show-moderation-log": "Voir les logs de modération"
+ "read:admin:show-user": "Voir les informations privées de l'utilisateur"
+ "write:admin:suspend-user": "Suspendre l'utilisateur"
+ "write:admin:unset-user-avatar": "Retirer l'avatar de l'utilisateur"
+ "write:admin:unset-user-banner": "Retirer la bannière de l'utilisateur"
+ "write:admin:unsuspend-user": "Lever la suspension d'un utilisateur"
+ "write:admin:meta": "Gérer les métadonnées de l'instance"
+ "write:admin:roles": "Gérer les rôles"
_auth:
shareAccess: "Autoriser \"{name}\" à accéder à votre compte ?"
shareAccessAsk: "Voulez-vous vraiment autoriser cette application à accéder à votre compte?"
@@ -1944,7 +2100,16 @@ _timelines:
social: "Social"
global: "Global"
_play:
+ new: "Créer un Play"
+ edit: "Modifier un Play"
+ created: "Play créé"
+ updated: "Play édité"
+ deleted: "Play supprimé"
+ pageSetting: "Configuration du Play"
+ editThisPage: "Modifier ce Play"
viewSource: "Afficher la source"
+ my: "Mes Play"
+ liked: "Play aimés"
featured: "Populaire"
title: "Titre"
script: "Script"
@@ -2018,10 +2183,13 @@ _notification:
achievementEarned: "Accomplissement déverrouillé"
testNotification: "Tester la notification"
reactedBySomeUsers: "{n} utilisateur·rice·s ont réagi"
+ likedBySomeUsers: "{n} utilisateurs ont aimé votre note"
renotedBySomeUsers: "{n} utilisateur·rice·s ont renoté"
followedBySomeUsers: "{n} utilisateur·rice·s se sont abonné·e·s à vous"
+ login: "Quelqu'un s'est connecté"
_types:
all: "Toutes"
+ note: "Nouvelles notes"
follow: "Nouvel·le abonné·e"
mention: "Mentions"
reply: "Réponses"
@@ -2071,11 +2239,14 @@ _drivecleaner:
orderByCreatedAtAsc: "Date d'ajout ascendante"
_webhookSettings:
name: "Nom"
+ secret: "Secret"
+ trigger: "Activateur"
active: "Activé"
_abuseReport:
_notificationRecipient:
_recipientType:
mail: "E-mail "
+ keywords: "Mots clés "
_moderationLogTypes:
createRole: "Rôle créé"
deleteRole: "Rôle supprimé"
@@ -2112,6 +2283,7 @@ _moderationLogTypes:
deleteAvatarDecoration: "Décoration d'avatar supprimée"
unsetUserAvatar: "Supprimer l'avatar de l'utilisateur·rice"
unsetUserBanner: "Supprimer la bannière de l'utilisateur·rice"
+ deleteFlash: "Supprimer le Play"
_fileViewer:
title: "Détails du fichier"
type: "Type du fichier"
@@ -2175,5 +2347,20 @@ _dataSaver:
title: "Mise en évidence du code"
description: "Si la notation de mise en évidence du code est utilisée, par exemple dans la MFM, elle ne sera pas chargée tant qu'elle n'aura pas été tapée. La mise en évidence du code nécessite le chargement du fichier de définition de chaque langue à mettre en évidence, mais comme ces fichiers ne sont plus chargés automatiquement, on peut s'attendre à une réduction du trafic de données."
_reversi:
+ reversi: "Reversi"
+ blackIs: "{name} joue les noirs"
+ rules: "Règles"
waitingBoth: "Préparez-vous"
+ myTurn: "C’est votre tour"
+ turnOf: "C'est le tour de {name}"
+ pastTurnOf: "Tour de {name}"
+ surrender: "Se rendre"
+ surrendered: "Par abandon"
total: "Total"
+ playing: "En cours"
+ lookingForPlayer: "Recherche d'adversaire"
+_mediaControls:
+ playbackRate: "Vitesse de lecture"
+_embedCodeGen:
+ title: "Personnaliser le code d'intégration"
+ generateCode: "Générer le code d'intégration"
diff --git a/locales/hu-HU.yml b/locales/hu-HU.yml
index acc27ed092..d0fdc027e9 100644
--- a/locales/hu-HU.yml
+++ b/locales/hu-HU.yml
@@ -1,5 +1,5 @@
---
-_lang_: "Japán"
+_lang_: "Magyar"
monthAndDay: "{month}.{day}."
search: "Keresés"
notifications: "Értesítések"
diff --git a/locales/id-ID.yml b/locales/id-ID.yml
index ce3958b167..fe3f207618 100644
--- a/locales/id-ID.yml
+++ b/locales/id-ID.yml
@@ -196,6 +196,7 @@ followConfirm: "Apakah kamu yakin ingin mengikuti {name}?"
proxyAccount: "Akun proksi"
proxyAccountDescription: "Akun proksi merupakan sebuah akun yang bertindak sebagai pengikut instansi luar untuk pengguna dalam kondisi tertentu. Sebagai contoh, ketika pengguna menambahkan seorang pengguna instansi luar ke dalam daftar, aktivitas dari pengguna instansi luar tidak akan disampaikan ke instansi apabila tidak ada pengguna lokal yang mengikuti pengguna tersebut, dengan begitu akun proksilah yang akan mengikutinya."
host: "Host"
+selectSelf: "Pilih diri sendiri"
selectUser: "Pilih pengguna"
recipient: "Penerima"
annotation: "Keterangan konten"
@@ -232,6 +233,7 @@ blockedInstances: "Instansi terblokir"
blockedInstancesDescription: "Daftar nama host dari instansi yang diperlukan untuk diblokir. Instansi yang didaftarkan tidak akan dapat berkomunikasi dengan instansi ini."
silencedInstances: "Instansi yang disenyapkan"
silencedInstancesDescription: "Daftar nama host dari instansi yang ingin kamu senyapkan. Semua akun dari instansi yang terdaftar akan diperlakukan sebagai disenyapkan. Hal ini membuat akun hanya dapat membuat permintaan mengikuti, dan tidak dapat menyebutkan akun lokal apabila tidak mengikuti. Hal ini tidak akan mempengaruhi instansi yang diblokir."
+federationAllowedHosts: "Server yang membolehkan federasi"
muteAndBlock: "Bisukan / Blokir"
mutedUsers: "Pengguna yang dibisukan"
blockedUsers: "Pengguna yang diblokir"
@@ -330,6 +332,7 @@ renameFolder: "Ubah nama folder"
deleteFolder: "Hapus folder"
folder: "Folder"
addFile: "Tambahkan berkas"
+showFile: "Tampilkan berkas"
emptyDrive: "Drive kosong"
emptyFolder: "Folder kosong"
unableToDelete: "Tidak dapat menghapus"
@@ -372,7 +375,6 @@ enableLocalTimeline: "Nyalakan lini masa lokal"
enableGlobalTimeline: "Nyalakan lini masa global"
disablingTimelinesInfo: "Admin dan Moderator akan selalu memiliki akses ke semua lini masa meskipun lini masa tersebut tidak diaktifkan."
registration: "Pendaftaran"
-enableRegistration: "Nyalakan pendaftaran pengguna baru"
invite: "Undang"
driveCapacityPerLocalAccount: "Kapasitas drive per pengguna lokal"
driveCapacityPerRemoteAccount: "Kapasitas drive per pengguna remote"
@@ -504,6 +506,8 @@ uiLanguage: "Bahasa antarmuka pengguna"
aboutX: "Tentang {x}"
emojiStyle: "Gaya emoji"
native: "Native"
+menuStyle: "Gaya menu"
+style: "Gaya"
showNoteActionsOnlyHover: "Hanya tampilkan aksi catatan saat ditunjuk"
showReactionsCount: "Lihat jumlah reaksi dalam catatan"
noHistory: "Tidak ada riwayat"
@@ -927,6 +931,9 @@ oneHour: "1 Jam"
oneDay: "1 Hari"
oneWeek: "1 Bulan"
oneMonth: "satu bulan"
+threeMonths: "3 bulan"
+oneYear: "1 tahun"
+threeDays: "3 hari"
reflectMayTakeTime: "Mungkin perlu beberapa saat untuk dicerminkan."
failedToFetchAccountInformation: "Gagal untuk mendapatkan informasi akun"
rateLimitExceeded: "Batas sudah terlampaui"
@@ -1101,6 +1108,7 @@ preservedUsernames: "Nama pengguna tercadangkan"
preservedUsernamesDescription: "Daftar nama pengguna yang dicadangkan dipisah dengan baris baru. Nama pengguna berikut akan tidak dapat dipakai pada pembuatan akun normal, namun dapat digunakan oleh admin untuk membuat akun baru. Akun yang sudah ada dengan menggunakan nama pengguna ini tidak akan terpengaruh."
createNoteFromTheFile: "Buat catatan dari berkas ini"
archive: "Arsipkan"
+archived: "Diarsipkan"
channelArchiveConfirmTitle: "Yakin untuk mengarsipkan {name}?"
channelArchiveConfirmDescription: "Kanal yang diarsipkan tidak akan muncul pada daftar kanal atau hasil pencarian. Postingan baru juga tidak dapat ditambahkan lagi."
thisChannelArchived: "Kanal ini telah diarsipkan."
@@ -1111,6 +1119,7 @@ preventAiLearning: "Tolak penggunaan Pembelajaran Mesin (AI Generatif)"
preventAiLearningDescription: "Minta perayap web untuk tidak menggunakan materi teks atau gambar yang telah diposting ke dalam set data Pembelajaran Mesin (Prediktif / Generatif). Hal ini dicapai dengan menambahkan flag HTML-Response \"noai\" ke masing-masing konten. Pencegahan penuh mungkin tidak dapat dicapai dengan flag ini, karena juga dapat diabaikan begitu saja."
options: "Opsi peran"
specifyUser: "Pengguna spesifik"
+openTagPageConfirm: "Apakah ingin membuka laman tagar?"
failedToPreviewUrl: "Tidak dapat dipratinjau"
update: "Perbarui"
rolesThatCanBeUsedThisEmojiAsReaction: "Peran yang dapat menggunakan emoji ini sebagai reaksi"
@@ -1243,6 +1252,18 @@ noDescription: "Tidak ada deskripsi"
alwaysConfirmFollow: "Selalu konfirmasi ketika mengikuti"
inquiry: "Hubungi kami"
tryAgain: "Silahkan coba lagi."
+createdLists: "Senarai yang dibuat"
+createdAntennas: "Antena yang dibuat"
+fromX: "Dari {x}"
+noteOfThisUser: "Catatan oleh pengguna ini"
+clipNoteLimitExceeded: "Klip ini tak bisa ditambahi lagi catatan."
+performance: "Kinerja"
+modified: "Diubah"
+thereAreNChanges: "Ada {n} perubahan"
+prohibitedWordsForNameOfUser: "Kata yang dilarang untuk nama pengguna"
+_abuseUserReport:
+ accept: "Setuju"
+ reject: "Tolak"
_delivery:
status: "Status pengiriman"
stop: "Ditangguhkan"
@@ -1707,6 +1728,8 @@ _role:
canSearchNotes: "Penggunaan pencarian catatan"
canUseTranslator: "Penggunaan penerjemah"
avatarDecorationLimit: "Jumlah maksimum dekorasi avatar yang dapat diterapkan"
+ canImportAntennas: "Izinkan mengimpor antena"
+ canImportUserLists: "Izinkan mengimpor senarai"
_condition:
roleAssignedTo: "Ditugaskan ke peran manual"
isLocal: "Pengguna lokal"
@@ -1943,6 +1966,7 @@ _soundSettings:
driveFileTypeWarnDescription: "Pilih berkas audio"
driveFileDurationWarn: "Audio ini terlalu panjang"
driveFileDurationWarnDescription: "Audio panjang dapat mengganggu penggunaan Misskey. Masih ingin melanjutkan?"
+ driveFileError: "Tak bisa memuat audio. Mohon ubah pengaturan"
_ago:
future: "Masa depan"
justNow: "Baru saja"
@@ -2415,6 +2439,8 @@ _abuseReport:
_notificationRecipient:
_recipientType:
mail: "Surel"
+ webhook: "Webhook"
+ keywords: "Kata kunci"
_moderationLogTypes:
createRole: "Peran telah dibuat"
deleteRole: "Peran telah dihapus"
@@ -2452,6 +2478,7 @@ _moderationLogTypes:
deleteAvatarDecoration: "Hapus dekorasi avatar"
unsetUserAvatar: "Hapus avatar pengguna"
unsetUserBanner: "Hapus banner pengguna"
+ deleteAccount: "Akun dihapus"
_fileViewer:
title: "Rincian berkas"
type: "Jenis berkas"
diff --git a/locales/index.d.ts b/locales/index.d.ts
index d1cb1f97ea..7d9f3d7864 100644
--- a/locales/index.d.ts
+++ b/locales/index.d.ts
@@ -1547,10 +1547,6 @@ export interface Locale extends ILocale {
*/
"registration": string;
/**
- * 誰ã§ã‚‚æ–°è¦ç™»éŒ²ã§ãるよã†ã«ã™ã‚‹
- */
- "enableRegistration": string;
- /**
* 招待
*/
"invite": string;
@@ -2367,6 +2363,10 @@ export interface Locale extends ILocale {
*/
"details": string;
/**
+ * リノートã®è©³ç´°
+ */
+ "renoteDetails": string;
+ /**
* çµµæ–‡å­—ã‚’é¸æŠž
*/
"chooseEmoji": string;
@@ -3808,6 +3808,18 @@ export interface Locale extends ILocale {
*/
"oneMonth": string;
/**
+ * 3ヶ月
+ */
+ "threeMonths": string;
+ /**
+ * 1å¹´
+ */
+ "oneYear": string;
+ /**
+ * 3æ—¥
+ */
+ "threeDays": string;
+ /**
* åæ˜ ã•れるã¾ã§æ™‚é–“ãŒã‹ã‹ã‚‹å ´åˆãŒã‚りã¾ã™ã€‚
*/
"reflectMayTakeTime": string;
@@ -5191,6 +5203,72 @@ export interface Locale extends ILocale {
* åå‰ã«ç¦æ­¢ã•れã¦ã„る文字列ãŒå«ã¾ã‚Œã¦ã„ã¾ã™ã€‚ã“ã®åå‰ã‚’使用ã—ãŸã„å ´åˆã¯ã€ã‚µãƒ¼ãƒãƒ¼ç®¡ç†è€…ã«ãŠå•ã„åˆã‚ã›ãã ã•ã„。
*/
"yourNameContainsProhibitedWordsDescription": string;
+ /**
+ * 投稿者ã«ã‚ˆã‚Šã€è¡¨ç¤ºã«ã¯ãƒ­ã‚°ã‚¤ãƒ³ãŒå¿…è¦ã¨è¨­å®šã•れã¦ã„ã¾ã™
+ */
+ "thisContentsAreMarkedAsSigninRequiredByAuthor": string;
+ /**
+ * ロックダウン
+ */
+ "lockdown": string;
+ /**
+ * ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã‚’é¸æŠžã—ã¦ãã ã•ã„
+ */
+ "pleaseSelectAccount": string;
+ /**
+ * 利用å¯èƒ½ãªãƒ­ãƒ¼ãƒ«
+ */
+ "availableRoles": string;
+ /**
+ * 注æ„事項をç†è§£ã—ãŸä¸Šã§ã‚ªãƒ³ã«ã—ã¾ã™ã€‚
+ */
+ "acknowledgeNotesAndEnable": string;
+ "_accountSettings": {
+ /**
+ * コンテンツã®è¡¨ç¤ºã«ãƒ­ã‚°ã‚¤ãƒ³ã‚’å¿…é ˆã«ã™ã‚‹
+ */
+ "requireSigninToViewContents": string;
+ /**
+ * ã‚ãªãŸãŒä½œæˆã—ãŸå…¨ã¦ã®ãƒŽãƒ¼ãƒˆãªã©ã®ã‚³ãƒ³ãƒ†ãƒ³ãƒ„を表示ã™ã‚‹ã®ã«ãƒ­ã‚°ã‚¤ãƒ³ã‚’å¿…é ˆã«ã—ã¾ã™ã€‚ã‚¯ãƒ­ãƒ¼ãƒ©ãƒ¼ã«æƒ…å ±ãŒåŽé›†ã•れるã®ã‚’防ãåŠ¹æžœãŒæœŸå¾…ã§ãã¾ã™ã€‚
+ */
+ "requireSigninToViewContentsDescription1": string;
+ /**
+ * URLプレビュー(OGP)ã€Webページã¸ã®åŸ‹ã‚è¾¼ã¿ã€ãƒŽãƒ¼ãƒˆã®å¼•用ã«å¯¾å¿œã—ã¦ã„ãªã„サーãƒãƒ¼ã‹ã‚‰ã®è¡¨ç¤ºã‚‚ä¸å¯ã«ãªã‚Šã¾ã™ã€‚
+ */
+ "requireSigninToViewContentsDescription2": string;
+ /**
+ * リモートサーãƒãƒ¼ã«é€£åˆã•れãŸã‚³ãƒ³ãƒ†ãƒ³ãƒ„ã§ã¯ã€ã“れらã®åˆ¶é™ãŒé©ç”¨ã•れãªã„å ´åˆãŒã‚りã¾ã™ã€‚
+ */
+ "requireSigninToViewContentsDescription3": string;
+ /**
+ * éŽåŽ»ã®ãƒŽãƒ¼ãƒˆã‚’フォロワーã®ã¿è¡¨ç¤ºå¯èƒ½ã«ã™ã‚‹
+ */
+ "makeNotesFollowersOnlyBefore": string;
+ /**
+ * ã“ã®æ©Ÿèƒ½ãŒæœ‰åйã«ãªã£ã¦ã„ã‚‹é–“ã€è¨­å®šã•ã‚ŒãŸæ—¥æ™‚よりéŽåŽ»ã€ã¾ãŸã¯è¨­å®šã•ã‚ŒãŸæ™‚間を経éŽã—ã¦ã„るノートãŒãƒ•ォロワーã®ã¿è¡¨ç¤ºå¯èƒ½ã«ãªã‚Šã¾ã™ã€‚ç„¡åŠ¹ã«æˆ»ã™ã¨ã€ãƒŽãƒ¼ãƒˆã®å…¬é–‹çŠ¶æ…‹ã‚‚å…ƒã«æˆ»ã‚Šã¾ã™ã€‚
+ */
+ "makeNotesFollowersOnlyBeforeDescription": string;
+ /**
+ * éŽåŽ»ã®ãƒŽãƒ¼ãƒˆã‚’éžå…¬é–‹åŒ–ã™ã‚‹
+ */
+ "makeNotesHiddenBefore": string;
+ /**
+ * ã“ã®æ©Ÿèƒ½ãŒæœ‰åйã«ãªã£ã¦ã„ã‚‹é–“ã€è¨­å®šã•ã‚ŒãŸæ—¥æ™‚よりéŽåŽ»ã€ã¾ãŸã¯è¨­å®šã•ã‚ŒãŸæ™‚間を経éŽã—ã¦ã„るノートãŒè‡ªåˆ†ã®ã¿è¡¨ç¤ºå¯èƒ½(éžå…¬é–‹åŒ–)ã«ãªã‚Šã¾ã™ã€‚ç„¡åŠ¹ã«æˆ»ã™ã¨ã€ãƒŽãƒ¼ãƒˆã®å…¬é–‹çŠ¶æ…‹ã‚‚å…ƒã«æˆ»ã‚Šã¾ã™ã€‚
+ */
+ "makeNotesHiddenBeforeDescription": string;
+ /**
+ * リモートサーãƒãƒ¼ã«é€£åˆã•れãŸãƒŽãƒ¼ãƒˆã«ã¯åŠ¹æžœãŒåŠã°ãªã„å ´åˆãŒã‚りã¾ã™ã€‚
+ */
+ "mayNotEffectForFederatedNotes": string;
+ /**
+ * 指定ã—ãŸæ™‚間を経éŽã—ã¦ã„るノート
+ */
+ "notesHavePassedSpecifiedPeriod": string;
+ /**
+ * 指定ã—ãŸæ—¥æ™‚よりå‰ã®ãƒŽãƒ¼ãƒˆ
+ */
+ "notesOlderThanSpecifiedDateAndTime": string;
+ };
"_abuseUserReport": {
/**
* 転é€
@@ -5734,6 +5812,14 @@ export interface Locale extends ILocale {
*/
"inquiryUrlDescription": string;
/**
+ * アカウントã®ä½œæˆã‚’オープンã«ã™ã‚‹
+ */
+ "openRegistration": string;
+ /**
+ * 登録を開放ã™ã‚‹ã“ã¨ã¯ãƒªã‚¹ã‚¯ãŒä¼´ã„ã¾ã™ã€‚サーãƒãƒ¼ã‚’常ã«ç›£è¦–ã—ã€ãƒˆãƒ©ãƒ–ルãŒç™ºç”Ÿã—ãŸéš›ã«ã™ãã«å¯¾å¿œã§ãる体制ãŒã‚ã‚‹å ´åˆã®ã¿ã‚ªãƒ³ã«ã™ã‚‹ã“ã¨ã‚’推奨ã—ã¾ã™ã€‚
+ */
+ "openRegistrationWarning": string;
+ /**
* 一定期間モデレーターã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ãƒ†ã‚£ãŒæ¤œå‡ºã•れãªã‹ã£ãŸå ´åˆã€ã‚¹ãƒ‘ム防止ã®ãŸã‚ã“ã®è¨­å®šã¯è‡ªå‹•ã§ã‚ªãƒ•ã«ãªã‚Šã¾ã™ã€‚
*/
"thisSettingWillAutomaticallyOffWhenModeratorsInactive": string;
@@ -8439,10 +8525,18 @@ export interface Locale extends ILocale {
*/
"callback": string;
/**
+ * アクセスを許å¯ã—ã¾ã—ãŸ
+ */
+ "accepted": string;
+ /**
* アクセスを拒å¦ã—ã¾ã—ãŸ
*/
"denied": string;
/**
+ * 以下ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã¨ã—ã¦æ“作ã—ã¦ã„ã¾ã™
+ */
+ "scopeUser": string;
+ /**
* アプリケーションã«ã‚¢ã‚¯ã‚»ã‚¹è¨±å¯ã‚’与ãˆã‚‹ã«ã¯ã€ãƒ­ã‚°ã‚¤ãƒ³ãŒå¿…è¦ã§ã™ã€‚
*/
"pleaseLogin": string;
@@ -8450,6 +8544,10 @@ export interface Locale extends ILocale {
* Allowed
*/
"allowed": string;
+ /**
+ * アクセスを許å¯ã™ã‚‹ã¨ã€è‡ªå‹•ã§ä»¥ä¸‹ã®URLã«é·ç§»ã—ã¾ã™
+ */
+ "byClickingYouWillBeRedirectedToThisUrl": string;
};
"_antennaSources": {
/**
@@ -11374,6 +11472,38 @@ export interface Locale extends ILocale {
* Remote followers may have incomplete or outdated activity
*/
"remoteFollowersWarning": string;
+ "_selfXssPrevention": {
+ /**
+ * 警告
+ */
+ "warning": string;
+ /**
+ * 「ã“ã®ç”»é¢ã«ä½•ã‹è²¼ã‚Šä»˜ã‘ã‚ã€ã¯ã™ã¹ã¦è©æ¬ºã§ã™ã€‚
+ */
+ "title": string;
+ /**
+ * ã“ã“ã«ä½•ã‹ã‚’貼り付ã‘ã‚‹ã¨ã€æ‚ªæ„ã®ã‚るユーザーã«ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã‚’ä¹—ã£å–られãŸã‚Šã€å€‹äººæƒ…報を盗ã¾ã‚ŒãŸã‚Šã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚
+ */
+ "description1": string;
+ /**
+ * 貼り付ã‘よã†ã¨ã—ã¦ã„ã‚‹ã‚‚ã®ãŒä½•ãªã®ã‹ã‚’正確ã«ç†è§£ã—ã¦ã„ãªã„å ´åˆã¯ã€%c今ã™ã作業を中止ã—ã¦ã“ã®ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ã‚’é–‰ã˜ã¦ãã ã•ã„。
+ */
+ "description2": string;
+ /**
+ * 詳ã—ãã¯ã“ã¡ã‚‰ã‚’ã”確èªãã ã•ã„。 {link}
+ */
+ "description3": ParameterizedString<"link">;
+ };
+ "_followRequest": {
+ /**
+ * å—ã‘å–ã£ãŸç”³è«‹
+ */
+ "recieved": string;
+ /**
+ * é€ã£ãŸç”³è«‹
+ */
+ "sent": string;
+ };
}
declare const locales: {
[lang: string]: Locale;
diff --git a/locales/index.js b/locales/index.js
index b08158e55d..a9f81da1cf 100644
--- a/locales/index.js
+++ b/locales/index.js
@@ -15,6 +15,7 @@ export const merge = (...args) => args.reduce((a, c) => ({
const languages = [
'ar-SA',
+ 'ca-ES',
'cs-CZ',
'da-DK',
'de-DE',
diff --git a/locales/it-IT.yml b/locales/it-IT.yml
index bcabf1bdb6..66ca935b1b 100644
--- a/locales/it-IT.yml
+++ b/locales/it-IT.yml
@@ -68,7 +68,7 @@ reply: "Rispondi"
loadMore: "Mostra di più"
showMore: "Espandi"
showLess: "Comprimi"
-youGotNewFollower: "Adesso ti segue"
+youGotNewFollower: "Hai un nuovo Follower"
receiveFollowRequest: "Hai ricevuto una richiesta di follow"
followRequestAccepted: "Ha accettato la tua richiesta di follow"
mention: "Menzioni"
@@ -80,14 +80,14 @@ export: "Esporta"
files: "Allegati"
download: "Scarica"
driveFileDeleteConfirm: "Vuoi davvero eliminare il file \"{name}\", e le Note a cui è stato allegato?"
-unfollowConfirm: "Vuoi davvero smettere di seguire {name}?"
+unfollowConfirm: "Vuoi davvero togliere il Following a {name}?"
exportRequested: "Hai richiesto un'esportazione, e potrebbe volerci tempo. Quando sarà compiuta, il file verrà aggiunto direttamente al Drive."
importRequested: "Hai richiesto un'importazione. Potrebbe richiedere un po' di tempo."
lists: "Liste"
noLists: "Nessuna lista"
note: "Nota"
notes: "Note"
-following: "Follow"
+following: "Following"
followers: "Follower"
followsYou: "Follower"
createList: "Aggiungi una nuova lista"
@@ -106,7 +106,7 @@ defaultNoteVisibility: "Privacy predefinita delle note"
follow: "Segui"
followRequest: "Richiesta di follow"
followRequests: "Richieste di follow"
-unfollow: "Smetti di seguire"
+unfollow: "Togli Following"
followRequestPending: "Richiesta in approvazione"
enterEmoji: "Inserisci emoji"
renote: "Rinota"
@@ -195,7 +195,7 @@ setWallpaper: "Imposta sfondo"
removeWallpaper: "Elimina lo sfondo"
searchWith: "Cerca: {q}"
youHaveNoLists: "Non hai ancora creato nessuna lista"
-followConfirm: "Vuoi seguire {name}?"
+followConfirm: "Confermi il Following a {name}?"
proxyAccount: "Profilo proxy"
proxyAccountDescription: "Un profilo proxy funziona come follower per i profili remoti, sotto certe condizioni. Ad esempio, quando un profilo locale ne inserisce uno remoto in una lista (senza seguirlo), se nessun altro segue quel profilo remoto, le attività non possono essere distribuite. Dunque, il profilo proxy le seguirà per tutti."
host: "Host"
@@ -263,7 +263,7 @@ all: "Tutte"
subscribing: "Iscrizione"
publishing: "Pubblicazione"
notResponding: "Nessuna risposta"
-instanceFollowing: "Seguiti dall'istanza"
+instanceFollowing: "Istanza Following"
instanceFollowers: "Follower dell'istanza"
instanceUsers: "Profili nell'istanza"
changePassword: "Aggiorna Password"
@@ -382,7 +382,6 @@ enableLocalTimeline: "Abilita la timeline locale"
enableGlobalTimeline: "Abilita la timeline federata"
disablingTimelinesInfo: "Anche disabilitandole, gli Amministratori e i Moderatori potranno comunque accedervi."
registration: "Iscriviti"
-enableRegistration: "Consenti a chiunque di registrarsi"
invite: "Invita"
driveCapacityPerLocalAccount: "Capienza del Drive per profilo locale"
driveCapacityPerRemoteAccount: "Capienza del Drive per profilo remoto"
@@ -615,7 +614,7 @@ unsetUserBannerConfirm: "Vuoi davvero rimuovere l'intestazione dal profilo?"
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ù."
+removeAllFollowingDescription: "Togli il Following a tutti i profili su {host}. Utile, ad esempio, quando l'istanza non esiste più."
userSuspended: "L'utente è in sospensione"
userSilenced: "Profilo silenziato"
yourAccountSuspendedTitle: "Questo profilo è sospeso"
@@ -688,7 +687,7 @@ hardWordMute: "Filtro parole forte"
regexpError: "errore regex"
regexpErrorDescription: "Si è verificato un errore nell'espressione regolare alla riga {line} della parola muta {tab}:"
instanceMute: "Silenziare l'istanza"
-userSaysSomething: "{name} ha parlato"
+userSaysSomething: "{name} ha detto qualcosa"
makeActive: "Attiva"
display: "Visualizza"
copy: "Copia"
@@ -703,7 +702,7 @@ notificationSetting: "Impostazioni notifiche"
notificationSettingDesc: "Seleziona il tipo di notifiche da visualizzare."
useGlobalSetting: "Usa impostazioni generali"
useGlobalSettingDesc: "Quando attiva, verranno utilizzate le impostazioni notifiche del profilo. Altrimenti si possono segliere impostazioni personalizzate."
-other: "Ulteriori"
+other: "Eccetera"
regenerateLoginToken: "Genera di nuovo un token di connessione"
regenerateLoginTokenDescription: "Genera un nuovo token di autenticazione. Solitamente questa operazione non è necessaria: quando si genera un nuovo token, tutti i dispositivi vanno disconnessi."
theKeywordWhenSearchingForCustomEmoji: "Questa sarà la parola chiave durante la ricerca di emoji personalizzate"
@@ -747,7 +746,7 @@ repliesCount: "Numero di risposte inviate"
renotesCount: "Numero di note che hai ricondiviso"
repliedCount: "Numero di risposte ricevute"
renotedCount: "Numero delle tue note ricondivise"
-followingCount: "Numero di profili seguiti"
+followingCount: "Numero di Following"
followersCount: "Numero di profili che ti seguono"
sentReactionsCount: "Numero di reazioni inviate"
receivedReactionsCount: "Numero di reazioni ricevute"
@@ -901,8 +900,8 @@ pubSub: "Publish/Subscribe del profilo"
lastCommunication: "La comunicazione più recente"
resolved: "Risolto"
unresolved: "Non risolto"
-breakFollow: "Impedire di seguirmi"
-breakFollowConfirm: "Vuoi davvero che questo profilo smetta di seguirti?"
+breakFollow: "Rimuovi Follower"
+breakFollowConfirm: "Vuoi davvero togliere questo Follower?"
itsOn: "Abilitato"
itsOff: "Disabilitato"
on: "Acceso"
@@ -917,7 +916,7 @@ makeReactionsPublicDescription: "La lista delle reazioni che avete fatto è a di
classic: "Classico"
muteThread: "Silenziare conversazione"
unmuteThread: "Riattiva la conversazione"
-followingVisibility: "Visibilità dei profili seguiti"
+followingVisibility: "Visibilità dei Following"
followersVisibility: "Visibilità dei profili che ti seguono"
continueThread: "Altre conversazioni"
deleteAccountConfirm: "Così verrà eliminato il profilo. Vuoi procedere?"
@@ -947,6 +946,9 @@ oneHour: "1 ora"
oneDay: "1 giorno"
oneWeek: "1 settimana"
oneMonth: "Un mese"
+threeMonths: "3 mesi"
+oneYear: "1 anno"
+threeDays: "3 giorni"
reflectMayTakeTime: "Potrebbe essere necessario un po' di tempo perché ciò abbia effetto."
failedToFetchAccountInformation: "Impossibile recuperare le informazioni sul profilo"
rateLimitExceeded: "Superato il limite di richieste."
@@ -965,7 +967,7 @@ 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"
-typeToConfirm: "Per eseguire questa operazione, digitare {x}"
+typeToConfirm: "Digita {x} per continuare"
deleteAccount: "Eliminazione profilo"
document: "Documento"
numberOfPageCache: "Numero di pagine cache"
@@ -1020,7 +1022,7 @@ neverShow: "Non mostrare più"
remindMeLater: "Rimanda"
didYouLikeMisskey: "Ti piace Misskey?"
pleaseDonate: "Misskey è il software libero utilizzato su {host}. Offrendo una donazione è più facile continuare a svilupparlo!"
-correspondingSourceIsAvailable: ""
+correspondingSourceIsAvailable: "Il codice sorgente corrispondente è disponibile su {anchor}."
roles: "Ruoli"
role: "Ruolo"
noRole: "Ruolo non trovato"
@@ -1130,7 +1132,7 @@ channelArchiveConfirmDescription: "Un canale archiviato non compare nell'elenco
thisChannelArchived: "Questo canale è stato archiviato."
displayOfNote: "Visualizzazione delle Note"
initialAccountSetting: "Impostazioni iniziali del profilo"
-youFollowing: "Seguiti"
+youFollowing: "Following"
preventAiLearning: "Impedisci l'apprendimento della IA"
preventAiLearningDescription: "Aggiungendo il campo \"noai\" alla risposta HTML, si indica ai Robot esterni di non usare testi e allegati per addestrare sistemi di Machine Learning (IA predittiva/generativa). Anche se è impossibile sapere se la richiesta venga onorata o semplicemente ignorata."
options: "Opzioni del ruolo"
@@ -1293,6 +1295,21 @@ prohibitedWordsForNameOfUser: "Parole proibite (nome utente)"
prohibitedWordsForNameOfUserDescription: "Il sistema rifiuta di rinominare un utente, se il nome contiene qualsiasi parola nell'elenco. Sono esenti i profili con privilegi di moderazione."
yourNameContainsProhibitedWords: "Il nome che hai scelto contiene una o più parole vietate"
yourNameContainsProhibitedWordsDescription: "Se desideri comunque utilizzare questo nome, contatta l''amministrazione."
+thisContentsAreMarkedAsSigninRequiredByAuthor: "L'autore richiede di iscriversi per vedere il contenuto"
+lockdown: "Isolamento"
+pleaseSelectAccount: "Per favore, seleziona un profilo"
+_accountSettings:
+ requireSigninToViewContents: "Per vedere il contenuto, è necessaria l'iscrizione"
+ requireSigninToViewContentsDescription1: "Richiedere l'iscrizione per visualizzare tutte le Note e gli altri contenuti che hai creato. Probabilmente l'effetto è impedire la raccolta di informazioni da parte dei bot crawler."
+ requireSigninToViewContentsDescription2: "La visualizzazione verrà disabilitata a server che non supportano l'anteprima URL (OGP), all'incorporamento nelle pagine Web e alla citazione delle Note."
+ requireSigninToViewContentsDescription3: "Queste restrizioni potrebbero non applicarsi al contenuto federato su server remoti."
+ makeNotesFollowersOnlyBefore: "Rendi visibili solo ai Follower le Note pubblicate in precedenza"
+ makeNotesFollowersOnlyBeforeDescription: "Mentre questa funzione è abilitata, le Note antecedenti al momento impostato, saranno visibili solo ai profili Follower. Disabilitandola nuovamente, verrà ripristinata anche la visibilità pubblica della Nota."
+ makeNotesHiddenBefore: "Nascondi le Note pubblicate in precedenza"
+ makeNotesHiddenBeforeDescription: "Mentre questa funzione è abilitata, le Note antecedenti al momento impostato, saranno visibili soltanto a te (private). Disabilitandola nuovamente, verrà ripristinata anche la visibilità pubblica della Nota."
+ mayNotEffectForFederatedNotes: "Le Note già federate su server remoti potrebbero non essere modificate."
+ notesHavePassedSpecifiedPeriod: "Note antecedenti al periodo specificato"
+ notesOlderThanSpecifiedDateAndTime: "Note antecedenti al momento specificato"
_abuseUserReport:
forward: "Inoltra"
forwardDescription: "Inoltra il report al server remoto, per mezzo di account di sistema, anonimo."
@@ -1378,7 +1395,7 @@ _initialTutorial:
_timeline:
title: "Come funziona la Timeline"
description1: "Misskey fornisce alcune Timeline (sequenze cronologiche di Note). Una di queste potrebbe essere stata disattivata dagli amministratori."
- home: "le Note provenienti dai profili che segui (follow)."
+ home: "le Note provenienti dai profili che segui (Following)."
local: "tutte le Note pubblicate dai profili di questa istanza."
social: "sia le Note della Timeline Home che quelle della Timeline Locale, insieme!"
global: "le Note da pubblicate da tutte le altre istanze federate con la nostra."
@@ -1416,7 +1433,7 @@ _initialTutorial:
title: "Il tutorial è finito! 🎉"
description: "Queste sono solamente alcune delle funzionalità principali di Misskey. Per ulteriori informazioni, {link}."
_timelineDescription:
- home: "Nella Timeline Home, la tua cronologia principale, puoi vedere le Note provenienti dai profili che segui (follow)."
+ home: "Nella Timeline Home, la tua cronologia principale, puoi vedere le Note provenienti dai profili che segui (Following)."
local: "La Timeline Locale, è una cronologia di Note pubblicate da tutti i profili iscritti su questo server."
social: "La Timeline Sociale, unisce in ordine cronologico l'elenco di Note presenti nella Timeline Home e quella Locale."
global: "La Timeline Federata ti consente di vedere le Note pubblicate dai profili di tutti gli altri server federati a questo."
@@ -1442,7 +1459,7 @@ _accountMigration:
moveFrom: "Migra un altro profilo dentro a questo"
moveFromSub: "Crea un alias verso un altro profilo remoto"
moveFromLabel: "Profilo da cui migrare #{n}"
- moveFromDescription: "Se desideri spostare i profili follower da un altro profilo a questo, devi prima creare un alias qui. Assicurati averlo creato PRIMA di eseguire l'attività! Inserisci l'indirizzo del profilo mittente in questo modo: @persona@istanza.it"
+ moveFromDescription: "Se desideri spostare i Follower da un altro profilo a questo, devi prima creare un alias qui. Assicurati averlo creato PRIMA di eseguire l'attività! Inserisci l'indirizzo del profilo mittente in questo modo: @persona@istanza.it"
moveTo: "Migrare questo profilo verso un un altro"
moveToLabel: "Profilo verso cui migrare"
moveCannotBeUndone: "La migrazione è irreversibile, non può essere interrotta o annullata."
@@ -1451,7 +1468,7 @@ _accountMigration:
startMigration: "Avvia la migrazione"
migrationConfirm: "Vuoi davvero migrare questo profilo su {account}? L'azione è irreversibile e non potrai più utilizzare questo profilo nel suo stato originale.\nInoltre, assicurati di aver già creato un alias sull'account a cui ti stai trasferendo."
movedAndCannotBeUndone: "Il tuo profilo è stato migrato.\nLa migrazione non può essere annullata."
- postMigrationNote: "Questo profilo smetterà di seguire gli altri profili remoti a 24 ore dal termine della migrazione.\nSia i Follow che i Follower scenderanno a zero. I tuoi follower saranno comunque in grado di vedere le Note per soli follower, poiché non smetteranno di seguirti."
+ postMigrationNote: "Questo profilo smetterà di seguire gli altri profili remoti a 24 ore dal termine della migrazione.\nSia i Following che i Follower scenderanno a zero. I tuoi Follower saranno comunque in grado di vedere le Note per soli Follower, poiché non smetteranno di seguirti."
movedTo: "Profilo verso cui migrare"
_achievements:
earnedAt: "Data di conseguimento"
@@ -1844,7 +1861,7 @@ _gallery:
unlike: "Non mi piace più"
_email:
_follow:
- title: "Adesso ti segue"
+ title: "Follower aggiuntivo"
_receiveFollowRequest:
title: "Hai ricevuto una richiesta di follow"
_plugin:
@@ -1908,7 +1925,7 @@ _channel:
removeBanner: "Rimuovi intestazione"
featured: "Di tendenza"
owned: "I miei canali"
- following: "Seguiti"
+ following: "Following"
usersCount: "{n} partecipanti"
notesCount: "{n} note"
nameAndDescription: "Nome e descrizione"
@@ -2074,7 +2091,7 @@ _permissions:
"read:favorites": "Visualizza i tuoi preferiti"
"write:favorites": "Gestisci i tuoi preferiti"
"read:following": "Vedi le informazioni di follow"
- "write:following": "Following di altri profili"
+ "write:following": "Aggiungere e togliere Following"
"read:messaging": "Visualizzare la chat"
"write:messaging": "Gestire la chat"
"read:mutes": "Vedi i profili silenziati"
@@ -2157,11 +2174,14 @@ _auth:
permissionAsk: "Questa app richiede le seguenti autorizzazioni:"
pleaseGoBack: "Si prega di ritornare sulla app"
callback: "Ritornando sulla app"
+ accepted: "Accesso concesso"
denied: "Accesso negato"
+ scopeUser: "Sto funzionando per il seguente profilo"
pleaseLogin: "Per favore accedi al tuo account per cambiare i permessi dell'applicazione"
+ byClickingYouWillBeRedirectedToThisUrl: "Consentendo l'accesso, si verrà reindirizzati presso questo indirizzo URL"
_antennaSources:
all: "Tutte le note"
- homeTimeline: "Note dagli utenti che segui"
+ homeTimeline: "Note dai tuoi Following"
users: "Note dagli utenti selezionati"
userList: "Note dagli utenti della lista selezionata"
userBlacklist: "Tutte le Note tranne quelle di uno o più profili specificati"
@@ -2274,7 +2294,7 @@ _exportOrImport:
allNotes: "Tutte le note"
favoritedNotes: "Note preferite"
clips: "Clip"
- followingList: "Follow"
+ followingList: "Following"
muteList: "Elenco profili silenziati"
blockingList: "Elenco profili bloccati"
userLists: "Liste"
@@ -2390,7 +2410,7 @@ _notification:
youGotReply: "{name} ti ha risposto"
youGotQuote: "{name} ha citato la tua Nota e ha detto"
youRenoted: "{name} ha rinotato"
- youWereFollowed: "Adesso ti segue"
+ youWereFollowed: "Follower aggiuntivo"
youReceivedFollowRequest: "Hai ricevuto una richiesta di follow"
yourFollowRequestAccepted: "La tua richiesta di follow è stata accettata"
pollEnded: "Risultati del sondaggio."
@@ -2413,7 +2433,7 @@ _notification:
_types:
all: "Tutto"
note: "Nuove Note"
- follow: "Nuovi profili follower"
+ follow: "Follower"
mention: "Menzioni"
reply: "Risposte"
renote: "Rinota"
@@ -2429,7 +2449,7 @@ _notification:
test: "Prova la notifica"
app: "Notifiche da applicazioni"
_actions:
- followBack: "Segui"
+ followBack: "Following ricambiato"
reply: "Rispondi"
renote: "Rinota"
_deck:
@@ -2481,7 +2501,7 @@ _webhookSettings:
trigger: "Trigger"
active: "Attivo"
_events:
- follow: "Quando segui un profilo"
+ follow: "Quando aggiungi Following"
followed: "Quando ti segue un profilo"
note: "Quando pubblichi una Nota"
reply: "Quando rispondono ad una Nota"
@@ -2710,3 +2730,9 @@ _embedCodeGen:
generateCode: "Crea il codice di incorporamento"
codeGenerated: "Codice generato"
codeGeneratedDescription: "Incolla il codice appena generato sul tuo sito web."
+_selfXssPrevention:
+ warning: "Avviso"
+ title: "\"Incolla qualcosa su questa schermata\" è tutta una truffa."
+ description1: "Incollando qualcosa qui, malintenzionati potrebbero prendere il controllo del tuo profilo o rubare i tuoi dati personali."
+ description2: "Se non sai esattamente cosa stai facendo, %c smetti subito e chiudi questa finestra."
+ description3: "Per favore, controlla questo collegamento per avere maggiori dettagli. {link}"
diff --git a/locales/ja-JP.yml b/locales/ja-JP.yml
index c448d4d50a..1b59708d85 100644
--- a/locales/ja-JP.yml
+++ b/locales/ja-JP.yml
@@ -382,7 +382,6 @@ enableLocalTimeline: "ローカルタイムラインを有効ã«ã™ã‚‹"
enableGlobalTimeline: "グローãƒãƒ«ã‚¿ã‚¤ãƒ ãƒ©ã‚¤ãƒ³ã‚’有効ã«ã™ã‚‹"
disablingTimelinesInfo: "ã“れらã®ã‚¿ã‚¤ãƒ ãƒ©ã‚¤ãƒ³ã‚’無効化ã—ã¦ã‚‚ã€åˆ©ä¾¿æ€§ã®ãŸã‚管ç†è€…ãŠã‚ˆã³ãƒ¢ãƒ‡ãƒ¬ãƒ¼ã‚¿ãƒ¼ã¯å¼•ãç¶šã利用ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚"
registration: "登録"
-enableRegistration: "誰ã§ã‚‚æ–°è¦ç™»éŒ²ã§ãるよã†ã«ã™ã‚‹"
invite: "招待"
driveCapacityPerLocalAccount: "ローカルユーザーã²ã¨ã‚Šã‚ãŸã‚Šã®ãƒ‰ãƒ©ã‚¤ãƒ–容é‡"
driveCapacityPerRemoteAccount: "リモートユーザーã²ã¨ã‚Šã‚ãŸã‚Šã®ãƒ‰ãƒ©ã‚¤ãƒ–容é‡"
@@ -587,6 +586,7 @@ masterVolume: "マスター音é‡"
notUseSound: "サウンドを出力ã—ãªã„"
useSoundOnlyWhenActive: "MisskeyãŒã‚¢ã‚¯ãƒ†ã‚£ãƒ–ãªæ™‚ã®ã¿ã‚µã‚¦ãƒ³ãƒ‰ã‚’出力ã™ã‚‹"
details: "詳細"
+renoteDetails: "リノートã®è©³ç´°"
chooseEmoji: "çµµæ–‡å­—ã‚’é¸æŠž"
unableToProcess: "æ“作を完了ã§ãã¾ã›ã‚“"
recentUsed: "最近使用"
@@ -947,6 +947,9 @@ oneHour: "1時間"
oneDay: "1æ—¥"
oneWeek: "1週間"
oneMonth: "1ヶ月"
+threeMonths: "3ヶ月"
+oneYear: "1å¹´"
+threeDays: "3æ—¥"
reflectMayTakeTime: "åæ˜ ã•れるã¾ã§æ™‚é–“ãŒã‹ã‹ã‚‹å ´åˆãŒã‚りã¾ã™ã€‚"
failedToFetchAccountInformation: "アカウント情報ã®å–å¾—ã«å¤±æ•—ã—ã¾ã—ãŸ"
rateLimitExceeded: "レート制é™ã‚’è¶…ãˆã¾ã—ãŸ"
@@ -1293,6 +1296,24 @@ prohibitedWordsForNameOfUser: "ç¦æ­¢ãƒ¯ãƒ¼ãƒ‰ï¼ˆãƒ¦ãƒ¼ã‚¶ãƒ¼ã®åå‰ï¼‰"
prohibitedWordsForNameOfUserDescription: "ã“ã®ãƒªã‚¹ãƒˆã«å«ã¾ã‚Œã‚‹æ–‡å­—列ãŒãƒ¦ãƒ¼ã‚¶ãƒ¼ã®åå‰ã«å«ã¾ã‚Œã‚‹å ´åˆã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®åå‰ã®å¤‰æ›´ã‚’æ‹’å¦ã—ã¾ã™ã€‚モデレーター権é™ã‚’æŒã¤ãƒ¦ãƒ¼ã‚¶ãƒ¼ã¯ã“ã®åˆ¶é™ã®å½±éŸ¿ã‚’å—ã‘ã¾ã›ã‚“。"
yourNameContainsProhibitedWords: "変更ã—よã†ã¨ã—ãŸåå‰ã«ç¦æ­¢ã•ã‚ŒãŸæ–‡å­—列ãŒå«ã¾ã‚Œã¦ã„ã¾ã™"
yourNameContainsProhibitedWordsDescription: "åå‰ã«ç¦æ­¢ã•れã¦ã„る文字列ãŒå«ã¾ã‚Œã¦ã„ã¾ã™ã€‚ã“ã®åå‰ã‚’使用ã—ãŸã„å ´åˆã¯ã€ã‚µãƒ¼ãƒãƒ¼ç®¡ç†è€…ã«ãŠå•ã„åˆã‚ã›ãã ã•ã„。"
+thisContentsAreMarkedAsSigninRequiredByAuthor: "投稿者ã«ã‚ˆã‚Šã€è¡¨ç¤ºã«ã¯ãƒ­ã‚°ã‚¤ãƒ³ãŒå¿…è¦ã¨è¨­å®šã•れã¦ã„ã¾ã™"
+lockdown: "ロックダウン"
+pleaseSelectAccount: "ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã‚’é¸æŠžã—ã¦ãã ã•ã„"
+availableRoles: "利用å¯èƒ½ãªãƒ­ãƒ¼ãƒ«"
+acknowledgeNotesAndEnable: "注æ„事項をç†è§£ã—ãŸä¸Šã§ã‚ªãƒ³ã«ã—ã¾ã™ã€‚"
+
+_accountSettings:
+ requireSigninToViewContents: "コンテンツã®è¡¨ç¤ºã«ãƒ­ã‚°ã‚¤ãƒ³ã‚’å¿…é ˆã«ã™ã‚‹"
+ requireSigninToViewContentsDescription1: "ã‚ãªãŸãŒä½œæˆã—ãŸå…¨ã¦ã®ãƒŽãƒ¼ãƒˆãªã©ã®ã‚³ãƒ³ãƒ†ãƒ³ãƒ„を表示ã™ã‚‹ã®ã«ãƒ­ã‚°ã‚¤ãƒ³ã‚’å¿…é ˆã«ã—ã¾ã™ã€‚ã‚¯ãƒ­ãƒ¼ãƒ©ãƒ¼ã«æƒ…å ±ãŒåŽé›†ã•れるã®ã‚’防ãåŠ¹æžœãŒæœŸå¾…ã§ãã¾ã™ã€‚"
+ requireSigninToViewContentsDescription2: "URLプレビュー(OGP)ã€Webページã¸ã®åŸ‹ã‚è¾¼ã¿ã€ãƒŽãƒ¼ãƒˆã®å¼•用ã«å¯¾å¿œã—ã¦ã„ãªã„サーãƒãƒ¼ã‹ã‚‰ã®è¡¨ç¤ºã‚‚ä¸å¯ã«ãªã‚Šã¾ã™ã€‚"
+ requireSigninToViewContentsDescription3: "リモートサーãƒãƒ¼ã«é€£åˆã•れãŸã‚³ãƒ³ãƒ†ãƒ³ãƒ„ã§ã¯ã€ã“れらã®åˆ¶é™ãŒé©ç”¨ã•れãªã„å ´åˆãŒã‚りã¾ã™ã€‚"
+ makeNotesFollowersOnlyBefore: "éŽåŽ»ã®ãƒŽãƒ¼ãƒˆã‚’フォロワーã®ã¿è¡¨ç¤ºå¯èƒ½ã«ã™ã‚‹"
+ makeNotesFollowersOnlyBeforeDescription: "ã“ã®æ©Ÿèƒ½ãŒæœ‰åйã«ãªã£ã¦ã„ã‚‹é–“ã€è¨­å®šã•ã‚ŒãŸæ—¥æ™‚よりéŽåŽ»ã€ã¾ãŸã¯è¨­å®šã•ã‚ŒãŸæ™‚間を経éŽã—ã¦ã„るノートãŒãƒ•ォロワーã®ã¿è¡¨ç¤ºå¯èƒ½ã«ãªã‚Šã¾ã™ã€‚ç„¡åŠ¹ã«æˆ»ã™ã¨ã€ãƒŽãƒ¼ãƒˆã®å…¬é–‹çŠ¶æ…‹ã‚‚å…ƒã«æˆ»ã‚Šã¾ã™ã€‚"
+ makeNotesHiddenBefore: "éŽåŽ»ã®ãƒŽãƒ¼ãƒˆã‚’éžå…¬é–‹åŒ–ã™ã‚‹"
+ makeNotesHiddenBeforeDescription: "ã“ã®æ©Ÿèƒ½ãŒæœ‰åйã«ãªã£ã¦ã„ã‚‹é–“ã€è¨­å®šã•ã‚ŒãŸæ—¥æ™‚よりéŽåŽ»ã€ã¾ãŸã¯è¨­å®šã•ã‚ŒãŸæ™‚間を経éŽã—ã¦ã„るノートãŒè‡ªåˆ†ã®ã¿è¡¨ç¤ºå¯èƒ½(éžå…¬é–‹åŒ–)ã«ãªã‚Šã¾ã™ã€‚ç„¡åŠ¹ã«æˆ»ã™ã¨ã€ãƒŽãƒ¼ãƒˆã®å…¬é–‹çŠ¶æ…‹ã‚‚å…ƒã«æˆ»ã‚Šã¾ã™ã€‚"
+ mayNotEffectForFederatedNotes: "リモートサーãƒãƒ¼ã«é€£åˆã•れãŸãƒŽãƒ¼ãƒˆã«ã¯åŠ¹æžœãŒåŠã°ãªã„å ´åˆãŒã‚りã¾ã™ã€‚"
+ notesHavePassedSpecifiedPeriod: "指定ã—ãŸæ™‚間を経éŽã—ã¦ã„るノート"
+ notesOlderThanSpecifiedDateAndTime: "指定ã—ãŸæ—¥æ™‚よりå‰ã®ãƒŽãƒ¼ãƒˆ"
_abuseUserReport:
forward: "転é€"
@@ -1446,6 +1467,8 @@ _serverSettings:
reactionsBufferingDescription: "有効ã«ã™ã‚‹ã¨ã€ãƒªã‚¢ã‚¯ã‚·ãƒ§ãƒ³ä½œæˆæ™‚ã®ãƒ‘フォーマンスãŒå¤§å¹…ã«å‘上ã—ã€ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã¸ã®è² è·ã‚’軽減ã™ã‚‹ã“ã¨ãŒå¯èƒ½ã§ã™ã€‚ãŸã ã—ã€Redisã®ãƒ¡ãƒ¢ãƒªä½¿ç”¨é‡ã¯å¢—加ã—ã¾ã™ã€‚"
inquiryUrl: "å•ã„åˆã‚ã›å…ˆURL"
inquiryUrlDescription: "サーãƒãƒ¼é‹å–¶è€…ã¸ã®ãŠå•ã„åˆã‚ã›ãƒ•ォームã®URLã‚„ã€é‹å–¶è€…ã®é€£çµ¡å…ˆç­‰ãŒè¨˜è¼‰ã•れãŸWebページã®URLを指定ã—ã¾ã™ã€‚"
+ openRegistration: "アカウントã®ä½œæˆã‚’オープンã«ã™ã‚‹"
+ openRegistrationWarning: "登録を開放ã™ã‚‹ã“ã¨ã¯ãƒªã‚¹ã‚¯ãŒä¼´ã„ã¾ã™ã€‚サーãƒãƒ¼ã‚’常ã«ç›£è¦–ã—ã€ãƒˆãƒ©ãƒ–ルãŒç™ºç”Ÿã—ãŸéš›ã«ã™ãã«å¯¾å¿œã§ãる体制ãŒã‚ã‚‹å ´åˆã®ã¿ã‚ªãƒ³ã«ã™ã‚‹ã“ã¨ã‚’推奨ã—ã¾ã™ã€‚"
thisSettingWillAutomaticallyOffWhenModeratorsInactive: "一定期間モデレーターã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ãƒ†ã‚£ãŒæ¤œå‡ºã•れãªã‹ã£ãŸå ´åˆã€ã‚¹ãƒ‘ム防止ã®ãŸã‚ã“ã®è¨­å®šã¯è‡ªå‹•ã§ã‚ªãƒ•ã«ãªã‚Šã¾ã™ã€‚"
_accountMigration:
@@ -2199,8 +2222,11 @@ _auth:
permissionAsk: "ã“ã®ã‚¢ãƒ—ãƒªã¯æ¬¡ã®æ¨©é™ã‚’è¦æ±‚ã—ã¦ã„ã¾ã™"
pleaseGoBack: "ã‚¢ãƒ—ãƒªã‚±ãƒ¼ã‚·ãƒ§ãƒ³ã«æˆ»ã£ã¦ã‚„ã£ã¦ã„ã£ã¦ãã ã•ã„"
callback: "ã‚¢ãƒ—ãƒªã‚±ãƒ¼ã‚·ãƒ§ãƒ³ã«æˆ»ã£ã¦ã„ã¾ã™"
+ accepted: "アクセスを許å¯ã—ã¾ã—ãŸ"
denied: "アクセスを拒å¦ã—ã¾ã—ãŸ"
+ scopeUser: "以下ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã¨ã—ã¦æ“作ã—ã¦ã„ã¾ã™"
pleaseLogin: "アプリケーションã«ã‚¢ã‚¯ã‚»ã‚¹è¨±å¯ã‚’与ãˆã‚‹ã«ã¯ã€ãƒ­ã‚°ã‚¤ãƒ³ãŒå¿…è¦ã§ã™ã€‚"
+ byClickingYouWillBeRedirectedToThisUrl: "アクセスを許å¯ã™ã‚‹ã¨ã€è‡ªå‹•ã§ä»¥ä¸‹ã®URLã«é·ç§»ã—ã¾ã™"
_antennaSources:
all: "å…¨ã¦ã®ãƒŽãƒ¼ãƒˆ"
@@ -2448,7 +2474,7 @@ _notification:
youGotMention: "{name}ã‹ã‚‰ã®ãƒ¡ãƒ³ã‚·ãƒ§ãƒ³"
youGotReply: "{name}ã‹ã‚‰ã®ãƒªãƒ—ライ"
youGotQuote: "{name}ã«ã‚ˆã‚‹å¼•用"
- youRenoted: "{name}ãŒRenoteã—ã¾ã—ãŸ"
+ youRenoted: "{name}ãŒãƒªãƒŽãƒ¼ãƒˆã—ã¾ã—ãŸ"
youWereFollowed: "フォローã•れã¾ã—ãŸ"
youReceivedFollowRequest: "ãƒ•ã‚©ãƒ­ãƒ¼ãƒªã‚¯ã‚¨ã‚¹ãƒˆãŒæ¥ã¾ã—ãŸ"
yourFollowRequestAccepted: "ãƒ•ã‚©ãƒ­ãƒ¼ãƒªã‚¯ã‚¨ã‚¹ãƒˆãŒæ‰¿èªã•れã¾ã—ãŸ"
@@ -2476,7 +2502,7 @@ _notification:
follow: "フォロー"
mention: "メンション"
reply: "リプライ"
- renote: "Renote"
+ renote: "リノート"
quote: "引用"
reaction: "リアクション"
pollEnded: "アンケートãŒçµ‚了"
@@ -2492,7 +2518,7 @@ _notification:
_actions:
followBack: "フォローãƒãƒƒã‚¯"
reply: "返信"
- renote: "Renote"
+ renote: "リノート"
_deck:
alwaysShowMainColumn: "常ã«ãƒ¡ã‚¤ãƒ³ã‚«ãƒ©ãƒ ã‚’表示"
@@ -2789,3 +2815,14 @@ _embedCodeGen:
generateCode: "埋ã‚è¾¼ã¿ã‚³ãƒ¼ãƒ‰ã‚’作æˆ"
codeGenerated: "コードãŒç”Ÿæˆã•れã¾ã—ãŸ"
codeGeneratedDescription: "生æˆã•れãŸã‚³ãƒ¼ãƒ‰ã‚’ウェブサイトã«è²¼ã‚Šä»˜ã‘ã¦ã”利用ãã ã•ã„。"
+
+_selfXssPrevention:
+ warning: "警告"
+ title: "「ã“ã®ç”»é¢ã«ä½•ã‹è²¼ã‚Šä»˜ã‘ã‚ã€ã¯ã™ã¹ã¦è©æ¬ºã§ã™ã€‚"
+ description1: "ã“ã“ã«ä½•ã‹ã‚’貼り付ã‘ã‚‹ã¨ã€æ‚ªæ„ã®ã‚るユーザーã«ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã‚’ä¹—ã£å–られãŸã‚Šã€å€‹äººæƒ…報を盗ã¾ã‚ŒãŸã‚Šã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚"
+ description2: "貼り付ã‘よã†ã¨ã—ã¦ã„ã‚‹ã‚‚ã®ãŒä½•ãªã®ã‹ã‚’正確ã«ç†è§£ã—ã¦ã„ãªã„å ´åˆã¯ã€%c今ã™ã作業を中止ã—ã¦ã“ã®ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ã‚’é–‰ã˜ã¦ãã ã•ã„。"
+ description3: "詳ã—ãã¯ã“ã¡ã‚‰ã‚’ã”確èªãã ã•ã„。 {link}"
+
+_followRequest:
+ recieved: "å—ã‘å–ã£ãŸç”³è«‹"
+ sent: "é€ã£ãŸç”³è«‹"
diff --git a/locales/ja-KS.yml b/locales/ja-KS.yml
index 0a8b3828f2..c3e0096926 100644
--- a/locales/ja-KS.yml
+++ b/locales/ja-KS.yml
@@ -8,6 +8,9 @@ search: "探ã™"
notifications: "通知"
username: "ユーザーå"
password: "パスワード"
+initialPasswordForSetup: "åˆæœŸè¨­å®šé–‹å§‹ç”¨ãƒ‘スワード"
+initialPasswordIsIncorrect: "åˆæœŸè¨­å®šé–‹å§‹ç”¨ã®ãƒ‘スワードãŒã¡ã‚ƒã†ã§ã€‚"
+initialPasswordForSetupDescription: "Miskkeyを自分ã§ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã—ãŸã‚“ã‚„ã£ãŸã‚‰ã€è¨­å®šãƒ•ァイルã«å…¥ã‚ŒãŸãƒ‘スワードを使ã£ã¦ã‚„。\nホスティングサービスを使ã£ã¨ã‚‹ã‚“ã‚„ã£ãŸã‚‰ã€ã‚µãƒ¼ãƒ“スã‹ã‚‰è¨€ã‚れãŸã‚„ã¤ã‚’使ã†ã‚“ã‚„ã§ã€‚\n別ã«ä½•も設定ã—ã¨ã‚‰ã‚“ã®ã‚„ã£ãŸã‚‰ã€ä½•も入れãšã«ç©ºã‘ã¨ã„ã¦ãªã€‚"
forgotPassword: "パスワード忘れãŸã‚“?"
fetchingAsApObject: "今ã¡ã¨é€£åˆã«ç…§ä¼šã—ã¨ã‚‹ã§"
ok: "ãˆãˆã§"
@@ -236,6 +239,8 @@ silencedInstances: "サーãƒãƒ¼ã‚µã‚¤ãƒ¬ãƒ³ã‚¹ã•れã¦ã‚“ã­ã‚“"
silencedInstancesDescription: "サイレンスã—ãŸã„サーãƒãƒ¼ã®ãƒ›ã‚¹ãƒˆã‚’改行ã§åŒºåˆ‡ã£ã¦è¨­å®šã™ã‚“ã§ã€‚サイレンスã•れãŸã‚µãƒ¼ãƒãƒ¼ã«æ‰€å±žã™ã‚‹ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã¯ã™ã¹ã¦ã€Œã‚µã‚¤ãƒ¬ãƒ³ã‚¹ã€ã¨ã—ã¦æ‰±ã‚れã€ãƒ•ォローãŒã™ã¹ã¦ãƒªã‚¯ã‚¨ã‚¹ãƒˆã«ãªã‚Šã€ãƒ•ォロワーã§ãªã„ローカルアカウントã«ã¯ãƒ¡ãƒ³ã‚·ãƒ§ãƒ³ã§ããªããªã‚“ã­ã‚“。ブロックã—ãŸã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã«ã¯å½±éŸ¿ã›ãƒ¼ã¸ã‚“ã§ã€‚"
mediaSilencedInstances: "メディアサイレンスã—ãŸã‚µãƒ¼ãƒãƒ¼"
mediaSilencedInstancesDescription: "メディアサイレンスã—ãŸã„サーãƒãƒ¼ã®ãƒ›ã‚¹ãƒˆã‚’改行ã§åŒºåˆ‡ã£ã¦è¨­å®šã™ã‚‹ã§ã€‚メディアサイレンスã•れãŸã‚µãƒ¼ãƒãƒ¼ã«æ‰€å±žã™ã‚‹ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã«ã‚ˆã‚‹ãƒ•ァイルã¯ã™ã¹ã¦ã‚»ãƒ³ã‚·ãƒ†ã‚£ãƒ–ã¨ã—ã¦æ‰±ã‚れã¦ãªã€ã‚«ã‚¹ã‚¿ãƒ çµµæ–‡å­—ãŒä½¿ãˆã¸ã‚“よã†ã«ãªã‚‹ã§ã€‚ブロックã—ãŸã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã«ã¯å½±éŸ¿ã›ãˆã¸ã‚“ã§ã€‚"
+federationAllowedHosts: "連åˆã‚’許ã™ã‚µãƒ¼ãƒãƒ¼"
+federationAllowedHostsDescription: "連åˆã—ã¦ã‚‚ã„ã„サーãƒãƒ¼ã®ãƒ›ã‚¹ãƒˆã‚’行ã”ã¨ã«åŒºåˆ‡ã£ã¦è¨­å®šã—ã¦ã‚„。"
muteAndBlock: "ミュートã¨ãƒ–ロック"
mutedUsers: "ミュートã—ã¨ã‚‹ãƒ¦ãƒ¼ã‚¶ãƒ¼"
blockedUsers: "ブロックã—ã¨ã‚‹ãƒ¦ãƒ¼ã‚¶ãƒ¼"
@@ -334,6 +339,7 @@ renameFolder: "フォルダーåを変ãˆã‚‹"
deleteFolder: "フォルダーをã»ã‹ã™"
folder: "フォルダー"
addFile: "ファイルを追加"
+showFile: "ファイル出ã™"
emptyDrive: "ドライブã¯ç©ºã£ã½ã‚„"
emptyFolder: "ã“ã®ãƒ•ォルダーã¯ç©ºã‚„"
unableToDelete: "消ã›ã‚“ã‹ã£ãŸã‚"
@@ -376,7 +382,6 @@ enableLocalTimeline: "ローカルタイムラインを使ãˆã‚‹ã‚ˆã†ã«ã™ã‚‹ã
enableGlobalTimeline: "グローãƒãƒ«ã‚¿ã‚¤ãƒ ãƒ©ã‚¤ãƒ³ã‚’使ãˆã‚‹ã‚ˆã†ã«ã™ã‚‹ã‚"
disablingTimelinesInfo: "ã“ã“らã¸ã‚“ã®ã‚¿ã‚¤ãƒ ãƒ©ã‚¤ãƒ³ã‚’使ãˆã‚“よã†ã«ã—ã¦ã—ã‚‚ã¦ã‚‚ã€ç®¡ç†è€…ã¨ãƒ¢ãƒ‡ãƒ¬ãƒ¼ã‚¿ãƒ¼ã¯ä½¿ãˆã‚‹ã¾ã¾ã«ãªã£ã¦ã‚‹ã§ã€ãã†ã‚„ãªã‹ã£ãŸã‚‰ä¸ä¾¿ã‚„ã‹ã‚‰ãªã€‚"
registration: "登録"
-enableRegistration: "一見ã•ã‚“ã§ã‚‚誰ã§ã‚‚ã„らã£ã—ゃ~ã„"
invite: "æ¥ã¦ã‚„"
driveCapacityPerLocalAccount: "ローカルユーザーã¯ã‚“ã²ã¨ã‚Šã‚ãŸã‚Šã®ãƒ‰ãƒ©ã‚¤ãƒ–容é‡"
driveCapacityPerRemoteAccount: "リモートユーザーã¯ã‚“ã²ã¨ã‚Šã‚ãŸã‚Šã®ãƒ‰ãƒ©ã‚¤ãƒ–容é‡"
@@ -448,6 +453,7 @@ totpDescription: "èªè¨¼ã‚¢ãƒ—リ使ã†ã¦ãƒ¯ãƒ³ã‚¿ã‚¤ãƒ ãƒ‘スワードを入ã‚
moderator: "モデレーター"
moderation: "モデレーション"
moderationNote: "モデレーションノート"
+moderationNoteDescription: "モデレーターã®ä¸­ã ã‘ã§å…±æœ‰ã™ã‚‹ãƒ¡ãƒ¢ã‚’入れれるã§ã€‚"
addModerationNote: "モデレーションノートを追加ã™ã‚‹ã§"
moderationLogs: "モデログ"
nUsersMentioned: "{n}äººãŒæŠ•ç¨¿"
@@ -509,6 +515,10 @@ uiLanguage: "UIã®è¡¨ç¤ºè¨€èªž"
aboutX: "{x}ã«ã¤ã„ã¦"
emojiStyle: "絵文字ã®ã‚¹ã‚¿ã‚¤ãƒ«"
native: "ãƒã‚¤ãƒ†ã‚£ãƒ–"
+menuStyle: "メニューã®ã‚¹ã‚¿ã‚¤ãƒ«"
+style: "スタイル"
+drawer: "ドロワー"
+popup: "ãƒãƒƒãƒ—アップ"
showNoteActionsOnlyHover: "ãƒŽãƒ¼ãƒˆã®æ“作部をホãƒãƒ¼æ™‚ã®ã¿è¡¨ç¤ºã™ã‚‹ã§"
showReactionsCount: "ノートã®ãƒªã‚¢ã‚¯ã‚·ãƒ§ãƒ³æ•°ã‚’表示ã™ã‚‹"
noHistory: "履歴ã¯ãªã„ã‚。"
@@ -591,6 +601,8 @@ ascendingOrder: "å°ã•ã„é †"
descendingOrder: "大ãã„é †"
scratchpad: "スクラッãƒãƒ‘ッド"
scratchpadDescription: "スクラッãƒãƒ‘ッドã§ã¯AiScriptを色々試ã™ã“ã¨ãŒã§ãるんや。Misskeyã«å¯¾ã—ã¦è‰²ã€…ã§ãるコードを書ã„ã¦å‹•ã‹ã—ã¦ã¿ãŸã‚Šã€çµæžœã‚’見ãŸã‚Šã§ãã‚‹ã§ã€‚"
+uiInspector: "UIインスペクター"
+uiInspectorDescription: "メモリ上ã«ã‚ã‚‹UIコンãƒãƒ¼ãƒãƒ³ãƒˆã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ä¸€è¦§ã‚’見れるã§ã€‚UIコンãƒãƒ¼ãƒãƒ³ãƒˆã¯Ui:C:系関数ã§ç”Ÿæˆã•れるã§ã€‚"
output: "出力"
script: "スクリプト"
disablePagesScript: "Pagesã®ã‚¹ã‚¯ãƒªãƒ—トを無効ã«ã—ã¦ã‚„"
@@ -909,6 +921,7 @@ followersVisibility: "フォロワーã®å…¬é–‹ç¯„囲"
continueThread: "ã•らã«ã‚¹ãƒ¬ãƒƒãƒ‰ã‚’見るã§"
deleteAccountConfirm: "アカウントを消ã™ã§ï¼Ÿãˆãˆã‚“ã‹ï¼Ÿ"
incorrectPassword: "パスワードãŒã¡ã‚ƒã†ã‚。"
+incorrectTotp: "ワンタイムパスワードãŒé–“é•ã£ã¨ã‚‹ã‹ã€æœŸé™ãŒåˆ‡ã‚Œã¨ã‚‹ã¿ãŸã„ã‚„ãªã€‚"
voteConfirm: "「{choice}ã€ã«æŠ•票ã™ã‚‹ã‚“ã‹ï¼Ÿ"
hide: "éš ã™"
useDrawerReactionPickerForMobile: "ケータイã¨ã‹ã®ã¨ãドロワーã§è¡¨ç¤ºã™ã‚‹ã§"
@@ -1073,6 +1086,7 @@ retryAllQueuesConfirmTitle: "ã‚‚ã£ã‹ã„ã‚„ã£ã¦ã¿ã‚‹ã‹ï¼Ÿ"
retryAllQueuesConfirmText: "一時的ã«ã‚µãƒ¼ãƒãƒ¼é‡ãªã‚‹ã‹ã‚‚ã—れã¸ã‚“ã§ã€‚"
enableChartsForRemoteUser: "リモートユーザーã®ãƒãƒ£ãƒ¼ãƒˆã‚’作る"
enableChartsForFederatedInstances: "リモートサーãƒãƒ¼ã®ãƒãƒ£ãƒ¼ãƒˆã‚’作る"
+enableStatsForFederatedInstances: "リモートサーãƒã®æƒ…報をå–å¾—"
showClipButtonInNoteFooter: "ノートã®ã‚¢ã‚¯ã‚·ãƒ§ãƒ³ã«ã‚¯ãƒªãƒƒãƒ—を追加"
reactionsDisplaySize: "ツッコミã®è¡¨ç¤ºã®ã§ã‹ã•"
limitWidthOfReaction: "ãƒ„ãƒƒã‚³ãƒŸã®æœ€å¤§æ¨ªå¹…を制é™ã—ã¦ã€ã¡ã£ã•ã表示ã™ã‚‹ã§"
@@ -1259,6 +1273,32 @@ confirmWhenRevealingSensitiveMedia: "センシティブãªãƒ¡ãƒ‡ã‚£ã‚¢ã‚’表示ã
sensitiveMediaRevealConfirm: "センシティブãªãƒ¡ãƒ‡ã‚£ã‚¢ã‚„ã§ã€‚表示ã™ã‚‹ã‚“ã‹ï¼Ÿ"
createdLists: "作æˆã—ãŸãƒªã‚¹ãƒˆ"
createdAntennas: "作æˆã—ãŸã‚¢ãƒ³ãƒ†ãƒŠ"
+fromX: "{x}ã‹ã‚‰"
+genEmbedCode: "埋ã‚è¾¼ã¿ã‚³ãƒ¼ãƒ‰ã‚’作る"
+noteOfThisUser: "ã“ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®ãƒŽãƒ¼ãƒˆå…¨éƒ¨"
+clipNoteLimitExceeded: "ã“れ以上ã“ã®ã‚¯ãƒªãƒƒãƒ—ã«ãƒŽãƒ¼ãƒˆè¿½åŠ ã§ã‘ã¸ã‚“ã‚。"
+performance: "パフォーマンス"
+modified: "変更ã‚り"
+discard: "ã‚„ã‚ã‚‹"
+thereAreNChanges: "{n}個ã®å¤‰æ›´ãŒã‚ã‚‹ã¿ãŸã„ã‚„"
+signinWithPasskey: "パスキーã§ãƒ­ã‚°ã‚¤ãƒ³"
+unknownWebAuthnKey: "登録ã•れã¦ã¸ã‚“パスキーやãªã€‚"
+passkeyVerificationFailed: "ãƒ‘ã‚¹ã‚­ãƒ¼ã®æ¤œè¨¼ã«å¤±æ•—ã—ãŸã§ã€‚"
+passkeyVerificationSucceededButPasswordlessLoginDisabled: "ãƒ‘ã‚¹ã‚­ãƒ¼ã®æ¤œè¨¼ã¯æˆåŠŸã—ãŸã‚“ã‚„ã‘ã©ã€ãƒ‘スワードレスログインãŒç„¡åйã«ãªã£ã¨ã‚‹ã‚。"
+messageToFollower: "フォロワーã¸ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸"
+target: "対象"
+testCaptchaWarning: "CAPTCHAã®ãƒ†ã‚¹ãƒˆã‚’目的ã¨ã—ã¦ã‚‹ã§ã€‚<strong>çµ¶å¯¾ã«æœ¬ç•ªç’°å¢ƒã§ä½¿ã‚ã‚“ã¨ã„ã¦ãªã€‚絶対やã§ã€‚</strong>"
+prohibitedWordsForNameOfUser: "ç¦æ­¢ãƒ¯ãƒ¼ãƒ‰ï¼ˆãƒ¦ãƒ¼ã‚¶ãƒ¼å)"
+prohibitedWordsForNameOfUserDescription: "ã“ã®ãƒªã‚¹ãƒˆã®ä¸­ã«ã‚る文字列ãŒãƒ¦ãƒ¼ã‚¶ãƒ¼åã«å…¥ã£ã¨ã£ãŸã‚‰ã€ãã®åå‰ã«å¤‰æ›´ã§ãã²ã‚“よã†ã«ãªã‚‹ã§ã€‚モデレーター権é™ãŒã‚るユーザーã¯é™¤å¤–や。"
+yourNameContainsProhibitedWords: "ãã®åå‰ã¯ç¦æ­¢ã—ãŸæ–‡å­—列ãŒå«ã¾ã‚Œã¨ã‚‹ã§"
+yourNameContainsProhibitedWordsDescription: "ãã®åå‰ã¯ç¦æ­¢ã—ãŸæ–‡å­—列ãŒå«ã¾ã‚Œã¨ã‚‹ã‚。ã©ã†ã—ã¦ã‚‚ã£ã¦è¨€ã†ãªã‚‰ã€ã‚µãƒ¼ãƒãƒ¼ç®¡ç†è€…ã«è¨€ã†ã—ã‹ãªã„ã§ã€‚"
+_abuseUserReport:
+ forward: "転é€"
+ forwardDescription: "匿åã®ã‚·ã‚¹ãƒ†ãƒ ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã£ã¦ã“ã¨ã«ã—ã¦ã€ãƒªãƒ¢ãƒ¼ãƒˆã‚µãƒ¼ãƒãƒ¼ã«é€šå ±ã‚’転é€ã™ã‚‹ã§ã€‚"
+ resolve: "解決"
+ accept: "ãˆãˆã‚ˆ"
+ reject: "ã‚ã‹ã‚“よ"
+ resolveTutorial: "内容ãŒãˆãˆãªã‚‰ã€Œãˆãˆã‚ˆã€ã‚’é¸ã¶ã‚“や。肯定的ã«è§£æ±ºã•れãŸã“ã¨ã«ã—ã¦è¨˜éŒ²ã™ã‚‹ã§ã€‚\n逆ã«ã€å†…容ãŒã ã‚ãªã‚‰ã€Œã‚ã‹ã‚“よã€ã‚’é¸ã³ã„や。å¦å®šçš„ã«è§£æ±ºã•れãŸã£ã¦è¨˜éŒ²ã—ã¨ãã§ã€‚"
_delivery:
status: "é…信状態"
stop: "é…ä¿¡ã›ã‡ã¸ã‚“"
@@ -1393,8 +1433,10 @@ _serverSettings:
fanoutTimelineDescription: "入れるã¨ã€ãŠã®ãŠã®ã‚¿ã‚¤ãƒ ãƒ©ã‚¤ãƒ³ã‚’å–å¾—ã™ã‚‹ã¨ãã«ã‚ã¡ã‚ƒã‚ã¡ã‚ƒå‹•ããŒè‰¯ã†ãªã£ã¦ã€ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ãŒè»½ããªã‚‹ã‚。ã§ã‚‚ã€Redisã®ãƒ¡ãƒ¢ãƒªä½¿ã†é‡ãŒå¢—ãˆã‚‹ã‹ã‚‰æ³¨æ„ãªã€‚サーãƒãƒ¼ã®ãƒ¡ãƒ¢ãƒªãŒè¶³ã‚Šã‚“ã¨ãã¨ã‹ã€å‹•ããŒå¤‰ãªã¨ãã¯åˆ‡ã‚Œã‚‹ã§ã€‚"
fanoutTimelineDbFallback: "データベースã«ãƒ•ォールãƒãƒƒã‚¯ã™ã‚‹"
fanoutTimelineDbFallbackDescription: "有効ã«ã—ãŸã‚‰ã€ã‚¿ã‚¤ãƒ ãƒ©ã‚¤ãƒ³ãŒã‚­ãƒ£ãƒƒã‚·ãƒ¥ã‚“中ã«å…¥ã£ã¦ãªã„ã¨ãã«DBã«ã‚‚ã£ã‹ã„å•ã„åˆã‚ã›ã‚‹ãƒ•ォールãƒãƒƒã‚¯å‡¦ç†ã£ã¦ã®ã‚’ã‚„ã£ã¨ãã§ã€‚切ã£ãŸã‚‰ãƒ•ォールãƒãƒƒã‚¯å‡¦ç†ã‚’やらんã‹ã‚‰ã‚µãƒ¼ãƒãƒ¼ã¯ã‚‚ã£ã¨è»½ããªã‚“ã­ã‚“ã‘ã©ã€ã‚¿ã‚¤ãƒ ãƒ©ã‚¤ãƒ³ã®å–得範囲ãŒã¡ã‚‡ã£ã¨æ¸›ã‚‹ã§ã€‚"
+ reactionsBufferingDescription: "有効ã«ã—ãŸã‚‰ã€ãƒªã‚¢ã‚¯ã‚·ãƒ§ãƒ³ä½œã‚‹ã¨ãã®ãƒ‘フォーマンスãŒã™ã£ã”ã„上ãŒã£ã¦ã€ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã¸ã®è² è·ãŒæ¸›ã‚‹ã§ã€‚代ã‚りã«ã€Redisã®ãƒ¡ãƒ¢ãƒªä½¿ç”¨ã¯å¢—ãˆã‚‹ã§ã€‚"
inquiryUrl: "å•ã„åˆã‚ã›å…ˆURL"
inquiryUrlDescription: "サーãƒãƒ¼é‹å–¶è€…ã¸ã®ãŠå•ã„åˆã‚ã›ãƒ•ォームã®URLã‚„ã€é‹å–¶è€…ã®é€£çµ¡å…ˆç­‰ãŒè¨˜è¼‰ã•れãŸWebページã®URLを指定ã™ã‚‹ã§ã€‚"
+ thisSettingWillAutomaticallyOffWhenModeratorsInactive: "一定期間モデレーターãŒãŠã‚‰ã‚“ã‹ã£ãŸã‚‰ã€ã‚¹ãƒ‘ムを防ããŸã‚ã«ã“ã®è¨­å®šã¯å‹æ‰‹ã«åˆ‡ã‚‰ã‚Œã‚‹ã§ã€‚"
_accountMigration:
moveFrom: "別ã®ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã‹ã‚‰ã“ã®ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã«å¼•ã£è¶Šã™"
moveFromSub: "別ã®ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã¸ã‚¨ã‚¤ãƒªã‚¢ã‚¹ã‚’作る"
@@ -1726,6 +1768,11 @@ _role:
canSearchNotes: "ノート探ã›ã‚‹ã‹ã©ã†ã‹"
canUseTranslator: "翻訳使ãˆã‚‹ã‹ã©ã†ã‹"
avatarDecorationLimit: "アイコンデコã®ã„ã£ã¡ã°ã‚“ã¤ã‘れる数"
+ canImportAntennas: "アンテナã®ã‚¤ãƒ³ãƒãƒ¼ãƒˆã‚’許ã™"
+ canImportBlocking: "ブロックã®ã‚¤ãƒ³ãƒãƒ¼ãƒˆã‚’許ã™"
+ canImportFollowing: "フォローã®ã‚¤ãƒ³ãƒãƒ¼ãƒˆã‚’許ã™"
+ canImportMuting: "ミュートã®ã‚¤ãƒ³ãƒãƒ¼ãƒˆã‚’許ã™"
+ canImportUserLists: "リストã®ã‚¤ãƒ³ãƒãƒ¼ãƒˆã‚’許ã™"
_condition:
roleAssignedTo: "マニュアルロールã«ã‚¢ã‚µã‚¤ãƒ³æ¸ˆã¿"
isLocal: "ローカルユーザー"
@@ -2219,6 +2266,9 @@ _profile:
changeBanner: "ãƒãƒŠãƒ¼ç”»åƒã‚’変更ã™ã‚‹ã§"
verifiedLinkDescription: "内容をURLã«è¨­å®šã™ã‚‹ã¨ã€ãƒªãƒ³ã‚¯å…ˆã®webサイトã«è‡ªåˆ†ã®ãƒ—ロフã®ãƒªãƒ³ã‚¯ãŒå«ã¾ã‚Œã¦ã‚‹å ´åˆã«æ‰€æœ‰è€…ç¢ºèªæ¸ˆã¿ã‚¢ã‚¤ã‚³ãƒ³ã‚’表示ã•ã›ã‚‹ã“ã¨ãŒã§ãã‚‹ã§ã€‚"
avatarDecorationMax: "最大{max}ã¤ã¾ã§ãƒ‡ã‚³ã¤ã‘れんã§"
+ followedMessage: "フォローã•れãŸã‚‰è¿”ã™ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸"
+ followedMessageDescription: "フォローã•れãŸã¨ãã«ç›¸æ‰‹ã«è¿”ã™çŸ­ã‚ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’決ã‚れるã§ã€‚"
+ followedMessageDescriptionForLockedAccount: "ãƒ•ã‚©ãƒ­ãƒ¼ãŒæ‰¿èªåˆ¶ãªã‚‰ã€ãƒ•ォローリクエストをOKã—ãŸã¨ãã«è¦‹ã›ã‚‹ã§ã€‚"
_exportOrImport:
allNotes: "å…¨ã¦ã®ãƒŽãƒ¼ãƒˆ"
favoritedNotes: "ãŠæ°—ã«å…¥ã‚Šã«ã—ãŸãƒŽãƒ¼ãƒˆ"
@@ -2311,6 +2361,7 @@ _pages:
eyeCatchingImageSet: "アイキャッãƒç”»åƒã‚’設定"
eyeCatchingImageRemove: "アイキャッãƒç”»åƒã‚’削除"
chooseBlock: "ブロックを追加"
+ enterSectionTitle: "セクションタイトルを入れる"
selectType: "ç¨®é¡žã‚’é¸æŠž"
contentBlocks: "コンテンツ"
inputBlocks: "入力"
@@ -2356,13 +2407,15 @@ _notification:
renotedBySomeUsers: "{n}人ãŒãƒªãƒŽãƒ¼ãƒˆã—ãŸã§"
followedBySomeUsers: "{n}人ã«ãƒ•ォローã•れãŸã§"
flushNotification: "通知ã®å±¥æ­´ã‚’リセットã™ã‚‹"
+ exportOfXCompleted: "{x}ã®ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆãŒçµ‚ã‚ã£ãŸã‚"
+ login: "ログインã—ã¨ã£ãŸã§"
_types:
all: "ã™ã¹ã¦"
note: "ã‚ã‚“ãŸã‚‰ã®æ–°è¦æŠ•稿"
follow: "フォロー"
mention: "メンション"
reply: "リプライ"
- renote: "Renote"
+ renote: "リノート"
quote: "引用"
reaction: "ツッコミ"
pollEnded: "アンケートãŒçµ‚了ã—ãŸã§"
@@ -2370,12 +2423,14 @@ _notification:
followRequestAccepted: "フォローãŒå—ç†ã•れãŸã§"
roleAssigned: "ロールãŒä»˜ä¸Žã•れãŸ"
achievementEarned: "実績ã®ç²å¾—"
+ exportCompleted: "エクスãƒãƒ¼ãƒˆçµ‚ã‚ã£ãŸ"
login: "ログイン"
+ test: "通知テスト"
app: "連æºã‚¢ãƒ—リã‹ã‚‰ã®é€šçŸ¥ã‚„"
_actions:
followBack: "フォローãƒãƒƒã‚¯"
reply: "返事"
- renote: "Renote"
+ renote: "リノート"
_deck:
alwaysShowMainColumn: "ã„ã¤ã‚‚メインカラムを表示"
columnAlign: "カラムã®å¯„ã›"
@@ -2436,7 +2491,10 @@ _webhookSettings:
abuseReport: "ユーザーã‹ã‚‰é€šå ±ãŒã‚ã£ãŸã¨ã"
abuseReportResolved: "ユーザーã‹ã‚‰ã®é€šå ±ã‚’処ç†ã—ãŸã¨ã"
userCreated: "ユーザーãŒä½œæˆã•れãŸã¨ã"
+ inactiveModeratorsWarning: "モデレーターãŒã—ã°ã‚‰ããŠã‚‰ã‚“ã‹ã£ãŸã¨ã"
+ inactiveModeratorsInvitationOnlyChanged: "モデレーターãŒã—ã°ã‚‰ããŠã‚‰ã‚“ã‹ã£ãŸã‹ã‚‰ã€ã‚·ã‚¹ãƒ†ãƒ ãŒæ‹›å¾…制ã«å¤‰ãˆãŸã¨ã"
deleteConfirm: "ã»ã‚“ã¾ã«Webhookã‚’ã»ã‹ã—ã¦ã‚‚ãˆãˆã‚“ã‹ï¼Ÿ"
+ testRemarks: "スイッãƒå³ã®ãƒœã‚¿ãƒ³ã‚’押ã™ã¨ãƒ€ãƒŸãƒ¼ãƒ‡ãƒ¼ã‚¿ã‚’使ã£ãŸãƒ†ã‚¹ãƒˆç”¨Webhookã‚’é€ã‚Œã‚‹ã§ã€‚"
_abuseReport:
_notificationRecipient:
createRecipient: "通報ã®é€šçŸ¥å…ˆã‚’追加"
@@ -2480,6 +2538,8 @@ _moderationLogTypes:
markSensitiveDriveFile: "ファイルをセンシティブ付与"
unmarkSensitiveDriveFile: "ファイルをセンシティブ解除"
resolveAbuseReport: "苦情を解決"
+ forwardAbuseReport: "通報を転é€"
+ updateAbuseReportNote: "通報ã®ãƒ¢ãƒ‡ãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³ãƒŽãƒ¼ãƒˆæ›´æ–°"
createInvitation: "招待コード作る"
createAd: "広告を作んã§"
deleteAd: "広告ã»ã‹ã™"
@@ -2491,6 +2551,14 @@ _moderationLogTypes:
unsetUserBanner: "ã“ã®å­ã®ãƒãƒŠãƒ¼å…ƒã«æˆ»ã™"
createSystemWebhook: "SystemWebhookを作æˆ"
updateSystemWebhook: "SystemWebhookã‚’æ›´æ–°"
+ deleteSystemWebhook: "SystemWebhookを削除"
+ createAbuseReportNotificationRecipient: "通報ã®é€šçŸ¥å…ˆä½œã‚‹"
+ updateAbuseReportNotificationRecipient: "通報ã®é€šçŸ¥å…ˆæ›´æ–°"
+ deleteAbuseReportNotificationRecipient: "通報ã®é€šçŸ¥å…ˆæ¶ˆã™"
+ deleteAccount: "アカウント消ã™"
+ deletePage: "ページ消ã™"
+ deleteFlash: "Playã‚’ã»ã‹ã™"
+ deleteGalleryPost: "ã‚®ãƒ£ãƒ©ãƒªãƒ¼ã®æŠ•ç¨¿ã‚’ã»ã‹ã™"
_fileViewer:
title: "ファイルã®è©³ã—ã„æƒ…å ±"
type: "ファイルã®ç¨®é¡ž"
@@ -2622,3 +2690,22 @@ _mediaControls:
pip: "ピクãƒãƒ£ã‚¤ãƒ³ãƒ”クãƒãƒ£"
playbackRate: "å†ç”Ÿé€Ÿåº¦"
loop: "ループå†ç”Ÿ"
+_contextMenu:
+ title: "コンテキストメニュー"
+ app: "アプリ"
+ appWithShift: "Shiftキーã§ã‚¢ãƒ—リ"
+ native: "ブラウザã®UI"
+_embedCodeGen:
+ title: "埋ã‚è¾¼ã¿ã‚³ãƒ¼ãƒ‰ã‚’カスタム"
+ header: "ヘッダー出ã™"
+ autoload: "勿‰‹ã«ç¶šãを読ã¿è¾¼ã‚€ï¼ˆéžæŽ¨å¥¨ï¼‰"
+ maxHeight: "高ã•ã®æœ€å¤§å€¤"
+ maxHeightDescription: "0ã¯æœ€å¤§å€¤ã‚’指定ã›ãˆã¸ã‚“ã‘ã©ã€ã‚¦ã‚£ã‚¸ã‚§ãƒƒãƒˆãŒä¼¸ã³ç¶šã‘ã‚‹ã‹ã‚‰çµ¶å¯¾1以上ã«ã—ã¨ã„ã¦ã‚„。"
+ maxHeightWarn: "高ã•ã®æœ€å¤§å€¤ãŒç„¡åйã«ãªã£ã¨ã‚‹ã§ã€‚æ„図ã—ã¦ã¸ã‚“変更ãªã‚‰ã€æ™®é€šã®å€¤ã«æˆ»ã—ã¦ã‚„。"
+ previewIsNotActual: "プレビュー画é¢ã§å‡ºã›ã‚‹ç¯„囲をã¯ã¿å‡ºã—ãŸã‹ã‚‰ã€ãƒ›ãƒ³ãƒžã®è¡¨ç¤ºã¨ã¯ã¡ã‚ƒã†ã¨ãŠã‚‚ã†ã§ã€‚"
+ rounded: "角丸ã‚ã‚‹"
+ border: "å¤–æž ã«æž ç·šã¤ã‘ã‚‹"
+ applyToPreview: "プレビューã«å映"
+ generateCode: "埋ã‚è¾¼ã¿ã‚³ãƒ¼ãƒ‰ä½œã‚‹"
+ codeGenerated: "コード作ã£ãŸã§"
+ codeGeneratedDescription: "作ã£ãŸã‚³ãƒ¼ãƒ‰ã¯ã‚¦ã‚§ãƒ–サイトã«è²¼ã£ã¤ã‘ã¦ä½¿ã£ã¦ã‚„。"
diff --git a/locales/ko-GS.yml b/locales/ko-GS.yml
index 6c667b48da..60b82d5db9 100644
--- a/locales/ko-GS.yml
+++ b/locales/ko-GS.yml
@@ -356,7 +356,6 @@ enableLocalTimeline: "로컬 타임ë¼ì¸ 키기"
enableGlobalTimeline: "글로벌 타임ë¼ì¸ 키기"
disablingTimelinesInfo: "ìš” 타임ë¼ì¸ì–¼ êº¼ë„ ê°„ë¦¬ìží•˜ê³  중재ìžë„Œ 고대로 설 수 잇십니다."
registration: "맨걸기"
-enableRegistration: "누ë¼ë„ 새로 맨걸 수 잇거로 하기"
invite: "초대하기"
driveCapacityPerLocalAccount: "로컬 ì‚¬ìš©ìž í•˜ë‚˜ë§ˆì¤‘ 드ë¼ì´ë¸Œ 커기"
driveCapacityPerRemoteAccount: "ì›¬ê² ì‚¬ìš©ìž í•˜ë‚˜ë§ˆì¤‘ 드ë¼ì´ë¸Œ 커기"
@@ -468,7 +467,7 @@ tooShort: "억수로 짜립니다"
tooLong: "억수로 집니다"
passwordMatched: "맞십니다"
passwordNotMatched: "안 맞십니다"
-signinWith: "{n}서 로그ì¸"
+signinWith: "{x} 서 로그ì¸"
signinFailed: "ë¡œê·¸ì¸ ëª¬ 했십니다. ê³  ì´ë¦„ì´ëž‘ 비밀번호 제대로 ì¼ëŠ”ê°€ 확ì¸í•´ 주ì´ì†Œ."
or: "아니면"
language: "언어"
@@ -809,11 +808,13 @@ _notification:
_types:
follow: "팔로잉"
mention: "멘션"
+ renote: "리노트"
quote: "따오기"
reaction: "반엉"
login: "로그ì¸"
_actions:
reply: "답하기"
+ renote: "리노트"
_deck:
_columns:
notifications: "알림"
diff --git a/locales/ko-KR.yml b/locales/ko-KR.yml
index 414202adab..d694d2dbae 100644
--- a/locales/ko-KR.yml
+++ b/locales/ko-KR.yml
@@ -42,7 +42,7 @@ favorite: "ì¦ê²¨ì°¾ê¸°"
favorites: "ì¦ê²¨ì°¾ê¸°"
unfavorite: "ì¦ê²¨ì°¾ê¸°ì—서 제거"
favorited: "ì¦ê²¨ì°¾ê¸°ì— 등ë¡í–ˆìŠµë‹ˆë‹¤."
-alreadyFavorited: "ì´ë¯¸ ì¦ê²¨ì°¾ê¸°ì— 등ë¡í–ˆìŠµë‹ˆë‹¤."
+alreadyFavorited: "ì´ë¯¸ ì¦ê²¨ì°¾ê¸°ì— 등ë¡ë˜ì–´ 있습니다."
cantFavorite: "ì¦ê²¨ì°¾ê¸°ì— 등ë¡í•˜ì§€ 못했습니다."
pin: "í”„ë¡œí•„ì— ê³ ì •"
unpin: "프로필ì—서 ê³ ì • í•´ì œ"
@@ -382,7 +382,6 @@ enableLocalTimeline: "로컬 타임ë¼ì¸ 활성화"
enableGlobalTimeline: "글로벌 타임ë¼ì¸ 활성화"
disablingTimelinesInfo: "특정 타임ë¼ì¸ì„ 비활성화하ë”ë¼ë„ ê´€ë¦¬ìž ë° ëª¨ë”ë ˆì´í„°ëŠ” ê³„ì† ì‚¬ìš©í•  수 있습니다."
registration: "등ë¡"
-enableRegistration: "ì‹ ê·œ 회ì›ê°€ìž…ì„ í™œì„±í™”"
invite: "초대"
driveCapacityPerLocalAccount: "로컬 유저 한 명당 드ë¼ì´ë¸Œ 용량"
driveCapacityPerRemoteAccount: "ì›ê²© 사용ìžë³„ 드ë¼ì´ë¸Œ 용량"
@@ -587,6 +586,7 @@ masterVolume: "마스터 볼륨"
notUseSound: "ìŒì†Œê±° 하기"
useSoundOnlyWhenActive: "Misskey를 활성화한 때ì—ë§Œ 소리를 출력하기"
details: "ìžì„¸ížˆ"
+renoteDetails: "리노트 ìƒì„¸ ë‚´ìš©"
chooseEmoji: "ì´ëª¨ì§€ ì„ íƒ"
unableToProcess: "ìž‘ì—…ì„ ì™„ë£Œí•  수 없습니다"
recentUsed: "최근 사용"
@@ -947,6 +947,9 @@ oneHour: "1시간"
oneDay: "1ì¼"
oneWeek: "ì¼ì£¼ì¼"
oneMonth: "1개월"
+threeMonths: "3개월"
+oneYear: "1ë…„"
+threeDays: "3ì¼"
reflectMayTakeTime: "ë°˜ì˜ë˜ê¸°ê¹Œì§€ ì‹œê°„ì´ ê±¸ë¦´ 수 있습니다."
failedToFetchAccountInformation: "계정 정보를 가져오지 못했습니다"
rateLimitExceeded: "요청 제한 횟수를 초과하였습니다"
@@ -1254,7 +1257,7 @@ lastNDays: "최근 {n}ì¼"
backToTitle: "타ì´í‹€ë¡œ 가기"
hemisphere: "거주 지역"
withSensitive: "민ê°í•œ 파ì¼ì´ í¬í•¨ëœ 노트 보기"
-userSaysSomethingSensitive: "{name} ê°™ì€ ë¯¼ê°í•œ 파ì¼ì´ í¬í•¨ëœ 글"
+userSaysSomethingSensitive: "{name}ì˜ ë¯¼ê°í•œ 파ì¼ì´ í¬í•¨ëœ 게시물"
enableHorizontalSwipe: "스와ì´í”„하여 탭 전환"
loading: "불러오는 중"
surrender: "그만ë‘기"
@@ -1286,13 +1289,30 @@ signinWithPasskey: "패스키로 로그ì¸"
unknownWebAuthnKey: "등ë¡ë˜ì§€ ì•Šì€ íŒ¨ìŠ¤í‚¤ìž…ë‹ˆë‹¤."
passkeyVerificationFailed: "패스키 ê²€ì¦ì„ 실패했습니다."
passkeyVerificationSucceededButPasswordlessLoginDisabled: "패스키를 ê²€ì¦í–ˆìœ¼ë‚˜, 비밀번호 ì—†ì´ ë¡œê·¸ì¸í•˜ê¸°ê°€ 꺼져 있습니다."
-messageToFollower: "íŒ”ë¡œì›Œì— ë³´ë‚¼ 메시지"
+messageToFollower: "팔로워ì—게 보낼 메시지"
target: "대ìƒ"
testCaptchaWarning: "CAPTCHA를 테스트하기 위한 기능입니다. <strong>실제 환경ì—서는 사용하지 마세요.</strong>"
prohibitedWordsForNameOfUser: "금지 단어 (ì‚¬ìš©ìž ì´ë¦„)"
prohibitedWordsForNameOfUserDescription: "ì´ ëª©ë¡ì— í¬í•¨ë˜ëŠ” 키워드가 ì‚¬ìš©ìž ì´ë¦„ì— ìžˆëŠ” 경우, ì¼ë°˜ 사용ìžëŠ” ì´ë¦„ì„ ë°”ê¿€ 수 없습니다. 모ë”ë ˆì´í„° ê¶Œí•œì„ ê°€ì§„ 사용ìžëŠ” 제한 대ìƒì—서 제외ë©ë‹ˆë‹¤."
yourNameContainsProhibitedWords: "바꾸려는 ì´ë¦„ì— ê¸ˆì§€ëœ í‚¤ì›Œë“œê°€ í¬í•¨ë˜ì–´ 있습니다."
yourNameContainsProhibitedWordsDescription: "ì´ë¦„ì— ê¸ˆì§€ëœ í‚¤ì›Œë“œê°€ 있습니다. ì´ë¦„ì„ ì‚¬ìš©í•´ì•¼ 하는 경우, 서버 관리ìžì— 문ì˜í•˜ì„¸ìš”."
+thisContentsAreMarkedAsSigninRequiredByAuthor: "게시ìžì— ì˜í•´ 로그ì¸í•´ì•¼ ë³¼ 수 있ë„ë¡ ì„¤ì •ë˜ì–´ 있습니다."
+lockdown: "잠금"
+pleaseSelectAccount: "ê³„ì •ì„ ì„ íƒí•´ì£¼ì„¸ìš”."
+availableRoles: "사용 가능한 역할"
+acknowledgeNotesAndEnable: "활성화 하기 ì „ì— ì£¼ì˜ ì‚¬í•­ì„ í™•ì¸í–ˆìŠµë‹ˆë‹¤."
+_accountSettings:
+ requireSigninToViewContents: "콘í…츠 ì—´ëžŒì„ ìœ„í•´ 로그ì¸ìœ¼ 필수로 설정하기"
+ requireSigninToViewContentsDescription1: "ìžì‹ ì´ 작성한 모든 노트 ë“±ì˜ ì½˜í…츠를 보기 위해 로그ì¸ì„ 필수로 설정합니다. í¬ë¡¤ëŸ¬ê°€ ì •ë³´ 수집하는 ê²ƒì„ ë°©ì§€í•˜ëŠ” 효과를 기대할 수 있습니다."
+ requireSigninToViewContentsDescription2: "URL 미리보기(OGP), 웹페ì´ì§€ì— 삽입, 노트 ì¸ìš©ì„ ì§€ì›í•˜ì§€ 않는 서버ì—서 ë³¼ 수 없게 ë©ë‹ˆë‹¤."
+ requireSigninToViewContentsDescription3: "ì›ê²© ì„œë²„ì— ì—°í•©ëœ ì½˜í…츠ì—는 ì´ëŸ¬í•œ ì œí•œì´ ì ìš©ë˜ì§€ ì•Šì„ ìˆ˜ 있습니다."
+ makeNotesFollowersOnlyBefore: "과거 노트는 팔로워만 ë³¼ 수 있ë„ë¡ ì„¤ì •í•˜ê¸°"
+ makeNotesFollowersOnlyBeforeDescription: "ì´ ê¸°ëŠ¥ì´ í™œì„±í™”ë˜ì–´ 있는 ë™ì•ˆ, ì„¤ì •ëœ ë‚ ì§œ ë° ì‹œê°„ë³´ë‹¤ 과거 ë˜ëŠ” ì„¤ì •ëœ ì‹œê°„ì´ ì§€ë‚œ 노트는 팔로워만 ë³¼ 수 있게 ë©ë‹ˆë‹¤.비활성화하면 ë…¸íŠ¸ì˜ ê³µê°œ ìƒíƒœë„ ì›ëž˜ëŒ€ë¡œ ëŒì•„갑니다."
+ makeNotesHiddenBefore: "과거 노트 비공개로 전환하기"
+ makeNotesHiddenBeforeDescription: "ì´ ê¸°ëŠ¥ì´ í™œì„±í™”ë˜ì–´ 있는 ë™ì•ˆ 설정한 ë‚ ì§œ ë° ì‹œê°„ë³´ë‹¤ 과거 ë˜ëŠ” 설정한 ì‹œê°„ì´ ì§€ë‚œ 노트는 본ì¸ë§Œ ë³¼ 수 있게(비공개로 전환) ë©ë‹ˆë‹¤. 비활성화하면 ë…¸íŠ¸ì˜ ê³µê°œ ìƒíƒœë„ ì›ëž˜ëŒ€ë¡œ ëŒì•„갑니다."
+ mayNotEffectForFederatedNotes: "ì›ê²© ì„œë²„ì— ì—°í•©ëœ ë…¸íŠ¸ì—는 효과가 ì—†ì„ ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤."
+ notesHavePassedSpecifiedPeriod: "지정한 ì‹œê°„ì´ ê²½ê³¼ëœ ë…¸íŠ¸"
+ notesOlderThanSpecifiedDateAndTime: "ì§€ì •ëœ ë‚ ì§œ ë° ì‹œê°„ ì´ì „ì˜ ë…¸íŠ¸"
_abuseUserReport:
forward: "전달"
forwardDescription: "ìµëª… 시스템 ê³„ì •ì„ ì‚¬ìš©í•˜ì—¬ 리모트 ì„œë²„ì— ì‹ ê³  ë‚´ìš©ì„ ì „ë‹¬í•  수 있습니다."
@@ -1437,6 +1457,8 @@ _serverSettings:
reactionsBufferingDescription: "활성화 한 경우, 리액션 작성 í¼í¬ë¨¼ìŠ¤ê°€ ëŒ€í­ í–¥ìƒë˜ì–´ DBì˜ ë¶€í•˜ë¥¼ ì¤„ì¼ ìˆ˜ 있으나, Redisì˜ ë©”ëª¨ë¦¬ ì‚¬ìš©ëŸ‰ì´ ë§Žì•„ì§‘ë‹ˆë‹¤."
inquiryUrl: "문ì˜ì²˜ URL"
inquiryUrlDescription: "서버 ìš´ì˜ìžì—게 보내는 ë¬¸ì˜ ì–‘ì‹ì˜ URLì´ë‚˜ ìš´ì˜ìžì˜ ì—°ë½ì²˜ ë“±ì´ ì ížŒ 웹 페ì´ì§€ì˜ URLì„ ì„¤ì •í•©ë‹ˆë‹¤."
+ openRegistration: "íšŒì› ê°€ìž…ì„ í™œì„±í™” 하기"
+ openRegistrationWarning: "íšŒì› ê°€ìž…ì„ ê°œë°©í•˜ëŠ” ê²ƒì€ ë¦¬ìŠ¤í¬ê°€ 따릅니다. 서버를 í•­ìƒ ê°ì‹œí•  수 있고, 문제가 ë°œìƒí–ˆì„ 때 바로 대ì‘í•  수 있는 ìƒíƒœì—서만 활성화 하는 ê²ƒì„ ê¶Œìž¥í•©ë‹ˆë‹¤."
thisSettingWillAutomaticallyOffWhenModeratorsInactive: "ì¼ì • 기간ë™ì•ˆ 모ë”ë ˆì´í„°ì˜ 활ë™ì´ ê°ì§€ë˜ì§€ 않는 경우, 스팸 방지를 위해 ì´ ì„¤ì •ì€ ìžë™ìœ¼ë¡œ 꺼집니다."
_accountMigration:
moveFrom: "다른 계정ì—서 ì´ ê³„ì •ìœ¼ë¡œ ì´ì‚¬"
@@ -2157,8 +2179,11 @@ _auth:
permissionAsk: "ì´ ì•±ì€ ë‹¤ìŒì˜ ê¶Œí•œì„ ìš”ì²­í•©ë‹ˆë‹¤"
pleaseGoBack: "앱으로 ëŒì•„가서 시ë„í•´ 주세요"
callback: "앱으로 ëŒì•„갑니다"
+ accepted: "ì ‘ê·¼ ê¶Œí•œì´ ë¶€ì—¬ë˜ì—ˆìŠµë‹ˆë‹¤."
denied: "ì ‘ê·¼ì´ ê±°ë¶€ë˜ì—ˆìŠµë‹ˆë‹¤"
+ scopeUser: "ë‹¤ìŒ ì‚¬ìš©ìžë¡œ 활ë™í•˜ê³  있습니다."
pleaseLogin: "어플리케ì´ì…˜ì˜ ì ‘ê·¼ì„ í—ˆê°€í•˜ë ¤ë©´ 로그ì¸í•˜ì‹­ì‹œì˜¤."
+ byClickingYouWillBeRedirectedToThisUrl: "ì ‘ê·¼ì„ í—ˆìš©í•˜ë©´ ìžë™ìœ¼ë¡œ ë‹¤ìŒ URL로 ì´ë™í•©ë‹ˆë‹¤."
_antennaSources:
all: "모든 노트"
homeTimeline: "íŒ”ë¡œìš°ì¤‘ì¸ ìœ ì €ì˜ ë…¸íŠ¸"
@@ -2710,3 +2735,12 @@ _embedCodeGen:
generateCode: "임베디드 코드를 만들기"
codeGenerated: "코드를 만들었습니다."
codeGeneratedDescription: "만들어진 코드를 웹 사ì´íŠ¸ì— ë¶™ì—¬ì„œ 사용하세요."
+_selfXssPrevention:
+ warning: "경고"
+ title: "â€œì´ í™”ë©´ì— ë­”ê°€ë¥¼ 붙여넣어ë¼\"는 ê²ƒì€ ëª¨ë‘ ì‚¬ê¸°ìž…ë‹ˆë‹¤."
+ description1: "ì—¬ê¸°ì— ë¬´ì–¸ê°€ë¥¼ 붙여넣으면 ì•…ì˜ì ì¸ 사용ìžì—게 ê³„ì •ì„ íƒˆì·¨ë‹¹í•˜ê±°ë‚˜ ê°œì¸ì •보를 ë„용당할 수 있습니다."
+ description2: "붙여 넣으려는 í•­ëª©ì´ ë¬´ì—‡ì¸ì§€ 정확히 ì´í•´í•˜ì§€ 못하는 경우, %c지금 바로 ìž‘ì—…ì„ ì¤‘ë‹¨í•˜ê³  ì´ ì°½ì„ ë‹«ìœ¼ì‹­ì‹œì˜¤."
+ description3: "ìžì„¸í•œ ë‚´ìš©ì€ ì—¬ê¸°ë¥¼ 확ì¸í•´ 주세요. {link}"
+_followRequest:
+ recieved: "ë°›ì€ ì‹ ì²­"
+ sent: "보낸 신청"
diff --git a/locales/lo-LA.yml b/locales/lo-LA.yml
index b100d0300f..38965119fe 100644
--- a/locales/lo-LA.yml
+++ b/locales/lo-LA.yml
@@ -299,7 +299,6 @@ enableLocalTimeline: "ເປີດໃຊ້ທາມລາàºàº—້ອງຖິà
enableGlobalTimeline: "ເປີດໃຊ້ທາມລາàºàº—ົ່ວໂລàº"
disablingTimelinesInfo: "ຜູ້ດູà»àº¥àº¥àº°àºšàºšà»àº¥àº°àºœàº¹à»‰àº„ວບຄຸມຈະສາມາດເຂົ້າເຖີງໄທມ໌ໄລນ໌ທັ້ງເບີດ ເຖີງວ່າຈະບà»à»ˆà»„ດ້ເປີດໃຊ້ງານàºà»à»ˆàº•າມ"
registration: "ລົງທະບຽນ"
-enableRegistration: "ເປີດໃຊ້àºàº²àº™àº¥àº»àº‡àº—ະບຽນຜູ້ໃຊ້ໃà»à»ˆ"
invite: "ເຊີນ"
driveCapacityPerLocalAccount: "ຄວາມຈຸຂອງ drive ຕà»à»ˆàºœàº¹à»‰à»ƒàºŠà»‰àº—້ອງຖິ່ນ"
driveCapacityPerRemoteAccount: "ຄວາມຈຸຂອງ drive ຕà»à»ˆàºœàº¹à»‰à»ƒàºŠà»‰à»„ລàºàº°à»„àº"
diff --git a/locales/nl-NL.yml b/locales/nl-NL.yml
index dde3035357..7e5e9cbbfb 100644
--- a/locales/nl-NL.yml
+++ b/locales/nl-NL.yml
@@ -333,7 +333,6 @@ enableLocalTimeline: "Inschakelen lokale tijdlijn"
enableGlobalTimeline: "Inschakelen globale tijdlijn "
disablingTimelinesInfo: "Beheerders en moderators hebben altijd toegang tot alle tijdlijnen, ook als ze niet actief zijn."
registration: "Registreren"
-enableRegistration: "Inschakelen registratie nieuwe gebruikers "
invite: "Uitnodigen"
driveCapacityPerLocalAccount: "Opslagruimte per lokale gebruiker"
driveCapacityPerRemoteAccount: "Opslagruimte per externe gebruiker"
diff --git a/locales/no-NO.yml b/locales/no-NO.yml
index c5f61db745..87ea01764d 100644
--- a/locales/no-NO.yml
+++ b/locales/no-NO.yml
@@ -260,7 +260,6 @@ enableLocalTimeline: "Aktiver lokal tidslinje"
enableGlobalTimeline: "Aktiver global tidslinje"
disablingTimelinesInfo: "Administratorer og Moderatorer vil alltid ha tilgang til alle tidslinjer, selv om de ikke er aktivert."
registration: "Registrer"
-enableRegistration: "Aktiver registrering av nye brukere"
invite: "Inviter"
basicInfo: "Grunnleggende informasjon"
pinnedUsers: "Festede brukrere"
diff --git a/locales/pl-PL.yml b/locales/pl-PL.yml
index d7afd57760..203f44b334 100644
--- a/locales/pl-PL.yml
+++ b/locales/pl-PL.yml
@@ -362,7 +362,6 @@ enableLocalTimeline: "Włącz lokalną oś czasu"
enableGlobalTimeline: "Włącz globalną oś czasu"
disablingTimelinesInfo: "Administratorzy i moderatorzy będą zawsze mieć dostęp do wszystkich osi czasu, nawet gdy są one wyłączone."
registration: "Zarejestruj siÄ™"
-enableRegistration: "Włącz rejestrację nowych użytkowników"
invite: "ZaproÅ›"
driveCapacityPerLocalAccount: "Powierzchnia dyskowa na lokalnego użytkownika"
driveCapacityPerRemoteAccount: "Powierzchnia dyskowa na zdalnego użytkownika"
@@ -492,6 +491,10 @@ uiLanguage: "Język wyświetlania UI"
aboutX: "O {x}"
emojiStyle: "Styl emoji"
native: "Natywny"
+menuStyle: "Styl Menu"
+style: "Styl"
+drawer: "Schowek"
+popup: "WyskakujÄ…ce okienka"
showNoteActionsOnlyHover: "Pokazuj akcje notatek tylko po najechaniu myszkÄ…"
showReactionsCount: "Wyświetl liczbę reakcji na notatkę"
noHistory: "Brak historii"
@@ -574,6 +577,7 @@ ascendingOrder: "RosnÄ…co"
descendingOrder: "MalejÄ…co"
scratchpad: "Brudnopis"
scratchpadDescription: "Brudnopis zawiera eksperymentalne środowisko dla AiScript. Możesz pisać, wykonywać i sprawdzać wyniki w interakcji z Misskey."
+uiInspector: "Inspektor UI"
output: "Wyjście"
script: "Skrypt"
disablePagesScript: "Wyłącz AiScript na Stronach"
@@ -654,6 +658,7 @@ smtpSecure: "Użyj niejawnego SSL/TLS dla połączeń SMTP"
smtpSecureInfo: "Wyłącz, jeżeli używasz STARTTLS"
testEmail: "Przetestuj dostarczanie wiadomości e-mail"
wordMute: "Wyciszenie słowa"
+hardWordMute: "Wyciszaj przekleństwa"
regexpError: "Błąd wyrażenia regularnego"
regexpErrorDescription: "Wystąpił błąd w wyrażeniu regularnym w linii {line} twoich {tab} wyciszeń:"
instanceMute: "Wyciszone instancje"
@@ -826,6 +831,7 @@ administration: "ZarzÄ…dzanie"
accounts: "Konta"
switch: "Przełącz"
noMaintainerInformationWarning: "Informacje o administratorze nie sÄ… skonfigurowane."
+noInquiryUrlWarning: "Adres URL zapytania nie został ustawiony"
noBotProtectionWarning: "Zabezpieczenie przed botami nie jest skonfigurowane."
configure: "Skonfiguruj"
postToGallery: "Opublikuj w galerii"
@@ -890,6 +896,7 @@ followersVisibility: "Widoczność obserwujących"
continueThread: "Pokaż kontynuację wątku"
deleteAccountConfirm: "Spowoduje to nieodwracalne usunięcie Twojego konta. Kontynuować?"
incorrectPassword: "Nieprawidłowe hasło."
+incorrectTotp: "Hasło pojedynczego użytku jest nie poprawne, lub straciło ważność"
voteConfirm: "Potwierdzić swój głos na \"{choice}\"?"
hide: "Ukryj"
useDrawerReactionPickerForMobile: "Wyświetlaj wybornik reakcji jako szufladę na urządzeniach mobilnych"
@@ -914,6 +921,10 @@ oneHour: "1 godzina"
oneDay: "1 dzień"
oneWeek: "1 tydzień"
oneMonth: "jeden miesiÄ…c"
+threeMonths: "3 miesiÄ…ce"
+oneYear: "Rok"
+threeDays: "3 dni"
+reflectMayTakeTime: "Może minąć trochę czasu, zanim będzie to uwzględnione"
failedToFetchAccountInformation: "Nie udało się uzyskać informacji o koncie"
rateLimitExceeded: "Limit szybkości przekroczony"
cropImage: "Przytnij obraz"
@@ -924,9 +935,11 @@ file: "Pliki"
recentNHours: "W ciÄ…gu ostatnich {n} godzin"
recentNDays: "W ciÄ…gu ostatnich {n} dni"
noEmailServerWarning: "Serwer Email nie jest skonfigurowany"
+thereIsUnresolvedAbuseReportWarning: "Istnieją niewyjaśnione raporty"
recommended: "Zalecane"
check: "Zweryfikuj"
driveCapOverrideLabel: "Zmień limit pojemności dysku użytkownika"
+driveCapOverrideCaption: "Resetuje pojemność do wartości domyślnej, przez wpisanie wartości 0 lub niższej"
requireAdminForView: "Aby to zobaczyć, musisz być administratorem"
isSystemAccount: "To jest konto stworzone i zarzÄ…dzane przez system"
typeToConfirm: "Wprowadź {x}, aby potwierdzić"
@@ -995,17 +1008,29 @@ unassign: "Cofnij przydzielenie"
color: "Kolor"
manageCustomEmojis: "ZarzÄ…dzaj niestandardowymi Emoji"
manageAvatarDecorations: "ZarzÄ…dzaj dekoracjami awatara"
+youCannotCreateAnymore: "Limit kreacji został przekroczony"
+cannotPerformTemporary: "Opcja tymczasowo niedostępna"
+cannotPerformTemporaryDescription: "Ta akcja nie może zostać wykonana, z powodu przekroczenia limitu wykonań. Prosimy poczekać chwilę i spróbować ponownie"
invalidParamError: "Błąd parametrów"
+invalidParamErrorDescription: "Wartości, które zostały podane są niepoprawne. Zwykle jest to spowodowane bugiem, lecz również może być to spowodowane przekroczeniem limitu wartości, lub podobnym problemem"
permissionDeniedError: "Odrzucono operacje"
permissionDeniedErrorDescription: "Konto nie posiada uprawnień"
preset: "Konfiguracja"
selectFromPresets: "Wybierz konfiguracje"
achievements: "Osiągnięcia"
+gotInvalidResponseError: "Niepoprawna odpowiedź serwera"
+gotInvalidResponseErrorDescription: "Wystąpił problem z Twoim połączeniem z Internetem, lub z serwerem. {Spróbuj ponownie} wkrótce."
+thisPostMayBeAnnoying: "Ten wpis może obrażać pozostałych użytkowników"
+thisPostMayBeAnnoyingHome: "Opublikuj na domowej osi czasu"
thisPostMayBeAnnoyingCancel: "Odrzuć"
+thisPostMayBeAnnoyingIgnore: "Zignoruj i wyślij"
+collapseRenotes: "Zwiń wpisy, które już zobaczyłeś"
+collapseRenotesDescription: "Zwiń wpisy, na które już zareagowałeś lub udostępniłeś"
internalServerError: "Wewnętrzny błąd serwera"
internalServerErrorDescription: "Niespodziewany błąd po stronie serwera"
copyErrorInfo: "Kopiuj informacje o błędzie"
joinThisServer: "Dołącz do chaty"
+exploreOtherServers: "Szukaj innej instancji"
disableFederationOk: "Wyłącz federacje"
invitationRequiredToRegister: "Ten serwer wymaga zaproszenia. Tylko osoby z zaproszeniem mogą się zarejestrować"
emailNotSupported: "Wysyłanie wiadomości E-mail nie jest obsługiwane na tym serwerze"
diff --git a/locales/pt-PT.yml b/locales/pt-PT.yml
index 9039fd2141..7ef9e3a946 100644
--- a/locales/pt-PT.yml
+++ b/locales/pt-PT.yml
@@ -376,7 +376,6 @@ enableLocalTimeline: "Ativar linha do tempo local"
enableGlobalTimeline: "Ativar linha do tempo global"
disablingTimelinesInfo: "Se você desabilitar essas linhas do tempo, administradores e moderadores ainda poderão usá-las por conveniência."
registration: "Registar"
-enableRegistration: "Permitir que qualquer pessoa se registre"
invite: "Convidar"
driveCapacityPerLocalAccount: "Capacidade do drive por usuário local"
driveCapacityPerRemoteAccount: "Capacidade do drive por usuário remoto"
diff --git a/locales/ro-RO.yml b/locales/ro-RO.yml
index 3cc09aa5c2..71dc1dc94c 100644
--- a/locales/ro-RO.yml
+++ b/locales/ro-RO.yml
@@ -341,7 +341,6 @@ enableLocalTimeline: "Activează cronologia locală"
enableGlobalTimeline: "Activeaza cronologia globală"
disablingTimelinesInfo: "Administratorii și Moderatorii vor avea mereu access la toate cronologiile, chiar dacă nu sunt activate."
registration: "Inregistrare"
-enableRegistration: "Activează înregistrările pentru utilizatori noi"
invite: "Invită"
driveCapacityPerLocalAccount: "Capacitatea Drive-ului per utilizator local"
driveCapacityPerRemoteAccount: "Capacitatea Drive-ului per utilizator extern"
diff --git a/locales/ru-RU.yml b/locales/ru-RU.yml
index 70178ec2fd..537e99036c 100644
--- a/locales/ru-RU.yml
+++ b/locales/ru-RU.yml
@@ -8,6 +8,9 @@ search: "ПоиÑк"
notifications: "УведомлениÑ"
username: "Ð˜Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ"
password: "Пароль"
+initialPasswordForSetup: "Пароль Ð´Ð»Ñ Ð½Ð°Ñ‡Ð°Ð»Ð° наÑтройки"
+initialPasswordIsIncorrect: "Пароль Ð´Ð»Ñ Ð·Ð°Ð¿ÑƒÑка наÑтройки неверен"
+initialPasswordForSetupDescription: "ЕÑли вы уÑтановили Misskey ÑамоÑтоÑтельно, иÑпользуйте пароль, который вы указали в файле конфигурации.\nЕÑли вы иÑпользуете что-то вроде хоÑтинга Misskey, иÑпользуйте предоÑтавленный пароль.\nЕÑли вы не уÑтановили пароль, оÑтавьте его пуÑтым и продолжайте."
forgotPassword: "Забыли пароль?"
fetchingAsApObject: "Приём Ñ Ð´Ñ€ÑƒÐ³Ð¸Ñ… Ñайтов"
ok: "Подтвердить"
@@ -232,6 +235,7 @@ clearCachedFilesConfirm: "Удалить вÑе закÑшированные Ñ„Ð
blockedInstances: "Заблокированные инÑтанÑÑ‹"
blockedInstancesDescription: "Введите ÑпиÑок инÑтанÑов, которые хотите заблокировать. Они больше не Ñмогут обмениватьÑÑ Ñ Ð²Ð°ÑˆÐ¸Ð¼ инÑтанÑом."
silencedInstances: "Заглушённые инÑтанÑÑ‹"
+federationAllowedHosts: "Серверы, поддерживающие федерацию"
muteAndBlock: "Скрытие и блокировка"
mutedUsers: "Скрытые пользователи"
blockedUsers: "Заблокированные пользователи"
@@ -330,6 +334,7 @@ renameFolder: "Переименовать папку"
deleteFolder: "Удалить папку"
folder: "Папка"
addFile: "Добавить файл"
+showFile: "ПоÑмотреть файл"
emptyDrive: "ДиÑк пуÑÑ‚"
emptyFolder: "Папка пуÑта"
unableToDelete: "Удаление невозможно"
@@ -372,7 +377,6 @@ enableLocalTimeline: "Включить локальную ленту"
enableGlobalTimeline: "Включить глобальную ленту"
disablingTimelinesInfo: "У админиÑтраторов и модераторов еÑть доÑтуп ко вÑем лентам, даже еÑли они отключены."
registration: "РегиÑтрациÑ"
-enableRegistration: "Разрешить региÑтрацию"
invite: "ПриглаÑить"
driveCapacityPerLocalAccount: "Объём ДиÑка на одного локального пользователÑ"
driveCapacityPerRemoteAccount: "Объём ДиÑка на одного Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ñ Ð´Ñ€ÑƒÐ³Ð¾Ð³Ð¾ ÑкземплÑра"
@@ -443,6 +447,7 @@ totp: "Приложение-аутентификатор"
totpDescription: "ОпиÑание приложениÑ-аутентификатора"
moderator: "Модератор"
moderation: "МодерациÑ"
+moderationNote: "ÐŸÑ€Ð¸Ð¼ÐµÑ‡Ð°Ð½Ð¸Ñ Ð¼Ð¾Ð´ÐµÑ€Ð°Ñ‚Ð¾Ñ€Ð°"
moderationLogs: "Журнал модерации"
nUsersMentioned: "УпомÑнуло пользователей: {n}"
securityKeyAndPasskey: "Ключ безопаÑноÑти и Ð¿Ð°Ñ€Ð¾Ð»ÑŒÐ½Ð°Ñ Ñ„Ñ€Ð°Ð·Ð°"
@@ -503,6 +508,8 @@ uiLanguage: "Язык интерфейÑа"
aboutX: "ОпиÑание {x}"
emojiStyle: "Стиль Ñмодзи"
native: "СиÑтемные"
+menuStyle: "Стиль меню"
+style: "Стиль"
showNoteActionsOnlyHover: "Показывать кнопки у заметок только при наведении"
showReactionsCount: "Видеть количеÑтво реакций на заметках"
noHistory: "ИÑÑ‚Ð¾Ñ€Ð¸Ñ Ð¿Ð¾ÐºÐ° пуÑта"
diff --git a/locales/sk-SK.yml b/locales/sk-SK.yml
index 60ce45a6b9..f3f43ee6a6 100644
--- a/locales/sk-SK.yml
+++ b/locales/sk-SK.yml
@@ -331,7 +331,6 @@ enableLocalTimeline: "PovoliÅ¥ lokálnu Äasovú os"
enableGlobalTimeline: "PovoliÅ¥ globálnu Äasovú os"
disablingTimelinesInfo: "Administrátori a moderátori majú vždy prístup ku vÅ¡etkým Äasovým osiam, aj keÄ sú vypnuté."
registration: "Registrácia"
-enableRegistration: "Povoliť registráciu nových používateľov"
invite: "Pozvať"
driveCapacityPerLocalAccount: "Kapacita disku pre používateľa"
driveCapacityPerRemoteAccount: "Kapacita disku pre vzdialeného používateľa"
diff --git a/locales/sv-SE.yml b/locales/sv-SE.yml
index 5a0de660e8..5961605645 100644
--- a/locales/sv-SE.yml
+++ b/locales/sv-SE.yml
@@ -333,7 +333,6 @@ disconnectService: "Koppla från"
enableLocalTimeline: "Aktivera lokal tidslinje"
enableGlobalTimeline: "Aktivera global tidslinje"
registration: "Registrera"
-enableRegistration: "Aktivera registrering av nya användare"
invite: "Inbjudan"
inMb: "I megabyte"
bannerUrl: "URL till banner-bilden"
@@ -385,6 +384,7 @@ passwordLessLoginDescription: "Tillåter lösenordsfri inloggning med endast en
resetPassword: "Återställ Lösenord"
newPasswordIs: "Det nya lösenordet är \"{password}\""
share: "Dela"
+markAsReadAllTalkMessages: "Markera alla meddelanden som lästa"
help: "Hjälp"
close: "Stäng"
invites: "Inbjudan"
@@ -393,12 +393,15 @@ transfer: "Överför"
text: "Text"
enable: "Aktivera"
next: "Nästa"
+retype: "Ange igen"
+noMessagesYet: "Inga meddelanden än"
invitations: "Inbjudan"
invitationCode: "Inbjudningskod"
available: "Tillgängligt"
weakPassword: "Svagt Lösenord"
normalPassword: "Medel Lösenord"
strongPassword: "Starkt Lösenord"
+signinWith: "Logga in med {x}"
signinFailed: "Kan inte logga in. Det angivna användarnamnet eller lösenordet är felaktigt."
or: "eller"
language: "Språk"
@@ -410,70 +413,124 @@ existingAccount: "Existerande konto"
regenerate: "Regenerera"
fontSize: "Textstorlek"
openImageInNewTab: "Öppna bild i ny flik"
+appearance: "Utseende"
clientSettings: "Klientinställningar"
accountSettings: "Kontoinställningar"
numberOfDays: "Antal dagar"
+objectStorageUseSSL: "Använd SSL"
+serverLogs: "Serverloggar"
deleteAll: "Radera alla"
sounds: "Ljud"
sound: "Ljud"
listen: "Lyssna"
none: "Ingen"
volume: "Volym"
+notUseSound: "Inaktivera ljud"
chooseEmoji: "Välj en emoji"
recentUsed: "Senast använd"
install: "Installera"
uninstall: "Avinstallera"
+deleteAllFiles: "Radera alla filer"
+deleteAllFilesConfirm: "Är du säker på att du vill radera alla filer?"
menu: "Meny"
+addItem: "Lägg till objekt"
serviceworkerInfo: "Måste vara aktiverad för pushnotiser."
enableInfiniteScroll: "Ladda mer automatiskt"
enablePlayer: "Öppna videospelare"
+description: "Beskrivning"
permission: "Behörigheter"
enableAll: "Aktivera alla"
+disableAll: "Inaktivera alla"
edit: "Ändra"
enableEmail: "Aktivera epost-utskick"
email: "E-post"
+emailAddress: "E-postadress"
smtpHost: "Värd"
smtpUser: "Användarnamn"
smtpPass: "Lösenord"
emptyToDisableSmtpAuth: "Lämna användarnamn och lösenord tomt för att avaktivera SMTP verifiering"
+makeActive: "Aktivera"
+copy: "Kopiera"
+overview: "Översikt"
logs: "Logg"
+database: "Databas"
channel: "kanal"
create: "Skapa"
other: "Mer"
+abuseReports: "Rapporter"
+reportAbuse: "Rapporter"
+reportAbuseOf: "Rapportera {name}"
+abuseReported: "Din rapport har skickats. Tack så mycket."
send: "Skicka"
openInNewTab: "Öppna i ny flik"
createNew: "Skapa ny"
+private: "Privat"
i18nInfo: "Misskey översätts till många olika språk av volontärer. Du kan hjälpa till med översättningen på {link}."
accountInfo: "Kontoinformation"
+followersCount: "Antal följare"
+yes: "Ja"
+no: "Nej"
clips: "Klipp"
duplicate: "Duplicera"
reloadToApplySetting: "Inställningen tillämpas efter sidan laddas om. Vill du göra det nu?"
clearCache: "Rensa cache"
onlineUsersCount: "{n} användare är online"
+nUsers: "{n} användare"
nNotes: "{n} Noter"
backgroundColor: "Bakgrundsbild"
textColor: "Text"
+saveAs: "Spara som..."
+saveConfirm: "Spara ändringar?"
youAreRunningUpToDateClient: "Klienten du använder är uppdaterat."
newVersionOfClientAvailable: "Ny version av klienten är tillgänglig."
+editCode: "Redigera kod"
publish: "Publicera"
typingUsers: "{users} skriver"
+goBack: "Tillbaka"
+addDescription: "Lägg till beskrivning"
info: "Om"
+online: "Online"
+active: "Aktiv"
+offline: "Offline"
enabled: "Aktiverad"
+quickAction: "Snabbåtgärder"
user: "Användare"
+gallery: "Galleri"
+popularPosts: "Populära inlägg"
customCssWarn: "Den här inställningen borde bara ändrats av en som har rätta kunskaper. Om du ställer in det här fel så kan klienten sluta fungera rätt."
global: "Global"
squareAvatars: "Visa fyrkantiga profilbilder"
sent: "Skicka"
+searchResult: "Sökresultat"
+learnMore: "Läs mer"
misskeyUpdated: "Misskey har uppdaterats!"
+translate: "Översätt"
+controlPanel: "Kontrollpanel"
+manageAccounts: "Hantera konton"
incorrectPassword: "Fel lösenord."
+hide: "Dölj"
welcomeBackWithName: "Välkommen tillbaka, {name}"
clickToFinishEmailVerification: "Tryck på [{ok}] för att slutföra bekräftelsen på e-postadressen."
+size: "Storlek"
searchByGoogle: "Sök"
+indefinitely: "Aldrig"
+tenMinutes: "10 minuter"
+oneHour: "En timme"
+oneDay: "En dag"
+oneWeek: "En vecka"
+oneMonth: "En månad"
+threeMonths: "3 månader"
+oneYear: "1 år"
+threeDays: "3 dagar"
file: "Filer"
+deleteAccount: "Radera konto"
+label: "Etikett"
cannotUploadBecauseNoFreeSpace: "Kan inte ladda upp filen för att det finns inget lagringsutrymme kvar."
cannotUploadBecauseExceedsFileSizeLimit: "Kan inte ladda upp filen för att den är större än filstorleksgränsen."
+beta: "Beta"
enableAutoSensitive: "Automatisk NSFW markering"
enableAutoSensitiveDescription: "Tillåter automatiskt detektering och marketing av NSFW media genom Maskininlärning när möjligt. Även om denna inställningen är avaktiverad, kan det vara aktiverat på hela instansen."
+move: "Flytta"
pushNotification: "Pushnotiser"
subscribePushNotification: "Aktivera pushnotiser"
unsubscribePushNotification: "Avaktivera pushnotiser"
@@ -482,38 +539,86 @@ pushNotificationNotSupported: "Din webbläsare eller instans har inte stöd för
windowMaximize: "Maximera"
windowMinimize: "Minimera"
windowRestore: "Återställ"
+tools: "Verktyg"
+like: "Gilla"
pleaseDonate: "Misskey är en gratis programvara som används på {host}. Donera gärna för att göra utvecklingen ständigt, tack!"
+roles: "Roll"
+role: "Roll"
+color: "Färg"
resetPasswordConfirm: "Återställ verkligen ditt lösenord?"
dataSaver: "Databesparing"
icon: "Profilbild"
+forYou: "För dig"
replies: "Svara"
renotes: "Omnotera"
+loadReplies: "Visa svar"
+loadConversation: "Visa konversation"
+authentication: "Autentisering"
+sourceCode: "Källkod"
+doReaction: "Lägg till reaktion"
+code: "Kod"
+gameRetry: "Försök igen"
+inquiry: "Kontakt"
+tryAgain: "Försök igen senare"
+signinWithPasskey: "Logga in med nyckel"
+unknownWebAuthnKey: "Okänd nyckel"
_delivery:
stop: "Suspenderad"
_type:
none: "Publiceras"
+_initialAccountSetting:
+ profileSetting: "Profilinställningar"
+_initialTutorial:
+ _reaction:
+ title: "Vad är reaktioner?"
_achievements:
_types:
_open3windows:
title: "Flera Fönster"
description: "Ha minst 3 fönster öppna samtidigt"
+_role:
+ edit: "Redigera roll"
_ffVisibility:
public: "Publicera"
+ private: "Privat"
+_accountDelete:
+ accountDelete: "Radera konto"
+_ad:
+ back: "Tillbaka"
+_gallery:
+ like: "Gilla"
_email:
_follow:
title: "följde dig"
+_aboutMisskey:
+ source: "Källkod"
+ projectMembers: "Projektmedlemmar"
_channel:
setBanner: "Välj banner"
removeBanner: "Ta bort banner"
+ nameAndDescription: "Namn och beskrivning"
+_menuDisplay:
+ hide: "Dölj"
_theme:
+ description: "Beskrivning"
+ color: "Färg"
keys:
mention: "Nämn"
renote: "Omnotera"
_sfx:
note: "Noter"
notification: "Notifikationer"
+_ago:
+ justNow: "Just nu"
_2fa:
+ step3Title: "Ange en autentiseringskod"
renewTOTPCancel: "Nej tack"
+_permissions:
+ "read:reactions": "Visa dina reaktioner"
+ "write:reactions": "Redigera dina reaktioner"
+ "write:admin:delete-account": "Radera användarkonto"
+ "write:admin:roles": "Hantera roller"
+ "read:admin:roles": "Visa roller"
_antennaSources:
all: "Alla noter"
homeTimeline: "Noter från följda användare"
@@ -530,13 +635,19 @@ _widgets:
_userList:
chooseList: "Välj lista"
_cw:
+ hide: "Dölj"
show: "Ladda mer"
+ chars: "{count} tecken"
+ files: "{count} fil(er)"
+_poll:
+ infinite: "Aldrig"
_visibility:
home: "Hem"
followers: "Följare"
_profile:
name: "Namn"
username: "Användarnamn"
+ metadataLabel: "Etikett"
changeAvatar: "Ändra profilbild"
changeBanner: "Ändra banner"
_exportOrImport:
@@ -547,9 +658,12 @@ _exportOrImport:
userLists: "Listor"
_charts:
federation: "Federation"
+ activeUsers: "Aktiva användare"
_timelines:
home: "Hem"
global: "Global"
+_play:
+ summary: "Beskrivning"
_pages:
blocks:
image: "Bilder"
@@ -567,6 +681,8 @@ _notification:
reply: "Svara"
renote: "Omnotera"
_deck:
+ addColumn: "Lägg till kolumn"
+ deleteProfile: "Radera profil"
_columns:
notifications: "Notifikationer"
tl: "Tidslinje"
@@ -584,3 +700,10 @@ _abuseReport:
_moderationLogTypes:
suspend: "Suspendera"
resetPassword: "Återställ Lösenord"
+_reversi:
+ blackOrWhite: "Svart/Vit"
+ rules: "Regler"
+ black: "Svart"
+ white: "Vit"
+_selfXssPrevention:
+ warning: "VARNING"
diff --git a/locales/th-TH.yml b/locales/th-TH.yml
index c70d448e2b..c725282d50 100644
--- a/locales/th-TH.yml
+++ b/locales/th-TH.yml
@@ -8,6 +8,9 @@ search: "ค้นหา"
notifications: "เเจ้งเตือน"
username: "ชื่อผู้ใช้"
password: "รหัสผ่าน"
+initialPasswordForSetup: "รหัสผ่านเริ่มต้นสำหรับà¸à¸²à¸£à¸•ั้งค่า"
+initialPasswordIsIncorrect: "รหัสผ่านเริ่มต้นสำหรับตั้งค่านั้นไม่ถูà¸à¸•้องค่ะ"
+initialPasswordForSetupDescription: "ถ้าหาà¸à¸„ุณติดตั้ง Misskey เอง ให้ใช้รหัสผ่านที่คุณป้อนในไฟล์à¸à¸³à¸«à¸™à¸”ค่า \nถ้าหาà¸à¸„ุณà¸à¸³à¸¥à¸±à¸‡à¹ƒà¸Šà¹‰à¸šà¸£à¸´à¸à¸²à¸£à¹‚ฮสต์ Misskey ให้ใช้รหัสผ่านที่ได้รับมา\nถ้ายังไม่มีรหัสผ่าน ให้ข้ามช่องรหัสผ่านไป à¹à¸¥à¹‰à¸§à¸à¸”ต่อไป"
forgotPassword: "ลืมรหัสผ่าน"
fetchingAsApObject: "à¸à¸³à¸¥à¸±à¸‡à¸”ึงข้อมูลจาà¸à¸ªà¸«à¸žà¸±à¸™à¸˜à¹Œ..."
ok: "ตà¸à¸¥à¸‡"
@@ -236,6 +239,8 @@ silencedInstances: "ปิดปาà¸à¹€à¸‹à¸´à¸£à¹Œà¸Ÿà¹€à¸§à¸­à¸£à¹Œà¸™à¸µà¹‰
silencedInstancesDescription: "ระบุโฮสต์ของเซิร์ฟเวอร์ที่ต้องà¸à¸²à¸£à¸›à¸´à¸”ปาภคั่นด้วยà¸à¸²à¸£à¸‚ึ้นบรรทัดใหม่, บัà¸à¸Šà¸µà¸—ั้งหมดของเซิร์ฟเวอร์ดังà¸à¸¥à¹ˆà¸²à¸§à¸ˆà¸°à¸–ือว่าถูà¸à¸›à¸´à¸”ปาà¸à¹€à¸Šà¹ˆà¸™à¸à¸±à¸™ ทำได้เฉพาะคำขอติดตามเท่านั้น à¹à¸¥à¸°à¹„ม่สามารถà¸à¸¥à¹ˆà¸²à¸§à¸–ึงบัà¸à¸Šà¸µà¹ƒà¸™à¹€à¸‹à¸´à¸£à¹Œà¸Ÿà¹€à¸§à¸­à¸£à¹Œà¸™à¸µà¹‰à¹„ด้หาà¸à¹„ม่ได้ถูà¸à¸•ิดตามà¸à¸¥à¸±à¸š | สิ่งนี้ไม่มีผลต่ออินสà¹à¸•นซ์ที่ถูà¸à¸šà¸¥à¹‡à¸­à¸"
mediaSilencedInstances: "เซิร์ฟเวอร์ที่ถูà¸à¸›à¸´à¸”ปาà¸à¸ªà¸·à¹ˆà¸­"
mediaSilencedInstancesDescription: "ระบุโฮสต์ของเซิร์ฟเวอร์ที่ต้องà¸à¸²à¸£à¸›à¸´à¸”ปาà¸à¸ªà¸·à¹ˆà¸­ คั่นด้วยà¸à¸²à¸£à¸‚ึ้นบรรทัดใหม่, ไฟล์ที่ถูà¸à¸ªà¹ˆà¸‡à¸ˆà¸²à¸à¸šà¸±à¸à¸Šà¸µà¸‚องเซิร์ฟเวอร์ดังà¸à¸¥à¹ˆà¸²à¸§à¸ˆà¸°à¸–ือว่าถูà¸à¸›à¸´à¸”ปาภà¹à¸¥à¹‰à¸§à¸ˆà¸°à¸–ูà¸à¸•ิดเครื่องหมายว่ามีเนื้อหาละเอียดอ่อน à¹à¸¥à¸°à¹€à¸­à¹‚มจิà¹à¸šà¸šà¸à¸³à¸«à¸™à¸”เองà¸à¹‡à¸ˆà¸°à¹ƒà¸Šà¹‰à¹„ม่ได้ด้วย | สิ่งนี้ไม่มีผลต่ออินสà¹à¸•นซ์ที่ถูà¸à¸šà¸¥à¹‡à¸­à¸"
+federationAllowedHosts: "เซิร์ฟเวอร์ที่เปิดให้บริà¸à¸²à¸£à¹à¸šà¸šà¹€à¸Ÿà¹€à¸”อเรชั่น"
+federationAllowedHostsDescription: "ระบุชื่อโฮสต์ของเซิร์ฟเวอร์ที่คุณต้องà¸à¸²à¸£à¸­à¸™à¸¸à¸à¸²à¸•ให้เชื่อมต่อà¹à¸šà¸šà¹€à¸Ÿà¹€à¸”อเรชั่น โดยต้องเว้นวรรคà¹à¸•่ละบรรทัด"
muteAndBlock: "ปิดเสียงà¹à¸¥à¸°à¸šà¸¥à¹‡à¸­à¸"
mutedUsers: "ผู้ใช้ที่ถูà¸à¸›à¸´à¸”เสียง"
blockedUsers: "ผู้ใช้ที่ถูà¸à¸šà¸¥à¹‡à¸­à¸"
@@ -334,6 +339,7 @@ renameFolder: "เปลี่ยนชื่อโฟลเดอร์"
deleteFolder: "ลบโฟลเดอร์"
folder: "โฟลเดอร์"
addFile: "เพิ่มไฟล์"
+showFile: "à¹à¸ªà¸”งไฟล์"
emptyDrive: "ไดรฟ์ของคุณว่างเปล่านะ"
emptyFolder: "โฟลเดอร์นี้ว่างเปล่า"
unableToDelete: "ไม่สามารถลบออà¸à¹„ด้"
@@ -376,7 +382,6 @@ enableLocalTimeline: "เปิดใช้งานไทม์ไลน์ทà
enableGlobalTimeline: "เปิดใช้งานไทม์ไลน์ทั่วโลà¸"
disablingTimelinesInfo: "ผู้ดูà¹à¸¥à¸£à¸°à¸šà¸šà¹à¸¥à¸°à¸œà¸¹à¹‰à¸„วบคุมจะสามารถเข้าถึงไทม์ไลน์ทั้งหมด ถึงà¹à¸¡à¹‰à¸§à¹ˆà¸²à¸ˆà¸°à¹„ม่ได้เปิดใช้งานà¸à¹‡à¸•าม"
registration: "ลงทะเบียน"
-enableRegistration: "เปิดใช้งานà¸à¸²à¸£à¸¥à¸‡à¸—ะเบียนผู้ใช้ใหม่"
invite: "คำเชิà¸"
driveCapacityPerLocalAccount: "ความจุของไดรฟ์ต่อผู้ใช้ท้องถิ่น"
driveCapacityPerRemoteAccount: "ความจุของไดรฟ์ต่อผู้ใช้ระยะไà¸à¸¥"
@@ -448,6 +453,7 @@ totpDescription: "ใช้à¹à¸­à¸›à¸¢à¸·à¸™à¸¢à¸±à¸™à¸•ัวตนเพืà¹
moderator: "ผู้ควบคุม"
moderation: "à¸à¸²à¸£à¸à¸¥à¸±à¹ˆà¸™à¸à¸£à¸­à¸‡"
moderationNote: "โน้ตà¸à¸²à¸£à¸à¸¥à¸±à¹ˆà¸™à¸à¸£à¸­à¸‡"
+moderationNoteDescription: "คุณสามารถใส่โน้ตส่วนตัวที่เฉพาะผู้ดูà¹à¸¥à¸£à¸°à¸šà¸šà¹€à¸—่านั้นที่สามารถเข้าถึงได้"
addModerationNote: "เพิ่มโน้ตà¸à¸²à¸£à¸à¸¥à¸±à¹ˆà¸™à¸à¸£à¸­à¸‡"
moderationLogs: "ปูมà¸à¸²à¸£à¸„วบคุมดูà¹à¸¥"
nUsersMentioned: "à¸à¸¥à¹ˆà¸²à¸§à¸–ึงโดยผู้ใช้ {n} ราย"
@@ -509,6 +515,10 @@ uiLanguage: "ภาษาอินเทอร์เฟซผู้ใช้งà
aboutX: "เà¸à¸µà¹ˆà¸¢à¸§à¸à¸±à¸š {x}"
emojiStyle: "สไตล์ของเอโมจิ"
native: "ภาษาà¹à¸¡à¹ˆ"
+menuStyle: "สไตล์เมนู"
+style: "สไตล์"
+drawer: "ตัววาด"
+popup: "ป๊อปอัพ"
showNoteActionsOnlyHover: "à¹à¸ªà¸”งà¸à¸²à¸£à¸”ำเนินà¸à¸²à¸£à¹‚น้ตเมื่อโฮเวอร์(วางเมาส์เหนือ)เท่านั้น"
showReactionsCount: "à¹à¸ªà¸”งจำนวนรีà¹à¸­à¸à¸Šà¸±à¹ˆà¸™à¹ƒà¸™à¹‚น้ต"
noHistory: "ไม่มีประวัติ"
@@ -591,6 +601,8 @@ ascendingOrder: "เรียงลำดับขึ้น"
descendingOrder: "เรียงลำดับลง"
scratchpad: "Scratchpad"
scratchpadDescription: "Scratchpad ให้สภาพà¹à¸§à¸”ล้อมสำหรับà¸à¸²à¸£à¸—ดลอง AiScript คุณสามารถเขียนโค้ด/สั่งดำเนินà¸à¸²à¸£/ตรวจสอบผลลัพธ์ ของà¸à¸²à¸£à¹‚ต้ตอบà¸à¸±à¸š Misskey ได้"
+uiInspector: "ตัวตรวจสอบ UI"
+uiInspectorDescription: "คุณสามารถตรวจสอบรายชื่อเซิร์ฟเวอร์ที่เà¸à¸µà¹ˆà¸¢à¸§à¸‚้องà¸à¸±à¸šà¸ªà¹ˆà¸§à¸™à¸›à¸£à¸°à¸à¸­à¸šà¸­à¸´à¸™à¹€à¸•อร์เฟซผู้ใช้ (UI) บนหน่วยความจำของระบบ ส่วนประà¸à¸­à¸š UI เหล่านี้จะถูà¸à¸ªà¸£à¹‰à¸²à¸‡à¸‚ึ้นโดยฟังà¸à¹Œà¸Šà¸±à¸™ Ui:C:"
output: "เอาท์พุต"
script: "สคริปต์"
disablePagesScript: "ปิดà¸à¸²à¸£à¹ƒà¸Šà¹‰à¸‡à¸²à¸™ AiScript บนเพจ"
@@ -909,6 +921,7 @@ followersVisibility: "à¸à¸²à¸£à¸¡à¸­à¸‡à¹€à¸«à¹‡à¸™à¸œà¸¹à¹‰à¸—ี่à¸à¸³à¸¥à
continueThread: "ดูความต่อเนื่องเธรด"
deleteAccountConfirm: "à¸à¸²à¸£à¸”ำเนินà¸à¸²à¸£à¸™à¸µà¹‰à¸ˆà¸°à¸¥à¸šà¸šà¸±à¸à¸Šà¸µà¸‚องคุณอย่างถาวรเลยนะ à¹à¸™à¹ˆà¹ƒà¸ˆà¸«à¸£à¸­à¸”ำเนินà¸à¸²à¸£?"
incorrectPassword: "รหัสผ่านไม่ถูà¸à¸•้อง"
+incorrectTotp: "รหัสยืนยันตัวตนà¹à¸šà¸šà¹ƒà¸Šà¹‰à¸„รั้งเดียวที่ท่านได้ระบุมานั้น ไม่ถูà¸à¸•้องหรือหมดอายุลงà¹à¸¥à¹‰à¸§à¸„่ะ"
voteConfirm: "ต้องà¸à¸²à¸£à¹‚หวต “{choice}†ใช่ไหม?"
hide: "ซ่อน"
useDrawerReactionPickerForMobile: "à¹à¸ªà¸”ง ตัวจิ้มรีà¹à¸­à¸„ชั่น เป็นà¹à¸šà¸šà¸¥à¸´à¹‰à¸™à¸Šà¸±à¸ เมื่อใช้บนมือถือ"
@@ -1073,6 +1086,7 @@ retryAllQueuesConfirmTitle: "ลองใหม่ทั้งหมดจริ
retryAllQueuesConfirmText: "สิ่งนี้จะเพิ่มà¸à¸²à¸£à¹‚หลดเซิร์ฟเวอร์ชั่วคราวนะ"
enableChartsForRemoteUser: "สร้างà¹à¸œà¸™à¸ à¸¹à¸¡à¸´à¸‚้อมูลผู้ใช้ระยะไà¸à¸¥"
enableChartsForFederatedInstances: "สร้างà¹à¸œà¸™à¸ à¸¹à¸¡à¸´à¸‚องเซิร์ฟเวอร์ระยะไà¸à¸¥"
+enableStatsForFederatedInstances: "ดึงข้อมูลสถิติจาà¸à¹€à¸‹à¸´à¸£à¹Œà¸Ÿà¹€à¸§à¸­à¸£à¹Œà¸—ี่อยู่ห่างไà¸à¸¥"
showClipButtonInNoteFooter: "เพิ่ม “คลิป†ไปยังเมนูสั่งà¸à¸²à¸£à¸‚องโน้ต"
reactionsDisplaySize: "ขนาดของรีà¹à¸­à¸„ชั่น"
limitWidthOfReaction: "จำà¸à¸±à¸”ความà¸à¸§à¹‰à¸²à¸‡à¸ªà¸¹à¸‡à¸ªà¸¸à¸”ของรีà¹à¸­à¸„ชั่นà¹à¸¥à¸°à¹à¸ªà¸”งให้เล็à¸à¸¥à¸‡"
@@ -1259,6 +1273,32 @@ confirmWhenRevealingSensitiveMedia: "ตรวจสอบà¸à¹ˆà¸­à¸™à¹à¸ªà¸”à
sensitiveMediaRevealConfirm: "สื่อนี้มีเนื้อหาละเอียดอ่อน, ต้องà¸à¸²à¸£à¹à¸ªà¸”งใช่ไหม?"
createdLists: "รายชื่อที่ถูà¸à¸ªà¸£à¹‰à¸²à¸‡"
createdAntennas: "เสาอาà¸à¸²à¸¨à¸—ี่ถูà¸à¸ªà¸£à¹‰à¸²à¸‡"
+fromX: "จาภ{x}"
+genEmbedCode: "สร้างรหัสà¸à¸±à¸‡"
+noteOfThisUser: "โน้ตโดยผู้ใช้นี้"
+clipNoteLimitExceeded: "ไม่สามารถเพิ่มโน้ตเพิ่มเติมในคลิปนี้ได้อีà¸à¹à¸¥à¹‰à¸§"
+performance: "ประสิทธิภาพ​"
+modified: "à¹à¸à¹‰à¹„ข"
+discard: "ละทิ้ง"
+thereAreNChanges: "มีอยู่ {n} เปลี่ยนà¹à¸›à¸¥à¸‡(s)"
+signinWithPasskey: "ลงชื่อเข้าใช้ด้วย Passkey"
+unknownWebAuthnKey: "พาสคีย์ไม่ถูà¸à¸•้องค่ะ"
+passkeyVerificationFailed: "à¸à¸²à¸£à¸¢à¸·à¸™à¸¢à¸±à¸™à¸à¸¸à¸à¹à¸ˆà¸”ิจิทัลไม่สำเร็จค่ะ"
+passkeyVerificationSucceededButPasswordlessLoginDisabled: "à¸à¸²à¸£à¸¢à¸·à¸™à¸¢à¸±à¸™à¸žà¸²à¸ªà¸„ีย์สำเร็จà¹à¸¥à¹‰à¸§ à¹à¸•่à¸à¸²à¸£à¸¥à¸‡à¸Šà¸·à¹ˆà¸­à¹€à¸‚้าใช้à¹à¸šà¸šà¹„ม่ต้องใส่รหัสผ่านถูà¸à¸›à¸´à¸”ใช้งานà¹à¸¥à¹‰à¸§"
+messageToFollower: "ข้อความถึงผู้ติดตาม"
+target: "เป้า"
+testCaptchaWarning: "ฟังà¸à¹Œà¸Šà¸±à¸™à¸™à¸µà¹‰à¸¡à¸µà¹„ว้สำหรับทดสอบ CAPTCHA เท่านั้น\n<strong>ห้ามนำไปใช้ในระบบจริงโดยเด็ดขาด</strong>"
+prohibitedWordsForNameOfUser: "คำนี้ไม่สามารถใช้เป็นชื่อผู้ใช้ได้"
+prohibitedWordsForNameOfUserDescription: "หาà¸à¸¡à¸µà¸ªà¸•ริงใดๆ ในรายà¸à¸²à¸£à¸™à¸µà¹‰à¸›à¸£à¸²à¸à¸à¸­à¸¢à¸¹à¹ˆà¹ƒà¸™à¸Šà¸·à¹ˆà¸­à¸‚องผู้ใช้ ชื่อนั้นจะถูà¸à¸›à¸à¸´à¹€à¸ªà¸˜ ผู้ใช้ที่มีสิทธิ์à¹à¸•่ผู้ดูà¹à¸¥à¸£à¸°à¸šà¸šà¸™à¸±à¹‰à¸™à¸ˆà¸°à¹„ม่ได้รับผลà¸à¸£à¸°à¸—บใดๆจาà¸à¸‚้อจำà¸à¸±à¸”นี้ค่ะ"
+yourNameContainsProhibitedWords: "ชื่อของคุณนั้นมีคำที่ต้องห้าม"
+yourNameContainsProhibitedWordsDescription: "ถ้าหาà¸à¸„ุณต้องà¸à¸²à¸£à¹ƒà¸Šà¹‰à¸Šà¸·à¹ˆà¸­à¸™à¸µà¹‰ à¸à¸£à¸¸à¸“าติดต่อผู้ดูà¹à¸¥à¸£à¸°à¸šà¸šà¸‚องเซิร์ฟเวอร์นะค่ะ"
+_abuseUserReport:
+ forward: "ส่ง​ต่อ"
+ forwardDescription: "ส่งรายงานไปยังเซิร์ฟเวอร์ระยะไà¸à¸¥à¹‚ดยใช้บัà¸à¸Šà¸µà¸£à¸°à¸šà¸šà¸—ี่ไม่ระบุตัวตน"
+ resolve: "à¹à¸à¹‰à¹„ข"
+ accept: "ยอมรับ"
+ reject: "ปà¸à¸´à¹€à¸ªà¸˜"
+ resolveTutorial: "ถ้าหาà¸à¸£à¸²à¸¢à¸‡à¸²à¸™à¸™à¸µà¹‰à¸¡à¸µà¹€à¸™à¸·à¹‰à¸­à¸«à¸²à¸–ูà¸à¸•้อง ให้เลือภ\"ยอมรับ\" เพื่อปิดเคสà¸à¸£à¸“ีนี้โดยถือว่าได้รับà¸à¸²à¸£à¹à¸à¹‰à¹„ขà¹à¸¥à¹‰à¸§\nถ้าหาà¸à¹€à¸™à¸·à¹‰à¸­à¸«à¸²à¹ƒà¸™à¸£à¸²à¸¢à¸‡à¸²à¸™à¸™à¸µà¹‰à¸™à¸±à¹‰à¸™à¹„ม่ถูà¸à¸•้อง ให้เลือภ\"ปà¸à¸´à¹€à¸ªà¸˜\" เพื่อปิดเคสà¸à¸£à¸“ีนี้โดยถือว่าไม่ได้รับà¸à¸²à¸£à¹à¸à¹‰à¹„ข"
_delivery:
status: "สถานะà¸à¸²à¸£à¸ˆà¸±à¸”ส่ง"
stop: "ระงับà¸à¸²à¸£à¸ªà¹ˆà¸‡"
@@ -1393,8 +1433,10 @@ _serverSettings:
fanoutTimelineDescription: "เพิ่มประสิทธิภาพà¸à¸²à¸£à¸”ึงข้อมูลไทม์ไลน์อย่างมาภà¹à¸¥à¸°à¸¥à¸”ภาระในà¸à¸²à¸™à¸‚้อมูลเมื่อเปิดใช้งาน ในทางà¸à¸¥à¸±à¸šà¸à¸±à¸™ à¸à¸²à¸£à¹ƒà¸Šà¹‰à¸«à¸™à¹ˆà¸§à¸¢à¸„วามจำของ Redis จะเพิ่มขึ้น ลองปิดà¸à¸²à¸£à¹ƒà¸Šà¹‰à¸‡à¸²à¸™à¸™à¸µà¹‰à¹ƒà¸™à¸à¸£à¸“ีที่หน่วยความจำเซิร์ฟเวอร์เหลือน้อยหรือเซิร์ฟเวอร์ไม่เสถียร"
fanoutTimelineDbFallback: "ฟอลà¹à¸šà¹Šà¸à¸à¸¥à¸±à¸šà¸à¸²à¸™à¸‚้อมูล"
fanoutTimelineDbFallbackDescription: "เมื่อเปิดใช้งาน หาà¸à¹„ม่ได้à¹à¸„ชไทม์ไลน์ ไทม์ไลน์จะฟอลà¹à¸šà¹Šà¸à¹„ปยังà¸à¸²à¸™à¸‚้อมูลสำหรับà¸à¸²à¸£ query เพิ่มเติม à¸à¸²à¸£à¸›à¸´à¸”ใช้งานจะช่วยลดภาระของเซิร์ฟเวอร์ด้วยà¸à¸²à¸£à¸à¸³à¸ˆà¸±à¸”à¸à¸£à¸°à¸šà¸§à¸™à¸Ÿà¸­à¸¥à¹à¸šà¹Šà¸ à¹à¸•่มันà¸à¹‡à¸ˆà¸°à¸ˆà¸³à¸à¸±à¸”ช่วงเวลาไทม์ไลน์ที่สามารถดึงข้อมูลได้"
+ reactionsBufferingDescription: "เมื่อเปิดใช้งานฟังà¸à¹Œà¸Šà¸±à¸™à¸™à¸µà¹‰à¸à¹‡à¸ˆà¸°à¸Šà¹ˆà¸§à¸¢à¸¥à¸” latency ในà¸à¸²à¸£à¸ªà¸£à¹‰à¸²à¸‡à¸›à¸à¸´à¸à¸´à¸£à¸´à¸¢à¸² à¹à¸•่อาจจะส่งผลให้ memory footprint ของ Redis เพิ่มขึ้นนะ"
inquiryUrl: "URL สำหรับà¸à¸²à¸£à¸•ิดต่อสอบถาม"
inquiryUrlDescription: "ระบุ URL ของหน้าเว็บที่มีà¹à¸šà¸šà¸Ÿà¸­à¸£à¹Œà¸¡à¸ªà¸³à¸«à¸£à¸±à¸šà¸•ิดต่อผู้ดูà¹à¸¥à¹€à¸‹à¸´à¸£à¹Œà¸Ÿà¹€à¸§à¸­à¸£à¹Œ หรือข้อมูลà¸à¸²à¸£à¸•ิดต่อของผู้ดูà¹à¸¥à¹€à¸‹à¸´à¸£à¹Œà¸Ÿà¹€à¸§à¸­à¸£à¹Œ"
+ thisSettingWillAutomaticallyOffWhenModeratorsInactive: "ถ้าหาà¸à¹„ม่มีà¸à¸²à¸£à¸•รวจสอบจาà¸à¸œà¸¹à¹‰à¸”ูà¹à¸¥à¸£à¸°à¸šà¸šà¸«à¸£à¸·à¸­à¹„ม่มีความเคลื่อนไหวมาเป็นระยะเวลาหนึ่ง ระบบจะทำà¸à¸²à¸£à¸›à¸´à¸”ใช้งานฟังà¸à¹Œà¸Šà¸±à¸™à¸™à¸µà¹‰à¹‚ดยอัตโนมัติ เพื่อลดความเสี่ยงในà¸à¸²à¸£à¸–ูà¸à¹‚จมตีด้วยสà¹à¸›à¸¡à¹à¸¥à¸°à¸­à¸·à¹ˆà¸™à¹†"
_accountMigration:
moveFrom: "ย้ายจาà¸à¸šà¸±à¸à¸Šà¸µà¸­à¸·à¹ˆà¸™à¸¡à¸²à¸—ี่บัà¸à¸Šà¸µà¸™à¸µà¹‰"
moveFromSub: "สร้างนามà¹à¸à¸‡à¹„ปยังบัà¸à¸Šà¸µà¸­à¸·à¹ˆà¸™"
@@ -1726,6 +1768,11 @@ _role:
canSearchNotes: "à¸à¸²à¸£à¹ƒà¸Šà¹‰à¸à¸²à¸£à¸„้นหาโน้ต"
canUseTranslator: "à¸à¸²à¸£à¹ƒà¸Šà¹‰à¸‡à¸²à¸™à¹à¸›à¸¥"
avatarDecorationLimit: "จำนวนà¸à¸²à¸£à¸•à¸à¹à¸•่งไอคอนสูงสุดที่สามารถติดตั้งได้"
+ canImportAntennas: "อนุà¸à¸²à¸•ให้นำเข้าเสาอาà¸à¸²à¸¨"
+ canImportBlocking: "อนุà¸à¸²à¸•ให้นำเข้าà¸à¸²à¸£à¸šà¸¥à¹‡à¸­à¸"
+ canImportFollowing: "อนุà¸à¸²à¸•ให้นำเข้ารายà¸à¸²à¸£à¸•่อไปนี้"
+ canImportMuting: "อนุà¸à¸²à¸•ให้นำเข้าà¸à¸²à¸£à¸›à¸´à¸”à¸à¸±à¹‰à¸™"
+ canImportUserLists: "อนุà¸à¸²à¸•ให้นำเข้ารายà¸à¸²à¸£"
_condition:
roleAssignedTo: "มอบหมายให้มีบทบาทà¹à¸šà¸šà¸—ำมือ"
isLocal: "ผู้ใช้ท้องถิ่น"
@@ -2219,6 +2266,9 @@ _profile:
changeBanner: "เปลี่ยนà¹à¸šà¸™à¹€à¸™à¸­à¸£à¹Œ"
verifiedLinkDescription: "หาà¸à¸›à¹‰à¸­à¸™ URL ที่มีลิงà¸à¹Œà¹„ปยังโปรไฟล์ของคุณ ไอคอนà¸à¸²à¸£à¸¢à¸·à¸™à¸¢à¸±à¸™à¸„วามเป็นเจ้าของจะà¹à¸ªà¸”งถัดจาà¸à¸Ÿà¸´à¸¥à¸”์นั้น ๆ"
avatarDecorationMax: "คุณสามารถเพิ่มà¸à¸²à¸£à¸•à¸à¹à¸•่งได้สูงสุด {max}"
+ followedMessage: "ส่งข้อความเมื่อมีคนà¸à¸”ติดตาม"
+ followedMessageDescription: "ส่งข้อความเมื่อมีคนà¸à¸”ติดตามà¹à¸¥à¹‰à¸§"
+ followedMessageDescriptionForLockedAccount: "ถ้าหาà¸à¸„ุณตั้งค่าให้คนอื่นต้องขออนุà¸à¸²à¸•à¸à¹ˆà¸­à¸™à¸—ี่จะติดตามคุณ ระบบจะขึ้นข้อความนี้ในตอนที่คุณอนุมัติให้เขาติดตาม"
_exportOrImport:
allNotes: "โน้ตทั้งหมด"
favoritedNotes: "โน้ตที่ถูà¸à¹ƒà¸ˆà¹„ว้"
@@ -2311,6 +2361,7 @@ _pages:
eyeCatchingImageSet: "ตั้งค่าภาพขนาดย่อ"
eyeCatchingImageRemove: "ลบภาพขนาดย่อ"
chooseBlock: "เพิ่มบล็อค"
+ enterSectionTitle: "ป้อนชื่อหัวข้อ"
selectType: "เลือà¸à¸Šà¸™à¸´à¸”"
contentBlocks: "เนื้อหา"
inputBlocks: "ป้อนข้อมูล"
@@ -2356,6 +2407,8 @@ _notification:
renotedBySomeUsers: "รีโน้ตจาà¸à¸œà¸¹à¹‰à¹ƒà¸Šà¹‰ {n} ราย"
followedBySomeUsers: "มีผู้ติดตาม {n} ราย"
flushNotification: "ล้างประวัติà¸à¸²à¸£à¹à¸ˆà¹‰à¸‡à¹€à¸•ือน"
+ exportOfXCompleted: "à¸à¸²à¸£à¸”ำเนินà¸à¸²à¸£à¸ªà¹ˆà¸‡à¸­à¸­à¸ {x} ได้เสร็จสิ้นลงà¹à¸¥à¹‰à¸§"
+ login: "มีคนล็อà¸à¸­à¸´à¸™"
_types:
all: "ทั้งหมด"
note: "โน้ตใหม่"
@@ -2370,7 +2423,9 @@ _notification:
followRequestAccepted: "อนุมัติให้ติดตามà¹à¸¥à¹‰à¸§"
roleAssigned: "ให้บทบาท"
achievementEarned: "ปลดล็อà¸à¸„วามสำเร็จà¹à¸¥à¹‰à¸§"
+ exportCompleted: "à¸à¸£à¸°à¸šà¸§à¸™à¸à¸²à¸£à¸ªà¹ˆà¸‡à¸­à¸­à¸à¸‚้อมูลได้เสร็จสิ้นสมบูรณ์à¹à¸¥à¹‰à¸§"
login: "เข้าสู่ระบบ"
+ test: "ทดสอบระบบà¹à¸ˆà¹‰à¸‡à¹€à¸•ือน"
app: "à¸à¸²à¸£à¹à¸ˆà¹‰à¸‡à¹€à¸•ือนจาà¸à¹à¸­à¸›à¸—ี่มีลิงà¸à¹Œ"
_actions:
followBack: "ติดตามà¸à¸¥à¸±à¸šà¸”้วย"
@@ -2436,7 +2491,10 @@ _webhookSettings:
abuseReport: "เมื่อมีà¸à¸²à¸£à¸£à¸²à¸¢à¸‡à¸²à¸™à¸ˆà¸²à¸à¸œà¸¹à¹‰à¹ƒà¸Šà¹‰"
abuseReportResolved: "เมื่อมีà¸à¸²à¸£à¸ˆà¸±à¸”à¸à¸²à¸£à¸à¸±à¸šà¸à¸²à¸£à¸£à¸²à¸¢à¸‡à¸²à¸™à¸ˆà¸²à¸à¸œà¸¹à¹‰à¹ƒà¸Šà¹‰"
userCreated: "เมื่อผู้ใช้ถูà¸à¸ªà¸£à¹‰à¸²à¸‡à¸‚ึ้น"
+ inactiveModeratorsWarning: "เมื่อผู้ดูà¹à¸¥à¸£à¸°à¸šà¸šà¹„ม่ได้ใช้งานมานานระยะหนึ่ง"
+ inactiveModeratorsInvitationOnlyChanged: "เมื่อผู้ดูà¹à¸¥à¸£à¸°à¸šà¸šà¸—ี่ไม่ได้ใช้งานมานาน à¹à¸¥à¸°à¹€à¸‹à¸´à¸£à¹Œà¸Ÿà¹€à¸§à¸­à¸£à¹Œà¹€à¸›à¸¥à¸µà¹ˆà¸¢à¸™à¹€à¸›à¹‡à¸™à¹à¸šà¸šà¹€à¸Šà¸´à¸à¹€à¸‚้าร่วมเท่านั้น"
deleteConfirm: "ต้องà¸à¸²à¸£à¸¥à¸š Webhook ใช่ไหม?"
+ testRemarks: "คลิà¸à¸›à¸¸à¹ˆà¸¡à¸—างด้านขวาของสวิตช์เพื่อส่ง Webhook ทดสอบที่มีข้อมูลจำลอง"
_abuseReport:
_notificationRecipient:
createRecipient: "เพิ่มปลายทางà¸à¸²à¸£à¹à¸ˆà¹‰à¸‡à¹€à¸•ือนà¸à¸²à¸£à¸£à¸²à¸¢à¸‡à¸²à¸™"
@@ -2480,6 +2538,8 @@ _moderationLogTypes:
markSensitiveDriveFile: "ทำเครื่องหมายไฟล์ว่ามีเนื้อหาละเอียดอ่อน"
unmarkSensitiveDriveFile: "ยà¸à¹€à¸¥à¸´à¸à¸—ำเครื่องหมายไฟล์ว่ามีเนื้อหาละเอียดอ่อน"
resolveAbuseReport: "รายงานได้รับà¸à¸²à¸£à¹à¸à¹‰à¹„ขà¹à¸¥à¹‰à¸§"
+ forwardAbuseReport: "ได้ส่งรายงานไปà¹à¸¥à¹‰à¸§"
+ updateAbuseReportNote: "โน้ตà¸à¸²à¸£à¸à¸¥à¸±à¹ˆà¸™à¸à¸£à¸­à¸‡à¸—ี่รายงานไปนั้น ได้รับà¸à¸²à¸£à¸­à¸±à¸›à¹€à¸”ตà¹à¸¥à¹‰à¸§"
createInvitation: "สร้างรหัสเชิà¸"
createAd: "สร้างโฆษณาà¹à¸¥à¹‰à¸§"
deleteAd: "ลบโฆษณาออà¸à¹à¸¥à¹‰à¸§"
@@ -2495,6 +2555,10 @@ _moderationLogTypes:
createAbuseReportNotificationRecipient: "สร้างปลายทางà¸à¸²à¸£à¹à¸ˆà¹‰à¸‡à¹€à¸•ือนà¸à¸²à¸£à¸£à¸²à¸¢à¸‡à¸²à¸™"
updateAbuseReportNotificationRecipient: "อัปเดตปลายทางà¸à¸²à¸£à¹à¸ˆà¹‰à¸‡à¹€à¸•ือนà¸à¸²à¸£à¸£à¸²à¸¢à¸‡à¸²à¸™"
deleteAbuseReportNotificationRecipient: "ลบปลายทางà¸à¸²à¸£à¹à¸ˆà¹‰à¸‡à¹€à¸•ือนà¸à¸²à¸£à¸£à¸²à¸¢à¸‡à¸²à¸™"
+ deleteAccount: "บัà¸à¸Šà¸µà¸–ูà¸à¸¥à¸šà¹„ปà¹à¸¥à¹‰à¸§"
+ deletePage: "เพจถูà¸à¸¥à¸šà¸­à¸­à¸à¹„ปà¹à¸¥à¹‰à¸§"
+ deleteFlash: "Play ถูà¸à¸¥à¸šà¸­à¸­à¸à¹„ปà¹à¸¥à¹‰à¸§"
+ deleteGalleryPost: "โพสต์à¹à¸à¸¥à¹€à¸¥à¸­à¸£à¸µà¹ˆà¸–ูà¸à¸¥à¸šà¸­à¸­à¸à¹à¸¥à¹‰à¸§"
_fileViewer:
title: "รายละเอียดไฟล์"
type: "ประเภทไฟล์"
@@ -2631,3 +2695,17 @@ _contextMenu:
app: "à¹à¸­à¸›à¸žà¸¥à¸´à¹€à¸„ชัน"
appWithShift: "à¹à¸­à¸›à¸Ÿà¸¥à¸´à¹€à¸„ชันด้วยปุ่มยà¸à¹à¸„ร่ (Shift)"
native: "UI ของเบราว์เซอร์"
+_embedCodeGen:
+ title: "ปรับà¹à¸•่งโค้ดà¸à¸±à¸‡"
+ header: "à¹à¸ªà¸”งส่วนหัว"
+ autoload: "โหลดเพิ่มโดยอัตโนมัติ (เลิà¸à¹ƒà¸Šà¹‰à¹à¸¥à¹‰à¸§)"
+ maxHeight: "ความสูงสุด"
+ maxHeightDescription: "หาà¸à¸–้าตั้งค่าเป็น 0 จะทำให้ไม่มีà¸à¸²à¸£à¸ˆà¸³à¸à¸±à¸”ความสูงของวิดเจ็ต à¹à¸•่ควรตั้งค่าเป็นตัวเลขอื่นๆ เพื่อไม่ให้วิดเจ็ตยืดตัวลงไปเรื่อยๆ"
+ maxHeightWarn: "à¸à¸²à¸£à¸ˆà¸³à¸à¸±à¸”ความสูงสูงสุดถูà¸à¸›à¸´à¸”ใช้งาน (0) หาà¸à¹„ม่ได้ตั้งใจให้เป็นเช่นนี้ โปรดตั้งค่าความสูงสูงสุดให้เป็นค่าอื่นๆà¹à¸—น"
+ previewIsNotActual: "à¸à¸²à¸£à¹à¸ªà¸”งผลนั้นต่างจาà¸à¸à¸²à¸£à¸à¸±à¸‡à¸ˆà¸£à¸´à¸‡à¹€à¸žà¸£à¸²à¸°à¹€à¸à¸´à¸™à¸‚อบเขตที่à¹à¸ªà¸”งบนหน้าจอตัวอย่างนะ"
+ rounded: "ทำให้มันà¸à¸¥à¸¡"
+ border: "เพิ่มขอบให้à¸à¸±à¸šà¸à¸£à¸­à¸šà¸”้านนอà¸"
+ applyToPreview: "นำไปใช้à¸à¸±à¸šà¸à¸²à¸£à¹à¸ªà¸”งตัวอย่าง"
+ generateCode: "สร้างโค้ดสำหรับà¸à¸²à¸£à¸à¸±à¸‡"
+ codeGenerated: "รหัสถูà¸à¸ªà¸£à¹‰à¸²à¸‡à¸‚ึ้นà¹à¸¥à¹‰à¸§"
+ codeGeneratedDescription: "นำโค้ดที่สร้างà¹à¸¥à¹‰à¸§à¹„ปวางในเว็บไซต์ของคุณเพื่อà¸à¸±à¸‡à¹€à¸™à¸·à¹‰à¸­à¸«à¸²"
diff --git a/locales/tr-TR.yml b/locales/tr-TR.yml
index fe2f158ff6..69892fedc8 100644
--- a/locales/tr-TR.yml
+++ b/locales/tr-TR.yml
@@ -344,7 +344,6 @@ today: "Bugün"
monthX: "{month} ay"
pages: "Sayfalar"
integration: "Entegrasyon"
-enableRegistration: "Kayıtlara izin ver"
basicInfo: "Temel bilgiler"
pinnedUsers: "Sabitlenmiş kullanıcılar"
pinnedNotes: "Sabitlenen"
diff --git a/locales/uk-UA.yml b/locales/uk-UA.yml
index f2262cd71f..1b21854650 100644
--- a/locales/uk-UA.yml
+++ b/locales/uk-UA.yml
@@ -334,7 +334,6 @@ enableLocalTimeline: "Увімкнути локальну Ñтрічку"
enableGlobalTimeline: "Увімкнути глобальну Ñтрічку"
disablingTimelinesInfo: "ÐдмініÑтратори та модератори завжди мають доÑтуп до вÑÑ–Ñ… Ñтрічок, навіть Ñкщо вони вимкнуті."
registration: "РеєÑтраціÑ"
-enableRegistration: "Дозволити реєÑтрацію"
invite: "ЗапроÑити"
driveCapacityPerLocalAccount: "Об'єм диÑка на одного локального кориÑтувача"
driveCapacityPerRemoteAccount: "Об'єм диÑка на одного віддаленого кориÑтувача"
diff --git a/locales/uz-UZ.yml b/locales/uz-UZ.yml
index 37a550008a..051a4ae6c5 100644
--- a/locales/uz-UZ.yml
+++ b/locales/uz-UZ.yml
@@ -349,7 +349,6 @@ enableLocalTimeline: "Mahalliy vaqt mintaqasini yoqing"
enableGlobalTimeline: "Global vaqt mintaqasini yoqing"
disablingTimelinesInfo: "Administratorlar va Moderatorlar har doim barcha vaqt jadvallariga kirish huquqiga ega bo'ladilar, hatto ular yoqilmagan bo'lsa ham."
registration: "Ro'yxatdan o'tish"
-enableRegistration: "Ro'yxatdan o'tishni yoqing"
invite: "Taklif qilish"
driveCapacityPerLocalAccount: "Har bir mahalliy foydalanuvchi uchun disk maydoni"
driveCapacityPerRemoteAccount: "Har bir masofaviy foydalanuvchi uchun disk maydoni"
diff --git a/locales/vi-VN.yml b/locales/vi-VN.yml
index 235497d844..24faa4b94c 100644
--- a/locales/vi-VN.yml
+++ b/locales/vi-VN.yml
@@ -8,6 +8,9 @@ search: "Tìm kiếm"
notifications: "Thông báo"
username: "Tên ngưá»i dùng"
password: "Mật khẩu"
+initialPasswordForSetup: "Mật khẩu ban đầu để thiết lập"
+initialPasswordIsIncorrect: "Mật khẩu ban đầu đã nhập sai"
+initialPasswordForSetupDescription: "Nếu bạn tự cài đặt Misskey, hãy sử dụng mật khẩu ban đầu của bạn đã nhập trong tệp cấu hình.\nNếu bạn đang sử dụng dịch vụ nào đó giống như dịch vụ lưu trữ của Misskey, hãy sử dụng mật khẩu ban đầu được cung cấp.\nNếu bạn chưa đặt mật khẩu ban đầu, vui lòng để trống và tiếp tục."
forgotPassword: "Quên mật khẩu"
fetchingAsApObject: "Äang nạp dữ liệu từ Fediverse..."
ok: "Äồng ý"
@@ -354,7 +357,6 @@ enableLocalTimeline: "Bật bảng tin máy chủ"
enableGlobalTimeline: "Bật bảng tin liên hợp"
disablingTimelinesInfo: "Quản trị viên và Kiểm duyệt viên luôn có quyá»n truy cập má»i bảng tin, kể cả khi chúng không được bật."
registration: "Äăng ký"
-enableRegistration: "Cho phép đăng ký mới"
invite: "Má»i"
driveCapacityPerLocalAccount: "Dung lượng ổ đĩa tối Ä‘a cho má»—i ngưá»i dùng"
driveCapacityPerRemoteAccount: "Dung lượng ổ đĩa tối Ä‘a cho má»—i ngưá»i dùng từ xa"
diff --git a/locales/zh-CN.yml b/locales/zh-CN.yml
index b81018cc1f..e6232070d7 100644
--- a/locales/zh-CN.yml
+++ b/locales/zh-CN.yml
@@ -107,7 +107,7 @@ follow: "关注"
followRequest: "关注申请"
followRequests: "关注申请"
unfollow: "å–æ¶ˆå…³æ³¨"
-followRequestPending: "关注请求批准中"
+followRequestPending: "关注请求待批准"
enterEmoji: "输入表情符å·"
renote: "转å‘"
unrenote: "å–æ¶ˆè½¬å‘"
@@ -136,15 +136,15 @@ overwriteFromPinnedEmojisForReaction: "从「置顶(回应)ã€è®¾ç½®è¦†ç›–"
overwriteFromPinnedEmojis: "从全局设置覆盖"
reactionSettingDescription2: "æ‹–åŠ¨é‡æ–°æŽ’åºï¼Œå•击删除,点击 + 添加。"
rememberNoteVisibility: "ä¿å­˜ä¸Šæ¬¡è®¾ç½®çš„å¯è§æ€§"
-attachCancel: "删除附件"
+attachCancel: "å–æ¶ˆæ·»åР附件"
deleteFile: "删除文件"
markAsSensitive: "æ ‡è®°ä¸ºæ•æ„Ÿå†…容"
unmarkAsSensitive: "å–æ¶ˆæ ‡è®°ä¸ºæ•感内容"
enterFileName: "输入文件å"
mute: "å±è”½"
unmute: "解除é™éŸ³"
-renoteMute: "å±è”½è½¬å¸–"
-renoteUnmute: "解除å±è”½è½¬å¸–"
+renoteMute: "éšè—转帖"
+renoteUnmute: "解除éšè—转帖"
block: "拉黑"
unblock: "å–æ¶ˆæ‹‰é»‘"
suspend: "冻结"
@@ -213,8 +213,8 @@ charts: "图表"
perHour: "æ¯å°æ—¶"
perDay: "æ¯å¤©"
stopActivityDelivery: "åœæ­¢å‘逿´»åЍ"
-blockThisInstance: "阻止此æœåС噍呿œ¬æœåŠ¡å™¨æŽ¨æµ"
-silenceThisInstance: "使æœåС噍é™éŸ³"
+blockThisInstance: "å±è”½æ­¤æœåС噍"
+silenceThisInstance: "é™éŸ³æ­¤æœåС噍"
mediaSilenceThisInstance: "éšè—æ­¤æœåŠ¡å™¨çš„åª’ä½“æ–‡ä»¶"
operations: "æ“作"
software: "软件"
@@ -233,17 +233,17 @@ clearQueueConfirmTitle: "确定清除队列?"
clearQueueConfirmText: "未é€è¾¾çš„帖å­å°†ä¸ä¼šè¢«æŠ•递。 通常无需执行此æ“作。"
clearCachedFiles: "清除缓存"
clearCachedFilesConfirm: "ç¡®å®šè¦æ¸…除所有缓存的远程文件?"
-blockedInstances: "被å°é”çš„æœåС噍"
-blockedInstancesDescription: "设定è¦å°é”çš„æœåŠ¡å™¨ï¼Œä»¥æ¢è¡Œåˆ†éš”。被å°é”çš„æœåŠ¡å™¨å°†æ— æ³•ä¸Žæœ¬æœåŠ¡å™¨è¿›è¡Œäº¤æ¢é€šè®¯ã€‚å­åŸŸåä¹ŸåŒæ ·ä¼šè¢«å°é”。"
+blockedInstances: "被å±è”½çš„æœåŠ¡å™¨"
+blockedInstancesDescription: "设定è¦å±è”½çš„æœåŠ¡å™¨ï¼Œä»¥æ¢è¡Œåˆ†éš”。被å±è”½çš„æœåŠ¡å™¨å°†æ— æ³•ä¸Žæœ¬æœåŠ¡å™¨è¿›è¡Œäº¤æ¢é€šè®¯ã€‚å­åŸŸåä¹ŸåŒæ ·ä¼šè¢«å±è”½ã€‚"
silencedInstances: "被é™éŸ³çš„æœåŠ¡å™¨"
silencedInstancesDescription: "设置è¦é™éŸ³çš„æœåŠ¡å™¨ï¼Œä»¥æ¢è¡Œåˆ†éš”。被é™éŸ³çš„æœåŠ¡å™¨å†…æ‰€æœ‰çš„è´¦æˆ·å°†é»˜è®¤å¤„äºŽã€Œé™éŸ³ã€çжæ€ï¼Œä»…能å‘é€å…³æ³¨è¯·æ±‚,并且在未关注状æ€ä¸‹æ— æ³•æåŠæœ¬åœ°è´¦æˆ·ã€‚被阻止的实例ä¸å—å½±å“。"
mediaSilencedInstances: "å·²éšè—媒体文件的æœåС噍"
mediaSilencedInstancesDescription: "设置è¦éšè—媒体文件的æœåŠ¡å™¨ï¼Œä»¥æ¢è¡Œåˆ†éš”。被设置为éšè—媒体文件æœåŠ¡å™¨å†…æ‰€æœ‰è´¦å·çš„æ–‡ä»¶å‡æŒ‰ç…§ã€Œæ•感内容ã€å¤„ç†ï¼Œä¸”将无法使用自定义表情符å·ã€‚被阻止的实例ä¸å—å½±å“。"
federationAllowedHosts: "å…许è”åˆçš„æœåŠ¡å™¨"
federationAllowedHostsDescription: "设定å…许è”åˆçš„æœåŠ¡å™¨ï¼Œä»¥æ¢è¡Œåˆ†éš”。"
-muteAndBlock: "é™éŸ³/拉黑"
-mutedUsers: "å·²é™éŸ³ç”¨æˆ·"
-blockedUsers: "已拉黑的用户"
+muteAndBlock: "éšè—å’Œå±è”½"
+mutedUsers: "å·²éšè—用户"
+blockedUsers: "å·²å±è”½çš„用户"
noUsers: "无用户"
editProfile: "编辑资料"
noteDeleteConfirm: "è¦åˆ é™¤è¯¥å¸–å­å—?"
@@ -258,7 +258,7 @@ noCustomEmojis: "没有自定义表情符å·"
noJobs: "没有任务"
federating: "è”åˆä¸­"
blocked: "已拉黑"
-suspended: "åœæ­¢æŽ¨æµ"
+suspended: "åœæ­¢æŠ•递"
all: "全部"
subscribing: "已订阅"
publishing: "投递中"
@@ -382,7 +382,6 @@ enableLocalTimeline: "å¯ç”¨æœ¬åœ°æ—¶é—´çº¿"
enableGlobalTimeline: "å¯ç”¨å…¨å±€æ—¶é—´çº¿"
disablingTimelinesInfo: "å³ä½¿æ—¶é—´çº¿åŠŸèƒ½è¢«ç¦ç”¨ï¼Œå‡ºäºŽæ–¹ä¾¿ï¼Œç®¡ç†å‘˜å’Œç›‘察员也å¯ä»¥ç»§ç»­ä½¿ç”¨ã€‚"
registration: "注册"
-enableRegistration: "å…许任何人注册"
invite: "邀请"
driveCapacityPerLocalAccount: "æ¯ä¸ªç”¨æˆ·çš„网盘容é‡"
driveCapacityPerRemoteAccount: "æ¯ä¸ªè¿œç¨‹ç”¨æˆ·çš„网盘容é‡"
@@ -587,6 +586,7 @@ masterVolume: "主音é‡"
notUseSound: "é™éŸ³"
useSoundOnlyWhenActive: "仅在 Misskey 活跃时输出声音"
details: "详情"
+renoteDetails: "转帖详情"
chooseEmoji: "选择表情符å·"
unableToProcess: "æ“作无法完æˆ"
recentUsed: "最近使用"
@@ -603,7 +603,7 @@ descendingOrder: "é™åº"
scratchpad: "AiScript 控制å°"
scratchpadDescription: "AiScript 控制å°ä¸º AiScript æä¾›äº†å®žéªŒçŽ¯å¢ƒã€‚æ‚¨å¯ä»¥ç¼–写代ç ä¸Ž Misskey 交互,è¿è¡Œå¹¶æŸ¥çœ‹ç»“果。"
uiInspector: "UI 检查器"
-uiInspectorDescription: "查看所有内存中由 UI 组件生æˆå‡ºçš„实例。UI 组件由 UI:C 系列函数所生æˆã€‚"
+uiInspectorDescription: "查看内存中所有由 UI 组件生æˆå‡ºçš„实例。UI 组件由 UI:C 系列函数所生æˆã€‚"
output: "输出"
script: "脚本"
disablePagesScript: "ç¦ç”¨é¡µé¢è„šæœ¬"
@@ -683,11 +683,11 @@ emptyToDisableSmtpAuth: "用户å和密ç ç•™ç©ºå¯ä»¥ç¦ç”¨ SMTP 验è¯"
smtpSecure: "在 SMTP 连接中使用éšå¼ SSL / TLS"
smtpSecureInfo: "使用 STARTTLS 时关闭。"
testEmail: "邮件å‘逿µ‹è¯•"
-wordMute: "文字å±è”½"
+wordMute: "éšè—文字"
hardWordMute: "å±è”½å…³é”®è¯"
regexpError: "正则表达å¼é”™è¯¯"
regexpErrorDescription: "{tab} å±è”½æ–‡å­—的第 {line} è¡Œçš„æ­£åˆ™è¡¨è¾¾å¼æœ‰é”™è¯¯ï¼š"
-instanceMute: "被å±è”½çš„æœåŠ¡å™¨"
+instanceMute: "å·²éšè—çš„æœåС噍"
userSaysSomething: "{name} 说了什么,但是被å±è”½è¯è¿‡æ»¤äº†"
makeActive: "å¯ç”¨"
display: "显示"
@@ -706,7 +706,7 @@ useGlobalSettingDesc: "å¯ç”¨æ—¶ï¼Œå°†ä½¿ç”¨è´¦æˆ·é€šçŸ¥è®¾ç½®ã€‚关闭时,则
other: "å…¶ä»–"
regenerateLoginToken: "釿–°ç”Ÿæˆç™»å½•令牌"
regenerateLoginTokenDescription: "釿–°ç”Ÿæˆç”¨äºŽç™»å½•的内部令牌。通常您ä¸éœ€è¦è¿™æ ·åšã€‚釿–°ç”ŸæˆåŽï¼Œæ‚¨å°†åœ¨æ‰€æœ‰è®¾å¤‡ä¸Šç™»å‡ºã€‚"
-theKeywordWhenSearchingForCustomEmoji: "这将是æœç´ è‡ªå®šä¹‰è¡¨æƒ…ç¬¦å·æ—¶çš„关键è¯ã€‚"
+theKeywordWhenSearchingForCustomEmoji: "这将是æœç´¢è‡ªå®šä¹‰è¡¨æƒ…ç¬¦å·æ—¶çš„关键è¯ã€‚"
setMultipleBySeparatingWithSpace: "您å¯ä»¥ä½¿ç”¨ç©ºæ ¼åˆ†éš”多个项目。"
fileIdOrUrl: "文件 ID 或者 URL"
behavior: "行为"
@@ -856,9 +856,9 @@ user: "用户"
administration: "管ç†"
accounts: "账户"
switch: "切æ¢"
-noMaintainerInformationWarning: "管ç†äººå‘˜ä¿¡æ¯æœªè®¾ç½®ã€‚"
+noMaintainerInformationWarning: "尚未设置管ç†å‘˜ä¿¡æ¯ã€‚"
noInquiryUrlWarning: "尚未设置è”络地å€ã€‚"
-noBotProtectionWarning: "Bot 防御未设置。"
+noBotProtectionWarning: "尚未设置 Bot 防御。"
configure: "设置"
postToGallery: "å‘é€åˆ°å›¾åº“"
postToHashtag: "投稿到这个标签"
@@ -874,11 +874,11 @@ priority: "优先级"
high: "高"
middle: "中"
low: "低"
-emailNotConfiguredWarning: "电å­é‚®ä»¶åœ°å€æœªè®¾ç½®ã€‚"
+emailNotConfiguredWarning: "尚未设置电å­é‚®ä»¶åœ°å€ã€‚"
ratio: "比率"
previewNoteText: "预览文本"
customCss: "自定义 CSS"
-customCssWarn: "这些设置必须有相关的基础知识,ä¸å½“çš„é…ç½®å¯èƒ½å¯¼è‡´å®¢æˆ·ç«¯æ— æ³•正常使用ï¼"
+customCssWarn: "这些设置必须有相关的基础知识,ä¸å½“çš„é…ç½®å¯èƒ½å¯¼è‡´å®¢æˆ·ç«¯æ— æ³•正常使用。"
global: "全局"
squareAvatars: "显示方形头åƒå›¾æ ‡"
sent: "å‘é€"
@@ -915,8 +915,8 @@ manageAccounts: "管ç†è´¦æˆ·"
makeReactionsPublic: "将回应设置为公开"
makeReactionsPublicDescription: "将您å‘表过的回应设置æˆå…¬å¼€å¯è§ã€‚"
classic: "ç»å…¸"
-muteThread: "å±è”½å¸–å­åˆ—表"
-unmuteThread: "å–æ¶ˆå±è”½å¸–å­åˆ—表"
+muteThread: "éšè—帖å­åˆ—表"
+unmuteThread: "å–æ¶ˆéšè—帖å­åˆ—表"
followingVisibility: "关注的人的公开范围"
followersVisibility: "关注者的公开范围"
continueThread: "查看更多帖å­"
@@ -939,7 +939,7 @@ searchByGoogle: "Google"
instanceDefaultLightTheme: "æœåŠ¡å™¨é»˜è®¤æµ…è‰²ä¸»é¢˜"
instanceDefaultDarkTheme: "æœåŠ¡å™¨é»˜è®¤æ·±è‰²ä¸»é¢˜"
instanceDefaultThemeDescription: "以对象格å¼è¾“入主题代ç "
-mutePeriod: "å±è”½æœŸé™"
+mutePeriod: "éšè—期é™"
period: "截止时间"
indefinitely: "永久"
tenMinutes: "10 分钟"
@@ -947,6 +947,9 @@ oneHour: "1 å°æ—¶"
oneDay: "1 天"
oneWeek: "1 周"
oneMonth: "1 个月"
+threeMonths: "3 个月"
+oneYear: "1 å¹´"
+threeDays: "3 天"
reflectMayTakeTime: "å¯èƒ½éœ€è¦ä¸€äº›æ—¶é—´æ‰èƒ½ä½“现出效果。"
failedToFetchAccountInformation: "获å–账户信æ¯å¤±è´¥"
rateLimitExceeded: "已超过速率é™åˆ¶"
@@ -1054,7 +1057,7 @@ internalServerErrorDescription: "内部æœåС噍å‘生了预期外的错误"
copyErrorInfo: "å¤åˆ¶é”™è¯¯ä¿¡æ¯"
joinThisServer: "在本æœåŠ¡å™¨ä¸Šæ³¨å†Œ"
exploreOtherServers: "探索其他æœåС噍"
-letsLookAtTimeline: "时间线"
+letsLookAtTimeline: "看看时间线"
disableFederationConfirm: "确定è¦ç¦ç”¨è”åˆï¼Ÿ"
disableFederationConfirmWarn: "ç¦ç”¨è”åˆä¸ä¼šå°†å¸–å­è®¾ä¸ºç§æœ‰ã€‚在大多数情况下,ä¸éœ€è¦ç¦ç”¨è”åˆã€‚"
disableFederationOk: "è”åˆç¦ç”¨"
@@ -1070,10 +1073,10 @@ nonSensitiveOnlyForLocalLikeOnlyForRemote: "ä»…é™éžæ•感内容(远程仅点
rolesAssignedToMe: "指派给自己的角色"
resetPasswordConfirm: "确定é‡ç½®å¯†ç ï¼Ÿ"
sensitiveWords: "æ•æ„Ÿè¯"
-sensitiveWordsDescription: "将包å«è®¾ç½®è¯çš„帖å­çš„å¯è§èŒƒå›´è®¾ç½®ä¸ºé¦–页。å¯ä»¥é€šè¿‡ç”¨æ¢è¡Œç¬¦åˆ†éš”æ¥è®¾ç½®å¤šä¸ªã€‚"
+sensitiveWordsDescription: "包å«è¿™äº›è¯çš„帖å­å°†åªåœ¨é¦–页å¯è§ã€‚å¯ç”¨æ¢è¡Œæ¥è®¾å®šå¤šä¸ªè¯ã€‚"
sensitiveWordsDescription2: "AND æ¡ä»¶ç”¨ç©ºæ ¼åˆ†éš”,正则表达å¼ç”¨æ–œçº¿åŒ…裹。"
prohibitedWords: "ç¦ç”¨è¯"
-prohibitedWordsDescription: "å‘布包å«è®¾å®šè¯æ±‡çš„取孿—¶å°†å‡ºé”™ã€‚å¯ç”¨æ¢è¡Œè®¾å®šå¤šä¸ªå…³é”®å­—"
+prohibitedWordsDescription: "å‘布包å«è®¾å®šè¯æ±‡çš„取孿—¶å°†å‡ºé”™ã€‚å¯ç”¨æ¢è¡Œè®¾å®šå¤šä¸ªå…³é”®å­—。"
prohibitedWordsDescription2: "AND æ¡ä»¶ç”¨ç©ºæ ¼åˆ†éš”,正则表达å¼ç”¨æ–œçº¿åŒ…裹。"
hiddenTags: "éšè—标签"
hiddenTagsDescription: "设定的标签将ä¸ä¼šåœ¨æ—¶é—´çº¿ä¸Šæ˜¾ç¤ºã€‚å¯ä½¿ç”¨æ¢è¡Œæ¥è®¾ç½®å¤šä¸ªæ ‡ç­¾ã€‚"
@@ -1116,7 +1119,7 @@ vertical: "纵å‘"
horizontal: "横å‘"
position: "ä½ç½®"
serverRules: "æœåŠ¡å™¨è§„åˆ™"
-pleaseConfirmBelowBeforeSignup: "在这个æœåŠ¡å™¨ä¸Šæ³¨å†Œè´¦å·å‰ï¼Œè¯·ç¡®è®¤ä»¥ä¸‹ä¿¡æ¯ã€‚"
+pleaseConfirmBelowBeforeSignup: "如果è¦åœ¨æ­¤æœåŠ¡å™¨ä¸Šæ³¨å†Œï¼Œéœ€è¦ç¡®è®¤å¹¶åŒæ„以下内容。"
pleaseAgreeAllToContinue: "å¿…é¡»å…¨éƒ¨å‹¾é€‰ã€ŒåŒæ„ã€æ‰èƒ½å¤Ÿç»§ç»­ã€‚"
continue: "ç»§ç»­"
preservedUsernames: "ä¿ç•™çš„用户å"
@@ -1156,10 +1159,10 @@ turnOffToImprovePerformance: "关闭该选项å¯ä»¥æé«˜æ€§èƒ½ã€‚"
createInviteCode: "生æˆé‚€è¯·ç "
createWithOptions: "使用选项æ¥åˆ›å»º"
createCount: "å‘行数"
-inviteCodeCreated: "已创建邀请ç "
-inviteLimitExceeded: "å¯ä¾›å‘行的邀请ç å·²è¾¾ä¸Šé™ã€‚"
-createLimitRemaining: "å¯ä¾›å‘行的邀请ç ï¼šå‰©ä½™{limit}个"
-inviteLimitResetCycle: "å¯ä»¥åœ¨{time}内å‘行最多{limit}个邀请ç ã€‚"
+inviteCodeCreated: "已生æˆé‚€è¯·ç "
+inviteLimitExceeded: "å¯ä¾›ç”Ÿæˆçš„邀请ç å·²è¾¾ä¸Šé™ã€‚"
+createLimitRemaining: "å¯ä¾›ç”Ÿæˆçš„邀请ç ï¼šå‰©ä½™ {limit} 个"
+inviteLimitResetCycle: "å¯ä»¥åœ¨ {time} å†…ç”Ÿæˆæœ€å¤š {limit} 个邀请ç ã€‚"
expirationDate: "有效日期"
noExpirationDate: "ä¸è®¾ç½®æœ‰æ•ˆæ—¥æœŸ"
inviteCodeUsedAt: "邀请ç è¢«ä½¿ç”¨çš„æ—¥æœŸå’Œæ—¶é—´"
@@ -1293,6 +1296,23 @@ prohibitedWordsForNameOfUser: "用户åä¸­ç¦æ­¢çš„è¯"
prohibitedWordsForNameOfUserDescription: "æ›´æ”¹ç”¨æˆ·åæ—¶ï¼Œå¦‚果用户åä¸­åŒ…å«æ­¤åˆ—è¡¨é‡Œçš„è¯æ±‡ï¼Œç”¨æˆ·çš„æ”¹å请求将被拒ç»ã€‚æŒæœ‰ç®¡ç†å‘˜æƒé™çš„用户ä¸å—æ­¤é™åˆ¶ã€‚"
yourNameContainsProhibitedWords: "目标用户å包å«è¿ç¦è¯"
yourNameContainsProhibitedWordsDescription: "用户å内嫿œ‰è¿ç¦è¯ã€‚若想使用此用户å,请è”ç³»æœåŠ¡å™¨ç®¡ç†å‘˜ã€‚"
+thisContentsAreMarkedAsSigninRequiredByAuthor: "æ ¹æ®å‘帖者的设定,需è¦ç™»å½•æ‰èƒ½æ˜¾ç¤º"
+lockdown: "é”定"
+pleaseSelectAccount: "è¯·é€‰æ‹©å¸æˆ·"
+availableRoles: "å¯ç”¨è§’色"
+acknowledgeNotesAndEnable: "ç†è§£æ³¨æ„事项åŽå†å¼€å¯ã€‚"
+_accountSettings:
+ requireSigninToViewContents: "需è¦ç™»å½•æ‰èƒ½æ˜¾ç¤ºå†…容"
+ requireSigninToViewContentsDescription1: "您å‘布的所有帖å­å°†å˜æˆéœ€è¦ç™»å…¥åŽæ‰ä¼šæ˜¾ç¤ºã€‚有望防止爬虫收集å„ç§ä¿¡æ¯ã€‚"
+ requireSigninToViewContentsDescription2: "没有 URL 预览(OGP)ã€å†…嵌网页ã€å¼•用帖å­çš„功能的æœåŠ¡å™¨ä¹Ÿå°†æ— æ³•æ˜¾ç¤ºã€‚"
+ requireSigninToViewContentsDescription3: "这些é™åˆ¶å¯èƒ½ä¸é€‚用于è”åˆåˆ°è¿œç¨‹æœåŠ¡å™¨çš„å†…å®¹ã€‚"
+ makeNotesFollowersOnlyBefore: "å¯å°†è¿‡åŽ»çš„å¸–å­è®¾ä¸ºä»…关注者å¯è§"
+ makeNotesFollowersOnlyBeforeDescription: "开坿­¤è®¾å®šæ—¶ï¼Œè¶…过设定的时间或日期åŽï¼Œå¸–å­å°†å˜ä¸ºä»…关注者å¯è§ã€‚关闭åŽå¸–å­çš„公开状æ€å°†æ¢å¤æˆåŽŸæœ¬çš„è®¾å®šã€‚"
+ makeNotesHiddenBefore: "将过去的帖å­è®¾ä¸ºç§å¯†"
+ makeNotesHiddenBeforeDescription: "开坿­¤è®¾å®šæ—¶ï¼Œè¶…过设定的时间或日期åŽï¼Œå¸–å­å°†å˜ä¸ºä»…自己å¯è§ã€‚关闭åŽå¸–å­çš„公开状æ€å°†æ¢å¤æˆåŽŸæœ¬çš„è®¾å®šã€‚"
+ mayNotEffectForFederatedNotes: "与远程æœåС噍è”åˆçš„帖å­åœ¨è¿œç«¯å¯èƒ½ä¼šæ²¡æœ‰æ•ˆæžœã€‚"
+ notesHavePassedSpecifiedPeriod: "超过指定时间的帖å­"
+ notesOlderThanSpecifiedDateAndTime: "指定日期å‰çš„帖å­"
_abuseUserReport:
forward: "转å‘"
forwardDescription: "目标是匿å系统账户,将把举报转å‘给远程æœåŠ¡å™¨ã€‚"
@@ -1408,8 +1428,8 @@ _initialTutorial:
description: "对于æœåŠ¡å™¨æ–¹é’ˆæ‰€è¦æ±‚è¦æ±‚çš„ï¼Œåˆæˆ–者ä¸é€‚åˆç›´æŽ¥å±•ç¤ºçš„é™„ä»¶ï¼Œè¯·æ·»åŠ ã€Œæ•æ„Ÿã€æ ‡è®°ã€‚\n"
tryThisFile: "试试看,将附加到此窗å£çš„å›¾åƒæ ‡æ³¨ä¸ºæ•感ï¼"
_exampleNote:
- note: "拆纳豆包装时出错了…"
- method: "è¦æ ‡æ³¨é™„ä»¶ä¸ºæ•æ„Ÿå†…容,请å•击该文件以打开èœå•,然åŽå•å‡»â€œæ ‡è®°ä¸ºæ•æ„Ÿå†…容â€ã€‚"
+ note: "拆纳豆包装时失手了…"
+ method: "è¦æ ‡æ³¨é™„ä»¶ä¸ºæ•æ„Ÿå†…容,请å•击该文件以打开èœå•,然åŽå•å‡»ã€Œæ ‡è®°ä¸ºæ•æ„Ÿå†…容ã€ã€‚"
sensitiveSucceeded: "附加文件时,请éµå¾ªæœåŠ¡å™¨çš„æ¡æ¬¾æ¥è®¾ç½®æ­£ç¡®æ•感设定。\n"
doItToContinue: "å°†å›¾åƒæ ‡è®°ä¸ºæ•æ„ŸåŽæ‰èƒ½å¤Ÿç»§ç»­"
_done:
@@ -1437,6 +1457,8 @@ _serverSettings:
reactionsBufferingDescription: "开坿—¶å¯æ˜¾è‘—æé«˜å‘é€å›žåº”时的性能,åŠå‡è½»æ•°æ®åº“è´Ÿè·ã€‚但 Redis 的内存用é‡ä¼šç›¸åº”增加。"
inquiryUrl: "è”络地å€"
inquiryUrlDescription: "ç”¨æ¥æŒ‡å®šè¯¸å¦‚呿œåŠ¡è¿è¥å•†å’¨è¯¢çš„论å›åœ°å€ï¼Œæˆ–记载了è¿è¥å•†è”系方å¼ä¹‹ç±»çš„网页地å€ã€‚"
+ openRegistration: "开放注册"
+ openRegistrationWarning: "开放注册有风险。建议仅当能够æŒç»­ç›‘控æœåŠ¡å™¨å¹¶åœ¨å‡ºçŽ°é—®é¢˜æ—¶èƒ½å¤Ÿç«‹å³å“åº”æ—¶æ‰æ‰“开它。"
thisSettingWillAutomaticallyOffWhenModeratorsInactive: "è‹¥åœ¨ä¸€æ®µæ—¶é—´å†…æ²¡æœ‰æ£€æµ‹åˆ°ç®¡ç†æ´»åŠ¨ï¼Œä¸ºé˜²æ­¢åžƒåœ¾ä¿¡æ¯ï¼Œæ­¤è®¾å®šå°†è‡ªåŠ¨å…³é—­ã€‚"
_accountMigration:
moveFrom: "从别的账å·è¿ç§»åˆ°æ­¤è´¦æˆ·"
@@ -1685,9 +1707,9 @@ _achievements:
description: "在元旦登入"
flavor: "今年也请对本æœåŠ¡å™¨å¤šå¤šæŒ‡æ•™ï¼"
_cookieClicked:
- title: "ç‚¹å‡»é¥¼å¹²å°æ¸¸æˆ"
+ title: "饼干点点ä¹"
description: "点击了饼干"
- flavor: "用错软件了?"
+ flavor: "穿越了?"
_brainDiver:
title: "Brain Diver"
description: "å‘å¸ƒäº†åŒ…å« Brain Diver 链接的帖å­"
@@ -1757,7 +1779,7 @@ _role:
canUpdateBioMedia: "å¯ä»¥æ›´æ–°å¤´åƒå’Œæ¨ªå¹…"
pinMax: "帖å­ç½®é¡¶æ•°é‡é™åˆ¶"
antennaMax: "å¯åˆ›å»ºçš„æœ€å¤§å¤©çº¿æ•°é‡"
- wordMuteMax: "å±è”½è¯çš„å­—æ•°é™åˆ¶"
+ wordMuteMax: "éšè—è¯çš„å­—æ•°é™åˆ¶"
webhookMax: "Webhook 创建数é‡é™åˆ¶"
clipMax: "便签创建数é‡é™åˆ¶"
noteEachClipsMax: "å•个便签内的贴文数é‡é™åˆ¶"
@@ -1770,7 +1792,7 @@ _role:
canUseTranslator: "使用翻译功能"
avatarDecorationLimit: "坿·»åŠ å¤´åƒæŒ‚件的最大个数"
canImportAntennas: "å…许导入天线"
- canImportBlocking: "å…许导入拉黑列表"
+ canImportBlocking: "å…许导入å±è”½åˆ—表"
canImportFollowing: "å…许导入关注列表"
canImportMuting: "å…许导入å±è”½åˆ—表"
canImportUserLists: "å…许导入用户列表"
@@ -1920,14 +1942,14 @@ _menuDisplay:
top: "顶部"
hide: "éšè—"
_wordMute:
- muteWords: "ç¦ç”¨è¯"
+ muteWords: "è¦éšè—çš„è¯"
muteWordsDescription: "AND æ¡ä»¶ç”¨ç©ºæ ¼åˆ†éš”,OR æ¡ä»¶ç”¨æ¢è¡Œç¬¦åˆ†éš”。"
muteWordsDescription2: "正则表达å¼ç”¨æ–œçº¿åŒ…裹"
_instanceMute:
- instanceMuteDescription: "å±è”½æœåŠ¡å™¨ä¸­çš„æ‰€æœ‰å¸–å­å’Œè½¬å¸–,包括这些æœåŠ¡å™¨ä¸Šçš„ç”¨æˆ·å›žå¤ã€‚"
+ instanceMuteDescription: "éšè—æœåŠ¡å™¨ä¸­çš„æ‰€æœ‰å¸–å­å’Œè½¬å¸–,包括这些æœåŠ¡å™¨ä¸Šçš„ç”¨æˆ·å›žå¤ã€‚"
instanceMuteDescription2: "一行一个"
title: "éšè—æœåŠ¡å™¨å·²è®¾ç½®çš„å¸–å­ã€‚"
- heading: "å±è”½æœåС噍"
+ heading: "å·²éšè—çš„æœåС噍"
_theme:
explore: "寻找主题"
install: "安装主题"
@@ -2067,8 +2089,8 @@ _2fa:
_permissions:
"read:account": "查看账户信æ¯"
"write:account": "æ›´æ”¹å¸æˆ·ä¿¡æ¯"
- "read:blocks": "查看黑åå•"
- "write:blocks": "编辑黑åå•"
+ "read:blocks": "查看å±è”½åˆ—表"
+ "write:blocks": "编辑å±è”½åˆ—表"
"read:drive": "查看网盘"
"write:drive": "管ç†ç½‘盘文件"
"read:favorites": "查看收è—夹"
@@ -2077,8 +2099,8 @@ _permissions:
"write:following": "关注/å–æ¶ˆå…³æ³¨"
"read:messaging": "查看消æ¯"
"write:messaging": "撰写或删除消æ¯"
- "read:mutes": "查看å±è”½åˆ—表"
- "write:mutes": "编辑å±è”½åˆ—表"
+ "read:mutes": "查看éšè—列表"
+ "write:mutes": "编辑éšè—列表"
"write:notes": "撰写或删除帖å­"
"read:notifications": "查看通知"
"write:notifications": "管ç†é€šçŸ¥"
@@ -2157,8 +2179,11 @@ _auth:
permissionAsk: "这个应用程åºéœ€è¦ä»¥ä¸‹æƒé™"
pleaseGoBack: "请返回到应用程åº"
callback: "回到应用程åº"
+ accepted: "å·²å…许访问"
denied: "æ‹’ç»è®¿é—®"
+ scopeUser: "以下é¢çš„用户进行æ“作"
pleaseLogin: "在对应用进行授æƒè®¸å¯ä¹‹å‰ï¼Œè¯·å…ˆç™»å½•"
+ byClickingYouWillBeRedirectedToThisUrl: "å…许访问åŽå°†ä¼šè‡ªåЍé‡å®šå‘到以下 URL"
_antennaSources:
all: "所有帖å­"
homeTimeline: "已关注用户的帖å­"
@@ -2275,8 +2300,8 @@ _exportOrImport:
favoritedNotes: "æ”¶è—的帖å­"
clips: "便签"
followingList: "关注中"
- muteList: "å±è”½"
- blockingList: "拉黑"
+ muteList: "éšè—"
+ blockingList: "å±è”½"
userLists: "列表"
excludeMutingUsers: "排除å±è”½ç”¨æˆ·"
excludeInactiveUsers: "æŽ’é™¤ä¸æ´»è·ƒç”¨æˆ·"
@@ -2710,3 +2735,12 @@ _embedCodeGen:
generateCode: "生æˆåµŒå…¥ä»£ç "
codeGenerated: "已生æˆä»£ç "
codeGeneratedDescription: "将生æˆçš„代ç è´´åˆ°ç½‘站上æ¥ä½¿ç”¨ã€‚"
+_selfXssPrevention:
+ warning: "警告"
+ title: "ã€Œåœ¨æ­¤å¤„ç²˜è´´ä»€ä¹ˆä¸œè¥¿ã€æ˜¯æ¬ºè¯ˆè¡Œä¸ºã€‚"
+ description1: "å¦‚æžœåœ¨æ­¤å¤„ç²˜è´´äº†ä»€ä¹ˆï¼Œæ¶æ„用户å¯èƒ½ä¼šæŽ¥ç®¡è´¦æˆ·æˆ–者盗å–个人资料。"
+ description2: "如果ä¸èƒ½å®Œå…¨ç†è§£å°†è¦ç²˜è´´çš„内容,%c 请立å³åœæ­¢æ“作并关闭这个窗å£ã€‚"
+ description3: "详情请看这里。{link}"
+_followRequest:
+ recieved: "已收到申请"
+ sent: "å·²å‘é€ç”³è¯·"
diff --git a/locales/zh-TW.yml b/locales/zh-TW.yml
index de18342bbf..d4ffb28c76 100644
--- a/locales/zh-TW.yml
+++ b/locales/zh-TW.yml
@@ -8,8 +8,8 @@ search: "æœå°‹"
notifications: "通知"
username: "使用者å稱"
password: "密碼"
-initialPasswordForSetup: "åˆå§‹è¨­å®šç”¨çš„密碼"
-initialPasswordIsIncorrect: "åˆå§‹è¨­å®šç”¨çš„密碼錯誤。"
+initialPasswordForSetup: "啟動åˆå§‹è¨­å®šçš„密碼"
+initialPasswordIsIncorrect: "啟動åˆå§‹è¨­å®šçš„密碼錯誤。"
initialPasswordForSetupDescription: "如果您自己安è£äº† Misskey,請使用您在設定檔中輸入的密碼。\n如果您使用 Misskey 的託管æœå‹™ä¹‹é¡žçš„æœå‹™ï¼Œè«‹ä½¿ç”¨æä¾›çš„密碼。\n如果您尚未設定密碼,請將其留空並繼續。"
forgotPassword: "忘記密碼"
fetchingAsApObject: "從è¯é‚¦å®‡å®™å–得中..."
@@ -382,7 +382,6 @@ enableLocalTimeline: "啟用本地時間軸"
enableGlobalTimeline: "啟用全域時間軸"
disablingTimelinesInfo: "為了方便,å³ä½¿æ‚¨é—œé–‰äº†æ™‚間軸功能,管ç†å“¡å’Œå¯©æŸ¥å“¡ä»å¯ä»¥ç¹¼çºŒä½¿ç”¨ã€‚"
registration: "註冊"
-enableRegistration: "開放新使用者註冊"
invite: "邀請"
driveCapacityPerLocalAccount: "æ¯å€‹æœ¬åœ°ä½¿ç”¨è€…的雲端硬碟容é‡"
driveCapacityPerRemoteAccount: "æ¯å€‹éžæœ¬åœ°ç”¨æˆ¶çš„雲端空間大å°"
@@ -587,6 +586,7 @@ masterVolume: "主音é‡"
notUseSound: "關閉音效"
useSoundOnlyWhenActive: "ç€è¦½å™¨åœ¨å‰æ™¯é‹ä½œæ™‚,Misskey æ‰æœƒç™¼å‡ºéŸ³æ•ˆ"
details: "詳細資訊"
+renoteDetails: "轉發貼文的細節"
chooseEmoji: "鏿“‡æ‚¨çš„表情符號"
unableToProcess: "æ“作無法完æˆ"
recentUsed: "最近使用"
@@ -947,6 +947,9 @@ oneHour: "䏀尿™‚"
oneDay: "一天"
oneWeek: "一週"
oneMonth: "一個月"
+threeMonths: "3 個月"
+oneYear: "1 å¹´"
+threeDays: "3 æ—¥"
reflectMayTakeTime: "å¯èƒ½éœ€è¦ä¸€äº›æ™‚é–“æ‰æœƒå‡ºç¾æ•ˆæžœã€‚"
failedToFetchAccountInformation: "å–得帳戶資訊失敗"
rateLimitExceeded: "已超éŽé€Ÿçއé™åˆ¶"
@@ -1116,7 +1119,7 @@ vertical: "ç›´å‘"
horizontal: "æ©«å‘"
position: "ä½ç½®"
serverRules: "伺æœå™¨è¦å‰‡"
-pleaseConfirmBelowBeforeSignup: "在本伺æœå™¨è¨»å†Šä¹‹å‰ï¼Œè«‹ç¢ºèªä¸‹åˆ—事項。"
+pleaseConfirmBelowBeforeSignup: "在本伺æœå™¨è¨»å†Šä¹‹å‰ï¼Œå¿…須確èªä¸¦åŒæ„以下內容。"
pleaseAgreeAllToContinue: "必須全部勾é¸ã€ŒåŒæ„ã€æ‰èƒ½ç¹¼çºŒã€‚"
continue: "繼續"
preservedUsernames: "ä¿ç•™çš„使用者å稱"
@@ -1293,6 +1296,23 @@ prohibitedWordsForNameOfUser: "ç¦æ­¢ä½¿ç”¨çš„字詞(使用者å稱)"
prohibitedWordsForNameOfUserDescription: "如果使用者åç¨±åŒ…å«æ­¤æ¸…å–®ä¸­çš„ä»»ä½•å­—ä¸²ï¼Œå‰‡æ‹’çµ•é‡æ–°å‘½å使用者。 具有審查員權é™çš„使用者ä¸å—æ­¤é™åˆ¶çš„影響。"
yourNameContainsProhibitedWords: "您嘗試更改的å稱包å«ç¦æ­¢çš„字串"
yourNameContainsProhibitedWordsDescription: "å稱中包å«ç¦æ­¢ä½¿ç”¨çš„字串。 如果您想使用此å稱,請è¯çµ¡æ‚¨çš„伺æœå™¨ç®¡ç†å“¡ã€‚"
+thisContentsAreMarkedAsSigninRequiredByAuthor: "作者將其設定為需è¦ç™»å…¥æ‰èƒ½é¡¯ç¤ºã€‚"
+lockdown: "鎖定"
+pleaseSelectAccount: "è«‹é¸æ“‡å¸³æˆ¶"
+availableRoles: "å¯ç”¨è§’色"
+acknowledgeNotesAndEnable: "了解注æ„事項後å†é–‹å•Ÿã€‚"
+_accountSettings:
+ requireSigninToViewContents: "須登入以顯示內容"
+ requireSigninToViewContentsDescription1: "å¿…é ˆç™»å…¥æ‰æœƒé¡¯ç¤ºæ‚¨å»ºç«‹çš„è²¼æ–‡ç­‰å…§å®¹ã€‚å¯æœ›æœ‰æ•ˆé˜²æ­¢è³‡è¨Šè¢«çˆ¬èŸ²è’集。"
+ requireSigninToViewContentsDescription2: "ä¾†è‡ªä¸æ”¯æ´ URL é è¦½ (OGP)〠網é åµŒå…¥å’Œå¼•用貼文的伺æœå™¨ï¼Œä¹Ÿå°‡åœæ­¢é¡¯ç¤ºã€‚"
+ requireSigninToViewContentsDescription3: "這些é™åˆ¶å¯èƒ½ä¸é©ç”¨æ–¼è¢«è¯é‚¦ç™¼é€è‡³é ç«¯ä¼ºæœå™¨çš„內容。"
+ makeNotesFollowersOnlyBefore: "讓éŽåŽ»çš„è²¼æ–‡åƒ…å°è¿½éš¨è€…顯示"
+ makeNotesFollowersOnlyBeforeDescription: "啟用此功能後,超éŽè¨­å®šçš„æ—¥æœŸå’Œæ™‚間或超éŽè¨­å®šæ™‚間的貼文將僅å°è¿½éš¨è€…顯示。 å¦‚æžœæ‚¨å†æ¬¡åœç”¨å®ƒï¼Œè²¼æ–‡çš„公開狀態也會æ¢å¾©åŽŸç‹€ã€‚"
+ makeNotesHiddenBefore: "éš±è—éŽåŽ»çš„è²¼æ–‡"
+ makeNotesHiddenBeforeDescription: "啟用此功能後,超éŽè¨­å®šçš„æ—¥æœŸå’Œæ™‚間或超éŽè¨­å®šæ™‚間的貼文將僅å°è‡ªå·±é¡¯ç¤ºï¼ˆç§å¯†åŒ–)。 å¦‚æžœæ‚¨å†æ¬¡åœç”¨å®ƒï¼Œè²¼æ–‡çš„公開狀態也會æ¢å¾©åŽŸç‹€ã€‚"
+ mayNotEffectForFederatedNotes: "è¯é‚¦ç™¼é€è‡³é ç«¯ä¼ºæœå™¨çš„貼文å¯èƒ½æœƒä¸å—影響。"
+ notesHavePassedSpecifiedPeriod: "早於指定時間的貼文"
+ notesOlderThanSpecifiedDateAndTime: "指定時間和日期之å‰çš„貼文"
_abuseUserReport:
forward: "轉發"
forwardDescription: "以匿å系統帳戶將檢舉轉發至é ç«¯ä¼ºæœå™¨ã€‚"
@@ -1437,6 +1457,8 @@ _serverSettings:
reactionsBufferingDescription: "啟用時,å¯ä»¥é¡¯è‘—æé«˜å»ºç«‹å應時的效能並減少資料庫的負載。 但是,Redis è¨˜æ†¶é«”ä½¿ç”¨é‡æœƒå¢žåŠ ã€‚"
inquiryUrl: "è¯çµ¡è¡¨å–®ç¶²å€"
inquiryUrlDescription: "指定伺æœå™¨é‹ç‡Ÿè€…çš„è¯çµ¡è¡¨å–®ç¶²å€ï¼Œæˆ–包å«é‹ç‡Ÿè€…è¯çµ¡è³‡è¨Šç¶²é çš„ç¶²å€ã€‚"
+ openRegistration: "å…許建立帳戶"
+ openRegistrationWarning: "開放註冊伴隨著風險。 å»ºè­°åªæœ‰åœ¨ä¼ºæœå™¨å—到æŒçºŒç›£æŽ§ï¼Œä¸¦æº–備好在出ç¾å•題時能立å³è™•ç†çš„æƒ…æ³ä¸‹æ‰é–‹æ”¾è¨»å†Šã€‚"
thisSettingWillAutomaticallyOffWhenModeratorsInactive: "為了防止 spamï¼Œå¦‚æžœä¸€æ®µæœŸé–“å…§æ²’æœ‰åµæ¸¬åˆ°å¯©æŸ¥å“¡çš„æ´»å‹•,此設定將自動關閉。"
_accountMigration:
moveFrom: "從其他帳戶é·ç§»åˆ°é€™å€‹å¸³æˆ¶"
@@ -2157,8 +2179,11 @@ _auth:
permissionAsk: "此應用程å¼éœ€è¦ä»¥ä¸‹æ¬Šé™"
pleaseGoBack: "請返回至應用程å¼"
callback: "回到應用程å¼"
+ accepted: "å·²æŽˆäºˆå­˜å–æ¬Šé™"
denied: "拒絕訪å•"
+ scopeUser: "以下列使用者身分æ“作"
pleaseLogin: "必須登入以æä¾›æ‡‰ç”¨ç¨‹å¼çš„å­˜å–æ¬Šé™ã€‚"
+ byClickingYouWillBeRedirectedToThisUrl: "å¦‚æžœæŽˆäºˆå­˜å–æ¬Šé™ï¼Œå°±æœƒè‡ªå‹•å°Žå‘到以下的網å€"
_antennaSources:
all: "全部貼文"
homeTimeline: "來自已追隨使用者的貼文"
@@ -2416,7 +2441,7 @@ _notification:
follow: "追隨中"
mention: "æåŠ"
reply: "回覆"
- renote: "轉發貼文"
+ renote: "轉發"
quote: "引用"
reaction: "忇‰"
pollEnded: "å•å·èª¿æŸ¥çµæŸ"
@@ -2710,3 +2735,12 @@ _embedCodeGen:
generateCode: "建立嵌入程å¼ç¢¼"
codeGenerated: "已產生程å¼ç¢¼"
codeGeneratedDescription: "請將產生的程å¼ç¢¼è²¼åˆ°æ‚¨çš„網站上。"
+_selfXssPrevention:
+ warning: "警告"
+ title: "「在此畫é¢è²¼ä¸Šä¸€äº›å…§å®¹ã€å®Œå…¨æ˜¯å€‹é¨™å±€ã€‚"
+ description1: "如果您在此處貼上任何內容,惡æ„使用者å¯èƒ½æœƒæŽ¥ç®¡æ‚¨çš„å¸³æˆ¶æˆ–ç«Šå–æ‚¨çš„個人資訊。"
+ description2: "如果您ä¸ç¢ºåˆ‡çŸ¥é“è¦è²¼ä¸Šçš„內容,%c è«‹ç«‹å³åœæ­¢å·¥ä½œä¸¦é—œé–‰æ­¤è¦–窗。"
+ description3: "細節請看這裡。{link}"
+_followRequest:
+ recieved: "收到的請求"
+ sent: "é€å‡ºçš„請求"
diff --git a/package.json b/package.json
index 3b4893fe2d..48dccc6895 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "sharkey",
- "version": "2024.10.3-rc",
+ "version": "2024.11.1-rc",
"codename": "shonk",
"repository": {
"type": "git",
@@ -59,22 +59,22 @@
"fast-glob": "3.3.2",
"ignore-walk": "6.0.5",
"js-yaml": "4.1.0",
- "postcss": "8.4.47",
+ "postcss": "8.4.49",
"tar": "6.2.1",
- "terser": "5.33.0",
- "typescript": "5.6.2",
- "esbuild": "0.23.1",
+ "terser": "5.36.0",
+ "typescript": "5.6.3",
+ "esbuild": "0.24.0",
"glob": "11.0.0"
},
"devDependencies": {
"@misskey-dev/eslint-plugin": "2.0.3",
- "@types/node": "20.14.12",
+ "@types/node": "22.9.0",
"@typescript-eslint/eslint-plugin": "7.17.0",
"@typescript-eslint/parser": "7.17.0",
"cross-env": "7.0.3",
- "cypress": "13.14.2",
- "eslint": "9.8.0",
- "globals": "15.9.0",
+ "cypress": "13.15.2",
+ "eslint": "9.14.0",
+ "globals": "15.12.0",
"ncp": "2.0.0",
"start-server-and-test": "2.0.8"
}
diff --git a/packages/backend/migration/1729333924409-signinRequiredForShowContents.js b/packages/backend/migration/1729333924409-signinRequiredForShowContents.js
new file mode 100644
index 0000000000..5d4d1fcce2
--- /dev/null
+++ b/packages/backend/migration/1729333924409-signinRequiredForShowContents.js
@@ -0,0 +1,16 @@
+/*
+ * SPDX-FileCopyrightText: syuilo and misskey-project
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+
+export class SigninRequiredForShowContents1729333924409 {
+ name = 'SigninRequiredForShowContents1729333924409'
+
+ async up(queryRunner) {
+ await queryRunner.query(`ALTER TABLE "user" ADD "requireSigninToViewContents" boolean NOT NULL DEFAULT false`);
+ }
+
+ async down(queryRunner) {
+ await queryRunner.query(`ALTER TABLE "user" DROP COLUMN "requireSigninToViewContents"`);
+ }
+}
diff --git a/packages/backend/migration/1729486255072-makeNotesHiddenBefore.js b/packages/backend/migration/1729486255072-makeNotesHiddenBefore.js
new file mode 100644
index 0000000000..5fe4886b04
--- /dev/null
+++ b/packages/backend/migration/1729486255072-makeNotesHiddenBefore.js
@@ -0,0 +1,18 @@
+/*
+ * SPDX-FileCopyrightText: syuilo and misskey-project
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+
+export class MakeNotesHiddenBefore1729486255072 {
+ name = 'MakeNotesHiddenBefore1729486255072'
+
+ async up(queryRunner) {
+ await queryRunner.query(`ALTER TABLE "user" ADD "makeNotesFollowersOnlyBefore" integer`);
+ await queryRunner.query(`ALTER TABLE "user" ADD "makeNotesHiddenBefore" integer`);
+ }
+
+ async down(queryRunner) {
+ await queryRunner.query(`ALTER TABLE "user" DROP COLUMN "makeNotesHiddenBefore"`);
+ await queryRunner.query(`ALTER TABLE "user" DROP COLUMN "makeNotesFollowersOnlyBefore"`);
+ }
+}
diff --git a/packages/backend/package.json b/packages/backend/package.json
index ba601a569d..58f5ef8e05 100644
--- a/packages/backend/package.json
+++ b/packages/backend/package.json
@@ -67,32 +67,32 @@
"dependencies": {
"@aws-sdk/client-s3": "3.620.0",
"@aws-sdk/lib-storage": "3.620.0",
- "@bull-board/api": "6.0.0",
- "@bull-board/fastify": "6.0.0",
- "@bull-board/ui": "6.0.0",
+ "@bull-board/api": "6.5.0",
+ "@bull-board/fastify": "6.5.0",
+ "@bull-board/ui": "6.5.0",
"@discordapp/twemoji": "15.1.0",
"@fastify/accepts": "5.0.1",
- "@fastify/cookie": "10.0.1",
+ "@fastify/cookie": "11.0.1",
"@fastify/cors": "10.0.1",
"@fastify/express": "4.0.1",
- "@fastify/http-proxy": "10.0.0",
+ "@fastify/http-proxy": "10.0.1",
"@fastify/multipart": "9.0.1",
- "@fastify/static": "8.0.1",
+ "@fastify/static": "8.0.2",
"@fastify/view": "10.0.1",
"@misskey-dev/sharp-read-bmp": "1.2.0",
"@misskey-dev/summaly": "5.1.0",
"@napi-rs/canvas": "0.1.56",
- "@nestjs/common": "10.4.4",
- "@nestjs/core": "10.4.4",
- "@nestjs/testing": "10.4.4",
+ "@nestjs/common": "10.4.7",
+ "@nestjs/core": "10.4.7",
+ "@nestjs/testing": "10.4.7",
"@peertube/http-signature": "1.7.0",
- "@sentry/node": "8.20.0",
- "@sentry/profiling-node": "8.20.0",
+ "@sentry/node": "8.38.0",
+ "@sentry/profiling-node": "8.38.0",
"@simplewebauthn/server": "10.0.1",
"@sinonjs/fake-timers": "11.2.2",
"@smithy/node-http-handler": "2.5.0",
"@swc/cli": "0.3.12",
- "@swc/core": "1.6.6",
+ "@swc/core": "1.9.2",
"@transfem-org/sfm-js": "0.24.5",
"@twemoji/parser": "15.1.1",
"accepts": "1.3.8",
@@ -103,7 +103,7 @@
"bcryptjs": "2.4.3",
"blurhash": "2.0.5",
"body-parser": "1.20.3",
- "bullmq": "5.15.0",
+ "bullmq": "5.26.1",
"cacheable-lookup": "7.0.0",
"cbor": "9.0.2",
"chalk": "5.3.0",
@@ -119,12 +119,12 @@
"fastify-multer": "^2.0.3",
"fastify-raw-body": "5.0.0",
"feed": "4.2.2",
- "file-type": "19.5.0",
+ "file-type": "19.6.0",
"fluent-ffmpeg": "2.1.3",
- "form-data": "4.0.0",
+ "form-data": "4.0.1",
"glob": "11.0.0",
- "got": "14.4.2",
- "happy-dom": "15.7.4",
+ "got": "14.4.4",
+ "happy-dom": "15.11.4",
"hpagent": "1.2.0",
"htmlescape": "1.1.1",
"http-link-header": "1.1.3",
@@ -138,24 +138,24 @@
"jsonld": "8.3.2",
"jsrsasign": "11.1.0",
"megalodon": "workspace:*",
- "meilisearch": "0.42.0",
+ "meilisearch": "0.45.0",
"juice": "11.0.0",
"microformats-parser": "2.0.2",
"mime-types": "2.1.35",
"misskey-js": "workspace:*",
"misskey-reversi": "workspace:*",
"ms": "3.0.0-canary.1",
- "nanoid": "5.0.7",
+ "nanoid": "5.0.8",
"nested-property": "4.0.0",
"node-fetch": "3.3.2",
- "nodemailer": "6.9.15",
+ "nodemailer": "6.9.16",
"oauth": "0.10.0",
"oauth2orize": "1.12.0",
"oauth2orize-pkce": "0.1.2",
"os-utils": "0.0.14",
"otpauth": "9.3.4",
- "parse5": "7.1.2",
- "pg": "8.13.0",
+ "parse5": "7.2.1",
+ "pg": "8.13.1",
"pkce-challenge": "4.1.0",
"probe-image-size": "7.2.3",
"promise-limit": "2.7.0",
@@ -183,7 +183,7 @@
"tsc-alias": "1.8.10",
"tsconfig-paths": "4.2.0",
"typeorm": "0.3.20",
- "typescript": "5.6.2",
+ "typescript": "5.6.3",
"ulid": "2.3.0",
"uuid": "^9.0.1",
"vary": "1.1.2",
@@ -193,28 +193,28 @@
},
"devDependencies": {
"@jest/globals": "29.7.0",
- "@nestjs/platform-express": "10.4.4",
+ "@nestjs/platform-express": "10.4.7",
"@simplewebauthn/types": "10.0.0",
- "@swc/jest": "0.2.36",
+ "@swc/jest": "0.2.37",
"@types/accepts": "1.3.7",
- "@types/archiver": "6.0.2",
+ "@types/archiver": "6.0.3",
"@types/bcryptjs": "2.4.6",
"@types/body-parser": "1.19.5",
"@types/color-convert": "2.0.4",
"@types/content-disposition": "0.5.8",
- "@types/fluent-ffmpeg": "2.1.26",
+ "@types/fluent-ffmpeg": "2.1.27",
"@types/htmlescape": "1.1.3",
"@types/http-link-header": "1.0.7",
- "@types/jest": "29.5.13",
+ "@types/jest": "29.5.14",
"@types/js-yaml": "4.0.9",
"@types/jsdom": "21.1.7",
"@types/jsonld": "1.5.15",
"@types/jsrsasign": "10.5.14",
"@types/mime-types": "2.1.4",
"@types/ms": "0.7.34",
- "@types/node": "20.14.12",
+ "@types/node": "22.9.0",
"@types/nodemailer": "6.4.16",
- "@types/oauth": "0.9.5",
+ "@types/oauth": "0.9.6",
"@types/oauth2orize": "1.11.5",
"@types/oauth2orize-pkce": "0.1.2",
"@types/pg": "8.11.10",
@@ -233,14 +233,14 @@
"@types/tmp": "0.2.6",
"@types/uuid": "^9.0.4",
"@types/vary": "1.1.3",
- "@types/web-push": "3.6.3",
- "@types/ws": "8.5.12",
+ "@types/web-push": "3.6.4",
+ "@types/ws": "8.5.13",
"@typescript-eslint/eslint-plugin": "7.17.0",
"@typescript-eslint/parser": "7.17.0",
"aws-sdk-client-mock": "4.0.1",
"cross-env": "7.0.3",
"eslint-plugin-import": "2.30.0",
- "execa": "9.4.0",
+ "execa": "8.0.1",
"fkill": "9.0.0",
"jest": "29.7.0",
"jest-mock": "29.7.0",
diff --git a/packages/backend/src/core/AbuseReportNotificationService.ts b/packages/backend/src/core/AbuseReportNotificationService.ts
index 25e265f2b1..742e2621fd 100644
--- a/packages/backend/src/core/AbuseReportNotificationService.ts
+++ b/packages/backend/src/core/AbuseReportNotificationService.ts
@@ -154,9 +154,9 @@ export class AbuseReportNotificationService implements OnApplicationShutdown {
const convertedReports = abuseReports.map(it => {
return {
...it,
- reporter: usersMap.get(it.reporterId),
- targetUser: usersMap.get(it.targetUserId),
- assignee: it.assigneeId ? usersMap.get(it.assigneeId) : null,
+ reporter: usersMap.get(it.reporterId) ?? null,
+ targetUser: usersMap.get(it.targetUserId) ?? null,
+ assignee: it.assigneeId ? (usersMap.get(it.assigneeId) ?? null) : null,
};
});
diff --git a/packages/backend/src/core/AnnouncementService.ts b/packages/backend/src/core/AnnouncementService.ts
index d4fcf19439..a9f6731977 100644
--- a/packages/backend/src/core/AnnouncementService.ts
+++ b/packages/backend/src/core/AnnouncementService.ts
@@ -72,7 +72,7 @@ export class AnnouncementService {
updatedAt: null,
title: values.title,
text: values.text,
- imageUrl: values.imageUrl,
+ imageUrl: values.imageUrl || null,
icon: values.icon,
display: values.display,
forExistingUsers: values.forExistingUsers,
diff --git a/packages/backend/src/core/NoteCreateService.ts b/packages/backend/src/core/NoteCreateService.ts
index 13bafb7883..ae98c2fc79 100644
--- a/packages/backend/src/core/NoteCreateService.ts
+++ b/packages/backend/src/core/NoteCreateService.ts
@@ -58,6 +58,7 @@ import { isUserRelated } from '@/misc/is-user-related.js';
import { IdentifiableError } from '@/misc/identifiable-error.js';
import { LatestNoteService } from '@/core/LatestNoteService.js';
import { CollapsedQueue } from '@/misc/collapsed-queue.js';
+import { CacheService } from '@/core/CacheService.js';
type NotificationType = 'reply' | 'renote' | 'quote' | 'mention';
@@ -608,13 +609,21 @@ export class NoteCreateService implements OnApplicationShutdown {
this.followingsRepository.findBy({
followeeId: user.id,
notify: 'normal',
- }).then(followings => {
+ }).then(async followings => {
if (note.visibility !== 'specified') {
+ const isPureRenote = this.isRenote(data) && !this.isQuote(data) ? true : false;
for (const following of followings) {
// TODO: ワードミュート考慮
- this.notificationService.createNotification(following.followerId, 'note', {
- noteId: note.id,
- }, user.id);
+ let isRenoteMuted = false;
+ if (isPureRenote) {
+ const userIdsWhoMeMutingRenotes = await this.cacheService.renoteMutingsCache.fetch(following.followerId);
+ isRenoteMuted = userIdsWhoMeMutingRenotes.has(user.id);
+ }
+ if (!isRenoteMuted) {
+ this.notificationService.createNotification(following.followerId, 'note', {
+ noteId: note.id,
+ }, user.id);
+ }
}
}
});
diff --git a/packages/backend/src/core/QueueService.ts b/packages/backend/src/core/QueueService.ts
index 341eb26c99..010ba9b7d6 100644
--- a/packages/backend/src/core/QueueService.ts
+++ b/packages/backend/src/core/QueueService.ts
@@ -7,13 +7,15 @@ import { randomUUID } from 'node:crypto';
import { Inject, Injectable } from '@nestjs/common';
import type { IActivity } from '@/core/activitypub/type.js';
import type { MiDriveFile } from '@/models/DriveFile.js';
-import type { MiWebhook, webhookEventTypes } from '@/models/Webhook.js';
+import type { MiWebhook, WebhookEventTypes } from '@/models/Webhook.js';
import type { MiSystemWebhook, SystemWebhookEventType } from '@/models/SystemWebhook.js';
import type { Config } from '@/config.js';
import { DI } from '@/di-symbols.js';
import { bindThis } from '@/decorators.js';
import type { Antenna } from '@/server/api/endpoints/i/import-antennas.js';
import { ApRequestCreator } from '@/core/activitypub/ApRequestService.js';
+import { type SystemWebhookPayload } from '@/core/SystemWebhookService.js';
+import { type UserWebhookPayload } from './UserWebhookService.js';
import type {
DbJobData,
DeliverJobData,
@@ -30,8 +32,8 @@ import type {
ObjectStorageQueue,
RelationshipQueue,
SystemQueue,
- UserWebhookDeliverQueue,
SystemWebhookDeliverQueue,
+ UserWebhookDeliverQueue,
} from './QueueModule.js';
import type httpSignature from '@peertube/http-signature';
import type * as Bull from 'bullmq';
@@ -527,10 +529,10 @@ export class QueueService {
* @see UserWebhookDeliverProcessorService
*/
@bindThis
- public userWebhookDeliver(
+ public userWebhookDeliver<T extends WebhookEventTypes>(
webhook: MiWebhook,
- type: typeof webhookEventTypes[number],
- content: unknown,
+ type: T,
+ content: UserWebhookPayload<T>,
opts?: { attempts?: number },
) {
const data: UserWebhookDeliverJobData = {
@@ -559,10 +561,10 @@ export class QueueService {
* @see SystemWebhookDeliverProcessorService
*/
@bindThis
- public systemWebhookDeliver(
+ public systemWebhookDeliver<T extends SystemWebhookEventType>(
webhook: MiSystemWebhook,
- type: SystemWebhookEventType,
- content: unknown,
+ type: T,
+ content: SystemWebhookPayload<T>,
opts?: { attempts?: number },
) {
const data: SystemWebhookDeliverJobData = {
diff --git a/packages/backend/src/core/SystemWebhookService.ts b/packages/backend/src/core/SystemWebhookService.ts
index db6407dcb3..de00169612 100644
--- a/packages/backend/src/core/SystemWebhookService.ts
+++ b/packages/backend/src/core/SystemWebhookService.ts
@@ -15,8 +15,39 @@ import { QueueService } from '@/core/QueueService.js';
import { ModerationLogService } from '@/core/ModerationLogService.js';
import { LoggerService } from '@/core/LoggerService.js';
import Logger from '@/logger.js';
+import { Packed } from '@/misc/json-schema.js';
+import { AbuseReportResolveType } from '@/models/AbuseUserReport.js';
+import { ModeratorInactivityRemainingTime } from '@/queue/processors/CheckModeratorsActivityProcessorService.js';
import type { OnApplicationShutdown } from '@nestjs/common';
+export type AbuseReportPayload = {
+ id: string;
+ targetUserId: string;
+ targetUser: Packed<'UserLite'> | null;
+ targetUserHost: string | null;
+ reporterId: string;
+ reporter: Packed<'UserLite'> | null;
+ reporterHost: string | null;
+ assigneeId: string | null;
+ assignee: Packed<'UserLite'> | null;
+ resolved: boolean;
+ forwarded: boolean;
+ comment: string;
+ moderationNote: string;
+ resolvedAs: AbuseReportResolveType | null;
+};
+
+export type InactiveModeratorsWarningPayload = {
+ remainingTime: ModeratorInactivityRemainingTime;
+};
+
+export type SystemWebhookPayload<T extends SystemWebhookEventType> =
+ T extends 'abuseReport' | 'abuseReportResolved' ? AbuseReportPayload :
+ T extends 'userCreated' ? Packed<'UserLite'> :
+ T extends 'inactiveModeratorsWarning' ? InactiveModeratorsWarningPayload :
+ T extends 'inactiveModeratorsInvitationOnlyChanged' ? Record<string, never> :
+ never;
+
@Injectable()
export class SystemWebhookService implements OnApplicationShutdown {
private logger: Logger;
@@ -168,7 +199,7 @@ export class SystemWebhookService implements OnApplicationShutdown {
public async enqueueSystemWebhook<T extends SystemWebhookEventType>(
webhook: MiSystemWebhook | MiSystemWebhook['id'],
type: T,
- content: unknown,
+ content: SystemWebhookPayload<T>,
) {
const webhookEntity = typeof webhook === 'string'
? (await this.fetchActiveSystemWebhooks()).find(a => a.id === webhook)
diff --git a/packages/backend/src/core/UserWebhookService.ts b/packages/backend/src/core/UserWebhookService.ts
index 8a40a53688..7117a3d7fa 100644
--- a/packages/backend/src/core/UserWebhookService.ts
+++ b/packages/backend/src/core/UserWebhookService.ts
@@ -6,11 +6,23 @@
import { Inject, Injectable } from '@nestjs/common';
import * as Redis from 'ioredis';
import { type WebhooksRepository } from '@/models/_.js';
-import { MiWebhook } from '@/models/Webhook.js';
+import { MiWebhook, WebhookEventTypes } from '@/models/Webhook.js';
import { DI } from '@/di-symbols.js';
import { bindThis } from '@/decorators.js';
import { GlobalEvents } from '@/core/GlobalEventService.js';
import type { OnApplicationShutdown } from '@nestjs/common';
+import type { Packed } from '@/misc/json-schema.js';
+
+export type UserWebhookPayload<T extends WebhookEventTypes> =
+ T extends 'note' | 'reply' | 'renote' |'mention' ? {
+ note: Packed<'Note'>,
+ } :
+ T extends 'follow' | 'unfollow' ? {
+ user: Packed<'UserDetailedNotMe'>,
+ } :
+ T extends 'followed' ? {
+ user: Packed<'UserLite'>,
+ } : never;
@Injectable()
export class UserWebhookService implements OnApplicationShutdown {
diff --git a/packages/backend/src/core/UtilityService.ts b/packages/backend/src/core/UtilityService.ts
index 4c6d539e16..906adcfd27 100644
--- a/packages/backend/src/core/UtilityService.ts
+++ b/packages/backend/src/core/UtilityService.ts
@@ -122,6 +122,7 @@ export class UtilityService {
return host;
}
+ @bindThis
public isFederationAllowedHost(host: string): boolean {
if (this.meta.federation === 'none') return false;
if (this.meta.federation === 'specified' && !this.meta.federationHosts.some(x => `.${host.toLowerCase()}`.endsWith(`.${x}`))) return false;
diff --git a/packages/backend/src/core/WebAuthnService.ts b/packages/backend/src/core/WebAuthnService.ts
index 75ab0a207c..ad53192f18 100644
--- a/packages/backend/src/core/WebAuthnService.ts
+++ b/packages/backend/src/core/WebAuthnService.ts
@@ -246,14 +246,12 @@ export class WebAuthnService {
@bindThis
public async verifyAuthentication(userId: MiUser['id'], response: AuthenticationResponseJSON): Promise<boolean> {
- const challenge = await this.redisClient.get(`webauthn:challenge:${userId}`);
+ const challenge = await this.redisClient.getdel(`webauthn:challenge:${userId}`);
if (!challenge) {
throw new IdentifiableError('2d16e51c-007b-4edd-afd2-f7dd02c947f6', 'challenge not found');
}
- await this.redisClient.del(`webauthn:challenge:${userId}`);
-
const key = await this.userSecurityKeysRepository.findOneBy({
id: response.id,
userId: userId,
diff --git a/packages/backend/src/core/WebhookTestService.ts b/packages/backend/src/core/WebhookTestService.ts
index 0304cae355..746f289311 100644
--- a/packages/backend/src/core/WebhookTestService.ts
+++ b/packages/backend/src/core/WebhookTestService.ts
@@ -7,22 +7,16 @@ import { Injectable } from '@nestjs/common';
import { MiAbuseUserReport, MiNote, MiUser, MiWebhook } from '@/models/_.js';
import { bindThis } from '@/decorators.js';
import { MiSystemWebhook, type SystemWebhookEventType } from '@/models/SystemWebhook.js';
-import { SystemWebhookService } from '@/core/SystemWebhookService.js';
+import { AbuseReportPayload, SystemWebhookPayload, SystemWebhookService } from '@/core/SystemWebhookService.js';
import { Packed } from '@/misc/json-schema.js';
import { type WebhookEventTypes } from '@/models/Webhook.js';
-import { UserWebhookService } from '@/core/UserWebhookService.js';
+import { type UserWebhookPayload, UserWebhookService } from '@/core/UserWebhookService.js';
import { QueueService } from '@/core/QueueService.js';
import { ModeratorInactivityRemainingTime } from '@/queue/processors/CheckModeratorsActivityProcessorService.js';
const oneDayMillis = 24 * 60 * 60 * 1000;
-type AbuseUserReportDto = Omit<MiAbuseUserReport, 'targetUser' | 'reporter' | 'assignee'> & {
- targetUser: Packed<'UserLite'> | null,
- reporter: Packed<'UserLite'> | null,
- assignee: Packed<'UserLite'> | null,
-};
-
-function generateAbuseReport(override?: Partial<MiAbuseUserReport>): AbuseUserReportDto {
+function generateAbuseReport(override?: Partial<MiAbuseUserReport>): AbuseReportPayload {
const result: MiAbuseUserReport = {
id: 'dummy-abuse-report1',
targetUserId: 'dummy-target-user',
@@ -89,6 +83,9 @@ function generateDummyUser(override?: Partial<MiUser>): MiUser {
isExplorable: true,
isHibernated: false,
isDeleted: false,
+ requireSigninToViewContents: false,
+ makeNotesFollowersOnlyBefore: null,
+ makeNotesHiddenBefore: null,
emojis: [],
score: 0,
host: null,
@@ -322,10 +319,10 @@ export class WebhookTestService {
* - é€ä¿¡å¯¾è±¡ã‚¤ãƒ™ãƒ³ãƒˆï¼ˆon)ã«é–¢ã™ã‚‹è¨­å®š
*/
@bindThis
- public async testUserWebhook(
+ public async testUserWebhook<T extends WebhookEventTypes>(
params: {
webhookId: MiWebhook['id'],
- type: WebhookEventTypes,
+ type: T,
override?: Partial<Omit<MiWebhook, 'id'>>,
},
sender: MiUser | null,
@@ -337,7 +334,7 @@ export class WebhookTestService {
}
const webhook = webhooks[0];
- const send = (contents: unknown) => {
+ const send = <U extends WebhookEventTypes>(type: U, contents: UserWebhookPayload<U>) => {
const merged = {
...webhook,
...params.override,
@@ -345,7 +342,7 @@ export class WebhookTestService {
// テスト目的ãªã®ã§UserWebhookServiceã®æ©Ÿèƒ½ã‚’経由ã›ãšç›´æŽ¥ã‚­ãƒ¥ãƒ¼ã«è¿½åŠ ã™ã‚‹ï¼ˆãƒã‚§ãƒƒã‚¯å‡¦ç†ãªã©ã‚’スキップã™ã‚‹æ„図).
// ã¾ãŸã€Jobã®è©¦è¡Œå›žæ•°ã‚‚1回ã ã‘.
- this.queueService.userWebhookDeliver(merged, params.type, contents, { attempts: 1 });
+ this.queueService.userWebhookDeliver(merged, type, contents, { attempts: 1 });
};
const dummyNote1 = generateDummyNote({
@@ -377,33 +374,41 @@ export class WebhookTestService {
switch (params.type) {
case 'note': {
- send(toPackedNote(dummyNote1));
+ send('note', { note: toPackedNote(dummyNote1) });
break;
}
case 'reply': {
- send(toPackedNote(dummyReply1));
+ send('reply', { note: toPackedNote(dummyReply1) });
break;
}
case 'renote': {
- send(toPackedNote(dummyRenote1));
+ send('renote', { note: toPackedNote(dummyRenote1) });
break;
}
case 'mention': {
- send(toPackedNote(dummyMention1));
+ send('mention', { note: toPackedNote(dummyMention1) });
break;
}
case 'follow': {
- send(toPackedUserDetailedNotMe(dummyUser1));
+ send('follow', { user: toPackedUserDetailedNotMe(dummyUser1) });
break;
}
case 'followed': {
- send(toPackedUserLite(dummyUser2));
+ send('followed', { user: toPackedUserLite(dummyUser2) });
break;
}
case 'unfollow': {
- send(toPackedUserDetailedNotMe(dummyUser3));
+ send('unfollow', { user: toPackedUserDetailedNotMe(dummyUser3) });
break;
}
+ // ã¾ã å®Ÿè£…ã•れã¦ã„ãªã„ (#9485)
+ case 'reaction':
+ return;
+ default: {
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
+ const _exhaustiveAssertion: never = params.type;
+ return;
+ }
}
}
@@ -416,10 +421,10 @@ export class WebhookTestService {
* - é€ä¿¡å¯¾è±¡ã‚¤ãƒ™ãƒ³ãƒˆï¼ˆon)ã«é–¢ã™ã‚‹è¨­å®š
*/
@bindThis
- public async testSystemWebhook(
+ public async testSystemWebhook<T extends SystemWebhookEventType>(
params: {
webhookId: MiSystemWebhook['id'],
- type: SystemWebhookEventType,
+ type: T,
override?: Partial<Omit<MiSystemWebhook, 'id'>>,
},
) {
@@ -429,7 +434,7 @@ export class WebhookTestService {
}
const webhook = webhooks[0];
- const send = (contents: unknown) => {
+ const send = <U extends SystemWebhookEventType>(type: U, contents: SystemWebhookPayload<U>) => {
const merged = {
...webhook,
...params.override,
@@ -437,12 +442,12 @@ export class WebhookTestService {
// テスト目的ãªã®ã§SystemWebhookServiceã®æ©Ÿèƒ½ã‚’経由ã›ãšç›´æŽ¥ã‚­ãƒ¥ãƒ¼ã«è¿½åŠ ã™ã‚‹ï¼ˆãƒã‚§ãƒƒã‚¯å‡¦ç†ãªã©ã‚’スキップã™ã‚‹æ„図).
// ã¾ãŸã€Jobã®è©¦è¡Œå›žæ•°ã‚‚1回ã ã‘.
- this.queueService.systemWebhookDeliver(merged, params.type, contents, { attempts: 1 });
+ this.queueService.systemWebhookDeliver(merged, type, contents, { attempts: 1 });
};
switch (params.type) {
case 'abuseReport': {
- send(generateAbuseReport({
+ send('abuseReport', generateAbuseReport({
targetUserId: dummyUser1.id,
targetUser: dummyUser1,
reporterId: dummyUser2.id,
@@ -451,7 +456,7 @@ export class WebhookTestService {
break;
}
case 'abuseReportResolved': {
- send(generateAbuseReport({
+ send('abuseReportResolved', generateAbuseReport({
targetUserId: dummyUser1.id,
targetUser: dummyUser1,
reporterId: dummyUser2.id,
@@ -463,7 +468,7 @@ export class WebhookTestService {
break;
}
case 'userCreated': {
- send(toPackedUserLite(dummyUser1));
+ send('userCreated', toPackedUserLite(dummyUser1));
break;
}
case 'inactiveModeratorsWarning': {
@@ -473,15 +478,20 @@ export class WebhookTestService {
asHours: 24,
};
- send({
+ send('inactiveModeratorsWarning', {
remainingTime: dummyTime,
});
break;
}
case 'inactiveModeratorsInvitationOnlyChanged': {
- send({});
+ send('inactiveModeratorsInvitationOnlyChanged', {});
break;
}
+ default: {
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
+ const _exhaustiveAssertion: never = params.type;
+ return;
+ }
}
}
}
diff --git a/packages/backend/src/core/activitypub/ApInboxService.ts b/packages/backend/src/core/activitypub/ApInboxService.ts
index 64b64013af..d1ae13d706 100644
--- a/packages/backend/src/core/activitypub/ApInboxService.ts
+++ b/packages/backend/src/core/activitypub/ApInboxService.ts
@@ -135,6 +135,7 @@ export class ApInboxService {
if (actor.uri) {
if (actor.lastFetchedAt == null || Date.now() - actor.lastFetchedAt.getTime() > 1000 * 60 * 60 * 24) {
setImmediate(() => {
+ // åŒä¸€ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®æƒ…報をå†åº¦å‡¦ç†ã™ã‚‹ã®ã§ã€ä½¿ç”¨æ¸ˆã¿ã®resolverã‚’å†åˆ©ç”¨ã—ã¦ã¯ã„ã‘ãªã„
this.apPersonService.updatePerson(actor.uri);
});
}
diff --git a/packages/backend/src/core/activitypub/ApRendererService.ts b/packages/backend/src/core/activitypub/ApRendererService.ts
index 42ee5bc58a..6242141947 100644
--- a/packages/backend/src/core/activitypub/ApRendererService.ts
+++ b/packages/backend/src/core/activitypub/ApRendererService.ts
@@ -517,6 +517,9 @@ export class ApRendererService {
summary: profile.description ? this.mfmService.toHtml(mfm.parse(profile.description)) : null,
_misskey_summary: profile.description,
_misskey_followedMessage: profile.followedMessage,
+ _misskey_requireSigninToViewContents: user.requireSigninToViewContents,
+ _misskey_makeNotesFollowersOnlyBefore: user.makeNotesFollowersOnlyBefore,
+ _misskey_makeNotesHiddenBefore: user.makeNotesHiddenBefore,
icon: avatar ? this.renderImage(avatar) : null,
image: banner ? this.renderImage(banner) : null,
backgroundUrl: background ? this.renderImage(background) : null,
diff --git a/packages/backend/src/core/activitypub/ApRequestService.ts b/packages/backend/src/core/activitypub/ApRequestService.ts
index eeff73385b..ca4aabbf49 100644
--- a/packages/backend/src/core/activitypub/ApRequestService.ts
+++ b/packages/backend/src/core/activitypub/ApRequestService.ts
@@ -11,6 +11,7 @@ import { DI } from '@/di-symbols.js';
import type { Config } from '@/config.js';
import type { MiUser } from '@/models/User.js';
import { UserKeypairService } from '@/core/UserKeypairService.js';
+import { UtilityService } from '@/core/UtilityService.js';
import { HttpRequestService } from '@/core/HttpRequestService.js';
import { LoggerService } from '@/core/LoggerService.js';
import { bindThis } from '@/decorators.js';
@@ -19,6 +20,7 @@ import type { IObject } from './type.js';
import { validateContentTypeSetAsActivityPub } from '@/core/activitypub/misc/validator.js';
import { assertActivityMatchesUrls } from '@/core/activitypub/misc/check-against-url.js';
import { UtilityService } from "@/core/UtilityService.js";
+import type { IObject } from './type.js';
type Request = {
url: string;
@@ -242,10 +244,8 @@ export class ApRequestService {
const alternate = document.querySelector('head > link[rel="alternate"][type="application/activity+json"]');
if (alternate) {
const href = alternate.getAttribute('href');
- if (href) {
- if (this.utilityService.punyHost(url) === this.utilityService.punyHost(href)) {
- return await this.signedGet(href, user, false);
- }
+ if (href && this.utilityService.punyHost(url) === this.utilityService.punyHost(href)) {
+ return await this.signedGet(href, user, false);
}
}
} catch (e) {
diff --git a/packages/backend/src/core/activitypub/misc/contexts.ts b/packages/backend/src/core/activitypub/misc/contexts.ts
index da75fc1d42..45ca495145 100644
--- a/packages/backend/src/core/activitypub/misc/contexts.ts
+++ b/packages/backend/src/core/activitypub/misc/contexts.ts
@@ -558,6 +558,9 @@ const extension_context_definition = {
'_misskey_votes': 'misskey:_misskey_votes',
'_misskey_summary': 'misskey:_misskey_summary',
'_misskey_followedMessage': 'misskey:_misskey_followedMessage',
+ '_misskey_requireSigninToViewContents': 'misskey:_misskey_requireSigninToViewContents',
+ '_misskey_makeNotesFollowersOnlyBefore': 'misskey:_misskey_makeNotesFollowersOnlyBefore',
+ '_misskey_makeNotesHiddenBefore': 'misskey:_misskey_makeNotesHiddenBefore',
'isCat': 'misskey:isCat',
// Firefish
firefish: 'https://joinfirefish.org/ns#',
diff --git a/packages/backend/src/core/activitypub/models/ApNoteService.ts b/packages/backend/src/core/activitypub/models/ApNoteService.ts
index a0ddc2075b..7ca588aae2 100644
--- a/packages/backend/src/core/activitypub/models/ApNoteService.ts
+++ b/packages/backend/src/core/activitypub/models/ApNoteService.ts
@@ -108,6 +108,10 @@ export class ApNoteService {
return new IdentifiableError('d450b8a9-48e4-4dab-ae36-f4db763fda7c', `invalid Note: attributedTo has different host. expected: ${expectHost}, actual: ${actualHost}`);
}
+ if (object.published && !this.idService.isSafeT(new Date(object.published).valueOf())) {
+ return new IdentifiableError('d450b8a9-48e4-4dab-ae36-f4db763fda7c', 'invalid Note: published timestamp is malformed');
+ }
+
if (actor) {
const attribution = (object.attributedTo) ? getOneApId(object.attributedTo) : actor.uri;
if (attribution !== actor.uri) {
@@ -118,10 +122,6 @@ export class ApNoteService {
}
}
- if (object.published && !this.idService.isSafeT(new Date(object.published).valueOf())) {
- return new IdentifiableError('d450b8a9-48e4-4dab-ae36-f4db763fda7c', 'invalid Note: published timestamp is malformed');
- }
-
if (note) {
const url = (object.url) ? getOneApId(object.url) : note.url;
if (url && url !== note.url) {
@@ -183,7 +183,7 @@ export class ApNoteService {
}
if (this.utilityService.punyHost(url) !== this.utilityService.punyHost(note.id)) {
- throw new Error(`note url <> uri host mismatch: ${url} <> ${note.id}`);
+ throw new Error(`note url & uri host mismatch: note url: ${url}, note uri: ${note.id}`);
}
}
@@ -421,9 +421,6 @@ export class ApNoteService {
const url = getOneApHrefNullable(note.url);
- if (url && !checkHttps(url)) {
- throw new Error('unexpected schema of note url: ' + url);
- }
if (url != null) {
if (!checkHttps(url)) {
@@ -431,7 +428,7 @@ export class ApNoteService {
}
if (this.utilityService.punyHost(url) !== this.utilityService.punyHost(note.id)) {
- throw new Error(`note url <> id host mismatch: ${url} <> ${note.id}`);
+ throw new Error(`note url & uri host mismatch: note url: ${url}, note uri: ${note.id}`);
}
}
diff --git a/packages/backend/src/core/activitypub/models/ApPersonService.ts b/packages/backend/src/core/activitypub/models/ApPersonService.ts
index 5cc1862167..1fa4a11d47 100644
--- a/packages/backend/src/core/activitypub/models/ApPersonService.ts
+++ b/packages/backend/src/core/activitypub/models/ApPersonService.ts
@@ -253,6 +253,12 @@ export class ApPersonService implements OnModuleInit {
if (user == null) throw new Error('failed to create user: user is null');
const [avatar, banner, background] = await Promise.all([icon, image, bgimg].map(img => {
+ // icon and image may be arrays
+ // see https://www.w3.org/TR/activitystreams-vocabulary/#dfn-icon
+ if (Array.isArray(img)) {
+ img = img.find(item => item && item.url) ?? null;
+ }
+
// if we have an explicitly missing image, return an
// explicitly-null set of values
if ((img == null) || (typeof img === 'object' && img.url == null)) {
@@ -393,7 +399,7 @@ export class ApPersonService implements OnModuleInit {
usernameLower: person.preferredUsername?.toLowerCase(),
host,
inbox: person.inbox,
- sharedInbox: person.sharedInbox ?? person.endpoints?.sharedInbox,
+ sharedInbox: person.sharedInbox ?? person.endpoints?.sharedInbox ?? null,
notesCount: outboxcollection?.totalItems ?? 0,
followersCount: followerscollection?.totalItems ?? 0,
followingCount: followingcollection?.totalItems ?? 0,
@@ -404,6 +410,9 @@ export class ApPersonService implements OnModuleInit {
isBot,
isCat: (person as any).isCat === true,
speakAsCat: (person as any).speakAsCat != null ? (person as any).speakAsCat === true : (person as any).isCat === true,
+ requireSigninToViewContents: (person as any).requireSigninToViewContents === true,
+ makeNotesFollowersOnlyBefore: (person as any).makeNotesFollowersOnlyBefore ?? null,
+ makeNotesHiddenBefore: (person as any).makeNotesHiddenBefore ?? null,
emojis,
})) as MiRemoteUser;
@@ -571,7 +580,7 @@ export class ApPersonService implements OnModuleInit {
const updates = {
lastFetchedAt: new Date(),
inbox: person.inbox,
- sharedInbox: person.sharedInbox ?? person.endpoints?.sharedInbox,
+ sharedInbox: person.sharedInbox ?? person.endpoints?.sharedInbox ?? null,
followersUri: person.followers ? getApId(person.followers) : undefined,
featured: person.featured,
emojis: emojiNames,
@@ -647,7 +656,7 @@ export class ApPersonService implements OnModuleInit {
// è©²å½“ãƒ¦ãƒ¼ã‚¶ãƒ¼ãŒæ—¢ã«ãƒ•ォロワーã«ãªã£ã¦ã„ãŸå ´åˆã¯Followingもアップデートã™ã‚‹
await this.followingsRepository.update(
{ followerId: exist.id },
- { followerSharedInbox: person.sharedInbox ?? person.endpoints?.sharedInbox },
+ { followerSharedInbox: person.sharedInbox ?? person.endpoints?.sharedInbox ?? null },
);
await this.updateFeatured(exist.id, resolver).catch(err => this.logger.error(err));
diff --git a/packages/backend/src/core/activitypub/models/ApQuestionService.ts b/packages/backend/src/core/activitypub/models/ApQuestionService.ts
index 83a98d17f9..990e186e88 100644
--- a/packages/backend/src/core/activitypub/models/ApQuestionService.ts
+++ b/packages/backend/src/core/activitypub/models/ApQuestionService.ts
@@ -11,8 +11,8 @@ import type { IPoll } from '@/models/Poll.js';
import type { MiRemoteUser } from '@/models/User.js';
import type Logger from '@/logger.js';
import { bindThis } from '@/decorators.js';
-import { UtilityService } from '@/core/UtilityService.js';
import { getOneApId, isQuestion } from '../type.js';
+import { UtilityService } from '@/core/UtilityService.js';
import { ApLoggerService } from '../ApLoggerService.js';
import { ApResolverService } from '../ApResolverService.js';
import type { Resolver } from '../ApResolverService.js';
diff --git a/packages/backend/src/core/activitypub/type.ts b/packages/backend/src/core/activitypub/type.ts
index af5aba9c16..c5c0bb8c94 100644
--- a/packages/backend/src/core/activitypub/type.ts
+++ b/packages/backend/src/core/activitypub/type.ts
@@ -16,6 +16,9 @@ export interface IObject {
summary?: string | null;
_misskey_summary?: string;
_misskey_followedMessage?: string | null;
+ _misskey_requireSigninToViewContents?: boolean;
+ _misskey_makeNotesFollowersOnlyBefore?: number | null;
+ _misskey_makeNotesHiddenBefore?: number | null;
published?: string;
cc?: ApObject;
to?: ApObject;
diff --git a/packages/backend/src/core/entities/NoteEntityService.ts b/packages/backend/src/core/entities/NoteEntityService.ts
index ab9c72cfbe..3ad4577706 100644
--- a/packages/backend/src/core/entities/NoteEntityService.ts
+++ b/packages/backend/src/core/entities/NoteEntityService.ts
@@ -109,57 +109,81 @@ export class NoteEntityService implements OnModuleInit {
}
@bindThis
- private async hideNote(packedNote: Packed<'Note'>, meId: MiUser['id'] | null) {
+ private async hideNote(packedNote: Packed<'Note'>, meId: MiUser['id'] | null): Promise<void> {
+ // FIXME: ã“ã®visibility変更処ç†ãŒå½“関数ã«ã‚ã‚‹ã®ã¯è‹¥å¹²ä¸è‡ªç„¶ã‹ã‚‚ã—れãªã„(関数åã‚’ treatVisibility ã¨ã‹ã«å¤‰ãˆã‚‹æ‰‹ã‚‚ã‚ã‚‹)
+ if (packedNote.visibility === 'public' || packedNote.visibility === 'home') {
+ const followersOnlyBefore = packedNote.user.makeNotesFollowersOnlyBefore;
+ if ((followersOnlyBefore != null)
+ && (
+ (followersOnlyBefore <= 0 && (Date.now() - new Date(packedNote.createdAt).getTime() > 0 - (followersOnlyBefore * 1000)))
+ || (followersOnlyBefore > 0 && (new Date(packedNote.createdAt).getTime() < followersOnlyBefore * 1000))
+ )
+ ) {
+ packedNote.visibility = 'followers';
+ }
+ }
+
+ if (meId === packedNote.userId) return;
+
// TODO: isVisibleForMe を使ã†ã‚ˆã†ã«ã—ã¦ã‚‚良ã•ãã†(åž‹é•ã†ã‘ã©)
let hide = false;
- // visibility ㌠specified ã‹ã¤è‡ªåˆ†ãŒæŒ‡å®šã•れã¦ã„ãªã‹ã£ãŸã‚‰éžè¡¨ç¤º
- if (packedNote.visibility === 'specified') {
- if (meId == null) {
+ if (packedNote.user.requireSigninToViewContents && meId == null) {
+ hide = true;
+ }
+
+ if (!hide) {
+ const hiddenBefore = packedNote.user.makeNotesHiddenBefore;
+ if ((hiddenBefore != null)
+ && (
+ (hiddenBefore <= 0 && (Date.now() - new Date(packedNote.createdAt).getTime() > 0 - (hiddenBefore * 1000)))
+ || (hiddenBefore > 0 && (new Date(packedNote.createdAt).getTime() < hiddenBefore * 1000))
+ )
+ ) {
hide = true;
- } else if (meId === packedNote.userId) {
- hide = false;
- } else {
- // 指定ã•れã¦ã„ã‚‹ã‹ã©ã†ã‹
- const specified = packedNote.visibleUserIds!.some(id => meId === id);
+ }
+ }
- if (specified) {
+ // visibility ㌠specified ã‹ã¤è‡ªåˆ†ãŒæŒ‡å®šã•れã¦ã„ãªã‹ã£ãŸã‚‰éžè¡¨ç¤º
+ if (!hide) {
+ if (packedNote.visibility === 'specified') {
+ if (meId == null) {
+ hide = true;
+ } else if (meId === packedNote.userId) {
hide = false;
} else {
- hide = true;
+ // 指定ã•れã¦ã„ã‚‹ã‹ã©ã†ã‹
+ const specified = packedNote.visibleUserIds!.some(id => meId === id);
+
+ if (!specified) {
+ hide = true;
+ }
}
}
}
// visibility ㌠followers ã‹ã¤è‡ªåˆ†ãŒæŠ•稿者ã®ãƒ•ォロワーã§ãªã‹ã£ãŸã‚‰éžè¡¨ç¤º
- if (packedNote.visibility === 'followers') {
- if (meId == null) {
- hide = true;
- } else if (meId === packedNote.userId) {
- hide = false;
- } else if (packedNote.reply && (meId === packedNote.reply.userId)) {
- // è‡ªåˆ†ã®æŠ•ç¨¿ã«å¯¾ã™ã‚‹ãƒªãƒ—ライ
- hide = false;
- } else if (packedNote.mentions && packedNote.mentions.some(id => meId === id)) {
- // 自分ã¸ã®ãƒ¡ãƒ³ã‚·ãƒ§ãƒ³
- hide = false;
- } else if (packedNote.renote && (meId === packedNote.renote.userId)) {
- hide = false;
- } else {
- if (packedNote.renote) {
- const isFollowing = await this.followingsRepository.exists({
- where: {
- followeeId: packedNote.renote.userId,
- followerId: meId,
- },
- });
-
- hide = !isFollowing;
+ if (!hide) {
+ if (packedNote.visibility === 'followers') {
+ if (meId == null) {
+ hide = true;
+ } else if (meId === packedNote.userId) {
+ hide = false;
+ } else if (packedNote.reply && (meId === packedNote.reply.userId)) {
+ // è‡ªåˆ†ã®æŠ•ç¨¿ã«å¯¾ã™ã‚‹ãƒªãƒ—ライ
+ hide = false;
+ } else if (packedNote.mentions && packedNote.mentions.some(id => meId === id)) {
+ // 自分ã¸ã®ãƒ¡ãƒ³ã‚·ãƒ§ãƒ³
+ hide = false;
+ } else if (packedNote.renote && (meId === packedNote.renote.userId)) {
+ hide = false;
} else {
// フォロワーã‹ã©ã†ã‹
+ // TODO: 当関数呼ã³å‡ºã—ã”ã¨ã«ã‚¯ã‚¨ãƒªãŒèµ°ã‚‹ã®ã¯é‡ãã†ã ã‹ã‚‰ãªã‚“ã¨ã‹ã™ã‚‹
+ const appearNote = packedNote.renote ?? packedNote;
const isFollowing = await this.followingsRepository.exists({
where: {
- followeeId: packedNote.userId,
+ followeeId: appearNote.userId,
followerId: meId,
},
});
@@ -189,6 +213,7 @@ export class NoteEntityService implements OnModuleInit {
packedNote.reactionEmojis = undefined;
packedNote.reactions = undefined;
packedNote.isHidden = true;
+ // TODO: hiddenReason ã¿ãŸã„ãªã®ã‚’æä¾›ã—ã¦ã‚‚良ã•ãã†
}
}
diff --git a/packages/backend/src/core/entities/UserEntityService.ts b/packages/backend/src/core/entities/UserEntityService.ts
index a421e23195..4f6b412609 100644
--- a/packages/backend/src/core/entities/UserEntityService.ts
+++ b/packages/backend/src/core/entities/UserEntityService.ts
@@ -542,6 +542,9 @@ export class UserEntityService implements OnModuleInit {
isSilenced: user.isSilenced || this.roleService.getUserPolicies(user.id).then(r => !r.canPublicNote),
speakAsCat: user.speakAsCat ?? false,
approved: user.approved,
+ requireSigninToViewContents: user.requireSigninToViewContents === false ? undefined : true,
+ makeNotesFollowersOnlyBefore: user.makeNotesFollowersOnlyBefore ?? undefined,
+ makeNotesHiddenBefore: user.makeNotesHiddenBefore ?? undefined,
instance: user.host ? this.federatedInstanceService.federatedInstanceCache.fetch(user.host).then(instance => instance ? {
name: instance.name,
softwareName: instance.softwareName,
diff --git a/packages/backend/src/misc/sql-like-escape.ts b/packages/backend/src/misc/sql-like-escape.ts
index ffe61670ee..6b4f51b00e 100644
--- a/packages/backend/src/misc/sql-like-escape.ts
+++ b/packages/backend/src/misc/sql-like-escape.ts
@@ -4,5 +4,5 @@
*/
export function sqlLikeEscape(s: string) {
- return s.replace(/([%_\\])/g, '\\$1');
+ return s.replace(/([\\%_])/g, '\\$1');
}
diff --git a/packages/backend/src/models/AbuseUserReport.ts b/packages/backend/src/models/AbuseUserReport.ts
index cb5672e4ac..d43ebf9342 100644
--- a/packages/backend/src/models/AbuseUserReport.ts
+++ b/packages/backend/src/models/AbuseUserReport.ts
@@ -7,6 +7,8 @@ import { PrimaryColumn, Entity, Index, JoinColumn, Column, ManyToOne } from 'typ
import { id } from './util/id.js';
import { MiUser } from './User.js';
+export type AbuseReportResolveType = 'accept' | 'reject';
+
@Entity('abuse_user_report')
export class MiAbuseUserReport {
@PrimaryColumn(id())
@@ -76,7 +78,7 @@ export class MiAbuseUserReport {
@Column('varchar', {
length: 128, nullable: true,
})
- public resolvedAs: 'accept' | 'reject' | null;
+ public resolvedAs: AbuseReportResolveType | null;
//#region Denormalized fields
@Index()
diff --git a/packages/backend/src/models/User.ts b/packages/backend/src/models/User.ts
index c7ecccf1cf..a4481a1f81 100644
--- a/packages/backend/src/models/User.ts
+++ b/packages/backend/src/models/User.ts
@@ -244,6 +244,23 @@ export class MiUser {
})
public isHibernated: boolean;
+ @Column('boolean', {
+ default: false,
+ })
+ public requireSigninToViewContents: boolean;
+
+ // in sec, マイナスã§ç›¸å¯¾æ™‚é–“
+ @Column('integer', {
+ nullable: true,
+ })
+ public makeNotesFollowersOnlyBefore: number | null;
+
+ // in sec, マイナスã§ç›¸å¯¾æ™‚é–“
+ @Column('integer', {
+ nullable: true,
+ })
+ public makeNotesHiddenBefore: number | null;
+
// アカウントãŒå‰Šé™¤ã•れãŸã‹ã©ã†ã‹ã®ãƒ•ラグã ãŒã€å®Œå…¨ã«å‰Šé™¤ã•れる際ã¯ç‰©ç†å‰Šé™¤ãªã®ã§å®Ÿè³ªå‰Šé™¤ã•れるã¾ã§ã®ã€Œå‰Šé™¤ãŒé€²è¡Œã—ã¦ã„ã‚‹ã‹ã©ã†ã‹ã€ã®ãƒ•ラグ
@Column('boolean', {
default: false,
diff --git a/packages/backend/src/models/json-schema/user.ts b/packages/backend/src/models/json-schema/user.ts
index a6517bfb98..46aa06c392 100644
--- a/packages/backend/src/models/json-schema/user.ts
+++ b/packages/backend/src/models/json-schema/user.ts
@@ -146,6 +146,18 @@ export const packedUserLiteSchema = {
type: 'boolean',
nullable: false, optional: false,
},
+ requireSigninToViewContents: {
+ type: 'boolean',
+ nullable: false, optional: true,
+ },
+ makeNotesFollowersOnlyBefore: {
+ type: 'number',
+ nullable: true, optional: true,
+ },
+ makeNotesHiddenBefore: {
+ type: 'number',
+ nullable: true, optional: true,
+ },
instance: {
type: 'object',
nullable: false, optional: true,
diff --git a/packages/backend/src/server/ActivityPubServerService.ts b/packages/backend/src/server/ActivityPubServerService.ts
index f955329fd1..efbc8721b3 100644
--- a/packages/backend/src/server/ActivityPubServerService.ts
+++ b/packages/backend/src/server/ActivityPubServerService.ts
@@ -33,6 +33,7 @@ import { UserEntityService } from '@/core/entities/UserEntityService.js';
import { bindThis } from '@/decorators.js';
import { IActivity } from '@/core/activitypub/type.js';
import { isQuote, isRenote } from '@/misc/is-renote.js';
+import * as Acct from '@/misc/acct.js';
import type { FastifyInstance, FastifyRequest, FastifyReply, FastifyPluginOptions, FastifyBodyParser } from 'fastify';
import type { FindOptionsWhere } from 'typeorm';
import type Logger from '@/logger.js';
@@ -229,7 +230,7 @@ export class ActivityPubServerService {
let signature;
try {
- signature = httpSignature.parseRequest(request.raw, { 'headers': ['(request-target)', 'digest', 'host', 'date'], authorizationHeaderName: 'signature' });
+ signature = httpSignature.parseRequest(request.raw, { 'headers': ['(request-target)', 'host', 'date'], authorizationHeaderName: 'signature' });
} catch (e) {
reply.code(401);
return;
@@ -619,7 +620,18 @@ export class ActivityPubServerService {
return;
}
+ // リモートã ã£ãŸã‚‰ãƒªãƒ€ã‚¤ãƒ¬ã‚¯ãƒˆ
+ if (user.host != null) {
+ if (user.uri == null || this.utilityService.isSelfHost(user.host)) {
+ reply.code(500);
+ return;
+ }
+ reply.redirect(user.uri, 301);
+ return;
+ }
+
if (!this.config.checkActivityPubGetSignature) reply.header('Cache-Control', 'public, max-age=180');
+
this.setResponseType(request, reply);
return (this.apRendererService.addContext(await this.apRendererService.renderPerson(user as MiLocalUser)));
}
@@ -795,21 +807,22 @@ export class ActivityPubServerService {
const user = await this.usersRepository.findOneBy({
id: userId,
- host: IsNull(),
isSuspended: false,
});
return await this.userInfo(request, reply, user);
});
- fastify.get<{ Params: { user: string; } }>('/@:user', { constraints: { apOrHtml: 'ap' } }, async (request, reply) => {
+ fastify.get<{ Params: { acct: string; } }>('/@:acct', { constraints: { apOrHtml: 'ap' } }, async (request, reply) => {
if (await this.shouldRefuseGetRequest(request, reply, request.params.user)) return;
vary(reply.raw, 'Accept');
+ const acct = Acct.parse(request.params.acct);
+
const user = await this.usersRepository.findOneBy({
- usernameLower: request.params.user.toLowerCase(),
- host: IsNull(),
+ usernameLower: acct.username,
+ host: acct.host ?? IsNull(),
isSuspended: false,
});
diff --git a/packages/backend/src/server/api/GetterService.ts b/packages/backend/src/server/api/GetterService.ts
index 8643be0f30..419017aaf4 100644
--- a/packages/backend/src/server/api/GetterService.ts
+++ b/packages/backend/src/server/api/GetterService.ts
@@ -42,6 +42,17 @@ export class GetterService {
return note;
}
+ @bindThis
+ public async getNoteWithUser(noteId: MiNote['id']) {
+ const note = await this.notesRepository.findOne({ where: { id: noteId }, relations: ['user'] });
+
+ if (note == null) {
+ throw new IdentifiableError('9725d0ce-ba28-4dde-95a7-2cbb2c15de24', 'No such note.');
+ }
+
+ return note;
+ }
+
/**
* Get note for API processing
*/
diff --git a/packages/backend/src/server/api/endpoints/admin/accounts/delete.ts b/packages/backend/src/server/api/endpoints/admin/accounts/delete.ts
index 01dea703a3..ece1984cff 100644
--- a/packages/backend/src/server/api/endpoints/admin/accounts/delete.ts
+++ b/packages/backend/src/server/api/endpoints/admin/accounts/delete.ts
@@ -46,7 +46,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
throw new Error('cannot delete a root account');
}
- await this.deleteAccoountService.deleteAccount(user);
+ await this.deleteAccoountService.deleteAccount(user, me);
});
}
}
diff --git a/packages/backend/src/server/api/endpoints/admin/announcements/create.ts b/packages/backend/src/server/api/endpoints/admin/announcements/create.ts
index 2dae1df87d..b8bfda73a4 100644
--- a/packages/backend/src/server/api/endpoints/admin/announcements/create.ts
+++ b/packages/backend/src/server/api/endpoints/admin/announcements/create.ts
@@ -55,7 +55,7 @@ export const paramDef = {
properties: {
title: { type: 'string', minLength: 1 },
text: { type: 'string', minLength: 1 },
- imageUrl: { type: 'string', nullable: true, minLength: 1 },
+ imageUrl: { type: 'string', nullable: true, minLength: 0 },
icon: { type: 'string', enum: ['info', 'warning', 'error', 'success'], default: 'info' },
display: { type: 'string', enum: ['normal', 'banner', 'dialog'], default: 'normal' },
forExistingUsers: { type: 'boolean', default: false },
@@ -76,7 +76,8 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
updatedAt: null,
title: ps.title,
text: ps.text,
- imageUrl: ps.imageUrl,
+ /* eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing -- ç©ºã®æ–‡å­—列ã®å ´åˆã€nullを渡ã™ã‚ˆã†ã«ã™ã‚‹ãŸã‚ */
+ imageUrl: ps.imageUrl || null,
icon: ps.icon,
display: ps.display,
forExistingUsers: ps.forExistingUsers,
diff --git a/packages/backend/src/server/api/endpoints/admin/avatar-decorations/create.ts b/packages/backend/src/server/api/endpoints/admin/avatar-decorations/create.ts
index fd21309818..87d80cbe80 100644
--- a/packages/backend/src/server/api/endpoints/admin/avatar-decorations/create.ts
+++ b/packages/backend/src/server/api/endpoints/admin/avatar-decorations/create.ts
@@ -6,6 +6,7 @@
import { Injectable } from '@nestjs/common';
import { Endpoint } from '@/server/api/endpoint-base.js';
import { AvatarDecorationService } from '@/core/AvatarDecorationService.js';
+import { IdService } from '@/core/IdService.js';
export const meta = {
tags: ['admin'],
@@ -13,6 +14,49 @@ export const meta = {
requireCredential: true,
requireRolePolicy: 'canManageAvatarDecorations',
kind: 'write:admin:avatar-decorations',
+
+ res: {
+ type: 'object',
+ optional: false, nullable: false,
+ properties: {
+ id: {
+ type: 'string',
+ optional: false, nullable: false,
+ format: 'id',
+ },
+ createdAt: {
+ type: 'string',
+ optional: false, nullable: false,
+ format: 'date-time',
+ },
+ updatedAt: {
+ type: 'string',
+ optional: false, nullable: true,
+ format: 'date-time',
+ },
+ name: {
+ type: 'string',
+ optional: false, nullable: false,
+ },
+ description: {
+ type: 'string',
+ optional: false, nullable: false,
+ },
+ url: {
+ type: 'string',
+ optional: false, nullable: false,
+ },
+ roleIdsThatCanBeUsedThisDecoration: {
+ type: 'array',
+ optional: false, nullable: false,
+ items: {
+ type: 'string',
+ optional: false, nullable: false,
+ format: 'id',
+ },
+ },
+ },
+ },
} as const;
export const paramDef = {
@@ -32,14 +76,25 @@ export const paramDef = {
export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-disable-line import/no-default-export
constructor(
private avatarDecorationService: AvatarDecorationService,
+ private idService: IdService,
) {
super(meta, paramDef, async (ps, me) => {
- await this.avatarDecorationService.create({
+ const created = await this.avatarDecorationService.create({
name: ps.name,
description: ps.description,
url: ps.url,
roleIdsThatCanBeUsedThisDecoration: ps.roleIdsThatCanBeUsedThisDecoration,
}, me);
+
+ return {
+ id: created.id,
+ createdAt: this.idService.parse(created.id).date.toISOString(),
+ updatedAt: null,
+ name: created.name,
+ description: created.description,
+ url: created.url,
+ roleIdsThatCanBeUsedThisDecoration: created.roleIdsThatCanBeUsedThisDecoration,
+ };
});
}
}
diff --git a/packages/backend/src/server/api/endpoints/admin/avatar-decorations/list.ts b/packages/backend/src/server/api/endpoints/admin/avatar-decorations/list.ts
index aee90023e1..d785f085ac 100644
--- a/packages/backend/src/server/api/endpoints/admin/avatar-decorations/list.ts
+++ b/packages/backend/src/server/api/endpoints/admin/avatar-decorations/list.ts
@@ -4,10 +4,7 @@
*/
import { Inject, Injectable } from '@nestjs/common';
-import type { AnnouncementsRepository, AnnouncementReadsRepository } from '@/models/_.js';
-import type { MiAnnouncement } from '@/models/Announcement.js';
import { Endpoint } from '@/server/api/endpoint-base.js';
-import { QueryService } from '@/core/QueryService.js';
import { DI } from '@/di-symbols.js';
import { IdService } from '@/core/IdService.js';
import { AvatarDecorationService } from '@/core/AvatarDecorationService.js';
diff --git a/packages/backend/src/server/api/endpoints/admin/delete-account.ts b/packages/backend/src/server/api/endpoints/admin/delete-account.ts
index b6f0f22d60..9065a71f6a 100644
--- a/packages/backend/src/server/api/endpoints/admin/delete-account.ts
+++ b/packages/backend/src/server/api/endpoints/admin/delete-account.ts
@@ -33,13 +33,13 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
private deleteAccountService: DeleteAccountService,
) {
- super(meta, paramDef, async (ps) => {
+ super(meta, paramDef, async (ps, me) => {
const user = await this.usersRepository.findOneByOrFail({ id: ps.userId });
if (user.isDeleted) {
return;
}
- await this.deleteAccountService.deleteAccount(user);
+ await this.deleteAccountService.deleteAccount(user, me);
});
}
}
diff --git a/packages/backend/src/server/api/endpoints/ap/show.ts b/packages/backend/src/server/api/endpoints/ap/show.ts
index 4232bc6e39..616a77e337 100644
--- a/packages/backend/src/server/api/endpoints/ap/show.ts
+++ b/packages/backend/src/server/api/endpoints/ap/show.ts
@@ -137,6 +137,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
if (local != null) return local;
}
+ // åŒä¸€ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®æƒ…報をå†åº¦å‡¦ç†ã™ã‚‹ã®ã§ã€ä½¿ç”¨æ¸ˆã¿ã®resolverã‚’å†åˆ©ç”¨ã—ã¦ã¯ã„ã‘ãªã„
return await this.mergePack(
me,
isActor(object) ? await this.apPersonService.createPerson(getApId(object)) : null,
diff --git a/packages/backend/src/server/api/endpoints/i/update.ts b/packages/backend/src/server/api/endpoints/i/update.ts
index a504441df3..3148bae827 100644
--- a/packages/backend/src/server/api/endpoints/i/update.ts
+++ b/packages/backend/src/server/api/endpoints/i/update.ts
@@ -195,6 +195,9 @@ export const paramDef = {
noCrawle: { type: 'boolean' },
preventAiLearning: { type: 'boolean' },
noindex: { type: 'boolean' },
+ requireSigninToViewContents: { type: 'boolean' },
+ makeNotesFollowersOnlyBefore: { type: 'integer', nullable: true },
+ makeNotesHiddenBefore: { type: 'integer', nullable: true },
isBot: { type: 'boolean' },
isCat: { type: 'boolean' },
speakAsCat: { type: 'boolean' },
@@ -353,6 +356,9 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
if (typeof ps.carefulBot === 'boolean') profileUpdates.carefulBot = ps.carefulBot;
if (typeof ps.autoAcceptFollowed === 'boolean') profileUpdates.autoAcceptFollowed = ps.autoAcceptFollowed;
if (typeof ps.noCrawle === 'boolean') profileUpdates.noCrawle = ps.noCrawle;
+ if (typeof ps.requireSigninToViewContents === 'boolean') updates.requireSigninToViewContents = ps.requireSigninToViewContents;
+ if ((typeof ps.makeNotesFollowersOnlyBefore === 'number') || (ps.makeNotesFollowersOnlyBefore === null)) updates.makeNotesFollowersOnlyBefore = ps.makeNotesFollowersOnlyBefore;
+ if ((typeof ps.makeNotesHiddenBefore === 'number') || (ps.makeNotesHiddenBefore === null)) updates.makeNotesHiddenBefore = ps.makeNotesHiddenBefore;
if (typeof ps.isCat === 'boolean') updates.isCat = ps.isCat;
if (typeof ps.speakAsCat === 'boolean') updates.speakAsCat = ps.speakAsCat;
if (typeof ps.injectFeaturedNote === 'boolean') profileUpdates.injectFeaturedNote = ps.injectFeaturedNote;
@@ -495,6 +501,7 @@ 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;
+ const newFollowedMessage = profileUpdates.followedMessage === undefined ? profile.followedMessage : profileUpdates.followedMessage;
if (newName != null) {
let hasProhibitedWords = false;
@@ -524,6 +531,11 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
]);
}
+ if (newFollowedMessage != null) {
+ const tokens = mfm.parse(newFollowedMessage);
+ emojis = emojis.concat(extractCustomEmojisFromMfm(tokens));
+ }
+
updates.emojis = emojis;
updates.tags = tags;
diff --git a/packages/backend/src/server/api/endpoints/notes/show.ts b/packages/backend/src/server/api/endpoints/notes/show.ts
index f82ba5473d..c189a708f2 100644
--- a/packages/backend/src/server/api/endpoints/notes/show.ts
+++ b/packages/backend/src/server/api/endpoints/notes/show.ts
@@ -8,7 +8,6 @@ import { Endpoint } from '@/server/api/endpoint-base.js';
import { NoteEntityService } from '@/core/entities/NoteEntityService.js';
import { DI } from '@/di-symbols.js';
import type { NotesRepository } from '@/models/_.js';
-import { QueryService } from '@/core/QueryService.js';
import { ApiError } from '../../error.js';
export const meta = {
@@ -28,6 +27,12 @@ export const meta = {
code: 'NO_SUCH_NOTE',
id: '24fcbfc6-2e37-42b6-8388-c29b3861a08d',
},
+
+ signinRequired: {
+ message: 'Signin required.',
+ code: 'SIGNIN_REQUIRED',
+ id: '8e75455b-738c-471d-9f80-62693f33372e',
+ },
},
} as const;
@@ -44,25 +49,29 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
constructor(
@Inject(DI.notesRepository)
private notesRepository: NotesRepository,
-
private noteEntityService: NoteEntityService,
private queryService: QueryService,
) {
super(meta, paramDef, async (ps, me) => {
const query = await this.notesRepository.createQueryBuilder('note')
- .where('note.id = :noteId', { noteId: ps.noteId });
+ .where('note.id = :noteId', { noteId: ps.noteId })
+ .innerJoinAndSelect('user');
this.queryService.generateVisibilityQuery(query, me);
if (me) {
this.queryService.generateBlockedUserQuery(query, me);
}
-
+
const note = await query.getOne();
if (note === null) {
throw new ApiError(meta.errors.noSuchNote);
}
+ if (note.user!.requireSigninToViewContents && me == null) {
+ throw new ApiError(meta.errors.signinRequired);
+ }
+
return await this.noteEntityService.pack(note, me, {
detail: true,
});
diff --git a/packages/backend/src/server/api/endpoints/users/notes.ts b/packages/backend/src/server/api/endpoints/users/notes.ts
index 263d062961..2d81e922dc 100644
--- a/packages/backend/src/server/api/endpoints/users/notes.ts
+++ b/packages/backend/src/server/api/endpoints/users/notes.ts
@@ -43,6 +43,12 @@ export const meta = {
code: 'BOTH_WITH_REPLIES_AND_WITH_FILES',
id: '91c8cb9f-36ed-46e7-9ca2-7df96ed6e222',
},
+
+ signinRequired: {
+ message: 'Signin required.',
+ code: 'SIGNIN_REQUIRED',
+ id: 'd1588a9e-4b4d-4c07-807f-16f1486577a2',
+ },
},
} as const;
diff --git a/packages/backend/src/server/web/ClientServerService.ts b/packages/backend/src/server/web/ClientServerService.ts
index c14f6c9123..a2cb50ee9f 100644
--- a/packages/backend/src/server/web/ClientServerService.ts
+++ b/packages/backend/src/server/web/ClientServerService.ts
@@ -30,6 +30,7 @@ import type {
EndedPollNotificationQueue,
InboxQueue,
ObjectStorageQueue,
+ RelationshipQueue,
SystemQueue,
UserWebhookDeliverQueue,
SystemWebhookDeliverQueue,
@@ -41,13 +42,26 @@ import { MetaEntityService } from '@/core/entities/MetaEntityService.js';
import { GalleryPostEntityService } from '@/core/entities/GalleryPostEntityService.js';
import { ClipEntityService } from '@/core/entities/ClipEntityService.js';
import { ChannelEntityService } from '@/core/entities/ChannelEntityService.js';
-import type { ChannelsRepository, ClipsRepository, FlashsRepository, GalleryPostsRepository, MiMeta, NotesRepository, PagesRepository, ReversiGamesRepository, UserProfilesRepository, UsersRepository } from '@/models/_.js';
+import type {
+ AnnouncementsRepository,
+ ChannelsRepository,
+ ClipsRepository,
+ FlashsRepository,
+ GalleryPostsRepository,
+ MiMeta,
+ NotesRepository,
+ PagesRepository,
+ ReversiGamesRepository,
+ UserProfilesRepository,
+ UsersRepository,
+} from '@/models/_.js';
import type Logger from '@/logger.js';
import { handleRequestRedirectToOmitSearch } from '@/misc/fastify-hook-handlers.js';
import { bindThis } from '@/decorators.js';
import { FlashEntityService } from '@/core/entities/FlashEntityService.js';
import { RoleService } from '@/core/RoleService.js';
import { ReversiGameEntityService } from '@/core/entities/ReversiGameEntityService.js';
+import { AnnouncementEntityService } from '@/core/entities/AnnouncementEntityService.js';
import { FeedService } from './FeedService.js';
import { UrlPreviewService } from './UrlPreviewService.js';
import { ClientLoggerService } from './ClientLoggerService.js';
@@ -102,6 +116,9 @@ export class ClientServerService {
@Inject(DI.reversiGamesRepository)
private reversiGamesRepository: ReversiGamesRepository,
+ @Inject(DI.announcementsRepository)
+ private announcementsRepository: AnnouncementsRepository,
+
private flashEntityService: FlashEntityService,
private userEntityService: UserEntityService,
private noteEntityService: NoteEntityService,
@@ -111,6 +128,7 @@ export class ClientServerService {
private clipEntityService: ClipEntityService,
private channelEntityService: ChannelEntityService,
private reversiGameEntityService: ReversiGameEntityService,
+ private announcementEntityService: AnnouncementEntityService,
private urlPreviewService: UrlPreviewService,
private feedService: FeedService,
private roleService: RoleService,
@@ -121,6 +139,7 @@ export class ClientServerService {
@Inject('queue:deliver') public deliverQueue: DeliverQueue,
@Inject('queue:inbox') public inboxQueue: InboxQueue,
@Inject('queue:db') public dbQueue: DbQueue,
+ @Inject('queue:relationship') public relationshipQueue: RelationshipQueue,
@Inject('queue:objectStorage') public objectStorageQueue: ObjectStorageQueue,
@Inject('queue:userWebhookDeliver') public userWebhookDeliverQueue: UserWebhookDeliverQueue,
@Inject('queue:systemWebhookDeliver') public systemWebhookDeliverQueue: SystemWebhookDeliverQueue,
@@ -251,6 +270,7 @@ export class ClientServerService {
this.deliverQueue,
this.inboxQueue,
this.dbQueue,
+ this.relationshipQueue,
this.objectStorageQueue,
this.userWebhookDeliverQueue,
this.systemWebhookDeliverQueue,
@@ -557,7 +577,7 @@ export class ClientServerService {
}
});
- //#region SSR (for crawlers)
+ //#region SSR
// User
fastify.get<{ Params: { user: string; sub?: string; } }>('/@:user/:sub?', async (request, reply) => {
const { username, host } = Acct.parse(request.params.user);
@@ -582,11 +602,17 @@ export class ClientServerService {
reply.header('X-Robots-Tag', 'noimageai');
reply.header('X-Robots-Tag', 'noai');
}
+
+ const _user = await this.userEntityService.pack(user);
+
return await reply.view('user', {
user, profile, me,
avatarUrl: user.avatarUrl ?? this.userEntityService.getIdenticonUrl(user),
sub: request.params.sub,
...await this.generateCommonPugData(this.meta),
+ clientCtx: htmlSafeJsonStringify({
+ user: _user,
+ }),
});
} else {
// リモートユーザーãªã®ã§
@@ -616,12 +642,15 @@ export class ClientServerService {
fastify.get<{ Params: { note: string; } }>('/notes/:note', async (request, reply) => {
vary(reply.raw, 'Accept');
- const note = await this.notesRepository.findOneBy({
- id: request.params.note,
- visibility: In(['public', 'home']),
+ const note = await this.notesRepository.findOne({
+ where: {
+ id: request.params.note,
+ visibility: In(['public', 'home']),
+ },
+ relations: ['user'],
});
- if (note) {
+ if (note && !note.user!.requireSigninToViewContents) {
const _note = await this.noteEntityService.pack(note);
const profile = await this.userProfilesRepository.findOneByOrFail({ userId: note.userId });
reply.header('Cache-Control', 'public, max-age=15');
@@ -636,6 +665,9 @@ export class ClientServerService {
// TODO: Let locale changeable by instance setting
summary: getNoteSummary(_note),
...await this.generateCommonPugData(this.meta),
+ clientCtx: htmlSafeJsonStringify({
+ note: _note,
+ }),
});
} else {
return await renderBase(reply);
@@ -724,6 +756,9 @@ export class ClientServerService {
profile,
avatarUrl: _clip.user.avatarUrl,
...await this.generateCommonPugData(this.meta),
+ clientCtx: htmlSafeJsonStringify({
+ clip: _clip,
+ }),
});
} else {
return await renderBase(reply);
@@ -788,6 +823,24 @@ export class ClientServerService {
return await renderBase(reply);
}
});
+
+ // 個別ãŠçŸ¥ã‚‰ã›ãƒšãƒ¼ã‚¸
+ fastify.get<{ Params: { announcementId: string; } }>('/announcements/:announcementId', async (request, reply) => {
+ const announcement = await this.announcementsRepository.findOneBy({
+ id: request.params.announcementId,
+ });
+
+ if (announcement) {
+ const _announcement = await this.announcementEntityService.pack(announcement);
+ reply.header('Cache-Control', 'public, max-age=3600');
+ return await reply.view('announcement', {
+ announcement: _announcement,
+ ...await this.generateCommonPugData(this.meta),
+ });
+ } else {
+ return await renderBase(reply);
+ }
+ });
//#endregion
//#region noindex pages
diff --git a/packages/backend/src/server/web/views/announcement.pug b/packages/backend/src/server/web/views/announcement.pug
new file mode 100644
index 0000000000..7a4052e8a4
--- /dev/null
+++ b/packages/backend/src/server/web/views/announcement.pug
@@ -0,0 +1,21 @@
+extends ./base
+
+block vars
+ - const title = announcement.title;
+ - const description = announcement.text.length > 100 ? announcement.text.slice(0, 100) + '…' : announcement.text;
+ - const url = `${config.url}/announcements/${announcement.id}`;
+
+block title
+ = `${title} | ${instanceName}`
+
+block desc
+ meta(name='description' content=description)
+
+block og
+ meta(property='og:type' content='article')
+ meta(property='og:title' content= title)
+ meta(property='og:description' content= description)
+ meta(property='og:url' content= url)
+ if announcement.imageUrl
+ meta(property='og:image' content=announcement.imageUrl)
+ meta(property='twitter:card' content='summary_large_image')
diff --git a/packages/backend/src/server/web/views/base.pug b/packages/backend/src/server/web/views/base.pug
index 84c4832802..f57dbbbf4e 100644
--- a/packages/backend/src/server/web/views/base.pug
+++ b/packages/backend/src/server/web/views/base.pug
@@ -2,6 +2,7 @@ block vars
block loadClientEntry
- const entry = config.frontendEntry;
+ - const baseUrl = config.url;
doctype html
@@ -36,7 +37,7 @@ html
link(rel='icon' href= icon || '/favicon.ico')
link(rel='apple-touch-icon' href= appleTouchIcon || '/apple-touch-icon.png')
link(rel='manifest' href='/manifest.json')
- link(rel='search' type='application/opensearchdescription+xml' title=(title || "Sharkey") href=`${url}/opensearch.xml`)
+ link(rel='search' type='application/opensearchdescription+xml' title=(title || "Sharkey") href=`${baseUrl}/opensearch.xml`)
link(rel='prefetch' href=serverErrorImageUrl)
link(rel='prefetch' href=infoImageUrl)
link(rel='prefetch' href=notFoundImageUrl)
@@ -79,6 +80,9 @@ html
script(type='application/json' id='misskey_meta' data-generated-at=now)
!= metaJson
+ script(type='application/json' id='misskey_clientCtx' data-generated-at=now)
+ != clientCtx
+
script
include ../boot.js
diff --git a/packages/backend/test-federation/.config/example.default.yml b/packages/backend/test-federation/.config/example.default.yml
index ff1760a5a6..28d51ac86e 100644
--- a/packages/backend/test-federation/.config/example.default.yml
+++ b/packages/backend/test-federation/.config/example.default.yml
@@ -19,7 +19,6 @@ proxyBypassHosts:
- challenges.cloudflare.com
proxyRemoteFiles: true
signToActivityPubGet: true
-allowedPrivateNetworks: [
- '127.0.0.1/32',
- '172.20.0.0/16'
-]
+allowedPrivateNetworks:
+ - 127.0.0.1/32
+ - 172.20.0.0/16
diff --git a/packages/backend/test-federation/test/utils.ts b/packages/backend/test-federation/test/utils.ts
index acb1341965..7b2d023685 100644
--- a/packages/backend/test-federation/test/utils.ts
+++ b/packages/backend/test-federation/test/utils.ts
@@ -232,7 +232,6 @@ export async function isFired<C extends keyof Misskey.Channels, T extends keyof
params?: Misskey.Channels[C]['params'],
): Promise<boolean> {
return new Promise<boolean>(async (resolve, reject) => {
- // @ts-expect-error TODO: why?
const stream = new Misskey.Stream(`wss://${host}`, { token: user.i }, { WebSocket });
const connection = stream.useChannel(channel, params);
connection.on(type as any, ((msg: any) => {
@@ -266,7 +265,6 @@ export async function isNoteUpdatedEventFired(
cond: (msg: Parameters<Misskey.StreamEvents['noteUpdated']>[0]) => boolean,
): Promise<boolean> {
return new Promise<boolean>(async (resolve, reject) => {
- // @ts-expect-error TODO: why?
const stream = new Misskey.Stream(`wss://${host}`, { token: user.i }, { WebSocket });
stream.send('s', { id: noteId });
stream.on('noteUpdated', msg => {
diff --git a/packages/backend/test/e2e/fetch-resource.ts b/packages/backend/test/e2e/fetch-resource.ts
index c8f5debbc9..0322ac5546 100644
--- a/packages/backend/test/e2e/fetch-resource.ts
+++ b/packages/backend/test/e2e/fetch-resource.ts
@@ -230,6 +230,7 @@ describe('Webリソース', () => {
path: path('xxxxxxxxxx'),
type: HTML,
}));
+ test.todo('HTMLã¨ã—ã¦GETã§ãる。(リモートユーザーã§ã‚‚リダイレクトã›ãš)');
});
describe.each([
@@ -249,6 +250,7 @@ describe('Webリソース', () => {
path: path('xxxxxxxxxx'),
accept,
}));
+ test.todo('ã¯ã‚ªãƒªã‚¸ãƒŠãƒ«ã«ãƒªãƒ€ã‚¤ãƒ¬ã‚¯ãƒˆã•れる。(リモートユーザー)');
});
});
diff --git a/packages/backend/test/unit/WebhookTestService.ts b/packages/backend/test/unit/WebhookTestService.ts
index 5e63b86f8f..be84ae9b84 100644
--- a/packages/backend/test/unit/WebhookTestService.ts
+++ b/packages/backend/test/unit/WebhookTestService.ts
@@ -7,7 +7,7 @@
import { Test, TestingModule } from '@nestjs/testing';
import { beforeAll, describe, jest } from '@jest/globals';
import { WebhookTestService } from '@/core/WebhookTestService.js';
-import { UserWebhookService } from '@/core/UserWebhookService.js';
+import { UserWebhookPayload, UserWebhookService } from '@/core/UserWebhookService.js';
import { SystemWebhookService } from '@/core/SystemWebhookService.js';
import { GlobalModule } from '@/GlobalModule.js';
import { MiSystemWebhook, MiUser, MiWebhook, UserProfilesRepository, UsersRepository } from '@/models/_.js';
@@ -122,7 +122,7 @@ describe('WebhookTestService', () => {
const calls = queueService.userWebhookDeliver.mock.calls[0];
expect((calls[0] as any).id).toBe('dummy-webhook');
expect(calls[1]).toBe('note');
- expect((calls[2] as any).id).toBe('dummy-note-1');
+ expect((calls[2] as UserWebhookPayload<'note'>).note.id).toBe('dummy-note-1');
});
test('reply', async () => {
@@ -131,7 +131,7 @@ describe('WebhookTestService', () => {
const calls = queueService.userWebhookDeliver.mock.calls[0];
expect((calls[0] as any).id).toBe('dummy-webhook');
expect(calls[1]).toBe('reply');
- expect((calls[2] as any).id).toBe('dummy-reply-1');
+ expect((calls[2] as UserWebhookPayload<'reply'>).note.id).toBe('dummy-reply-1');
});
test('renote', async () => {
@@ -140,7 +140,7 @@ describe('WebhookTestService', () => {
const calls = queueService.userWebhookDeliver.mock.calls[0];
expect((calls[0] as any).id).toBe('dummy-webhook');
expect(calls[1]).toBe('renote');
- expect((calls[2] as any).id).toBe('dummy-renote-1');
+ expect((calls[2] as UserWebhookPayload<'renote'>).note.id).toBe('dummy-renote-1');
});
test('mention', async () => {
@@ -149,7 +149,7 @@ describe('WebhookTestService', () => {
const calls = queueService.userWebhookDeliver.mock.calls[0];
expect((calls[0] as any).id).toBe('dummy-webhook');
expect(calls[1]).toBe('mention');
- expect((calls[2] as any).id).toBe('dummy-mention-1');
+ expect((calls[2] as UserWebhookPayload<'mention'>).note.id).toBe('dummy-mention-1');
});
test('follow', async () => {
@@ -158,7 +158,7 @@ describe('WebhookTestService', () => {
const calls = queueService.userWebhookDeliver.mock.calls[0];
expect((calls[0] as any).id).toBe('dummy-webhook');
expect(calls[1]).toBe('follow');
- expect((calls[2] as any).id).toBe('dummy-user-1');
+ expect((calls[2] as UserWebhookPayload<'follow'>).user.id).toBe('dummy-user-1');
});
test('followed', async () => {
@@ -167,7 +167,7 @@ describe('WebhookTestService', () => {
const calls = queueService.userWebhookDeliver.mock.calls[0];
expect((calls[0] as any).id).toBe('dummy-webhook');
expect(calls[1]).toBe('followed');
- expect((calls[2] as any).id).toBe('dummy-user-2');
+ expect((calls[2] as UserWebhookPayload<'followed'>).user.id).toBe('dummy-user-2');
});
test('unfollow', async () => {
@@ -176,7 +176,7 @@ describe('WebhookTestService', () => {
const calls = queueService.userWebhookDeliver.mock.calls[0];
expect((calls[0] as any).id).toBe('dummy-webhook');
expect(calls[1]).toBe('unfollow');
- expect((calls[2] as any).id).toBe('dummy-user-3');
+ expect((calls[2] as UserWebhookPayload<'unfollow'>).user.id).toBe('dummy-user-3');
});
describe('NoSuchWebhookError', () => {
diff --git a/packages/frontend-embed/package.json b/packages/frontend-embed/package.json
index e91221eba7..528faf0a85 100644
--- a/packages/frontend-embed/package.json
+++ b/packages/frontend-embed/package.json
@@ -15,58 +15,58 @@
"@phosphor-icons/web": "^2.0.3",
"@rollup/plugin-json": "6.1.0",
"@rollup/plugin-replace": "5.0.7",
- "@rollup/pluginutils": "5.1.2",
+ "@rollup/pluginutils": "5.1.3",
"@transfem-org/sfm-js": "0.24.5",
"@twemoji/parser": "15.1.1",
- "@vitejs/plugin-vue": "5.1.4",
- "@vue/compiler-sfc": "3.5.11",
+ "@vitejs/plugin-vue": "5.2.0",
+ "@vue/compiler-sfc": "3.5.12",
"astring": "1.9.0",
"buraha": "0.0.1",
"estree-walker": "3.0.3",
"misskey-js": "workspace:*",
"frontend-shared": "workspace:*",
"punycode": "2.3.1",
- "rollup": "4.22.5",
+ "rollup": "4.26.0",
"sass": "1.79.4",
- "shiki": "1.21.0",
+ "shiki": "1.22.2",
"tinycolor2": "1.6.0",
"tsc-alias": "1.8.10",
"tsconfig-paths": "4.2.0",
- "typescript": "5.6.2",
+ "typescript": "5.6.3",
"uuid": "10.0.0",
"json5": "2.2.3",
- "vite": "5.4.8",
- "vue": "3.5.11"
+ "vite": "5.4.11",
+ "vue": "3.5.12"
},
"devDependencies": {
"@misskey-dev/summaly": "5.1.0",
"@testing-library/vue": "8.1.0",
"@types/estree": "1.0.6",
"@types/micromatch": "4.0.9",
- "@types/node": "20.14.12",
+ "@types/node": "22.9.0",
"@types/punycode": "2.1.4",
"@types/tinycolor2": "1.4.6",
"@types/uuid": "10.0.0",
- "@types/ws": "8.5.12",
+ "@types/ws": "8.5.13",
"@typescript-eslint/eslint-plugin": "7.17.0",
"@typescript-eslint/parser": "7.17.0",
"@vitest/coverage-v8": "1.6.0",
- "@vue/runtime-core": "3.5.11",
- "acorn": "8.12.1",
+ "@vue/runtime-core": "3.5.12",
+ "acorn": "8.14.0",
"cross-env": "7.0.3",
"eslint-plugin-import": "2.31.0",
- "eslint-plugin-vue": "9.28.0",
+ "eslint-plugin-vue": "9.31.0",
"fast-glob": "3.3.2",
"happy-dom": "10.0.3",
"intersection-observer": "0.12.2",
"micromatch": "4.0.8",
- "msw": "2.3.4",
+ "msw": "2.6.4",
"nodemon": "3.1.7",
"prettier": "3.3.3",
"start-server-and-test": "2.0.8",
"vite-plugin-turbosnap": "1.0.3",
- "vue-component-type-helpers": "2.1.6",
+ "vue-component-type-helpers": "2.1.10",
"vue-eslint-parser": "9.4.3",
- "vue-tsc": "2.1.6"
+ "vue-tsc": "2.1.10"
}
}
diff --git a/packages/frontend-embed/src/boot.ts b/packages/frontend-embed/src/boot.ts
index 7a16efe4ab..71a3156311 100644
--- a/packages/frontend-embed/src/boot.ts
+++ b/packages/frontend-embed/src/boot.ts
@@ -19,6 +19,7 @@ import { url } from '@@/js/config.js';
import { parseEmbedParams } from '@@/js/embed-page.js';
import { postMessageToParentWindow, setIframeId } from '@/post-message.js';
import { serverContext } from '@/server-context.js';
+import { i18n } from '@/i18n.js';
import type { Theme } from '@/theme.js';
@@ -125,6 +126,27 @@ window.onunhandledrejection = null;
removeSplash();
+//#region Self-XSS 対策メッセージ
+console.log(
+ `%c${i18n.ts._selfXssPrevention.warning}`,
+ 'color: #f00; background-color: #ff0; font-size: 36px; padding: 4px;',
+);
+console.log(
+ `%c${i18n.ts._selfXssPrevention.title}`,
+ 'color: #f00; font-weight: 900; font-family: "Hiragino Sans W9", "Hiragino Kaku Gothic ProN", sans-serif; font-size: 24px;',
+);
+console.log(
+ `%c${i18n.ts._selfXssPrevention.description1}`,
+ 'font-size: 16px; font-weight: 700;',
+);
+console.log(
+ `%c${i18n.ts._selfXssPrevention.description2}`,
+ 'font-size: 16px;',
+ 'font-size: 20px; font-weight: 700; color: #f00;',
+);
+console.log(i18n.tsx._selfXssPrevention.description3({ link: 'https://misskey-hub.net/docs/for-users/resources/self-xss/' }));
+//#endregion
+
function removeSplash() {
const splash = document.getElementById('splash');
if (splash) {
diff --git a/packages/frontend-shared/package.json b/packages/frontend-shared/package.json
index 82fa62cb32..8bf25da161 100644
--- a/packages/frontend-shared/package.json
+++ b/packages/frontend-shared/package.json
@@ -21,12 +21,12 @@
"lint": "pnpm typecheck && pnpm eslint"
},
"devDependencies": {
- "@types/node": "20.14.12",
+ "@types/node": "22.9.0",
"@typescript-eslint/eslint-plugin": "7.17.0",
"@typescript-eslint/parser": "7.17.0",
- "esbuild": "0.23.0",
- "eslint-plugin-vue": "9.27.0",
- "typescript": "5.5.4",
+ "esbuild": "0.24.0",
+ "eslint-plugin-vue": "9.31.0",
+ "typescript": "5.6.3",
"vue-eslint-parser": "9.4.3"
},
"files": [
@@ -34,6 +34,6 @@
],
"dependencies": {
"misskey-js": "workspace:*",
- "vue": "3.4.37"
+ "vue": "3.5.12"
}
}
diff --git a/packages/frontend/package.json b/packages/frontend/package.json
index c60ae82b7a..587793e310 100644
--- a/packages/frontend/package.json
+++ b/packages/frontend/package.json
@@ -24,23 +24,23 @@
"@phosphor-icons/web": "^2.0.3",
"@rollup/plugin-json": "6.1.0",
"@rollup/plugin-replace": "5.0.7",
- "@rollup/pluginutils": "5.1.2",
+ "@rollup/pluginutils": "5.1.3",
"@transfem-org/sfm-js": "0.24.5",
"@syuilo/aiscript": "0.19.0",
"@twemoji/parser": "15.1.1",
- "@vitejs/plugin-vue": "5.1.4",
- "@vue/compiler-sfc": "3.5.11",
+ "@vitejs/plugin-vue": "5.2.0",
+ "@vue/compiler-sfc": "3.5.12",
"aiscript-vscode": "github:aiscript-dev/aiscript-vscode#v0.1.11",
"astring": "1.9.0",
"broadcast-channel": "7.0.0",
"buraha": "0.0.1",
"canvas-confetti": "1.9.3",
- "chart.js": "4.4.4",
+ "chart.js": "4.4.6",
"chartjs-adapter-date-fns": "3.0.0",
"chartjs-chart-matrix": "2.0.1",
"chartjs-plugin-gradient": "0.6.1",
"chartjs-plugin-zoom": "2.0.1",
- "chromatic": "11.11.0",
+ "chromatic": "11.18.1",
"compare-versions": "6.1.1",
"cropperjs": "2.0.0-rc.2",
"date-fns": "2.30.0",
@@ -58,10 +58,10 @@
"misskey-reversi": "workspace:*",
"photoswipe": "5.4.4",
"punycode": "2.3.1",
- "rollup": "4.22.5",
+ "rollup": "4.26.0",
"sanitize-html": "2.13.1",
"sass": "1.79.3",
- "shiki": "1.21.0",
+ "shiki": "1.22.2",
"strict-event-emitter-types": "2.0.0",
"textarea-caret": "3.1.0",
"three": "0.169.0",
@@ -69,75 +69,75 @@
"tinycolor2": "1.6.0",
"tsc-alias": "1.8.10",
"tsconfig-paths": "4.2.0",
- "typescript": "5.6.2",
+ "typescript": "5.6.3",
"uuid": "10.0.0",
"v-code-diff": "1.13.1",
- "vite": "5.4.8",
- "vue": "3.5.11",
+ "vite": "5.4.11",
+ "vue": "3.5.12",
"vuedraggable": "next"
},
"devDependencies": {
"@misskey-dev/summaly": "5.1.0",
- "@storybook/addon-actions": "8.3.4",
- "@storybook/addon-essentials": "8.3.4",
- "@storybook/addon-interactions": "8.3.4",
- "@storybook/addon-links": "8.3.4",
- "@storybook/addon-mdx-gfm": "8.3.4",
- "@storybook/addon-storysource": "8.3.4",
- "@storybook/blocks": "8.3.4",
- "@storybook/components": "8.3.4",
- "@storybook/core-events": "8.3.4",
- "@storybook/manager-api": "8.3.4",
- "@storybook/preview-api": "8.3.4",
- "@storybook/react": "8.3.4",
- "@storybook/react-vite": "8.3.4",
- "@storybook/test": "8.3.4",
- "@storybook/theming": "8.3.4",
- "@storybook/types": "8.3.4",
- "@storybook/vue3": "8.3.4",
- "@storybook/vue3-vite": "8.3.4",
+ "@storybook/addon-actions": "8.4.4",
+ "@storybook/addon-essentials": "8.4.4",
+ "@storybook/addon-interactions": "8.4.4",
+ "@storybook/addon-links": "8.4.4",
+ "@storybook/addon-mdx-gfm": "8.4.4",
+ "@storybook/addon-storysource": "8.4.4",
+ "@storybook/blocks": "8.4.4",
+ "@storybook/components": "8.4.4",
+ "@storybook/core-events": "8.4.4",
+ "@storybook/manager-api": "8.4.4",
+ "@storybook/preview-api": "8.4.4",
+ "@storybook/react": "8.4.4",
+ "@storybook/react-vite": "8.4.4",
+ "@storybook/test": "8.4.4",
+ "@storybook/theming": "8.4.4",
+ "@storybook/types": "8.4.4",
+ "@storybook/vue3": "8.4.4",
+ "@storybook/vue3-vite": "8.4.4",
"@testing-library/vue": "8.1.0",
"@types/canvas-confetti": "^1.6.4",
"@types/estree": "1.0.6",
"@types/katex": "^0.16.7",
"@types/matter-js": "0.19.7",
"@types/micromatch": "4.0.9",
- "@types/node": "20.14.12",
+ "@types/node": "22.9.0",
"@types/punycode": "2.1.4",
"@types/sanitize-html": "2.13.0",
"@types/seedrandom": "3.0.8",
"@types/throttle-debounce": "5.0.2",
"@types/tinycolor2": "1.4.6",
"@types/uuid": "10.0.0",
- "@types/ws": "8.5.12",
+ "@types/ws": "8.5.13",
"@typescript-eslint/eslint-plugin": "7.17.0",
"@typescript-eslint/parser": "7.17.0",
"@vitest/coverage-v8": "1.6.0",
- "@vue/runtime-core": "3.5.11",
- "acorn": "8.12.1",
+ "@vue/runtime-core": "3.5.12",
+ "acorn": "8.14.0",
"cross-env": "7.0.3",
- "cypress": "13.15.0",
+ "cypress": "13.15.2",
"eslint-plugin-import": "2.31.0",
- "eslint-plugin-vue": "9.28.0",
+ "eslint-plugin-vue": "9.31.0",
"fast-glob": "3.3.2",
"happy-dom": "10.0.3",
"intersection-observer": "0.12.2",
"micromatch": "4.0.8",
- "msw": "2.4.9",
- "msw-storybook-addon": "2.0.3",
+ "msw": "2.6.4",
+ "msw-storybook-addon": "2.0.4",
"nodemon": "3.1.7",
"prettier": "3.3.3",
"react": "18.3.1",
"react-dom": "18.3.1",
"seedrandom": "3.0.5",
"start-server-and-test": "2.0.8",
- "storybook": "8.3.4",
+ "storybook": "8.4.4",
"storybook-addon-misskey-theme": "github:misskey-dev/storybook-addon-misskey-theme",
"vite-plugin-turbosnap": "1.0.3",
"vitest": "1.6.0",
"vitest-fetch-mock": "0.2.2",
- "vue-component-type-helpers": "2.1.6",
+ "vue-component-type-helpers": "2.1.10",
"vue-eslint-parser": "9.4.3",
- "vue-tsc": "2.1.6"
+ "vue-tsc": "2.1.10"
}
}
diff --git a/packages/frontend/src/_boot_.ts b/packages/frontend/src/_boot_.ts
index 875353f8a4..5c39955c28 100644
--- a/packages/frontend/src/_boot_.ts
+++ b/packages/frontend/src/_boot_.ts
@@ -10,7 +10,7 @@ import '@/style.scss';
import { mainBoot } from '@/boot/main-boot.js';
import { subBoot } from '@/boot/sub-boot.js';
-const subBootPaths = ['/share', '/auth', '/miauth', '/signup-complete'];
+const subBootPaths = ['/share', '/auth', '/miauth', '/oauth', '/signup-complete'];
if (subBootPaths.some(i => location.pathname === i || location.pathname.startsWith(i + '/'))) {
subBoot();
diff --git a/packages/frontend/src/account.ts b/packages/frontend/src/account.ts
index 995578dece..f65579443c 100644
--- a/packages/frontend/src/account.ts
+++ b/packages/frontend/src/account.ts
@@ -5,12 +5,12 @@
import { defineAsyncComponent, reactive, ref } from 'vue';
import * as Misskey from 'misskey-js';
+import { apiUrl } from '@@/js/config.js';
+import type { MenuItem, MenuButton } from '@/types/menu.js';
import { showSuspendedDialog } from '@/scripts/show-suspended-dialog.js';
import { i18n } from '@/i18n.js';
import { miLocalStorage } from '@/local-storage.js';
-import type { MenuItem, MenuButton } from '@/types/menu.js';
import { del, get, set } from '@/scripts/idb-proxy.js';
-import { apiUrl } from '@@/js/config.js';
import { waiting, popup, popupMenu, success, alert } from '@/os.js';
import { misskeyApi } from '@/scripts/misskey-api.js';
import { unisonReload, reloadChannel } from '@/scripts/unison-reload.js';
@@ -166,7 +166,18 @@ function fetchAccount(token: string, id?: string, forceShowDialog?: boolean): Pr
});
}
-export function updateAccount(accountData: Partial<Account>) {
+export function updateAccount(accountData: Account) {
+ if (!$i) return;
+ for (const key of Object.keys($i)) {
+ delete $i[key];
+ }
+ for (const [key, value] of Object.entries(accountData)) {
+ $i[key] = value;
+ }
+ miLocalStorage.setItem('account', JSON.stringify($i));
+}
+
+export function updateAccountPartial(accountData: Partial<Account>) {
if (!$i) return;
for (const [key, value] of Object.entries(accountData)) {
$i[key] = value;
@@ -225,26 +236,6 @@ export async function openAccountMenu(opts: {
}, ev: MouseEvent) {
if (!$i) return;
- function showSigninDialog() {
- const { dispose } = popup(defineAsyncComponent(() => import('@/components/MkSigninDialog.vue')), {}, {
- done: (res: Misskey.entities.SigninFlowResponse & { finished: true }) => {
- addAccount(res.id, res.i);
- success();
- },
- closed: () => dispose(),
- });
- }
-
- function createAccount() {
- const { dispose } = popup(defineAsyncComponent(() => import('@/components/MkSignupDialog.vue')), {}, {
- done: (res: Misskey.entities.SignupResponse) => {
- addAccount(res.id, res.token);
- switchAccountWithToken(res.token);
- },
- closed: () => dispose(),
- });
- }
-
async function switchAccount(account: Misskey.entities.UserDetailed) {
const storedAccounts = await getAccounts();
const found = storedAccounts.find(x => x.id === account.id);
@@ -313,10 +304,22 @@ export async function openAccountMenu(opts: {
text: i18n.ts.addAccount,
children: [{
text: i18n.ts.existingAccount,
- action: () => { showSigninDialog(); },
+ action: () => {
+ getAccountWithSigninDialog().then(res => {
+ if (res != null) {
+ success();
+ }
+ });
+ },
}, {
text: i18n.ts.createAccount,
- action: () => { createAccount(); },
+ action: () => {
+ getAccountWithSignupDialog().then(res => {
+ if (res != null) {
+ switchAccountWithToken(res.token);
+ }
+ });
+ },
}],
}, {
type: 'link',
@@ -342,6 +345,40 @@ export async function openAccountMenu(opts: {
});
}
+export function getAccountWithSigninDialog(): Promise<{ id: string, token: string } | null> {
+ return new Promise((resolve) => {
+ const { dispose } = popup(defineAsyncComponent(() => import('@/components/MkSigninDialog.vue')), {}, {
+ done: async (res: Misskey.entities.SigninFlowResponse & { finished: true }) => {
+ await addAccount(res.id, res.i);
+ resolve({ id: res.id, token: res.i });
+ },
+ cancelled: () => {
+ resolve(null);
+ },
+ closed: () => {
+ dispose();
+ },
+ });
+ });
+}
+
+export function getAccountWithSignupDialog(): Promise<{ id: string, token: string } | null> {
+ return new Promise((resolve) => {
+ const { dispose } = popup(defineAsyncComponent(() => import('@/components/MkSignupDialog.vue')), {}, {
+ done: async (res: Misskey.entities.SignupResponse) => {
+ await addAccount(res.id, res.token);
+ resolve({ id: res.id, token: res.token });
+ },
+ cancelled: () => {
+ resolve(null);
+ },
+ closed: () => {
+ dispose();
+ },
+ });
+ });
+}
+
if (_DEV_) {
(window as any).$i = $i;
}
diff --git a/packages/frontend/src/boot/common.ts b/packages/frontend/src/boot/common.ts
index 6102f88ae5..d43a2b0799 100644
--- a/packages/frontend/src/boot/common.ts
+++ b/packages/frontend/src/boot/common.ts
@@ -11,11 +11,11 @@ import directives from '@/directives/index.js';
import components from '@/components/index.js';
import { applyTheme } from '@/scripts/theme.js';
import { isDeviceDarkmode } from '@/scripts/is-device-darkmode.js';
-import { updateI18n } from '@/i18n.js';
+import { updateI18n, i18n } from '@/i18n.js';
import { $i, refreshAccount, login } from '@/account.js';
import { defaultStore, ColdDeviceStorage } from '@/store.js';
import { fetchInstance, instance } from '@/instance.js';
-import { deviceKind } from '@/scripts/device-kind.js';
+import { deviceKind, updateDeviceKind } from '@/scripts/device-kind.js';
import { reloadChannel } from '@/scripts/unison-reload.js';
import { getUrlWithoutLoginId } from '@/scripts/login-id.js';
import { getAccountFromId } from '@/scripts/get-account-from-id.js';
@@ -186,6 +186,10 @@ export async function common(createVue: () => App<Element>) {
}
});
+ watch(defaultStore.reactiveState.overridedDeviceKind, (kind) => {
+ updateDeviceKind(kind);
+ }, { immediate: true });
+
watch(defaultStore.reactiveState.useBlurEffectForModal, v => {
document.documentElement.style.setProperty('--MI-modalBgFilter', v ? 'blur(4px)' : 'none');
}, { immediate: true });
@@ -274,6 +278,27 @@ export async function common(createVue: () => App<Element>) {
removeSplash();
+ //#region Self-XSS 対策メッセージ
+ console.log(
+ `%c${i18n.ts._selfXssPrevention.warning}`,
+ 'color: #f00; background-color: #ff0; font-size: 36px; padding: 4px;',
+ );
+ console.log(
+ `%c${i18n.ts._selfXssPrevention.title}`,
+ 'color: #f00; font-weight: 900; font-family: "Hiragino Sans W9", "Hiragino Kaku Gothic ProN", sans-serif; font-size: 24px;',
+ );
+ console.log(
+ `%c${i18n.ts._selfXssPrevention.description1}`,
+ 'font-size: 16px; font-weight: 700;',
+ );
+ console.log(
+ `%c${i18n.ts._selfXssPrevention.description2}`,
+ 'font-size: 16px;',
+ 'font-size: 20px; font-weight: 700; color: #f00;',
+ );
+ console.log(i18n.tsx._selfXssPrevention.description3({ link: 'https://misskey-hub.net/docs/for-users/resources/self-xss/' }));
+ //#endregion
+
return {
isClientUpdated,
app,
diff --git a/packages/frontend/src/boot/main-boot.ts b/packages/frontend/src/boot/main-boot.ts
index 395d7d9ad1..eb8a4d30d2 100644
--- a/packages/frontend/src/boot/main-boot.ts
+++ b/packages/frontend/src/boot/main-boot.ts
@@ -4,14 +4,14 @@
*/
import { createApp, defineAsyncComponent, markRaw } from 'vue';
+import { ui } from '@@/js/config.js';
import { common } from './common.js';
import type * as Misskey from 'misskey-js';
-import { ui } from '@@/js/config.js';
import { i18n } from '@/i18n.js';
import { alert, confirm, popup, post, toast } from '@/os.js';
import { useStream } from '@/stream.js';
import * as sound from '@/scripts/sound.js';
-import { $i, signout, updateAccount } from '@/account.js';
+import { $i, signout, updateAccountPartial } from '@/account.js';
import { instance } from '@/instance.js';
import { ColdDeviceStorage, defaultStore } from '@/store.js';
import { reactionPicker } from '@/scripts/reaction-picker.js';
@@ -230,11 +230,41 @@ export async function mainBoot() {
}
if (!claimedAchievements.includes('justPlainLucky')) {
- window.setInterval(() => {
+ let justPlainLuckyTimer: number | null = null;
+ let lastVisibilityChangedAt = Date.now();
+
+ function claimPlainLucky() {
+ if (document.visibilityState !== 'visible') {
+ if (justPlainLuckyTimer != null) window.clearTimeout(justPlainLuckyTimer);
+ return;
+ }
+
if (Math.floor(Math.random() * 20000) === 0) {
claimAchievement('justPlainLucky');
+ } else {
+ justPlainLuckyTimer = window.setTimeout(claimPlainLucky, 1000 * 10);
}
- }, 1000 * 10);
+ }
+
+ window.addEventListener('visibilitychange', () => {
+ const now = Date.now();
+
+ if (document.visibilityState === 'visible') {
+ // タブを高速ã§åˆ‡ã‚Šæ›¿ãˆãŸã‚‰å–得処ç†ãŒä½•度も走るã®ã‚’防ã
+ if ((now - lastVisibilityChangedAt) < 1000 * 10) {
+ justPlainLuckyTimer = window.setTimeout(claimPlainLucky, 1000 * 10);
+ } else {
+ claimPlainLucky();
+ }
+ } else if (justPlainLuckyTimer != null) {
+ window.clearTimeout(justPlainLuckyTimer);
+ justPlainLuckyTimer = null;
+ }
+
+ lastVisibilityChangedAt = now;
+ }, { passive: true });
+
+ claimPlainLucky();
}
if (!claimedAchievements.includes('client30min')) {
@@ -298,13 +328,13 @@ export async function mainBoot() {
// è‡ªåˆ†ã®æƒ…å ±ãŒæ›´æ–°ã•れãŸã¨ã
main.on('meUpdated', i => {
- updateAccount(i);
+ updateAccountPartial(i);
});
main.on('readAllNotifications', () => {
setFavIconDot(false);
- updateAccount({
+ updateAccountPartial({
hasUnreadNotification: false,
unreadNotificationsCount: 0,
});
@@ -314,39 +344,39 @@ export async function mainBoot() {
attemptShowNotificationDot();
const unreadNotificationsCount = ($i?.unreadNotificationsCount ?? 0) + 1;
- updateAccount({
+ updateAccountPartial({
hasUnreadNotification: true,
unreadNotificationsCount,
});
});
main.on('unreadMention', () => {
- updateAccount({ hasUnreadMentions: true });
+ updateAccountPartial({ hasUnreadMentions: true });
});
main.on('readAllUnreadMentions', () => {
- updateAccount({ hasUnreadMentions: false });
+ updateAccountPartial({ hasUnreadMentions: false });
});
main.on('unreadSpecifiedNote', () => {
- updateAccount({ hasUnreadSpecifiedNotes: true });
+ updateAccountPartial({ hasUnreadSpecifiedNotes: true });
});
main.on('readAllUnreadSpecifiedNotes', () => {
- updateAccount({ hasUnreadSpecifiedNotes: false });
+ updateAccountPartial({ hasUnreadSpecifiedNotes: false });
});
main.on('readAllAntennas', () => {
- updateAccount({ hasUnreadAntenna: false });
+ updateAccountPartial({ hasUnreadAntenna: false });
});
main.on('unreadAntenna', () => {
- updateAccount({ hasUnreadAntenna: true });
+ updateAccountPartial({ hasUnreadAntenna: true });
sound.playMisskeySfx('antenna');
});
main.on('readAllAnnouncements', () => {
- updateAccount({ hasUnreadAnnouncement: false });
+ updateAccountPartial({ hasUnreadAnnouncement: false });
});
// 個人宛ã¦ãŠçŸ¥ã‚‰ã›ãŒç™ºè¡Œã•れãŸã¨ã
diff --git a/packages/frontend/src/components/MkAbuseReport.vue b/packages/frontend/src/components/MkAbuseReport.vue
index 4d6757a09f..d59c5b2c57 100644
--- a/packages/frontend/src/components/MkAbuseReport.vue
+++ b/packages/frontend/src/components/MkAbuseReport.vue
@@ -29,7 +29,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</div>
</template>
- <div :class="$style.root" class="_gaps_s">
+ <div class="_gaps_s">
<MkFolder :withSpacer="false">
<template #icon><MkAvatar :user="report.targetUser" style="width: 18px; height: 18px;"/></template>
<template #label>{{ i18n.ts.target }}: <MkAcct :user="report.targetUser"/></template>
@@ -151,6 +151,4 @@ function showMenu(ev: MouseEvent) {
</script>
<style lang="scss" module>
-.root {
-}
</style>
diff --git a/packages/frontend/src/components/MkAnnouncementDialog.vue b/packages/frontend/src/components/MkAnnouncementDialog.vue
index 0e85b27ad8..6c335d71d9 100644
--- a/packages/frontend/src/components/MkAnnouncementDialog.vue
+++ b/packages/frontend/src/components/MkAnnouncementDialog.vue
@@ -29,7 +29,7 @@ import { misskeyApi } from '@/scripts/misskey-api.js';
import MkModal from '@/components/MkModal.vue';
import MkButton from '@/components/MkButton.vue';
import { i18n } from '@/i18n.js';
-import { $i, updateAccount } from '@/account.js';
+import { $i, updateAccountPartial } from '@/account.js';
const props = withDefaults(defineProps<{
announcement: Misskey.entities.Announcement;
@@ -51,7 +51,7 @@ async function ok() {
modal.value?.close();
misskeyApi('i/read-announcement', { announcementId: props.announcement.id });
- updateAccount({
+ updateAccountPartial({
unreadAnnouncements: $i!.unreadAnnouncements.filter(a => a.id !== props.announcement.id),
});
}
diff --git a/packages/frontend/src/components/MkAntennaEditor.vue b/packages/frontend/src/components/MkAntennaEditor.vue
index 2386ba6fa7..e622d57f1e 100644
--- a/packages/frontend/src/components/MkAntennaEditor.vue
+++ b/packages/frontend/src/components/MkAntennaEditor.vue
@@ -160,7 +160,7 @@ async function deleteAntenna() {
function addUser() {
os.selectUser({ includeSelf: true }).then(user => {
users.value = users.value.trim();
- users.value += '\n@' + Misskey.acct.toString(user as any);
+ users.value += '\n@' + Misskey.acct.toString(user);
users.value = users.value.trim();
});
}
diff --git a/packages/frontend/src/components/MkAuthConfirm.stories.impl.ts b/packages/frontend/src/components/MkAuthConfirm.stories.impl.ts
new file mode 100644
index 0000000000..0adc44e204
--- /dev/null
+++ b/packages/frontend/src/components/MkAuthConfirm.stories.impl.ts
@@ -0,0 +1,7 @@
+/*
+ * SPDX-FileCopyrightText: syuilo and misskey-project
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+
+import MkAuthConfirm from './MkAuthConfirm.vue';
+void MkAuthConfirm;
diff --git a/packages/frontend/src/components/MkAuthConfirm.vue b/packages/frontend/src/components/MkAuthConfirm.vue
new file mode 100644
index 0000000000..f78d2d38f0
--- /dev/null
+++ b/packages/frontend/src/components/MkAuthConfirm.vue
@@ -0,0 +1,450 @@
+<!--
+SPDX-FileCopyrightText: syuilo and misskey-project
+SPDX-License-Identifier: AGPL-3.0-only
+-->
+
+<template>
+<div :class="$style.wrapper">
+ <Transition
+ mode="out-in"
+ :enterActiveClass="$style.transition_enterActive"
+ :leaveActiveClass="$style.transition_leaveActive"
+ :enterFromClass="$style.transition_enterFrom"
+ :leaveToClass="$style.transition_leaveTo"
+
+ :inert="_waiting"
+ >
+ <div v-if="phase === 'accountSelect'" key="accountSelect" :class="$style.root" class="_gaps">
+ <div :class="$style.header" class="_gaps_s">
+ <div :class="$style.iconFallback">
+ <i class="ti ti-user"></i>
+ </div>
+ <div :class="$style.headerText">{{ i18n.ts.pleaseSelectAccount }}</div>
+ </div>
+ <div>
+ <div :class="$style.accountSelectorLabel">{{ i18n.ts.selectAccount }}</div>
+ <div :class="$style.accountSelectorList">
+ <template v-for="[id, user] in users">
+ <input :id="'account-' + id" v-model="selectedUser" type="radio" name="accountSelector" :value="id" :class="$style.accountSelectorRadio"/>
+ <label :for="'account-' + id" :class="$style.accountSelectorItem">
+ <MkAvatar :user="user" :class="$style.accountSelectorAvatar"/>
+ <div :class="$style.accountSelectorBody">
+ <MkUserName :user="user" :class="$style.accountSelectorName"/>
+ <MkAcct :user="user" :class="$style.accountSelectorAcct"/>
+ </div>
+ </label>
+ </template>
+ <button class="_button" :class="[$style.accountSelectorItem, $style.accountSelectorAddAccountRoot]" @click="clickAddAccount">
+ <div :class="[$style.accountSelectorAvatar, $style.accountSelectorAddAccountAvatar]">
+ <i class="ti ti-user-plus"></i>
+ </div>
+ <div :class="[$style.accountSelectorBody, $style.accountSelectorName]">{{ i18n.ts.addAccount }}</div>
+ </button>
+ </div>
+ </div>
+ <div class="_buttonsCenter">
+ <MkButton rounded gradate :disabled="selectedUser === null" @click="clickChooseAccount">{{ i18n.ts.continue }} <i class="ti ti-arrow-right"></i></MkButton>
+ </div>
+ </div>
+ <div v-else-if="phase === 'consent'" key="consent" :class="$style.root" class="_gaps">
+ <div :class="$style.header" class="_gaps_s">
+ <img v-if="icon" :class="$style.icon" :src="getProxiedImageUrl(icon, 'preview')"/>
+ <div v-else :class="$style.iconFallback">
+ <i class="ti ti-apps"></i>
+ </div>
+ <div :class="$style.headerText">{{ name ? i18n.tsx._auth.shareAccess({ name }) : i18n.ts._auth.shareAccessAsk }}</div>
+ </div>
+ <div v-if="permissions && permissions.length > 0" class="_gaps_s" :class="$style.permissionRoot">
+ <div>{{ name ? i18n.tsx._auth.permission({ name }) : i18n.ts._auth.permissionAsk }}</div>
+ <div :class="$style.permissionListWrapper">
+ <ul :class="$style.permissionList">
+ <li v-for="p in permissions" :key="p">{{ i18n.ts._permissions[p] }}</li>
+ </ul>
+ </div>
+ </div>
+ <slot name="consentAdditionalInfo"></slot>
+ <div>
+ <div :class="$style.accountSelectorLabel">
+ {{ i18n.ts._auth.scopeUser }} <button class="_textButton" @click="clickBackToAccountSelect">{{ i18n.ts.switchAccount }}</button>
+ </div>
+ <div :class="$style.accountSelectorList">
+ <div :class="[$style.accountSelectorItem, $style.static]">
+ <MkAvatar :user="users.get(selectedUser!)!" :class="$style.accountSelectorAvatar"/>
+ <div :class="$style.accountSelectorBody">
+ <MkUserName :user="users.get(selectedUser!)!" :class="$style.accountSelectorName"/>
+ <MkAcct :user="users.get(selectedUser!)!" :class="$style.accountSelectorAcct"/>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="_buttonsCenter">
+ <MkButton rounded @click="clickCancel">{{ i18n.ts.reject }}</MkButton>
+ <MkButton rounded gradate @click="clickAccept">{{ i18n.ts.accept }}</MkButton>
+ </div>
+ </div>
+ <div v-else-if="phase === 'success'" key="success" :class="$style.root" class="_gaps_s">
+ <div :class="$style.header" class="_gaps_s">
+ <div :class="$style.iconFallback">
+ <i class="ti ti-check"></i>
+ </div>
+ <div :class="$style.headerText">{{ i18n.ts._auth.accepted }}</div>
+ <div :class="$style.headerTextSub">{{ i18n.ts._auth.pleaseGoBack }}</div>
+ </div>
+ </div>
+ <div v-else-if="phase === 'denied'" key="denied" :class="$style.root" class="_gaps_s">
+ <div :class="$style.header" class="_gaps_s">
+ <div :class="$style.iconFallback">
+ <i class="ti ti-x"></i>
+ </div>
+ <div :class="$style.headerText">{{ i18n.ts._auth.denied }}</div>
+ </div>
+ </div>
+ <div v-else-if="phase === 'failed'" key="failed" :class="$style.root" class="_gaps_s">
+ <div :class="$style.header" class="_gaps_s">
+ <div :class="$style.iconFallback">
+ <i class="ti ti-x"></i>
+ </div>
+ <div :class="$style.headerText">{{ i18n.ts.somethingHappened }}</div>
+ </div>
+ </div>
+ </Transition>
+ <div v-if="_waiting" :class="$style.waitingRoot">
+ <MkLoading/>
+ </div>
+</div>
+</template>
+
+<script setup lang="ts">
+import { ref, computed } from 'vue';
+import * as Misskey from 'misskey-js';
+
+import MkButton from '@/components/MkButton.vue';
+
+import { $i, getAccounts, getAccountWithSigninDialog, getAccountWithSignupDialog } from '@/account.js';
+import { i18n } from '@/i18n.js';
+import * as os from '@/os.js';
+import { getProxiedImageUrl } from '@/scripts/media-proxy.js';
+import { misskeyApi } from '@/scripts/misskey-api.js';
+
+const props = defineProps<{
+ name?: string;
+ icon?: string;
+ permissions?: (typeof Misskey.permissions[number])[];
+ manualWaiting?: boolean;
+ waitOnDeny?: boolean;
+}>();
+
+const emit = defineEmits<{
+ (ev: 'accept', token: string): void;
+ (ev: 'deny', token: string): void;
+}>();
+
+const waiting = ref(true);
+const _waiting = computed(() => waiting.value || props.manualWaiting);
+const phase = ref<'accountSelect' | 'consent' | 'success' | 'denied' | 'failed'>('accountSelect');
+
+const selectedUser = ref<string | null>(null);
+
+const users = ref(new Map<string, Misskey.entities.UserDetailed & { token: string; }>());
+
+async function init() {
+ waiting.value = true;
+
+ users.value.clear();
+
+ if ($i) {
+ users.value.set($i.id, $i);
+ }
+
+ const accounts = await getAccounts();
+
+ const accountIdsToFetch = accounts.map(a => a.id).filter(id => !users.value.has(id));
+
+ if (accountIdsToFetch.length > 0) {
+ const usersRes = await misskeyApi('users/show', {
+ userIds: accountIdsToFetch,
+ });
+
+ for (const user of usersRes) {
+ if (users.value.has(user.id)) continue;
+
+ users.value.set(user.id, {
+ ...user,
+ token: accounts.find(a => a.id === user.id)!.token,
+ });
+ }
+ }
+
+ waiting.value = false;
+}
+
+init();
+
+function clickAddAccount(ev: MouseEvent) {
+ selectedUser.value = null;
+
+ os.popupMenu([{
+ text: i18n.ts.existingAccount,
+ action: () => {
+ getAccountWithSigninDialog().then(async (res) => {
+ if (res != null) {
+ os.success();
+ await init();
+ if (users.value.has(res.id)) {
+ selectedUser.value = res.id;
+ }
+ }
+ });
+ },
+ }, {
+ text: i18n.ts.createAccount,
+ action: () => {
+ getAccountWithSignupDialog().then(async (res) => {
+ if (res != null) {
+ os.success();
+ await init();
+ if (users.value.has(res.id)) {
+ selectedUser.value = res.id;
+ }
+ }
+ });
+ },
+ }], ev.currentTarget ?? ev.target);
+}
+
+function clickChooseAccount() {
+ if (selectedUser.value === null) return;
+
+ phase.value = 'consent';
+}
+
+function clickBackToAccountSelect() {
+ selectedUser.value = null;
+ phase.value = 'accountSelect';
+}
+
+function clickCancel() {
+ if (selectedUser.value === null) return;
+
+ const user = users.value.get(selectedUser.value)!;
+
+ const token = user.token;
+
+ if (props.waitOnDeny) {
+ waiting.value = true;
+ }
+ emit('deny', token);
+}
+
+async function clickAccept() {
+ if (selectedUser.value === null) return;
+
+ const user = users.value.get(selectedUser.value)!;
+
+ const token = user.token;
+
+ waiting.value = true;
+ emit('accept', token);
+}
+
+function showUI(state: 'success' | 'denied' | 'failed') {
+ phase.value = state;
+ waiting.value = false;
+}
+
+defineExpose({
+ showUI,
+});
+</script>
+
+<style lang="scss" module>
+.transition_enterActive,
+.transition_leaveActive {
+ transition: opacity 0.3s cubic-bezier(0,0,.35,1), transform 0.3s cubic-bezier(0,0,.35,1);
+}
+.transition_enterFrom {
+ opacity: 0;
+ transform: translateX(50px);
+}
+.transition_leaveTo {
+ opacity: 0;
+ transform: translateX(-50px);
+}
+
+.wrapper {
+ overflow-x: hidden;
+ overflow-x: clip;
+
+ position: relative;
+ width: 100%;
+ height: 100%;
+}
+
+.waitingRoot {
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ background-color: color-mix(in srgb, var(--MI_THEME-panel), transparent 50%);
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ z-index: 1;
+ cursor: wait;
+}
+
+.root {
+ position: relative;
+ box-sizing: border-box;
+ width: 100%;
+ padding: 48px 24px;
+}
+
+.header {
+ margin: 0 auto;
+ max-width: 320px;
+}
+
+.icon,
+.iconFallback {
+ display: block;
+ margin: 0 auto;
+ width: 54px;
+ height: 54px;
+}
+
+.icon {
+ border-radius: 50%;
+ border: 1px solid var(--MI_THEME-divider);
+ background-color: #fff;
+ object-fit: contain;
+}
+
+.iconFallback {
+ border-radius: 50%;
+ background-color: var(--MI_THEME-accentedBg);
+ color: var(--MI_THEME-accent);
+ text-align: center;
+ line-height: 54px;
+ font-size: 18px;
+}
+
+.headerText,
+.headerTextSub {
+ text-align: center;
+ word-break: normal;
+ word-break: auto-phrase;
+}
+
+.headerText {
+ font-size: 16px;
+ font-weight: 700;
+}
+
+.permissionRoot {
+ padding: 16px;
+ border-radius: var(--MI-radius);
+ background-color: var(--MI_THEME-bg);
+}
+
+.permissionListWrapper {
+ max-height: 350px;
+ overflow-y: auto;
+ padding: 12px;
+ border-radius: var(--MI-radius);
+ background-color: var(--MI_THEME-panel);
+}
+
+.permissionList {
+ margin: 0 0 0 1.5em;
+ padding: 0;
+ font-size: 90%;
+}
+
+.accountSelectorLabel {
+ font-size: 0.85em;
+ opacity: 0.7;
+ margin-bottom: 8px;
+}
+
+.accountSelectorList {
+ border-radius: var(--MI-radius);
+ border: 1px solid var(--MI_THEME-divider);
+ overflow: hidden;
+ overflow: clip;
+}
+
+.accountSelectorRadio {
+ position: absolute;
+ clip: rect(0, 0, 0, 0);
+ pointer-events: none;
+
+ &:focus-visible + .accountSelectorItem {
+ outline: 2px solid var(--MI_THEME-accent);
+ outline-offset: -4px;
+ }
+
+ &:checked:focus-visible + .accountSelectorItem {
+ outline-color: #fff;
+ }
+
+ &:checked + .accountSelectorItem {
+ background: var(--MI_THEME-accent);
+ color: #fff;
+ }
+}
+
+.accountSelectorItem {
+ display: flex;
+ align-items: center;
+ padding: 8px;
+ font-size: 14px;
+ -webkit-tap-highlight-color: transparent;
+ cursor: pointer;
+
+ &:hover {
+ background: var(--MI_THEME-buttonHoverBg);
+ }
+
+ &.static {
+ cursor: unset;
+
+ &:hover {
+ background: none;
+ }
+ }
+}
+
+.accountSelectorAddAccountRoot {
+ width: 100%;
+}
+
+.accountSelectorBody {
+ padding: 0 8px;
+ min-width: 0;
+}
+
+.accountSelectorAvatar {
+ width: 45px;
+ height: 45px;
+}
+
+.accountSelectorAddAccountAvatar {
+ background-color: var(--MI_THEME-accentedBg);
+ color: var(--MI_THEME-accent);
+ font-size: 16px;
+ line-height: 45px;
+ text-align: center;
+ border-radius: 50%;
+}
+
+.accountSelectorName {
+ display: block;
+ font-weight: bold;
+}
+
+.accountSelectorAcct {
+ opacity: 0.5;
+}
+</style>
diff --git a/packages/frontend/src/components/MkCaptcha.vue b/packages/frontend/src/components/MkCaptcha.vue
index aebf3128b0..e9493edbd1 100644
--- a/packages/frontend/src/components/MkCaptcha.vue
+++ b/packages/frontend/src/components/MkCaptcha.vue
@@ -122,8 +122,8 @@ async function requestRender() {
sitekey: props.sitekey,
theme: defaultStore.state.darkMode ? 'dark' : 'light',
callback: callback,
- 'expired-callback': callback,
- 'error-callback': callback,
+ 'expired-callback': () => callback(undefined),
+ 'error-callback': () => callback(undefined),
});
} else if (props.provider === 'mcaptcha' && props.instanceUrl && props.sitekey) {
const { default: Widget } = await import('@mcaptcha/vanilla-glue');
diff --git a/packages/frontend/src/components/MkChannelPreview.vue b/packages/frontend/src/components/MkChannelPreview.vue
index a63006dfe4..e036fec528 100644
--- a/packages/frontend/src/components/MkChannelPreview.vue
+++ b/packages/frontend/src/components/MkChannelPreview.vue
@@ -47,11 +47,12 @@ SPDX-License-Identifier: AGPL-3.0-only
<script lang="ts" setup>
import { computed, ref, watch } from 'vue';
+import * as Misskey from 'misskey-js';
import { i18n } from '@/i18n.js';
import { miLocalStorage } from '@/local-storage.js';
const props = defineProps<{
- channel: Record<string, any>;
+ channel: Misskey.entities.Channel;
}>();
const getLastReadedAt = (): number | null => {
diff --git a/packages/frontend/src/components/MkContainer.vue b/packages/frontend/src/components/MkContainer.vue
index 55442f8598..f4d20c7d8c 100644
--- a/packages/frontend/src/components/MkContainer.vue
+++ b/packages/frontend/src/components/MkContainer.vue
@@ -64,26 +64,30 @@ const showBody = ref(props.expanded);
const ignoreOmit = ref(false);
const omitted = ref(false);
-function enter(el) {
+function enter(el: Element) {
+ if (!(el instanceof HTMLElement)) return;
const elementHeight = el.getBoundingClientRect().height;
- el.style.height = 0;
+ el.style.height = '0';
el.offsetHeight; // reflow
- el.style.height = Math.min(elementHeight, props.maxHeight ?? Infinity) + 'px';
+ el.style.height = `${Math.min(elementHeight, props.maxHeight ?? Infinity)}px`;
}
-function afterEnter(el) {
- el.style.height = null;
+function afterEnter(el: Element) {
+ if (!(el instanceof HTMLElement)) return;
+ el.style.height = '';
}
-function leave(el) {
+function leave(el: Element) {
+ if (!(el instanceof HTMLElement)) return;
const elementHeight = el.getBoundingClientRect().height;
- el.style.height = elementHeight + 'px';
+ el.style.height = `${elementHeight}px`;
el.offsetHeight; // reflow
- el.style.height = 0;
+ el.style.height = '0';
}
-function afterLeave(el) {
- el.style.height = null;
+function afterLeave(el: Element) {
+ if (!(el instanceof HTMLElement)) return;
+ el.style.height = '';
}
const calcOmit = () => {
diff --git a/packages/frontend/src/components/MkCropperDialog.vue b/packages/frontend/src/components/MkCropperDialog.vue
index c2a1aaf29a..0186cfc2c0 100644
--- a/packages/frontend/src/components/MkCropperDialog.vue
+++ b/packages/frontend/src/components/MkCropperDialog.vue
@@ -12,7 +12,7 @@ SPDX-License-Identifier: AGPL-3.0-only
:withOkButton="true"
@close="cancel()"
@ok="ok()"
- @closed="$emit('closed')"
+ @closed="emit('closed')"
>
<template #header>{{ i18n.ts.cropImage }}</template>
<template #default="{ width, height }">
diff --git a/packages/frontend/src/components/MkCustomEmojiDetailedDialog.vue b/packages/frontend/src/components/MkCustomEmojiDetailedDialog.vue
index 949adc6a8e..ecbee864dc 100644
--- a/packages/frontend/src/components/MkCustomEmojiDetailedDialog.vue
+++ b/packages/frontend/src/components/MkCustomEmojiDetailedDialog.vue
@@ -4,7 +4,7 @@ SPDX-License-Identifier: AGPL-3.0-only
-->
<template>
-<MkModalWindow ref="dialogEl" @close="cancel()" @closed="$emit('closed')">
+<MkModalWindow ref="dialogEl" @close="cancel()" @closed="emit('closed')">
<template #header>:{{ emoji.name }}:</template>
<template #default>
<MkSpacer>
diff --git a/packages/frontend/src/components/MkDateSeparatedList.vue b/packages/frontend/src/components/MkDateSeparatedList.vue
index 46c667768f..4b9666c55c 100644
--- a/packages/frontend/src/components/MkDateSeparatedList.vue
+++ b/packages/frontend/src/components/MkDateSeparatedList.vue
@@ -128,14 +128,14 @@ export default defineComponent({
return children;
};
- function onBeforeLeave(element: Element) {
- const el = element as HTMLElement;
+ function onBeforeLeave(el: Element) {
+ if (!(el instanceof HTMLElement)) return;
el.style.top = `${el.offsetTop}px`;
el.style.left = `${el.offsetLeft}px`;
}
- function onLeaveCancelled(element: Element) {
- const el = element as HTMLElement;
+ function onLeaveCancelled(el: Element) {
+ if (!(el instanceof HTMLElement)) return;
el.style.top = '';
el.style.left = '';
}
diff --git a/packages/frontend/src/components/MkDialog.vue b/packages/frontend/src/components/MkDialog.vue
index 73b3f457d4..9a59a9aac7 100644
--- a/packages/frontend/src/components/MkDialog.vue
+++ b/packages/frontend/src/components/MkDialog.vue
@@ -45,7 +45,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</template>
</MkSelect>
<div v-if="(showOkButton || showCancelButton) && !actions" :class="$style.buttons">
- <MkButton v-if="showOkButton" data-cy-modal-dialog-ok inline primary rounded :autofocus="!input && !select" :disabled="okButtonDisabledReason" @click="ok">{{ okText ?? ((showCancelButton || input || select) ? i18n.ts.ok : i18n.ts.gotIt) }}</MkButton>
+ <MkButton v-if="showOkButton" data-cy-modal-dialog-ok inline primary rounded :autofocus="!input && !select" :disabled="okButtonDisabledReason != null" @click="ok">{{ okText ?? ((showCancelButton || input || select) ? i18n.ts.ok : i18n.ts.gotIt) }}</MkButton>
<MkButton v-if="showCancelButton || input || select" data-cy-modal-dialog-cancel inline rounded @click="cancel">{{ cancelText ?? i18n.ts.cancel }}</MkButton>
</div>
<div v-if="actions" :class="$style.buttons">
@@ -98,7 +98,7 @@ const props = withDefaults(defineProps<{
text: string;
primary?: boolean,
danger?: boolean,
- callback: (...args: any[]) => void;
+ callback: (...args: unknown[]) => void;
}[];
showOkButton?: boolean;
showCancelButton?: boolean;
diff --git a/packages/frontend/src/components/MkDrive.vue b/packages/frontend/src/components/MkDrive.vue
index 4b8e5f27c2..5a0803f1e3 100644
--- a/packages/frontend/src/components/MkDrive.vue
+++ b/packages/frontend/src/components/MkDrive.vue
@@ -167,7 +167,12 @@ const ilFilesObserver = new IntersectionObserver(
(entries) => entries.some((entry) => entry.isIntersecting) && !fetching.value && moreFiles.value && fetchMoreFiles(),
);
+const sortModeSelect = ref<NonNullable<Misskey.entities.DriveFilesRequest['sort']>>('+createdAt');
+
watch(folder, () => emit('cd', folder.value));
+watch(sortModeSelect, () => {
+ fetch();
+});
function onStreamDriveFileCreated(file: Misskey.entities.DriveFile) {
addFile(file, true);
@@ -203,7 +208,7 @@ function onStreamDriveFolderDeleted(folderId: string) {
removeFolder(folderId);
}
-function onDragover(ev: DragEvent): any {
+function onDragover(ev: DragEvent) {
if (!ev.dataTransfer) return;
// ドラッグ元ãŒè‡ªåˆ†è‡ªèº«ã®æ‰€æœ‰ã™ã‚‹ã‚¢ã‚¤ãƒ†ãƒ ã ã£ãŸã‚‰
@@ -248,7 +253,7 @@ function onDragleave() {
draghover.value = false;
}
-function onDrop(ev: DragEvent): any {
+function onDrop(ev: DragEvent) {
draghover.value = false;
if (!ev.dataTransfer) return;
@@ -337,7 +342,7 @@ function createFolder() {
title: i18n.ts.createFolder,
placeholder: i18n.ts.folderName,
}).then(({ canceled, result: name }) => {
- if (canceled) return;
+ if (canceled || name == null) return;
misskeyApi('drive/folders/create', {
name: name,
parentId: folder.value ? folder.value.id : undefined,
@@ -570,6 +575,7 @@ async function fetch() {
type: props.type,
limit: filesMax + 1,
searchQuery: searchQuery.value.toString().trim(),
+ sort: sortModeSelect.value,
}).then(fetchedFiles => {
if (fetchedFiles.length === filesMax + 1) {
moreFiles.value = true;
@@ -621,6 +627,7 @@ function fetchMoreFiles() {
untilId: files.value.at(-1)?.id,
limit: max + 1,
searchQuery: searchQuery.value.toString().trim(),
+ sort: sortModeSelect.value,
}).then(files => {
if (files.length === max + 1) {
moreFiles.value = true;
@@ -656,6 +663,43 @@ function getMenu() {
type: 'label',
});
+ menu.push({
+ type: 'parent',
+ text: i18n.ts.sort,
+ icon: 'ti ti-arrows-sort',
+ children: [{
+ text: `${i18n.ts.registeredDate} (${i18n.ts.descendingOrder})`,
+ icon: 'ti ti-sort-descending-letters',
+ action: () => { sortModeSelect.value = '+createdAt'; },
+ active: sortModeSelect.value === '+createdAt',
+ }, {
+ text: `${i18n.ts.registeredDate} (${i18n.ts.ascendingOrder})`,
+ icon: 'ti ti-sort-ascending-letters',
+ action: () => { sortModeSelect.value = '-createdAt'; },
+ active: sortModeSelect.value === '-createdAt',
+ }, {
+ text: `${i18n.ts.size} (${i18n.ts.descendingOrder})`,
+ icon: 'ti ti-sort-descending-letters',
+ action: () => { sortModeSelect.value = '+size'; },
+ active: sortModeSelect.value === '+size',
+ }, {
+ text: `${i18n.ts.size} (${i18n.ts.ascendingOrder})`,
+ icon: 'ti ti-sort-ascending-letters',
+ action: () => { sortModeSelect.value = '-size'; },
+ active: sortModeSelect.value === '-size',
+ }, {
+ text: `${i18n.ts.name} (${i18n.ts.descendingOrder})`,
+ icon: 'ti ti-sort-descending-letters',
+ action: () => { sortModeSelect.value = '+name'; },
+ active: sortModeSelect.value === '+name',
+ }, {
+ text: `${i18n.ts.name} (${i18n.ts.ascendingOrder})`,
+ icon: 'ti ti-sort-ascending-letters',
+ action: () => { sortModeSelect.value = '-name'; },
+ active: sortModeSelect.value === '-name',
+ }],
+ });
+
if (folder.value) {
menu.push({
text: i18n.ts.renameFolder,
diff --git a/packages/frontend/src/components/MkEmbedCodeGenDialog.vue b/packages/frontend/src/components/MkEmbedCodeGenDialog.vue
index c2bb516c7c..6e9eb75920 100644
--- a/packages/frontend/src/components/MkEmbedCodeGenDialog.vue
+++ b/packages/frontend/src/components/MkEmbedCodeGenDialog.vue
@@ -11,7 +11,7 @@ SPDX-License-Identifier: AGPL-3.0-only
:scroll="false"
:withOkButton="false"
@close="cancel()"
- @closed="$emit('closed')"
+ @closed="emit('closed')"
>
<template #header><i class="ti ti-code"></i> {{ i18n.ts._embedCodeGen.title }}</template>
diff --git a/packages/frontend/src/components/MkEmojiPicker.section.vue b/packages/frontend/src/components/MkEmojiPicker.section.vue
index fac3c045dc..a4f763e895 100644
--- a/packages/frontend/src/components/MkEmojiPicker.section.vue
+++ b/packages/frontend/src/components/MkEmojiPicker.section.vue
@@ -90,7 +90,7 @@ function computeButtonTitle(ev: MouseEvent): void {
elm.title = getEmojiName(emoji);
}
-function nestedChosen(emoji: any, ev: MouseEvent) {
+function nestedChosen(emoji: string, ev: MouseEvent) {
emit('chosen', emoji, ev);
}
</script>
diff --git a/packages/frontend/src/components/MkEmojiPicker.vue b/packages/frontend/src/components/MkEmojiPicker.vue
index 17e989aefa..dc589a28e0 100644
--- a/packages/frontend/src/components/MkEmojiPicker.vue
+++ b/packages/frontend/src/components/MkEmojiPicker.vue
@@ -409,7 +409,7 @@ function computeButtonTitle(ev: MouseEvent): void {
elm.title = getEmojiName(emoji);
}
-function chosen(emoji: any, ev?: MouseEvent) {
+function chosen(emoji: string | Misskey.entities.EmojiSimple | UnicodeEmojiDef, ev?: MouseEvent) {
const el = ev && (ev.currentTarget ?? ev.target) as HTMLElement | null | undefined;
if (el) {
const rect = el.getBoundingClientRect();
@@ -426,7 +426,7 @@ function chosen(emoji: any, ev?: MouseEvent) {
// 最近使ã£ãŸçµµæ–‡å­—æ›´æ–°
if (!pinned.value?.includes(key)) {
let recents = defaultStore.state.recentlyUsedEmojis;
- recents = recents.filter((emoji: any) => emoji !== key);
+ recents = recents.filter((emoji) => emoji !== key);
recents.unshift(key);
defaultStore.set('recentlyUsedEmojis', recents.splice(0, 32));
}
diff --git a/packages/frontend/src/components/MkExtensionInstaller.vue b/packages/frontend/src/components/MkExtensionInstaller.vue
index b41604b2c3..d59b20435e 100644
--- a/packages/frontend/src/components/MkExtensionInstaller.vue
+++ b/packages/frontend/src/components/MkExtensionInstaller.vue
@@ -73,7 +73,7 @@ export type Extension = {
author: string;
description?: string;
permissions?: string[];
- config?: Record<string, any>;
+ config?: Record<string, unknown>;
};
} | {
type: 'theme';
diff --git a/packages/frontend/src/components/MkFoldableSection.vue b/packages/frontend/src/components/MkFoldableSection.vue
index 1717f8fc98..fb1b5220fb 100644
--- a/packages/frontend/src/components/MkFoldableSection.vue
+++ b/packages/frontend/src/components/MkFoldableSection.vue
@@ -5,7 +5,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<template>
<div ref="rootEl" :class="$style.root">
- <header :class="$style.header" class="_button" :style="{ background: bg }" @click="showBody = !showBody">
+ <header :class="$style.header" class="_button" @click="showBody = !showBody">
<div :class="$style.title"><div><slot name="header"></slot></div></div>
<div :class="$style.divider"></div>
<button class="_button" :class="$style.button">
@@ -32,21 +32,23 @@ SPDX-License-Identifier: AGPL-3.0-only
<script lang="ts" setup>
import { onMounted, ref, shallowRef, watch } from 'vue';
-import tinycolor from 'tinycolor2';
import { miLocalStorage } from '@/local-storage.js';
import { defaultStore } from '@/store.js';
+import { getBgColor } from '@/scripts/get-bg-color.js';
const miLocalStoragePrefix = 'ui:folder:' as const;
const props = withDefaults(defineProps<{
expanded?: boolean;
- persistKey?: string;
+ persistKey?: string | null;
}>(), {
expanded: true,
+ persistKey: null,
});
-const rootEl = shallowRef<HTMLDivElement>();
-const bg = ref<string>();
+const rootEl = shallowRef<HTMLElement>();
+const parentBg = ref<string | null>(null);
+// eslint-disable-next-line vue/no-setup-props-reactivity-loss
const showBody = ref((props.persistKey && miLocalStorage.getItem(`${miLocalStoragePrefix}${props.persistKey}`)) ? (miLocalStorage.getItem(`${miLocalStoragePrefix}${props.persistKey}`) === 't') : props.expanded);
watch(showBody, () => {
@@ -55,47 +57,34 @@ watch(showBody, () => {
}
});
-function enter(element: Element) {
- const el = element as HTMLElement;
+function enter(el: Element) {
+ if (!(el instanceof HTMLElement)) return;
const elementHeight = el.getBoundingClientRect().height;
el.style.height = '0';
el.offsetHeight; // reflow
- el.style.height = elementHeight + 'px';
+ el.style.height = `${elementHeight}px`;
}
-function afterEnter(element: Element) {
- const el = element as HTMLElement;
- el.style.height = 'unset';
+function afterEnter(el: Element) {
+ if (!(el instanceof HTMLElement)) return;
+ el.style.height = '';
}
-function leave(element: Element) {
- const el = element as HTMLElement;
+function leave(el: Element) {
+ if (!(el instanceof HTMLElement)) return;
const elementHeight = el.getBoundingClientRect().height;
- el.style.height = elementHeight + 'px';
+ el.style.height = `${elementHeight}px`;
el.offsetHeight; // reflow
el.style.height = '0';
}
-function afterLeave(element: Element) {
- const el = element as HTMLElement;
- el.style.height = 'unset';
+function afterLeave(el: Element) {
+ if (!(el instanceof HTMLElement)) return;
+ el.style.height = '';
}
onMounted(() => {
- function getParentBg(el?: HTMLElement | null): string {
- if (el == null || el.tagName === 'BODY') return 'var(--MI_THEME-bg)';
- const background = el.style.background || el.style.backgroundColor;
- if (background) {
- return background;
- } else {
- return getParentBg(el.parentElement);
- }
- }
-
- const rawBg = getParentBg(rootEl.value);
- const _bg = tinycolor(rawBg.startsWith('var(') ? getComputedStyle(document.documentElement).getPropertyValue(rawBg.slice(4, -1)) : rawBg);
- _bg.setAlpha(0.85);
- bg.value = _bg.toRgbString();
+ parentBg.value = getBgColor(rootEl.value?.parentElement);
});
</script>
@@ -121,6 +110,7 @@ onMounted(() => {
top: var(--MI-stickyTop, 0px);
-webkit-backdrop-filter: var(--MI-blur, blur(8px));
backdrop-filter: var(--MI-blur, blur(20px));
+ background-color: color(from v-bind("parentBg ?? 'var(--bg)'") srgb r g b / 0.85);
}
.title {
diff --git a/packages/frontend/src/components/MkFolder.vue b/packages/frontend/src/components/MkFolder.vue
index 4c483c59f0..0b4114d252 100644
--- a/packages/frontend/src/components/MkFolder.vue
+++ b/packages/frontend/src/components/MkFolder.vue
@@ -56,8 +56,9 @@ SPDX-License-Identifier: AGPL-3.0-only
</template>
<script lang="ts" setup>
-import { nextTick, onMounted, shallowRef, ref } from 'vue';
+import { nextTick, onMounted, ref, shallowRef } from 'vue';
import { defaultStore } from '@/store.js';
+import { getBgColor } from '@/scripts/get-bg-color.js';
const props = withDefaults(defineProps<{
defaultOpen?: boolean;
@@ -69,40 +70,35 @@ const props = withDefaults(defineProps<{
withSpacer: true,
});
-const getBgColor = (el: HTMLElement) => {
- const style = window.getComputedStyle(el);
- if (style.backgroundColor && !['rgba(0, 0, 0, 0)', 'rgba(0,0,0,0)', 'transparent'].includes(style.backgroundColor)) {
- return style.backgroundColor;
- } else {
- return el.parentElement ? getBgColor(el.parentElement) : 'transparent';
- }
-};
-
const rootEl = shallowRef<HTMLElement>();
const bgSame = ref(false);
const opened = ref(props.defaultOpen);
const openedAtLeastOnce = ref(props.defaultOpen);
-function enter(el) {
+function enter(el: Element) {
+ if (!(el instanceof HTMLElement)) return;
const elementHeight = el.getBoundingClientRect().height;
- el.style.height = 0;
+ el.style.height = '0';
el.offsetHeight; // reflow
- el.style.height = Math.min(elementHeight, props.maxHeight ?? Infinity) + 'px';
+ el.style.height = `${Math.min(elementHeight, props.maxHeight ?? Infinity)}px`;
}
-function afterEnter(el) {
- el.style.height = null;
+function afterEnter(el: Element) {
+ if (!(el instanceof HTMLElement)) return;
+ el.style.height = '';
}
-function leave(el) {
+function leave(el: Element) {
+ if (!(el instanceof HTMLElement)) return;
const elementHeight = el.getBoundingClientRect().height;
- el.style.height = elementHeight + 'px';
+ el.style.height = `${elementHeight}px`;
el.offsetHeight; // reflow
- el.style.height = 0;
+ el.style.height = '0';
}
-function afterLeave(el) {
- el.style.height = null;
+function afterLeave(el: Element) {
+ if (!(el instanceof HTMLElement)) return;
+ el.style.height = '';
}
function toggle() {
@@ -117,7 +113,7 @@ function toggle() {
onMounted(() => {
const computedStyle = getComputedStyle(document.documentElement);
- const parentBg = getBgColor(rootEl.value!.parentElement!);
+ const parentBg = getBgColor(rootEl.value?.parentElement) ?? 'transparent';
const myBg = computedStyle.getPropertyValue('--MI_THEME-panel');
bgSame.value = parentBg === myBg;
});
diff --git a/packages/frontend/src/components/MkFollowButton.vue b/packages/frontend/src/components/MkFollowButton.vue
index a02a570180..c7965aaac4 100644
--- a/packages/frontend/src/components/MkFollowButton.vue
+++ b/packages/frontend/src/components/MkFollowButton.vue
@@ -37,13 +37,13 @@ SPDX-License-Identifier: AGPL-3.0-only
<script lang="ts" setup>
import { onBeforeUnmount, onMounted, ref } from 'vue';
import * as Misskey from 'misskey-js';
+import { host } from '@@/js/config.js';
import * as os from '@/os.js';
import { misskeyApi } from '@/scripts/misskey-api.js';
import { useStream } from '@/stream.js';
import { i18n } from '@/i18n.js';
import { claimAchievement } from '@/scripts/achievements.js';
import { pleaseLogin } from '@/scripts/please-login.js';
-import { host } from '@@/js/config.js';
import { $i } from '@/account.js';
import { defaultStore } from '@/store.js';
@@ -80,7 +80,7 @@ function onFollowChange(user: Misskey.entities.UserDetailed) {
}
async function onClick() {
- pleaseLogin(undefined, { type: 'web', path: `/@${props.user.username}@${props.user.host ?? host}` });
+ pleaseLogin({ openOnRemote: { type: 'web', path: `/@${props.user.username}@${props.user.host ?? host}` } });
wait.value = true;
@@ -91,7 +91,10 @@ async function onClick() {
text: i18n.tsx.unfollowConfirm({ name: props.user.name || props.user.username }),
});
- if (canceled) return;
+ if (canceled) {
+ wait.value = false;
+ return;
+ }
await misskeyApi('following/delete', {
userId: props.user.id,
@@ -125,7 +128,10 @@ async function onClick() {
});
hasPendingFollowRequestFromYou.value = true;
- if ($i == null) return;
+ if ($i == null) {
+ wait.value = false;
+ return;
+ }
claimAchievement('following1');
diff --git a/packages/frontend/src/components/MkFormDialog.vue b/packages/frontend/src/components/MkFormDialog.vue
index 124f114111..a639eae208 100644
--- a/packages/frontend/src/components/MkFormDialog.vue
+++ b/packages/frontend/src/components/MkFormDialog.vue
@@ -13,7 +13,7 @@ SPDX-License-Identifier: AGPL-3.0-only
@click="cancel()"
@ok="ok()"
@close="cancel()"
- @closed="$emit('closed')"
+ @closed="emit('closed')"
>
<template #header>
{{ title }}
diff --git a/packages/frontend/src/components/MkInput.vue b/packages/frontend/src/components/MkInput.vue
index 7510b77724..ec299dce36 100644
--- a/packages/frontend/src/components/MkInput.vue
+++ b/packages/frontend/src/components/MkInput.vue
@@ -44,7 +44,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</template>
<script lang="ts" setup>
-import { onMounted, onUnmounted, nextTick, ref, shallowRef, watch, computed, toRefs } from 'vue';
+import { onMounted, onUnmounted, nextTick, ref, shallowRef, watch, computed, toRefs, InputHTMLAttributes } from 'vue';
import { debounce } from 'throttle-debounce';
import MkButton from '@/components/MkButton.vue';
import { useInterval } from '@@/js/use-interval.js';
@@ -53,7 +53,7 @@ import { Autocomplete, SuggestionType } from '@/scripts/autocomplete.js';
const props = defineProps<{
modelValue: string | number | null;
- type?: 'text' | 'number' | 'password' | 'email' | 'url' | 'date' | 'time' | 'search' | 'datetime-local';
+ type?: InputHTMLAttributes['type'];
required?: boolean;
readonly?: boolean;
disabled?: boolean;
@@ -64,8 +64,8 @@ const props = defineProps<{
mfmAutocomplete?: boolean | SuggestionType[],
autocapitalize?: string;
spellcheck?: boolean;
- inputmode?: 'none' | 'text' | 'search' | 'email' | 'url' | 'numeric' | 'tel' | 'decimal';
- step?: any;
+ inputmode?: InputHTMLAttributes['inputmode'];
+ step?: InputHTMLAttributes['step'];
datalist?: string[];
min?: number;
max?: number | string;
diff --git a/packages/frontend/src/components/MkMediaVideo.vue b/packages/frontend/src/components/MkMediaVideo.vue
index 8936cd8a5d..04f8e9f8d8 100644
--- a/packages/frontend/src/components/MkMediaVideo.vue
+++ b/packages/frontend/src/components/MkMediaVideo.vue
@@ -121,7 +121,7 @@ import { hms } from '@/filters/hms.js';
import { defaultStore } from '@/store.js';
import { i18n } from '@/i18n.js';
import * as os from '@/os.js';
-import { isFullscreenNotSupported } from '@/scripts/device-kind.js';
+import { exitFullscreen, requestFullscreen } from '@/scripts/fullscreen.js';
import hasAudio from '@/scripts/media-has-audio.js';
import MkMediaRange from '@/components/MkMediaRange.vue';
import { $i, iAmModerator } from '@/account.js';
@@ -337,26 +337,21 @@ function togglePlayPause() {
}
function toggleFullscreen() {
- if (isFullscreenNotSupported && videoEl.value) {
- if (isFullscreen.value) {
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
- //@ts-ignore
- videoEl.value.webkitExitFullscreen();
- isFullscreen.value = false;
- } else {
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
- //@ts-ignore
- videoEl.value.webkitEnterFullscreen();
- isFullscreen.value = true;
- }
- } else if (playerEl.value) {
- if (isFullscreen.value) {
- document.exitFullscreen();
- isFullscreen.value = false;
- } else {
- playerEl.value.requestFullscreen({ navigationUI: 'hide' });
- isFullscreen.value = true;
- }
+ if (playerEl.value == null || videoEl.value == null) return;
+ if (isFullscreen.value) {
+ exitFullscreen({
+ videoEl: videoEl.value,
+ });
+ isFullscreen.value = false;
+ } else {
+ requestFullscreen({
+ videoEl: videoEl.value,
+ playerEl: playerEl.value,
+ options: {
+ navigationUI: 'hide',
+ },
+ });
+ isFullscreen.value = true;
}
}
@@ -457,8 +452,10 @@ watch(loop, (to) => {
});
watch(hide, (to) => {
- if (to && isFullscreen.value) {
- document.exitFullscreen();
+ if (videoEl.value && to && isFullscreen.value) {
+ exitFullscreen({
+ videoEl: videoEl.value,
+ });
isFullscreen.value = false;
}
});
diff --git a/packages/frontend/src/components/MkModalWindow.vue b/packages/frontend/src/components/MkModalWindow.vue
index fe9e1ce088..f06cfffee4 100644
--- a/packages/frontend/src/components/MkModalWindow.vue
+++ b/packages/frontend/src/components/MkModalWindow.vue
@@ -26,11 +26,11 @@ import { onMounted, onUnmounted, shallowRef, ref } from 'vue';
import MkModal from './MkModal.vue';
const props = withDefaults(defineProps<{
- withOkButton: boolean;
- withCloseButton: boolean;
- okButtonDisabled: boolean;
- width: number;
- height: number;
+ withOkButton?: boolean;
+ withCloseButton?: boolean;
+ okButtonDisabled?: boolean;
+ width?: number;
+ height?: number;
}>(), {
withOkButton: false,
withCloseButton: true,
diff --git a/packages/frontend/src/components/MkNote.vue b/packages/frontend/src/components/MkNote.vue
index 380e7bfbe2..7b3cd84c04 100644
--- a/packages/frontend/src/components/MkNote.vue
+++ b/packages/frontend/src/components/MkNote.vue
@@ -218,6 +218,7 @@ import MkInstanceTicker from '@/components/MkInstanceTicker.vue';
import MkButton from '@/components/MkButton.vue';
import { pleaseLogin, type OpenOnRemoteOptions } from '@/scripts/please-login.js';
import { checkWordMute } from '@/scripts/check-word-mute.js';
+import { notePage } from '@/filters/note.js';
import { userPage } from '@/filters/user.js';
import number from '@/filters/number.js';
import * as os from '@/os.js';
@@ -264,6 +265,7 @@ const emit = defineEmits<{
const router = useRouter();
const inTimeline = inject<boolean>('inTimeline', false);
+const tl_withSensitive = inject<Ref<boolean>>('tl_withSensitive', ref(true));
const inChannel = inject('inChannel', null);
const currentClip = inject<Ref<Misskey.entities.Clip> | null>('currentClip', null);
@@ -343,15 +345,18 @@ function checkMute(noteToCheck: Misskey.entities.Note, mutedWords: Array<string
function checkMute(noteToCheck: Misskey.entities.Note, mutedWords: Array<string | string[]> | undefined | null, checkOnly: false): boolean | 'sensitiveMute';
*/
function checkMute(noteToCheck: Misskey.entities.Note, mutedWords: Array<string | string[]> | undefined | null, checkOnly = false): boolean | 'sensitiveMute' {
- if (mutedWords == null) return false;
-
- if (checkWordMute(noteToCheck, $i, mutedWords)) return true;
- if (noteToCheck.reply && checkWordMute(noteToCheck.reply, $i, mutedWords)) return true;
- if (noteToCheck.renote && checkWordMute(noteToCheck.renote, $i, mutedWords)) return true;
+ if (mutedWords != null) {
+ if (checkWordMute(noteToCheck, $i, mutedWords)) return true;
+ if (noteToCheck.reply && checkWordMute(noteToCheck.reply, $i, mutedWords)) return true;
+ if (noteToCheck.renote && checkWordMute(noteToCheck.renote, $i, mutedWords)) return true;
+ }
if (checkOnly) return false;
- if (inTimeline && !defaultStore.state.tl.filter.withSensitive && noteToCheck.files?.some((v) => v.isSensitive)) return 'sensitiveMute';
+ if (inTimeline && tl_withSensitive.value === false && noteToCheck.files?.some((v) => v.isSensitive)) {
+ return 'sensitiveMute';
+ }
+
return false;
}
@@ -514,7 +519,7 @@ function boostVisibility() {
}
function renote(visibility: Visibility, localOnly: boolean = false) {
- pleaseLogin(undefined, pleaseLoginContext.value);
+ pleaseLogin({ openOnRemote: pleaseLoginContext.value });
showMovedDialog();
renoting = true;
@@ -564,7 +569,7 @@ function renote(visibility: Visibility, localOnly: boolean = false) {
}
function quote() {
- pleaseLogin(undefined, pleaseLoginContext.value);
+ pleaseLogin({ openOnRemote: pleaseLoginContext.value });
showMovedDialog();
if (props.mock) {
return;
@@ -625,7 +630,7 @@ function quote() {
}
function reply(): void {
- pleaseLogin(undefined, pleaseLoginContext.value);
+ pleaseLogin({ openOnRemote: pleaseLoginContext.value });
if (props.mock) {
return;
}
@@ -638,7 +643,7 @@ function reply(): void {
}
function like(): void {
- pleaseLogin(undefined, pleaseLoginContext.value);
+ pleaseLogin({ openOnRemote: pleaseLoginContext.value });
showMovedDialog();
sound.playMisskeySfx('reaction');
if (props.mock) {
@@ -660,7 +665,7 @@ function like(): void {
}
function react(viaKeyboard = false): void {
- pleaseLogin(undefined, pleaseLoginContext.value);
+ pleaseLogin({ openOnRemote: pleaseLoginContext.value });
showMovedDialog();
if (appearNote.value.reactionAcceptance === 'likeOnly') {
sound.playMisskeySfx('reaction');
@@ -808,15 +813,24 @@ function showRenoteMenu(): void {
};
}
+ const renoteDetailsMenu: MenuItem = {
+ type: 'link',
+ text: i18n.ts.renoteDetails,
+ icon: 'ti ti-info-circle',
+ to: notePage(note.value),
+ };
+
if (isMyRenote) {
- pleaseLogin(undefined, pleaseLoginContext.value);
+ pleaseLogin({ openOnRemote: pleaseLoginContext.value });
os.popupMenu([
+ renoteDetailsMenu,
getCopyNoteLinkMenu(note.value, i18n.ts.copyLinkRenote),
{ type: 'divider' },
getUnrenote(),
], renoteTime.value);
} else {
os.popupMenu([
+ renoteDetailsMenu,
getCopyNoteLinkMenu(note.value, i18n.ts.copyLinkRenote),
{ type: 'divider' },
getAbuseNoteMenu(note.value, i18n.ts.reportAbuseRenote),
diff --git a/packages/frontend/src/components/MkNoteDetailed.vue b/packages/frontend/src/components/MkNoteDetailed.vue
index 6828e6ef67..a537d8afb9 100644
--- a/packages/frontend/src/components/MkNoteDetailed.vue
+++ b/packages/frontend/src/components/MkNoteDetailed.vue
@@ -63,7 +63,14 @@ SPDX-License-Identifier: AGPL-3.0-only
<span v-if="appearNote.localOnly" style="margin-left: 0.5em;" :title="i18n.ts._visibility['disableFederation']"><i class="ti ti-rocket-off"></i></span>
</div>
</div>
- <div :class="$style.noteHeaderUsername"><MkAcct :user="appearNote.user"/></div>
+ <div :class="$style.noteHeaderUsernameAndBadgeRoles">
+ <div :class="$style.noteHeaderUsername">
+ <MkAcct :user="appearNote.user"/>
+ </div>
+ <div v-if="appearNote.user.badgeRoles" :class="$style.noteHeaderBadgeRoles">
+ <img v-for="(role, i) in appearNote.user.badgeRoles" :key="i" v-tooltip="role.name" :class="$style.noteHeaderBadgeRole" :src="role.iconUrl!"/>
+ </div>
+ </div>
<MkInstanceTicker v-if="showTicker" :instance="appearNote.user.instance"/>
</div>
</header>
@@ -236,6 +243,7 @@ import { computed, inject, onMounted, provide, ref, shallowRef, watch } from 'vu
import * as mfm from '@transfem-org/sfm-js';
import * as Misskey from 'misskey-js';
import { isLink } from '@@/js/is-link.js';
+import { host } from '@@/js/config.js';
import MkNoteSub from '@/components/MkNoteSub.vue';
import MkNoteSimple from '@/components/MkNoteSimple.vue';
import MkReactionsViewer from '@/components/MkReactionsViewer.vue';
@@ -259,10 +267,8 @@ import { reactionPicker } from '@/scripts/reaction-picker.js';
import { extractUrlFromMfm } from '@/scripts/extract-url-from-mfm.js';
import { $i } from '@/account.js';
import { i18n } from '@/i18n.js';
-import { host } from '@@/js/config.js';
import { getNoteClipMenu, getNoteMenu } from '@/scripts/get-note-menu.js';
import { getNoteVersionsMenu } from '@/scripts/get-note-versions-menu.js';
-
import { useNoteCapture } from '@/scripts/use-note-capture.js';
import { deepClone } from '@/scripts/clone.js';
import { useTooltip } from '@/scripts/use-tooltip.js';
@@ -507,7 +513,7 @@ if (appearNote.value.reactionAcceptance === 'likeOnly') {
}
function renote(visibility: Visibility, localOnly: boolean = false) {
- pleaseLogin(undefined, pleaseLoginContext.value);
+ pleaseLogin({ openOnRemote: pleaseLoginContext.value });
showMovedDialog();
renoting = true;
@@ -553,7 +559,7 @@ function renote(visibility: Visibility, localOnly: boolean = false) {
}
function quote() {
- pleaseLogin(undefined, pleaseLoginContext.value);
+ pleaseLogin({ openOnRemote: pleaseLoginContext.value });
showMovedDialog();
if (appearNote.value.channel) {
@@ -611,7 +617,7 @@ function quote() {
}
function reply(): void {
- pleaseLogin(undefined, pleaseLoginContext.value);
+ pleaseLogin({ openOnRemote: pleaseLoginContext.value });
showMovedDialog();
os.post({
reply: appearNote.value,
@@ -622,7 +628,7 @@ function reply(): void {
}
function react(): void {
- pleaseLogin(undefined, pleaseLoginContext.value);
+ pleaseLogin({ openOnRemote: pleaseLoginContext.value });
showMovedDialog();
if (appearNote.value.reactionAcceptance === 'likeOnly') {
sound.playMisskeySfx('reaction');
@@ -659,7 +665,7 @@ function react(): void {
}
function like(): void {
- pleaseLogin(undefined, pleaseLoginContext.value);
+ pleaseLogin({ openOnRemote: pleaseLoginContext.value });
showMovedDialog();
sound.playMisskeySfx('reaction');
misskeyApi('notes/like', {
@@ -741,7 +747,7 @@ async function clip(): Promise<void> {
function showRenoteMenu(): void {
if (!isMyRenote) return;
- pleaseLogin(undefined, pleaseLoginContext.value);
+ pleaseLogin({ openOnRemote: pleaseLoginContext.value });
os.popupMenu([{
text: i18n.ts.unrenote,
icon: 'ti ti-trash',
@@ -964,8 +970,13 @@ function animatedMFM() {
float: right;
}
+.noteHeaderUsernameAndBadgeRoles {
+ display: flex;
+}
+
.noteHeaderUsername {
margin-bottom: 2px;
+ margin-right: 0.5em;
line-height: 1.3;
word-wrap: anywhere;
}
@@ -974,6 +985,19 @@ function animatedMFM() {
margin-top: 5px;
}
+.noteHeaderBadgeRoles {
+ margin: 0 .5em 0 0;
+}
+
+.noteHeaderBadgeRole {
+ height: 1.3em;
+ vertical-align: -20%;
+
+ & + .noteHeaderBadgeRole {
+ margin-left: 0.2em;
+ }
+}
+
.noteContent {
container-type: inline-size;
overflow-wrap: break-word;
diff --git a/packages/frontend/src/components/MkNotificationSelectWindow.vue b/packages/frontend/src/components/MkNotificationSelectWindow.vue
index 47a9c79e45..d07827d11a 100644
--- a/packages/frontend/src/components/MkNotificationSelectWindow.vue
+++ b/packages/frontend/src/components/MkNotificationSelectWindow.vue
@@ -53,7 +53,7 @@ const props = withDefaults(defineProps<{
const dialog = shallowRef<InstanceType<typeof MkModalWindow>>();
-const typesMap: TypesMap = notificationTypes.reduce((p, t) => ({ ...p, [t]: ref<boolean>(!props.excludeTypes.includes(t)) }), {} as any);
+const typesMap = notificationTypes.reduce((p, t) => ({ ...p, [t]: ref<boolean>(!props.excludeTypes.includes(t)) }), {} as TypesMap);
function ok() {
emit('done', {
diff --git a/packages/frontend/src/components/MkObjectView.value.vue b/packages/frontend/src/components/MkObjectView.value.vue
index dabdd324fd..7fa8c23c6c 100644
--- a/packages/frontend/src/components/MkObjectView.value.vue
+++ b/packages/frontend/src/components/MkObjectView.value.vue
@@ -39,7 +39,7 @@ import number from '@/filters/number.js';
import XValue from '@/components/MkObjectView.value.vue';
const props = defineProps<{
- value: any;
+ value: unknown;
}>();
const collapsed = reactive({});
@@ -50,19 +50,19 @@ if (isObject(props.value)) {
}
}
-function isObject(v): boolean {
+function isObject(v: unknown): v is Record<PropertyKey, unknown> {
return typeof v === 'object' && !Array.isArray(v) && v !== null;
}
-function isArray(v): boolean {
+function isArray(v: unknown): v is unknown[] {
return Array.isArray(v);
}
-function isEmpty(v): boolean {
+function isEmpty(v: unknown): v is Record<PropertyKey, never> | never[] {
return (isArray(v) && v.length === 0) || (isObject(v) && Object.keys(v).length === 0);
}
-function collapsable(v): boolean {
+function collapsable(v: unknown): boolean {
return (isObject(v) || isArray(v)) && !isEmpty(v);
}
</script>
diff --git a/packages/frontend/src/components/MkPageWindow.vue b/packages/frontend/src/components/MkPageWindow.vue
index 4aac283ecd..84189211b6 100644
--- a/packages/frontend/src/components/MkPageWindow.vue
+++ b/packages/frontend/src/components/MkPageWindow.vue
@@ -13,7 +13,7 @@ SPDX-License-Identifier: AGPL-3.0-only
:buttonsLeft="buttonsLeft"
:buttonsRight="buttonsRight"
:contextmenu="contextmenu"
- @closed="$emit('closed')"
+ @closed="emit('closed')"
>
<template #header>
<template v-if="pageMetadata">
@@ -30,17 +30,17 @@ SPDX-License-Identifier: AGPL-3.0-only
<script lang="ts" setup>
import { computed, onMounted, onUnmounted, provide, ref, shallowRef } from 'vue';
+import { url } from '@@/js/config.js';
+import { getScrollContainer } from '@@/js/scroll.js';
import RouterView from '@/components/global/RouterView.vue';
import MkWindow from '@/components/MkWindow.vue';
import { popout as _popout } from '@/scripts/popout.js';
import { copyToClipboard } from '@/scripts/copy-to-clipboard.js';
-import { url } from '@@/js/config.js';
import { useScrollPositionManager } from '@/nirax.js';
import { i18n } from '@/i18n.js';
import { PageMetadata, provideMetadataReceiver, provideReactiveMetadata } from '@/scripts/page-metadata.js';
import { openingWindowsCount } from '@/os.js';
import { claimAchievement } from '@/scripts/achievements.js';
-import { getScrollContainer } from '@@/js/scroll.js';
import { useRouterFactory } from '@/router/supplier.js';
import { mainRouter } from '@/router/main.js';
import MkUserName from './global/MkUserName.vue';
@@ -49,7 +49,7 @@ const props = defineProps<{
initialPath: string;
}>();
-defineEmits<{
+const emit = defineEmits<{
(ev: 'closed'): void;
}>();
@@ -59,7 +59,7 @@ const windowRouter = routerFactory(props.initialPath);
const contents = shallowRef<HTMLElement | null>(null);
const pageMetadata = ref<null | PageMetadata>(null);
const windowEl = shallowRef<InstanceType<typeof MkWindow>>();
-const history = ref<{ path: string; key: any; }[]>([{
+const history = ref<{ path: string; key: string; }[]>([{
path: windowRouter.getCurrentPath(),
key: windowRouter.getCurrentKey(),
}]);
diff --git a/packages/frontend/src/components/MkPoll.vue b/packages/frontend/src/components/MkPoll.vue
index 7c61ba1e83..a414676bda 100644
--- a/packages/frontend/src/components/MkPoll.vue
+++ b/packages/frontend/src/components/MkPoll.vue
@@ -33,14 +33,14 @@ SPDX-License-Identifier: AGPL-3.0-only
<script lang="ts" setup>
import { computed, ref } from 'vue';
import * as Misskey from 'misskey-js';
+import { host } from '@@/js/config.js';
+import { useInterval } from '@@/js/use-interval.js';
import type { OpenOnRemoteOptions } from '@/scripts/please-login.js';
import { sum } from '@/scripts/array.js';
import { pleaseLogin } from '@/scripts/please-login.js';
import * as os from '@/os.js';
import { misskeyApi } from '@/scripts/misskey-api.js';
import { i18n } from '@/i18n.js';
-import { host } from '@@/js/config.js';
-import { useInterval } from '@@/js/use-interval.js';
import { $i } from '@/account.js';
const props = defineProps<{
@@ -91,7 +91,7 @@ if (props.poll.expiresAt) {
const vote = async (id) => {
if (props.readOnly || closed.value || isVoted.value) return;
- pleaseLogin(undefined, pleaseLoginContext.value);
+ pleaseLogin({ openOnRemote: pleaseLoginContext.value });
if (!props.poll.multiple) {
const { canceled } = await os.confirm({
@@ -115,7 +115,7 @@ const vote = async (id) => {
};
const refreshVotes = async () => {
- pleaseLogin(undefined, pleaseLoginContext.value);
+ pleaseLogin({ openOnRemote: pleaseLoginContext.value });
if (props.readOnly || closed.value) return;
await misskeyApi('notes/polls/refresh', {
diff --git a/packages/frontend/src/components/MkPopupMenu.vue b/packages/frontend/src/components/MkPopupMenu.vue
index 932e515892..f1b5ff4de0 100644
--- a/packages/frontend/src/components/MkPopupMenu.vue
+++ b/packages/frontend/src/components/MkPopupMenu.vue
@@ -19,7 +19,7 @@ defineProps<{
items: MenuItem[];
align?: 'center' | string;
width?: number;
- src?: any;
+ src?: HTMLElement | null;
returnFocusTo?: HTMLElement | null;
}>();
diff --git a/packages/frontend/src/components/MkPostForm.vue b/packages/frontend/src/components/MkPostForm.vue
index 689884f653..ea7072df4d 100644
--- a/packages/frontend/src/components/MkPostForm.vue
+++ b/packages/frontend/src/components/MkPostForm.vue
@@ -66,12 +66,12 @@ SPDX-License-Identifier: AGPL-3.0-only
</div>
<MkInfo v-if="hasNotSpecifiedMentions" warn :class="$style.hasNotSpecifiedMentions">{{ i18n.ts.notSpecifiedMentionWarning }} - <button class="_textButton" @click="addMissingMention()">{{ i18n.ts.add }}</button></MkInfo>
<div v-show="useCw" :class="$style.cwFrame">
- <input ref="cwInputEl" v-model="cw" :class="$style.cw" :placeholder="i18n.ts.annotation" @keydown="onKeydown">
+ <input ref="cwInputEl" v-model="cw" :class="$style.cw" :placeholder="i18n.ts.annotation" @keydown="onKeydown" @keyup="onKeyUp" @compositionend="onCompositionEnd">
<div v-if="maxCwLength - cwLength < 100" :class="['_acrylic', $style.textCount, { [$style.textOver]: cwLength > maxCwLength }]">{{ maxCwLength - cwLength }}</div>
</div>
<div :class="[$style.textOuter, { [$style.withCw]: useCw }]">
<div v-if="channel" :class="$style.colorBar" :style="{ background: channel.color }"></div>
- <textarea ref="textareaEl" v-model="text" :class="[$style.text]" :disabled="posting || posted" :readonly="textAreaReadOnly" :placeholder="placeholder" data-cy-post-form-text dir="auto" @keydown="onKeydown" @paste="onPaste" @compositionupdate="onCompositionUpdate" @compositionend="onCompositionEnd"/>
+ <textarea ref="textareaEl" v-model="text" :class="[$style.text]" :disabled="posting || posted" :readonly="textAreaReadOnly" :placeholder="placeholder" data-cy-post-form-text dir="auto" @keydown="onKeydown" @keyup="onKeyUp" @paste="onPaste" @compositionupdate="onCompositionUpdate" @compositionend="onCompositionEnd"/>
<div v-if="maxTextLength - textLength < 100" :class="['_acrylic', $style.textCount, { [$style.textOver]: textLength > maxTextLength }]">{{ maxTextLength - textLength }}</div>
</div>
<input v-show="withHashtags" ref="hashtagsInputEl" v-model="hashtags" :class="$style.hashtags" :placeholder="i18n.ts.hashtags" list="hashtags">
@@ -133,25 +133,13 @@ import { miLocalStorage } from '@/local-storage.js';
import { claimAchievement } from '@/scripts/achievements.js';
import { emojiPicker } from '@/scripts/emoji-picker.js';
import { mfmFunctionPicker } from '@/scripts/mfm-function-picker.js';
+import type { PostFormProps } from '@/types/post-form.js';
const $i = signinRequired();
const modal = inject('modal');
-const props = withDefaults(defineProps<{
- reply?: Misskey.entities.Note;
- renote?: Misskey.entities.Note;
- channel?: Misskey.entities.Channel; // TODO
- mention?: Misskey.entities.User;
- specified?: Misskey.entities.UserDetailed;
- initialText?: string;
- initialCw?: string;
- initialVisibility?: (typeof Misskey.noteVisibilities)[number];
- initialFiles?: Misskey.entities.DriveFile[];
- initialLocalOnly?: boolean;
- initialVisibleUsers?: Misskey.entities.UserDetailed[];
- initialNote?: Misskey.entities.Note;
- instant?: boolean;
+const props = withDefaults(defineProps<PostFormProps & {
fixed?: boolean;
autofocus?: boolean;
freezeAfterPosted?: boolean;
@@ -206,6 +194,7 @@ const recentHashtags = ref(JSON.parse(miLocalStorage.getItem('hashtags') ?? '[]'
const imeText = ref('');
const showingOptions = ref(false);
const textAreaReadOnly = ref(false);
+const justEndedComposition = ref(false);
const draftKey = computed((): string => {
let key = props.channel ? `channel:${props.channel.id}` : '';
@@ -591,7 +580,13 @@ function clear() {
function onKeydown(ev: KeyboardEvent) {
if (ev.key === 'Enter' && (ev.ctrlKey || ev.metaKey) && canPost.value) post();
- if (ev.key === 'Escape') emit('esc');
+ // justEndedComposition.value is for Safari, which keyDown occurs after compositionend.
+ // ev.isComposing is for another browsers.
+ if (ev.key === 'Escape' && !justEndedComposition.value && !ev.isComposing) emit('esc');
+}
+
+function onKeyup(ev: KeyboardEvent) {
+ justEndedComposition.value = false;
}
function onCompositionUpdate(ev: CompositionEvent) {
@@ -600,6 +595,7 @@ function onCompositionUpdate(ev: CompositionEvent) {
function onCompositionEnd(ev: CompositionEvent) {
imeText.value = '';
+ justEndedComposition.value = true;
}
async function onPaste(ev: ClipboardEvent) {
@@ -1002,8 +998,8 @@ function showActions(ev: MouseEvent) {
action.handler({
text: text.value,
cw: cw.value,
- }, (key, value: any) => {
- if (typeof key !== 'string') return;
+ }, (key, value) => {
+ if (typeof key !== 'string' || typeof value !== 'string') return;
if (key === 'text') { text.value = value; }
if (key === 'cw') { useCw.value = value !== null; cw.value = value; }
});
@@ -1174,7 +1170,7 @@ defineExpose({
&:focus-visible {
outline: none;
- .submitInner {
+ > .submitInner {
outline: 2px solid var(--MI_THEME-fgOnAccent);
outline-offset: -4px;
}
@@ -1189,13 +1185,13 @@ defineExpose({
}
&:not(:disabled):hover {
- > .inner {
+ > .submitInner {
background: linear-gradient(90deg, hsl(from var(--MI_THEME-accent) h s calc(l + 5)), hsl(from var(--MI_THEME-accent) h s calc(l + 5)));
}
}
&:not(:disabled):active {
- > .inner {
+ > .submitInner {
background: linear-gradient(90deg, hsl(from var(--MI_THEME-accent) h s calc(l + 5)), hsl(from var(--MI_THEME-accent) h s calc(l + 5)));
}
}
diff --git a/packages/frontend/src/components/MkPostFormAttaches.vue b/packages/frontend/src/components/MkPostFormAttaches.vue
index b3f95b75a2..11444d8d78 100644
--- a/packages/frontend/src/components/MkPostFormAttaches.vue
+++ b/packages/frontend/src/components/MkPostFormAttaches.vue
@@ -6,7 +6,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<template>
<div v-show="props.modelValue.length != 0" :class="$style.root">
<Sortable :modelValue="props.modelValue" :class="$style.files" itemKey="id" :animation="150" :delay="100" :delayOnTouchOnly="true" @update:modelValue="v => emit('update:modelValue', v)">
- <template #item="{element}">
+ <template #item="{ element }">
<div
:class="$style.file"
role="button"
@@ -38,14 +38,14 @@ import type { MenuItem } from '@/types/menu.js';
const Sortable = defineAsyncComponent(() => import('vuedraggable').then(x => x.default));
const props = defineProps<{
- modelValue: any[];
+ modelValue: Misskey.entities.DriveFile[];
detachMediaFn?: (id: string) => void;
}>();
const mock = inject<boolean>('mock', false);
const emit = defineEmits<{
- (ev: 'update:modelValue', value: any[]): void;
+ (ev: 'update:modelValue', value: Misskey.entities.DriveFile[]): void;
(ev: 'detach', id: string): void;
(ev: 'changeSensitive', file: Misskey.entities.DriveFile, isSensitive: boolean): void;
(ev: 'changeName', file: Misskey.entities.DriveFile, newName: string): void;
@@ -113,7 +113,7 @@ async function rename(file) {
});
}
-async function describe(file) {
+async function describe(file: Misskey.entities.DriveFile) {
if (mock) return;
const { dispose } = os.popup(defineAsyncComponent(() => import('@/components/MkFileCaptionEditWindow.vue')), {
diff --git a/packages/frontend/src/components/MkPostFormDialog.vue b/packages/frontend/src/components/MkPostFormDialog.vue
index 811a6378f2..122103bd8e 100644
--- a/packages/frontend/src/components/MkPostFormDialog.vue
+++ b/packages/frontend/src/components/MkPostFormDialog.vue
@@ -11,23 +11,11 @@ SPDX-License-Identifier: AGPL-3.0-only
<script lang="ts" setup>
import { shallowRef } from 'vue';
-import * as Misskey from 'misskey-js';
import MkModal from '@/components/MkModal.vue';
import MkPostForm from '@/components/MkPostForm.vue';
+import type { PostFormProps } from '@/types/post-form.js';
-const props = withDefaults(defineProps<{
- reply?: Misskey.entities.Note;
- renote?: Misskey.entities.Note;
- channel?: any; // TODO
- mention?: Misskey.entities.User;
- specified?: Misskey.entities.UserDetailed;
- initialText?: string;
- initialCw?: string;
- initialVisibility?: (typeof Misskey.noteVisibilities)[number];
- initialFiles?: Misskey.entities.DriveFile[];
- initialLocalOnly?: boolean;
- initialVisibleUsers?: Misskey.entities.UserDetailed[];
- initialNote?: Misskey.entities.Note;
+const props = withDefaults(defineProps<PostFormProps & {
instant?: boolean;
fixed?: boolean;
autofocus?: boolean;
diff --git a/packages/frontend/src/components/MkRadio.vue b/packages/frontend/src/components/MkRadio.vue
index fc5ea59a3c..5bd50170d8 100644
--- a/packages/frontend/src/components/MkRadio.vue
+++ b/packages/frontend/src/components/MkRadio.vue
@@ -24,17 +24,17 @@ SPDX-License-Identifier: AGPL-3.0-only
</div>
</template>
-<script lang="ts" setup>
+<script lang="ts" setup generic="T extends unknown">
import { computed } from 'vue';
const props = defineProps<{
- modelValue: any;
- value: any;
+ modelValue: T;
+ value: T;
disabled?: boolean;
}>();
const emit = defineEmits<{
- (ev: 'update:modelValue', value: any): void;
+ (ev: 'update:modelValue', value: T): void;
}>();
const checked = computed(() => props.modelValue === props.value);
diff --git a/packages/frontend/src/components/MkReactionsViewer.details.vue b/packages/frontend/src/components/MkReactionsViewer.details.vue
index a12bb55fa3..e60ac86315 100644
--- a/packages/frontend/src/components/MkReactionsViewer.details.vue
+++ b/packages/frontend/src/components/MkReactionsViewer.details.vue
@@ -23,6 +23,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<script lang="ts" setup>
import { } from 'vue';
+import * as Misskey from 'misskey-js';
import { getEmojiName } from '@@/js/emojilist.js';
import MkTooltip from './MkTooltip.vue';
import MkReactionIcon from '@/components/MkReactionIcon.vue';
@@ -30,7 +31,7 @@ import MkReactionIcon from '@/components/MkReactionIcon.vue';
defineProps<{
showing: boolean;
reaction: string;
- users: any[]; // TODO
+ users: Misskey.entities.UserLite[];
count: number;
targetElement: HTMLElement;
}>();
diff --git a/packages/frontend/src/components/MkSelect.vue b/packages/frontend/src/components/MkSelect.vue
index ca988178e1..79a56b68a8 100644
--- a/packages/frontend/src/components/MkSelect.vue
+++ b/packages/frontend/src/components/MkSelect.vue
@@ -16,9 +16,8 @@ SPDX-License-Identifier: AGPL-3.0-only
@keydown.space.enter="show"
>
<div ref="prefixEl" :class="$style.prefix"><slot name="prefix"></slot></div>
- <select
+ <div
ref="inputEl"
- v-model="v"
v-adaptive-border
tabindex="-1"
:class="$style.inputCore"
@@ -26,55 +25,48 @@ SPDX-License-Identifier: AGPL-3.0-only
:required="required"
:readonly="readonly"
:placeholder="placeholder"
- @input="onInput"
@mousedown.prevent="() => {}"
@keydown.prevent="() => {}"
>
- <slot></slot>
- </select>
+ <div style="pointer-events: none;">{{ currentValueText ?? '' }}</div>
+ <div style="display: none;">
+ <slot></slot>
+ </div>
+ </div>
<div ref="suffixEl" :class="$style.suffix"><i class="ti ti-chevron-down" :class="[$style.chevron, { [$style.chevronOpening]: opening }]"></i></div>
</div>
<div :class="$style.caption"><slot name="caption"></slot></div>
-
- <MkButton v-if="manualSave && changed" primary :class="$style.save" @click="updated"><i class="ti ti-device-floppy"></i> {{ i18n.ts.save }}</MkButton>
</div>
</template>
<script lang="ts" setup>
import { onMounted, nextTick, ref, watch, computed, toRefs, VNode, useSlots, VNodeChild } from 'vue';
-import MkButton from '@/components/MkButton.vue';
-import * as os from '@/os.js';
import { useInterval } from '@@/js/use-interval.js';
-import { i18n } from '@/i18n.js';
import type { MenuItem } from '@/types/menu.js';
+import * as os from '@/os.js';
const props = defineProps<{
- modelValue: string | null;
+ modelValue: string | number | null;
required?: boolean;
readonly?: boolean;
disabled?: boolean;
placeholder?: string;
autofocus?: boolean;
inline?: boolean;
- manualSave?: boolean;
small?: boolean;
large?: boolean;
}>();
const emit = defineEmits<{
- (ev: 'changeByUser', value: string | null): void;
- (ev: 'update:modelValue', value: string | null): void;
+ (ev: 'update:modelValue', value: string | number | null): void;
}>();
const slots = useSlots();
const { modelValue, autofocus } = toRefs(props);
-const v = ref(modelValue.value);
const focused = ref(false);
const opening = ref(false);
-const changed = ref(false);
-const invalid = ref(false);
-const filled = computed(() => v.value !== '' && v.value != null);
+const currentValueText = ref<string | null>(null);
const inputEl = ref<HTMLObjectElement | null>(null);
const prefixEl = ref<HTMLElement | null>(null);
const suffixEl = ref<HTMLElement | null>(null);
@@ -85,26 +77,6 @@ const height =
36;
const focus = () => container.value?.focus();
-const onInput = (ev) => {
- changed.value = true;
-};
-
-const updated = () => {
- changed.value = false;
- emit('update:modelValue', v.value);
-};
-
-watch(modelValue, newValue => {
- v.value = newValue;
-});
-
-watch(v, () => {
- if (!props.manualSave) {
- updated();
- }
-
- invalid.value = inputEl.value?.validity.badInput ?? true;
-});
// ã“ã®ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆãŒä½œæˆã•ã‚ŒãŸæ™‚ã€éžè¡¨ç¤ºçŠ¶æ…‹ã§ã‚ã‚‹å ´åˆãŒã‚ã‚‹
// éžè¡¨ç¤ºçŠ¶æ…‹ã ã¨è¦ç´ ã®å¹…ãªã©ã¯0ã«ãªã£ã¦ã—ã¾ã†ã®ã§ã€å®šæœŸçš„ã«è¨ˆç®—ã™ã‚‹
@@ -134,6 +106,31 @@ onMounted(() => {
});
});
+watch(modelValue, () => {
+ const scanOptions = (options: VNodeChild[]) => {
+ for (const vnode of options) {
+ if (typeof vnode !== 'object' || vnode === null || Array.isArray(vnode)) continue;
+ if (vnode.type === 'optgroup') {
+ const optgroup = vnode;
+ if (Array.isArray(optgroup.children)) scanOptions(optgroup.children);
+ } else if (Array.isArray(vnode.children)) { // 何故ã‹ãƒ•ラグメントã«ãªã£ã¦ãã‚‹ã“ã¨ãŒã‚ã‚‹
+ const fragment = vnode;
+ if (Array.isArray(fragment.children)) scanOptions(fragment.children);
+ } else if (vnode.props == null) { // v-if ã§æ¡ä»¶ãŒ false ã®ã¨ãã«ã“ã†ãªã‚‹
+ // nop?
+ } else {
+ const option = vnode;
+ if (option.props?.value === modelValue.value) {
+ currentValueText.value = option.children as string;
+ break;
+ }
+ }
+ }
+ };
+
+ scanOptions(slots.default!());
+}, { immediate: true });
+
function show() {
if (opening.value) return;
focus();
@@ -146,11 +143,9 @@ function show() {
const pushOption = (option: VNode) => {
menu.push({
text: option.children as string,
- active: computed(() => v.value === option.props?.value),
+ active: computed(() => modelValue.value === option.props?.value),
action: () => {
- v.value = option.props?.value;
- changed.value = true;
- emit('changeByUser', v.value);
+ emit('update:modelValue', option.props?.value);
},
});
};
@@ -248,7 +243,8 @@ function show() {
.inputCore {
appearance: none;
-webkit-appearance: none;
- display: block;
+ display: flex;
+ align-items: center;
height: v-bind("height + 'px'");
width: 100%;
margin: 0;
diff --git a/packages/frontend/src/components/MkSignin.password.vue b/packages/frontend/src/components/MkSignin.password.vue
index b692e341c3..ff7c598b50 100644
--- a/packages/frontend/src/components/MkSignin.password.vue
+++ b/packages/frontend/src/components/MkSignin.password.vue
@@ -24,12 +24,12 @@ SPDX-License-Identifier: AGPL-3.0-only
</MkInput>
<div v-if="needCaptcha">
- <MkCaptcha v-if="instance.enableHcaptcha" ref="hcaptcha" v-model="hCaptchaResponse" :class="$style.captcha" provider="hcaptcha" :sitekey="instance.hcaptchaSiteKey"/>
- <MkCaptcha v-if="instance.enableMcaptcha" ref="mcaptcha" v-model="mCaptchaResponse" :class="$style.captcha" provider="mcaptcha" :sitekey="instance.mcaptchaSiteKey" :instanceUrl="instance.mcaptchaInstanceUrl"/>
- <MkCaptcha v-if="instance.enableRecaptcha" ref="recaptcha" v-model="reCaptchaResponse" :class="$style.captcha" provider="recaptcha" :sitekey="instance.recaptchaSiteKey"/>
- <MkCaptcha v-if="instance.enableTurnstile" ref="turnstile" v-model="turnstileResponse" :class="$style.captcha" provider="turnstile" :sitekey="instance.turnstileSiteKey"/>
- <MkCaptcha v-if="instance.enableFC" ref="fc" v-model="fcResponse" :class="$style.captcha" provider="fc" :sitekey="instance.fcSiteKey"/>
- <MkCaptcha v-if="instance.enableTestcaptcha" ref="testcaptcha" v-model="testcaptchaResponse" :class="$style.captcha" provider="testcaptcha"/>
+ <MkCaptcha v-if="instance.enableHcaptcha" ref="hcaptcha" v-model="hCaptchaResponse" provider="hcaptcha" :sitekey="instance.hcaptchaSiteKey"/>
+ <MkCaptcha v-if="instance.enableMcaptcha" ref="mcaptcha" v-model="mCaptchaResponse" provider="mcaptcha" :sitekey="instance.mcaptchaSiteKey" :instanceUrl="instance.mcaptchaInstanceUrl"/>
+ <MkCaptcha v-if="instance.enableRecaptcha" ref="recaptcha" v-model="reCaptchaResponse" provider="recaptcha" :sitekey="instance.recaptchaSiteKey"/>
+ <MkCaptcha v-if="instance.enableTurnstile" ref="turnstile" v-model="turnstileResponse" provider="turnstile" :sitekey="instance.turnstileSiteKey"/>
+ <MkCaptcha v-if="instance.enableFC" ref="fc" v-model="fcResponse" provider="fc" :sitekey="instance.fcSiteKey"/>
+ <MkCaptcha v-if="instance.enableTestcaptcha" ref="testcaptcha" v-model="testcaptchaResponse" provider="testcaptcha"/>
</div>
<MkButton type="submit" :disabled="needCaptcha && captchaFailed" large primary rounded style="margin: 0 auto;" data-cy-signin-page-password-continue>{{ i18n.ts.continue }} <i class="ti ti-arrow-right"></i></MkButton>
diff --git a/packages/frontend/src/components/MkSignupDialog.form.vue b/packages/frontend/src/components/MkSignupDialog.form.vue
index f0b440d2ef..e636712389 100644
--- a/packages/frontend/src/components/MkSignupDialog.form.vue
+++ b/packages/frontend/src/components/MkSignupDialog.form.vue
@@ -289,7 +289,7 @@ async function onSubmit(): Promise<void> {
return null;
});
- if (res) {
+ if (res && res.ok) {
if (res.status === 204 || instance.emailRequiredForSignup) {
os.alert({
type: 'success',
@@ -314,6 +314,8 @@ async function onSubmit(): Promise<void> {
await login(resJson.token);
}
}
+ } else {
+ onSignupApiError();
}
submitting.value = false;
diff --git a/packages/frontend/src/components/MkSignupDialog.vue b/packages/frontend/src/components/MkSignupDialog.vue
index b8e6318d17..291c3ecc2f 100644
--- a/packages/frontend/src/components/MkSignupDialog.vue
+++ b/packages/frontend/src/components/MkSignupDialog.vue
@@ -8,8 +8,8 @@ SPDX-License-Identifier: AGPL-3.0-only
ref="dialog"
:width="500"
:height="600"
- @close="dialog?.close()"
- @closed="$emit('closed')"
+ @close="onClose"
+ @closed="emit('closed')"
>
<template #header>{{ i18n.ts.signup }}</template>
@@ -22,7 +22,7 @@ SPDX-License-Identifier: AGPL-3.0-only
:leaveToClass="$style.transition_x_leaveTo"
>
<template v-if="!isAcceptedServerRule">
- <XServerRules @done="isAcceptedServerRule = true" @cancel="dialog?.close()"/>
+ <XServerRules @done="isAcceptedServerRule = true" @cancel="onClose"/>
</template>
<template v-else>
<XSignup :autoSet="autoSet" @signup="onSignup" @signupEmailPending="onSignupEmailPending" @approvalPending="onApprovalPending"/>
@@ -48,6 +48,7 @@ const props = withDefaults(defineProps<{
const emit = defineEmits<{
(ev: 'done', res: Misskey.entities.SignupResponse): void;
+ (ev: 'cancelled'): void;
(ev: 'closed'): void;
}>();
@@ -55,6 +56,11 @@ const dialog = shallowRef<InstanceType<typeof MkModalWindow>>();
const isAcceptedServerRule = ref(false);
+function onClose() {
+ emit('cancelled');
+ dialog.value?.close();
+}
+
function onSignup(res: Misskey.entities.SignupResponse) {
emit('done', res);
dialog.value?.close();
diff --git a/packages/frontend/src/components/MkSuperMenu.vue b/packages/frontend/src/components/MkSuperMenu.vue
index e8ed7f6e04..c9c173aa35 100644
--- a/packages/frontend/src/components/MkSuperMenu.vue
+++ b/packages/frontend/src/components/MkSuperMenu.vue
@@ -28,11 +28,38 @@ SPDX-License-Identifier: AGPL-3.0-only
</div>
</template>
-<script lang="ts" setup>
-import { } from 'vue';
+<script lang="ts">
+export type SuperMenuDef = {
+ title?: string;
+ items: ({
+ type: 'a';
+ href: string;
+ target?: string;
+ icon?: string;
+ text: string;
+ danger?: boolean;
+ active?: boolean;
+ } | {
+ type: 'button';
+ icon?: string;
+ text: string;
+ danger?: boolean;
+ active?: boolean;
+ action: (ev: MouseEvent) => void;
+ } | {
+ type: 'link';
+ to: string;
+ icon?: string;
+ text: string;
+ danger?: boolean;
+ active?: boolean;
+ })[];
+};
+</script>
+<script lang="ts" setup>
defineProps<{
- def: any[];
+ def: SuperMenuDef[];
grid?: boolean;
}>();
</script>
diff --git a/packages/frontend/src/components/MkTimeline.vue b/packages/frontend/src/components/MkTimeline.vue
index b69c19eb9e..7a9abab62e 100644
--- a/packages/frontend/src/components/MkTimeline.vue
+++ b/packages/frontend/src/components/MkTimeline.vue
@@ -39,10 +39,12 @@ const props = withDefaults(defineProps<{
withRenotes?: boolean;
withReplies?: boolean;
withBots?: boolean;
+ withSensitive?: boolean;
onlyFiles?: boolean;
}>(), {
withRenotes: true,
withReplies: false,
+ withSensitive: true,
onlyFiles: false,
withBots: true,
});
@@ -53,6 +55,7 @@ const emit = defineEmits<{
}>();
provide('inTimeline', true);
+provide('tl_withSensitive', computed(() => props.withSensitive));
provide('inChannel', computed(() => props.src === 'channel'));
type TimelineQueryType = {
@@ -275,6 +278,9 @@ function refreshEndpointAndChannel() {
// IDãŒåˆ‡ã‚Šæ›¿ã‚ã£ãŸã‚‰åˆ‡ã‚Šæ›¿ãˆå…ˆã®TLを表示ã•ã›ãŸã„
watch(() => [props.list, props.antenna, props.channel, props.role, props.withRenotes], refreshEndpointAndChannel);
+// withSensitiveã¯ã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆã§å®Œçµã™ã‚‹å‡¦ç†ã®ãŸã‚ã€å˜ã«ãƒªãƒ­ãƒ¼ãƒ‰ã™ã‚‹ã ã‘ã§OK
+watch(() => props.withSensitive, reloadTimeline);
+
// åˆå›žè¡¨ç¤ºç”¨
refreshEndpointAndChannel();
diff --git a/packages/frontend/src/components/MkTokenGenerateWindow.vue b/packages/frontend/src/components/MkTokenGenerateWindow.vue
index a7bc3f37f1..73aef68964 100644
--- a/packages/frontend/src/components/MkTokenGenerateWindow.vue
+++ b/packages/frontend/src/components/MkTokenGenerateWindow.vue
@@ -12,7 +12,7 @@ SPDX-License-Identifier: AGPL-3.0-only
:okButtonDisabled="false"
:canClose="false"
@close="dialog?.close()"
- @closed="$emit('closed')"
+ @closed="emit('closed')"
@ok="ok()"
>
<template #header>{{ title || i18n.ts.generateAccessToken }}</template>
diff --git a/packages/frontend/src/components/MkUrlPreview.vue b/packages/frontend/src/components/MkUrlPreview.vue
index 98b65aca84..0808a052cd 100644
--- a/packages/frontend/src/components/MkUrlPreview.vue
+++ b/packages/frontend/src/components/MkUrlPreview.vue
@@ -180,7 +180,7 @@ window.fetch(`/url?url=${encodeURIComponent(requestUrl.href)}&lang=${versatileLa
sensitive.value = info.sensitive ?? false;
});
-function adjustTweetHeight(message: any) {
+function adjustTweetHeight(message: MessageEvent) {
if (message.origin !== 'https://platform.twitter.com') return;
const embed = message.data?.['twttr.embed'];
if (embed?.method !== 'twttr.private.resize') return;
@@ -193,14 +193,16 @@ function openPlayer(): void {
const { dispose } = os.popup(defineAsyncComponent(() => import('@/components/MkYouTubePlayer.vue')), {
url: requestUrl.href,
}, {
- // TODO
+ closed: () => {
+ dispose();
+ },
});
}
-(window as any).addEventListener('message', adjustTweetHeight);
+window.addEventListener('message', adjustTweetHeight);
onUnmounted(() => {
- (window as any).removeEventListener('message', adjustTweetHeight);
+ window.removeEventListener('message', adjustTweetHeight);
});
</script>
diff --git a/packages/frontend/src/components/MkUserAnnouncementEditDialog.vue b/packages/frontend/src/components/MkUserAnnouncementEditDialog.vue
index 7a2b5f5ddc..fe499fabbf 100644
--- a/packages/frontend/src/components/MkUserAnnouncementEditDialog.vue
+++ b/packages/frontend/src/components/MkUserAnnouncementEditDialog.vue
@@ -8,7 +8,7 @@ SPDX-License-Identifier: AGPL-3.0-only
ref="dialog"
:width="400"
@close="dialog?.close()"
- @closed="$emit('closed')"
+ @closed="emit('closed')"
>
<template v-if="announcement" #header>:{{ announcement.title }}:</template>
<template v-else #header>New announcement</template>
@@ -62,9 +62,16 @@ import MkTextarea from '@/components/MkTextarea.vue';
import MkSwitch from '@/components/MkSwitch.vue';
import MkRadios from '@/components/MkRadios.vue';
+type AdminAnnouncementType = Misskey.entities.AdminAnnouncementsCreateRequest & { id: string; }
+
const props = defineProps<{
user: Misskey.entities.User,
- announcement?: Misskey.entities.Announcement,
+ announcement?: Required<AdminAnnouncementType>,
+}>();
+
+const emit = defineEmits<{
+ (ev: 'done', v: { deleted?: boolean; updated?: AdminAnnouncementType; created?: AdminAnnouncementType; }): void,
+ (ev: 'closed'): void
}>();
const dialog = ref<InstanceType<typeof MkModalWindow> | null>(null);
@@ -74,11 +81,6 @@ const icon = ref(props.announcement ? props.announcement.icon : 'info');
const display = ref(props.announcement ? props.announcement.display : 'dialog');
const needConfirmationToRead = ref(props.announcement ? props.announcement.needConfirmationToRead : false);
-const emit = defineEmits<{
- (ev: 'done', v: { deleted?: boolean; updated?: any; created?: any }): void,
- (ev: 'closed'): void
-}>();
-
async function done() {
const params = {
title: title.value,
@@ -88,7 +90,7 @@ async function done() {
display: display.value,
needConfirmationToRead: needConfirmationToRead.value,
userId: props.user.id,
- };
+ } satisfies Misskey.entities.AdminAnnouncementsCreateRequest;
if (props.announcement) {
await os.apiWithDialog('admin/announcements/update', {
diff --git a/packages/frontend/src/components/MkUserSelectDialog.vue b/packages/frontend/src/components/MkUserSelectDialog.vue
index 7c11744368..85d4666172 100644
--- a/packages/frontend/src/components/MkUserSelectDialog.vue
+++ b/packages/frontend/src/components/MkUserSelectDialog.vue
@@ -11,7 +11,7 @@ SPDX-License-Identifier: AGPL-3.0-only
@click="cancel()"
@close="cancel()"
@ok="ok()"
- @closed="$emit('closed')"
+ @closed="emit('closed')"
>
<template #header>{{ i18n.ts.selectUser }}</template>
<div>
diff --git a/packages/frontend/src/components/MkUsersTooltip.vue b/packages/frontend/src/components/MkUsersTooltip.vue
index 054a503257..0cb7f22e93 100644
--- a/packages/frontend/src/components/MkUsersTooltip.vue
+++ b/packages/frontend/src/components/MkUsersTooltip.vue
@@ -16,12 +16,12 @@ SPDX-License-Identifier: AGPL-3.0-only
</template>
<script lang="ts" setup>
-import { } from 'vue';
+import * as Misskey from 'misskey-js';
import MkTooltip from './MkTooltip.vue';
defineProps<{
showing: boolean;
- users: any[]; // TODO
+ users: Misskey.entities.UserLite[];
count: number;
targetElement: HTMLElement;
}>();
diff --git a/packages/frontend/src/components/MkWidgets.vue b/packages/frontend/src/components/MkWidgets.vue
index 7a1d9f4728..b987283a65 100644
--- a/packages/frontend/src/components/MkWidgets.vue
+++ b/packages/frontend/src/components/MkWidgets.vue
@@ -12,7 +12,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<option v-for="widget in widgetDefs" :key="widget" :value="widget">{{ i18n.ts._widgets[widget] }}</option>
</MkSelect>
<MkButton inline primary data-cy-widget-add @click="addWidget"><i class="ti ti-plus"></i> {{ i18n.ts.add }}</MkButton>
- <MkButton inline @click="$emit('exit')">{{ i18n.ts.close }}</MkButton>
+ <MkButton inline @click="emit('exit')">{{ i18n.ts.close }}</MkButton>
</header>
<Sortable
:modelValue="props.widgets"
diff --git a/packages/frontend/src/components/MkWindow.vue b/packages/frontend/src/components/MkWindow.vue
index 056b6a37ed..2953f656d4 100644
--- a/packages/frontend/src/components/MkWindow.vue
+++ b/packages/frontend/src/components/MkWindow.vue
@@ -10,7 +10,7 @@ SPDX-License-Identifier: AGPL-3.0-only
:enterFromClass="defaultStore.state.animation ? $style.transition_window_enterFrom : ''"
:leaveToClass="defaultStore.state.animation ? $style.transition_window_leaveTo : ''"
appear
- @afterLeave="$emit('closed')"
+ @afterLeave="emit('closed')"
>
<div v-if="showing" ref="rootEl" :class="[$style.root, { [$style.maximized]: maximized }]">
<div :class="$style.body" class="_shadow" @mousedown="onBodyMousedown" @keydown="onKeydown">
@@ -60,6 +60,13 @@ import * as os from '@/os.js';
import { i18n } from '@/i18n.js';
import { defaultStore } from '@/store.js';
+type WindowButton = {
+ title: string;
+ icon: string;
+ onClick: () => void;
+ highlighted?: boolean;
+};
+
const minHeight = 50;
const minWidth = 250;
@@ -87,8 +94,8 @@ const props = withDefaults(defineProps<{
mini?: boolean;
front?: boolean;
contextmenu?: MenuItem[] | null;
- buttonsLeft?: any[];
- buttonsRight?: any[];
+ buttonsLeft?: WindowButton[];
+ buttonsRight?: WindowButton[];
}>(), {
initialWidth: 400,
initialHeight: null,
diff --git a/packages/frontend/src/components/form/suspense.vue b/packages/frontend/src/components/form/suspense.vue
index 5226c61d68..821f07510b 100644
--- a/packages/frontend/src/components/form/suspense.vue
+++ b/packages/frontend/src/components/form/suspense.vue
@@ -18,19 +18,19 @@ SPDX-License-Identifier: AGPL-3.0-only
</div>
</template>
-<script lang="ts" setup>
+<script lang="ts" setup generic="T extends unknown">
import { ref, watch } from 'vue';
import MkButton from '@/components/MkButton.vue';
import { i18n } from '@/i18n.js';
const props = defineProps<{
- p: () => Promise<any>;
+ p: () => Promise<T>;
}>();
const pending = ref(true);
const resolved = ref(false);
const rejected = ref(false);
-const result = ref<any>(null);
+const result = ref<T | null>(null);
const process = () => {
if (props.p == null) {
diff --git a/packages/frontend/src/components/global/MkAd.vue b/packages/frontend/src/components/global/MkAd.vue
index fdfc429f4a..fc6c64d2aa 100644
--- a/packages/frontend/src/components/global/MkAd.vue
+++ b/packages/frontend/src/components/global/MkAd.vue
@@ -4,7 +4,7 @@ SPDX-License-Identifier: AGPL-3.0-only
-->
<template>
-<div v-if="chosen && !shouldHide" :class="$style.root">
+<div v-if="chosen && !shouldHide">
<div
v-if="!showMenu"
:class="[$style.main, {
@@ -120,10 +120,6 @@ function reduceFrequency(): void {
</script>
<style lang="scss" module>
-.root {
-
-}
-
.main {
text-align: center;
diff --git a/packages/frontend/src/components/global/MkCustomEmoji.vue b/packages/frontend/src/components/global/MkCustomEmoji.vue
index fbc716016c..90fa522f3d 100644
--- a/packages/frontend/src/components/global/MkCustomEmoji.vue
+++ b/packages/frontend/src/components/global/MkCustomEmoji.vue
@@ -25,17 +25,18 @@ SPDX-License-Identifier: AGPL-3.0-only
</template>
<script lang="ts" setup>
-import { computed, inject, ref } from 'vue';
+import { computed, defineAsyncComponent, inject, ref } from 'vue';
+import type { MenuItem } from '@/types/menu.js';
import { getProxiedImageUrl, getStaticImageUrl } from '@/scripts/media-proxy.js';
import { defaultStore } from '@/store.js';
import { customEmojisMap } from '@/custom-emojis.js';
import * as os from '@/os.js';
-import { misskeyApiGet } from '@/scripts/misskey-api.js';
+import { misskeyApi, misskeyApiGet } from '@/scripts/misskey-api.js';
import { copyToClipboard } from '@/scripts/copy-to-clipboard.js';
import * as sound from '@/scripts/sound.js';
import { i18n } from '@/i18n.js';
import MkCustomEmojiDetailedDialog from '@/components/MkCustomEmojiDetailedDialog.vue';
-import type { MenuItem } from '@/types/menu.js';
+import { $i } from '@/account.js';
const props = defineProps<{
name: string;
@@ -127,9 +128,31 @@ function onClick(ev: MouseEvent) {
},
});
+ if ($i?.isModerator ?? $i?.isAdmin) {
+ menuItems.push({
+ text: i18n.ts.edit,
+ icon: 'ti ti-pencil',
+ action: async () => {
+ await edit(props.name);
+ },
+ });
+ }
+
os.popupMenu(menuItems, ev.currentTarget ?? ev.target);
}
}
+
+async function edit(name: string) {
+ const emoji = await misskeyApi('emoji', {
+ name: name,
+ });
+ const { dispose } = os.popup(defineAsyncComponent(() => import('@/pages/emoji-edit-dialog.vue')), {
+ emoji: emoji,
+ }, {
+ closed: () => dispose(),
+ });
+}
+
</script>
<style lang="scss" module>
diff --git a/packages/frontend/src/components/global/MkMfm.ts b/packages/frontend/src/components/global/MkMfm.ts
index a45e531932..1039572a06 100644
--- a/packages/frontend/src/components/global/MkMfm.ts
+++ b/packages/frontend/src/components/global/MkMfm.ts
@@ -532,8 +532,8 @@ export default function (props: MfmProps, { emit }: { emit: SetupContext<MfmEven
}
default: {
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
- console.error('unrecognized ast type:', (token as any).type);
+ // @ts-expect-error 存在ã—ãªã„ASTタイプ
+ console.error('unrecognized ast type:', token.type);
return [];
}
diff --git a/packages/frontend/src/components/global/MkPageHeader.tabs.vue b/packages/frontend/src/components/global/MkPageHeader.tabs.vue
index acf2933743..ffa6f13ff6 100644
--- a/packages/frontend/src/components/global/MkPageHeader.tabs.vue
+++ b/packages/frontend/src/components/global/MkPageHeader.tabs.vue
@@ -53,7 +53,7 @@ export type Tab = {
</script>
<script lang="ts" setup>
-import { onMounted, onUnmounted, watch, nextTick, shallowRef } from 'vue';
+import { nextTick, onMounted, onUnmounted, shallowRef, watch } from 'vue';
import { defaultStore } from '@/store.js';
const props = withDefaults(defineProps<{
@@ -120,14 +120,14 @@ function onTabWheel(ev: WheelEvent) {
let entering = false;
-async function enter(element: Element) {
+async function enter(el: Element) {
+ if (!(el instanceof HTMLElement)) return;
entering = true;
- const el = element as HTMLElement;
const elementWidth = el.getBoundingClientRect().width;
el.style.width = '0';
el.style.paddingLeft = '0';
- el.offsetWidth; // force reflow
- el.style.width = elementWidth + 'px';
+ el.offsetWidth; // reflow
+ el.style.width = `${elementWidth}px`;
el.style.paddingLeft = '';
nextTick(() => {
entering = false;
@@ -136,22 +136,23 @@ async function enter(element: Element) {
setTimeout(renderTab, 170);
}
-function afterEnter(element: Element) {
- //el.style.width = '';
+function afterEnter(el: Element) {
+ if (!(el instanceof HTMLElement)) return;
+ // element.style.width = '';
}
-async function leave(element: Element) {
- const el = element as HTMLElement;
+async function leave(el: Element) {
+ if (!(el instanceof HTMLElement)) return;
const elementWidth = el.getBoundingClientRect().width;
- el.style.width = elementWidth + 'px';
+ el.style.width = `${elementWidth}px`;
el.style.paddingLeft = '';
- el.offsetWidth; // force reflow
+ el.offsetWidth; // reflow
el.style.width = '0';
el.style.paddingLeft = '0';
}
-function afterLeave(element: Element) {
- const el = element as HTMLElement;
+function afterLeave(el: Element) {
+ if (!(el instanceof HTMLElement)) return;
el.style.width = '';
}
diff --git a/packages/frontend/src/directives/adaptive-bg.ts b/packages/frontend/src/directives/adaptive-bg.ts
index 45891de889..f88996019f 100644
--- a/packages/frontend/src/directives/adaptive-bg.ts
+++ b/packages/frontend/src/directives/adaptive-bg.ts
@@ -4,19 +4,11 @@
*/
import { Directive } from 'vue';
+import { getBgColor } from '@/scripts/get-bg-color.js';
export default {
mounted(src, binding, vn) {
- const getBgColor = (el: HTMLElement) => {
- const style = window.getComputedStyle(el);
- if (style.backgroundColor && !['rgba(0, 0, 0, 0)', 'rgba(0,0,0,0)', 'transparent'].includes(style.backgroundColor)) {
- return style.backgroundColor;
- } else {
- return el.parentElement ? getBgColor(el.parentElement) : 'transparent';
- }
- };
-
- const parentBg = getBgColor(src.parentElement);
+ const parentBg = getBgColor(src.parentElement) ?? 'transparent';
const myBg = window.getComputedStyle(src).backgroundColor;
diff --git a/packages/frontend/src/directives/adaptive-border.ts b/packages/frontend/src/directives/adaptive-border.ts
index 685ca38e96..1305f312bd 100644
--- a/packages/frontend/src/directives/adaptive-border.ts
+++ b/packages/frontend/src/directives/adaptive-border.ts
@@ -4,19 +4,11 @@
*/
import { Directive } from 'vue';
+import { getBgColor } from '@/scripts/get-bg-color.js';
export default {
mounted(src, binding, vn) {
- const getBgColor = (el: HTMLElement) => {
- const style = window.getComputedStyle(el);
- if (style.backgroundColor && !['rgba(0, 0, 0, 0)', 'rgba(0,0,0,0)', 'transparent'].includes(style.backgroundColor)) {
- return style.backgroundColor;
- } else {
- return el.parentElement ? getBgColor(el.parentElement) : 'transparent';
- }
- };
-
- const parentBg = getBgColor(src.parentElement);
+ const parentBg = getBgColor(src.parentElement) ?? 'transparent';
const myBg = window.getComputedStyle(src).backgroundColor;
diff --git a/packages/frontend/src/directives/panel.ts b/packages/frontend/src/directives/panel.ts
index 7b5969c679..aa26b94d0b 100644
--- a/packages/frontend/src/directives/panel.ts
+++ b/packages/frontend/src/directives/panel.ts
@@ -4,19 +4,11 @@
*/
import { Directive } from 'vue';
+import { getBgColor } from '@/scripts/get-bg-color.js';
export default {
mounted(src, binding, vn) {
- const getBgColor = (el: HTMLElement) => {
- const style = window.getComputedStyle(el);
- if (style.backgroundColor && !['rgba(0, 0, 0, 0)', 'rgba(0,0,0,0)', 'transparent'].includes(style.backgroundColor)) {
- return style.backgroundColor;
- } else {
- return el.parentElement ? getBgColor(el.parentElement) : 'transparent';
- }
- };
-
- const parentBg = getBgColor(src.parentElement);
+ const parentBg = getBgColor(src.parentElement) ?? 'transparent';
const myBg = getComputedStyle(document.documentElement).getPropertyValue('--MI_THEME-panel');
diff --git a/packages/frontend/src/nirax.ts b/packages/frontend/src/nirax.ts
index 25f853453a..965bd6f0bc 100644
--- a/packages/frontend/src/nirax.ts
+++ b/packages/frontend/src/nirax.ts
@@ -36,6 +36,8 @@ interface RouteDefWithRedirect extends RouteDefBase {
export type RouteDef = RouteDefWithComponent | RouteDefWithRedirect;
+export type RouterFlag = 'forcePage';
+
type ParsedPath = (string | {
name: string;
startsWith?: string;
@@ -107,7 +109,7 @@ export interface IRouter extends EventEmitter<RouterEvent> {
current: Resolved;
currentRef: ShallowRef<Resolved>;
currentRoute: ShallowRef<RouteDef>;
- navHook: ((path: string, flag?: any) => boolean) | null;
+ navHook: ((path: string, flag?: RouterFlag) => boolean) | null;
/**
* ルートã®åˆæœŸåŒ–(eventListenerã®å®šç¾©å¾Œã«å¿…ãšå‘¼ã³å‡ºã™ã“ã¨ï¼‰
@@ -116,11 +118,11 @@ export interface IRouter extends EventEmitter<RouterEvent> {
resolve(path: string): Resolved | null;
- getCurrentPath(): any;
+ getCurrentPath(): string;
getCurrentKey(): string;
- push(path: string, flag?: any): void;
+ push(path: string, flag?: RouterFlag): void;
replace(path: string, key?: string | null): void;
@@ -197,7 +199,7 @@ export class Router extends EventEmitter<RouterEvent> implements IRouter {
private currentKey = Date.now().toString();
private redirectCount = 0;
- public navHook: ((path: string, flag?: any) => boolean) | null = null;
+ public navHook: ((path: string, flag?: RouterFlag) => boolean) | null = null;
constructor(routes: Router['routes'], currentPath: Router['currentPath'], isLoggedIn: boolean, notFoundPageComponent: Component) {
super();
@@ -404,7 +406,7 @@ export class Router extends EventEmitter<RouterEvent> implements IRouter {
return this.currentKey;
}
- public push(path: string, flag?: any) {
+ public push(path: string, flag?: RouterFlag) {
const beforePath = this.currentPath;
if (path === beforePath) {
this.emit('same');
diff --git a/packages/frontend/src/os.ts b/packages/frontend/src/os.ts
index 5d3d4c0a55..7887662506 100644
--- a/packages/frontend/src/os.ts
+++ b/packages/frontend/src/os.ts
@@ -28,12 +28,13 @@ import { pleaseLogin } from '@/scripts/please-login.js';
import { showMovedDialog } from '@/scripts/show-moved-dialog.js';
import { getHTMLElementOrNull } from '@/scripts/get-dom-node-or-null.js';
import { focusParent } from '@/scripts/focus.js';
+import type { PostFormProps } from '@/types/post-form.js';
export const openingWindowsCount = ref(0);
-export const apiWithDialog = (<E extends keyof Misskey.Endpoints = keyof Misskey.Endpoints, P extends Misskey.Endpoints[E]['req'] = Misskey.Endpoints[E]['req']>(
+export const apiWithDialog = (<E extends keyof Misskey.Endpoints, P extends Misskey.Endpoints[E]['req'] = Misskey.Endpoints[E]['req']>(
endpoint: E,
- data: P = {} as any,
+ data: P,
token?: string | null | undefined,
customErrors?: Record<string, { title?: string; text: string; }>,
) => {
@@ -94,7 +95,7 @@ export const apiWithDialog = (<E extends keyof Misskey.Endpoints = keyof Misskey
export function promiseDialog<T extends Promise<any>>(
promise: T,
- onSuccess?: ((res: any) => void) | null,
+ onSuccess?: ((res: Awaited<T>) => void) | null,
onFailure?: ((err: Misskey.api.APIError) => void) | null,
text?: string,
): T {
@@ -143,12 +144,12 @@ export function promiseDialog<T extends Promise<any>>(
}
let popupIdCount = 0;
-export const popups = ref([]) as Ref<{
+export const popups = ref<{
id: number;
component: Component;
props: Record<string, any>;
events: Record<string, any>;
-}[]>;
+}[]>([]);
const zIndexes = {
veryLow: 500000,
@@ -467,7 +468,7 @@ type SelectItem<C> = {
};
// default ãŒæŒ‡å®šã•れã¦ã„ãŸã‚‰ result 㯠null ã«ãªã‚Šå¾—ãªã„ã“ã¨ã‚’ä¿è¨¼ã™ã‚‹ overload function
-export function select<C = any>(props: {
+export function select<C = unknown>(props: {
title?: string;
text?: string;
default: string;
@@ -480,7 +481,7 @@ export function select<C = any>(props: {
} | {
canceled: false; result: C;
}>;
-export function select<C = any>(props: {
+export function select<C = unknown>(props: {
title?: string;
text?: string;
default?: string | null;
@@ -493,7 +494,7 @@ export function select<C = any>(props: {
} | {
canceled: false; result: C | null;
}>;
-export function select<C = any>(props: {
+export function select<C = unknown>(props: {
title?: string;
text?: string;
default?: string | null;
@@ -696,15 +697,17 @@ export function contextMenu(items: MenuItem[], ev: MouseEvent): Promise<void> {
}));
}
-export function post(props: Record<string, any> = {}): Promise<void | boolean> {
- pleaseLogin(undefined, (props.initialText || props.initialNote ? {
- type: 'share',
- params: {
- text: props.initialText ?? props.initialNote.text,
- visibility: props.initialVisibility ?? props.initialNote?.visibility,
- localOnly: (props.initialLocalOnly || props.initialNote?.localOnly) ? '1' : '0',
- },
- } : undefined));
+export function post(props: PostFormProps = {}): Promise<void | boolean> {
+ pleaseLogin({
+ openOnRemote: (props.initialText || props.initialNote ? {
+ type: 'share',
+ params: {
+ text: props.initialText ?? props.initialNote?.text ?? '',
+ visibility: props.initialVisibility ?? props.initialNote?.visibility ?? 'public',
+ localOnly: (props.initialLocalOnly || props.initialNote?.localOnly) ? '1' : '0',
+ },
+ } : undefined),
+ });
showMovedDialog();
return new Promise(resolve => {
diff --git a/packages/frontend/src/pages/admin-user.vue b/packages/frontend/src/pages/admin-user.vue
index f4421855de..11a34d34ef 100644
--- a/packages/frontend/src/pages/admin-user.vue
+++ b/packages/frontend/src/pages/admin-user.vue
@@ -658,6 +658,7 @@ definePageMetadata(() => ({
<style lang="scss" module>
.ip {
display: flex;
+ word-break: break-all;
> :global(.date) {
opacity: 0.7;
diff --git a/packages/frontend/src/pages/admin/index.vue b/packages/frontend/src/pages/admin/index.vue
index a1cd1af102..6cdf0eda7a 100644
--- a/packages/frontend/src/pages/admin/index.vue
+++ b/packages/frontend/src/pages/admin/index.vue
@@ -15,7 +15,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<div class="_gaps_s">
<MkInfo v-if="thereIsUnresolvedAbuseReport" warn class="info">{{ i18n.ts.thereIsUnresolvedAbuseReportWarning }} <MkA to="/admin/abuses" class="_link">{{ i18n.ts.check }}</MkA></MkInfo>
<MkInfo v-if="noMaintainerInformation" warn class="info">{{ i18n.ts.noMaintainerInformationWarning }} <MkA to="/admin/settings" class="_link">{{ i18n.ts.configure }}</MkA></MkInfo>
- <MkInfo v-if="noInquiryUrl" warn>{{ i18n.ts.noInquiryUrlWarning }} <MkA to="/admin/moderation" class="_link">{{ i18n.ts.configure }}</MkA></MkInfo>
+ <MkInfo v-if="noInquiryUrl" warn class="info">{{ i18n.ts.noInquiryUrlWarning }} <MkA to="/admin/settings" class="_link">{{ i18n.ts.configure }}</MkA></MkInfo>
<MkInfo v-if="noBotProtection" warn class="info">{{ i18n.ts.noBotProtectionWarning }} <MkA to="/admin/security" class="_link">{{ i18n.ts.configure }}</MkA></MkInfo>
<MkInfo v-if="noEmailServer" warn class="info">{{ i18n.ts.noEmailServerWarning }} <MkA to="/admin/email-settings" class="_link">{{ i18n.ts.configure }}</MkA></MkInfo>
<MkInfo v-if="pendingUserApprovals" warn class="info">{{ i18n.ts.pendingUserApprovals }} <MkA to="/admin/approvals" class="_link">{{ i18n.ts.check }}</MkA></MkInfo>
diff --git a/packages/frontend/src/pages/admin/moderation.vue b/packages/frontend/src/pages/admin/moderation.vue
index 03d1731a74..27cbfda078 100644
--- a/packages/frontend/src/pages/admin/moderation.vue
+++ b/packages/frontend/src/pages/admin/moderation.vue
@@ -10,9 +10,12 @@ SPDX-License-Identifier: AGPL-3.0-only
<MkSpacer :contentMax="700" :marginMin="16" :marginMax="32">
<FormSuspense :p="init">
<div class="_gaps_m">
- <MkSwitch v-model="enableRegistration" @change="onChange_enableRegistration">
- <template #label>{{ i18n.ts.enableRegistration }}</template>
- <template #caption>{{ i18n.ts._serverSettings.thisSettingWillAutomaticallyOffWhenModeratorsInactive }}</template>
+ <MkSwitch :modelValue="enableRegistration" @update:modelValue="onChange_enableRegistration">
+ <template #label>{{ i18n.ts._serverSettings.openRegistration }}</template>
+ <template #caption>
+ <div>{{ i18n.ts._serverSettings.thisSettingWillAutomaticallyOffWhenModeratorsInactive }}</div>
+ <div><i class="ti ti-alert-triangle" style="color: var(--MI_THEME-warn);"></i> {{ i18n.ts._serverSettings.openRegistrationWarning }}</div>
+ </template>
</MkSwitch>
<MkSwitch v-model="emailRequiredForSignup" @change="onChange_emailRequiredForSignup">
@@ -200,7 +203,17 @@ async function init() {
mediaSilencedHosts.value = meta.mediaSilencedHosts.join('\n');
}
-function onChange_enableRegistration(value: boolean) {
+async function onChange_enableRegistration(value: boolean) {
+ if (value) {
+ const { canceled } = await os.confirm({
+ type: 'warning',
+ text: i18n.ts.acknowledgeNotesAndEnable,
+ });
+ if (canceled) return;
+ }
+
+ enableRegistration.value = value;
+
os.apiWithDialog('admin/update-meta', {
disableRegistration: !value,
}).then(() => {
diff --git a/packages/frontend/src/pages/admin/users.vue b/packages/frontend/src/pages/admin/users.vue
index e99dcfa489..e26a2c827e 100644
--- a/packages/frontend/src/pages/admin/users.vue
+++ b/packages/frontend/src/pages/admin/users.vue
@@ -100,19 +100,19 @@ async function addUser() {
const { canceled: canceled1, result: username } = await os.inputText({
title: i18n.ts.username,
});
- if (canceled1) return;
+ if (canceled1 || username == null) return;
const { canceled: canceled2, result: password } = await os.inputText({
title: i18n.ts.password,
type: 'password',
});
- if (canceled2) return;
+ if (canceled2 || password == null) return;
os.apiWithDialog('admin/accounts/create', {
username: username,
password: password,
}).then(res => {
- paginationComponent.value.reload();
+ paginationComponent.value?.reload();
});
}
diff --git a/packages/frontend/src/pages/announcement.vue b/packages/frontend/src/pages/announcement.vue
index 3840e6a494..56c10fb292 100644
--- a/packages/frontend/src/pages/announcement.vue
+++ b/packages/frontend/src/pages/announcement.vue
@@ -55,7 +55,7 @@ import * as os from '@/os.js';
import { misskeyApi } from '@/scripts/misskey-api.js';
import { i18n } from '@/i18n.js';
import { definePageMetadata } from '@/scripts/page-metadata.js';
-import { $i, updateAccount } from '@/account.js';
+import { $i, updateAccountPartial } from '@/account.js';
import { defaultStore } from '@/store.js';
const props = defineProps<{
@@ -90,7 +90,7 @@ async function read(target: Misskey.entities.Announcement): Promise<void> {
target.isRead = true;
await misskeyApi('i/read-announcement', { announcementId: target.id });
if ($i) {
- updateAccount({
+ updateAccountPartial({
unreadAnnouncements: $i.unreadAnnouncements.filter((a: { id: string; }) => a.id !== target.id),
});
}
@@ -103,7 +103,7 @@ const headerActions = computed(() => []);
const headerTabs = computed(() => []);
definePageMetadata(() => ({
- title: announcement.value ? `${i18n.ts.announcements}: ${announcement.value.title}` : i18n.ts.announcements,
+ title: announcement.value ? announcement.value.title : i18n.ts.announcements,
icon: 'ti ti-speakerphone',
}));
</script>
diff --git a/packages/frontend/src/pages/announcements.vue b/packages/frontend/src/pages/announcements.vue
index 4eee275f07..79b9e7607d 100644
--- a/packages/frontend/src/pages/announcements.vue
+++ b/packages/frontend/src/pages/announcements.vue
@@ -56,7 +56,7 @@ import * as os from '@/os.js';
import { misskeyApi } from '@/scripts/misskey-api.js';
import { i18n } from '@/i18n.js';
import { definePageMetadata } from '@/scripts/page-metadata.js';
-import { $i, updateAccount } from '@/account.js';
+import { $i, updateAccountPartial } from '@/account.js';
const paginationCurrent = {
endpoint: 'announcements' as const,
@@ -94,7 +94,7 @@ async function read(target) {
return a;
});
misskeyApi('i/read-announcement', { announcementId: target.id });
- updateAccount({
+ updateAccountPartial({
unreadAnnouncements: $i!.unreadAnnouncements.filter(a => a.id !== target.id),
});
}
diff --git a/packages/frontend/src/pages/auth.vue b/packages/frontend/src/pages/auth.vue
index 75a44802f8..30e0e99326 100644
--- a/packages/frontend/src/pages/auth.vue
+++ b/packages/frontend/src/pages/auth.vue
@@ -83,7 +83,7 @@ function accepted() {
location.href = callbackUrl.toString();
} else if (session.value && session.value.app.callbackUrl) {
const url = new URL(session.value.app.callbackUrl);
- if (['javascript:', 'file:', 'data:', 'mailto:', 'tel:'].includes(url.protocol)) throw new Error('invalid url');
+ if (['javascript:', 'file:', 'data:', 'mailto:', 'tel:', 'vbscript:'].includes(url.protocol)) throw new Error('invalid url');
location.href = `${session.value.app.callbackUrl}?token=${session.value.token}`;
}
}
diff --git a/packages/frontend/src/pages/avatar-decoration-edit-dialog.vue b/packages/frontend/src/pages/avatar-decoration-edit-dialog.vue
new file mode 100644
index 0000000000..a834f1c5fd
--- /dev/null
+++ b/packages/frontend/src/pages/avatar-decoration-edit-dialog.vue
@@ -0,0 +1,220 @@
+<!--
+SPDX-FileCopyrightText: syuilo and misskey-project
+SPDX-License-Identifier: AGPL-3.0-only
+-->
+
+<template>
+<MkWindow
+ ref="windowEl"
+ :initialWidth="400"
+ :initialHeight="500"
+ :canResize="true"
+ @close="windowEl?.close()"
+ @closed="emit('closed')"
+>
+ <template v-if="avatarDecoration" #header>{{ avatarDecoration.name }}</template>
+ <template v-else #header>New decoration</template>
+
+ <div style="display: flex; flex-direction: column; min-height: 100%;">
+ <MkSpacer :marginMin="20" :marginMax="28" style="flex-grow: 1;">
+ <div class="_gaps_m">
+ <div :class="$style.preview">
+ <div :class="[$style.previewItem, $style.light]">
+ <MkAvatar style="width: 60px; height: 60px;" :user="$i" :decorations="url != '' ? [{ url }] : []" forceShowDecoration/>
+ </div>
+ <div :class="[$style.previewItem, $style.dark]">
+ <MkAvatar style="width: 60px; height: 60px;" :user="$i" :decorations="url != '' ? [{ url }] : []" forceShowDecoration/>
+ </div>
+ </div>
+ <MkInput v-model="name">
+ <template #label>{{ i18n.ts.name }}</template>
+ </MkInput>
+ <MkInput v-model="url">
+ <template #label>{{ i18n.ts.imageUrl }}</template>
+ </MkInput>
+ <MkTextarea v-model="description">
+ <template #label>{{ i18n.ts.description }}</template>
+ </MkTextarea>
+ <MkFolder>
+ <template #label>{{ i18n.ts.availableRoles }}</template>
+ <template #suffix>{{ rolesThatCanBeUsedThisDecoration.length === 0 ? i18n.ts.all : rolesThatCanBeUsedThisDecoration.length }}</template>
+
+ <div class="_gaps">
+ <MkButton rounded @click="addRole"><i class="ti ti-plus"></i> {{ i18n.ts.add }}</MkButton>
+
+ <div v-for="role in rolesThatCanBeUsedThisDecoration" :key="role.id" :class="$style.roleItem">
+ <MkRolePreview :class="$style.role" :role="role" :forModeration="true" :detailed="false" style="pointer-events: none;"/>
+ <button v-if="role.target === 'manual'" class="_button" :class="$style.roleUnassign" @click="removeRole(role, $event)"><i class="ti ti-x"></i></button>
+ <button v-else class="_button" :class="$style.roleUnassign" disabled><i class="ti ti-ban"></i></button>
+ </div>
+ </div>
+ </MkFolder>
+ <MkButton v-if="avatarDecoration" danger @click="del()"><i class="ti ti-trash"></i> {{ i18n.ts.delete }}</MkButton>
+ </div>
+ </MkSpacer>
+ <div :class="$style.footer">
+ <MkButton primary rounded style="margin: 0 auto;" @click="done"><i class="ti ti-check"></i> {{ props.avatarDecoration ? i18n.ts.update : i18n.ts.create }}</MkButton>
+ </div>
+ </div>
+</MkWindow>
+</template>
+
+<script lang="ts" setup>
+import { computed, watch, ref } from 'vue';
+import * as Misskey from 'misskey-js';
+import MkWindow from '@/components/MkWindow.vue';
+import MkButton from '@/components/MkButton.vue';
+import MkInput from '@/components/MkInput.vue';
+import MkInfo from '@/components/MkInfo.vue';
+import MkFolder from '@/components/MkFolder.vue';
+import * as os from '@/os.js';
+import { misskeyApi } from '@/scripts/misskey-api.js';
+import { i18n } from '@/i18n.js';
+import MkSwitch from '@/components/MkSwitch.vue';
+import MkRolePreview from '@/components/MkRolePreview.vue';
+import MkTextarea from '@/components/MkTextarea.vue';
+import { signinRequired } from '@/account.js';
+
+const $i = signinRequired();
+
+const props = defineProps<{
+ avatarDecoration?: any,
+}>();
+
+const emit = defineEmits<{
+ (ev: 'done', v: { deleted?: boolean; updated?: any; created?: any }): void,
+ (ev: 'closed'): void
+}>();
+
+const windowEl = ref<InstanceType<typeof MkWindow> | null>(null);
+const url = ref<string>(props.avatarDecoration ? props.avatarDecoration.url : '');
+const name = ref<string>(props.avatarDecoration ? props.avatarDecoration.name : '');
+const description = ref<string>(props.avatarDecoration ? props.avatarDecoration.description : '');
+const roleIdsThatCanBeUsedThisDecoration = ref(props.avatarDecoration ? props.avatarDecoration.roleIdsThatCanBeUsedThisDecoration : []);
+const rolesThatCanBeUsedThisDecoration = ref<Misskey.entities.Role[]>([]);
+
+watch(roleIdsThatCanBeUsedThisDecoration, async () => {
+ rolesThatCanBeUsedThisDecoration.value = (await Promise.all(roleIdsThatCanBeUsedThisDecoration.value.map((id) => misskeyApi('admin/roles/show', { roleId: id }).catch(() => null)))).filter(x => x != null);
+}, { immediate: true });
+
+async function addRole() {
+ const roles = await misskeyApi('admin/roles/list');
+ const currentRoleIds = rolesThatCanBeUsedThisDecoration.value.map(x => x.id);
+
+ const { canceled, result: role } = await os.select({
+ items: roles.filter(r => r.isPublic).filter(r => !currentRoleIds.includes(r.id)).map(r => ({ text: r.name, value: r })),
+ });
+ if (canceled || role == null) return;
+
+ rolesThatCanBeUsedThisDecoration.value.push(role);
+}
+
+async function removeRole(role, ev) {
+ rolesThatCanBeUsedThisDecoration.value = rolesThatCanBeUsedThisDecoration.value.filter(x => x.id !== role.id);
+}
+
+async function done() {
+ const params = {
+ url: url.value,
+ name: name.value,
+ description: description.value,
+ roleIdsThatCanBeUsedThisDecoration: rolesThatCanBeUsedThisDecoration.value.map(x => x.id),
+ };
+
+ if (props.avatarDecoration) {
+ await os.apiWithDialog('admin/avatar-decorations/update', {
+ id: props.avatarDecoration.id,
+ ...params,
+ });
+
+ emit('done', {
+ updated: {
+ id: props.avatarDecoration.id,
+ ...params,
+ },
+ });
+
+ windowEl.value?.close();
+ } else {
+ const created = await os.apiWithDialog('admin/avatar-decorations/create', params);
+
+ emit('done', {
+ created: created,
+ });
+
+ windowEl.value?.close();
+ }
+}
+
+async function del() {
+ const { canceled } = await os.confirm({
+ type: 'warning',
+ text: i18n.tsx.removeAreYouSure({ x: name.value }),
+ });
+ if (canceled) return;
+
+ misskeyApi('admin/avatar-decorations/delete', {
+ id: props.avatarDecoration.id,
+ }).then(() => {
+ emit('done', {
+ deleted: true,
+ });
+ windowEl.value?.close();
+ });
+}
+</script>
+
+<style lang="scss" module>
+.preview {
+ display: grid;
+ place-items: center;
+ grid-template-columns: 1fr 1fr;
+ grid-template-rows: 1fr;
+ gap: var(--MI-margin);
+}
+
+.previewItem {
+ width: 100%;
+ height: 100%;
+ min-height: 160px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ border-radius: var(--MI-radius);
+
+ &.light {
+ background: #eee;
+ }
+
+ &.dark {
+ background: #222;
+ }
+}
+
+.roleItem {
+ display: flex;
+}
+
+.role {
+ flex: 1;
+}
+
+.roleUnassign {
+ width: 32px;
+ height: 32px;
+ margin-left: 8px;
+ align-self: center;
+}
+
+.footer {
+ position: sticky;
+ z-index: 10000;
+ bottom: 0;
+ left: 0;
+ padding: 12px;
+ border-top: solid 0.5px var(--MI_THEME-divider);
+ background: var(--MI_THEME-acrylicBg);
+ -webkit-backdrop-filter: var(--MI-blur, blur(15px));
+ backdrop-filter: var(--MI-blur, blur(15px));
+}
+</style>
diff --git a/packages/frontend/src/pages/avatar-decorations.vue b/packages/frontend/src/pages/avatar-decorations.vue
index b97e7c0eea..a5cafb1678 100644
--- a/packages/frontend/src/pages/avatar-decorations.vue
+++ b/packages/frontend/src/pages/avatar-decorations.vue
@@ -5,92 +5,38 @@ SPDX-License-Identifier: AGPL-3.0-only
<template>
<MkStickyContainer>
- <template #header><MkPageHeader v-model:tab="tab" :actions="headerActions" :tabs="headerTabs"/></template>
+ <template #header><MkPageHeader :actions="headerActions" :tabs="headerTabs"/></template>
<MkSpacer :contentMax="900">
<div class="_gaps">
- <MkFolder v-for="avatarDecoration in avatarDecorations" :key="avatarDecoration.id ?? avatarDecoration._id" :defaultOpen="avatarDecoration.id == null">
- <template #label>{{ avatarDecoration.name }}</template>
- <template #caption>{{ avatarDecoration.description }}</template>
-
- <div :class="$style.editorRoot">
- <div :class="$style.editorWrapper">
- <div :class="$style.preview">
- <div :class="[$style.previewItem, $style.light]">
- <MkAvatar style="width: 60px; height: 60px;" :user="$i" :decorations="[avatarDecoration]" forceShowDecoration/>
- </div>
- <div :class="[$style.previewItem, $style.dark]">
- <MkAvatar style="width: 60px; height: 60px;" :user="$i" :decorations="[avatarDecoration]" forceShowDecoration/>
- </div>
- </div>
- <div class="_gaps_m">
- <MkInput v-model="avatarDecoration.name">
- <template #label>{{ i18n.ts.name }}</template>
- </MkInput>
- <MkTextarea v-model="avatarDecoration.description">
- <template #label>{{ i18n.ts.description }}</template>
- </MkTextarea>
- <MkInput v-model="avatarDecoration.url">
- <template #label>{{ i18n.ts.imageUrl }}</template>
- </MkInput>
- <div class="_buttons">
- <MkButton inline primary @click="save(avatarDecoration)"><i class="ti ti-device-floppy"></i> {{ i18n.ts.save }}</MkButton>
- <MkButton v-if="avatarDecoration.id != null" inline danger @click="del(avatarDecoration)"><i class="ti ti-trash"></i> {{ i18n.ts.delete }}</MkButton>
- </div>
- </div>
- </div>
+ <div :class="$style.decorations">
+ <div
+ v-for="avatarDecoration in avatarDecorations"
+ :key="avatarDecoration.id"
+ v-panel
+ :class="$style.decoration"
+ @click="edit(avatarDecoration)"
+ >
+ <div :class="$style.decorationName"><MkCondensedLine :minScale="0.5">{{ avatarDecoration.name }}</MkCondensedLine></div>
+ <MkAvatar style="width: 60px; height: 60px;" :user="$i" :decorations="[{ url: avatarDecoration.url }]" forceShowDecoration/>
</div>
- </MkFolder>
+ </div>
</div>
</MkSpacer>
</MkStickyContainer>
</template>
<script lang="ts" setup>
-import { ref, computed } from 'vue';
+import { ref, computed, defineAsyncComponent } from 'vue';
import * as Misskey from 'misskey-js';
-import MkButton from '@/components/MkButton.vue';
-import MkInput from '@/components/MkInput.vue';
-import MkTextarea from '@/components/MkTextarea.vue';
import { signinRequired } from '@/account.js';
import * as os from '@/os.js';
import { misskeyApi } from '@/scripts/misskey-api.js';
import { i18n } from '@/i18n.js';
import { definePageMetadata } from '@/scripts/page-metadata.js';
-import MkFolder from '@/components/MkFolder.vue';
-
-const avatarDecorations = ref<Misskey.entities.AdminAvatarDecorationsListResponse>([]);
const $i = signinRequired();
-function add() {
- avatarDecorations.value.unshift({
- _id: Math.random().toString(36),
- id: null,
- name: '',
- description: '',
- url: '',
- });
-}
-
-function del(avatarDecoration) {
- os.confirm({
- type: 'warning',
- text: i18n.tsx.deleteAreYouSure({ x: avatarDecoration.name }),
- }).then(({ canceled }) => {
- if (canceled) return;
- avatarDecorations.value = avatarDecorations.value.filter(x => x !== avatarDecoration);
- misskeyApi('admin/avatar-decorations/delete', avatarDecoration);
- });
-}
-
-async function save(avatarDecoration) {
- if (avatarDecoration.id == null) {
- await os.apiWithDialog('admin/avatar-decorations/create', avatarDecoration);
- load();
- } else {
- os.apiWithDialog('admin/avatar-decorations/update', avatarDecoration);
- }
-}
+const avatarDecorations = ref<Misskey.entities.AdminAvatarDecorationsListResponse>([]);
function load() {
misskeyApi('admin/avatar-decorations/list').then(_avatarDecorations => {
@@ -100,6 +46,37 @@ function load() {
load();
+async function add(ev: MouseEvent) {
+ const { dispose } = os.popup(defineAsyncComponent(() => import('./avatar-decoration-edit-dialog.vue')), {
+ }, {
+ done: result => {
+ if (result.created) {
+ avatarDecorations.value.unshift(result.created);
+ }
+ },
+ closed: () => dispose(),
+ });
+}
+
+function edit(avatarDecoration) {
+ const { dispose } = os.popup(defineAsyncComponent(() => import('./avatar-decoration-edit-dialog.vue')), {
+ avatarDecoration: avatarDecoration,
+ }, {
+ done: result => {
+ if (result.updated) {
+ const index = avatarDecorations.value.findIndex(x => x.id === avatarDecoration.id);
+ avatarDecorations.value[index] = {
+ ...avatarDecorations.value[index],
+ ...result.updated,
+ };
+ } else if (result.deleted) {
+ avatarDecorations.value = avatarDecorations.value.filter(x => x.id !== avatarDecoration.id);
+ }
+ },
+ closed: () => dispose(),
+ });
+}
+
const headerActions = computed(() => [{
asFullButton: true,
icon: 'ti ti-plus',
@@ -116,53 +93,26 @@ definePageMetadata(() => ({
</script>
<style lang="scss" module>
-.editorRoot {
- container: editor / inline-size;
-}
-
-.editorWrapper {
+.decorations {
display: grid;
- grid-template-columns: 1fr;
- grid-template-rows: auto auto;
- gap: var(--MI-margin);
+ grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
+ grid-gap: 12px;
}
-.preview {
- display: grid;
- place-items: center;
- grid-template-columns: 1fr 1fr;
- grid-template-rows: 1fr;
- gap: var(--MI-margin);
-}
-
-.previewItem {
- width: 100%;
- height: 100%;
- min-height: 160px;
- display: flex;
- align-items: center;
- justify-content: center;
- border-radius: var(--MI-radius);
-
- &.light {
- background: #eee;
- }
-
- &.dark {
- background: #222;
- }
+.decoration {
+ cursor: pointer;
+ padding: 16px 16px 28px 16px;
+ border-radius: 8px;
+ text-align: center;
+ font-size: 90%;
+ overflow: clip;
+ contain: content;
}
-@container editor (min-width: 600px) {
- .editorWrapper {
- grid-template-columns: 200px 1fr;
- grid-template-rows: 1fr;
- gap: calc(var(--MI-margin) * 2);
- }
-
- .preview {
- grid-template-columns: 1fr;
- grid-template-rows: 1fr 1fr;
- }
+.decorationName {
+ position: relative;
+ z-index: 10;
+ font-weight: bold;
+ margin-bottom: 20px;
}
</style>
diff --git a/packages/frontend/src/pages/clip.vue b/packages/frontend/src/pages/clip.vue
index 9d8ba71a2d..716cd9a73f 100644
--- a/packages/frontend/src/pages/clip.vue
+++ b/packages/frontend/src/pages/clip.vue
@@ -33,25 +33,28 @@ SPDX-License-Identifier: AGPL-3.0-only
<script lang="ts" setup>
import { computed, watch, provide, ref } from 'vue';
import * as Misskey from 'misskey-js';
+import { url } from '@@/js/config.js';
+import type { MenuItem } from '@/types/menu.js';
import MkNotes from '@/components/MkNotes.vue';
import { $i } from '@/account.js';
import { i18n } from '@/i18n.js';
import * as os from '@/os.js';
import { misskeyApi } from '@/scripts/misskey-api.js';
import { definePageMetadata } from '@/scripts/page-metadata.js';
-import { url } from '@@/js/config.js';
import MkButton from '@/components/MkButton.vue';
import { clipsCache } from '@/cache.js';
import { isSupportShare } from '@/scripts/navigator.js';
import { copyToClipboard } from '@/scripts/copy-to-clipboard.js';
import { genEmbedCode } from '@/scripts/get-embed-code.js';
-import type { MenuItem } from '@/types/menu.js';
+import { getServerContext } from '@/server-context.js';
+
+const CTX_CLIP = getServerContext('clip');
const props = defineProps<{
clipId: string,
}>();
-const clip = ref<Misskey.entities.Clip | null>(null);
+const clip = ref<Misskey.entities.Clip | null>(CTX_CLIP);
const favorited = ref(false);
const pagination = {
endpoint: 'clips/notes' as const,
@@ -64,6 +67,11 @@ const pagination = {
const isOwned = computed<boolean | null>(() => $i && clip.value && ($i.id === clip.value.userId));
watch(() => props.clipId, async () => {
+ if (CTX_CLIP && CTX_CLIP.id === props.clipId) {
+ clip.value = CTX_CLIP;
+ return;
+ }
+
clip.value = await misskeyApi('clips/show', {
clipId: props.clipId,
});
diff --git a/packages/frontend/src/pages/custom-emojis-manager.vue b/packages/frontend/src/pages/custom-emojis-manager.vue
index 48a64e5a02..850c1c5eb0 100644
--- a/packages/frontend/src/pages/custom-emojis-manager.vue
+++ b/packages/frontend/src/pages/custom-emojis-manager.vue
@@ -119,7 +119,7 @@ const selectAll = () => {
if (selectedEmojis.value.length > 0) {
selectedEmojis.value = [];
} else {
- selectedEmojis.value = Array.from(emojisPaginationComponent.value.items.values(), item => item.id);
+ selectedEmojis.value = Array.from(emojisPaginationComponent.value?.items.values(), item => item.id);
}
};
@@ -136,7 +136,7 @@ const add = async (ev: MouseEvent) => {
}, {
done: result => {
if (result.created) {
- emojisPaginationComponent.value.prepend(result.created);
+ emojisPaginationComponent.value?.prepend(result.created);
}
},
closed: () => dispose(),
@@ -149,12 +149,12 @@ const edit = (emoji) => {
}, {
done: result => {
if (result.updated) {
- emojisPaginationComponent.value.updateItem(result.updated.id, (oldEmoji: any) => ({
+ emojisPaginationComponent.value?.updateItem(result.updated.id, (oldEmoji) => ({
...oldEmoji,
...result.updated,
}));
} else if (result.deleted) {
- emojisPaginationComponent.value.removeItem(emoji.id);
+ emojisPaginationComponent.value?.removeItem(emoji.id);
}
},
closed: () => dispose(),
@@ -239,7 +239,7 @@ const setCategoryBulk = async () => {
ids: selectedEmojis.value,
category: result,
});
- emojisPaginationComponent.value.reload();
+ emojisPaginationComponent.value?.reload();
};
const setLicenseBulk = async () => {
@@ -251,43 +251,43 @@ const setLicenseBulk = async () => {
ids: selectedEmojis.value,
license: result,
});
- emojisPaginationComponent.value.reload();
+ emojisPaginationComponent.value?.reload();
};
const addTagBulk = async () => {
const { canceled, result } = await os.inputText({
title: 'Tag',
});
- if (canceled) return;
+ if (canceled || result == null) return;
await os.apiWithDialog('admin/emoji/add-aliases-bulk', {
ids: selectedEmojis.value,
aliases: result.split(' '),
});
- emojisPaginationComponent.value.reload();
+ emojisPaginationComponent.value?.reload();
};
const removeTagBulk = async () => {
const { canceled, result } = await os.inputText({
title: 'Tag',
});
- if (canceled) return;
+ if (canceled || result == null) return;
await os.apiWithDialog('admin/emoji/remove-aliases-bulk', {
ids: selectedEmojis.value,
aliases: result.split(' '),
});
- emojisPaginationComponent.value.reload();
+ emojisPaginationComponent.value?.reload();
};
const setTagBulk = async () => {
const { canceled, result } = await os.inputText({
title: 'Tag',
});
- if (canceled) return;
+ if (canceled || result == null) return;
await os.apiWithDialog('admin/emoji/set-aliases-bulk', {
ids: selectedEmojis.value,
aliases: result.split(' '),
});
- emojisPaginationComponent.value.reload();
+ emojisPaginationComponent.value?.reload();
};
const delBulk = async () => {
@@ -299,7 +299,7 @@ const delBulk = async () => {
await os.apiWithDialog('admin/emoji/delete-bulk', {
ids: selectedEmojis.value,
});
- emojisPaginationComponent.value.reload();
+ emojisPaginationComponent.value?.reload();
};
const headerActions = computed(() => [{
diff --git a/packages/frontend/src/pages/emoji-edit-dialog.vue b/packages/frontend/src/pages/emoji-edit-dialog.vue
index beb8914d65..d3e9ca0dcf 100644
--- a/packages/frontend/src/pages/emoji-edit-dialog.vue
+++ b/packages/frontend/src/pages/emoji-edit-dialog.vue
@@ -8,9 +8,9 @@ SPDX-License-Identifier: AGPL-3.0-only
ref="windowEl"
:initialWidth="400"
:initialHeight="500"
- :canResize="false"
- @close="windowEl.close()"
- @closed="$emit('closed')"
+ :canResize="true"
+ @close="windowEl?.close()"
+ @closed="emit('closed')"
>
<template v-if="emoji" #header>:{{ emoji.name }}:</template>
<template v-else #header>New emoji</template>
@@ -95,14 +95,19 @@ import { selectFile } from '@/scripts/select-file.js';
import MkRolePreview from '@/components/MkRolePreview.vue';
const props = defineProps<{
- emoji?: any,
+ emoji?: Misskey.entities.EmojiDetailed,
+}>();
+
+const emit = defineEmits<{
+ (ev: 'done', v: { deleted?: boolean; updated?: Misskey.entities.AdminEmojiUpdateRequest; created?: Misskey.entities.AdminEmojiUpdateRequest }): void,
+ (ev: 'closed'): void
}>();
const windowEl = ref<InstanceType<typeof MkWindow> | null>(null);
const name = ref<string>(props.emoji ? props.emoji.name : '');
-const category = ref<string>(props.emoji ? props.emoji.category : '');
+const category = ref<string>(props.emoji?.category ? props.emoji.category : '');
const aliases = ref<string>(props.emoji ? props.emoji.aliases.join(' ') : '');
-const license = ref<string>(props.emoji ? (props.emoji.license ?? '') : '');
+const license = ref<string>(props.emoji?.license ? props.emoji.license : '');
const isSensitive = ref(props.emoji ? props.emoji.isSensitive : false);
const localOnly = ref(props.emoji ? props.emoji.localOnly : false);
const roleIdsThatCanBeUsedThisEmojiAsReaction = ref(props.emoji ? props.emoji.roleIdsThatCanBeUsedThisEmojiAsReaction : []);
@@ -115,12 +120,7 @@ watch(roleIdsThatCanBeUsedThisEmojiAsReaction, async () => {
const imgUrl = computed(() => file.value ? file.value.url : props.emoji ? `/emoji/${props.emoji.name}.webp` : null);
-const emit = defineEmits<{
- (ev: 'done', v: { deleted?: boolean; updated?: any; created?: any }): void,
- (ev: 'closed'): void
-}>();
-
-async function changeImage(ev) {
+async function changeImage(ev: Event) {
file.value = await selectFile(ev.currentTarget ?? ev.target, null);
const candidate = file.value.name.replace(/\.(.+)$/, '');
if (candidate.match(/^[a-z0-9_]+$/)) {
@@ -140,7 +140,7 @@ async function addRole() {
rolesThatCanBeUsedThisEmojiAsReaction.value.push(role);
}
-async function removeRole(role, ev) {
+async function removeRole(role: Misskey.entities.RoleLite, ev: Event) {
rolesThatCanBeUsedThisEmojiAsReaction.value = rolesThatCanBeUsedThisEmojiAsReaction.value.filter(x => x.id !== role.id);
}
@@ -172,7 +172,7 @@ async function done() {
},
});
- windowEl.value.close();
+ windowEl.value?.close();
} else {
const created = await os.apiWithDialog('admin/emoji/add', params);
@@ -180,11 +180,12 @@ async function done() {
created: created,
});
- windowEl.value.close();
+ windowEl.value?.close();
}
}
async function del() {
+ if (!props.emoji) return;
const { canceled } = await os.confirm({
type: 'warning',
text: i18n.tsx.removeAreYouSure({ x: name.value }),
@@ -197,7 +198,7 @@ async function del() {
emit('done', {
deleted: true,
});
- windowEl.value.close();
+ windowEl.value?.close();
});
}
</script>
diff --git a/packages/frontend/src/pages/emojis.emoji.vue b/packages/frontend/src/pages/emojis.emoji.vue
index d2d9b2a226..594a8eda0e 100644
--- a/packages/frontend/src/pages/emojis.emoji.vue
+++ b/packages/frontend/src/pages/emojis.emoji.vue
@@ -15,18 +15,22 @@ SPDX-License-Identifier: AGPL-3.0-only
<script lang="ts" setup>
import * as Misskey from 'misskey-js';
+import { defineAsyncComponent } from 'vue';
+import type { MenuItem } from '@/types/menu.js';
import * as os from '@/os.js';
import { misskeyApiGet } from '@/scripts/misskey-api.js';
import { copyToClipboard } from '@/scripts/copy-to-clipboard.js';
import { i18n } from '@/i18n.js';
import MkCustomEmojiDetailedDialog from '@/components/MkCustomEmojiDetailedDialog.vue';
+import { $i } from '@/account.js';
const props = defineProps<{
emoji: Misskey.entities.EmojiSimple;
}>();
function menu(ev) {
- os.popupMenu([{
+ const menuItems: MenuItem[] = [];
+ menuItems.push({
type: 'label',
text: ':' + props.emoji.name + ':',
}, {
@@ -48,8 +52,28 @@ function menu(ev) {
closed: () => dispose(),
});
},
- }], ev.currentTarget ?? ev.target);
+ });
+
+ if ($i?.isModerator ?? $i?.isAdmin) {
+ menuItems.push({
+ text: i18n.ts.edit,
+ icon: 'ti ti-pencil',
+ action: () => {
+ edit(props.emoji);
+ },
+ });
+ }
+
+ os.popupMenu(menuItems, ev.currentTarget ?? ev.target);
}
+
+const edit = async (emoji) => {
+ const { dispose } = os.popup(defineAsyncComponent(() => import('@/pages/emoji-edit-dialog.vue')), {
+ emoji: emoji,
+ }, {
+ closed: () => dispose(),
+ });
+};
</script>
<style lang="scss" module>
diff --git a/packages/frontend/src/pages/follow-requests.vue b/packages/frontend/src/pages/follow-requests.vue
index ffa1e648c7..2f9cacbde9 100644
--- a/packages/frontend/src/pages/follow-requests.vue
+++ b/packages/frontend/src/pages/follow-requests.vue
@@ -17,7 +17,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</div>
</template>
<template #default="{items}">
- <div class="mk-follow-requests">
+ <div class="mk-follow-requests _gaps">
<div v-for="req in items" :key="req.id" class="user _panel">
<MkAvatar class="avatar" :user="displayUser(req)" indicator link preview/>
<div class="body">
@@ -29,6 +29,9 @@ SPDX-License-Identifier: AGPL-3.0-only
<MkButton class="command" rounded primary @click="accept(displayUser(req))"><i class="ti ti-check"/> {{ i18n.ts.accept }}</MkButton>
<MkButton class="command" rounded danger @click="reject(displayUser(req))"><i class="ti ti-x"/> {{ i18n.ts.reject }}</MkButton>
</div>
+ <div v-else class="commands">
+ <MkButton class="command" rounded danger @click="cancel(displayUser(req))"><i class="ti ti-x"/> {{ i18n.ts.cancel }}</MkButton>
+ </div>
</div>
</div>
</div>
@@ -41,38 +44,42 @@ SPDX-License-Identifier: AGPL-3.0-only
</template>
<script lang="ts" setup>
+import * as Misskey from 'misskey-js';
import { shallowRef, computed, ref } from 'vue';
-import MkPagination from '@/components/MkPagination.vue';
+import MkPagination, { type Paging } from '@/components/MkPagination.vue';
import MkButton from '@/components/MkButton.vue';
import { userPage, acct } from '@/filters/user.js';
-import { misskeyApi } from '@/scripts/misskey-api.js';
+import * as os from '@/os.js';
import { i18n } from '@/i18n.js';
import { definePageMetadata } from '@/scripts/page-metadata.js';
import { infoImageUrl } from '@/instance.js';
+import { $i } from '@/account.js';
import MkHorizontalSwipe from '@/components/MkHorizontalSwipe.vue';
-import { $i } from '@/account';
const paginationComponent = shallowRef<InstanceType<typeof MkPagination>>();
-const pagination = computed(() => tab.value === 'list'
- ? {
- endpoint: 'following/requests/list' as const,
- limit: 10,
- }
- : {
- endpoint: 'following/requests/sent' as const,
- limit: 10,
- },
-);
+const pagination = computed<Paging>(() => tab.value === 'list' ? {
+ endpoint: 'following/requests/list',
+ limit: 10,
+} : {
+ endpoint: 'following/requests/sent',
+ limit: 10,
+});
+
+function accept(user: Misskey.entities.UserLite) {
+ os.apiWithDialog('following/requests/accept', { userId: user.id }).then(() => {
+ paginationComponent.value?.reload();
+ });
+}
-function accept(user) {
- misskeyApi('following/requests/accept', { userId: user.id }).then(() => {
+function reject(user: Misskey.entities.UserLite) {
+ os.apiWithDialog('following/requests/reject', { userId: user.id }).then(() => {
paginationComponent.value?.reload();
});
}
-function reject(user) {
- misskeyApi('following/requests/reject', { userId: user.id }).then(() => {
+function cancel(user: Misskey.entities.UserLite) {
+ os.apiWithDialog('following/requests/cancel', { userId: user.id }).then(() => {
paginationComponent.value?.reload();
});
}
@@ -86,11 +93,11 @@ const headerActions = computed(() => []);
const headerTabs = computed(() => [
{
key: 'list',
- title: i18n.ts.followRequests,
+ title: i18n.ts._followRequest.recieved,
icon: 'ph-envelope ph-bold ph-lg',
}, {
key: 'sent',
- title: i18n.ts.pendingFollowRequests,
+ title: i18n.ts._followRequest.sent,
icon: 'ph-paper-plane-tilt ph-bold ph-lg',
},
]);
diff --git a/packages/frontend/src/pages/invite.vue b/packages/frontend/src/pages/invite.vue
index 47f6e497b5..3416ee6cfc 100644
--- a/packages/frontend/src/pages/invite.vue
+++ b/packages/frontend/src/pages/invite.vue
@@ -5,10 +5,8 @@ SPDX-License-Identifier: AGPL-3.0-only
<template>
<MkStickyContainer>
- <template #header>
- <MkPageHeader/>
- </template>
- <MKSpacer v-if="!instance.disableRegistration || !($i && ($i.isAdmin || $i.policies.canInvite))" :contentMax="1200">
+ <template #header><MkPageHeader/></template>
+ <MkSpacer v-if="!instance.disableRegistration || !($i && ($i.isAdmin || $i.policies.canInvite))" :contentMax="1200">
<div :class="$style.root">
<img :class="$style.img" :src="serverErrorImageUrl" class="_ghost"/>
<div :class="$style.text">
@@ -16,7 +14,7 @@ SPDX-License-Identifier: AGPL-3.0-only
{{ i18n.ts.nothing }}
</div>
</div>
- </MKSpacer>
+ </MkSpacer>
<MkSpacer v-else :contentMax="800">
<div class="_gaps_m" style="text-align: center;">
<div v-if="resetCycle && inviteLimit">{{ i18n.tsx.inviteLimitResetCycle({ time: resetCycle, limit: inviteLimit }) }}</div>
diff --git a/packages/frontend/src/pages/list.vue b/packages/frontend/src/pages/list.vue
index 2bcf16e668..e1ba424afc 100644
--- a/packages/frontend/src/pages/list.vue
+++ b/packages/frontend/src/pages/list.vue
@@ -6,7 +6,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<template>
<MkStickyContainer>
<template #header><MkPageHeader :actions="headerActions" :tabs="headerTabs"/></template>
- <MKSpacer v-if="!(typeof error === 'undefined')" :contentMax="1200">
+ <MkSpacer v-if="error != null" :contentMax="1200">
<div :class="$style.root">
<img :class="$style.img" :src="serverErrorImageUrl" class="_ghost"/>
<p :class="$style.text">
@@ -14,7 +14,7 @@ SPDX-License-Identifier: AGPL-3.0-only
{{ i18n.ts.nothing }}
</p>
</div>
- </MKSpacer>
+ </MkSpacer>
<MkSpacer v-else-if="list" :contentMax="700" :class="$style.main">
<div v-if="list" class="members _margin">
<div :class="$style.member_text">{{ i18n.ts.members }}</div>
@@ -50,7 +50,7 @@ const props = defineProps<{
}>();
const list = ref<Misskey.entities.UserList | null>(null);
-const error = ref();
+const error = ref<unknown | null>(null);
const users = ref<Misskey.entities.UserDetailed[]>([]);
function fetchList(): void {
diff --git a/packages/frontend/src/pages/lookup.vue b/packages/frontend/src/pages/lookup.vue
index 3233953942..6f10c69640 100644
--- a/packages/frontend/src/pages/lookup.vue
+++ b/packages/frontend/src/pages/lookup.vue
@@ -40,7 +40,7 @@ function fetch() {
return;
}
- let promise: Promise<any>;
+ let promise: Promise<unknown>;
if (uri.startsWith('https://')) {
promise = misskeyApi('ap/show', {
diff --git a/packages/frontend/src/pages/miauth.vue b/packages/frontend/src/pages/miauth.vue
index 7e70f91710..e85d2c29c1 100644
--- a/packages/frontend/src/pages/miauth.vue
+++ b/packages/frontend/src/pages/miauth.vue
@@ -4,95 +4,79 @@ SPDX-License-Identifier: AGPL-3.0-only
-->
<template>
-<MkStickyContainer>
- <template #header><MkPageHeader :actions="headerActions" :tabs="headerTabs"/></template>
- <MkSpacer :contentMax="800">
- <div v-if="$i">
- <div v-if="state == 'waiting'">
- <MkLoading/>
- </div>
- <div v-if="state == 'denied'">
- <p>{{ i18n.ts._auth.denied }}</p>
- </div>
- <div v-else-if="state == 'accepted'" class="accepted">
- <p v-if="callback">{{ i18n.ts._auth.callback }}<MkEllipsis/></p>
- <p v-else>{{ i18n.ts._auth.pleaseGoBack }}</p>
- </div>
- <div v-else>
- <div v-if="_permissions.length > 0">
- <p v-if="name">{{ i18n.tsx._auth.permission({ name }) }}</p>
- <p v-else>{{ i18n.ts._auth.permissionAsk }}</p>
- <ul>
- <li v-for="p in _permissions" :key="p">{{ i18n.ts._permissions[p] }}</li>
- </ul>
- </div>
- <div v-if="name">{{ i18n.tsx._auth.shareAccess({ name }) }}</div>
- <div v-else>{{ i18n.ts._auth.shareAccessAsk }}</div>
- <div :class="$style.buttons">
- <MkButton inline @click="deny">{{ i18n.ts.cancel }}</MkButton>
- <MkButton inline primary @click="accept">{{ i18n.ts.accept }}</MkButton>
- </div>
- </div>
+<div>
+ <MkAnimBg style="position: fixed; top: 0;"/>
+ <div :class="$style.formContainer">
+ <div :class="$style.form">
+ <MkAuthConfirm
+ ref="authRoot"
+ :name="name"
+ :icon="icon || undefined"
+ :permissions="_permissions"
+ @accept="onAccept"
+ @deny="onDeny"
+ >
+ <template #consentAdditionalInfo>
+ <div v-if="callback != null" class="_gaps_s" :class="$style.redirectRoot">
+ <div>{{ i18n.ts._auth.byClickingYouWillBeRedirectedToThisUrl }}</div>
+ <div class="_monospace" :class="$style.redirectUrl">{{ callback }}</div>
+ </div>
+ </template>
+ </MkAuthConfirm>
</div>
- <div v-else>
- <p :class="$style.loginMessage">{{ i18n.ts._auth.pleaseLogin }}</p>
- <MkSignin @login="onLogin"/>
- </div>
- </MkSpacer>
-</MkStickyContainer>
+ </div>
+</div>
</template>
<script lang="ts" setup>
-import { ref, computed } from 'vue';
-import MkSignin from '@/components/MkSignin.vue';
-import MkButton from '@/components/MkButton.vue';
-import { misskeyApi } from '@/scripts/misskey-api.js';
-import { $i, login } from '@/account.js';
+import { computed, useTemplateRef } from 'vue';
+import * as Misskey from 'misskey-js';
+
+import MkAnimBg from '@/components/MkAnimBg.vue';
+import MkAuthConfirm from '@/components/MkAuthConfirm.vue';
+
import { i18n } from '@/i18n.js';
+import { misskeyApi } from '@/scripts/misskey-api.js';
import { definePageMetadata } from '@/scripts/page-metadata.js';
const props = defineProps<{
session: string;
callback?: string;
- name: string;
- icon: string;
- permission: string; // コンマ区切り
+ name?: string;
+ icon?: string;
+ permission?: string; // コンマ区切り
}>();
-const _permissions = computed(() => props.permission ? props.permission.split(',') : []);
+const _permissions = computed(() => {
+ return (props.permission ? props.permission.split(',').filter((p): p is typeof Misskey.permissions[number] => (Misskey.permissions as readonly string[]).includes(p)) : []);
+});
-const state = ref<string | null>(null);
+const authRoot = useTemplateRef('authRoot');
-async function accept(): Promise<void> {
- state.value = 'waiting';
+async function onAccept(token: string) {
await misskeyApi('miauth/gen-token', {
session: props.session,
name: props.name,
iconUrl: props.icon,
permission: _permissions.value,
+ }, token).catch(() => {
+ authRoot.value?.showUI('failed');
});
- state.value = 'accepted';
- if (props.callback) {
+ if (props.callback && props.callback !== '') {
const cbUrl = new URL(props.callback);
- if (['javascript:', 'file:', 'data:', 'mailto:', 'tel:'].includes(cbUrl.protocol)) throw new Error('invalid url');
+ if (['javascript:', 'file:', 'data:', 'mailto:', 'tel:', 'vbscript:'].includes(cbUrl.protocol)) throw new Error('invalid url');
cbUrl.searchParams.set('session', props.session);
- location.href = cbUrl.href;
+ location.href = cbUrl.toString();
+ } else {
+ authRoot.value?.showUI('success');
}
}
-function deny(): void {
- state.value = 'denied';
-}
-
-function onLogin(res): void {
- login(res.i);
+function onDeny() {
+ authRoot.value?.showUI('denied');
}
-const headerActions = computed(() => []);
-
-const headerTabs = computed(() => []);
-
definePageMetadata(() => ({
title: 'MiAuth',
icon: 'ti ti-apps',
@@ -100,15 +84,38 @@ definePageMetadata(() => ({
</script>
<style lang="scss" module>
-.buttons {
- margin-top: 16px;
- display: flex;
- gap: 8px;
- flex-wrap: wrap;
+.formContainer {
+ min-height: 100svh;
+ padding: 32px 32px calc(env(safe-area-inset-bottom, 0px) + 32px) 32px;
+ box-sizing: border-box;
+ display: grid;
+ place-content: center;
+}
+
+.form {
+ position: relative;
+ z-index: 10;
+ border-radius: var(--MI-radius);
+ background-color: var(--MI_THEME-panel);
+ box-shadow: 0 8px 16px rgba(0, 0, 0, 0.1);
+ overflow: clip;
+ max-width: 500px;
+ width: calc(100vw - 64px);
+ height: min(65svh, calc(100svh - calc(env(safe-area-inset-bottom, 0px) + 64px)));
+ overflow-y: scroll;
+}
+
+.redirectRoot {
+ padding: 16px;
+ border-radius: var(--MI-radius);
+ background-color: var(--MI_THEME-bg);
}
-.loginMessage {
- text-align: center;
- margin: 8px 0 24px;
+.redirectUrl {
+ font-size: 90%;
+ padding: 12px;
+ border-radius: var(--MI-radius);
+ background-color: var(--MI_THEME-panel);
+ overflow-x: scroll;
}
</style>
diff --git a/packages/frontend/src/pages/my-clips/index.vue b/packages/frontend/src/pages/my-clips/index.vue
index ece998a7a5..acf37a9a2f 100644
--- a/packages/frontend/src/pages/my-clips/index.vue
+++ b/packages/frontend/src/pages/my-clips/index.vue
@@ -77,15 +77,15 @@ async function create() {
clipsCache.delete();
- pagingComponent.value.reload();
+ pagingComponent.value?.reload();
}
function onClipCreated() {
- pagingComponent.value.reload();
+ pagingComponent.value?.reload();
}
function onClipDeleted() {
- pagingComponent.value.reload();
+ pagingComponent.value?.reload();
}
const headerActions = computed(() => []);
diff --git a/packages/frontend/src/pages/my-lists/list.vue b/packages/frontend/src/pages/my-lists/list.vue
index 804a5ae8f8..69e404bd85 100644
--- a/packages/frontend/src/pages/my-lists/list.vue
+++ b/packages/frontend/src/pages/my-lists/list.vue
@@ -110,7 +110,7 @@ function addUser() {
listId: list.value.id,
userId: user.id,
}).then(() => {
- paginationEl.value.reload();
+ paginationEl.value?.reload();
});
});
}
@@ -126,7 +126,7 @@ async function removeUser(item, ev) {
listId: list.value.id,
userId: item.userId,
}).then(() => {
- paginationEl.value.removeItem(item.id);
+ paginationEl.value?.removeItem(item.id);
});
},
}], ev.currentTarget ?? ev.target);
diff --git a/packages/frontend/src/pages/not-found.vue b/packages/frontend/src/pages/not-found.vue
index 93a792c42f..6a2d01b6fa 100644
--- a/packages/frontend/src/pages/not-found.vue
+++ b/packages/frontend/src/pages/not-found.vue
@@ -24,7 +24,7 @@ const props = defineProps<{
}>();
if (props.showLoginPopup) {
- pleaseLogin('/');
+ pleaseLogin({ path: '/' });
}
const headerActions = computed(() => []);
diff --git a/packages/frontend/src/pages/note.vue b/packages/frontend/src/pages/note.vue
index f6eef52153..737b0eea4c 100644
--- a/packages/frontend/src/pages/note.vue
+++ b/packages/frontend/src/pages/note.vue
@@ -60,6 +60,10 @@ import { i18n } from '@/i18n.js';
import { dateString } from '@/filters/date.js';
import MkClipPreview from '@/components/MkClipPreview.vue';
import { defaultStore } from '@/store.js';
+import { pleaseLogin } from '@/scripts/please-login.js';
+import { getServerContext } from '@/server-context.js';
+
+const CTX_NOTE = getServerContext('note');
const MkNoteDetailed = defineAsyncComponent(() =>
(defaultStore.state.noteDesign === 'misskey') ? import('@/components/MkNoteDetailed.vue') :
@@ -72,7 +76,7 @@ const props = defineProps<{
initialTab?: string;
}>();
-const note = ref<null | Misskey.entities.Note>();
+const note = ref<null | Misskey.entities.Note>(CTX_NOTE);
const clips = ref<Misskey.entities.Clip[]>();
const showPrev = ref<'user' | 'channel' | false>(false);
const showNext = ref<'user' | 'channel' | false>(false);
@@ -121,6 +125,12 @@ function fetchNote() {
showPrev.value = false;
showNext.value = false;
note.value = null;
+
+ if (CTX_NOTE && CTX_NOTE.id === props.noteId) {
+ note.value = CTX_NOTE;
+ return;
+ }
+
misskeyApi('notes/show', {
noteId: props.noteId,
}).then(res => {
@@ -134,6 +144,11 @@ function fetchNote() {
});
}
}).catch(err => {
+ if (err.id === '8e75455b-738c-471d-9f80-62693f33372e') {
+ pleaseLogin({
+ message: i18n.ts.thisContentsAreMarkedAsSigninRequiredByAuthor,
+ });
+ }
error.value = err;
});
}
diff --git a/packages/frontend/src/pages/oauth.vue b/packages/frontend/src/pages/oauth.vue
index 733e34eb2c..8719a769e5 100644
--- a/packages/frontend/src/pages/oauth.vue
+++ b/packages/frontend/src/pages/oauth.vue
@@ -4,40 +4,28 @@ SPDX-License-Identifier: AGPL-3.0-only
-->
<template>
-<MkStickyContainer>
- <template #header><MkPageHeader/></template>
- <MkSpacer :contentMax="800">
- <div v-if="$i">
- <div v-if="permissions.length > 0">
- <p v-if="name">{{ i18n.tsx._auth.permission({ name }) }}</p>
- <p v-else>{{ i18n.ts._auth.permissionAsk }}</p>
- <ul>
- <li v-for="p in permissions" :key="p">{{ i18n.ts._permissions[p] }}</li>
- </ul>
- </div>
- <div v-if="name">{{ i18n.tsx._auth.shareAccess({ name }) }}</div>
- <div v-else>{{ i18n.ts._auth.shareAccessAsk }}</div>
- <form :class="$style.buttons" action="/oauth/decision" accept-charset="utf-8" method="post">
- <input name="login_token" type="hidden" :value="$i.token"/>
- <input name="transaction_id" type="hidden" :value="transactionIdMeta?.content"/>
- <MkButton inline name="cancel" value="cancel">{{ i18n.ts.cancel }}</MkButton>
- <MkButton inline primary>{{ i18n.ts.accept }}</MkButton>
- </form>
+<div>
+ <MkAnimBg style="position: fixed; top: 0;"/>
+ <div :class="$style.formContainer">
+ <div :class="$style.form">
+ <MkAuthConfirm
+ ref="authRoot"
+ :name="name"
+ :permissions="permissions"
+ :waitOnDeny="true"
+ @accept="onAccept"
+ @deny="onDeny"
+ />
</div>
- <div v-else>
- <p :class="$style.loginMessage">{{ i18n.ts._auth.pleaseLogin }}</p>
- <MkSignin @login="onLogin"/>
- </div>
- </MkSpacer>
-</MkStickyContainer>
+ </div>
+</div>
</template>
<script lang="ts" setup>
-import MkSignin from '@/components/MkSignin.vue';
-import MkButton from '@/components/MkButton.vue';
-import { $i, login } from '@/account.js';
-import { i18n } from '@/i18n.js';
+import * as Misskey from 'misskey-js';
+import MkAnimBg from '@/components/MkAnimBg.vue';
import { definePageMetadata } from '@/scripts/page-metadata.js';
+import MkAuthConfirm from '@/components/MkAuthConfirm.vue';
const transactionIdMeta = document.querySelector<HTMLMetaElement>('meta[name="misskey:oauth:transaction-id"]');
if (transactionIdMeta) {
@@ -45,10 +33,44 @@ if (transactionIdMeta) {
}
const name = document.querySelector<HTMLMetaElement>('meta[name="misskey:oauth:client-name"]')?.content;
-const permissions = document.querySelector<HTMLMetaElement>('meta[name="misskey:oauth:scope"]')?.content.split(' ') ?? [];
+const permissions = document.querySelector<HTMLMetaElement>('meta[name="misskey:oauth:scope"]')?.content.split(' ').filter((p): p is typeof Misskey.permissions[number] => (Misskey.permissions as readonly string[]).includes(p)) ?? [];
+
+function doPost(token: string, decision: 'accept' | 'deny') {
+ const form = document.createElement('form');
+ form.action = '/oauth/decision';
+ form.method = 'post';
+ form.acceptCharset = 'utf-8';
+
+ const loginToken = document.createElement('input');
+ loginToken.type = 'hidden';
+ loginToken.name = 'login_token';
+ loginToken.value = token;
+ form.appendChild(loginToken);
+
+ const transactionId = document.createElement('input');
+ transactionId.type = 'hidden';
+ transactionId.name = 'transaction_id';
+ transactionId.value = transactionIdMeta?.content ?? '';
+ form.appendChild(transactionId);
+
+ if (decision === 'deny') {
+ const cancel = document.createElement('input');
+ cancel.type = 'hidden';
+ cancel.name = 'cancel';
+ cancel.value = 'cancel';
+ form.appendChild(cancel);
+ }
+
+ document.body.appendChild(form);
+ form.submit();
+}
+
+function onAccept(token: string) {
+ doPost(token, 'accept');
+}
-function onLogin(res): void {
- login(res.i);
+function onDeny(token: string) {
+ doPost(token, 'deny');
}
definePageMetadata(() => ({
@@ -58,15 +80,24 @@ definePageMetadata(() => ({
</script>
<style lang="scss" module>
-.buttons {
- margin-top: 16px;
- display: flex;
- gap: 8px;
- flex-wrap: wrap;
+.formContainer {
+ min-height: 100svh;
+ padding: 32px 32px calc(env(safe-area-inset-bottom, 0px) + 32px) 32px;
+ box-sizing: border-box;
+ display: grid;
+ place-content: center;
}
-.loginMessage {
- text-align: center;
- margin: 8px 0 24px;
+.form {
+ position: relative;
+ z-index: 10;
+ border-radius: var(--MI-radius);
+ background-color: var(--MI_THEME-panel);
+ box-shadow: 0 8px 16px rgba(0, 0, 0, 0.1);
+ overflow: clip;
+ max-width: 500px;
+ width: calc(100vw - 64px);
+ height: min(65svh, calc(100svh - calc(env(safe-area-inset-bottom, 0px) + 64px)));
+ overflow-y: scroll;
}
</style>
diff --git a/packages/frontend/src/pages/page-editor/els/page-editor.el.image.vue b/packages/frontend/src/pages/page-editor/els/page-editor.el.image.vue
index 1cfe7a6d2d..c3ad6657b0 100644
--- a/packages/frontend/src/pages/page-editor/els/page-editor.el.image.vue
+++ b/packages/frontend/src/pages/page-editor/els/page-editor.el.image.vue
@@ -5,7 +5,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<template>
<!-- eslint-disable vue/no-mutating-props -->
-<XContainer :draggable="true" @remove="() => $emit('remove')">
+<XContainer :draggable="true" @remove="() => emit('remove')">
<template #header><i class="ti ti-photo"></i> {{ i18n.ts._pages.blocks.image }}</template>
<template #func>
<button @click="choose()">
@@ -30,11 +30,12 @@ import { misskeyApi } from '@/scripts/misskey-api.js';
import { i18n } from '@/i18n.js';
const props = defineProps<{
- modelValue: any
+ modelValue: Misskey.entities.PageBlock & { type: 'image' };
}>();
const emit = defineEmits<{
- (ev: 'update:modelValue', value: any): void;
+ (ev: 'update:modelValue', value: Misskey.entities.PageBlock & { type: 'image' }): void;
+ (ev: 'remove'): void;
}>();
const file = ref<Misskey.entities.DriveFile | null>(null);
diff --git a/packages/frontend/src/pages/page-editor/els/page-editor.el.note.vue b/packages/frontend/src/pages/page-editor/els/page-editor.el.note.vue
index 0a28386986..36e03b4790 100644
--- a/packages/frontend/src/pages/page-editor/els/page-editor.el.note.vue
+++ b/packages/frontend/src/pages/page-editor/els/page-editor.el.note.vue
@@ -5,7 +5,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<template>
<!-- eslint-disable vue/no-mutating-props -->
-<XContainer :draggable="true" @remove="() => $emit('remove')">
+<XContainer :draggable="true" @remove="() => emit('remove')">
<template #header><i class="ti ti-note"></i> {{ i18n.ts._pages.blocks.note }}</template>
<section style="padding: 16px;" class="_gaps_s">
@@ -34,19 +34,24 @@ import { misskeyApi } from '@/scripts/misskey-api.js';
import { i18n } from '@/i18n.js';
const props = defineProps<{
- modelValue: any
+ modelValue: Misskey.entities.PageBlock & { type: 'note' };
}>();
const emit = defineEmits<{
- (ev: 'update:modelValue', value: any): void;
+ (ev: 'update:modelValue', value: Misskey.entities.PageBlock & { type: 'note' }): void;
}>();
-const id = ref<any>(props.modelValue.note);
+const id = ref(props.modelValue.note);
const note = ref<Misskey.entities.Note | null>(null);
watch(id, async () => {
if (id.value && (id.value.startsWith('http://') || id.value.startsWith('https://'))) {
- id.value = (id.value.endsWith('/') ? id.value.slice(0, -1) : id.value).split('/').pop();
+ id.value = (id.value.endsWith('/') ? id.value.slice(0, -1) : id.value).split('/').pop() ?? null;
+ }
+
+ if (!id.value) {
+ note.value = null;
+ return;
}
emit('update:modelValue', {
diff --git a/packages/frontend/src/pages/page-editor/els/page-editor.el.section.vue b/packages/frontend/src/pages/page-editor/els/page-editor.el.section.vue
index 0f8dc33143..3fed07f7e8 100644
--- a/packages/frontend/src/pages/page-editor/els/page-editor.el.section.vue
+++ b/packages/frontend/src/pages/page-editor/els/page-editor.el.section.vue
@@ -5,7 +5,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<template>
<!-- eslint-disable vue/no-mutating-props -->
-<XContainer :draggable="true" @remove="() => $emit('remove')">
+<XContainer :draggable="true" @remove="() => emit('remove')">
<template #header><i class="ti ti-note"></i> {{ props.modelValue.title }}</template>
<template #func>
<button class="_button" @click="rename()">
@@ -21,8 +21,9 @@ SPDX-License-Identifier: AGPL-3.0-only
</template>
<script lang="ts" setup>
-/* eslint-disable vue/no-mutating-props */
+
import { defineAsyncComponent, inject, onMounted, watch, ref } from 'vue';
+import * as Misskey from 'misskey-js';
import { v4 as uuid } from 'uuid';
import XContainer from '../page-editor.container.vue';
import * as os from '@/os.js';
@@ -33,14 +34,13 @@ import { getPageBlockList } from '@/pages/page-editor/common.js';
const XBlocks = defineAsyncComponent(() => import('../page-editor.blocks.vue'));
-const props = withDefaults(defineProps<{
- modelValue: any,
-}>(), {
- modelValue: {},
-});
+const props = defineProps<{
+ modelValue: Misskey.entities.PageBlock & { type: 'section'; },
+}>();
const emit = defineEmits<{
- (ev: 'update:modelValue', value: any): void;
+ (ev: 'update:modelValue', value: Misskey.entities.PageBlock & { type: 'section' }): void;
+ (ev: 'remove'): void;
}>();
const children = ref(deepClone(props.modelValue.children ?? []));
diff --git a/packages/frontend/src/pages/page-editor/els/page-editor.el.text.vue b/packages/frontend/src/pages/page-editor/els/page-editor.el.text.vue
index f09f7e1acd..5795b46c00 100644
--- a/packages/frontend/src/pages/page-editor/els/page-editor.el.text.vue
+++ b/packages/frontend/src/pages/page-editor/els/page-editor.el.text.vue
@@ -5,7 +5,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<template>
<!-- eslint-disable vue/no-mutating-props -->
-<XContainer :draggable="true" @remove="() => $emit('remove')">
+<XContainer :draggable="true" @remove="() => emit('remove')">
<template #header><i class="ti ti-align-left"></i> {{ i18n.ts._pages.blocks.text }}</template>
<section>
@@ -15,18 +15,19 @@ SPDX-License-Identifier: AGPL-3.0-only
</template>
<script lang="ts" setup>
-/* eslint-disable vue/no-mutating-props */
+
import { watch, ref, shallowRef, onMounted, onUnmounted } from 'vue';
+import * as Misskey from 'misskey-js';
import XContainer from '../page-editor.container.vue';
import { i18n } from '@/i18n.js';
import { Autocomplete } from '@/scripts/autocomplete.js';
const props = defineProps<{
- modelValue: any
+ modelValue: Misskey.entities.PageBlock & { type: 'text' }
}>();
const emit = defineEmits<{
- (ev: 'update:modelValue', value: any): void;
+ (ev: 'update:modelValue', value: Misskey.entities.PageBlock & { type: 'text' }): void;
}>();
let autocomplete: Autocomplete;
diff --git a/packages/frontend/src/pages/page-editor/page-editor.blocks.vue b/packages/frontend/src/pages/page-editor/page-editor.blocks.vue
index 4967e73000..f191320180 100644
--- a/packages/frontend/src/pages/page-editor/page-editor.blocks.vue
+++ b/packages/frontend/src/pages/page-editor/page-editor.blocks.vue
@@ -4,7 +4,7 @@ SPDX-License-Identifier: AGPL-3.0-only
-->
<template>
-<Sortable :modelValue="modelValue" tag="div" itemKey="id" handle=".drag-handle" :group="{ name: 'blocks' }" :animation="150" :swapThreshold="0.5" @update:modelValue="v => $emit('update:modelValue', v)">
+<Sortable :modelValue="modelValue" tag="div" itemKey="id" handle=".drag-handle" :group="{ name: 'blocks' }" :animation="150" :swapThreshold="0.5" @update:modelValue="v => emit('update:modelValue', v)">
<template #item="{element}">
<div :class="$style.item">
<!-- divãŒç„¡ã„ã¨ã‚¨ãƒ©ãƒ¼ã«ãªã‚‹ https://github.com/SortableJS/vue.draggable.next/issues/189 -->
diff --git a/packages/frontend/src/pages/registry.keys.vue b/packages/frontend/src/pages/registry.keys.vue
index 8dcb8fa477..a13a8f1f4b 100644
--- a/packages/frontend/src/pages/registry.keys.vue
+++ b/packages/frontend/src/pages/registry.keys.vue
@@ -52,7 +52,7 @@ const props = defineProps<{
const scope = computed(() => props.path ? props.path.split('/') : []);
-const keys = ref<any>(null);
+const keys = ref<[string, string][]>([]);
function fetchKeys() {
misskeyApi('i/registry/keys-with-type', {
diff --git a/packages/frontend/src/pages/reversi/game.setting.vue b/packages/frontend/src/pages/reversi/game.setting.vue
index dfb6e3f53e..437a1a2294 100644
--- a/packages/frontend/src/pages/reversi/game.setting.vue
+++ b/packages/frontend/src/pages/reversi/game.setting.vue
@@ -132,7 +132,7 @@ const mapCategories = Array.from(new Set(Object.values(Reversi.maps).map(x => x.
const props = defineProps<{
game: Misskey.entities.ReversiGameDetailed;
- connection: Misskey.ChannelConnection;
+ connection: Misskey.ChannelConnection<Misskey.Channels['reversiGame']>;
}>();
const shareWhenStart = defineModel<boolean>('shareWhenStart', { default: false });
@@ -217,14 +217,14 @@ function onChangeReadyStates(states) {
game.value.user2Ready = states.user2;
}
-function updateSettings(key: keyof Misskey.entities.ReversiGameDetailed) {
+function updateSettings(key: typeof Misskey.reversiUpdateKeys[number]) {
props.connection.send('updateSettings', {
key: key,
value: game.value[key],
});
}
-function onUpdateSettings({ userId, key, value }: { userId: string; key: keyof Misskey.entities.ReversiGameDetailed; value: any; }) {
+function onUpdateSettings<K extends typeof Misskey.reversiUpdateKeys[number]>({ userId, key, value }: { userId: string; key: K; value: Misskey.entities.ReversiGameDetailed[K]; }) {
if (userId === $i.id) return;
if (game.value[key] === value) return;
game.value[key] = value;
diff --git a/packages/frontend/src/pages/role.vue b/packages/frontend/src/pages/role.vue
index 9855442088..d985349bc5 100644
--- a/packages/frontend/src/pages/role.vue
+++ b/packages/frontend/src/pages/role.vue
@@ -6,7 +6,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<template>
<MkStickyContainer>
<template #header><MkPageHeader v-model:tab="tab" :displayBackButton="true" :tabs="headerTabs"/></template>
- <MKSpacer v-if="!(typeof error === 'undefined')" :contentMax="1200">
+ <MkSpacer v-if="error != null" :contentMax="1200">
<div :class="$style.root">
<img :class="$style.img" :src="serverErrorImageUrl" class="_ghost"/>
<p :class="$style.text">
@@ -14,7 +14,7 @@ SPDX-License-Identifier: AGPL-3.0-only
{{ error }}
</p>
</div>
- </MKSpacer>
+ </MkSpacer>
<MkSpacer v-else-if="tab === 'users'" :contentMax="1200">
<div class="_gaps_s">
<div v-if="role">{{ role.description }}</div>
@@ -26,7 +26,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</div>
</MkSpacer>
<MkSpacer v-else-if="tab === 'timeline'" :contentMax="700">
- <MkTimeline v-if="visible" ref="timeline" src="role" :role="props.role"/>
+ <MkTimeline v-if="visible" ref="timeline" src="role" :role="props.roleId"/>
<div v-else-if="!visible" class="_fullinfo">
<img :src="infoImageUrl" class="_ghost"/>
<div>{{ i18n.ts.nothing }}</div>
@@ -47,23 +47,24 @@ import { instanceName } from '@@/js/config.js';
import { serverErrorImageUrl, infoImageUrl } from '@/instance.js';
const props = withDefaults(defineProps<{
- role: string;
+ roleId: string;
initialTab?: string;
}>(), {
initialTab: 'users',
});
+// eslint-disable-next-line vue/no-setup-props-reactivity-loss
const tab = ref(props.initialTab);
-const role = ref<Misskey.entities.Role>();
-const error = ref();
+const role = ref<Misskey.entities.Role | null>(null);
+const error = ref<string | null>(null);
const visible = ref(false);
-watch(() => props.role, () => {
+watch(() => props.roleId, () => {
misskeyApi('roles/show', {
- roleId: props.role,
+ roleId: props.roleId,
}).then(res => {
role.value = res;
- document.title = `${role.value.name} | ${instanceName}`;
+ error.value = null;
visible.value = res.isExplorable && res.isPublic;
}).catch((err) => {
if (err.code === 'NO_SUCH_ROLE') {
@@ -71,7 +72,6 @@ watch(() => props.role, () => {
} else {
error.value = i18n.ts.somethingHappened;
}
- document.title = `${error.value} | ${instanceName}`;
});
}, { immediate: true });
@@ -79,7 +79,7 @@ const users = computed(() => ({
endpoint: 'roles/users' as const,
limit: 30,
params: {
- roleId: props.role,
+ roleId: props.roleId,
},
}));
@@ -94,7 +94,7 @@ const headerTabs = computed(() => [{
}]);
definePageMetadata(() => ({
- title: role.value ? role.value.name : i18n.ts.role,
+ title: role.value ? role.value.name : (error.value ?? i18n.ts.role),
icon: 'ti ti-badge',
}));
</script>
diff --git a/packages/frontend/src/pages/scratchpad.vue b/packages/frontend/src/pages/scratchpad.vue
index 2250e1ce60..88171f7d70 100644
--- a/packages/frontend/src/pages/scratchpad.vue
+++ b/packages/frontend/src/pages/scratchpad.vue
@@ -76,7 +76,11 @@ import { claimAchievement } from '@/scripts/achievements.js';
const parser = new Parser();
let aiscript: Interpreter;
const code = ref('');
-const logs = ref<any[]>([]);
+const logs = ref<{
+ id: number;
+ text: string;
+ print: boolean;
+}[]>([]);
const root = ref<AsUiRoot>();
const components = ref<Ref<AsUiComponent>[]>([]);
const uiKey = ref(0);
diff --git a/packages/frontend/src/pages/settings/2fa.qrdialog.vue b/packages/frontend/src/pages/settings/2fa.qrdialog.vue
index 2244047b31..18c82ffdf6 100644
--- a/packages/frontend/src/pages/settings/2fa.qrdialog.vue
+++ b/packages/frontend/src/pages/settings/2fa.qrdialog.vue
@@ -138,12 +138,13 @@ const token = ref<string | number | null>(null);
const backupCodes = ref<string[]>();
function cancel() {
- dialog.value.close();
+ dialog.value?.close();
}
async function tokenDone() {
+ if (token.value == null) return;
const res = await os.apiWithDialog('i/2fa/done', {
- token: token.value.toString(),
+ token: typeof token.value === 'string' ? token.value : token.value.toString(),
});
backupCodes.value = res.backupCodes;
@@ -166,7 +167,7 @@ function downloadBackupCodes() {
}
function allDone() {
- dialog.value.close();
+ dialog.value?.close();
}
</script>
diff --git a/packages/frontend/src/pages/settings/2fa.vue b/packages/frontend/src/pages/settings/2fa.vue
index a76b748ac1..776f59dda3 100644
--- a/packages/frontend/src/pages/settings/2fa.vue
+++ b/packages/frontend/src/pages/settings/2fa.vue
@@ -84,7 +84,7 @@ import FormSection from '@/components/form/section.vue';
import MkFolder from '@/components/MkFolder.vue';
import MkLink from '@/components/MkLink.vue';
import * as os from '@/os.js';
-import { signinRequired, updateAccount } from '@/account.js';
+import { signinRequired, updateAccountPartial } from '@/account.js';
import { i18n } from '@/i18n.js';
const $i = signinRequired();
@@ -123,7 +123,7 @@ async function unregisterTOTP(): Promise<void> {
password: auth.result.password,
token: auth.result.token,
}).then(res => {
- updateAccount({
+ updateAccountPartial({
twoFactorEnabled: false,
});
}).catch(error => {
diff --git a/packages/frontend/src/pages/settings/accounts.vue b/packages/frontend/src/pages/settings/accounts.vue
index 1bbedb817e..97e960675f 100644
--- a/packages/frontend/src/pages/settings/accounts.vue
+++ b/packages/frontend/src/pages/settings/accounts.vue
@@ -19,13 +19,13 @@ SPDX-License-Identifier: AGPL-3.0-only
</template>
<script lang="ts" setup>
-import { defineAsyncComponent, ref, computed } from 'vue';
+import { ref, computed } from 'vue';
import type * as Misskey from 'misskey-js';
import FormSuspense from '@/components/form/suspense.vue';
import MkButton from '@/components/MkButton.vue';
import * as os from '@/os.js';
import { misskeyApi } from '@/scripts/misskey-api.js';
-import { getAccounts, addAccount as addAccounts, removeAccount as _removeAccount, login, $i } from '@/account.js';
+import { getAccounts, removeAccount as _removeAccount, login, $i, getAccountWithSigninDialog, getAccountWithSignupDialog } from '@/account.js';
import { i18n } from '@/i18n.js';
import { definePageMetadata } from '@/scripts/page-metadata.js';
import MkUserCardMini from '@/components/MkUserCardMini.vue';
@@ -74,27 +74,23 @@ async function removeAccount(account: Misskey.entities.UserDetailed) {
}
function addExistingAccount() {
- const { dispose } = os.popup(defineAsyncComponent(() => import('@/components/MkSigninDialog.vue')), {}, {
- done: async (res: Misskey.entities.SigninFlowResponse & { finished: true }) => {
- await addAccounts(res.id, res.i);
+ getAccountWithSigninDialog().then((res) => {
+ if (res != null) {
os.success();
init();
- },
- closed: () => dispose(),
+ }
});
}
function createAccount() {
- const { dispose } = os.popup(defineAsyncComponent(() => import('@/components/MkSignupDialog.vue')), {}, {
- done: async (res: Misskey.entities.SignupResponse) => {
- await addAccounts(res.id, res.token);
+ getAccountWithSignupDialog().then((res) => {
+ if (res != null) {
switchAccountWithToken(res.token);
- },
- closed: () => dispose(),
+ }
});
}
-async function switchAccount(account: any) {
+async function switchAccount(account: Misskey.entities.UserDetailed) {
const fetchedAccounts = await getAccounts();
const token = fetchedAccounts.find(x => x.id === account.id)!.token;
switchAccountWithToken(token);
diff --git a/packages/frontend/src/pages/settings/apps.vue b/packages/frontend/src/pages/settings/apps.vue
index 68e36ef1bb..6515503505 100644
--- a/packages/frontend/src/pages/settings/apps.vue
+++ b/packages/frontend/src/pages/settings/apps.vue
@@ -55,6 +55,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<script lang="ts" setup>
import { ref, computed } from 'vue';
+import * as Misskey from 'misskey-js';
import FormPagination from '@/components/MkPagination.vue';
import { misskeyApi } from '@/scripts/misskey-api.js';
import { i18n } from '@/i18n.js';
@@ -77,7 +78,7 @@ const pagination = {
function revoke(token) {
misskeyApi('i/revoke-token', { tokenId: token.id }).then(() => {
- list.value.reload();
+ list.value?.reload();
});
}
diff --git a/packages/frontend/src/pages/settings/avatar-decoration.decoration.vue b/packages/frontend/src/pages/settings/avatar-decoration.decoration.vue
index 518f906d2f..c71595380e 100644
--- a/packages/frontend/src/pages/settings/avatar-decoration.decoration.vue
+++ b/packages/frontend/src/pages/settings/avatar-decoration.decoration.vue
@@ -10,12 +10,12 @@ SPDX-License-Identifier: AGPL-3.0-only
>
<div :class="$style.name"><MkCondensedLine :minScale="0.5">{{ decoration.name }}</MkCondensedLine></div>
<MkAvatar style="width: 60px; height: 60px;" :user="$i" :decorations="[{ url: decoration.url, angle, flipH, offsetX, offsetY, showBelow }]" forceShowDecoration/>
- <i v-if="decoration.roleIdsThatCanBeUsedThisDecoration.length > 0 && !$i.roles.some(r => decoration.roleIdsThatCanBeUsedThisDecoration.includes(r.id))" :class="$style.lock" class="ti ti-lock"></i>
+ <i v-if="locked" :class="$style.lock" class="ti ti-lock"></i>
</div>
</template>
<script lang="ts" setup>
-import { } from 'vue';
+import { computed } from 'vue';
import { signinRequired } from '@/account.js';
const $i = signinRequired();
@@ -38,6 +38,8 @@ const props = defineProps<{
const emit = defineEmits<{
(ev: 'click'): void;
}>();
+
+const locked = computed(() => props.decoration.roleIdsThatCanBeUsedThisDecoration.length > 0 && !$i.roles.some(r => props.decoration.roleIdsThatCanBeUsedThisDecoration.includes(r.id)));
</script>
<style lang="scss" module>
@@ -68,5 +70,6 @@ const emit = defineEmits<{
position: absolute;
bottom: 12px;
right: 12px;
+ color: var(--MI_THEME-warn);
}
</style>
diff --git a/packages/frontend/src/pages/settings/avatar-decoration.dialog.vue b/packages/frontend/src/pages/settings/avatar-decoration.dialog.vue
index b84665b111..77f9d4af20 100644
--- a/packages/frontend/src/pages/settings/avatar-decoration.dialog.vue
+++ b/packages/frontend/src/pages/settings/avatar-decoration.dialog.vue
@@ -41,7 +41,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<div :class="$style.footer" class="_buttonsCenter">
<MkButton v-if="usingIndex != null" primary rounded @click="update"><i class="ti ti-check"></i> {{ i18n.ts.update }}</MkButton>
<MkButton v-if="usingIndex != null" rounded @click="detach"><i class="ti ti-x"></i> {{ i18n.ts.detach }}</MkButton>
- <MkButton v-else :disabled="exceeded" primary rounded @click="attach"><i class="ti ti-check"></i> {{ i18n.ts.attach }}</MkButton>
+ <MkButton v-else :disabled="exceeded || locked" primary rounded @click="attach"><i class="ti ti-check"></i> {{ i18n.ts.attach }}</MkButton>
</div>
</div>
</MkModalWindow>
@@ -64,6 +64,7 @@ const props = defineProps<{
id: string;
url: string;
name: string;
+ roleIdsThatCanBeUsedThisDecoration: string[];
};
}>();
@@ -88,6 +89,7 @@ const emit = defineEmits<{
const dialog = shallowRef<InstanceType<typeof MkModalWindow>>();
const exceeded = computed(() => ($i.policies.avatarDecorationLimit - $i.avatarDecorations.length) <= 0);
+const locked = computed(() => props.decoration.roleIdsThatCanBeUsedThisDecoration.length > 0 && !$i.roles.some(r => props.decoration.roleIdsThatCanBeUsedThisDecoration.includes(r.id)));
const angle = ref((props.usingIndex != null ? $i.avatarDecorations[props.usingIndex].angle : null) ?? 0);
const flipH = ref((props.usingIndex != null ? $i.avatarDecorations[props.usingIndex].flipH : null) ?? false);
const offsetX = ref((props.usingIndex != null ? $i.avatarDecorations[props.usingIndex].offsetX : null) ?? 0);
@@ -115,7 +117,7 @@ const decorationsForPreview = computed(() => {
});
function cancel() {
- dialog.value.close();
+ dialog.value?.close();
}
async function update() {
@@ -126,7 +128,7 @@ async function update() {
offsetY: offsetY.value,
showBelow: showBelow.value,
});
- dialog.value.close();
+ dialog.value?.close();
}
async function attach() {
@@ -137,12 +139,12 @@ async function attach() {
offsetY: offsetY.value,
showBelow: showBelow.value,
});
- dialog.value.close();
+ dialog.value?.close();
}
async function detach() {
emit('detach');
- dialog.value.close();
+ dialog.value?.close();
}
</script>
diff --git a/packages/frontend/src/pages/settings/navbar.vue b/packages/frontend/src/pages/settings/navbar.vue
index b189db0f8f..c38cdc4fc2 100644
--- a/packages/frontend/src/pages/settings/navbar.vue
+++ b/packages/frontend/src/pages/settings/navbar.vue
@@ -100,10 +100,6 @@ function reset() {
}));
}
-watch(menuDisplay, async () => {
- await reloadAsk({ reason: i18n.ts.reloadToApplySetting, unison: true });
-});
-
const headerActions = computed(() => []);
const headerTabs = computed(() => []);
diff --git a/packages/frontend/src/pages/settings/notifications.notification-config.vue b/packages/frontend/src/pages/settings/notifications.notification-config.vue
index 1a945aa3ad..0ea415f673 100644
--- a/packages/frontend/src/pages/settings/notifications.notification-config.vue
+++ b/packages/frontend/src/pages/settings/notifications.notification-config.vue
@@ -6,13 +6,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<template>
<div class="_gaps_m">
<MkSelect v-model="type">
- <option value="all">{{ i18n.ts.all }}</option>
- <option v-if="hasSender" value="following">{{ i18n.ts.following }}</option>
- <option v-if="hasSender" value="follower">{{ i18n.ts.followers }}</option>
- <option v-if="hasSender" value="mutualFollow">{{ i18n.ts.mutualFollow }}</option>
- <option v-if="hasSender" value="followingOrFollower">{{ i18n.ts.followingOrFollower }}</option>
- <option v-if="hasSender" value="list">{{ i18n.ts.userList }}</option>
- <option value="never">{{ i18n.ts.none }}</option>
+ <option v-for="type in props.configurableTypes ?? notificationConfigTypes" :key="type" :value="type">{{ notificationConfigTypesI18nMap[type] }}</option>
</MkSelect>
<MkSelect v-if="type === 'list'" v-model="userListId">
@@ -21,34 +15,61 @@ SPDX-License-Identifier: AGPL-3.0-only
</MkSelect>
<div class="_buttons">
- <MkButton inline primary @click="save"><i class="ti ti-check"></i> {{ i18n.ts.save }}</MkButton>
+ <MkButton inline primary :disabled="type === 'list' && userListId === null" @click="save"><i class="ti ti-check"></i> {{ i18n.ts.save }}</MkButton>
</div>
</div>
</template>
+<script lang="ts">
+const notificationConfigTypes = [
+ 'all',
+ 'following',
+ 'follower',
+ 'mutualFollow',
+ 'followingOrFollower',
+ 'list',
+ 'never'
+] as const;
+
+export type NotificationConfig = {
+ type: Exclude<typeof notificationConfigTypes[number], 'list'>;
+} | {
+ type: 'list';
+ userListId: string;
+};
+</script>
+
<script lang="ts" setup>
-import { ref } from 'vue';
import * as Misskey from 'misskey-js';
+import { ref } from 'vue';
import MkSelect from '@/components/MkSelect.vue';
import MkButton from '@/components/MkButton.vue';
import { i18n } from '@/i18n.js';
-const props = withDefaults(defineProps<{
- value: any;
+const props = defineProps<{
+ value: NotificationConfig;
userLists: Misskey.entities.UserList[];
- hasSender: boolean;
-}>(), {
- hasSender: true,
-});
+ configurableTypes?: NotificationConfig['type'][]; // If not specified, all types are configurable
+}>();
const emit = defineEmits<{
- (ev: 'update', result: any): void;
+ (ev: 'update', result: NotificationConfig): void;
}>();
+const notificationConfigTypesI18nMap: Record<typeof notificationConfigTypes[number], string> = {
+ all: i18n.ts.all,
+ following: i18n.ts.following,
+ follower: i18n.ts.followers,
+ mutualFollow: i18n.ts.mutualFollow,
+ followingOrFollower: i18n.ts.followingOrFollower,
+ list: i18n.ts.userList,
+ never: i18n.ts.none,
+};
+
const type = ref(props.value.type);
-const userListId = ref(props.value.userListId);
+const userListId = ref(props.value.type === 'list' ? props.value.userListId : null);
function save() {
- emit('update', { type: type.value, userListId: userListId.value });
+ emit('update', type.value === 'list' ? { type: type.value, userListId: userListId.value! } : { type: type.value });
}
</script>
diff --git a/packages/frontend/src/pages/settings/notifications.vue b/packages/frontend/src/pages/settings/notifications.vue
index 491102fece..8ffe0d6a7a 100644
--- a/packages/frontend/src/pages/settings/notifications.vue
+++ b/packages/frontend/src/pages/settings/notifications.vue
@@ -22,7 +22,12 @@ SPDX-License-Identifier: AGPL-3.0-only
}}
</template>
- <XNotificationConfig :userLists="userLists" :value="$i.notificationRecieveConfig[type] ?? { type: 'all' }" :hasSender="!(notificationTypesWithoutSender.includes(type))" @update="(res) => updateReceiveConfig(type, res)"/>
+ <XNotificationConfig
+ :userLists="userLists"
+ :value="$i.notificationRecieveConfig[type] ?? { type: 'all' }"
+ :configurableTypes="onlyOnOrOffNotificationTypes.includes(type) ? ['all', 'never'] : undefined"
+ @update="(res) => updateReceiveConfig(type, res)"
+ />
</MkFolder>
</div>
</FormSection>
@@ -58,7 +63,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<script lang="ts" setup>
import { shallowRef, computed } from 'vue';
-import XNotificationConfig from './notifications.notification-config.vue';
+import XNotificationConfig, { type NotificationConfig } from './notifications.notification-config.vue';
import FormLink from '@/components/form/link.vue';
import FormSection from '@/components/form/section.vue';
import MkFolder from '@/components/MkFolder.vue';
@@ -73,8 +78,9 @@ import { notificationTypes } from '@@/js/const.js';
const $i = signinRequired();
-const nonConfigurableNotificationTypes = ['note', 'roleAssigned', 'followRequestAccepted', 'test', 'exportCompleted'] as const satisfies (typeof notificationTypes[number])[];
-const notificationTypesWithoutSender = ['achievementEarned'] as const satisfies (typeof notificationTypes[number])[];
+const nonConfigurableNotificationTypes = ['note', 'roleAssigned', 'followRequestAccepted', 'test', 'exportCompleted'] satisfies (typeof notificationTypes[number])[] as string[];
+
+const onlyOnOrOffNotificationTypes = ['app', 'achievementEarned', 'login'] satisfies (typeof notificationTypes[number])[] as string[];
const allowButton = shallowRef<InstanceType<typeof MkPushNotificationAllowButton>>();
const pushRegistrationInServer = computed(() => allowButton.value?.pushRegistrationInServer);
@@ -89,7 +95,7 @@ async function readAllNotifications() {
await os.apiWithDialog('notifications/mark-all-as-read');
}
-async function updateReceiveConfig(type, value) {
+async function updateReceiveConfig(type: typeof notificationTypes[number], value: NotificationConfig) {
await os.apiWithDialog('i/update', {
notificationRecieveConfig: {
...$i.notificationRecieveConfig,
diff --git a/packages/frontend/src/pages/settings/privacy.vue b/packages/frontend/src/pages/settings/privacy.vue
index b155d6e316..78df0faf4d 100644
--- a/packages/frontend/src/pages/settings/privacy.vue
+++ b/packages/frontend/src/pages/settings/privacy.vue
@@ -45,6 +45,93 @@ SPDX-License-Identifier: AGPL-3.0-only
</MkSwitch>
<FormSection>
+ <template #label>{{ i18n.ts.lockdown }}<span class="_beta">{{ i18n.ts.beta }}</span></template>
+
+ <div class="_gaps_m">
+ <MkSwitch :modelValue="requireSigninToViewContents" @update:modelValue="update_requireSigninToViewContents">
+ {{ i18n.ts._accountSettings.requireSigninToViewContents }}
+ <template #caption>
+ <div>{{ i18n.ts._accountSettings.requireSigninToViewContentsDescription1 }}</div>
+ <div><i class="ti ti-alert-triangle" style="color: var(--MI_THEME-warn);"></i> {{ i18n.ts._accountSettings.requireSigninToViewContentsDescription2 }}</div>
+ <div><i class="ti ti-alert-triangle" style="color: var(--MI_THEME-warn);"></i> {{ i18n.ts._accountSettings.requireSigninToViewContentsDescription3 }}</div>
+ </template>
+ </MkSwitch>
+
+ <FormSlot>
+ <template #label>{{ i18n.ts._accountSettings.makeNotesFollowersOnlyBefore }}</template>
+
+ <div class="_gaps_s">
+ <MkSelect :modelValue="makeNotesFollowersOnlyBefore_type" @update:modelValue="makeNotesFollowersOnlyBefore = $event === 'relative' ? -604800 : $event === 'absolute' ? Math.floor(Date.now() / 1000) : null">
+ <option :value="null">{{ i18n.ts.none }}</option>
+ <option value="relative">{{ i18n.ts._accountSettings.notesHavePassedSpecifiedPeriod }}</option>
+ <option value="absolute">{{ i18n.ts._accountSettings.notesOlderThanSpecifiedDateAndTime }}</option>
+ </MkSelect>
+
+ <MkSelect v-if="makeNotesFollowersOnlyBefore_type === 'relative'" v-model="makeNotesFollowersOnlyBefore">
+ <option :value="-3600">{{ i18n.ts.oneHour }}</option>
+ <option :value="-86400">{{ i18n.ts.oneDay }}</option>
+ <option :value="-259200">{{ i18n.ts.threeDays }}</option>
+ <option :value="-604800">{{ i18n.ts.oneWeek }}</option>
+ <option :value="-2592000">{{ i18n.ts.oneMonth }}</option>
+ <option :value="-7776000">{{ i18n.ts.threeMonths }}</option>
+ <option :value="-31104000">{{ i18n.ts.oneYear }}</option>
+ </MkSelect>
+
+ <MkInput
+ v-if="makeNotesFollowersOnlyBefore_type === 'absolute'"
+ :modelValue="formatDateTimeString(new Date(makeNotesFollowersOnlyBefore * 1000), 'yyyy-MM-dd')"
+ type="date"
+ :manualSave="true"
+ @update:modelValue="makeNotesFollowersOnlyBefore = Math.floor(new Date($event).getTime() / 1000)"
+ >
+ </MkInput>
+ </div>
+
+ <template #caption>
+ <div>{{ i18n.ts._accountSettings.makeNotesFollowersOnlyBeforeDescription }}</div>
+ <div><i class="ti ti-alert-triangle" style="color: var(--MI_THEME-warn);"></i> {{ i18n.ts._accountSettings.mayNotEffectForFederatedNotes }}</div>
+ </template>
+ </FormSlot>
+
+ <FormSlot>
+ <template #label>{{ i18n.ts._accountSettings.makeNotesHiddenBefore }}</template>
+
+ <div class="_gaps_s">
+ <MkSelect :modelValue="makeNotesHiddenBefore_type" @update:modelValue="makeNotesHiddenBefore = $event === 'relative' ? -604800 : $event === 'absolute' ? Math.floor(Date.now() / 1000) : null">
+ <option :value="null">{{ i18n.ts.none }}</option>
+ <option value="relative">{{ i18n.ts._accountSettings.notesHavePassedSpecifiedPeriod }}</option>
+ <option value="absolute">{{ i18n.ts._accountSettings.notesOlderThanSpecifiedDateAndTime }}</option>
+ </MkSelect>
+
+ <MkSelect v-if="makeNotesHiddenBefore_type === 'relative'" v-model="makeNotesHiddenBefore">
+ <option :value="-3600">{{ i18n.ts.oneHour }}</option>
+ <option :value="-86400">{{ i18n.ts.oneDay }}</option>
+ <option :value="-259200">{{ i18n.ts.threeDays }}</option>
+ <option :value="-604800">{{ i18n.ts.oneWeek }}</option>
+ <option :value="-2592000">{{ i18n.ts.oneMonth }}</option>
+ <option :value="-7776000">{{ i18n.ts.threeMonths }}</option>
+ <option :value="-31104000">{{ i18n.ts.oneYear }}</option>
+ </MkSelect>
+
+ <MkInput
+ v-if="makeNotesHiddenBefore_type === 'absolute'"
+ :modelValue="formatDateTimeString(new Date(makeNotesHiddenBefore * 1000), 'yyyy-MM-dd')"
+ type="date"
+ :manualSave="true"
+ @update:modelValue="makeNotesHiddenBefore = Math.floor(new Date($event).getTime() / 1000)"
+ >
+ </MkInput>
+ </div>
+
+ <template #caption>
+ <div>{{ i18n.ts._accountSettings.makeNotesHiddenBeforeDescription }}</div>
+ <div><i class="ti ti-alert-triangle" style="color: var(--MI_THEME-warn);"></i> {{ i18n.ts._accountSettings.mayNotEffectForFederatedNotes }}</div>
+ </template>
+ </FormSlot>
+ </div>
+ </FormSection>
+
+ <FormSection>
<div class="_gaps_m">
<MkSwitch v-model="rememberNoteVisibility" @update:modelValue="save()">{{ i18n.ts.rememberNoteVisibility }}</MkSwitch>
<MkFolder v-if="!rememberNoteVisibility">
@@ -72,7 +159,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</template>
<script lang="ts" setup>
-import { ref, computed } from 'vue';
+import { ref, computed, watch } from 'vue';
import MkSwitch from '@/components/MkSwitch.vue';
import MkSelect from '@/components/MkSelect.vue';
import FormSection from '@/components/form/section.vue';
@@ -82,6 +169,10 @@ import { defaultStore } from '@/store.js';
import { i18n } from '@/i18n.js';
import { signinRequired } from '@/account.js';
import { definePageMetadata } from '@/scripts/page-metadata.js';
+import FormSlot from '@/components/form/slot.vue';
+import { formatDateTimeString } from '@/scripts/format-time-string.js';
+import MkInput from '@/components/MkInput.vue';
+import * as os from '@/os.js';
const $i = signinRequired();
@@ -90,6 +181,9 @@ const autoAcceptFollowed = ref($i.autoAcceptFollowed);
const noCrawle = ref($i.noCrawle);
const noindex = ref($i.noindex);
const isExplorable = ref($i.isExplorable);
+const requireSigninToViewContents = ref($i.requireSigninToViewContents ?? false);
+const makeNotesFollowersOnlyBefore = ref($i.makeNotesFollowersOnlyBefore ?? null);
+const makeNotesHiddenBefore = ref($i.makeNotesHiddenBefore ?? null);
const hideOnlineStatus = ref($i.hideOnlineStatus);
const publicReactions = ref($i.publicReactions);
const followingVisibility = ref($i.followingVisibility);
@@ -100,6 +194,43 @@ const defaultNoteLocalOnly = computed(defaultStore.makeGetterSetter('defaultNote
const rememberNoteVisibility = computed(defaultStore.makeGetterSetter('rememberNoteVisibility'));
const keepCw = computed(defaultStore.makeGetterSetter('keepCw'));
+const makeNotesFollowersOnlyBefore_type = computed(() => {
+ if (makeNotesFollowersOnlyBefore.value == null) {
+ return null;
+ } else if (makeNotesFollowersOnlyBefore.value >= 0) {
+ return 'absolute';
+ } else {
+ return 'relative';
+ }
+});
+
+const makeNotesHiddenBefore_type = computed(() => {
+ if (makeNotesHiddenBefore.value == null) {
+ return null;
+ } else if (makeNotesHiddenBefore.value >= 0) {
+ return 'absolute';
+ } else {
+ return 'relative';
+ }
+});
+
+watch([makeNotesFollowersOnlyBefore, makeNotesHiddenBefore], () => {
+ save();
+});
+
+async function update_requireSigninToViewContents(value: boolean) {
+ if (value) {
+ const { canceled } = await os.confirm({
+ type: 'warning',
+ text: i18n.ts.acknowledgeNotesAndEnable,
+ });
+ if (canceled) return;
+ }
+
+ requireSigninToViewContents.value = value;
+ save();
+}
+
function save() {
misskeyApi('i/update', {
isLocked: !!isLocked.value,
@@ -107,6 +238,9 @@ function save() {
noCrawle: !!noCrawle.value,
noindex: !!noindex.value,
isExplorable: !!isExplorable.value,
+ requireSigninToViewContents: !!requireSigninToViewContents.value,
+ makeNotesFollowersOnlyBefore: makeNotesFollowersOnlyBefore.value,
+ makeNotesHiddenBefore: makeNotesHiddenBefore.value,
hideOnlineStatus: !!hideOnlineStatus.value,
publicReactions: !!publicReactions.value,
followingVisibility: followingVisibility.value,
diff --git a/packages/frontend/src/pages/settings/webhook.edit.vue b/packages/frontend/src/pages/settings/webhook.edit.vue
index 40d23e36c5..22b008fb61 100644
--- a/packages/frontend/src/pages/settings/webhook.edit.vue
+++ b/packages/frontend/src/pages/settings/webhook.edit.vue
@@ -44,7 +44,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<MkButton transparent :class="$style.testButton" :disabled="!(active && event_renote)" @click="test('renote')"><i class="ti ti-send"></i></MkButton>
</div>
<div :class="$style.switchBox">
- <MkSwitch v-model="event_reaction">{{ i18n.ts._webhookSettings._events.reaction }}</MkSwitch>
+ <MkSwitch v-model="event_reaction" :disabled="true">{{ i18n.ts._webhookSettings._events.reaction }}</MkSwitch>
<MkButton transparent :class="$style.testButton" :disabled="!(active && event_reaction)" @click="test('reaction')"><i class="ti ti-send"></i></MkButton>
</div>
<div :class="$style.switchBox">
diff --git a/packages/frontend/src/pages/settings/webhook.new.vue b/packages/frontend/src/pages/settings/webhook.new.vue
index d62357caaf..727c4df2d6 100644
--- a/packages/frontend/src/pages/settings/webhook.new.vue
+++ b/packages/frontend/src/pages/settings/webhook.new.vue
@@ -27,7 +27,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<MkSwitch v-model="event_note">{{ i18n.ts._webhookSettings._events.note }}</MkSwitch>
<MkSwitch v-model="event_reply">{{ i18n.ts._webhookSettings._events.reply }}</MkSwitch>
<MkSwitch v-model="event_renote">{{ i18n.ts._webhookSettings._events.renote }}</MkSwitch>
- <MkSwitch v-model="event_reaction">{{ i18n.ts._webhookSettings._events.reaction }}</MkSwitch>
+ <MkSwitch v-model="event_reaction" :disabled="true">{{ i18n.ts._webhookSettings._events.reaction }}</MkSwitch>
<MkSwitch v-model="event_mention">{{ i18n.ts._webhookSettings._events.mention }}</MkSwitch>
</div>
</FormSection>
diff --git a/packages/frontend/src/pages/timeline.vue b/packages/frontend/src/pages/timeline.vue
index c8e12e2542..02c6860ab3 100644
--- a/packages/frontend/src/pages/timeline.vue
+++ b/packages/frontend/src/pages/timeline.vue
@@ -17,11 +17,12 @@ SPDX-License-Identifier: AGPL-3.0-only
<div :class="$style.tl">
<MkTimeline
ref="tlComponent"
- :key="src + withRenotes + withBots + withReplies + onlyFiles"
+ :key="src + withRenotes + withBoth + withReplies + onlyFiles + withSensitive"
:src="src.split(':')[0]"
:list="src.split(':')[1]"
:withRenotes="withRenotes"
:withReplies="withReplies"
+ :withSensitive="withSensitive"
:onlyFiles="onlyFiles"
:withBots="withBots"
:sound="true"
@@ -130,11 +131,6 @@ watch(src, () => {
queue.value = 0;
});
-watch(withSensitive, () => {
- // ã“れã ã‘ã¯ã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆå´ã§å®Œçµã™ã‚‹å‡¦ç†ãªã®ã§æ‰‹å‹•ã§ãƒªãƒ­ãƒ¼ãƒ‰
- tlComponent.value?.reloadTimeline();
-});
-
function queueUpdated(q: number): void {
queue.value = q;
}
diff --git a/packages/frontend/src/pages/user/home.vue b/packages/frontend/src/pages/user/home.vue
index 2ad346c72d..d827f6e468 100644
--- a/packages/frontend/src/pages/user/home.vue
+++ b/packages/frontend/src/pages/user/home.vue
@@ -351,7 +351,7 @@ function parallaxLoop() {
}
function parallax() {
- const banner = bannerEl.value as any;
+ const banner = bannerEl.value;
if (banner == null) return;
const top = getScrollPosition(rootEl.value);
diff --git a/packages/frontend/src/pages/user/index.vue b/packages/frontend/src/pages/user/index.vue
index 87c8bb2866..a35250bf5f 100644
--- a/packages/frontend/src/pages/user/index.vue
+++ b/packages/frontend/src/pages/user/index.vue
@@ -39,6 +39,7 @@ import { definePageMetadata } from '@/scripts/page-metadata.js';
import { i18n } from '@/i18n.js';
import { $i } from '@/account.js';
import MkHorizontalSwipe from '@/components/MkHorizontalSwipe.vue';
+import { getServerContext } from '@/server-context.js';
const XHome = defineAsyncComponent(() => import('./home.vue'));
const XTimeline = defineAsyncComponent(() => import('./index.timeline.vue'));
@@ -52,6 +53,8 @@ const XFlashs = defineAsyncComponent(() => import('./flashs.vue'));
const XGallery = defineAsyncComponent(() => import('./gallery.vue'));
const XRaw = defineAsyncComponent(() => import('./raw.vue'));
+const CTX_USER = getServerContext('user');
+
const props = withDefaults(defineProps<{
acct: string;
page?: string;
@@ -61,13 +64,24 @@ const props = withDefaults(defineProps<{
const tab = ref(props.page);
-const user = ref<null | Misskey.entities.UserDetailed>(null);
+const user = ref<null | Misskey.entities.UserDetailed>(CTX_USER);
const error = ref<any>(null);
function fetchUser(): void {
if (props.acct == null) return;
+
+ const { username, host } = Misskey.acct.parse(props.acct);
+
+ if (CTX_USER && CTX_USER.username === username && CTX_USER.host === host) {
+ user.value = CTX_USER;
+ return;
+ }
+
user.value = null;
- misskeyApi('users/show', Misskey.acct.parse(props.acct)).then(u => {
+ misskeyApi('users/show', {
+ username,
+ host,
+ }).then(u => {
user.value = u;
}).catch(err => {
error.value = err;
diff --git a/packages/frontend/src/pizzax.ts b/packages/frontend/src/pizzax.ts
index ac325e923f..7740fe0d39 100644
--- a/packages/frontend/src/pizzax.ts
+++ b/packages/frontend/src/pizzax.ts
@@ -241,9 +241,13 @@ export class Storage<T extends StateDef> {
* 特定ã®ã‚­ãƒ¼ã®ã€ç°¡æ˜“çš„ãªgetter/setterを作りã¾ã™
* 主ã«vue上ã§è¨­å®šã‚³ãƒ³ãƒˆãƒ­ãƒ¼ãƒ«ã®modelã¨ã—ã¦ä½¿ã†ç”¨
*/
- public makeGetterSetter<K extends keyof T>(key: K, getter?: (v: T[K]) => unknown, setter?: (v: unknown) => T[K]): {
- get: () => T[K]['default'];
- set: (value: T[K]['default']) => void;
+ public makeGetterSetter<K extends keyof T, R = T[K]['default']>(
+ key: K,
+ getter?: (v: T[K]['default']) => R,
+ setter?: (v: R) => T[K]['default'],
+ ): {
+ get: () => R;
+ set: (value: R) => void;
} {
const valueRef = ref(this.state[key]);
@@ -265,7 +269,7 @@ export class Storage<T extends StateDef> {
return valueRef.value;
}
},
- set: (value: unknown) => {
+ set: (value) => {
const val = setter ? setter(value) : value;
this.set(key, val);
valueRef.value = val;
diff --git a/packages/frontend/src/router/definition.ts b/packages/frontend/src/router/definition.ts
index 686ac6920a..c7637a1db9 100644
--- a/packages/frontend/src/router/definition.ts
+++ b/packages/frontend/src/router/definition.ts
@@ -10,7 +10,7 @@ import { $i, iAmModerator } from '@/account.js';
import MkLoading from '@/pages/_loading_.vue';
import MkError from '@/pages/_error_.vue';
-export const page = (loader: AsyncComponentLoader<any>) => defineAsyncComponent({
+export const page = (loader: AsyncComponentLoader) => defineAsyncComponent({
loader: loader,
loadingComponent: MkLoading,
errorComponent: MkError,
@@ -217,7 +217,7 @@ const routes: RouteDef[] = [{
component: page(() => import('@/pages/theme-editor.vue')),
loginRequired: true,
}, {
- path: '/roles/:role',
+ path: '/roles/:roleId',
component: page(() => import('@/pages/role.vue')),
}, {
path: '/user-tags/:tag',
diff --git a/packages/frontend/src/router/main.ts b/packages/frontend/src/router/main.ts
index 709c508741..8307df1150 100644
--- a/packages/frontend/src/router/main.ts
+++ b/packages/frontend/src/router/main.ts
@@ -4,7 +4,7 @@
*/
import { EventEmitter } from 'eventemitter3';
-import { IRouter, Resolved, RouteDef, RouterEvent } from '@/nirax.js';
+import { IRouter, Resolved, RouteDef, RouterEvent, RouterFlag } from '@/nirax.js';
import type { App, ShallowRef } from 'vue';
@@ -83,7 +83,7 @@ class MainRouterProxy implements IRouter {
return this.supplier().currentRoute;
}
- get navHook(): ((path: string, flag?: any) => boolean) | null {
+ get navHook(): ((path: string, flag?: RouterFlag) => boolean) | null {
return this.supplier().navHook;
}
@@ -95,11 +95,11 @@ class MainRouterProxy implements IRouter {
return this.supplier().getCurrentKey();
}
- getCurrentPath(): any {
+ getCurrentPath(): string {
return this.supplier().getCurrentPath();
}
- push(path: string, flag?: any): void {
+ push(path: string, flag?: RouterFlag): void {
this.supplier().push(path, flag);
}
diff --git a/packages/frontend/src/scripts/check-word-mute.ts b/packages/frontend/src/scripts/check-word-mute.ts
index e65c327ffe..6525c207f7 100644
--- a/packages/frontend/src/scripts/check-word-mute.ts
+++ b/packages/frontend/src/scripts/check-word-mute.ts
@@ -2,10 +2,9 @@
* SPDX-FileCopyrightText: syuilo and misskey-project
* SPDX-License-Identifier: AGPL-3.0-only
*/
+import * as Misskey from 'misskey-js';
-import type { Note, MeDetailed } from "misskey-js/entities.js";
-
-export function checkWordMute(note: Note, me: MeDetailed | null | undefined, mutedWords: Array<string | string[]>): boolean {
+export function checkWordMute(note: Misskey.entities.Note, me: Misskey.entities.UserLite | null | undefined, mutedWords: Array<string | string[]>): boolean {
// 自分自身
if (me && (note.userId === me.id)) return false;
diff --git a/packages/frontend/src/scripts/device-kind.ts b/packages/frontend/src/scripts/device-kind.ts
index 7c33f8ccee..7aadb617ca 100644
--- a/packages/frontend/src/scripts/device-kind.ts
+++ b/packages/frontend/src/scripts/device-kind.ts
@@ -3,22 +3,22 @@
* SPDX-License-Identifier: AGPL-3.0-only
*/
-import { defaultStore } from '@/store.js';
-
-await defaultStore.ready;
+export type DeviceKind = 'smartphone' | 'tablet' | 'desktop';
const ua = navigator.userAgent.toLowerCase();
const isTablet = /ipad/.test(ua) || (/mobile|iphone|android/.test(ua) && window.innerWidth > 700);
const isSmartphone = !isTablet && /mobile|iphone|android/.test(ua);
-const isIPhone = /iphone|ipod/gi.test(ua) && navigator.maxTouchPoints > 1;
-// navigator.platform may be deprecated but this check is still required
-const isIPadOS = navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1;
-const isIos = /ipad|iphone|ipod/gi.test(ua) && navigator.maxTouchPoints > 1;
+export const DEFAULT_DEVICE_KIND: DeviceKind = (
+ isSmartphone
+ ? 'smartphone'
+ : isTablet
+ ? 'tablet'
+ : 'desktop'
+);
-export const isFullscreenNotSupported = isIPhone || isIos;
+export let deviceKind: DeviceKind = DEFAULT_DEVICE_KIND;
-export const deviceKind: 'smartphone' | 'tablet' | 'desktop' = defaultStore.state.overridedDeviceKind ? defaultStore.state.overridedDeviceKind
- : isSmartphone ? 'smartphone'
- : isTablet ? 'tablet'
- : 'desktop';
+export function updateDeviceKind(kind: DeviceKind | null) {
+ deviceKind = kind ?? DEFAULT_DEVICE_KIND;
+}
diff --git a/packages/frontend/src/scripts/form.ts b/packages/frontend/src/scripts/form.ts
index 242a504c3b..1032e97ac9 100644
--- a/packages/frontend/src/scripts/form.ts
+++ b/packages/frontend/src/scripts/form.ts
@@ -15,7 +15,7 @@ type Hidden = boolean | ((v: any) => boolean);
export type FormItem = {
label?: string;
type: 'string';
- default: string | null;
+ default?: string | null;
description?: string;
required?: boolean;
hidden?: Hidden;
@@ -24,7 +24,7 @@ export type FormItem = {
} | {
label?: string;
type: 'number';
- default: number | null;
+ default?: number | null;
description?: string;
required?: boolean;
hidden?: Hidden;
@@ -32,20 +32,20 @@ export type FormItem = {
} | {
label?: string;
type: 'boolean';
- default: boolean | null;
+ default?: boolean | null;
description?: string;
hidden?: Hidden;
} | {
label?: string;
type: 'enum';
- default: string | null;
+ default?: string | null;
required?: boolean;
hidden?: Hidden;
enum: EnumItem[];
} | {
label?: string;
type: 'radio';
- default: unknown | null;
+ default?: unknown | null;
required?: boolean;
hidden?: Hidden;
options: {
@@ -55,7 +55,7 @@ export type FormItem = {
} | {
label?: string;
type: 'range';
- default: number | null;
+ default?: number | null;
description?: string;
required?: boolean;
step?: number;
@@ -66,12 +66,12 @@ export type FormItem = {
} | {
label?: string;
type: 'object';
- default: Record<string, unknown> | null;
+ default?: Record<string, unknown> | null;
hidden: Hidden;
} | {
label?: string;
type: 'array';
- default: unknown[] | null;
+ default?: unknown[] | null;
hidden: Hidden;
} | {
type: 'button';
diff --git a/packages/frontend/src/scripts/fullscreen.ts b/packages/frontend/src/scripts/fullscreen.ts
new file mode 100644
index 0000000000..7a0a018ef3
--- /dev/null
+++ b/packages/frontend/src/scripts/fullscreen.ts
@@ -0,0 +1,46 @@
+/*
+ * SPDX-FileCopyrightText: syuilo and misskey-project
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+
+type PartiallyPartial<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>;
+
+type VideoEl = PartiallyPartial<HTMLVideoElement, 'requestFullscreen'> & {
+ webkitEnterFullscreen?(): void;
+ webkitExitFullscreen?(): void;
+};
+
+type PlayerEl = PartiallyPartial<HTMLElement, 'requestFullscreen'>;
+
+type RequestFullscreenProps = {
+ readonly videoEl: VideoEl;
+ readonly playerEl: PlayerEl;
+ readonly options?: FullscreenOptions | null;
+};
+
+type ExitFullscreenProps = {
+ readonly videoEl: VideoEl;
+};
+
+export const requestFullscreen = ({ videoEl, playerEl, options }: RequestFullscreenProps) => {
+ if (playerEl.requestFullscreen != null) {
+ playerEl.requestFullscreen(options ?? undefined);
+ return;
+ }
+ if (videoEl.webkitEnterFullscreen != null) {
+ videoEl.webkitEnterFullscreen();
+ return;
+ }
+};
+
+export const exitFullscreen = ({ videoEl }: ExitFullscreenProps) => {
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
+ if (document.exitFullscreen != null) {
+ document.exitFullscreen();
+ return;
+ }
+ if (videoEl.webkitExitFullscreen != null) {
+ videoEl.webkitExitFullscreen();
+ return;
+ }
+};
diff --git a/packages/frontend/src/scripts/get-bg-color.ts b/packages/frontend/src/scripts/get-bg-color.ts
new file mode 100644
index 0000000000..ccf60b454f
--- /dev/null
+++ b/packages/frontend/src/scripts/get-bg-color.ts
@@ -0,0 +1,18 @@
+/*
+ * SPDX-FileCopyrightText: syuilo and misskey-project
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+
+import tinycolor from 'tinycolor2';
+
+export const getBgColor = (elem?: Element | null | undefined): string | null => {
+ if (elem == null) return null;
+
+ const { backgroundColor: bg } = window.getComputedStyle(elem);
+
+ if (bg && tinycolor(bg).getAlpha() !== 0) {
+ return bg;
+ }
+
+ return getBgColor(elem.parentElement);
+};
diff --git a/packages/frontend/src/scripts/misskey-api.ts b/packages/frontend/src/scripts/misskey-api.ts
index 1b1159fd01..e7a92e2d5c 100644
--- a/packages/frontend/src/scripts/misskey-api.ts
+++ b/packages/frontend/src/scripts/misskey-api.ts
@@ -17,7 +17,7 @@ export function misskeyApi<
_ResT = ResT extends void ? Misskey.api.SwitchCaseResponseType<E, P> : ResT,
>(
endpoint: E,
- data: P = {} as any,
+ data: P & { i?: string | null; } = {} as any,
token?: string | null | undefined,
signal?: AbortSignal,
): Promise<_ResT> {
@@ -30,8 +30,8 @@ export function misskeyApi<
const promise = new Promise<_ResT>((resolve, reject) => {
// Append a credential
- if ($i) (data as any).i = $i.token;
- if (token !== undefined) (data as any).i = token;
+ if ($i) data.i = $i.token;
+ if (token !== undefined) data.i = token;
// Send request
window.fetch(`${apiUrl}/${endpoint}`, {
diff --git a/packages/frontend/src/scripts/please-login.ts b/packages/frontend/src/scripts/please-login.ts
index 18f05bc7f4..43dcf11936 100644
--- a/packages/frontend/src/scripts/please-login.ts
+++ b/packages/frontend/src/scripts/please-login.ts
@@ -44,17 +44,21 @@ export type OpenOnRemoteOptions = {
params: Record<string, string>;
};
-export function pleaseLogin(path?: string, openOnRemote?: OpenOnRemoteOptions) {
+export function pleaseLogin(opts: {
+ path?: string;
+ message?: string;
+ openOnRemote?: OpenOnRemoteOptions;
+} = {}) {
if ($i) return;
const { dispose } = popup(defineAsyncComponent(() => import('@/components/MkSigninDialog.vue')), {
autoSet: true,
- message: openOnRemote ? i18n.ts.signinOrContinueOnRemote : i18n.ts.signinRequired,
- openOnRemote,
+ message: opts.message ?? (opts.openOnRemote ? i18n.ts.signinOrContinueOnRemote : i18n.ts.signinRequired),
+ openOnRemote: opts.openOnRemote,
}, {
cancelled: () => {
- if (path) {
- window.location.href = path;
+ if (opts.path) {
+ window.location.href = opts.path;
}
},
closed: () => dispose(),
diff --git a/packages/frontend/src/scripts/select-file.ts b/packages/frontend/src/scripts/select-file.ts
index 9aa38178b2..b037aa8acc 100644
--- a/packages/frontend/src/scripts/select-file.ts
+++ b/packages/frontend/src/scripts/select-file.ts
@@ -80,7 +80,7 @@ export function chooseFileFromUrl(): Promise<Misskey.entities.DriveFile> {
});
}
-function select(src: any, label: string | null, multiple: boolean): Promise<Misskey.entities.DriveFile[]> {
+function select(src: HTMLElement | EventTarget | null, label: string | null, multiple: boolean): Promise<Misskey.entities.DriveFile[]> {
return new Promise((res, rej) => {
const keepOriginal = ref(defaultStore.state.keepOriginalUploading);
@@ -107,10 +107,10 @@ function select(src: any, label: string | null, multiple: boolean): Promise<Miss
});
}
-export function selectFile(src: any, label: string | null = null): Promise<Misskey.entities.DriveFile> {
+export function selectFile(src: HTMLElement | EventTarget | null, label: string | null = null): Promise<Misskey.entities.DriveFile> {
return select(src, label, false).then(files => files[0]);
}
-export function selectFiles(src: any, label: string | null = null): Promise<Misskey.entities.DriveFile[]> {
+export function selectFiles(src: HTMLElement | EventTarget | null, label: string | null = null): Promise<Misskey.entities.DriveFile[]> {
return select(src, label, true);
}
diff --git a/packages/frontend/src/scripts/shuffle.ts b/packages/frontend/src/scripts/shuffle.ts
index fed16bc71c..1f6ef1928c 100644
--- a/packages/frontend/src/scripts/shuffle.ts
+++ b/packages/frontend/src/scripts/shuffle.ts
@@ -6,8 +6,9 @@
/**
* é…列をシャッフル (破壊的)
*/
-export function shuffle<T extends any[]>(array: T): T {
- let currentIndex = array.length, randomIndex;
+export function shuffle<T extends unknown[]>(array: T): T {
+ let currentIndex = array.length;
+ let randomIndex: number;
// While there remain elements to shuffle.
while (currentIndex !== 0) {
diff --git a/packages/frontend/src/scripts/upload.ts b/packages/frontend/src/scripts/upload.ts
index 22dce609c6..713573a377 100644
--- a/packages/frontend/src/scripts/upload.ts
+++ b/packages/frontend/src/scripts/upload.ts
@@ -32,13 +32,13 @@ const mimeTypeMap = {
export function uploadFile(
file: File,
- folder?: any,
+ folder?: string | Misskey.entities.DriveFolder,
name?: string,
keepOriginal: boolean = defaultStore.state.keepOriginalUploading,
): Promise<Misskey.entities.DriveFile> {
if ($i == null) throw new Error('Not logged in');
- if (folder && typeof folder === 'object') folder = folder.id;
+ const _folder = typeof folder === 'string' ? folder : folder?.id;
if (file.size > instance.maxFileSize) {
alert({
@@ -89,11 +89,11 @@ export function uploadFile(
}
const formData = new FormData();
- formData.append('i', $i.token);
+ formData.append('i', $i!.token);
formData.append('force', 'true');
formData.append('file', resizedImage ?? file);
formData.append('name', ctx.name);
- if (folder) formData.append('folderId', folder);
+ if (_folder) formData.append('folderId', _folder);
const xhr = new XMLHttpRequest();
xhr.open('POST', apiUrl + '/drive/files/create', true);
diff --git a/packages/frontend/src/server-context.ts b/packages/frontend/src/server-context.ts
new file mode 100644
index 0000000000..aa44a10290
--- /dev/null
+++ b/packages/frontend/src/server-context.ts
@@ -0,0 +1,23 @@
+/*
+ * SPDX-FileCopyrightText: syuilo and misskey-project
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+import * as Misskey from 'misskey-js';
+import { $i } from '@/account.js';
+
+const providedContextEl = document.getElementById('misskey_clientCtx');
+
+export type ServerContext = {
+ clip?: Misskey.entities.Clip;
+ note?: Misskey.entities.Note;
+ user?: Misskey.entities.UserLite;
+} | null;
+
+export const serverContext: ServerContext = (providedContextEl && providedContextEl.textContent) ? JSON.parse(providedContextEl.textContent) : null;
+
+export function getServerContext<K extends keyof NonNullable<ServerContext>>(entity: K): Required<Pick<NonNullable<ServerContext>, K>> | null {
+ // contextã¯éžãƒ­ã‚°ã‚¤ãƒ³çŠ¶æ…‹ã®æƒ…å ±ã—ã‹ãªã„ãŸã‚ログイン時ã¯åˆ©ç”¨ã§ããªã„
+ if ($i) return null;
+
+ return serverContext ? (serverContext[entity] ?? null) : null;
+}
diff --git a/packages/frontend/src/store.ts b/packages/frontend/src/store.ts
index 986ee9bf94..11c76db2e3 100644
--- a/packages/frontend/src/store.ts
+++ b/packages/frontend/src/store.ts
@@ -8,11 +8,13 @@ import * as Misskey from 'misskey-js';
import { hemisphere } from '@@/js/intl-const.js';
import lightTheme from '@@/themes/l-cherry.json5';
import darkTheme from '@@/themes/d-ice.json5';
-import { miLocalStorage } from './local-storage.js';
import { searchEngineMap } from './scripts/search-engine-map.js';
import type { SoundType } from '@/scripts/sound.js';
import type { FollowingFeedTab } from '@/scripts/following-feed-utils.js';
+import { DEFAULT_DEVICE_KIND, type DeviceKind } from '@/scripts/device-kind.js';
+import { miLocalStorage } from '@/local-storage.js';
import { Storage } from '@/pizzax.js';
+import type { Ast } from '@syuilo/aiscript';
interface PostFormAction {
title: string,
@@ -261,7 +263,7 @@ export const defaultStore = markRaw(new Storage('base', {
overridedDeviceKind: {
where: 'device',
- default: null as null | 'smartphone' | 'tablet' | 'desktop',
+ default: null as DeviceKind | null,
},
serverDisconnectedBehavior: {
where: 'device',
@@ -329,11 +331,11 @@ export const defaultStore = markRaw(new Storage('base', {
},
useBlurEffectForModal: {
where: 'device',
- default: !/mobile|iphone|android/.test(navigator.userAgent.toLowerCase()), // 循環å‚ç…§ã™ã‚‹ã®ã§device-kind.tsã¯å‚ç…§ã§ããªã„
+ default: DEFAULT_DEVICE_KIND === 'desktop',
},
useBlurEffect: {
where: 'device',
- default: !/mobile|iphone|android/.test(navigator.userAgent.toLowerCase()), // 循環å‚ç…§ã™ã‚‹ã®ã§device-kind.tsã¯å‚ç…§ã§ããªã„
+ default: DEFAULT_DEVICE_KIND === 'desktop',
},
showFixedPostForm: {
where: 'device',
@@ -611,7 +613,7 @@ export type Plugin = {
token: string;
src: string | null;
version: string;
- ast: any[];
+ ast: Ast.Node[];
author?: string;
description?: string;
permissions?: string[];
@@ -649,13 +651,13 @@ export class ColdDeviceStorage {
}
public static getAll(): Partial<typeof this.default> {
- return (Object.keys(this.default) as (keyof typeof this.default)[]).reduce((acc, key) => {
+ return (Object.keys(this.default) as (keyof typeof this.default)[]).reduce<Partial<typeof this.default>>((acc, key) => {
const value = localStorage.getItem(PREFIX + key);
if (value != null) {
acc[key] = JSON.parse(value);
}
return acc;
- }, {} as any);
+ }, {});
}
public static set<T extends keyof typeof ColdDeviceStorage.default>(key: T, value: typeof ColdDeviceStorage.default[T]): void {
@@ -700,7 +702,7 @@ export class ColdDeviceStorage {
get: () => {
return valueRef.value;
},
- set: (value: unknown) => {
+ set: (value: typeof ColdDeviceStorage.default[K]) => {
const val = value;
ColdDeviceStorage.set(key, val);
},
diff --git a/packages/frontend/src/style.scss b/packages/frontend/src/style.scss
index 377325d0d4..2e8060fda7 100644
--- a/packages/frontend/src/style.scss
+++ b/packages/frontend/src/style.scss
@@ -531,20 +531,17 @@ html[data-color-scheme=dark] ._woodenFrame {
10%,
20% {
- transform: scale3d(0.9, 0.9, 0.9) rotate3d(0, 0, 1, -3deg);
+ transform: scale3d(0.91, 0.91, 0.91) rotate3d(0, 0, 1, -2deg);
}
30%,
- 50%,
- 70%,
- 90% {
- transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg);
+ 70% {
+ transform: scale3d(1.09, 1.09, 1.09) rotate3d(0, 0, 1, 2deg);
}
- 40%,
- 60%,
- 80% {
- transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg);
+ 50%,
+ 90% {
+ transform: scale3d(1.09, 1.09, 1.09) rotate3d(0, 0, 1, -2deg);
}
to {
diff --git a/packages/frontend/src/types/post-form.ts b/packages/frontend/src/types/post-form.ts
new file mode 100644
index 0000000000..5bb04a95a0
--- /dev/null
+++ b/packages/frontend/src/types/post-form.ts
@@ -0,0 +1,22 @@
+/*
+ * SPDX-FileCopyrightText: syuilo and misskey-project
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+
+import * as Misskey from 'misskey-js';
+
+export interface PostFormProps {
+ reply?: Misskey.entities.Note;
+ renote?: Misskey.entities.Note;
+ channel?: Misskey.entities.Channel; // TODO
+ mention?: Misskey.entities.User;
+ specified?: Misskey.entities.UserDetailed;
+ initialText?: string;
+ initialCw?: string;
+ initialVisibility?: (typeof Misskey.noteVisibilities)[number];
+ initialFiles?: Misskey.entities.DriveFile[];
+ initialLocalOnly?: boolean;
+ initialVisibleUsers?: Misskey.entities.UserDetailed[];
+ initialNote?: Misskey.entities.Note;
+ instant?: boolean;
+};
diff --git a/packages/frontend/src/ui/_common_/navbar.vue b/packages/frontend/src/ui/_common_/navbar.vue
index a5e6a238ae..5cc0e52f77 100644
--- a/packages/frontend/src/ui/_common_/navbar.vue
+++ b/packages/frontend/src/ui/_common_/navbar.vue
@@ -56,6 +56,21 @@ SPDX-License-Identifier: AGPL-3.0-only
</button>
</div>
</div>
+ <button v-if="!forceIconOnly" class="_button" :class="$style.toggleButton" @click="toggleIconOnly">
+ <!--
+ <svg viewBox="0 0 16 48" :class="$style.toggleButtonShape">
+ <g transform="matrix(0.333333,0,0,0.222222,0.000895785,13.3333)">
+ <path d="M23.935,-24C37.223,-24 47.995,-7.842 47.995,12.09C47.995,34.077 47.995,62.07 47.995,84.034C47.995,93.573 45.469,102.721 40.972,109.466C36.475,116.211 30.377,120 24.018,120L23.997,120C10.743,120 -0.003,136.118 -0.003,156C-0.003,156 -0.003,156 -0.003,156L-0.003,-60L-0.003,-59.901C-0.003,-50.379 2.519,-41.248 7.007,-34.515C11.496,-27.782 17.584,-24 23.931,-24C23.932,-24 23.934,-24 23.935,-24Z" style="fill:var(--MI_THEME-navBg);"/>
+ </g>
+ </svg>
+ -->
+ <svg viewBox="0 0 16 64" :class="$style.toggleButtonShape">
+ <g transform="matrix(0.333333,0,0,0.222222,0.000895785,21.3333)">
+ <path d="M47.488,7.995C47.79,10.11 47.943,12.266 47.943,14.429C47.997,26.989 47.997,84 47.997,84C47.997,84 44.018,118.246 23.997,133.5C-0.374,152.07 -0.003,192 -0.003,192L-0.003,-96C-0.003,-96 0.151,-56.216 23.997,-37.5C40.861,-24.265 46.043,-1.243 47.488,7.995Z" style="fill:var(--MI_THEME-navBg);"/>
+ </g>
+ </svg>
+ <i :class="'ti ' + `ti-chevron-${ iconOnly ? 'right' : 'left' }`" style="font-size: 12px; margin-left: -8px;"></i>
+ </button>
</div>
</template>
@@ -80,9 +95,11 @@ const otherMenuItemIndicated = computed(() => {
return false;
});
-const calcViewState = () => {
- iconOnly.value = (window.innerWidth <= 1279) || (defaultStore.state.menuDisplay === 'sideIcon');
-};
+const forceIconOnly = window.innerWidth <= 1279;
+
+function calcViewState() {
+ iconOnly.value = forceIconOnly || (defaultStore.state.menuDisplay === 'sideIcon');
+}
calcViewState();
@@ -92,6 +109,10 @@ watch(defaultStore.reactiveState.menuDisplay, () => {
calcViewState();
});
+function toggleIconOnly() {
+ defaultStore.set('menuDisplay', iconOnly.value ? 'sideFull' : 'sideIcon');
+}
+
function openAccountMenu(ev: MouseEvent) {
openAccountMenu_({
withExtraOperation: true,
@@ -133,6 +154,38 @@ function more(ev: MouseEvent) {
contain: strict;
display: flex;
flex-direction: column;
+ direction: rtl; // スクロールãƒãƒ¼ã‚’å·¦ã«è¡¨ç¤ºã—ãŸã„ãŸã‚
+}
+
+.top {
+ direction: ltr;
+}
+
+.middle {
+ direction: ltr;
+}
+
+.bottom {
+ direction: ltr;
+}
+
+.toggleButton {
+ position: fixed;
+ bottom: 20px;
+ left: var(--nav-width);
+ z-index: 1001;
+ width: 16px;
+ height: 64px;
+ box-sizing: border-box;
+}
+
+.toggleButtonShape {
+ position: absolute;
+ z-index: -1;
+ top: 0;
+ left: 0;
+ width: 16px;
+ height: 64px;
}
.root:not(.iconOnly) {
@@ -370,6 +423,10 @@ function more(ev: MouseEvent) {
position: relative;
font-size: 0.9em;
}
+
+ .toggleButton {
+ left: var(--nav-width);
+ }
}
.root.iconOnly {
@@ -570,5 +627,9 @@ function more(ev: MouseEvent) {
font-size: 10px;
}
}
+
+ .toggleButton {
+ left: var(--nav-icon-only-width);
+ }
}
</style>
diff --git a/packages/frontend/src/ui/_common_/statusbar-rss.vue b/packages/frontend/src/ui/_common_/statusbar-rss.vue
index 550fc39b00..da8fa8bb21 100644
--- a/packages/frontend/src/ui/_common_/statusbar-rss.vue
+++ b/packages/frontend/src/ui/_common_/statusbar-rss.vue
@@ -48,7 +48,7 @@ const fetching = ref(true);
const key = ref(0);
const tick = () => {
- window.fetch(`/api/fetch-rss?url=${props.url}`, {}).then(res => {
+ window.fetch(`/api/fetch-rss?url=${encodeURIComponent(props.url)}`, {}).then(res => {
res.json().then((feed: Misskey.entities.FetchRssResponse) => {
if (props.shuffle) {
shuffle(feed.items);
diff --git a/packages/frontend/src/ui/deck/deck-store.ts b/packages/frontend/src/ui/deck/deck-store.ts
index eb587554b9..3186982349 100644
--- a/packages/frontend/src/ui/deck/deck-store.ts
+++ b/packages/frontend/src/ui/deck/deck-store.ts
@@ -49,6 +49,7 @@ export type Column = {
tl?: BasicTimelineType;
withRenotes?: boolean;
withReplies?: boolean;
+ withSensitive?: boolean;
onlyFiles?: boolean;
soundSetting: SoundStore;
};
diff --git a/packages/frontend/src/ui/deck/tl-column.vue b/packages/frontend/src/ui/deck/tl-column.vue
index 8315f7fca5..8f5553ccae 100644
--- a/packages/frontend/src/ui/deck/tl-column.vue
+++ b/packages/frontend/src/ui/deck/tl-column.vue
@@ -24,6 +24,7 @@ SPDX-License-Identifier: AGPL-3.0-only
:src="column.tl"
:withRenotes="withRenotes"
:withReplies="withReplies"
+ :withSensitive="withSensitive"
:onlyFiles="onlyFiles"
@note="onNote"
/>
@@ -54,6 +55,7 @@ const timeline = shallowRef<InstanceType<typeof MkTimeline>>();
const soundSetting = ref<SoundStore>(props.column.soundSetting ?? { type: null, volume: 1 });
const withRenotes = ref(props.column.withRenotes ?? true);
const withReplies = ref(props.column.withReplies ?? false);
+const withSensitive = ref(props.column.withSensitive ?? true);
const onlyFiles = ref(props.column.onlyFiles ?? false);
watch(withRenotes, v => {
@@ -68,6 +70,12 @@ watch(withReplies, v => {
});
});
+watch(withSensitive, v => {
+ updateColumn(props.column.id, {
+ withSensitive: v,
+ });
+});
+
watch(onlyFiles, v => {
updateColumn(props.column.id, {
onlyFiles: v,
@@ -146,6 +154,10 @@ const menu = computed<MenuItem[]>(() => {
text: i18n.ts.fileAttachedOnly,
ref: onlyFiles,
disabled: hasWithReplies(props.column.tl) ? withReplies : false,
+ }, {
+ type: 'switch',
+ text: i18n.ts.withSensitive,
+ ref: withSensitive,
});
return menuItems;
diff --git a/packages/frontend/src/widgets/WidgetPhotos.vue b/packages/frontend/src/widgets/WidgetPhotos.vue
index 17bdb156f2..60a4770e40 100644
--- a/packages/frontend/src/widgets/WidgetPhotos.vue
+++ b/packages/frontend/src/widgets/WidgetPhotos.vue
@@ -68,10 +68,10 @@ const onDriveFileCreated = (file) => {
}
};
-const thumbnail = (image: any): string => {
+const thumbnail = (image: Misskey.entities.DriveFile): string => {
return defaultStore.state.disableShowingAnimatedImages
? getStaticImageUrl(image.url)
- : image.thumbnailUrl;
+ : image.thumbnailUrl ?? image.url;
};
misskeyApi('drive/stream', {
diff --git a/packages/frontend/src/widgets/WidgetRss.vue b/packages/frontend/src/widgets/WidgetRss.vue
index 3e43687709..92dc6d148e 100644
--- a/packages/frontend/src/widgets/WidgetRss.vue
+++ b/packages/frontend/src/widgets/WidgetRss.vue
@@ -70,7 +70,7 @@ const items = computed(() => rawItems.value.slice(0, widgetProps.maxEntries));
const fetching = ref(true);
const fetchEndpoint = computed(() => {
const url = new URL('/api/fetch-rss', base);
- url.searchParams.set('url', widgetProps.url);
+ url.searchParams.set('url', encodeURIComponent(widgetProps.url));
return url;
});
const intervalClear = ref<(() => void) | undefined>();
diff --git a/packages/frontend/src/widgets/WidgetRssTicker.vue b/packages/frontend/src/widgets/WidgetRssTicker.vue
index 4f594b720f..6957878572 100644
--- a/packages/frontend/src/widgets/WidgetRssTicker.vue
+++ b/packages/frontend/src/widgets/WidgetRssTicker.vue
@@ -99,7 +99,7 @@ const items = computed(() => {
const fetching = ref(true);
const fetchEndpoint = computed(() => {
const url = new URL('/api/fetch-rss', base);
- url.searchParams.set('url', widgetProps.url);
+ url.searchParams.set('url', encodeURIComponent(widgetProps.url));
return url;
});
const intervalClear = ref<(() => void) | undefined>();
diff --git a/packages/misskey-bubble-game/package.json b/packages/misskey-bubble-game/package.json
index 2b280f17fc..a2484d5f6a 100644
--- a/packages/misskey-bubble-game/package.json
+++ b/packages/misskey-bubble-game/package.json
@@ -22,16 +22,16 @@
"lint": "pnpm typecheck && pnpm eslint"
},
"devDependencies": {
- "@types/matter-js": "0.19.6",
+ "@types/matter-js": "0.19.7",
"@types/seedrandom": "3.0.8",
- "@types/node": "20.11.5",
+ "@types/node": "22.9.0",
"@typescript-eslint/eslint-plugin": "7.1.0",
"@typescript-eslint/parser": "7.1.0",
- "nodemon": "3.0.2",
+ "nodemon": "3.1.7",
"execa": "8.0.1",
- "typescript": "5.3.3",
- "esbuild": "0.19.11",
- "glob": "10.3.10"
+ "typescript": "5.6.3",
+ "esbuild": "0.24.0",
+ "glob": "11.0.0"
},
"files": [
"built"
diff --git a/packages/misskey-js/etc/misskey-js.api.md b/packages/misskey-js/etc/misskey-js.api.md
index 2c8a04459d..47fb288851 100644
--- a/packages/misskey-js/etc/misskey-js.api.md
+++ b/packages/misskey-js/etc/misskey-js.api.md
@@ -7,6 +7,7 @@
import type { AuthenticationResponseJSON } from '@simplewebauthn/types';
import { EventEmitter } from 'eventemitter3';
import type { PublicKeyCredentialRequestOptionsJSON } from '@simplewebauthn/types';
+import _ReconnectingWebsocket from 'reconnecting-websocket';
// Warning: (ae-forgotten-export) The symbol "components" needs to be exported by the entry point index.d.ts
//
@@ -124,6 +125,9 @@ type AdminApproveUserRequest = operations['admin___approve-user']['requestBody']
type AdminAvatarDecorationsCreateRequest = operations['admin___avatar-decorations___create']['requestBody']['content']['application/json'];
// @public (undocumented)
+type AdminAvatarDecorationsCreateResponse = operations['admin___avatar-decorations___create']['responses']['200']['content']['application/json'];
+
+// @public (undocumented)
type AdminAvatarDecorationsDeleteRequest = operations['admin___avatar-decorations___delete']['requestBody']['content']['application/json'];
// @public (undocumented)
@@ -1286,6 +1290,7 @@ declare namespace entities {
AdminAnnouncementsListResponse,
AdminAnnouncementsUpdateRequest,
AdminAvatarDecorationsCreateRequest,
+ AdminAvatarDecorationsCreateResponse,
AdminAvatarDecorationsDeleteRequest,
AdminAvatarDecorationsListRequest,
AdminAvatarDecorationsListResponse,
@@ -3243,7 +3248,7 @@ export class Stream extends EventEmitter<StreamEvents> implements IStream {
constructor(origin: string, user: {
token: string;
} | null, options?: {
- WebSocket?: WebSocket;
+ WebSocket?: _ReconnectingWebsocket.Options['WebSocket'];
});
// (undocumented)
close(): void;
diff --git a/packages/misskey-js/generator/package.json b/packages/misskey-js/generator/package.json
index 1d31c73237..f64150882d 100644
--- a/packages/misskey-js/generator/package.json
+++ b/packages/misskey-js/generator/package.json
@@ -8,14 +8,14 @@
},
"devDependencies": {
"@readme/openapi-parser": "2.6.0",
- "@types/node": "20.9.1",
+ "@types/node": "22.9.0",
"@typescript-eslint/eslint-plugin": "7.17.0",
"@typescript-eslint/parser": "7.17.0",
"openapi-types": "12.1.3",
"openapi-typescript": "6.7.3",
- "ts-case-convert": "2.0.7",
+ "ts-case-convert": "2.1.0",
"tsx": "4.4.0",
- "typescript": "5.6.2"
+ "typescript": "5.6.3"
},
"files": [
"built"
diff --git a/packages/misskey-js/package.json b/packages/misskey-js/package.json
index 04deccffd6..392f296bb0 100644
--- a/packages/misskey-js/package.json
+++ b/packages/misskey-js/package.json
@@ -1,7 +1,7 @@
{
"type": "module",
"name": "misskey-js",
- "version": "2024.10.3",
+ "version": "2024.11.1-rc",
"description": "Misskey SDK for JavaScript",
"license": "MIT",
"main": "./built/index.js",
@@ -35,10 +35,10 @@
"directory": "packages/misskey-js"
},
"devDependencies": {
- "@microsoft/api-extractor": "7.47.9",
- "@swc/jest": "0.2.36",
- "@types/jest": "29.5.13",
- "@types/node": "20.14.12",
+ "@microsoft/api-extractor": "7.47.11",
+ "@swc/jest": "0.2.37",
+ "@types/jest": "29.5.14",
+ "@types/node": "22.9.0",
"@typescript-eslint/eslint-plugin": "7.17.0",
"@typescript-eslint/parser": "7.17.0",
"jest": "29.7.0",
@@ -47,17 +47,17 @@
"mock-socket": "9.3.1",
"ncp": "2.0.0",
"nodemon": "3.1.7",
- "execa": "9.4.0",
+ "execa": "8.0.1",
"tsd": "0.31.2",
- "typescript": "5.6.2",
- "esbuild": "0.23.1",
+ "typescript": "5.6.3",
+ "esbuild": "0.24.0",
"glob": "11.0.0"
},
"files": [
"built"
],
"dependencies": {
- "@simplewebauthn/types": "10.0.0",
+ "@simplewebauthn/types": "11.0.0",
"eventemitter3": "5.0.1",
"reconnecting-websocket": "4.4.0"
}
diff --git a/packages/misskey-js/src/autogen/endpoint.ts b/packages/misskey-js/src/autogen/endpoint.ts
index 3dcdaadfe8..fb69d8a08c 100644
--- a/packages/misskey-js/src/autogen/endpoint.ts
+++ b/packages/misskey-js/src/autogen/endpoint.ts
@@ -31,6 +31,7 @@ import type {
AdminAnnouncementsListResponse,
AdminAnnouncementsUpdateRequest,
AdminAvatarDecorationsCreateRequest,
+ AdminAvatarDecorationsCreateResponse,
AdminAvatarDecorationsDeleteRequest,
AdminAvatarDecorationsListRequest,
AdminAvatarDecorationsListResponse,
@@ -618,7 +619,7 @@ export type Endpoints = {
'admin/announcements/delete': { req: AdminAnnouncementsDeleteRequest; res: EmptyResponse };
'admin/announcements/list': { req: AdminAnnouncementsListRequest; res: AdminAnnouncementsListResponse };
'admin/announcements/update': { req: AdminAnnouncementsUpdateRequest; res: EmptyResponse };
- 'admin/avatar-decorations/create': { req: AdminAvatarDecorationsCreateRequest; res: EmptyResponse };
+ 'admin/avatar-decorations/create': { req: AdminAvatarDecorationsCreateRequest; res: AdminAvatarDecorationsCreateResponse };
'admin/avatar-decorations/delete': { req: AdminAvatarDecorationsDeleteRequest; res: EmptyResponse };
'admin/avatar-decorations/list': { req: AdminAvatarDecorationsListRequest; res: AdminAvatarDecorationsListResponse };
'admin/avatar-decorations/update': { req: AdminAvatarDecorationsUpdateRequest; res: EmptyResponse };
diff --git a/packages/misskey-js/src/autogen/entities.ts b/packages/misskey-js/src/autogen/entities.ts
index e4ae018338..1e8952d0f7 100644
--- a/packages/misskey-js/src/autogen/entities.ts
+++ b/packages/misskey-js/src/autogen/entities.ts
@@ -34,6 +34,7 @@ export type AdminAnnouncementsListRequest = operations['admin___announcements___
export type AdminAnnouncementsListResponse = operations['admin___announcements___list']['responses']['200']['content']['application/json'];
export type AdminAnnouncementsUpdateRequest = operations['admin___announcements___update']['requestBody']['content']['application/json'];
export type AdminAvatarDecorationsCreateRequest = operations['admin___avatar-decorations___create']['requestBody']['content']['application/json'];
+export type AdminAvatarDecorationsCreateResponse = operations['admin___avatar-decorations___create']['responses']['200']['content']['application/json'];
export type AdminAvatarDecorationsDeleteRequest = operations['admin___avatar-decorations___delete']['requestBody']['content']['application/json'];
export type AdminAvatarDecorationsListRequest = operations['admin___avatar-decorations___list']['requestBody']['content']['application/json'];
export type AdminAvatarDecorationsListResponse = operations['admin___avatar-decorations___list']['responses']['200']['content']['application/json'];
diff --git a/packages/misskey-js/src/autogen/types.ts b/packages/misskey-js/src/autogen/types.ts
index 2872828f9f..80f8ec5880 100644
--- a/packages/misskey-js/src/autogen/types.ts
+++ b/packages/misskey-js/src/autogen/types.ts
@@ -3908,6 +3908,9 @@ export type components = {
isCat?: boolean;
speakAsCat?: boolean;
isSilenced: boolean;
+ requireSigninToViewContents?: boolean;
+ makeNotesFollowersOnlyBefore?: number | null;
+ makeNotesHiddenBefore?: number | null;
instance?: {
name: string | null;
softwareName: string | null;
@@ -6541,9 +6544,22 @@ export type operations = {
};
};
responses: {
- /** @description OK (without any results) */
- 204: {
- content: never;
+ /** @description OK (with results) */
+ 200: {
+ content: {
+ 'application/json': {
+ /** Format: id */
+ id: string;
+ /** Format: date-time */
+ createdAt: string;
+ /** Format: date-time */
+ updatedAt: string | null;
+ name: string;
+ description: string;
+ url: string;
+ roleIdsThatCanBeUsedThisDecoration: string[];
+ };
+ };
};
/** @description Client error */
400: {
@@ -20696,6 +20712,9 @@ export type operations = {
noCrawle?: boolean;
preventAiLearning?: boolean;
noindex?: boolean;
+ requireSigninToViewContents?: boolean;
+ makeNotesFollowersOnlyBefore?: number | null;
+ makeNotesHiddenBefore?: number | null;
isBot?: boolean;
isCat?: boolean;
speakAsCat?: boolean;
@@ -29209,4 +29228,3 @@ export type operations = {
};
};
};
-
diff --git a/packages/misskey-js/src/streaming.ts b/packages/misskey-js/src/streaming.ts
index ffb46c77f6..6e34ec1508 100644
--- a/packages/misskey-js/src/streaming.ts
+++ b/packages/misskey-js/src/streaming.ts
@@ -51,7 +51,7 @@ export default class Stream extends EventEmitter<StreamEvents> implements IStrea
private idCounter = 0;
constructor(origin: string, user: { token: string; } | null, options?: {
- WebSocket?: WebSocket;
+ WebSocket?: _ReconnectingWebsocket.Options['WebSocket'];
}) {
super();
diff --git a/packages/misskey-reversi/package.json b/packages/misskey-reversi/package.json
index 6386f40118..3a468a9369 100644
--- a/packages/misskey-reversi/package.json
+++ b/packages/misskey-reversi/package.json
@@ -22,14 +22,14 @@
"lint": "pnpm typecheck && pnpm eslint"
},
"devDependencies": {
- "@types/node": "20.11.5",
+ "@types/node": "22.9.0",
"@typescript-eslint/eslint-plugin": "7.1.0",
"@typescript-eslint/parser": "7.1.0",
"execa": "8.0.1",
- "nodemon": "3.0.2",
- "typescript": "5.3.3",
- "esbuild": "0.19.11",
- "glob": "10.3.10"
+ "nodemon": "3.1.7",
+ "typescript": "5.6.3",
+ "esbuild": "0.24.0",
+ "glob": "11.0.0"
},
"files": [
"built"
diff --git a/packages/sw/package.json b/packages/sw/package.json
index ed63a02662..d8c7f3618c 100644
--- a/packages/sw/package.json
+++ b/packages/sw/package.json
@@ -9,7 +9,7 @@
"lint": "pnpm typecheck && pnpm eslint"
},
"dependencies": {
- "esbuild": "0.23.1",
+ "esbuild": "0.24.0",
"idb-keyval": "6.2.1",
"misskey-js": "workspace:*"
},
@@ -18,7 +18,7 @@
"@typescript/lib-webworker": "npm:@types/serviceworker@0.0.67",
"eslint-plugin-import": "2.30.0",
"nodemon": "3.1.7",
- "typescript": "5.6.2"
+ "typescript": "5.6.3"
},
"type": "module"
}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 47416fd0ee..b923a32b0e 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -14,10 +14,10 @@ importers:
dependencies:
cssnano:
specifier: 6.1.2
- version: 6.1.2(postcss@8.4.47)
+ version: 6.1.2(postcss@8.4.49)
esbuild:
- specifier: 0.23.1
- version: 0.23.1
+ specifier: 0.24.0
+ version: 0.24.0
execa:
specifier: 8.0.1
version: 8.0.1
@@ -34,42 +34,42 @@ importers:
specifier: 4.1.0
version: 4.1.0
postcss:
- specifier: 8.4.47
- version: 8.4.47
+ specifier: 8.4.49
+ version: 8.4.49
tar:
specifier: 6.2.1
version: 6.2.1
terser:
- specifier: 5.33.0
- version: 5.33.0
+ specifier: 5.36.0
+ version: 5.36.0
typescript:
- specifier: 5.6.2
- version: 5.6.2
+ specifier: 5.6.3
+ version: 5.6.3
devDependencies:
'@misskey-dev/eslint-plugin':
specifier: 2.0.3
- version: 2.0.3(@eslint/compat@1.1.1)(@typescript-eslint/eslint-plugin@7.17.0(@typescript-eslint/parser@7.17.0(eslint@9.8.0)(typescript@5.6.2))(eslint@9.8.0)(typescript@5.6.2))(@typescript-eslint/parser@7.17.0(eslint@9.8.0)(typescript@5.6.2))(eslint-plugin-import@2.31.0(@typescript-eslint/parser@7.17.0(eslint@9.8.0)(typescript@5.6.2))(eslint@9.8.0))(eslint@9.8.0)(globals@15.9.0)
+ version: 2.0.3(@eslint/compat@1.1.1)(@typescript-eslint/eslint-plugin@7.17.0(@typescript-eslint/parser@7.17.0(eslint@9.14.0)(typescript@5.6.3))(eslint@9.14.0)(typescript@5.6.3))(@typescript-eslint/parser@7.17.0(eslint@9.14.0)(typescript@5.6.3))(eslint-plugin-import@2.31.0(@typescript-eslint/parser@7.17.0(eslint@9.14.0)(typescript@5.6.3))(eslint@9.14.0))(eslint@9.14.0)(globals@15.12.0)
'@types/node':
- specifier: 20.14.12
- version: 20.14.12
+ specifier: 22.9.0
+ version: 22.9.0
'@typescript-eslint/eslint-plugin':
specifier: 7.17.0
- version: 7.17.0(@typescript-eslint/parser@7.17.0(eslint@9.8.0)(typescript@5.6.2))(eslint@9.8.0)(typescript@5.6.2)
+ version: 7.17.0(@typescript-eslint/parser@7.17.0(eslint@9.14.0)(typescript@5.6.3))(eslint@9.14.0)(typescript@5.6.3)
'@typescript-eslint/parser':
specifier: 7.17.0
- version: 7.17.0(eslint@9.8.0)(typescript@5.6.2)
+ version: 7.17.0(eslint@9.14.0)(typescript@5.6.3)
cross-env:
specifier: 7.0.3
version: 7.0.3
cypress:
- specifier: 13.14.2
- version: 13.14.2
+ specifier: 13.15.2
+ version: 13.15.2
eslint:
- specifier: 9.8.0
- version: 9.8.0
+ specifier: 9.14.0
+ version: 9.14.0
globals:
- specifier: 15.9.0
- version: 15.9.0
+ specifier: 15.12.0
+ version: 15.12.0
ncp:
specifier: 2.0.0
version: 2.0.0
@@ -86,14 +86,14 @@ importers:
specifier: 3.620.0
version: 3.620.0(@aws-sdk/client-s3@3.620.0)
'@bull-board/api':
- specifier: 6.0.0
- version: 6.0.0(@bull-board/ui@6.0.0)
+ specifier: 6.5.0
+ version: 6.5.0(@bull-board/ui@6.5.0)
'@bull-board/fastify':
- specifier: 6.0.0
- version: 6.0.0
+ specifier: 6.5.0
+ version: 6.5.0
'@bull-board/ui':
- specifier: 6.0.0
- version: 6.0.0
+ specifier: 6.5.0
+ version: 6.5.0
'@discordapp/twemoji':
specifier: 15.1.0
version: 15.1.0
@@ -101,8 +101,8 @@ importers:
specifier: 5.0.1
version: 5.0.1
'@fastify/cookie':
- specifier: 10.0.1
- version: 10.0.1
+ specifier: 11.0.1
+ version: 11.0.1
'@fastify/cors':
specifier: 10.0.1
version: 10.0.1
@@ -110,14 +110,14 @@ importers:
specifier: 4.0.1
version: 4.0.1
'@fastify/http-proxy':
- specifier: 10.0.0
- version: 10.0.0(bufferutil@4.0.7)(utf-8-validate@6.0.3)
+ specifier: 10.0.1
+ version: 10.0.1(bufferutil@4.0.7)(utf-8-validate@6.0.3)
'@fastify/multipart':
specifier: 9.0.1
version: 9.0.1
'@fastify/static':
- specifier: 8.0.1
- version: 8.0.1
+ specifier: 8.0.2
+ version: 8.0.2
'@fastify/view':
specifier: 10.0.1
version: 10.0.1
@@ -131,23 +131,23 @@ importers:
specifier: 0.1.56
version: 0.1.56
'@nestjs/common':
- specifier: 10.4.4
- version: 10.4.4(reflect-metadata@0.2.2)(rxjs@7.8.1)
+ specifier: 10.4.7
+ version: 10.4.7(reflect-metadata@0.2.2)(rxjs@7.8.1)
'@nestjs/core':
- specifier: 10.4.4
- version: 10.4.4(@nestjs/common@10.4.4(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.4.4)(encoding@0.1.13)(reflect-metadata@0.2.2)(rxjs@7.8.1)
+ specifier: 10.4.7
+ version: 10.4.7(@nestjs/common@10.4.7(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.4.7)(encoding@0.1.13)(reflect-metadata@0.2.2)(rxjs@7.8.1)
'@nestjs/testing':
- specifier: 10.4.4
- version: 10.4.4(@nestjs/common@10.4.4(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.4(@nestjs/common@10.4.4(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.4.4)(encoding@0.1.13)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.4.4(@nestjs/common@10.4.4(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.4))
+ specifier: 10.4.7
+ version: 10.4.7(@nestjs/common@10.4.7(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.7(@nestjs/common@10.4.7(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.4.7)(encoding@0.1.13)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.4.7(@nestjs/common@10.4.7(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.7))
'@peertube/http-signature':
specifier: 1.7.0
version: 1.7.0
'@sentry/node':
- specifier: 8.20.0
- version: 8.20.0
+ specifier: 8.38.0
+ version: 8.38.0
'@sentry/profiling-node':
- specifier: 8.20.0
- version: 8.20.0
+ specifier: 8.38.0
+ version: 8.38.0
'@simplewebauthn/server':
specifier: 10.0.1
version: 10.0.1(encoding@0.1.13)
@@ -159,10 +159,10 @@ importers:
version: 2.5.0
'@swc/cli':
specifier: 0.3.12
- version: 0.3.12(@swc/core@1.6.6)(chokidar@3.5.3)
+ version: 0.3.12(@swc/core@1.9.2)(chokidar@3.5.3)
'@swc/core':
- specifier: 1.6.6
- version: 1.6.6
+ specifier: 1.9.2
+ version: 1.9.2
'@transfem-org/sfm-js':
specifier: 0.24.5
version: 0.24.5
@@ -194,8 +194,8 @@ importers:
specifier: 1.20.3
version: 1.20.3
bullmq:
- specifier: 5.15.0
- version: 5.15.0
+ specifier: 5.26.1
+ version: 5.26.1
cacheable-lookup:
specifier: 7.0.0
version: 7.0.0
@@ -242,23 +242,23 @@ importers:
specifier: 4.2.2
version: 4.2.2
file-type:
- specifier: 19.5.0
- version: 19.5.0
+ specifier: 19.6.0
+ version: 19.6.0
fluent-ffmpeg:
specifier: 2.1.3
version: 2.1.3
form-data:
- specifier: 4.0.0
- version: 4.0.0
+ specifier: 4.0.1
+ version: 4.0.1
glob:
specifier: 11.0.0
version: 11.0.0
got:
- specifier: 14.4.2
- version: 14.4.2
+ specifier: 14.4.4
+ version: 14.4.4
happy-dom:
- specifier: 15.7.4
- version: 15.7.4
+ specifier: 15.11.4
+ version: 15.11.4
hpagent:
specifier: 1.2.0
version: 1.2.0
@@ -302,8 +302,8 @@ importers:
specifier: workspace:*
version: link:../megalodon
meilisearch:
- specifier: 0.42.0
- version: 0.42.0(encoding@0.1.13)
+ specifier: 0.45.0
+ version: 0.45.0
microformats-parser:
specifier: 2.0.2
version: 2.0.2
@@ -320,8 +320,8 @@ importers:
specifier: 3.0.0-canary.1
version: 3.0.0-canary.1
nanoid:
- specifier: 5.0.7
- version: 5.0.7
+ specifier: 5.0.8
+ version: 5.0.8
nested-property:
specifier: 4.0.0
version: 4.0.0
@@ -329,8 +329,8 @@ importers:
specifier: 3.3.2
version: 3.3.2
nodemailer:
- specifier: 6.9.15
- version: 6.9.15
+ specifier: 6.9.16
+ version: 6.9.16
oauth:
specifier: 0.10.0
version: 0.10.0
@@ -347,11 +347,11 @@ importers:
specifier: 9.3.4
version: 9.3.4
parse5:
- specifier: 7.1.2
- version: 7.1.2
+ specifier: 7.2.1
+ version: 7.2.1
pg:
- specifier: 8.13.0
- version: 8.13.0
+ specifier: 8.13.1
+ version: 8.13.1
pkce-challenge:
specifier: 4.1.0
version: 4.1.0
@@ -432,10 +432,10 @@ importers:
version: 4.2.0
typeorm:
specifier: 0.3.20
- version: 0.3.20(ioredis@5.4.1)(pg@8.13.0)
+ version: 0.3.20(ioredis@5.4.1)(pg@8.13.1)
typescript:
- specifier: 5.6.2
- version: 5.6.2
+ specifier: 5.6.3
+ version: 5.6.3
ulid:
specifier: 2.3.0
version: 2.3.0
@@ -541,20 +541,20 @@ importers:
specifier: 29.7.0
version: 29.7.0
'@nestjs/platform-express':
- specifier: 10.4.4
- version: 10.4.4(@nestjs/common@10.4.4(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.4)
+ specifier: 10.4.7
+ version: 10.4.7(@nestjs/common@10.4.7(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.7)
'@simplewebauthn/types':
specifier: 10.0.0
version: 10.0.0
'@swc/jest':
- specifier: 0.2.36
- version: 0.2.36(@swc/core@1.6.6)
+ specifier: 0.2.37
+ version: 0.2.37(@swc/core@1.9.2)
'@types/accepts':
specifier: 1.3.7
version: 1.3.7
'@types/archiver':
- specifier: 6.0.2
- version: 6.0.2
+ specifier: 6.0.3
+ version: 6.0.3
'@types/bcryptjs':
specifier: 2.4.6
version: 2.4.6
@@ -568,8 +568,8 @@ importers:
specifier: 0.5.8
version: 0.5.8
'@types/fluent-ffmpeg':
- specifier: 2.1.26
- version: 2.1.26
+ specifier: 2.1.27
+ version: 2.1.27
'@types/htmlescape':
specifier: 1.1.3
version: 1.1.3
@@ -577,8 +577,8 @@ importers:
specifier: 1.0.7
version: 1.0.7
'@types/jest':
- specifier: 29.5.13
- version: 29.5.13
+ specifier: 29.5.14
+ version: 29.5.14
'@types/js-yaml':
specifier: 4.0.9
version: 4.0.9
@@ -598,14 +598,14 @@ importers:
specifier: 0.7.34
version: 0.7.34
'@types/node':
- specifier: 20.14.12
- version: 20.14.12
+ specifier: 22.9.0
+ version: 22.9.0
'@types/nodemailer':
specifier: 6.4.16
version: 6.4.16
'@types/oauth':
- specifier: 0.9.5
- version: 0.9.5
+ specifier: 0.9.6
+ version: 0.9.6
'@types/oauth2orize':
specifier: 1.11.5
version: 1.11.5
@@ -661,17 +661,17 @@ importers:
specifier: 1.1.3
version: 1.1.3
'@types/web-push':
- specifier: 3.6.3
- version: 3.6.3
+ specifier: 3.6.4
+ version: 3.6.4
'@types/ws':
- specifier: 8.5.12
- version: 8.5.12
+ specifier: 8.5.13
+ version: 8.5.13
'@typescript-eslint/eslint-plugin':
specifier: 7.17.0
- version: 7.17.0(@typescript-eslint/parser@7.17.0(eslint@9.8.0)(typescript@5.6.2))(eslint@9.8.0)(typescript@5.6.2)
+ version: 7.17.0(@typescript-eslint/parser@7.17.0(eslint@9.14.0)(typescript@5.6.3))(eslint@9.14.0)(typescript@5.6.3)
'@typescript-eslint/parser':
specifier: 7.17.0
- version: 7.17.0(eslint@9.8.0)(typescript@5.6.2)
+ version: 7.17.0(eslint@9.14.0)(typescript@5.6.3)
aws-sdk-client-mock:
specifier: 4.0.1
version: 4.0.1
@@ -680,16 +680,16 @@ importers:
version: 7.0.3
eslint-plugin-import:
specifier: 2.30.0
- version: 2.30.0(@typescript-eslint/parser@7.17.0(eslint@9.8.0)(typescript@5.6.2))(eslint@9.8.0)
+ version: 2.30.0(@typescript-eslint/parser@7.17.0(eslint@9.14.0)(typescript@5.6.3))(eslint@9.14.0)
execa:
- specifier: 9.4.0
- version: 9.4.0
+ specifier: 8.0.1
+ version: 8.0.1
fkill:
specifier: 9.0.0
version: 9.0.0
jest:
specifier: 29.7.0
- version: 29.7.0(@types/node@20.14.12)
+ version: 29.7.0(@types/node@22.9.0)
jest-mock:
specifier: 29.7.0
version: 29.7.0
@@ -722,13 +722,13 @@ importers:
version: 2.1.1
'@rollup/plugin-json':
specifier: 6.1.0
- version: 6.1.0(rollup@4.22.5)
+ version: 6.1.0(rollup@4.26.0)
'@rollup/plugin-replace':
specifier: 5.0.7
- version: 5.0.7(rollup@4.22.5)
+ version: 5.0.7(rollup@4.26.0)
'@rollup/pluginutils':
- specifier: 5.1.2
- version: 5.1.2(rollup@4.22.5)
+ specifier: 5.1.3
+ version: 5.1.3(rollup@4.26.0)
'@syuilo/aiscript':
specifier: 0.19.0
version: 0.19.0
@@ -739,11 +739,11 @@ importers:
specifier: 15.1.1
version: 15.1.1
'@vitejs/plugin-vue':
- specifier: 5.1.4
- version: 5.1.4(vite@5.4.8(@types/node@20.14.12)(sass@1.79.3)(terser@5.33.0))(vue@3.5.11(typescript@5.6.2))
+ specifier: 5.2.0
+ version: 5.2.0(vite@5.4.11(@types/node@22.9.0)(sass@1.79.3)(terser@5.36.0))(vue@3.5.12(typescript@5.6.3))
'@vue/compiler-sfc':
- specifier: 3.5.11
- version: 3.5.11
+ specifier: 3.5.12
+ version: 3.5.12
aiscript-vscode:
specifier: github:aiscript-dev/aiscript-vscode#v0.1.11
version: https://codeload.github.com/aiscript-dev/aiscript-vscode/tar.gz/e1e1b27f2f72cd28a473e004b6da0d8fc0bd40d9
@@ -760,23 +760,23 @@ importers:
specifier: 1.9.3
version: 1.9.3
chart.js:
- specifier: 4.4.4
- version: 4.4.4
+ specifier: 4.4.6
+ version: 4.4.6
chartjs-adapter-date-fns:
specifier: 3.0.0
- version: 3.0.0(chart.js@4.4.4)(date-fns@2.30.0)
+ version: 3.0.0(chart.js@4.4.6)(date-fns@2.30.0)
chartjs-chart-matrix:
specifier: 2.0.1
- version: 2.0.1(chart.js@4.4.4)
+ version: 2.0.1(chart.js@4.4.6)
chartjs-plugin-gradient:
specifier: 0.6.1
- version: 0.6.1(chart.js@4.4.4)
+ version: 0.6.1(chart.js@4.4.6)
chartjs-plugin-zoom:
specifier: 2.0.1
- version: 2.0.1(chart.js@4.4.4)
+ version: 2.0.1(chart.js@4.4.6)
chromatic:
- specifier: 11.11.0
- version: 11.11.0
+ specifier: 11.18.1
+ version: 11.18.1
compare-versions:
specifier: 6.1.1
version: 6.1.1
@@ -829,8 +829,8 @@ importers:
specifier: 2.3.1
version: 2.3.1
rollup:
- specifier: 4.22.5
- version: 4.22.5
+ specifier: 4.26.0
+ version: 4.26.0
sanitize-html:
specifier: 2.13.1
version: 2.13.1
@@ -838,8 +838,8 @@ importers:
specifier: 1.79.3
version: 1.79.3
shiki:
- specifier: 1.21.0
- version: 1.21.0
+ specifier: 1.22.2
+ version: 1.22.2
strict-event-emitter-types:
specifier: 2.0.0
version: 2.0.0
@@ -862,84 +862,84 @@ importers:
specifier: 4.2.0
version: 4.2.0
typescript:
- specifier: 5.6.2
- version: 5.6.2
+ specifier: 5.6.3
+ version: 5.6.3
uuid:
specifier: 10.0.0
version: 10.0.0
v-code-diff:
specifier: 1.13.1
- version: 1.13.1(vue@3.5.11(typescript@5.6.2))
+ version: 1.13.1(vue@3.5.12(typescript@5.6.3))
vite:
- specifier: 5.4.8
- version: 5.4.8(@types/node@20.14.12)(sass@1.79.3)(terser@5.33.0)
+ specifier: 5.4.11
+ version: 5.4.11(@types/node@22.9.0)(sass@1.79.3)(terser@5.36.0)
vue:
- specifier: 3.5.11
- version: 3.5.11(typescript@5.6.2)
+ specifier: 3.5.12
+ version: 3.5.12(typescript@5.6.3)
vuedraggable:
specifier: next
- version: 4.1.0(vue@3.5.11(typescript@5.6.2))
+ version: 4.1.0(vue@3.5.12(typescript@5.6.3))
devDependencies:
'@misskey-dev/summaly':
specifier: 5.1.0
version: 5.1.0
'@storybook/addon-actions':
- specifier: 8.3.4
- version: 8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))
+ specifier: 8.4.4
+ version: 8.4.4(storybook@8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4))
'@storybook/addon-essentials':
- specifier: 8.3.4
- version: 8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))
+ specifier: 8.4.4
+ version: 8.4.4(@types/react@18.0.28)(storybook@8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4))
'@storybook/addon-interactions':
- specifier: 8.3.4
- version: 8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))
+ specifier: 8.4.4
+ version: 8.4.4(storybook@8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4))
'@storybook/addon-links':
- specifier: 8.3.4
- version: 8.3.4(react@18.3.1)(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))
+ specifier: 8.4.4
+ version: 8.4.4(react@18.3.1)(storybook@8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4))
'@storybook/addon-mdx-gfm':
- specifier: 8.3.4
- version: 8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))
+ specifier: 8.4.4
+ version: 8.4.4(storybook@8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4))
'@storybook/addon-storysource':
- specifier: 8.3.4
- version: 8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))
+ specifier: 8.4.4
+ version: 8.4.4(storybook@8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4))
'@storybook/blocks':
- specifier: 8.3.4
- version: 8.3.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))
+ specifier: 8.4.4
+ version: 8.4.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4))
'@storybook/components':
- specifier: 8.3.4
- version: 8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))
+ specifier: 8.4.4
+ version: 8.4.4(storybook@8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4))
'@storybook/core-events':
- specifier: 8.3.4
- version: 8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))
+ specifier: 8.4.4
+ version: 8.4.4(storybook@8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4))
'@storybook/manager-api':
- specifier: 8.3.4
- version: 8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))
+ specifier: 8.4.4
+ version: 8.4.4(storybook@8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4))
'@storybook/preview-api':
- specifier: 8.3.4
- version: 8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))
+ specifier: 8.4.4
+ version: 8.4.4(storybook@8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4))
'@storybook/react':
- specifier: 8.3.4
- version: 8.3.4(@storybook/test@8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))(typescript@5.6.2)
+ specifier: 8.4.4
+ version: 8.4.4(@storybook/test@8.4.4(storybook@8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4))(typescript@5.6.3)
'@storybook/react-vite':
- specifier: 8.3.4
- version: 8.3.4(@storybook/test@8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.22.5)(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))(typescript@5.6.2)(vite@5.4.8(@types/node@20.14.12)(sass@1.79.3)(terser@5.33.0))
+ specifier: 8.4.4
+ version: 8.4.4(@storybook/test@8.4.4(storybook@8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.26.0)(storybook@8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4))(typescript@5.6.3)(vite@5.4.11(@types/node@22.9.0)(sass@1.79.3)(terser@5.36.0))
'@storybook/test':
- specifier: 8.3.4
- version: 8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))
+ specifier: 8.4.4
+ version: 8.4.4(storybook@8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4))
'@storybook/theming':
- specifier: 8.3.4
- version: 8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))
+ specifier: 8.4.4
+ version: 8.4.4(storybook@8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4))
'@storybook/types':
- specifier: 8.3.4
- version: 8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))
+ specifier: 8.4.4
+ version: 8.4.4(storybook@8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4))
'@storybook/vue3':
- specifier: 8.3.4
- version: 8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))(vue@3.5.11(typescript@5.6.2))
+ specifier: 8.4.4
+ version: 8.4.4(storybook@8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4))(vue@3.5.12(typescript@5.6.3))
'@storybook/vue3-vite':
- specifier: 8.3.4
- version: 8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))(vite@5.4.8(@types/node@20.14.12)(sass@1.79.3)(terser@5.33.0))(vue@3.5.11(typescript@5.6.2))
+ specifier: 8.4.4
+ version: 8.4.4(storybook@8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4))(vite@5.4.11(@types/node@22.9.0)(sass@1.79.3)(terser@5.36.0))(vue@3.5.12(typescript@5.6.3))
'@testing-library/vue':
specifier: 8.1.0
- version: 8.1.0(@vue/compiler-sfc@3.5.11)(@vue/server-renderer@3.5.11(vue@3.5.11(typescript@5.6.2)))(vue@3.5.11(typescript@5.6.2))
+ version: 8.1.0(@vue/compiler-sfc@3.5.12)(@vue/server-renderer@3.5.12(vue@3.5.12(typescript@5.6.3)))(vue@3.5.12(typescript@5.6.3))
'@types/canvas-confetti':
specifier: ^1.6.4
version: 1.6.4
@@ -956,8 +956,8 @@ importers:
specifier: 4.0.9
version: 4.0.9
'@types/node':
- specifier: 20.14.12
- version: 20.14.12
+ specifier: 22.9.0
+ version: 22.9.0
'@types/punycode':
specifier: 2.1.4
version: 2.1.4
@@ -977,35 +977,35 @@ importers:
specifier: 10.0.0
version: 10.0.0
'@types/ws':
- specifier: 8.5.12
- version: 8.5.12
+ specifier: 8.5.13
+ version: 8.5.13
'@typescript-eslint/eslint-plugin':
specifier: 7.17.0
- version: 7.17.0(@typescript-eslint/parser@7.17.0(eslint@9.8.0)(typescript@5.6.2))(eslint@9.8.0)(typescript@5.6.2)
+ version: 7.17.0(@typescript-eslint/parser@7.17.0(eslint@9.14.0)(typescript@5.6.3))(eslint@9.14.0)(typescript@5.6.3)
'@typescript-eslint/parser':
specifier: 7.17.0
- version: 7.17.0(eslint@9.8.0)(typescript@5.6.2)
+ version: 7.17.0(eslint@9.14.0)(typescript@5.6.3)
'@vitest/coverage-v8':
specifier: 1.6.0
- version: 1.6.0(vitest@1.6.0(@types/node@20.14.12)(happy-dom@10.0.3)(jsdom@24.1.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(sass@1.79.3)(terser@5.33.0))
+ version: 1.6.0(vitest@1.6.0(@types/node@22.9.0)(happy-dom@10.0.3)(jsdom@24.1.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(sass@1.79.3)(terser@5.36.0))
'@vue/runtime-core':
- specifier: 3.5.11
- version: 3.5.11
+ specifier: 3.5.12
+ version: 3.5.12
acorn:
- specifier: 8.12.1
- version: 8.12.1
+ specifier: 8.14.0
+ version: 8.14.0
cross-env:
specifier: 7.0.3
version: 7.0.3
cypress:
- specifier: 13.15.0
- version: 13.15.0
+ specifier: 13.15.2
+ version: 13.15.2
eslint-plugin-import:
specifier: 2.31.0
- version: 2.31.0(@typescript-eslint/parser@7.17.0(eslint@9.8.0)(typescript@5.6.2))(eslint@9.8.0)
+ version: 2.31.0(@typescript-eslint/parser@7.17.0(eslint@9.14.0)(typescript@5.6.3))(eslint@9.14.0)
eslint-plugin-vue:
- specifier: 9.28.0
- version: 9.28.0(eslint@9.8.0)
+ specifier: 9.31.0
+ version: 9.31.0(eslint@9.14.0)
fast-glob:
specifier: 3.3.2
version: 3.3.2
@@ -1019,11 +1019,11 @@ importers:
specifier: 4.0.8
version: 4.0.8
msw:
- specifier: 2.4.9
- version: 2.4.9(typescript@5.6.2)
+ specifier: 2.6.4
+ version: 2.6.4(@types/node@22.9.0)(typescript@5.6.3)
msw-storybook-addon:
- specifier: 2.0.3
- version: 2.0.3(msw@2.4.9(typescript@5.6.2))
+ specifier: 2.0.4
+ version: 2.0.4(msw@2.6.4(@types/node@22.9.0)(typescript@5.6.3))
nodemon:
specifier: 3.1.7
version: 3.1.7
@@ -1043,29 +1043,29 @@ importers:
specifier: 2.0.8
version: 2.0.8
storybook:
- specifier: 8.3.4
- version: 8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4)
+ specifier: 8.4.4
+ version: 8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4)
storybook-addon-misskey-theme:
specifier: github:misskey-dev/storybook-addon-misskey-theme
- version: https://codeload.github.com/misskey-dev/storybook-addon-misskey-theme/tar.gz/cf583db098365b2ccc81a82f63ca9c93bc32b640(@storybook/blocks@8.3.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(@storybook/components@8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(@storybook/core-events@8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(@storybook/manager-api@8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(@storybook/preview-api@8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(@storybook/theming@8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(@storybook/types@8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ version: https://codeload.github.com/misskey-dev/storybook-addon-misskey-theme/tar.gz/cf583db098365b2ccc81a82f63ca9c93bc32b640(@storybook/blocks@8.4.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4)))(@storybook/components@8.4.4(storybook@8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4)))(@storybook/core-events@8.4.4(storybook@8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4)))(@storybook/manager-api@8.4.4(storybook@8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4)))(@storybook/preview-api@8.4.4(storybook@8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4)))(@storybook/theming@8.4.4(storybook@8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4)))(@storybook/types@8.4.4(storybook@8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
vite-plugin-turbosnap:
specifier: 1.0.3
version: 1.0.3
vitest:
specifier: 1.6.0
- version: 1.6.0(@types/node@20.14.12)(happy-dom@10.0.3)(jsdom@24.1.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(sass@1.79.3)(terser@5.33.0)
+ version: 1.6.0(@types/node@22.9.0)(happy-dom@10.0.3)(jsdom@24.1.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(sass@1.79.3)(terser@5.36.0)
vitest-fetch-mock:
specifier: 0.2.2
- version: 0.2.2(encoding@0.1.13)(vitest@1.6.0(@types/node@20.14.12)(happy-dom@10.0.3)(jsdom@24.1.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(sass@1.79.3)(terser@5.33.0))
+ version: 0.2.2(encoding@0.1.13)(vitest@1.6.0(@types/node@22.9.0)(happy-dom@10.0.3)(jsdom@24.1.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(sass@1.79.3)(terser@5.36.0))
vue-component-type-helpers:
- specifier: 2.1.6
- version: 2.1.6
+ specifier: 2.1.10
+ version: 2.1.10
vue-eslint-parser:
specifier: 9.4.3
- version: 9.4.3(eslint@9.8.0)
+ version: 9.4.3(eslint@9.14.0)
vue-tsc:
- specifier: 2.1.6
- version: 2.1.6(typescript@5.6.2)
+ specifier: 2.1.10
+ version: 2.1.10(typescript@5.6.3)
packages/frontend-embed:
dependencies:
@@ -1077,13 +1077,13 @@ importers:
version: 2.1.1
'@rollup/plugin-json':
specifier: 6.1.0
- version: 6.1.0(rollup@4.22.5)
+ version: 6.1.0(rollup@4.26.0)
'@rollup/plugin-replace':
specifier: 5.0.7
- version: 5.0.7(rollup@4.22.5)
+ version: 5.0.7(rollup@4.26.0)
'@rollup/pluginutils':
- specifier: 5.1.2
- version: 5.1.2(rollup@4.22.5)
+ specifier: 5.1.3
+ version: 5.1.3(rollup@4.26.0)
'@transfem-org/sfm-js':
specifier: 0.24.5
version: 0.24.5
@@ -1091,11 +1091,11 @@ importers:
specifier: 15.1.1
version: 15.1.1
'@vitejs/plugin-vue':
- specifier: 5.1.4
- version: 5.1.4(vite@5.4.8(@types/node@20.14.12)(sass@1.79.4)(terser@5.33.0))(vue@3.5.11(typescript@5.6.2))
+ specifier: 5.2.0
+ version: 5.2.0(vite@5.4.11(@types/node@22.9.0)(sass@1.79.4)(terser@5.36.0))(vue@3.5.12(typescript@5.6.3))
'@vue/compiler-sfc':
- specifier: 3.5.11
- version: 3.5.11
+ specifier: 3.5.12
+ version: 3.5.12
astring:
specifier: 1.9.0
version: 1.9.0
@@ -1118,14 +1118,14 @@ importers:
specifier: 2.3.1
version: 2.3.1
rollup:
- specifier: 4.22.5
- version: 4.22.5
+ specifier: 4.26.0
+ version: 4.26.0
sass:
specifier: 1.79.4
version: 1.79.4
shiki:
- specifier: 1.21.0
- version: 1.21.0
+ specifier: 1.22.2
+ version: 1.22.2
tinycolor2:
specifier: 1.6.0
version: 1.6.0
@@ -1136,24 +1136,24 @@ importers:
specifier: 4.2.0
version: 4.2.0
typescript:
- specifier: 5.6.2
- version: 5.6.2
+ specifier: 5.6.3
+ version: 5.6.3
uuid:
specifier: 10.0.0
version: 10.0.0
vite:
- specifier: 5.4.8
- version: 5.4.8(@types/node@20.14.12)(sass@1.79.4)(terser@5.33.0)
+ specifier: 5.4.11
+ version: 5.4.11(@types/node@22.9.0)(sass@1.79.4)(terser@5.36.0)
vue:
- specifier: 3.5.11
- version: 3.5.11(typescript@5.6.2)
+ specifier: 3.5.12
+ version: 3.5.12(typescript@5.6.3)
devDependencies:
'@misskey-dev/summaly':
specifier: 5.1.0
version: 5.1.0
'@testing-library/vue':
specifier: 8.1.0
- version: 8.1.0(@vue/compiler-sfc@3.5.11)(@vue/server-renderer@3.5.11(vue@3.5.11(typescript@5.6.2)))(vue@3.5.11(typescript@5.6.2))
+ version: 8.1.0(@vue/compiler-sfc@3.5.12)(@vue/server-renderer@3.5.12(vue@3.5.12(typescript@5.6.3)))(vue@3.5.12(typescript@5.6.3))
'@types/estree':
specifier: 1.0.6
version: 1.0.6
@@ -1161,8 +1161,8 @@ importers:
specifier: 4.0.9
version: 4.0.9
'@types/node':
- specifier: 20.14.12
- version: 20.14.12
+ specifier: 22.9.0
+ version: 22.9.0
'@types/punycode':
specifier: 2.1.4
version: 2.1.4
@@ -1173,32 +1173,32 @@ importers:
specifier: 10.0.0
version: 10.0.0
'@types/ws':
- specifier: 8.5.12
- version: 8.5.12
+ specifier: 8.5.13
+ version: 8.5.13
'@typescript-eslint/eslint-plugin':
specifier: 7.17.0
- version: 7.17.0(@typescript-eslint/parser@7.17.0(eslint@9.8.0)(typescript@5.6.2))(eslint@9.8.0)(typescript@5.6.2)
+ version: 7.17.0(@typescript-eslint/parser@7.17.0(eslint@9.14.0)(typescript@5.6.3))(eslint@9.14.0)(typescript@5.6.3)
'@typescript-eslint/parser':
specifier: 7.17.0
- version: 7.17.0(eslint@9.8.0)(typescript@5.6.2)
+ version: 7.17.0(eslint@9.14.0)(typescript@5.6.3)
'@vitest/coverage-v8':
specifier: 1.6.0
- version: 1.6.0(vitest@1.6.0(@types/node@20.14.12)(happy-dom@10.0.3)(jsdom@24.1.1)(sass@1.79.4)(terser@5.33.0))
+ version: 1.6.0(vitest@1.6.0(@types/node@22.9.0)(happy-dom@10.0.3)(jsdom@24.1.1)(sass@1.79.4)(terser@5.36.0))
'@vue/runtime-core':
- specifier: 3.5.11
- version: 3.5.11
+ specifier: 3.5.12
+ version: 3.5.12
acorn:
- specifier: 8.12.1
- version: 8.12.1
+ specifier: 8.14.0
+ version: 8.14.0
cross-env:
specifier: 7.0.3
version: 7.0.3
eslint-plugin-import:
specifier: 2.31.0
- version: 2.31.0(@typescript-eslint/parser@7.17.0(eslint@9.8.0)(typescript@5.6.2))(eslint@9.8.0)
+ version: 2.31.0(@typescript-eslint/parser@7.17.0(eslint@9.14.0)(typescript@5.6.3))(eslint@9.14.0)
eslint-plugin-vue:
- specifier: 9.28.0
- version: 9.28.0(eslint@9.8.0)
+ specifier: 9.31.0
+ version: 9.31.0(eslint@9.14.0)
fast-glob:
specifier: 3.3.2
version: 3.3.2
@@ -1212,8 +1212,8 @@ importers:
specifier: 4.0.8
version: 4.0.8
msw:
- specifier: 2.3.4
- version: 2.3.4(typescript@5.6.2)
+ specifier: 2.6.4
+ version: 2.6.4(@types/node@22.9.0)(typescript@5.6.3)
nodemon:
specifier: 3.1.7
version: 3.1.7
@@ -1227,14 +1227,14 @@ importers:
specifier: 1.0.3
version: 1.0.3
vue-component-type-helpers:
- specifier: 2.1.6
- version: 2.1.6
+ specifier: 2.1.10
+ version: 2.1.10
vue-eslint-parser:
specifier: 9.4.3
- version: 9.4.3(eslint@9.8.0)
+ version: 9.4.3(eslint@9.14.0)
vue-tsc:
- specifier: 2.1.6
- version: 2.1.6(typescript@5.6.2)
+ specifier: 2.1.10
+ version: 2.1.10(typescript@5.6.3)
packages/frontend-shared:
dependencies:
@@ -1242,30 +1242,30 @@ importers:
specifier: workspace:*
version: link:../misskey-js
vue:
- specifier: 3.4.37
- version: 3.4.37(typescript@5.5.4)
+ specifier: 3.5.12
+ version: 3.5.12(typescript@5.6.3)
devDependencies:
'@types/node':
- specifier: 20.14.12
- version: 20.14.12
+ specifier: 22.9.0
+ version: 22.9.0
'@typescript-eslint/eslint-plugin':
specifier: 7.17.0
- version: 7.17.0(@typescript-eslint/parser@7.17.0(eslint@9.8.0)(typescript@5.5.4))(eslint@9.8.0)(typescript@5.5.4)
+ version: 7.17.0(@typescript-eslint/parser@7.17.0(eslint@9.14.0)(typescript@5.6.3))(eslint@9.14.0)(typescript@5.6.3)
'@typescript-eslint/parser':
specifier: 7.17.0
- version: 7.17.0(eslint@9.8.0)(typescript@5.5.4)
+ version: 7.17.0(eslint@9.14.0)(typescript@5.6.3)
esbuild:
- specifier: 0.23.0
- version: 0.23.0
+ specifier: 0.24.0
+ version: 0.24.0
eslint-plugin-vue:
- specifier: 9.27.0
- version: 9.27.0(eslint@9.8.0)
+ specifier: 9.31.0
+ version: 9.31.0(eslint@9.14.0)
typescript:
- specifier: 5.5.4
- version: 5.5.4
+ specifier: 5.6.3
+ version: 5.6.3
vue-eslint-parser:
specifier: 9.4.3
- version: 9.4.3(eslint@9.8.0)
+ version: 9.4.3(eslint@9.14.0)
packages/megalodon:
dependencies:
@@ -1341,7 +1341,7 @@ importers:
version: 9.1.0(eslint@8.57.0)
jest:
specifier: ^29.7.0
- version: 29.7.0(@types/node@20.14.12)
+ version: 29.7.0(@types/node@22.9.0)
jest-worker:
specifier: ^29.7.0
version: 29.7.0
@@ -1353,7 +1353,7 @@ importers:
version: 3.3.3
ts-jest:
specifier: ^29.1.1
- version: 29.1.2(@babel/core@7.24.7)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.7))(esbuild@0.23.1)(jest@29.7.0(@types/node@20.14.12))(typescript@5.1.6)
+ version: 29.1.2(@babel/core@7.24.7)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.7))(esbuild@0.24.0)(jest@29.7.0(@types/node@22.9.0))(typescript@5.1.6)
typedoc:
specifier: ^0.25.3
version: 0.25.13(typescript@5.1.6)
@@ -1371,41 +1371,41 @@ importers:
version: 3.0.5
devDependencies:
'@types/matter-js':
- specifier: 0.19.6
- version: 0.19.6
+ specifier: 0.19.7
+ version: 0.19.7
'@types/node':
- specifier: 20.11.5
- version: 20.11.5
+ specifier: 22.9.0
+ version: 22.9.0
'@types/seedrandom':
specifier: 3.0.8
version: 3.0.8
'@typescript-eslint/eslint-plugin':
specifier: 7.1.0
- version: 7.1.0(@typescript-eslint/parser@7.1.0(eslint@9.8.0)(typescript@5.3.3))(eslint@9.8.0)(typescript@5.3.3)
+ version: 7.1.0(@typescript-eslint/parser@7.1.0(eslint@9.14.0)(typescript@5.6.3))(eslint@9.14.0)(typescript@5.6.3)
'@typescript-eslint/parser':
specifier: 7.1.0
- version: 7.1.0(eslint@9.8.0)(typescript@5.3.3)
+ version: 7.1.0(eslint@9.14.0)(typescript@5.6.3)
esbuild:
- specifier: 0.19.11
- version: 0.19.11
+ specifier: 0.24.0
+ version: 0.24.0
execa:
specifier: 8.0.1
version: 8.0.1
glob:
- specifier: 10.3.10
- version: 10.3.10
+ specifier: 11.0.0
+ version: 11.0.0
nodemon:
- specifier: 3.0.2
- version: 3.0.2
+ specifier: 3.1.7
+ version: 3.1.7
typescript:
- specifier: 5.3.3
- version: 5.3.3
+ specifier: 5.6.3
+ version: 5.6.3
packages/misskey-js:
dependencies:
'@simplewebauthn/types':
- specifier: 10.0.0
- version: 10.0.0
+ specifier: 11.0.0
+ version: 11.0.0
eventemitter3:
specifier: 5.0.1
version: 5.0.1
@@ -1414,35 +1414,35 @@ importers:
version: 4.4.0
devDependencies:
'@microsoft/api-extractor':
- specifier: 7.47.9
- version: 7.47.9(@types/node@20.14.12)
+ specifier: 7.47.11
+ version: 7.47.11(@types/node@22.9.0)
'@swc/jest':
- specifier: 0.2.36
- version: 0.2.36(@swc/core@1.6.13)
+ specifier: 0.2.37
+ version: 0.2.37(@swc/core@1.9.2)
'@types/jest':
- specifier: 29.5.13
- version: 29.5.13
+ specifier: 29.5.14
+ version: 29.5.14
'@types/node':
- specifier: 20.14.12
- version: 20.14.12
+ specifier: 22.9.0
+ version: 22.9.0
'@typescript-eslint/eslint-plugin':
specifier: 7.17.0
- version: 7.17.0(@typescript-eslint/parser@7.17.0(eslint@9.8.0)(typescript@5.6.2))(eslint@9.8.0)(typescript@5.6.2)
+ version: 7.17.0(@typescript-eslint/parser@7.17.0(eslint@9.14.0)(typescript@5.6.3))(eslint@9.14.0)(typescript@5.6.3)
'@typescript-eslint/parser':
specifier: 7.17.0
- version: 7.17.0(eslint@9.8.0)(typescript@5.6.2)
+ version: 7.17.0(eslint@9.14.0)(typescript@5.6.3)
esbuild:
- specifier: 0.23.1
- version: 0.23.1
+ specifier: 0.24.0
+ version: 0.24.0
execa:
- specifier: 9.4.0
- version: 9.4.0
+ specifier: 8.0.1
+ version: 8.0.1
glob:
specifier: 11.0.0
version: 11.0.0
jest:
specifier: 29.7.0
- version: 29.7.0(@types/node@20.14.12)
+ version: 29.7.0(@types/node@22.9.0)
jest-fetch-mock:
specifier: 3.0.3
version: 3.0.3(encoding@0.1.13)
@@ -1462,8 +1462,8 @@ importers:
specifier: 0.31.2
version: 0.31.2
typescript:
- specifier: 5.6.2
- version: 5.6.2
+ specifier: 5.6.3
+ version: 5.6.3
packages/misskey-js/generator:
devDependencies:
@@ -1471,14 +1471,14 @@ importers:
specifier: 2.6.0
version: 2.6.0(openapi-types@12.1.3)
'@types/node':
- specifier: 20.9.1
- version: 20.9.1
+ specifier: 22.9.0
+ version: 22.9.0
'@typescript-eslint/eslint-plugin':
specifier: 7.17.0
- version: 7.17.0(@typescript-eslint/parser@7.17.0(eslint@9.8.0)(typescript@5.6.2))(eslint@9.8.0)(typescript@5.6.2)
+ version: 7.17.0(@typescript-eslint/parser@7.17.0(eslint@9.14.0)(typescript@5.6.3))(eslint@9.14.0)(typescript@5.6.3)
'@typescript-eslint/parser':
specifier: 7.17.0
- version: 7.17.0(eslint@9.8.0)(typescript@5.6.2)
+ version: 7.17.0(eslint@9.14.0)(typescript@5.6.3)
openapi-types:
specifier: 12.1.3
version: 12.1.3
@@ -1486,14 +1486,14 @@ importers:
specifier: 6.7.3
version: 6.7.3
ts-case-convert:
- specifier: 2.0.7
- version: 2.0.7
+ specifier: 2.1.0
+ version: 2.1.0
tsx:
specifier: 4.4.0
version: 4.4.0
typescript:
- specifier: 5.6.2
- version: 5.6.2
+ specifier: 5.6.3
+ version: 5.6.3
packages/misskey-reversi:
dependencies:
@@ -1502,35 +1502,35 @@ importers:
version: 1.2.2
devDependencies:
'@types/node':
- specifier: 20.11.5
- version: 20.11.5
+ specifier: 22.9.0
+ version: 22.9.0
'@typescript-eslint/eslint-plugin':
specifier: 7.1.0
- version: 7.1.0(@typescript-eslint/parser@7.1.0(eslint@9.8.0)(typescript@5.3.3))(eslint@9.8.0)(typescript@5.3.3)
+ version: 7.1.0(@typescript-eslint/parser@7.1.0(eslint@9.14.0)(typescript@5.6.3))(eslint@9.14.0)(typescript@5.6.3)
'@typescript-eslint/parser':
specifier: 7.1.0
- version: 7.1.0(eslint@9.8.0)(typescript@5.3.3)
+ version: 7.1.0(eslint@9.14.0)(typescript@5.6.3)
esbuild:
- specifier: 0.19.11
- version: 0.19.11
+ specifier: 0.24.0
+ version: 0.24.0
execa:
specifier: 8.0.1
version: 8.0.1
glob:
- specifier: 10.3.10
- version: 10.3.10
+ specifier: 11.0.0
+ version: 11.0.0
nodemon:
- specifier: 3.0.2
- version: 3.0.2
+ specifier: 3.1.7
+ version: 3.1.7
typescript:
- specifier: 5.3.3
- version: 5.3.3
+ specifier: 5.6.3
+ version: 5.6.3
packages/sw:
dependencies:
esbuild:
- specifier: 0.23.1
- version: 0.23.1
+ specifier: 0.24.0
+ version: 0.24.0
idb-keyval:
specifier: 6.2.1
version: 6.2.1
@@ -1540,19 +1540,19 @@ importers:
devDependencies:
'@typescript-eslint/parser':
specifier: 7.17.0
- version: 7.17.0(eslint@9.8.0)(typescript@5.6.2)
+ version: 7.17.0(eslint@9.14.0)(typescript@5.6.3)
'@typescript/lib-webworker':
specifier: npm:@types/serviceworker@0.0.67
version: '@types/serviceworker@0.0.67'
eslint-plugin-import:
specifier: 2.30.0
- version: 2.30.0(@typescript-eslint/parser@7.17.0(eslint@9.8.0)(typescript@5.6.2))(eslint@9.8.0)
+ version: 2.30.0(@typescript-eslint/parser@7.17.0(eslint@9.14.0)(typescript@5.6.3))(eslint@9.14.0)
nodemon:
specifier: 3.1.7
version: 3.1.7
typescript:
- specifier: 5.6.2
- version: 5.6.2
+ specifier: 5.6.3
+ version: 5.6.3
packages:
@@ -1979,25 +1979,22 @@ packages:
resolution: {integrity: sha512-vwIVdXG+j+FOpkwqHRcBgHLYNL7XMkufrlaFvL9o6Ai9sJn9+PdyIL5qa0XzTZw084c+u9LOls53eoZWP/W5WQ==}
engines: {node: '>=6.9.0'}
- '@base2/pretty-print-object@1.0.1':
- resolution: {integrity: sha512-4iri8i1AqYHJE2DstZYkyEprg6Pq6sKx3xn5FpySk9sNhH7qN2LLlHJCfDTZRILNwQNPD7mATWM0TBui7uC1pA==}
-
'@bcoe/v8-coverage@0.2.3':
resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==}
- '@bull-board/api@6.0.0':
- resolution: {integrity: sha512-O0IsIwAOU47bPTJnqRO7RtKFQToMvwRebbuPi6M+SG1gXyiqixLg9pycnfXgSeroaT9E7QQ2PsCPW1HO8VORvw==}
+ '@bull-board/api@6.5.0':
+ resolution: {integrity: sha512-sFHxmqtbBBkQaJxHdRq2sAR0+l9TBInItXaIdBMjeBXrFW881g4aLAbO7Lno6cDPKBMauYg4TdBtRPTkjhr43w==}
peerDependencies:
- '@bull-board/ui': 6.0.0
+ '@bull-board/ui': 6.5.0
- '@bull-board/fastify@6.0.0':
- resolution: {integrity: sha512-VrKa5BdxYmXh5fJvlSPSm71b+QA9VVXHyGk6xmI/qAefUQbwd2cWJo+ppqaWSaweXa9ymJc+V4l/un0K4oomVA==}
+ '@bull-board/fastify@6.5.0':
+ resolution: {integrity: sha512-oPLqIJPkis13WMPeuephkGeP/++AB5Qw3aw0qESU1K+e1pdwzf1kYIFpOZuTe9L/MrEulKe2ZgENw6RIgC1RBw==}
- '@bull-board/ui@6.0.0':
- resolution: {integrity: sha512-wAFTlBTJbq5DSWxCzTV+FOyZDVwrXP+G1CQ2BpLG9o9+dpwYxUESx/VxNEDHnyPcy13gm29kB4fSRY+nkelkcQ==}
+ '@bull-board/ui@6.5.0':
+ resolution: {integrity: sha512-gIoOgKNVAnPdKBBUaBUSNS2cBJz8UYGfEuYzD/H9HIpkCHiPTUVoMO48w/D+urJoko2nW8OSkU1kf2OkZsqP0Q==}
- '@bundled-es-modules/cookie@2.0.0':
- resolution: {integrity: sha512-Or6YHg/kamKHpxULAdSqhGqnWFneIXu1NKvvfBBzKGwpVsYuFIQ5aBPHDnnoR3ghW1nvSkALd+EF9iMtY7Vjxw==}
+ '@bundled-es-modules/cookie@2.0.1':
+ resolution: {integrity: sha512-8o+5fRPLNbjbdGRRmJj3h6Hh1AQJf2dk3qQ/5ZFb+PXkRNiSoMGGUKlsgLfrxneb72axVJyIYji64E2+nNfYyw==}
'@bundled-es-modules/statuses@1.0.1':
resolution: {integrity: sha512-yn7BklA5acgcBr+7w064fGV+SGIFySjCKpqjcWgBAIfrAkY+4GQTJJHQMeT3V/sgz23VTEVV8TtOmkvJAhFVfg==}
@@ -2045,8 +2042,8 @@ packages:
'@cropper/utils@2.0.0-rc.2':
resolution: {integrity: sha512-EEivNsyV6BtL496m4Q/IeAC6FGlyKjKIT1qMtwaxtkR+2ZlKnf9O7AdcGpClemIBA+TbwWAzp0UyIvYFtKUZ1Q==}
- '@cypress/request@3.0.5':
- resolution: {integrity: sha512-v+XHd9XmWbufxF1/bTaVm2yhbxY+TB4YtWRqF2zaXBlDNMkls34KiATz0AVDLavL3iB6bQk9/7n3oY1EoLSWGA==}
+ '@cypress/request@3.0.6':
+ resolution: {integrity: sha512-fi0eVdCOtKu5Ed6+E8mYxUF6ZTFJDZvHogCBelM0xVXmrDEkyM22gRArQzq1YcHPm1V47Vf/iAD+WgVdUlJCGg==}
engines: {node: '>= 6'}
'@cypress/xvfb@1.2.4':
@@ -2062,26 +2059,14 @@ packages:
'@emnapi/runtime@1.3.0':
resolution: {integrity: sha512-XMBySMuNZs3DM96xcJmLW4EfGnf+uGmFNjzpehMjuX5PLB5j87ar2Zc4e3PVeZ3I5g3tYtAqskB28manlF69Zw==}
- '@esbuild/aix-ppc64@0.19.11':
- resolution: {integrity: sha512-FnzU0LyE3ySQk7UntJO4+qIiQgI7KoODnZg5xzXIrFJlKd2P2gwHsHY4927xj9y5PJmJSzULiUCWmv7iWnNa7g==}
- engines: {node: '>=12'}
- cpu: [ppc64]
- os: [aix]
-
'@esbuild/aix-ppc64@0.21.5':
resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==}
engines: {node: '>=12'}
cpu: [ppc64]
os: [aix]
- '@esbuild/aix-ppc64@0.23.0':
- resolution: {integrity: sha512-3sG8Zwa5fMcA9bgqB8AfWPQ+HFke6uD3h1s3RIwUNK8EG7a4buxvuFTs3j1IMs2NXAk9F30C/FF4vxRgQCcmoQ==}
- engines: {node: '>=18'}
- cpu: [ppc64]
- os: [aix]
-
- '@esbuild/aix-ppc64@0.23.1':
- resolution: {integrity: sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==}
+ '@esbuild/aix-ppc64@0.24.0':
+ resolution: {integrity: sha512-WtKdFM7ls47zkKHFVzMz8opM7LkcsIp9amDUBIAWirg70RM71WRSjdILPsY5Uv1D42ZpUfaPILDlfactHgsRkw==}
engines: {node: '>=18'}
cpu: [ppc64]
os: [aix]
@@ -2092,26 +2077,14 @@ packages:
cpu: [arm64]
os: [android]
- '@esbuild/android-arm64@0.19.11':
- resolution: {integrity: sha512-aiu7K/5JnLj//KOnOfEZ0D90obUkRzDMyqd/wNAUQ34m4YUPVhRZpnqKV9uqDGxT7cToSDnIHsGooyIczu9T+Q==}
- engines: {node: '>=12'}
- cpu: [arm64]
- os: [android]
-
'@esbuild/android-arm64@0.21.5':
resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==}
engines: {node: '>=12'}
cpu: [arm64]
os: [android]
- '@esbuild/android-arm64@0.23.0':
- resolution: {integrity: sha512-EuHFUYkAVfU4qBdyivULuu03FhJO4IJN9PGuABGrFy4vUuzk91P2d+npxHcFdpUnfYKy0PuV+n6bKIpHOB3prQ==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [android]
-
- '@esbuild/android-arm64@0.23.1':
- resolution: {integrity: sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==}
+ '@esbuild/android-arm64@0.24.0':
+ resolution: {integrity: sha512-Vsm497xFM7tTIPYK9bNTYJyF/lsP590Qc1WxJdlB6ljCbdZKU9SY8i7+Iin4kyhV/KV5J2rOKsBQbB77Ab7L/w==}
engines: {node: '>=18'}
cpu: [arm64]
os: [android]
@@ -2122,26 +2095,14 @@ packages:
cpu: [arm]
os: [android]
- '@esbuild/android-arm@0.19.11':
- resolution: {integrity: sha512-5OVapq0ClabvKvQ58Bws8+wkLCV+Rxg7tUVbo9xu034Nm536QTII4YzhaFriQ7rMrorfnFKUsArD2lqKbFY4vw==}
- engines: {node: '>=12'}
- cpu: [arm]
- os: [android]
-
'@esbuild/android-arm@0.21.5':
resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==}
engines: {node: '>=12'}
cpu: [arm]
os: [android]
- '@esbuild/android-arm@0.23.0':
- resolution: {integrity: sha512-+KuOHTKKyIKgEEqKbGTK8W7mPp+hKinbMBeEnNzjJGyFcWsfrXjSTNluJHCY1RqhxFurdD8uNXQDei7qDlR6+g==}
- engines: {node: '>=18'}
- cpu: [arm]
- os: [android]
-
- '@esbuild/android-arm@0.23.1':
- resolution: {integrity: sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==}
+ '@esbuild/android-arm@0.24.0':
+ resolution: {integrity: sha512-arAtTPo76fJ/ICkXWetLCc9EwEHKaeya4vMrReVlEIUCAUncH7M4bhMQ+M9Vf+FFOZJdTNMXNBrWwW+OXWpSew==}
engines: {node: '>=18'}
cpu: [arm]
os: [android]
@@ -2152,26 +2113,14 @@ packages:
cpu: [x64]
os: [android]
- '@esbuild/android-x64@0.19.11':
- resolution: {integrity: sha512-eccxjlfGw43WYoY9QgB82SgGgDbibcqyDTlk3l3C0jOVHKxrjdc9CTwDUQd0vkvYg5um0OH+GpxYvp39r+IPOg==}
- engines: {node: '>=12'}
- cpu: [x64]
- os: [android]
-
'@esbuild/android-x64@0.21.5':
resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==}
engines: {node: '>=12'}
cpu: [x64]
os: [android]
- '@esbuild/android-x64@0.23.0':
- resolution: {integrity: sha512-WRrmKidLoKDl56LsbBMhzTTBxrsVwTKdNbKDalbEZr0tcsBgCLbEtoNthOW6PX942YiYq8HzEnb4yWQMLQuipQ==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [android]
-
- '@esbuild/android-x64@0.23.1':
- resolution: {integrity: sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==}
+ '@esbuild/android-x64@0.24.0':
+ resolution: {integrity: sha512-t8GrvnFkiIY7pa7mMgJd7p8p8qqYIz1NYiAoKc75Zyv73L3DZW++oYMSHPRarcotTKuSs6m3hTOa5CKHaS02TQ==}
engines: {node: '>=18'}
cpu: [x64]
os: [android]
@@ -2182,26 +2131,14 @@ packages:
cpu: [arm64]
os: [darwin]
- '@esbuild/darwin-arm64@0.19.11':
- resolution: {integrity: sha512-ETp87DRWuSt9KdDVkqSoKoLFHYTrkyz2+65fj9nfXsaV3bMhTCjtQfw3y+um88vGRKRiF7erPrh/ZuIdLUIVxQ==}
- engines: {node: '>=12'}
- cpu: [arm64]
- os: [darwin]
-
'@esbuild/darwin-arm64@0.21.5':
resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==}
engines: {node: '>=12'}
cpu: [arm64]
os: [darwin]
- '@esbuild/darwin-arm64@0.23.0':
- resolution: {integrity: sha512-YLntie/IdS31H54Ogdn+v50NuoWF5BDkEUFpiOChVa9UnKpftgwzZRrI4J132ETIi+D8n6xh9IviFV3eXdxfow==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [darwin]
-
- '@esbuild/darwin-arm64@0.23.1':
- resolution: {integrity: sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==}
+ '@esbuild/darwin-arm64@0.24.0':
+ resolution: {integrity: sha512-CKyDpRbK1hXwv79soeTJNHb5EiG6ct3efd/FTPdzOWdbZZfGhpbcqIpiD0+vwmpu0wTIL97ZRPZu8vUt46nBSw==}
engines: {node: '>=18'}
cpu: [arm64]
os: [darwin]
@@ -2212,26 +2149,14 @@ packages:
cpu: [x64]
os: [darwin]
- '@esbuild/darwin-x64@0.19.11':
- resolution: {integrity: sha512-fkFUiS6IUK9WYUO/+22omwetaSNl5/A8giXvQlcinLIjVkxwTLSktbF5f/kJMftM2MJp9+fXqZ5ezS7+SALp4g==}
- engines: {node: '>=12'}
- cpu: [x64]
- os: [darwin]
-
'@esbuild/darwin-x64@0.21.5':
resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==}
engines: {node: '>=12'}
cpu: [x64]
os: [darwin]
- '@esbuild/darwin-x64@0.23.0':
- resolution: {integrity: sha512-IMQ6eme4AfznElesHUPDZ+teuGwoRmVuuixu7sv92ZkdQcPbsNHzutd+rAfaBKo8YK3IrBEi9SLLKWJdEvJniQ==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [darwin]
-
- '@esbuild/darwin-x64@0.23.1':
- resolution: {integrity: sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==}
+ '@esbuild/darwin-x64@0.24.0':
+ resolution: {integrity: sha512-rgtz6flkVkh58od4PwTRqxbKH9cOjaXCMZgWD905JOzjFKW+7EiUObfd/Kav+A6Gyud6WZk9w+xu6QLytdi2OA==}
engines: {node: '>=18'}
cpu: [x64]
os: [darwin]
@@ -2242,26 +2167,14 @@ packages:
cpu: [arm64]
os: [freebsd]
- '@esbuild/freebsd-arm64@0.19.11':
- resolution: {integrity: sha512-lhoSp5K6bxKRNdXUtHoNc5HhbXVCS8V0iZmDvyWvYq9S5WSfTIHU2UGjcGt7UeS6iEYp9eeymIl5mJBn0yiuxA==}
- engines: {node: '>=12'}
- cpu: [arm64]
- os: [freebsd]
-
'@esbuild/freebsd-arm64@0.21.5':
resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==}
engines: {node: '>=12'}
cpu: [arm64]
os: [freebsd]
- '@esbuild/freebsd-arm64@0.23.0':
- resolution: {integrity: sha512-0muYWCng5vqaxobq6LB3YNtevDFSAZGlgtLoAc81PjUfiFz36n4KMpwhtAd4he8ToSI3TGyuhyx5xmiWNYZFyw==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [freebsd]
-
- '@esbuild/freebsd-arm64@0.23.1':
- resolution: {integrity: sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==}
+ '@esbuild/freebsd-arm64@0.24.0':
+ resolution: {integrity: sha512-6Mtdq5nHggwfDNLAHkPlyLBpE5L6hwsuXZX8XNmHno9JuL2+bg2BX5tRkwjyfn6sKbxZTq68suOjgWqCicvPXA==}
engines: {node: '>=18'}
cpu: [arm64]
os: [freebsd]
@@ -2272,26 +2185,14 @@ packages:
cpu: [x64]
os: [freebsd]
- '@esbuild/freebsd-x64@0.19.11':
- resolution: {integrity: sha512-JkUqn44AffGXitVI6/AbQdoYAq0TEullFdqcMY/PCUZ36xJ9ZJRtQabzMA+Vi7r78+25ZIBosLTOKnUXBSi1Kw==}
- engines: {node: '>=12'}
- cpu: [x64]
- os: [freebsd]
-
'@esbuild/freebsd-x64@0.21.5':
resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==}
engines: {node: '>=12'}
cpu: [x64]
os: [freebsd]
- '@esbuild/freebsd-x64@0.23.0':
- resolution: {integrity: sha512-XKDVu8IsD0/q3foBzsXGt/KjD/yTKBCIwOHE1XwiXmrRwrX6Hbnd5Eqn/WvDekddK21tfszBSrE/WMaZh+1buQ==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [freebsd]
-
- '@esbuild/freebsd-x64@0.23.1':
- resolution: {integrity: sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==}
+ '@esbuild/freebsd-x64@0.24.0':
+ resolution: {integrity: sha512-D3H+xh3/zphoX8ck4S2RxKR6gHlHDXXzOf6f/9dbFt/NRBDIE33+cVa49Kil4WUjxMGW0ZIYBYtaGCa2+OsQwQ==}
engines: {node: '>=18'}
cpu: [x64]
os: [freebsd]
@@ -2302,26 +2203,14 @@ packages:
cpu: [arm64]
os: [linux]
- '@esbuild/linux-arm64@0.19.11':
- resolution: {integrity: sha512-LneLg3ypEeveBSMuoa0kwMpCGmpu8XQUh+mL8XXwoYZ6Be2qBnVtcDI5azSvh7vioMDhoJFZzp9GWp9IWpYoUg==}
- engines: {node: '>=12'}
- cpu: [arm64]
- os: [linux]
-
'@esbuild/linux-arm64@0.21.5':
resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==}
engines: {node: '>=12'}
cpu: [arm64]
os: [linux]
- '@esbuild/linux-arm64@0.23.0':
- resolution: {integrity: sha512-j1t5iG8jE7BhonbsEg5d9qOYcVZv/Rv6tghaXM/Ug9xahM0nX/H2gfu6X6z11QRTMT6+aywOMA8TDkhPo8aCGw==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [linux]
-
- '@esbuild/linux-arm64@0.23.1':
- resolution: {integrity: sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==}
+ '@esbuild/linux-arm64@0.24.0':
+ resolution: {integrity: sha512-TDijPXTOeE3eaMkRYpcy3LarIg13dS9wWHRdwYRnzlwlA370rNdZqbcp0WTyyV/k2zSxfko52+C7jU5F9Tfj1g==}
engines: {node: '>=18'}
cpu: [arm64]
os: [linux]
@@ -2332,26 +2221,14 @@ packages:
cpu: [arm]
os: [linux]
- '@esbuild/linux-arm@0.19.11':
- resolution: {integrity: sha512-3CRkr9+vCV2XJbjwgzjPtO8T0SZUmRZla+UL1jw+XqHZPkPgZiyWvbDvl9rqAN8Zl7qJF0O/9ycMtjU67HN9/Q==}
- engines: {node: '>=12'}
- cpu: [arm]
- os: [linux]
-
'@esbuild/linux-arm@0.21.5':
resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==}
engines: {node: '>=12'}
cpu: [arm]
os: [linux]
- '@esbuild/linux-arm@0.23.0':
- resolution: {integrity: sha512-SEELSTEtOFu5LPykzA395Mc+54RMg1EUgXP+iw2SJ72+ooMwVsgfuwXo5Fn0wXNgWZsTVHwY2cg4Vi/bOD88qw==}
- engines: {node: '>=18'}
- cpu: [arm]
- os: [linux]
-
- '@esbuild/linux-arm@0.23.1':
- resolution: {integrity: sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==}
+ '@esbuild/linux-arm@0.24.0':
+ resolution: {integrity: sha512-gJKIi2IjRo5G6Glxb8d3DzYXlxdEj2NlkixPsqePSZMhLudqPhtZ4BUrpIuTjJYXxvF9njql+vRjB2oaC9XpBw==}
engines: {node: '>=18'}
cpu: [arm]
os: [linux]
@@ -2362,26 +2239,14 @@ packages:
cpu: [ia32]
os: [linux]
- '@esbuild/linux-ia32@0.19.11':
- resolution: {integrity: sha512-caHy++CsD8Bgq2V5CodbJjFPEiDPq8JJmBdeyZ8GWVQMjRD0sU548nNdwPNvKjVpamYYVL40AORekgfIubwHoA==}
- engines: {node: '>=12'}
- cpu: [ia32]
- os: [linux]
-
'@esbuild/linux-ia32@0.21.5':
resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==}
engines: {node: '>=12'}
cpu: [ia32]
os: [linux]
- '@esbuild/linux-ia32@0.23.0':
- resolution: {integrity: sha512-P7O5Tkh2NbgIm2R6x1zGJJsnacDzTFcRWZyTTMgFdVit6E98LTxO+v8LCCLWRvPrjdzXHx9FEOA8oAZPyApWUA==}
- engines: {node: '>=18'}
- cpu: [ia32]
- os: [linux]
-
- '@esbuild/linux-ia32@0.23.1':
- resolution: {integrity: sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==}
+ '@esbuild/linux-ia32@0.24.0':
+ resolution: {integrity: sha512-K40ip1LAcA0byL05TbCQ4yJ4swvnbzHscRmUilrmP9Am7//0UjPreh4lpYzvThT2Quw66MhjG//20mrufm40mA==}
engines: {node: '>=18'}
cpu: [ia32]
os: [linux]
@@ -2392,26 +2257,14 @@ packages:
cpu: [loong64]
os: [linux]
- '@esbuild/linux-loong64@0.19.11':
- resolution: {integrity: sha512-ppZSSLVpPrwHccvC6nQVZaSHlFsvCQyjnvirnVjbKSHuE5N24Yl8F3UwYUUR1UEPaFObGD2tSvVKbvR+uT1Nrg==}
- engines: {node: '>=12'}
- cpu: [loong64]
- os: [linux]
-
'@esbuild/linux-loong64@0.21.5':
resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==}
engines: {node: '>=12'}
cpu: [loong64]
os: [linux]
- '@esbuild/linux-loong64@0.23.0':
- resolution: {integrity: sha512-InQwepswq6urikQiIC/kkx412fqUZudBO4SYKu0N+tGhXRWUqAx+Q+341tFV6QdBifpjYgUndV1hhMq3WeJi7A==}
- engines: {node: '>=18'}
- cpu: [loong64]
- os: [linux]
-
- '@esbuild/linux-loong64@0.23.1':
- resolution: {integrity: sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==}
+ '@esbuild/linux-loong64@0.24.0':
+ resolution: {integrity: sha512-0mswrYP/9ai+CU0BzBfPMZ8RVm3RGAN/lmOMgW4aFUSOQBjA31UP8Mr6DDhWSuMwj7jaWOT0p0WoZ6jeHhrD7g==}
engines: {node: '>=18'}
cpu: [loong64]
os: [linux]
@@ -2422,26 +2275,14 @@ packages:
cpu: [mips64el]
os: [linux]
- '@esbuild/linux-mips64el@0.19.11':
- resolution: {integrity: sha512-B5x9j0OgjG+v1dF2DkH34lr+7Gmv0kzX6/V0afF41FkPMMqaQ77pH7CrhWeR22aEeHKaeZVtZ6yFwlxOKPVFyg==}
- engines: {node: '>=12'}
- cpu: [mips64el]
- os: [linux]
-
'@esbuild/linux-mips64el@0.21.5':
resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==}
engines: {node: '>=12'}
cpu: [mips64el]
os: [linux]
- '@esbuild/linux-mips64el@0.23.0':
- resolution: {integrity: sha512-J9rflLtqdYrxHv2FqXE2i1ELgNjT+JFURt/uDMoPQLcjWQA5wDKgQA4t/dTqGa88ZVECKaD0TctwsUfHbVoi4w==}
- engines: {node: '>=18'}
- cpu: [mips64el]
- os: [linux]
-
- '@esbuild/linux-mips64el@0.23.1':
- resolution: {integrity: sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==}
+ '@esbuild/linux-mips64el@0.24.0':
+ resolution: {integrity: sha512-hIKvXm0/3w/5+RDtCJeXqMZGkI2s4oMUGj3/jM0QzhgIASWrGO5/RlzAzm5nNh/awHE0A19h/CvHQe6FaBNrRA==}
engines: {node: '>=18'}
cpu: [mips64el]
os: [linux]
@@ -2452,26 +2293,14 @@ packages:
cpu: [ppc64]
os: [linux]
- '@esbuild/linux-ppc64@0.19.11':
- resolution: {integrity: sha512-MHrZYLeCG8vXblMetWyttkdVRjQlQUb/oMgBNurVEnhj4YWOr4G5lmBfZjHYQHHN0g6yDmCAQRR8MUHldvvRDA==}
- engines: {node: '>=12'}
- cpu: [ppc64]
- os: [linux]
-
'@esbuild/linux-ppc64@0.21.5':
resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==}
engines: {node: '>=12'}
cpu: [ppc64]
os: [linux]
- '@esbuild/linux-ppc64@0.23.0':
- resolution: {integrity: sha512-cShCXtEOVc5GxU0fM+dsFD10qZ5UpcQ8AM22bYj0u/yaAykWnqXJDpd77ublcX6vdDsWLuweeuSNZk4yUxZwtw==}
- engines: {node: '>=18'}
- cpu: [ppc64]
- os: [linux]
-
- '@esbuild/linux-ppc64@0.23.1':
- resolution: {integrity: sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==}
+ '@esbuild/linux-ppc64@0.24.0':
+ resolution: {integrity: sha512-HcZh5BNq0aC52UoocJxaKORfFODWXZxtBaaZNuN3PUX3MoDsChsZqopzi5UupRhPHSEHotoiptqikjN/B77mYQ==}
engines: {node: '>=18'}
cpu: [ppc64]
os: [linux]
@@ -2482,26 +2311,14 @@ packages:
cpu: [riscv64]
os: [linux]
- '@esbuild/linux-riscv64@0.19.11':
- resolution: {integrity: sha512-f3DY++t94uVg141dozDu4CCUkYW+09rWtaWfnb3bqe4w5NqmZd6nPVBm+qbz7WaHZCoqXqHz5p6CM6qv3qnSSQ==}
- engines: {node: '>=12'}
- cpu: [riscv64]
- os: [linux]
-
'@esbuild/linux-riscv64@0.21.5':
resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==}
engines: {node: '>=12'}
cpu: [riscv64]
os: [linux]
- '@esbuild/linux-riscv64@0.23.0':
- resolution: {integrity: sha512-HEtaN7Y5UB4tZPeQmgz/UhzoEyYftbMXrBCUjINGjh3uil+rB/QzzpMshz3cNUxqXN7Vr93zzVtpIDL99t9aRw==}
- engines: {node: '>=18'}
- cpu: [riscv64]
- os: [linux]
-
- '@esbuild/linux-riscv64@0.23.1':
- resolution: {integrity: sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==}
+ '@esbuild/linux-riscv64@0.24.0':
+ resolution: {integrity: sha512-bEh7dMn/h3QxeR2KTy1DUszQjUrIHPZKyO6aN1X4BCnhfYhuQqedHaa5MxSQA/06j3GpiIlFGSsy1c7Gf9padw==}
engines: {node: '>=18'}
cpu: [riscv64]
os: [linux]
@@ -2512,26 +2329,14 @@ packages:
cpu: [s390x]
os: [linux]
- '@esbuild/linux-s390x@0.19.11':
- resolution: {integrity: sha512-A5xdUoyWJHMMlcSMcPGVLzYzpcY8QP1RtYzX5/bS4dvjBGVxdhuiYyFwp7z74ocV7WDc0n1harxmpq2ePOjI0Q==}
- engines: {node: '>=12'}
- cpu: [s390x]
- os: [linux]
-
'@esbuild/linux-s390x@0.21.5':
resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==}
engines: {node: '>=12'}
cpu: [s390x]
os: [linux]
- '@esbuild/linux-s390x@0.23.0':
- resolution: {integrity: sha512-WDi3+NVAuyjg/Wxi+o5KPqRbZY0QhI9TjrEEm+8dmpY9Xir8+HE/HNx2JoLckhKbFopW0RdO2D72w8trZOV+Wg==}
- engines: {node: '>=18'}
- cpu: [s390x]
- os: [linux]
-
- '@esbuild/linux-s390x@0.23.1':
- resolution: {integrity: sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==}
+ '@esbuild/linux-s390x@0.24.0':
+ resolution: {integrity: sha512-ZcQ6+qRkw1UcZGPyrCiHHkmBaj9SiCD8Oqd556HldP+QlpUIe2Wgn3ehQGVoPOvZvtHm8HPx+bH20c9pvbkX3g==}
engines: {node: '>=18'}
cpu: [s390x]
os: [linux]
@@ -2542,26 +2347,14 @@ packages:
cpu: [x64]
os: [linux]
- '@esbuild/linux-x64@0.19.11':
- resolution: {integrity: sha512-grbyMlVCvJSfxFQUndw5mCtWs5LO1gUlwP4CDi4iJBbVpZcqLVT29FxgGuBJGSzyOxotFG4LoO5X+M1350zmPA==}
- engines: {node: '>=12'}
- cpu: [x64]
- os: [linux]
-
'@esbuild/linux-x64@0.21.5':
resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==}
engines: {node: '>=12'}
cpu: [x64]
os: [linux]
- '@esbuild/linux-x64@0.23.0':
- resolution: {integrity: sha512-a3pMQhUEJkITgAw6e0bWA+F+vFtCciMjW/LPtoj99MhVt+Mfb6bbL9hu2wmTZgNd994qTAEw+U/r6k3qHWWaOQ==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [linux]
-
- '@esbuild/linux-x64@0.23.1':
- resolution: {integrity: sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==}
+ '@esbuild/linux-x64@0.24.0':
+ resolution: {integrity: sha512-vbutsFqQ+foy3wSSbmjBXXIJ6PL3scghJoM8zCL142cGaZKAdCZHyf+Bpu/MmX9zT9Q0zFBVKb36Ma5Fzfa8xA==}
engines: {node: '>=18'}
cpu: [x64]
os: [linux]
@@ -2572,38 +2365,20 @@ packages:
cpu: [x64]
os: [netbsd]
- '@esbuild/netbsd-x64@0.19.11':
- resolution: {integrity: sha512-13jvrQZJc3P230OhU8xgwUnDeuC/9egsjTkXN49b3GcS5BKvJqZn86aGM8W9pd14Kd+u7HuFBMVtrNGhh6fHEQ==}
- engines: {node: '>=12'}
- cpu: [x64]
- os: [netbsd]
-
'@esbuild/netbsd-x64@0.21.5':
resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==}
engines: {node: '>=12'}
cpu: [x64]
os: [netbsd]
- '@esbuild/netbsd-x64@0.23.0':
- resolution: {integrity: sha512-cRK+YDem7lFTs2Q5nEv/HHc4LnrfBCbH5+JHu6wm2eP+d8OZNoSMYgPZJq78vqQ9g+9+nMuIsAO7skzphRXHyw==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [netbsd]
-
- '@esbuild/netbsd-x64@0.23.1':
- resolution: {integrity: sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==}
+ '@esbuild/netbsd-x64@0.24.0':
+ resolution: {integrity: sha512-hjQ0R/ulkO8fCYFsG0FZoH+pWgTTDreqpqY7UnQntnaKv95uP5iW3+dChxnx7C3trQQU40S+OgWhUVwCjVFLvg==}
engines: {node: '>=18'}
cpu: [x64]
os: [netbsd]
- '@esbuild/openbsd-arm64@0.23.0':
- resolution: {integrity: sha512-suXjq53gERueVWu0OKxzWqk7NxiUWSUlrxoZK7usiF50C6ipColGR5qie2496iKGYNLhDZkPxBI3erbnYkU0rQ==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [openbsd]
-
- '@esbuild/openbsd-arm64@0.23.1':
- resolution: {integrity: sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==}
+ '@esbuild/openbsd-arm64@0.24.0':
+ resolution: {integrity: sha512-MD9uzzkPQbYehwcN583yx3Tu5M8EIoTD+tUgKF982WYL9Pf5rKy9ltgD0eUgs8pvKnmizxjXZyLt0z6DC3rRXg==}
engines: {node: '>=18'}
cpu: [arm64]
os: [openbsd]
@@ -2614,26 +2389,14 @@ packages:
cpu: [x64]
os: [openbsd]
- '@esbuild/openbsd-x64@0.19.11':
- resolution: {integrity: sha512-ysyOGZuTp6SNKPE11INDUeFVVQFrhcNDVUgSQVDzqsqX38DjhPEPATpid04LCoUr2WXhQTEZ8ct/EgJCUDpyNw==}
- engines: {node: '>=12'}
- cpu: [x64]
- os: [openbsd]
-
'@esbuild/openbsd-x64@0.21.5':
resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==}
engines: {node: '>=12'}
cpu: [x64]
os: [openbsd]
- '@esbuild/openbsd-x64@0.23.0':
- resolution: {integrity: sha512-6p3nHpby0DM/v15IFKMjAaayFhqnXV52aEmv1whZHX56pdkK+MEaLoQWj+H42ssFarP1PcomVhbsR4pkz09qBg==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [openbsd]
-
- '@esbuild/openbsd-x64@0.23.1':
- resolution: {integrity: sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==}
+ '@esbuild/openbsd-x64@0.24.0':
+ resolution: {integrity: sha512-4ir0aY1NGUhIC1hdoCzr1+5b43mw99uNwVzhIq1OY3QcEwPDO3B7WNXBzaKY5Nsf1+N11i1eOfFcq+D/gOS15Q==}
engines: {node: '>=18'}
cpu: [x64]
os: [openbsd]
@@ -2644,26 +2407,14 @@ packages:
cpu: [x64]
os: [sunos]
- '@esbuild/sunos-x64@0.19.11':
- resolution: {integrity: sha512-Hf+Sad9nVwvtxy4DXCZQqLpgmRTQqyFyhT3bZ4F2XlJCjxGmRFF0Shwn9rzhOYRB61w9VMXUkxlBy56dk9JJiQ==}
- engines: {node: '>=12'}
- cpu: [x64]
- os: [sunos]
-
'@esbuild/sunos-x64@0.21.5':
resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==}
engines: {node: '>=12'}
cpu: [x64]
os: [sunos]
- '@esbuild/sunos-x64@0.23.0':
- resolution: {integrity: sha512-BFelBGfrBwk6LVrmFzCq1u1dZbG4zy/Kp93w2+y83Q5UGYF1d8sCzeLI9NXjKyujjBBniQa8R8PzLFAUrSM9OA==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [sunos]
-
- '@esbuild/sunos-x64@0.23.1':
- resolution: {integrity: sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==}
+ '@esbuild/sunos-x64@0.24.0':
+ resolution: {integrity: sha512-jVzdzsbM5xrotH+W5f1s+JtUy1UWgjU0Cf4wMvffTB8m6wP5/kx0KiaLHlbJO+dMgtxKV8RQ/JvtlFcdZ1zCPA==}
engines: {node: '>=18'}
cpu: [x64]
os: [sunos]
@@ -2674,26 +2425,14 @@ packages:
cpu: [arm64]
os: [win32]
- '@esbuild/win32-arm64@0.19.11':
- resolution: {integrity: sha512-0P58Sbi0LctOMOQbpEOvOL44Ne0sqbS0XWHMvvrg6NE5jQ1xguCSSw9jQeUk2lfrXYsKDdOe6K+oZiwKPilYPQ==}
- engines: {node: '>=12'}
- cpu: [arm64]
- os: [win32]
-
'@esbuild/win32-arm64@0.21.5':
resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==}
engines: {node: '>=12'}
cpu: [arm64]
os: [win32]
- '@esbuild/win32-arm64@0.23.0':
- resolution: {integrity: sha512-lY6AC8p4Cnb7xYHuIxQ6iYPe6MfO2CC43XXKo9nBXDb35krYt7KGhQnOkRGar5psxYkircpCqfbNDB4uJbS2jQ==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [win32]
-
- '@esbuild/win32-arm64@0.23.1':
- resolution: {integrity: sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==}
+ '@esbuild/win32-arm64@0.24.0':
+ resolution: {integrity: sha512-iKc8GAslzRpBytO2/aN3d2yb2z8XTVfNV0PjGlCxKo5SgWmNXx82I/Q3aG1tFfS+A2igVCY97TJ8tnYwpUWLCA==}
engines: {node: '>=18'}
cpu: [arm64]
os: [win32]
@@ -2704,26 +2443,14 @@ packages:
cpu: [ia32]
os: [win32]
- '@esbuild/win32-ia32@0.19.11':
- resolution: {integrity: sha512-6YOrWS+sDJDmshdBIQU+Uoyh7pQKrdykdefC1avn76ss5c+RN6gut3LZA4E2cH5xUEp5/cA0+YxRaVtRAb0xBg==}
- engines: {node: '>=12'}
- cpu: [ia32]
- os: [win32]
-
'@esbuild/win32-ia32@0.21.5':
resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==}
engines: {node: '>=12'}
cpu: [ia32]
os: [win32]
- '@esbuild/win32-ia32@0.23.0':
- resolution: {integrity: sha512-7L1bHlOTcO4ByvI7OXVI5pNN6HSu6pUQq9yodga8izeuB1KcT2UkHaH6118QJwopExPn0rMHIseCTx1CRo/uNA==}
- engines: {node: '>=18'}
- cpu: [ia32]
- os: [win32]
-
- '@esbuild/win32-ia32@0.23.1':
- resolution: {integrity: sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==}
+ '@esbuild/win32-ia32@0.24.0':
+ resolution: {integrity: sha512-vQW36KZolfIudCcTnaTpmLQ24Ha1RjygBo39/aLkM2kmjkWmZGEJ5Gn9l5/7tzXA42QGIoWbICfg6KLLkIw6yw==}
engines: {node: '>=18'}
cpu: [ia32]
os: [win32]
@@ -2734,26 +2461,14 @@ packages:
cpu: [x64]
os: [win32]
- '@esbuild/win32-x64@0.19.11':
- resolution: {integrity: sha512-vfkhltrjCAb603XaFhqhAF4LGDi2M4OrCRrFusyQ+iTLQ/o60QQXxc9cZC/FFpihBI9N1Grn6SMKVJ4KP7Fuiw==}
- engines: {node: '>=12'}
- cpu: [x64]
- os: [win32]
-
'@esbuild/win32-x64@0.21.5':
resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==}
engines: {node: '>=12'}
cpu: [x64]
os: [win32]
- '@esbuild/win32-x64@0.23.0':
- resolution: {integrity: sha512-Arm+WgUFLUATuoxCJcahGuk6Yj9Pzxd6l11Zb/2aAuv5kWWvvfhLFo2fni4uSK5vzlUdCGZ/BdV5tH8klj8p8g==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [win32]
-
- '@esbuild/win32-x64@0.23.1':
- resolution: {integrity: sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==}
+ '@esbuild/win32-x64@0.24.0':
+ resolution: {integrity: sha512-7IAFPrjSQIJrGsK6flwg7NFmwBoSTyF3rl7If0hNUFQU4ilTsEPL6GuMuU9BfIWVVGuRnuIidkSMC+c0Otu8IA==}
engines: {node: '>=18'}
cpu: [x64]
os: [win32]
@@ -2768,6 +2483,10 @@ packages:
resolution: {integrity: sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==}
engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
+ '@eslint-community/regexpp@4.12.1':
+ resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==}
+ engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
+
'@eslint-community/regexpp@4.6.2':
resolution: {integrity: sha512-pPTNuaAG3QMH+buKyBIGJs3g/S5y0caxw0ygM3YyE6yJFySwiGGSzA+mM3KJ8QQvzeLh3blwgSonkFjgQdxzMw==}
engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
@@ -2776,8 +2495,12 @@ packages:
resolution: {integrity: sha512-lpHyRyplhGPL5mGEh6M9O5nnKk0Gz4bFI+Zu6tKlPpDUN7XshWvH9C/px4UVm87IAANE0W81CEsNGbS1KlzXpA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- '@eslint/config-array@0.17.1':
- resolution: {integrity: sha512-BlYOpej8AQ8Ev9xVqroV7a02JK3SkBAaN9GfMMH9W6Ch8FlQlkjGw4Ir7+FgYwfirivAf4t+GtzuAxqfukmISA==}
+ '@eslint/config-array@0.18.0':
+ resolution: {integrity: sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+
+ '@eslint/core@0.7.0':
+ resolution: {integrity: sha512-xp5Jirz5DyPYlPiKat8jaq0EmYvDXKKpzTbxXMpT9eqlRJkRKIz9AGMdlvYjih+im+QlhWrpvVjl8IPC/lHlUw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@eslint/eslintrc@2.1.4':
@@ -2792,14 +2515,18 @@ packages:
resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
- '@eslint/js@9.8.0':
- resolution: {integrity: sha512-MfluB7EUfxXtv3i/++oh89uzAr4PDI4nn201hsp+qaXqsjAWzinlZEHEfPgAX4doIlKvPG/i0A9dpKxOLII8yA==}
+ '@eslint/js@9.14.0':
+ resolution: {integrity: sha512-pFoEtFWCPyDOl+C6Ift+wC7Ro89otjigCf5vcuWqWgqNSQbRrpjSvdeE6ofLz4dHmyxD5f7gIdGT4+p36L6Twg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@eslint/object-schema@2.1.4':
resolution: {integrity: sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ '@eslint/plugin-kit@0.2.3':
+ resolution: {integrity: sha512-2b/g5hRmpbb1o4GnTZax9N9m0FXzz9OV42ZzI4rDDMDuHUqigAiQCEWChBWCY4ztAGVRjoWT19v0yMmc5/L5kA==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+
'@fastify/accept-negotiator@2.0.0':
resolution: {integrity: sha512-/Sce/kBzuTxIq5tJh85nVNOq9wKD8s+viIgX0fFMDBdw95gnpf53qmF1oBgJym3cPFliWUuSloVg/1w/rH0FcQ==}
@@ -2820,8 +2547,8 @@ packages:
'@fastify/busboy@3.0.0':
resolution: {integrity: sha512-83rnH2nCvclWaPQQKvkJ2pdOjG4TZyEVuFDnlOF6KP08lDaaceVyw/W63mDuafQT+MKHCvXIPpE5uYWeM0rT4w==}
- '@fastify/cookie@10.0.1':
- resolution: {integrity: sha512-NV/wbCUv4ETJ5KM1KMu0fLx0nSCm9idIxwg66NZnNbfPQH3rdbx6k0qRs5uy0y+MhBgvDudYRA30KlK659chyw==}
+ '@fastify/cookie@11.0.1':
+ resolution: {integrity: sha512-n1Ooz4bgQ5LcOlJQboWPfsMNxIrGV0SgU85UkctdpTlCQE0mtA3rlspOPUdqk9ubiiZn053ucnia4DjTquI4/g==}
'@fastify/cors@10.0.1':
resolution: {integrity: sha512-O8JIf6448uQbOgzSkCqhClw6gFTAqrdfeA6R3fc/3gwTJGUp7gl8/3tbNB+6INuu4RmgVOq99BmvdGbtu5pgOA==}
@@ -2838,8 +2565,8 @@ packages:
'@fastify/fast-json-stringify-compiler@5.0.1':
resolution: {integrity: sha512-f2d3JExJgFE3UbdFcpPwqNUEoHWmt8pAKf8f+9YuLESdefA0WgqxeT6DrGL4Yrf/9ihXNSKOqpjEmurV405meA==}
- '@fastify/http-proxy@10.0.0':
- resolution: {integrity: sha512-n5/EPspNKtzpCUavuDflYtvtB+aEkablb2sZM83gDKbxM9GF+93maJYQrGozJ2HNRqpt7wfzsDeUuGVFFkYzMQ==}
+ '@fastify/http-proxy@10.0.1':
+ resolution: {integrity: sha512-wCMwI9RXK5ISe9G1FGPDCCD2KlSAuLtDDU8XBEfiBxYV0nt+aYm4vPhU/0+IhUM6t+r7UWiV+9OYaJxcTem9+g==}
'@fastify/merge-json-schemas@0.1.1':
resolution: {integrity: sha512-fERDVz7topgNjtXsJTTW1JKLy0rhuLRcquYqNR9rF7OcVpCa2OVW49ZPDIhaRRCaUuvVxI+N416xUoF76HNSXA==}
@@ -2853,8 +2580,8 @@ packages:
'@fastify/send@3.1.1':
resolution: {integrity: sha512-LdiV2mle/2tH8vh6GwGl0ubfUAgvY+9yF9oGI1iiwVyNUVOQamvw5n+OFu6iCNNoyuCY80FFURBn4TZCbTe8LA==}
- '@fastify/static@8.0.1':
- resolution: {integrity: sha512-7idyhbcgf14v4bjWzUeHEFvnVxvNJ1n5cyGPgFtwTZjnjUQ1wgC7a2FQai7OGKqCKywDEjzbPhAZRW+uEK1LMg==}
+ '@fastify/static@8.0.2':
+ resolution: {integrity: sha512-xJ+XaZVl4Y+lKztx8jGi+BE73aByhOmjMgaTx98E4XtVZxUpiaYQIMBlwACsJz+xohm0kvzV34BZoiZ+bsJtBQ==}
'@fastify/view@10.0.1':
resolution: {integrity: sha512-rXtBN0oVDmoRZAS7lelrCIahf+qFtlMOOas8VPdA7JvrJ9ChcF7e36pIUPU0Vbs3KmHxESUb7XatavUZEe/k5Q==}
@@ -2884,6 +2611,14 @@ packages:
'@hexagon/base64@1.1.27':
resolution: {integrity: sha512-PdUmzpvcUM3Rh39kvz9RdbPVYhMjBjdV7Suw7ZduP7urRLsZR8l5tzgSWKm7TExwBYDFwTnYrZbnE0rQ3N5NLQ==}
+ '@humanfs/core@0.19.1':
+ resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==}
+ engines: {node: '>=18.18.0'}
+
+ '@humanfs/node@0.16.6':
+ resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==}
+ engines: {node: '>=18.18.0'}
+
'@humanwhocodes/config-array@0.11.14':
resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==}
engines: {node: '>=10.10.0'}
@@ -2905,6 +2640,10 @@ packages:
resolution: {integrity: sha512-d2CGZR2o7fS6sWB7DG/3a95bGKQyHMACZ5aW8qGkkqQpUoZV6C0X7Pc7l4ZNMZkfNBf4VWNe9E1jRsf0G146Ew==}
engines: {node: '>=18.18'}
+ '@humanwhocodes/retry@0.4.1':
+ resolution: {integrity: sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==}
+ engines: {node: '>=18.18'}
+
'@img/sharp-darwin-arm64@0.33.5':
resolution: {integrity: sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
@@ -3010,21 +2749,25 @@ packages:
cpu: [x64]
os: [win32]
- '@inquirer/confirm@3.1.6':
- resolution: {integrity: sha512-Mj4TU29g6Uy+37UtpA8UpEOI2icBfpCwSW1QDtfx60wRhUy90s/kHPif2OXSSvuwDQT1lhAYRWUfkNf9Tecxvg==}
+ '@inquirer/confirm@5.0.2':
+ resolution: {integrity: sha512-KJLUHOaKnNCYzwVbryj3TNBxyZIrr56fR5N45v6K9IPrbT6B7DcudBMfylkV1A8PUdJE15mybkEQyp2/ZUpxUA==}
engines: {node: '>=18'}
+ peerDependencies:
+ '@types/node': '>=18'
- '@inquirer/core@8.1.0':
- resolution: {integrity: sha512-kfx0SU9nWgGe1f03ao/uXc85SFH1v2w3vQVH7QDGjKxdtJz+7vPitFtG++BTyJMYyYgH8MpXigutcXJeiQwVRw==}
+ '@inquirer/core@10.1.0':
+ resolution: {integrity: sha512-I+ETk2AL+yAVbvuKx5AJpQmoaWhpiTFOg/UJb7ZkMAK4blmtG8ATh5ct+T/8xNld0CZG/2UhtkdMwpgvld92XQ==}
engines: {node: '>=18'}
- '@inquirer/figures@1.0.1':
- resolution: {integrity: sha512-mtup3wVKia3ZwULPHcbs4Mor8Voi+iIXEWD7wCNbIO6lYR62oPCTQyrddi5OMYVXHzeCSoneZwJuS8sBvlEwDw==}
+ '@inquirer/figures@1.0.8':
+ resolution: {integrity: sha512-tKd+jsmhq21AP1LhexC0pPwsCxEhGgAkg28byjJAd+xhmIs8LUX8JbUc3vBf3PhLxWiB5EvyBE5X7JSPAqMAqg==}
engines: {node: '>=18'}
- '@inquirer/type@1.3.1':
- resolution: {integrity: sha512-Pe3PFccjPVJV1vtlfVvm9OnlbxqdnP5QcscFEFEnK5quChf1ufZtM0r8mR5ToWHMxZOh0s8o/qp9ANGRTo/DAw==}
+ '@inquirer/type@3.0.1':
+ resolution: {integrity: sha512-+ksJMIy92sOAiAccGpcKZUc3bYO07cADnscIxHBknEm3uNts3movSmBofc1908BNy5edKscxYeAdaX1NXkHS6A==}
engines: {node: '>=18'}
+ peerDependencies:
+ '@types/node': '>=18'
'@ioredis/commands@1.2.0':
resolution: {integrity: sha512-Sx1pU8EM64o2BrqNpEO1CNLtKQwyhuXuqyfH7oGKCk+1a33d2r5saW8zNwm3j6BTExtjrv2BxTgzzkMwts6vGg==}
@@ -3182,8 +2925,8 @@ packages:
'@microsoft/api-extractor-model@7.29.8':
resolution: {integrity: sha512-t3Z/xcO6TRbMcnKGVMs4uMzv/gd5j0NhMiJIGjD4cJMeFJ1Hf8wnLSx37vxlRlL0GWlGJhnFgxvnaL6JlS+73g==}
- '@microsoft/api-extractor@7.47.9':
- resolution: {integrity: sha512-TTq30M1rikVsO5wZVToQT/dGyJY7UXJmjiRtkHPLb74Prx3Etw8+bX7Bv7iLuby6ysb7fuu1NFWqma+csym8Jw==}
+ '@microsoft/api-extractor@7.47.11':
+ resolution: {integrity: sha512-lrudfbPub5wzBhymfFtgZKuBvXxoSIAdrvS2UbHjoMT2TjIEddq6Z13pcve7A03BAouw0x8sW8G4txdgfiSwpQ==}
hasBin: true
'@microsoft/tsdoc-config@0.17.0':
@@ -3245,12 +2988,8 @@ packages:
cpu: [x64]
os: [win32]
- '@mswjs/interceptors@0.29.1':
- resolution: {integrity: sha512-3rDakgJZ77+RiQUuSK69t1F0m8BQKA8Vh5DCS5V0DWvNY67zob2JhhQrhCO0AKLGINTRSFd1tBaHcJTkhefoSw==}
- engines: {node: '>=18'}
-
- '@mswjs/interceptors@0.35.9':
- resolution: {integrity: sha512-SSnyl/4ni/2ViHKkiZb8eajA/eN1DNFaHjhGiLUdZvDz6PKF4COSf/17xqSz64nOo2Ia29SA6B2KNCsyCbVmaQ==}
+ '@mswjs/interceptors@0.36.10':
+ resolution: {integrity: sha512-GXrJgakgJW3DWKueebkvtYgGKkxA7s0u5B0P5syJM5rvQUnrpLPigvci8Hukl7yEM+sU06l+er2Fgvx/gmiRgg==}
engines: {node: '>=18'}
'@napi-rs/canvas-android-arm64@0.1.56':
@@ -3311,8 +3050,8 @@ packages:
resolution: {integrity: sha512-SujSchzG6lLc/wT+Mwxam/w30Kk2sFTiU6bLFcidecKSmlhenAhGMQhZh2iGFfKoh2+8iit0jrt99n6TqReICQ==}
engines: {node: '>= 10'}
- '@nestjs/common@10.4.4':
- resolution: {integrity: sha512-0j2/zqRw9nvHV1GKTktER8B/hIC/Z8CYFjN/ZqUuvwayCH+jZZBhCR2oRyuvLTXdnlSmtCAg2xvQ0ULqQvzqhA==}
+ '@nestjs/common@10.4.7':
+ resolution: {integrity: sha512-gIOpjD3Mx8gfYGxYm/RHPcJzqdknNNFCyY+AxzBT3gc5Xvvik1Dn5OxaMGw5EbVfhZgJKVP0n83giUOAlZQe7w==}
peerDependencies:
class-transformer: '*'
class-validator: '*'
@@ -3324,8 +3063,8 @@ packages:
class-validator:
optional: true
- '@nestjs/core@10.4.4':
- resolution: {integrity: sha512-y9tjmAzU6LTh1cC/lWrRsCcOd80khSR0qAHAqwY2svbW+AhsR/XCzgpZrAAKJrm/dDfjLCZKyxJSayeirGcW5Q==}
+ '@nestjs/core@10.4.7':
+ resolution: {integrity: sha512-AIpQzW/vGGqSLkKvll1R7uaSNv99AxZI2EFyVJPNGDgFsfXaohfV1Ukl6f+s75Km+6Fj/7aNl80EqzNWQCS8Ig==}
peerDependencies:
'@nestjs/common': ^10.0.0
'@nestjs/microservices': ^10.0.0
@@ -3341,14 +3080,14 @@ packages:
'@nestjs/websockets':
optional: true
- '@nestjs/platform-express@10.4.4':
- resolution: {integrity: sha512-y52q1MxhbHaT3vAgWd08RgiYon0lJgtTa8U6g6gV0KI0IygwZhDQFJVxnrRDUdxQGIP5CKHmfQu3sk9gTNFoEA==}
+ '@nestjs/platform-express@10.4.7':
+ resolution: {integrity: sha512-q6XDOxZPTZ9cxALcVuKUlRBk+cVEv6dW2S8p2yVre22kpEQxq53/OI8EseDvzObGb6hepZ8+yBY04qoYqSlXNQ==}
peerDependencies:
'@nestjs/common': ^10.0.0
'@nestjs/core': ^10.0.0
- '@nestjs/testing@10.4.4':
- resolution: {integrity: sha512-qRGFj51A5RM7JqA8pcyEwSLA3Y0dle/PAZ8oxP0suimoCusRY3Tk7wYqutZdCNj1ATb678SDaUZDHk2pwSv9/g==}
+ '@nestjs/testing@10.4.7':
+ resolution: {integrity: sha512-aS3sQ0v4g8cyHDzW3xJv1+8MiFAkxUNXmnau588IFFI/nBIo/kevLNHNPr85keYekkJ/lwNDW72h8UGg8BYd9w==}
peerDependencies:
'@nestjs/common': ^10.0.0
'@nestjs/core': ^10.0.0
@@ -3405,6 +3144,14 @@ packages:
resolution: {integrity: sha512-qnSqB2DQ9TPP96dl8cDubDvrUyWc0/sK81xHTK8eSUspzDM3bsewX903qclQFvVhgStjRWdC5bLb3kQqMkfV5A==}
engines: {node: '>=14'}
+ '@opentelemetry/api-logs@0.53.0':
+ resolution: {integrity: sha512-8HArjKx+RaAI8uEIgcORbZIPklyh1YLjPSBus8hjRmvLi6DeFzgOcdZ7KwPabKj8mXF8dX0hyfAyGfycz0DbFw==}
+ engines: {node: '>=14'}
+
+ '@opentelemetry/api-logs@0.54.2':
+ resolution: {integrity: sha512-4MTVwwmLgUh5QrJnZpYo6YRO5IBLAggf2h8gWDblwRagDStY13aEvt7gGk3jewrMaPlHiF83fENhIx0HO97/cQ==}
+ engines: {node: '>=14'}
+
'@opentelemetry/api@1.9.0':
resolution: {integrity: sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==}
engines: {node: '>=8.0.0'}
@@ -3415,156 +3162,214 @@ packages:
peerDependencies:
'@opentelemetry/api': '>=1.0.0 <1.10.0'
- '@opentelemetry/core@1.24.1':
- resolution: {integrity: sha512-wMSGfsdmibI88K9wB498zXY04yThPexo8jvwNNlm542HZB7XrrMRBbAyKJqG8qDRJwIBdBrPMi4V9ZPW/sqrcg==}
+ '@opentelemetry/core@1.25.1':
+ resolution: {integrity: sha512-GeT/l6rBYWVQ4XArluLVB6WWQ8flHbdb6r2FCHC3smtdOAbrJBIv35tpV/yp9bmYUJf+xmZpu9DRTIeJVhFbEQ==}
+ engines: {node: '>=14'}
+ peerDependencies:
+ '@opentelemetry/api': '>=1.0.0 <1.10.0'
+
+ '@opentelemetry/core@1.26.0':
+ resolution: {integrity: sha512-1iKxXXE8415Cdv0yjG3G6hQnB5eVEsJce3QaawX8SjDn0mAS0ZM8fAbZZJD4ajvhC15cePvosSCut404KrIIvQ==}
engines: {node: '>=14'}
peerDependencies:
- '@opentelemetry/api': '>=1.0.0 <1.9.0'
+ '@opentelemetry/api': '>=1.0.0 <1.10.0'
- '@opentelemetry/core@1.25.1':
- resolution: {integrity: sha512-GeT/l6rBYWVQ4XArluLVB6WWQ8flHbdb6r2FCHC3smtdOAbrJBIv35tpV/yp9bmYUJf+xmZpu9DRTIeJVhFbEQ==}
+ '@opentelemetry/core@1.28.0':
+ resolution: {integrity: sha512-ZLwRMV+fNDpVmF2WYUdBHlq0eOWtEaUJSusrzjGnBt7iSRvfjFE3RXYUZJrqou/wIDWV0DwQ5KIfYe9WXg9Xqw==}
engines: {node: '>=14'}
peerDependencies:
'@opentelemetry/api': '>=1.0.0 <1.10.0'
- '@opentelemetry/instrumentation-connect@0.38.0':
- resolution: {integrity: sha512-2/nRnx3pjYEmdPIaBwtgtSviTKHWnDZN3R+TkRUnhIVrvBKVcq+I5B2rtd6mr6Fe9cHlZ9Ojcuh7pkNh/xdWWg==}
+ '@opentelemetry/instrumentation-amqplib@0.43.0':
+ resolution: {integrity: sha512-ALjfQC+0dnIEcvNYsbZl/VLh7D2P1HhFF4vicRKHhHFIUV3Shpg4kXgiek5PLhmeKSIPiUB25IYH5RIneclL4A==}
engines: {node: '>=14'}
peerDependencies:
'@opentelemetry/api': ^1.3.0
- '@opentelemetry/instrumentation-express@0.41.0':
- resolution: {integrity: sha512-/B7fbMdaf3SYe5f1P973tkqd6s7XZirjpfkoJ63E7nltU30qmlgm9tY5XwZOzAFI0rHS9tbrFI2HFPAvQUFe/A==}
+ '@opentelemetry/instrumentation-connect@0.40.0':
+ resolution: {integrity: sha512-3aR/3YBQ160siitwwRLjwqrv2KBT16897+bo6yz8wIfel6nWOxTZBJudcbsK3p42pTC7qrbotJ9t/1wRLpv79Q==}
engines: {node: '>=14'}
peerDependencies:
'@opentelemetry/api': ^1.3.0
- '@opentelemetry/instrumentation-fastify@0.38.0':
- resolution: {integrity: sha512-HBVLpTSYpkQZ87/Df3N0gAw7VzYZV3n28THIBrJWfuqw3Or7UqdhnjeuMIPQ04BKk3aZc0cWn2naSQObbh5vXw==}
+ '@opentelemetry/instrumentation-dataloader@0.12.0':
+ resolution: {integrity: sha512-pnPxatoFE0OXIZDQhL2okF//dmbiWFzcSc8pUg9TqofCLYZySSxDCgQc69CJBo5JnI3Gz1KP+mOjS4WAeRIH4g==}
engines: {node: '>=14'}
peerDependencies:
'@opentelemetry/api': ^1.3.0
- '@opentelemetry/instrumentation-graphql@0.42.0':
- resolution: {integrity: sha512-N8SOwoKL9KQSX7z3gOaw5UaTeVQcfDO1c21csVHnmnmGUoqsXbArK2B8VuwPWcv6/BC/i3io+xTo7QGRZ/z28Q==}
+ '@opentelemetry/instrumentation-express@0.44.0':
+ resolution: {integrity: sha512-GWgibp6Q0wxyFaaU8ERIgMMYgzcHmGrw3ILUtGchLtLncHNOKk0SNoWGqiylXWWT4HTn5XdV8MGawUgpZh80cA==}
engines: {node: '>=14'}
peerDependencies:
'@opentelemetry/api': ^1.3.0
- '@opentelemetry/instrumentation-hapi@0.40.0':
- resolution: {integrity: sha512-8U/w7Ifumtd2bSN1OLaSwAAFhb9FyqWUki3lMMB0ds+1+HdSxYBe9aspEJEgvxAqOkrQnVniAPTEGf1pGM7SOw==}
+ '@opentelemetry/instrumentation-fastify@0.41.0':
+ resolution: {integrity: sha512-pNRjFvf0mvqfJueaeL/qEkuGJwgtE5pgjIHGYwjc2rMViNCrtY9/Sf+Nu8ww6dDd/Oyk2fwZZP7i0XZfCnETrA==}
engines: {node: '>=14'}
peerDependencies:
'@opentelemetry/api': ^1.3.0
- '@opentelemetry/instrumentation-http@0.52.1':
- resolution: {integrity: sha512-dG/aevWhaP+7OLv4BQQSEKMJv8GyeOp3Wxl31NHqE8xo9/fYMfEljiZphUHIfyg4gnZ9swMyWjfOQs5GUQe54Q==}
+ '@opentelemetry/instrumentation-fs@0.16.0':
+ resolution: {integrity: sha512-hMDRUxV38ln1R3lNz6osj3YjlO32ykbHqVrzG7gEhGXFQfu7LJUx8t9tEwE4r2h3CD4D0Rw4YGDU4yF4mP3ilg==}
engines: {node: '>=14'}
peerDependencies:
'@opentelemetry/api': ^1.3.0
- '@opentelemetry/instrumentation-ioredis@0.42.0':
- resolution: {integrity: sha512-P11H168EKvBB9TUSasNDOGJCSkpT44XgoM6d3gRIWAa9ghLpYhl0uRkS8//MqPzcJVHr3h3RmfXIpiYLjyIZTw==}
+ '@opentelemetry/instrumentation-generic-pool@0.39.0':
+ resolution: {integrity: sha512-y4v8Y+tSfRB3NNBvHjbjrn7rX/7sdARG7FuK6zR8PGb28CTa0kHpEGCJqvL9L8xkTNvTXo+lM36ajFGUaK1aNw==}
engines: {node: '>=14'}
peerDependencies:
'@opentelemetry/api': ^1.3.0
- '@opentelemetry/instrumentation-koa@0.42.0':
- resolution: {integrity: sha512-H1BEmnMhho8o8HuNRq5zEI4+SIHDIglNB7BPKohZyWG4fWNuR7yM4GTlR01Syq21vODAS7z5omblScJD/eZdKw==}
+ '@opentelemetry/instrumentation-graphql@0.44.0':
+ resolution: {integrity: sha512-FYXTe3Bv96aNpYktqm86BFUTpjglKD0kWI5T5bxYkLUPEPvFn38vWGMJTGrDMVou/i55E4jlWvcm6hFIqLsMbg==}
engines: {node: '>=14'}
peerDependencies:
'@opentelemetry/api': ^1.3.0
- '@opentelemetry/instrumentation-mongodb@0.46.0':
- resolution: {integrity: sha512-VF/MicZ5UOBiXrqBslzwxhN7TVqzu1/LN/QDpkskqM0Zm0aZ4CVRbUygL8d7lrjLn15x5kGIe8VsSphMfPJzlA==}
+ '@opentelemetry/instrumentation-hapi@0.41.0':
+ resolution: {integrity: sha512-jKDrxPNXDByPlYcMdZjNPYCvw0SQJjN+B1A+QH+sx+sAHsKSAf9hwFiJSrI6C4XdOls43V/f/fkp9ITkHhKFbQ==}
engines: {node: '>=14'}
peerDependencies:
'@opentelemetry/api': ^1.3.0
- '@opentelemetry/instrumentation-mongoose@0.40.0':
- resolution: {integrity: sha512-niRi5ZUnkgzRhIGMOozTyoZIvJKNJyhijQI4nF4iFSb+FUx2v5fngfR+8XLmdQAO7xmsD8E5vEGdDVYVtKbZew==}
+ '@opentelemetry/instrumentation-http@0.53.0':
+ resolution: {integrity: sha512-H74ErMeDuZfj7KgYCTOFGWF5W9AfaPnqLQQxeFq85+D29wwV2yqHbz2IKLYpkOh7EI6QwDEl7rZCIxjJLyc/CQ==}
engines: {node: '>=14'}
peerDependencies:
'@opentelemetry/api': ^1.3.0
- '@opentelemetry/instrumentation-mysql2@0.40.0':
- resolution: {integrity: sha512-0xfS1xcqUmY7WE1uWjlmI67Xg3QsSUlNT+AcXHeA4BDUPwZtWqF4ezIwLgpVZfHOnkAEheqGfNSWd1PIu3Wnfg==}
+ '@opentelemetry/instrumentation-ioredis@0.43.0':
+ resolution: {integrity: sha512-i3Dke/LdhZbiUAEImmRG3i7Dimm/BD7t8pDDzwepSvIQ6s2X6FPia7561gw+64w+nx0+G9X14D7rEfaMEmmjig==}
engines: {node: '>=14'}
peerDependencies:
'@opentelemetry/api': ^1.3.0
- '@opentelemetry/instrumentation-mysql@0.40.0':
- resolution: {integrity: sha512-d7ja8yizsOCNMYIJt5PH/fKZXjb/mS48zLROO4BzZTtDfhNCl2UM/9VIomP2qkGIFVouSJrGr/T00EzY7bPtKA==}
+ '@opentelemetry/instrumentation-kafkajs@0.4.0':
+ resolution: {integrity: sha512-I9VwDG314g7SDL4t8kD/7+1ytaDBRbZQjhVaQaVIDR8K+mlsoBhLsWH79yHxhHQKvwCSZwqXF+TiTOhoQVUt7A==}
engines: {node: '>=14'}
peerDependencies:
'@opentelemetry/api': ^1.3.0
- '@opentelemetry/instrumentation-nestjs-core@0.39.0':
- resolution: {integrity: sha512-mewVhEXdikyvIZoMIUry8eb8l3HUjuQjSjVbmLVTt4NQi35tkpnHQrG9bTRBrl3403LoWZ2njMPJyg4l6HfKvA==}
+ '@opentelemetry/instrumentation-knex@0.41.0':
+ resolution: {integrity: sha512-OhI1SlLv5qnsnm2dOVrian/x3431P75GngSpnR7c4fcVFv7prXGYu29Z6ILRWJf/NJt6fkbySmwdfUUnFnHCTg==}
engines: {node: '>=14'}
peerDependencies:
'@opentelemetry/api': ^1.3.0
- '@opentelemetry/instrumentation-pg@0.43.0':
- resolution: {integrity: sha512-og23KLyoxdnAeFs1UWqzSonuCkePUzCX30keSYigIzJe/6WSYA8rnEI5lobcxPEzg+GcU06J7jzokuEHbjVJNw==}
+ '@opentelemetry/instrumentation-koa@0.43.0':
+ resolution: {integrity: sha512-lDAhSnmoTIN6ELKmLJBplXzT/Jqs5jGZehuG22EdSMaTwgjMpxMDI1YtlKEhiWPWkrz5LUsd0aOO0ZRc9vn3AQ==}
engines: {node: '>=14'}
peerDependencies:
'@opentelemetry/api': ^1.3.0
- '@opentelemetry/instrumentation-redis-4@0.41.0':
- resolution: {integrity: sha512-H7IfGTqW2reLXqput4yzAe8YpDC0fmVNal95GHMLOrS89W+qWUKIqxolSh63hJyfmwPSFwXASzj7wpSk8Az+Dg==}
+ '@opentelemetry/instrumentation-lru-memoizer@0.40.0':
+ resolution: {integrity: sha512-21xRwZsEdMPnROu/QsaOIODmzw59IYpGFmuC4aFWvMj6stA8+Ei1tX67nkarJttlNjoM94um0N4X26AD7ff54A==}
engines: {node: '>=14'}
peerDependencies:
'@opentelemetry/api': ^1.3.0
- '@opentelemetry/instrumentation@0.46.0':
- resolution: {integrity: sha512-a9TijXZZbk0vI5TGLZl+0kxyFfrXHhX6Svtz7Pp2/VBlCSKrazuULEyoJQrOknJyFWNMEmbbJgOciHCCpQcisw==}
+ '@opentelemetry/instrumentation-mongodb@0.48.0':
+ resolution: {integrity: sha512-9YWvaGvrrcrydMsYGLu0w+RgmosLMKe3kv/UNlsPy8RLnCkN2z+bhhbjjjuxtUmvEuKZMCoXFluABVuBr1yhjw==}
engines: {node: '>=14'}
peerDependencies:
'@opentelemetry/api': ^1.3.0
- '@opentelemetry/instrumentation@0.52.1':
- resolution: {integrity: sha512-uXJbYU/5/MBHjMp1FqrILLRuiJCs3Ofk0MeRDk8g1S1gD47U8X3JnSwcMO1rtRo1x1a7zKaQHaoYu49p/4eSKw==}
+ '@opentelemetry/instrumentation-mongoose@0.42.0':
+ resolution: {integrity: sha512-AnWv+RaR86uG3qNEMwt3plKX1ueRM7AspfszJYVkvkehiicC3bHQA6vWdb6Zvy5HAE14RyFbu9+2hUUjR2NSyg==}
engines: {node: '>=14'}
peerDependencies:
'@opentelemetry/api': ^1.3.0
- '@opentelemetry/redis-common@0.36.2':
- resolution: {integrity: sha512-faYX1N0gpLhej/6nyp6bgRjzAKXn5GOEMYY7YhciSfCoITAktLUtQ36d24QEWNA1/WA1y6qQunCe0OhHRkVl9g==}
+ '@opentelemetry/instrumentation-mysql2@0.41.0':
+ resolution: {integrity: sha512-REQB0x+IzVTpoNgVmy5b+UnH1/mDByrneimP6sbDHkp1j8QOl1HyWOrBH/6YWR0nrbU3l825Em5PlybjT3232g==}
engines: {node: '>=14'}
+ peerDependencies:
+ '@opentelemetry/api': ^1.3.0
- '@opentelemetry/resources@1.24.1':
- resolution: {integrity: sha512-cyv0MwAaPF7O86x5hk3NNgenMObeejZFLJJDVuSeSMIsknlsj3oOZzRv3qSzlwYomXsICfBeFFlxwHQte5mGXQ==}
+ '@opentelemetry/instrumentation-mysql@0.41.0':
+ resolution: {integrity: sha512-jnvrV6BsQWyHS2qb2fkfbfSb1R/lmYwqEZITwufuRl37apTopswu9izc0b1CYRp/34tUG/4k/V39PND6eyiNvw==}
engines: {node: '>=14'}
peerDependencies:
- '@opentelemetry/api': '>=1.0.0 <1.9.0'
+ '@opentelemetry/api': ^1.3.0
- '@opentelemetry/resources@1.25.1':
- resolution: {integrity: sha512-pkZT+iFYIZsVn6+GzM0kSX+u3MSLCY9md+lIJOoKl/P+gJFfxJte/60Usdp8Ce4rOs8GduUpSPNe1ddGyDT1sQ==}
+ '@opentelemetry/instrumentation-nestjs-core@0.40.0':
+ resolution: {integrity: sha512-WF1hCUed07vKmf5BzEkL0wSPinqJgH7kGzOjjMAiTGacofNXjb/y4KQ8loj2sNsh5C/NN7s1zxQuCgbWbVTGKg==}
engines: {node: '>=14'}
peerDependencies:
- '@opentelemetry/api': '>=1.0.0 <1.10.0'
+ '@opentelemetry/api': ^1.3.0
- '@opentelemetry/sdk-metrics@1.24.1':
- resolution: {integrity: sha512-FrAqCbbGao9iKI+Mgh+OsC9+U2YMoXnlDHe06yH7dvavCKzE3S892dGtX54+WhSFVxHR/TMRVJiK/CV93GR0TQ==}
+ '@opentelemetry/instrumentation-pg@0.44.0':
+ resolution: {integrity: sha512-oTWVyzKqXud1BYEGX1loo2o4k4vaU1elr3vPO8NZolrBtFvQ34nx4HgUaexUDuEog00qQt+MLR5gws/p+JXMLQ==}
engines: {node: '>=14'}
peerDependencies:
- '@opentelemetry/api': '>=1.3.0 <1.9.0'
+ '@opentelemetry/api': ^1.3.0
- '@opentelemetry/sdk-trace-base@1.25.1':
- resolution: {integrity: sha512-C8k4hnEbc5FamuZQ92nTOp8X/diCY56XUTnMiv9UTuJitCzaNNHAVsdm5+HLCdI8SLQsLWIrG38tddMxLVoftw==}
+ '@opentelemetry/instrumentation-redis-4@0.42.0':
+ resolution: {integrity: sha512-NaD+t2JNcOzX/Qa7kMy68JbmoVIV37fT/fJYzLKu2Wwd+0NCxt+K2OOsOakA8GVg8lSpFdbx4V/suzZZ2Pvdjg==}
+ engines: {node: '>=14'}
+ peerDependencies:
+ '@opentelemetry/api': ^1.3.0
+
+ '@opentelemetry/instrumentation-tedious@0.15.0':
+ resolution: {integrity: sha512-Kb7yo8Zsq2TUwBbmwYgTAMPK0VbhoS8ikJ6Bup9KrDtCx2JC01nCb+M0VJWXt7tl0+5jARUbKWh5jRSoImxdCw==}
+ engines: {node: '>=14'}
+ peerDependencies:
+ '@opentelemetry/api': ^1.3.0
+
+ '@opentelemetry/instrumentation-undici@0.6.0':
+ resolution: {integrity: sha512-ABJBhm5OdhGmbh0S/fOTE4N69IZ00CsHC5ijMYfzbw3E5NwLgpQk5xsljaECrJ8wz1SfXbO03FiSuu5AyRAkvQ==}
+ engines: {node: '>=14'}
+ peerDependencies:
+ '@opentelemetry/api': ^1.7.0
+
+ '@opentelemetry/instrumentation@0.52.1':
+ resolution: {integrity: sha512-uXJbYU/5/MBHjMp1FqrILLRuiJCs3Ofk0MeRDk8g1S1gD47U8X3JnSwcMO1rtRo1x1a7zKaQHaoYu49p/4eSKw==}
+ engines: {node: '>=14'}
+ peerDependencies:
+ '@opentelemetry/api': ^1.3.0
+
+ '@opentelemetry/instrumentation@0.53.0':
+ resolution: {integrity: sha512-DMwg0hy4wzf7K73JJtl95m/e0boSoWhH07rfvHvYzQtBD3Bmv0Wc1x733vyZBqmFm8OjJD0/pfiUg1W3JjFX0A==}
+ engines: {node: '>=14'}
+ peerDependencies:
+ '@opentelemetry/api': ^1.3.0
+
+ '@opentelemetry/instrumentation@0.54.2':
+ resolution: {integrity: sha512-go6zpOVoZVztT9r1aPd79Fr3OWiD4N24bCPJsIKkBses8oyFo12F/Ew3UBTdIu6hsW4HC4MVEJygG6TEyJI/lg==}
+ engines: {node: '>=14'}
+ peerDependencies:
+ '@opentelemetry/api': ^1.3.0
+
+ '@opentelemetry/redis-common@0.36.2':
+ resolution: {integrity: sha512-faYX1N0gpLhej/6nyp6bgRjzAKXn5GOEMYY7YhciSfCoITAktLUtQ36d24QEWNA1/WA1y6qQunCe0OhHRkVl9g==}
+ engines: {node: '>=14'}
+
+ '@opentelemetry/resources@1.28.0':
+ resolution: {integrity: sha512-cIyXSVJjGeTICENN40YSvLDAq4Y2502hGK3iN7tfdynQLKWb3XWZQEkPc+eSx47kiy11YeFAlYkEfXwR1w8kfw==}
engines: {node: '>=14'}
peerDependencies:
'@opentelemetry/api': '>=1.0.0 <1.10.0'
- '@opentelemetry/semantic-conventions@1.24.1':
- resolution: {integrity: sha512-VkliWlS4/+GHLLW7J/rVBA00uXus1SWvwFvcUDxDwmFxYfg/2VI6ekwdXS28cjI8Qz2ky2BzG8OUHo+WeYIWqw==}
+ '@opentelemetry/sdk-trace-base@1.28.0':
+ resolution: {integrity: sha512-ceUVWuCpIao7Y5xE02Xs3nQi0tOGmMea17ecBdwtCvdo9ekmO+ijc9RFDgfifMl7XCBf41zne/1POM3LqSTZDA==}
engines: {node: '>=14'}
+ peerDependencies:
+ '@opentelemetry/api': '>=1.0.0 <1.10.0'
'@opentelemetry/semantic-conventions@1.25.1':
resolution: {integrity: sha512-ZDjMJJQRlyk8A1KZFCc+bCbsyrn1wTwdNt56F7twdfUfnHUZUq77/WfONCj8p72NZOyP7pNTdUWSTYC3GTbuuQ==}
engines: {node: '>=14'}
+ '@opentelemetry/semantic-conventions@1.27.0':
+ resolution: {integrity: sha512-sAay1RrB+ONOem0OZanAR1ZI/k7yDpnOQSQmTMuGImUQb2y8EbSaCJ94FQluM74xoU03vlb2d2U90hZluL6nQg==}
+ engines: {node: '>=14'}
+
+ '@opentelemetry/semantic-conventions@1.28.0':
+ resolution: {integrity: sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==}
+ engines: {node: '>=14'}
+
'@opentelemetry/sql-common@0.40.1':
resolution: {integrity: sha512-nSDlnHSqzC3pXn/wZEZVLuAuJ1MYMXPBwtv2qAbCa3847SaHItdE7SzUq/Jtb0KZmh1zfAbNi3AAMjztTT4Ugg==}
engines: {node: '>=14'}
@@ -3601,8 +3406,8 @@ packages:
resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==}
engines: {node: '>=14'}
- '@prisma/instrumentation@5.17.0':
- resolution: {integrity: sha512-c1Sle4ji8aasMcYfBBHFM56We4ljfenVtRmS8aY06BllS7SoU6SmJBwG7vil+GHiR0Yrh+t9iBwt4AY0Jr4KNQ==}
+ '@prisma/instrumentation@5.19.1':
+ resolution: {integrity: sha512-VLnzMQq7CWroL5AeaW0Py2huiNKeoMfCH3SUxstdzPrlWQi6UQ9UrfcbUkNHlVFqOMacqy8X/8YtE0kuKDpD9w==}
'@readme/better-ajv-errors@1.6.0':
resolution: {integrity: sha512-9gO9rld84Jgu13kcbKRU+WHseNhaVt76wYMeRDGsUGYxwJtI3RmEJ9LY9dZCYQGI8eUZLuxb5qDja0nqklpFjQ==}
@@ -3641,8 +3446,8 @@ packages:
rollup:
optional: true
- '@rollup/pluginutils@5.1.2':
- resolution: {integrity: sha512-/FIdS3PyZ39bjZlwqFnWqCOVnW7o963LtKMwQOD0NhQqw22gSr2YY1afu3FxRip4ZCZNsD5jq6Aaz6QV3D/Njw==}
+ '@rollup/pluginutils@5.1.3':
+ resolution: {integrity: sha512-Pnsb6f32CD2W3uCaLZIzDmeFyQ2b8UWMFI7xtwUezpcGBDVDW6y9XgAWIlARiGAo6eNF5FK5aQTr0LFyNyqq5A==}
engines: {node: '>=14.0.0'}
peerDependencies:
rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0
@@ -3650,83 +3455,93 @@ packages:
rollup:
optional: true
- '@rollup/rollup-android-arm-eabi@4.22.5':
- resolution: {integrity: sha512-SU5cvamg0Eyu/F+kLeMXS7GoahL+OoizlclVFX3l5Ql6yNlywJJ0OuqTzUx0v+aHhPHEB/56CT06GQrRrGNYww==}
+ '@rollup/rollup-android-arm-eabi@4.26.0':
+ resolution: {integrity: sha512-gJNwtPDGEaOEgejbaseY6xMFu+CPltsc8/T+diUTTbOQLqD+bnrJq9ulH6WD69TqwqWmrfRAtUv30cCFZlbGTQ==}
cpu: [arm]
os: [android]
- '@rollup/rollup-android-arm64@4.22.5':
- resolution: {integrity: sha512-S4pit5BP6E5R5C8S6tgU/drvgjtYW76FBuG6+ibG3tMvlD1h9LHVF9KmlmaUBQ8Obou7hEyS+0w+IR/VtxwNMQ==}
+ '@rollup/rollup-android-arm64@4.26.0':
+ resolution: {integrity: sha512-YJa5Gy8mEZgz5JquFruhJODMq3lTHWLm1fOy+HIANquLzfIOzE9RA5ie3JjCdVb9r46qfAQY/l947V0zfGJ0OQ==}
cpu: [arm64]
os: [android]
- '@rollup/rollup-darwin-arm64@4.22.5':
- resolution: {integrity: sha512-250ZGg4ipTL0TGvLlfACkIxS9+KLtIbn7BCZjsZj88zSg2Lvu3Xdw6dhAhfe/FjjXPVNCtcSp+WZjVsD3a/Zlw==}
+ '@rollup/rollup-darwin-arm64@4.26.0':
+ resolution: {integrity: sha512-ErTASs8YKbqTBoPLp/kA1B1Um5YSom8QAc4rKhg7b9tyyVqDBlQxy7Bf2wW7yIlPGPg2UODDQcbkTlruPzDosw==}
cpu: [arm64]
os: [darwin]
- '@rollup/rollup-darwin-x64@4.22.5':
- resolution: {integrity: sha512-D8brJEFg5D+QxFcW6jYANu+Rr9SlKtTenmsX5hOSzNYVrK5oLAEMTUgKWYJP+wdKyCdeSwnapLsn+OVRFycuQg==}
+ '@rollup/rollup-darwin-x64@4.26.0':
+ resolution: {integrity: sha512-wbgkYDHcdWW+NqP2mnf2NOuEbOLzDblalrOWcPyY6+BRbVhliavon15UploG7PpBRQ2bZJnbmh8o3yLoBvDIHA==}
cpu: [x64]
os: [darwin]
- '@rollup/rollup-linux-arm-gnueabihf@4.22.5':
- resolution: {integrity: sha512-PNqXYmdNFyWNg0ma5LdY8wP+eQfdvyaBAojAXgO7/gs0Q/6TQJVXAXe8gwW9URjbS0YAammur0fynYGiWsKlXw==}
+ '@rollup/rollup-freebsd-arm64@4.26.0':
+ resolution: {integrity: sha512-Y9vpjfp9CDkAG4q/uwuhZk96LP11fBz/bYdyg9oaHYhtGZp7NrbkQrj/66DYMMP2Yo/QPAsVHkV891KyO52fhg==}
+ cpu: [arm64]
+ os: [freebsd]
+
+ '@rollup/rollup-freebsd-x64@4.26.0':
+ resolution: {integrity: sha512-A/jvfCZ55EYPsqeaAt/yDAG4q5tt1ZboWMHEvKAH9Zl92DWvMIbnZe/f/eOXze65aJaaKbL+YeM0Hz4kLQvdwg==}
+ cpu: [x64]
+ os: [freebsd]
+
+ '@rollup/rollup-linux-arm-gnueabihf@4.26.0':
+ resolution: {integrity: sha512-paHF1bMXKDuizaMODm2bBTjRiHxESWiIyIdMugKeLnjuS1TCS54MF5+Y5Dx8Ui/1RBPVRE09i5OUlaLnv8OGnA==}
cpu: [arm]
os: [linux]
- '@rollup/rollup-linux-arm-musleabihf@4.22.5':
- resolution: {integrity: sha512-kSSCZOKz3HqlrEuwKd9TYv7vxPYD77vHSUvM2y0YaTGnFc8AdI5TTQRrM1yIp3tXCKrSL9A7JLoILjtad5t8pQ==}
+ '@rollup/rollup-linux-arm-musleabihf@4.26.0':
+ resolution: {integrity: sha512-cwxiHZU1GAs+TMxvgPfUDtVZjdBdTsQwVnNlzRXC5QzIJ6nhfB4I1ahKoe9yPmoaA/Vhf7m9dB1chGPpDRdGXg==}
cpu: [arm]
os: [linux]
- '@rollup/rollup-linux-arm64-gnu@4.22.5':
- resolution: {integrity: sha512-oTXQeJHRbOnwRnRffb6bmqmUugz0glXaPyspp4gbQOPVApdpRrY/j7KP3lr7M8kTfQTyrBUzFjj5EuHAhqH4/w==}
+ '@rollup/rollup-linux-arm64-gnu@4.26.0':
+ resolution: {integrity: sha512-4daeEUQutGRCW/9zEo8JtdAgtJ1q2g5oHaoQaZbMSKaIWKDQwQ3Yx0/3jJNmpzrsScIPtx/V+1AfibLisb3AMQ==}
cpu: [arm64]
os: [linux]
- '@rollup/rollup-linux-arm64-musl@4.22.5':
- resolution: {integrity: sha512-qnOTIIs6tIGFKCHdhYitgC2XQ2X25InIbZFor5wh+mALH84qnFHvc+vmWUpyX97B0hNvwNUL4B+MB8vJvH65Fw==}
+ '@rollup/rollup-linux-arm64-musl@4.26.0':
+ resolution: {integrity: sha512-eGkX7zzkNxvvS05ROzJ/cO/AKqNvR/7t1jA3VZDi2vRniLKwAWxUr85fH3NsvtxU5vnUUKFHKh8flIBdlo2b3Q==}
cpu: [arm64]
os: [linux]
- '@rollup/rollup-linux-powerpc64le-gnu@4.22.5':
- resolution: {integrity: sha512-TMYu+DUdNlgBXING13rHSfUc3Ky5nLPbWs4bFnT+R6Vu3OvXkTkixvvBKk8uO4MT5Ab6lC3U7x8S8El2q5o56w==}
+ '@rollup/rollup-linux-powerpc64le-gnu@4.26.0':
+ resolution: {integrity: sha512-Odp/lgHbW/mAqw/pU21goo5ruWsytP7/HCC/liOt0zcGG0llYWKrd10k9Fj0pdj3prQ63N5yQLCLiE7HTX+MYw==}
cpu: [ppc64]
os: [linux]
- '@rollup/rollup-linux-riscv64-gnu@4.22.5':
- resolution: {integrity: sha512-PTQq1Kz22ZRvuhr3uURH+U/Q/a0pbxJoICGSprNLAoBEkyD3Sh9qP5I0Asn0y0wejXQBbsVMRZRxlbGFD9OK4A==}
+ '@rollup/rollup-linux-riscv64-gnu@4.26.0':
+ resolution: {integrity: sha512-MBR2ZhCTzUgVD0OJdTzNeF4+zsVogIR1U/FsyuFerwcqjZGvg2nYe24SAHp8O5sN8ZkRVbHwlYeHqcSQ8tcYew==}
cpu: [riscv64]
os: [linux]
- '@rollup/rollup-linux-s390x-gnu@4.22.5':
- resolution: {integrity: sha512-bR5nCojtpuMss6TDEmf/jnBnzlo+6n1UhgwqUvRoe4VIotC7FG1IKkyJbwsT7JDsF2jxR+NTnuOwiGv0hLyDoQ==}
+ '@rollup/rollup-linux-s390x-gnu@4.26.0':
+ resolution: {integrity: sha512-YYcg8MkbN17fMbRMZuxwmxWqsmQufh3ZJFxFGoHjrE7bv0X+T6l3glcdzd7IKLiwhT+PZOJCblpnNlz1/C3kGQ==}
cpu: [s390x]
os: [linux]
- '@rollup/rollup-linux-x64-gnu@4.22.5':
- resolution: {integrity: sha512-N0jPPhHjGShcB9/XXZQWuWBKZQnC1F36Ce3sDqWpujsGjDz/CQtOL9LgTrJ+rJC8MJeesMWrMWVLKKNR/tMOCA==}
+ '@rollup/rollup-linux-x64-gnu@4.26.0':
+ resolution: {integrity: sha512-ZuwpfjCwjPkAOxpjAEjabg6LRSfL7cAJb6gSQGZYjGhadlzKKywDkCUnJ+KEfrNY1jH5EEoSIKLCb572jSiglA==}
cpu: [x64]
os: [linux]
- '@rollup/rollup-linux-x64-musl@4.22.5':
- resolution: {integrity: sha512-uBa2e28ohzNNwjr6Uxm4XyaA1M/8aTgfF2T7UIlElLaeXkgpmIJ2EitVNQxjO9xLLLy60YqAgKn/AqSpCUkE9g==}
+ '@rollup/rollup-linux-x64-musl@4.26.0':
+ resolution: {integrity: sha512-+HJD2lFS86qkeF8kNu0kALtifMpPCZU80HvwztIKnYwym3KnA1os6nsX4BGSTLtS2QVAGG1P3guRgsYyMA0Yhg==}
cpu: [x64]
os: [linux]
- '@rollup/rollup-win32-arm64-msvc@4.22.5':
- resolution: {integrity: sha512-RXT8S1HP8AFN/Kr3tg4fuYrNxZ/pZf1HemC5Tsddc6HzgGnJm0+Lh5rAHJkDuW3StI0ynNXukidROMXYl6ew8w==}
+ '@rollup/rollup-win32-arm64-msvc@4.26.0':
+ resolution: {integrity: sha512-WUQzVFWPSw2uJzX4j6YEbMAiLbs0BUysgysh8s817doAYhR5ybqTI1wtKARQKo6cGop3pHnrUJPFCsXdoFaimQ==}
cpu: [arm64]
os: [win32]
- '@rollup/rollup-win32-ia32-msvc@4.22.5':
- resolution: {integrity: sha512-ElTYOh50InL8kzyUD6XsnPit7jYCKrphmddKAe1/Ytt74apOxDq5YEcbsiKs0fR3vff3jEneMM+3I7jbqaMyBg==}
+ '@rollup/rollup-win32-ia32-msvc@4.26.0':
+ resolution: {integrity: sha512-D4CxkazFKBfN1akAIY6ieyOqzoOoBV1OICxgUblWxff/pSjCA2khXlASUx7mK6W1oP4McqhgcCsu6QaLj3WMWg==}
cpu: [ia32]
os: [win32]
- '@rollup/rollup-win32-x64-msvc@4.22.5':
- resolution: {integrity: sha512-+lvL/4mQxSV8MukpkKyyvfwhH266COcWlXE/1qxwN08ajovta3459zrjLghYMgDerlzNwLAcFpvU+WWE5y6nAQ==}
+ '@rollup/rollup-win32-x64-msvc@4.26.0':
+ resolution: {integrity: sha512-2x8MO1rm4PGEP0xWbubJW5RtbNLk3puzAMaLQd3B3JHVw4KcHlmXcO+Wewx9zCoo7EUFiMlu/aZbCJ7VjMzAag==}
cpu: [x64]
os: [win32]
@@ -3752,54 +3567,54 @@ packages:
'@types/node':
optional: true
- '@rushstack/ts-command-line@4.22.8':
- resolution: {integrity: sha512-XbFjOoV7qZHJnSuFUHv0pKaFA4ixyCuki+xMjsMfDwfvQjs5MYG0IK5COal3tRnG7KCDe2l/G+9LrzYE/RJhgg==}
+ '@rushstack/ts-command-line@4.23.0':
+ resolution: {integrity: sha512-jYREBtsxduPV6ptNq8jOKp9+yx0ld1Tb/Tkdnlj8gTjazl1sF3DwX2VbluyYrNd0meWIL0bNeer7WDf5tKFjaQ==}
'@sec-ant/readable-stream@0.4.1':
resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==}
- '@sentry/core@8.20.0':
- resolution: {integrity: sha512-R81snuw+67VT4aCxr6ShST/s0Y6FlwN2YczhDwaGyzumn5rlvA6A4JtQDeExduNoDDyv4T3LrmW8wlYZn3CJJw==}
+ '@sentry/core@8.38.0':
+ resolution: {integrity: sha512-sGD+5TEHU9G7X7zpyaoJxpOtwjTjvOd1f/MKBrWW2vf9UbYK+GUJrOzLhMoSWp/pHSYgvObkJkDb/HwieQjvhQ==}
engines: {node: '>=14.18'}
- '@sentry/node@8.20.0':
- resolution: {integrity: sha512-i4ywT2m0Gw65U3uwI4NwiNcyqp9YF6/RsusfH1pg4YkiL/RYp7FS0MPVgMggfvoue9S3KjCgRVlzTLwFATyPXQ==}
+ '@sentry/node@8.38.0':
+ resolution: {integrity: sha512-nwW0XqZFQseXYn0i6i6nKPkbjgHMBEFSF9TnK6mHHqJHHObHIZ6qu5CfvGKgxATia8JPIg9NN8XcyYOnQMi07w==}
engines: {node: '>=14.18'}
- '@sentry/opentelemetry@8.20.0':
- resolution: {integrity: sha512-NFcLK6+t9wUc4HlGKeuDn6W4KjZxZfZmWlrK2/tgC5KzG1cnVeOnWUrJzGHTa+YDDdIijpjiFUcpXGPkX3rmIg==}
+ '@sentry/opentelemetry@8.38.0':
+ resolution: {integrity: sha512-AfjmIf/v7+x2WplhkX66LyGKvrzzPeSgff9uJ0cFCC2s0yd1qA2VPuIwEyr5i/FOJOP5bvFr8tu/hz3LA4+F5Q==}
engines: {node: '>=14.18'}
peerDependencies:
'@opentelemetry/api': ^1.9.0
'@opentelemetry/core': ^1.25.1
- '@opentelemetry/instrumentation': ^0.52.1
- '@opentelemetry/sdk-trace-base': ^1.25.1
- '@opentelemetry/semantic-conventions': ^1.25.1
+ '@opentelemetry/instrumentation': ^0.54.0
+ '@opentelemetry/sdk-trace-base': ^1.26.0
+ '@opentelemetry/semantic-conventions': ^1.27.0
- '@sentry/profiling-node@8.20.0':
- resolution: {integrity: sha512-vQaMYjPM7o0qvmj4atxXZywIDhnxMwTlc6x24eKqT8zN0OFBuIc1nYIacT7pEmd7R6e/mXdiG04GH1Vg0bHfOQ==}
+ '@sentry/profiling-node@8.38.0':
+ resolution: {integrity: sha512-7I+hANLQRUAciRLzz4nUehEUHYeMNKkMfu6KkBuLcD1F3x7Y/tcxyHlHl+bNKf6tyUdW7IKGb+7Pk/WKMBnZrg==}
engines: {node: '>=14.18'}
hasBin: true
- '@sentry/types@8.20.0':
- resolution: {integrity: sha512-6IP278KojOpiAA7vrd1hjhUyn26cl0n0nGsShzic5ztCVs92sTeVRnh7MTB9irDVtAbOEyt/YH6go3h+Jia1pA==}
+ '@sentry/types@8.38.0':
+ resolution: {integrity: sha512-fP5H9ZX01W4Z/EYctk3mkSHi7d06cLcX2/UWqwdWbyPWI+pL2QpUPICeO/C+8SnmYx//wFj3qWDhyPCh1PdFAA==}
engines: {node: '>=14.18'}
- '@sentry/utils@8.20.0':
- resolution: {integrity: sha512-+1I5H8dojURiEUGPliDwheQk8dhjp8uV1sMccR/W/zjFrt4wZyPs+Ttp/V7gzm9LDJoNek9tmELert/jQqWTgg==}
+ '@sentry/utils@8.38.0':
+ resolution: {integrity: sha512-3X7MgIKIx+2q5Al7QkhaRB4wV6DvzYsaeIwdqKUzGLuRjXmNgJrLoU87TAwQRmZ6Wr3IoEpThZZMNrzYPXxArw==}
engines: {node: '>=14.18'}
- '@shikijs/core@1.21.0':
- resolution: {integrity: sha512-zAPMJdiGuqXpZQ+pWNezQAk5xhzRXBNiECFPcJLtUdsFM3f//G95Z15EHTnHchYycU8kIIysqGgxp8OVSj1SPQ==}
+ '@shikijs/core@1.22.2':
+ resolution: {integrity: sha512-bvIQcd8BEeR1yFvOYv6HDiyta2FFVePbzeowf5pPS1avczrPK+cjmaxxh0nx5QzbON7+Sv0sQfQVciO7bN72sg==}
- '@shikijs/engine-javascript@1.21.0':
- resolution: {integrity: sha512-jxQHNtVP17edFW4/0vICqAVLDAxmyV31MQJL4U/Kg+heQALeKYVOWo0sMmEZ18FqBt+9UCdyqGKYE7bLRtk9mg==}
+ '@shikijs/engine-javascript@1.22.2':
+ resolution: {integrity: sha512-iOvql09ql6m+3d1vtvP8fLCVCK7BQD1pJFmHIECsujB0V32BJ0Ab6hxk1ewVSMFA58FI0pR2Had9BKZdyQrxTw==}
- '@shikijs/engine-oniguruma@1.21.0':
- resolution: {integrity: sha512-AIZ76XocENCrtYzVU7S4GY/HL+tgHGbVU+qhiDyNw1qgCA5OSi4B4+HY4BtAoJSMGuD/L5hfTzoRVbzEm2WTvg==}
+ '@shikijs/engine-oniguruma@1.22.2':
+ resolution: {integrity: sha512-GIZPAGzQOy56mGvWMoZRPggn0dTlBf1gutV5TdceLCZlFNqWmuc7u+CzD0Gd9vQUTgLbrt0KLzz6FNprqYAxlA==}
- '@shikijs/types@1.21.0':
- resolution: {integrity: sha512-tzndANDhi5DUndBtpojEq/42+dpUF2wS7wdCDQaFtIXm3Rd1QkrcVgSSRLOvEwexekihOXfbYJINW37g96tJRw==}
+ '@shikijs/types@1.22.2':
+ resolution: {integrity: sha512-NCWDa6LGZqTuzjsGfXOBWfjS/fDIbDdmVDug+7ykVe1IKT4c1gakrvlfFYp5NhAXH/lyqLM8wsAPo5wNy73Feg==}
'@shikijs/vscode-textmate@9.3.0':
resolution: {integrity: sha512-jn7/7ky30idSkd/O5yDBfAnVt+JJpepofP/POZ1iMOxK59cOfqIgg/Dj0eFsjOTMw+4ycJN0uhZH/Eb0bs/EUA==}
@@ -3823,6 +3638,9 @@ packages:
'@simplewebauthn/types@10.0.0':
resolution: {integrity: sha512-SFXke7xkgPRowY2E+8djKbdEznTVnD5R6GO7GPTthpHrokLvNKw8C3lFZypTxLI7KkCfGPfhtqB3d7OVGGa9jQ==}
+ '@simplewebauthn/types@11.0.0':
+ resolution: {integrity: sha512-b2o0wC5u2rWts31dTgBkAtSNKGX0cvL6h8QedNsKmj8O4QoLFQFR3DBVBUlpyVEhYKA+mXGUaXbcOc4JdQ3HzA==}
+
'@sinclair/typebox@0.27.8':
resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==}
@@ -3834,12 +3652,8 @@ packages:
resolution: {integrity: sha512-CX6t4SYQ37lzxicAqsBtxA3OseeoVrh9cSJ5PFYam0GksYlupRfy1A+Q4aYD3zvcfECLc0zO2u+ZnR2UYKvCrw==}
engines: {node: '>=14.16'}
- '@sindresorhus/is@7.0.0':
- resolution: {integrity: sha512-WDTlVTyvFivSOuyvMeedzg2hdoBLZ3f1uNVuEida2Rl9BrfjrIRjWA/VZIrMRLvSwJYCAlCRA3usDt1THytxWQ==}
- engines: {node: '>=18'}
-
- '@sindresorhus/merge-streams@4.0.0':
- resolution: {integrity: sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==}
+ '@sindresorhus/is@7.0.1':
+ resolution: {integrity: sha512-QWLl2P+rsCJeofkDNIT3WFmb6NrRud1SUYW8dIhXK/46XFV8Q/g7Bsvib0Askb0reRLe+WYPeeE+l5cH7SlkuQ==}
engines: {node: '>=18'}
'@sinonjs/commons@2.0.0':
@@ -4090,125 +3904,120 @@ packages:
'@sqltools/formatter@1.2.5':
resolution: {integrity: sha512-Uy0+khmZqUrUGm5dmMqVlnvufZRSK0FbYzVgp0UMstm+F5+W2/jnEEQyc9vo1ZR/E5ZI/B1WjjoTqBqwJL6Krw==}
- '@storybook/addon-actions@8.3.4':
- resolution: {integrity: sha512-1y0yD3upKcyzNwwA6loAGW2cRDqExwl4oAT7GJQA4tmabI+fNwmANSgU/ezLvvSUf4Qo0eJHg2Zcn8y+Apq2eA==}
+ '@storybook/addon-actions@8.4.4':
+ resolution: {integrity: sha512-+Dd6alcieS6UN7IKhXLuhyQYQMu9HG/Tdr790a4EOQKpJM1NxIMuPuUH3fAoKfa9VhtI1BxTBr7zNtzg9Akqhg==}
peerDependencies:
- storybook: ^8.3.4
+ storybook: ^8.4.4
- '@storybook/addon-backgrounds@8.3.4':
- resolution: {integrity: sha512-o3nl7cN3x8erJNxLEv8YptanEQAnbqnaseOAsvSC6/nnSAcRYBSs3BvekKvo4CcpS2mxn7F5NJTBFYnCXzy8EA==}
+ '@storybook/addon-backgrounds@8.4.4':
+ resolution: {integrity: sha512-asaGD4ruIPFthyhpByQSJagvtNN7EGKdHj5yMnsMvkSXnN0r1uVkI2/Z37hmLt02Qbzf6OQiBPW5TDL+X+EEBg==}
peerDependencies:
- storybook: ^8.3.4
+ storybook: ^8.4.4
- '@storybook/addon-controls@8.3.4':
- resolution: {integrity: sha512-qQcaK6dczsb6wXkzGZKOjUYNA7FfKBewRv6NvoVKYY6LfhllGOkmUAtYpdtQG8adsZWTSoZaAOJS2vP2uM67lw==}
+ '@storybook/addon-controls@8.4.4':
+ resolution: {integrity: sha512-FbZRbwJQggLz6M3zB6scCp1SDGwQ5zdiD6sjBilZzgGO5rBFqG0A8PoOyr4iPrLU2y/NZBdRrJBD+6MkaJ+yzw==}
peerDependencies:
- storybook: ^8.3.4
+ storybook: ^8.4.4
- '@storybook/addon-docs@8.3.4':
- resolution: {integrity: sha512-TWauhqF/gJgfwPuWeM6KM3LwC+ErCOM+K2z16w3vgao9s67sij8lnrdAoQ0hjA+kw2/KAdCakFS6FyciG81qog==}
+ '@storybook/addon-docs@8.4.4':
+ resolution: {integrity: sha512-wuHaStfpd2rkAN5Lf0qmvE3JKTHTEDbnAMTvfs9inzGBL0iAwBLjW48/ll7lLkJ2E3k/FQtaevNpuc7C52u1Bw==}
peerDependencies:
- storybook: ^8.3.4
+ storybook: ^8.4.4
- '@storybook/addon-essentials@8.3.4':
- resolution: {integrity: sha512-C3+3hpmSn/8zdx5sXEP0eE6zMzxgRosHVZYfe9nBcMiEDp6UKVUyHVetWxEULOEgN46ysjcpllZ0bUkRYxi2IQ==}
+ '@storybook/addon-essentials@8.4.4':
+ resolution: {integrity: sha512-0ObUQ98zZkeWqP2k3Un5jny3WxT3THgUKZUGD+mR8eq6CuTmJ3bUXWzDHreuDxQwgr8s5f04XD8IcRvjZ9IRgA==}
peerDependencies:
- storybook: ^8.3.4
+ storybook: ^8.4.4
- '@storybook/addon-highlight@8.3.4':
- resolution: {integrity: sha512-rxZTeuZyZ7RnU+xmRhS01COFLbGnVEmlUNxBw8ArsrTEZKW5PbKpIxNLTj9F0zdH8H0MfryJGP+Aadcm0oHWlw==}
+ '@storybook/addon-highlight@8.4.4':
+ resolution: {integrity: sha512-k7EUxiMe8RCasmgfa6ZKx7UG6kU9RooTYGwqY5TG5xAQOzDwKn4qom+OYkT/9/6lORhJrUe2GgQLCrq/WGpS1A==}
peerDependencies:
- storybook: ^8.3.4
+ storybook: ^8.4.4
- '@storybook/addon-interactions@8.3.4':
- resolution: {integrity: sha512-ORxqe35wUmF7EDHo45mdDHiju3Ryk2pZ1vO9PyvW6ZItNlHt/IxAr7T/TysGejZ/eTBg6tMZR3ExGky3lTg/CQ==}
+ '@storybook/addon-interactions@8.4.4':
+ resolution: {integrity: sha512-izqcc6tY0BiKW7DYrEnoXUEH9FYDPWNfQnqqE0nVBv3BS2DoNmm8M9SB8fZx7pPfw53cMJBGt3vrlY0Wtxy1+Q==}
peerDependencies:
- storybook: ^8.3.4
+ storybook: ^8.4.4
- '@storybook/addon-links@8.3.4':
- resolution: {integrity: sha512-R1DjARmxRIKJDGIG6uxmQ1yFNyoQbb+QIPUFjgWCak8+AdLJbC7W+Esvo9F5hQfh6czyy0piiM3qj5hpQJVh3A==}
+ '@storybook/addon-links@8.4.4':
+ resolution: {integrity: sha512-hqTv06fPq9k5GUZD8JR49ANw5sBg8EYAsuCNoSd9OwVSBO/3y53HrMA0NCILUK8hnupPvtBuKXXoHmHes9R+1g==}
peerDependencies:
react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta
- storybook: ^8.3.4
+ storybook: ^8.4.4
peerDependenciesMeta:
react:
optional: true
- '@storybook/addon-mdx-gfm@8.3.4':
- resolution: {integrity: sha512-O0sMP7VFo1fKsdViY+W6OMNYEXvB5FzEEsqgsydMcsJ0qOKR1li2l3cLCMLXdUKVZ+2uRbEhnm2RnB9RWF5O7g==}
+ '@storybook/addon-mdx-gfm@8.4.4':
+ resolution: {integrity: sha512-dj98NGWowhSwWYn2LUaLMxHNvBY+73n9CFsELrttg24nOxmeRfku0uh2hp5epMmRMX3Fej7nCkKNJaU1fihZ+Q==}
peerDependencies:
- storybook: ^8.3.4
+ storybook: ^8.4.4
- '@storybook/addon-measure@8.3.4':
- resolution: {integrity: sha512-IJ6WKEbqmG+r7sukFjo+bVmPB2Zry04sylGx/OGyOh7zIhhqAqpwOwMHP0uQrc3tLNnUM6qB/o83UyYX79ql+A==}
+ '@storybook/addon-measure@8.4.4':
+ resolution: {integrity: sha512-KsjrwrXwrI+z7hKKfjyY1w1b0gLSLZmp15vIRJMELybWV0+4bZFLJGwMBOQFx+aWBED8yZrRV9OjTmoczawsZg==}
peerDependencies:
- storybook: ^8.3.4
+ storybook: ^8.4.4
- '@storybook/addon-outline@8.3.4':
- resolution: {integrity: sha512-kRRJTTLKM8gMfeh/e83djN5XLlc0hFtr9zKWxuZxaXt9Hmr+9tH/PRFtVK/S4SgqnBDoXk49Wgv6raiwj5/e3A==}
+ '@storybook/addon-outline@8.4.4':
+ resolution: {integrity: sha512-CVS1dm6BNUWKGrJj9E1ThBp5Khe6Yw+Hhz6OFxrPZfoTr6RstwoTmvSpKjDUCn8zj6ujoORdiQUh1FsHOxAPBg==}
peerDependencies:
- storybook: ^8.3.4
+ storybook: ^8.4.4
- '@storybook/addon-storysource@8.3.4':
- resolution: {integrity: sha512-uHTUiK7dzWRZAKpPafBH3U5PWAP7+J97lg66HDKAHpmmQdy7v3HfXaYNX1FoI+PeC5piUxFETXM0z+BNvJCknA==}
+ '@storybook/addon-storysource@8.4.4':
+ resolution: {integrity: sha512-BuMQMQvYqiaosbGkUxDPU2nfZtI2E/zxpNaubpUAH2j+bx4zdXRXyW1P71wj5GZC84bszoyXhdd++9A0knmaYA==}
peerDependencies:
- storybook: ^8.3.4
+ storybook: ^8.4.4
- '@storybook/addon-toolbars@8.3.4':
- resolution: {integrity: sha512-Km1YciVIxqluDbd1xmHjANNFyMonEOtnA6e4MrnBnC9XkPXSigeFlj0JvxyI/zjBsLBoFRmQiwq55W6l3hQ9sA==}
+ '@storybook/addon-toolbars@8.4.4':
+ resolution: {integrity: sha512-ENPshJMDpfzOJ4Tgm1hSzQoaEmgDxCtP6C8LKk4MOd3X92MJ7p6kfb3y3R1BLg4E/g90qp6lKPFdcohS2tKCgQ==}
peerDependencies:
- storybook: ^8.3.4
+ storybook: ^8.4.4
- '@storybook/addon-viewport@8.3.4':
- resolution: {integrity: sha512-fU4LdXSSqIOLbCEh2leq/tZUYlFliXZBWr/+igQHdUoU7HY8RIImXqVUaR9wlCaTb48WezAWT60vJtwNijyIiQ==}
+ '@storybook/addon-viewport@8.4.4':
+ resolution: {integrity: sha512-SRHJlLhf3tu7+sYNfVIYTeMegn6aiv4HGX97ZLvL76NWWBU8BntQ1LKMki7475mWiZNUFMoYYPsHlG+HU9FAtg==}
peerDependencies:
- storybook: ^8.3.4
+ storybook: ^8.4.4
- '@storybook/blocks@8.3.4':
- resolution: {integrity: sha512-1g4aCrd5CcN+pVhF2ATu9ZRVvAIgBMb2yF9KkCuTpdvqKDuDNK3sGb0CxjS7jp3LOvyjJr9laTOQsz8v8MQc5A==}
+ '@storybook/blocks@8.4.4':
+ resolution: {integrity: sha512-LwM3guL7uWpYR1a/SY0KZjCUskTKEaS22eF7GK8iXAV5BY4KpKr6ArW4O9orK29KtFwKhDZQLcMcECsOJBVk/A==}
peerDependencies:
react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta
react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta
- storybook: ^8.3.4
+ storybook: ^8.4.4
peerDependenciesMeta:
react:
optional: true
react-dom:
optional: true
- '@storybook/builder-vite@8.3.4':
- resolution: {integrity: sha512-Sa6SZ7LeHpkrnuvua8P8MR8e8a+MPKbyMmr9TqCCy8Ud/t4AM4kHY3JpJGtrgeK9l43fBnBwfdZYoRl5J6oWeA==}
+ '@storybook/builder-vite@8.4.4':
+ resolution: {integrity: sha512-UfPzE0p2xvBK7sA853N3VN+Plfw6/DIVppwbgsaRdzie52QXZQrl60u0igD47DHi6+xbqCBWDz7up4h3k00Z5A==}
peerDependencies:
- '@preact/preset-vite': '*'
- storybook: ^8.3.4
- typescript: '>= 4.3.x'
+ storybook: ^8.4.4
vite: ^4.0.0 || ^5.0.0
- vite-plugin-glimmerx: '*'
- peerDependenciesMeta:
- '@preact/preset-vite':
- optional: true
- typescript:
- optional: true
- vite-plugin-glimmerx:
- optional: true
- '@storybook/components@8.3.4':
- resolution: {integrity: sha512-iQzLJd87uGbFBbYNqlrN/ABrnx3dUrL0tjPCarzglzshZoPCNOsllJeJx5TJwB9kCxSZ8zB9TTOgr7NXl+oyVA==}
+ '@storybook/components@8.4.4':
+ resolution: {integrity: sha512-0BSZVmsk23C0BSRKx3liZSVQFXtoF86XQFdNQxjrXIwdHIEN7TcL3DwcxeVUU5ilGp7HeDgAydGNIPGgTeEe6g==}
peerDependencies:
- storybook: ^8.3.4
+ storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0
- '@storybook/core-events@8.3.4':
- resolution: {integrity: sha512-3/5oJN2UnlmUILXCh7SXMTa2MYZOvrjeZCm3wFomoQASU2FFzS5AxBYYnwNdtrZmn4w32uw4T7qvA0+96Utwsg==}
+ '@storybook/core-events@8.4.4':
+ resolution: {integrity: sha512-pkwr0UU95WSJtn9Q7q5ip0x8WxerLf5z4CWonvymGu9Z0bZyMXeA+GOEt/YQIJgqI4fbTK8Jqi+suC6ibUu9oQ==}
peerDependencies:
- storybook: ^8.3.4
+ storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0
- '@storybook/core@8.3.4':
- resolution: {integrity: sha512-4PZB91JJpuKfcjeOR2LXj3ABaPLLSd2P/SfYOKNCygrDstsQa/yay3/yN5Z9yi1cIG84KRr6/sUW+0x8HsGLPg==}
+ '@storybook/core@8.4.4':
+ resolution: {integrity: sha512-WjTmJpsHsFCd7tQ/8jFpDWjhntauXcWYYTcEZk56Pq4miyNrrXhV0S80Gxv3Uvzk0jocgtT2AKf8rQuH2UkQEg==}
+ peerDependencies:
+ prettier: ^2 || ^3
+ peerDependenciesMeta:
+ prettier:
+ optional: true
- '@storybook/csf-plugin@8.3.4':
- resolution: {integrity: sha512-ZMFWYxeTN4GxCn8dyIH4roECyLDy29yv/QKM+pHM3AC5Ny2HWI35SohWao4fGBAFxPQFbR5hPN8xa6ofHPSSTg==}
+ '@storybook/csf-plugin@8.4.4':
+ resolution: {integrity: sha512-4+6SUhp5sEJN9BY5RuxcFKvJbOqCzIUp9oHSSz36hkP07a4QH+SwxfEd0U7JRfmPpB63L+izywTzWhdADiAMOQ==}
peerDependencies:
- storybook: ^8.3.4
+ storybook: ^8.4.4
'@storybook/csf@0.1.11':
resolution: {integrity: sha512-dHYFQH3mA+EtnCkHXzicbLgsvzYjcDJ1JWsogbItZogkPHgSJM/Wr71uMkcvw8v9mmCyP4NpXJuu6bPoVsOnzg==}
@@ -4223,45 +4032,45 @@ packages:
react: ^16.8.0 || ^17.0.0 || ^18.0.0
react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0
- '@storybook/instrumenter@8.3.4':
- resolution: {integrity: sha512-jVhfNOPekOyJmta0BTkQl9Z6rgRbFHlc0eV4z1oSrzaawSlc9TFzAeDCtCP57vg3FuBX8ydDYAvyZ7s4xPpLyg==}
+ '@storybook/instrumenter@8.4.4':
+ resolution: {integrity: sha512-mq/YVEZrB8jyyio2Of01rQixsQ72z8ssAhJS9ldIlK+cvERQi0VBCpH3pejPmjOB40yiKBJHNqH4HIANVhibgw==}
peerDependencies:
- storybook: ^8.3.4
+ storybook: ^8.4.4
- '@storybook/manager-api@8.3.4':
- resolution: {integrity: sha512-tBx7MBfPUrKSlD666zmVjtIvoNArwCciZiW/UJ8IWmomrTJRfFBnVvPVM2gp1lkDIzRHYmz5x9BHbYaEDNcZWQ==}
+ '@storybook/manager-api@8.4.4':
+ resolution: {integrity: sha512-rmNPcbEyzakEHoaecUbhkW7WWOkyZ0z7ywH4d5/s0ZuQS57Px2N+ZLVgRJwYK+YNHiJYqDf1BTln9YJ/Mt1L6Q==}
peerDependencies:
- storybook: ^8.3.4
+ storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0
- '@storybook/preview-api@8.3.4':
- resolution: {integrity: sha512-/YKQ3QDVSHmtFXXCShf5w0XMlg8wkfTpdYxdGv1CKFV8DU24f3N7KWulAgeWWCWQwBzZClDa9kzxmroKlQqx3A==}
+ '@storybook/preview-api@8.4.4':
+ resolution: {integrity: sha512-iZrWQcjRBqBHFdDXVxGpw6mHBZMCMYqhWXdyJ0d1S2y3PwcfOjkcXlQ1UiAenFHlA6dKrcYw8luKUQTL9bKReA==}
peerDependencies:
- storybook: ^8.3.4
+ storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0
- '@storybook/react-dom-shim@8.3.4':
- resolution: {integrity: sha512-L4llDvjaAzqPx6h4ddZMh36wPr75PrI2S8bXy+flLqAeVRYnRt4WNKGuxqH0t0U6MwId9+vlCZ13JBfFuY7eQQ==}
+ '@storybook/react-dom-shim@8.4.4':
+ resolution: {integrity: sha512-kufv2FDK3kjADBo+/aKHsUn9T5E4p9IBAmCoIvXBGRDumPRds7Pt3MB4ODKlg+IumR7LMEq0jTJkn27ZRTuUmw==}
peerDependencies:
react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta
react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta
- storybook: ^8.3.4
+ storybook: ^8.4.4
- '@storybook/react-vite@8.3.4':
- resolution: {integrity: sha512-0Xm8eTH+jQ7SV4moLkPN4G6U2IDrqXPXUqsZdXaccepIMcD4G75foQFm2LOrFJuY+IMySPspKeTqf8OLskPppw==}
+ '@storybook/react-vite@8.4.4':
+ resolution: {integrity: sha512-NbTAY4R526hJ+gz7BFLS1HpGx3BikQDbq1BuEcaWsf/rJnygwlzeQmdPyfrfNC8R0ufIKRWUiPrPmMvrf8ZI6A==}
engines: {node: '>=18.0.0'}
peerDependencies:
react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta
react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta
- storybook: ^8.3.4
+ storybook: ^8.4.4
vite: ^4.0.0 || ^5.0.0
- '@storybook/react@8.3.4':
- resolution: {integrity: sha512-PA7iQL4/9X2/iLrv+AUPNtlhTHJWhDao9gQIT1Hef39FtFk+TU9lZGbv+g29R1H9V3cHP5162nG2aTu395kmbA==}
+ '@storybook/react@8.4.4':
+ resolution: {integrity: sha512-92lGnRcAI2qW6zH8GMBScyXmOS1ANI8ZuSP4ExQj+lGsCrAr7PBr0wuHy3wIn1YyAvQGPUn/mpYrmMz08c2HfA==}
engines: {node: '>=18.0.0'}
peerDependencies:
- '@storybook/test': 8.3.4
+ '@storybook/test': 8.4.4
react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta
react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta
- storybook: ^8.3.4
+ storybook: ^8.4.4
typescript: '>= 4.2.x'
peerDependenciesMeta:
'@storybook/test':
@@ -4269,38 +4078,38 @@ packages:
typescript:
optional: true
- '@storybook/source-loader@8.3.4':
- resolution: {integrity: sha512-wH//LuWfa2iOmjykSqsub8M8e0EdhEUZoHUFhwBeizfYQQHaMaSEBhhAQCaWWKmdGB9lnCe1cioQ32c2IWtBIw==}
+ '@storybook/source-loader@8.4.4':
+ resolution: {integrity: sha512-xaC23ljSEpHSMdp/VdqKd1o4Dr7x5lA2897RR6SKFRFDgkKD5Mp1UXsrcwqSZNSeXETTmVWXf8rHrz14VKkK6w==}
peerDependencies:
- storybook: ^8.3.4
+ storybook: ^8.4.4
- '@storybook/test@8.3.4':
- resolution: {integrity: sha512-HRiUenitln8QPHu6DEWUg9s9cEoiGN79lMykzXzw9shaUvdEIhWCsh82YKtmB3GJPj6qcc6dZL/Aio8srxyGAg==}
+ '@storybook/test@8.4.4':
+ resolution: {integrity: sha512-tmJd+lxl3MC0Xdu1KW/69V8tibv98OvdopxGqfVR0x5dkRHM3sFK/tv1ZJAUeronlvRyhGySOu1tHUrMjcNqyA==}
peerDependencies:
- storybook: ^8.3.4
+ storybook: ^8.4.4
- '@storybook/theming@8.3.4':
- resolution: {integrity: sha512-D4XVsQgTtpHEHLhwkx59aGy1GBwOedVr/mNns7hFrH8FjEpxrrWCuZQASq1ZpCl8LXlh7uvmT5sM2rOdQbGuGg==}
+ '@storybook/theming@8.4.4':
+ resolution: {integrity: sha512-iq4yt3Fx35ZV5owNC//E6G+QPV19xHHVN2Ugi3p7KOSFK3chuXX9mxZ1rfir+t+U30a5EPOEnlsY3/1LXn7aTw==}
peerDependencies:
- storybook: ^8.3.4
+ storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0
- '@storybook/types@8.3.4':
- resolution: {integrity: sha512-kIyb0g8C6EizI0Mv+l6L6yjCJe9/vW3UvgsZL5BXqs8THTAfs3/+A9Q9jDEMovSIVI3EgesO79+OCEazDUHmOA==}
+ '@storybook/types@8.4.4':
+ resolution: {integrity: sha512-NUeIhecJ+i2ul/u/ftV+f9gBT2cUOuLjgy1a+l0UbJd7n3wwN17vX2zrrDkrGG3dp3edr8bWMGjAN3WERJje1A==}
peerDependencies:
- storybook: ^8.3.4
+ storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0
- '@storybook/vue3-vite@8.3.4':
- resolution: {integrity: sha512-0H1tLbRd8i6L3EW8QC9bDlgPIUM5i6b7onvyyQhyIxODWRfigHi6UP9sjHfrljdvnlOtYlZT2A5QbpkugzwLjg==}
+ '@storybook/vue3-vite@8.4.4':
+ resolution: {integrity: sha512-cyhPX16KzOWuHZCcMXqJ+k11xOvelWXmML6pSvhV0OtizDHxgesCdbSa1X1P76ZszjOlt8MJfPiSaE+XNwB0UQ==}
engines: {node: '>=18.0.0'}
peerDependencies:
- storybook: ^8.3.4
+ storybook: ^8.4.4
vite: ^4.0.0 || ^5.0.0
- '@storybook/vue3@8.3.4':
- resolution: {integrity: sha512-NNQXwidr+QjLndORWtPjXv/obsNNfJhP5Xj6vUZslrDpdIyTL3NEM+ktLK2EMw/a3zUbJMnMkyMgoWvioCNHxQ==}
+ '@storybook/vue3@8.4.4':
+ resolution: {integrity: sha512-HVUtE8x4nIJeCO592VNyrACMgGA6ViarRS6Faw+MWdUQXnZlwkadGusx2T++hnaalAt9VJLF5NRIcV8O7dA6Ig==}
engines: {node: '>=18.0.0'}
peerDependencies:
- storybook: ^8.3.4
+ storybook: ^8.4.4
vue: ^3.0.0
'@swc/cli@0.3.12':
@@ -4326,14 +4135,8 @@ packages:
cpu: [arm64]
os: [darwin]
- '@swc/core-darwin-arm64@1.6.13':
- resolution: {integrity: sha512-SOF4buAis72K22BGJ3N8y88mLNfxLNprTuJUpzikyMGrvkuBFNcxYtMhmomO0XHsgLDzOJ+hWzcgjRNzjMsUcQ==}
- engines: {node: '>=10'}
- cpu: [arm64]
- os: [darwin]
-
- '@swc/core-darwin-arm64@1.6.6':
- resolution: {integrity: sha512-5DA8NUGECcbcK1YLKJwNDKqdtTYDVnkfDU1WvQSXq/rU+bjYCLtn5gCe8/yzL7ISXA6rwqPU1RDejhbNt4ARLQ==}
+ '@swc/core-darwin-arm64@1.9.2':
+ resolution: {integrity: sha512-nETmsCoY29krTF2PtspEgicb3tqw7Ci5sInTI03EU5zpqYbPjoPH99BVTjj0OsF53jP5MxwnLI5Hm21lUn1d6A==}
engines: {node: '>=10'}
cpu: [arm64]
os: [darwin]
@@ -4344,14 +4147,8 @@ packages:
cpu: [x64]
os: [darwin]
- '@swc/core-darwin-x64@1.6.13':
- resolution: {integrity: sha512-AW8akFSC+tmPE6YQQvK9S2A1B8pjnXEINg+gGgw0KRUUXunvu1/OEOeC5L2Co1wAwhD7bhnaefi06Qi9AiwOag==}
- engines: {node: '>=10'}
- cpu: [x64]
- os: [darwin]
-
- '@swc/core-darwin-x64@1.6.6':
- resolution: {integrity: sha512-2nbh/RHpweNRsJiYDFk1KcX7UtaKgzzTNUjwtvK5cp0wWrpbXmPvdlWOx3yzwoiSASDFx78242JHHXCIOlEdsw==}
+ '@swc/core-darwin-x64@1.9.2':
+ resolution: {integrity: sha512-9gD+bwBz8ZByjP6nZTXe/hzd0tySIAjpDHgkFiUrc+5zGF+rdTwhcNrzxNHJmy6mw+PW38jqII4uspFHUqqxuQ==}
engines: {node: '>=10'}
cpu: [x64]
os: [darwin]
@@ -4368,14 +4165,8 @@ packages:
cpu: [arm]
os: [linux]
- '@swc/core-linux-arm-gnueabihf@1.6.13':
- resolution: {integrity: sha512-f4gxxvDXVUm2HLYXRd311mSrmbpQF2MZ4Ja6XCQz1hWAxXdhRl1gpnZ+LH/xIfGSwQChrtLLVrkxdYUCVuIjFg==}
- engines: {node: '>=10'}
- cpu: [arm]
- os: [linux]
-
- '@swc/core-linux-arm-gnueabihf@1.6.6':
- resolution: {integrity: sha512-YgytuyUfR7b0z0SRHKV+ylr83HmgnROgeT7xryEkth6JGpAEHooCspQ4RrWTU8+WKJ7aXiZlGXPgybQ4TiS+TA==}
+ '@swc/core-linux-arm-gnueabihf@1.9.2':
+ resolution: {integrity: sha512-kYq8ief1Qrn+WmsTWAYo4r+Coul4dXN6cLFjiPZ29Cv5pyU+GFvSPAB4bEdMzwy99rCR0u2P10UExaeCjurjvg==}
engines: {node: '>=10'}
cpu: [arm]
os: [linux]
@@ -4386,14 +4177,8 @@ packages:
cpu: [arm64]
os: [linux]
- '@swc/core-linux-arm64-gnu@1.6.13':
- resolution: {integrity: sha512-Nf/eoW2CbG8s+9JoLtjl9FByBXyQ5cjdBsA4efO7Zw4p+YSuXDgc8HRPC+E2+ns0praDpKNZtLvDtmF2lL+2Gg==}
- engines: {node: '>=10'}
- cpu: [arm64]
- os: [linux]
-
- '@swc/core-linux-arm64-gnu@1.6.6':
- resolution: {integrity: sha512-yGwx9fddzEE0iURqRVwKBQ4IwRHE6hNhl15WliHpi/PcYhzmYkUIpcbRXjr0dssubXAVPVnx6+jZVDSbutvnfg==}
+ '@swc/core-linux-arm64-gnu@1.9.2':
+ resolution: {integrity: sha512-n0W4XiXlmEIVqxt+rD3ZpkogsEWUk1jJ+i5bQNgB+1JuWh0fBE8c/blDgTQXa0GB5lTPVDZQussgdNOCnAZwiA==}
engines: {node: '>=10'}
cpu: [arm64]
os: [linux]
@@ -4404,14 +4189,8 @@ packages:
cpu: [arm64]
os: [linux]
- '@swc/core-linux-arm64-musl@1.6.13':
- resolution: {integrity: sha512-2OysYSYtdw79prJYuKIiux/Gj0iaGEbpS2QZWCIY4X9sGoETJ5iMg+lY+YCrIxdkkNYd7OhIbXdYFyGs/w5LDg==}
- engines: {node: '>=10'}
- cpu: [arm64]
- os: [linux]
-
- '@swc/core-linux-arm64-musl@1.6.6':
- resolution: {integrity: sha512-a6fMbqzSAsS5KCxFJyg1mD5kwN3ZFO8qQLyJ75R/htZP/eCt05jrhmOI7h2n+1HjiG332jLnZ9S8lkVE5O8Nqw==}
+ '@swc/core-linux-arm64-musl@1.9.2':
+ resolution: {integrity: sha512-8xzrOmsyCC1zrx2Wzx/h8dVsdewO1oMCwBTLc1gSJ/YllZYTb04pNm6NsVbzUX2tKddJVRgSJXV10j/NECLwpA==}
engines: {node: '>=10'}
cpu: [arm64]
os: [linux]
@@ -4422,14 +4201,8 @@ packages:
cpu: [x64]
os: [linux]
- '@swc/core-linux-x64-gnu@1.6.13':
- resolution: {integrity: sha512-PkR4CZYJNk5hcd2+tMWBpnisnmYsUzazI1O5X7VkIGFcGePTqJ/bWlfUIVVExWxvAI33PQFzLbzmN5scyIUyGQ==}
- engines: {node: '>=10'}
- cpu: [x64]
- os: [linux]
-
- '@swc/core-linux-x64-gnu@1.6.6':
- resolution: {integrity: sha512-hRGsUKNzzZle28YF0dYIpN0bt9PceR9LaVBq7x8+l9TAaDLFbgksSxcnU/ubTtsy+WsYSYGn+A83w3xWC0O8CQ==}
+ '@swc/core-linux-x64-gnu@1.9.2':
+ resolution: {integrity: sha512-kZrNz/PjRQKcchWF6W292jk3K44EoVu1ad5w+zbS4jekIAxsM8WwQ1kd+yjUlN9jFcF8XBat5NKIs9WphJCVXg==}
engines: {node: '>=10'}
cpu: [x64]
os: [linux]
@@ -4440,14 +4213,8 @@ packages:
cpu: [x64]
os: [linux]
- '@swc/core-linux-x64-musl@1.6.13':
- resolution: {integrity: sha512-OdsY7wryTxCKwGQcwW9jwWg3cxaHBkTTHi91+5nm7hFPpmZMz1HivJrWAMwVE7iXFw+M4l6ugB/wCvpYrUAAjA==}
- engines: {node: '>=10'}
- cpu: [x64]
- os: [linux]
-
- '@swc/core-linux-x64-musl@1.6.6':
- resolution: {integrity: sha512-NokIUtFxJDVv3LzGeEtYMTV3j2dnGKLac59luTeq36DQLZdJQawQIdTbzzWl2jE7lxxTZme+dhsVOH9LxE3ceg==}
+ '@swc/core-linux-x64-musl@1.9.2':
+ resolution: {integrity: sha512-TTIpR4rjMkhX1lnFR+PSXpaL83TrQzp9znRdp2TzYrODlUd/R20zOwSo9vFLCyH6ZoD47bccY7QeGZDYT3nlRg==}
engines: {node: '>=10'}
cpu: [x64]
os: [linux]
@@ -4458,14 +4225,8 @@ packages:
cpu: [arm64]
os: [win32]
- '@swc/core-win32-arm64-msvc@1.6.13':
- resolution: {integrity: sha512-ap6uNmYjwk9M/+bFEuWRNl3hq4VqgQ/Lk+ID/F5WGqczNr0L7vEf+pOsRAn0F6EV+o/nyb3ePt8rLhE/wjHpPg==}
- engines: {node: '>=10'}
- cpu: [arm64]
- os: [win32]
-
- '@swc/core-win32-arm64-msvc@1.6.6':
- resolution: {integrity: sha512-lzYdI4qb4k1dFG26yv+9Jaq/bUMAhgs/2JsrLncGjLof86+uj74wKYCQnbzKAsq2hDtS5DqnHnl+//J+miZfGA==}
+ '@swc/core-win32-arm64-msvc@1.9.2':
+ resolution: {integrity: sha512-+Eg2d4icItKC0PMjZxH7cSYFLWk0aIp94LNmOw6tPq0e69ax6oh10upeq0D1fjWsKLmOJAWEvnXlayZcijEXDw==}
engines: {node: '>=10'}
cpu: [arm64]
os: [win32]
@@ -4476,14 +4237,8 @@ packages:
cpu: [ia32]
os: [win32]
- '@swc/core-win32-ia32-msvc@1.6.13':
- resolution: {integrity: sha512-IJ8KH4yIUHTnS/U1jwQmtbfQals7zWPG0a9hbEfIr4zI0yKzjd83lmtS09lm2Q24QBWOCFGEEbuZxR4tIlvfzA==}
- engines: {node: '>=10'}
- cpu: [ia32]
- os: [win32]
-
- '@swc/core-win32-ia32-msvc@1.6.6':
- resolution: {integrity: sha512-bvl7FMaXIJQ76WZU0ER4+RyfKIMGb6S2MgRkBhJOOp0i7VFx4WLOnrmMzaeoPJaJSkityVKAftfNh7NBzTIydQ==}
+ '@swc/core-win32-ia32-msvc@1.9.2':
+ resolution: {integrity: sha512-nLWBi4vZDdM/LkiQmPCakof8Dh1/t5EM7eudue04V1lIcqx9YHVRS3KMwEaCoHLGg0c312Wm4YgrWQd9vwZ5zQ==}
engines: {node: '>=10'}
cpu: [ia32]
os: [win32]
@@ -4494,29 +4249,14 @@ packages:
cpu: [x64]
os: [win32]
- '@swc/core-win32-x64-msvc@1.6.13':
- resolution: {integrity: sha512-f6/sx6LMuEnbuxtiSL/EkR0Y6qUHFw1XVrh6rwzKXptTipUdOY+nXpKoh+1UsBm/r7H0/5DtOdrn3q5ZHbFZjQ==}
- engines: {node: '>=10'}
- cpu: [x64]
- os: [win32]
-
- '@swc/core-win32-x64-msvc@1.6.6':
- resolution: {integrity: sha512-WAP0JoCTfgeYKgOeYJoJV4ZS0sQUmU3OwvXa2dYYtMLF7zsNqOiW4niU7QlThBHgUv/qNZm2p6ITEgh3w1cltw==}
+ '@swc/core-win32-x64-msvc@1.9.2':
+ resolution: {integrity: sha512-ik/k+JjRJBFkXARukdU82tSVx0CbExFQoQ78qTO682esbYXzjdB5eLVkoUbwen299pnfr88Kn4kyIqFPTje8Xw==}
engines: {node: '>=10'}
cpu: [x64]
os: [win32]
- '@swc/core@1.6.13':
- resolution: {integrity: sha512-eailUYex6fkfaQTev4Oa3mwn0/e3mQU4H8y1WPuImYQESOQDtVrowwUGDSc19evpBbHpKtwM+hw8nLlhIsF+Tw==}
- engines: {node: '>=10'}
- peerDependencies:
- '@swc/helpers': '*'
- peerDependenciesMeta:
- '@swc/helpers':
- optional: true
-
- '@swc/core@1.6.6':
- resolution: {integrity: sha512-sHfmIUPUXNrQTwFMVCY5V5Ena2GTOeaWjS2GFUpjLhAgVfP90OP67DWow7+cYrfFtqBdILHuWnjkTcd0+uPKlg==}
+ '@swc/core@1.9.2':
+ resolution: {integrity: sha512-dYyEkO6mRYtZFpnOsnYzv9rY69fHAHoawYOjGOEcxk9WYtaJhowMdP/w6NcOKnz2G7GlZaenjkzkMa6ZeQeMsg==}
engines: {node: '>=10'}
peerDependencies:
'@swc/helpers': '*'
@@ -4527,14 +4267,14 @@ packages:
'@swc/counter@0.1.3':
resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==}
- '@swc/jest@0.2.36':
- resolution: {integrity: sha512-8X80dp81ugxs4a11z1ka43FPhP+/e+mJNXJSxiNYk8gIX/jPBtY4gQTrKu/KIoco8bzKuPI5lUxjfLiGsfvnlw==}
+ '@swc/jest@0.2.37':
+ resolution: {integrity: sha512-CR2BHhmXKGxTiFr21DYPRHQunLkX3mNIFGFkxBGji6r9uyIR5zftTOVYj1e0sFNMV2H7mf/+vpaglqaryBtqfQ==}
engines: {npm: '>= 7.0.0'}
peerDependencies:
'@swc/core': '*'
- '@swc/types@0.1.9':
- resolution: {integrity: sha512-qKnCno++jzcJ4lM4NTfYifm1EFSCeIfKiAHAfkENZAV5Kl9PjJIyd2yeeVv6c/2CckuLyv2NmRC5pv6pm2WQBg==}
+ '@swc/types@0.1.17':
+ resolution: {integrity: sha512-V5gRru+aD8YVyCOMAjMpWR1Ui577DD5KSJsHP8RAxopAH22jFz6GZd/qxqjO6MJHQhcsjvjOFXyDhyLQUnMveQ==}
'@swc/wasm@1.2.130':
resolution: {integrity: sha512-rNcJsBxS70+pv8YUWwf5fRlWX6JoY/HJc25HD/F8m6Kv7XhJdqPPMhyX6TKkUBPAG7TWlZYoxa+rHAjPy4Cj3Q==}
@@ -4604,8 +4344,8 @@ packages:
'@types/accepts@1.3.7':
resolution: {integrity: sha512-Pay9fq2lM2wXPWbteBsRAGiWH2hig4ZE2asK+mm7kUzlxRTfL961rj89I6zV/E3PcIkDqyuBEcMxFT7rccugeQ==}
- '@types/archiver@6.0.2':
- resolution: {integrity: sha512-KmROQqbQzKGuaAbmK+ZcytkJ51+YqDa7NmbXjmtC5YBLSyQYo21YaUnQ3HbaPFKL1ooo6RQ6OPYPIDyxfpDDXw==}
+ '@types/archiver@6.0.3':
+ resolution: {integrity: sha512-a6wUll6k3zX6qs5KlxIggs1P1JcYJaTCx2gnlr+f0S1yd2DoaEwoIK10HmBaLnZwWneBz+JBm0dwcZu0zECBcQ==}
'@types/argparse@1.0.38':
resolution: {integrity: sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA==}
@@ -4670,15 +4410,9 @@ packages:
'@types/doctrine@0.0.9':
resolution: {integrity: sha512-eOIHzCUSH7SMfonMG1LsC2f8vxBFtho6NGBznK41R84YzPuvSBzrhEps33IsQiOW9+VL6NQ9DbjQJznk/S4uRA==}
- '@types/escodegen@0.0.6':
- resolution: {integrity: sha512-AjwI4MvWx3HAOaZqYsjKWyEObT9lcVV0Y0V8nXo6cXzN8ZiMxVhf6F3d/UNvXVGKrEzL/Dluc5p+y9GkzlTWig==}
-
'@types/eslint@7.29.0':
resolution: {integrity: sha512-VNcvioYDH8/FxaeTKkM4/TiTwt6pBV9E3OfGmvaw8tPl0rrHCJ4Ll15HRT+pMiFAf/MLQvAzC+6RzUMEL9Ceng==}
- '@types/estree@0.0.51':
- resolution: {integrity: sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==}
-
'@types/estree@1.0.6':
resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==}
@@ -4688,14 +4422,8 @@ packages:
'@types/express@4.17.17':
resolution: {integrity: sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q==}
- '@types/express@4.17.21':
- resolution: {integrity: sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==}
-
- '@types/find-cache-dir@3.2.1':
- resolution: {integrity: sha512-frsJrz2t/CeGifcu/6uRo4b+SzAwT4NYCVPu1GN8IB9XTzrpPkGuV0tmh9mN+/L0PklAlsC3u5Fxt0ju00LXIw==}
-
- '@types/fluent-ffmpeg@2.1.26':
- resolution: {integrity: sha512-0JVF3wdQG+pN0ImwWD0bNgJiKF2OHg/7CDBHw5UIbRTvlnkgGHK6V5doE54ltvhud4o31/dEiHm23CAlxFiUQg==}
+ '@types/fluent-ffmpeg@2.1.27':
+ resolution: {integrity: sha512-QiDWjihpUhriISNoBi2hJBRUUmoj/BMTYcfz+F+ZM9hHWBYABFAE6hjP/TbCZC0GWwlpa3FzvHH9RzFeRusZ7A==}
'@types/form-data@2.5.0':
resolution: {integrity: sha512-23/wYiuckYYtFpL+4RPWiWmRQH2BjFuqCUi2+N3amB1a1Drv+i/byTrGvlLwRVLFNAZbwpbQ7JvTK+VCAPMbcg==}
@@ -4731,8 +4459,8 @@ packages:
'@types/jest@29.5.12':
resolution: {integrity: sha512-eDC8bTvT/QhYdxJAulQikueigY5AsdBRH2yDKW3yveW7svY3+DzN84/2NUgkw10RTiJbWqZrTtoGVdYlvFJdLw==}
- '@types/jest@29.5.13':
- resolution: {integrity: sha512-wd+MVEZCHt23V0/L642O5APvspWply/rGY5BcW4SUETo2UzPU3Z26qr8jC2qxpimI2jjx9h7+2cj2FwIr01bXg==}
+ '@types/jest@29.5.14':
+ resolution: {integrity: sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ==}
'@types/js-yaml@4.0.9':
resolution: {integrity: sha512-k4MGaQl5TGo/iipqb2UDG2UwjXziSWkh0uysQelTlJpX1qGlpUZYm8PnO4DxG1qBomtJUdYJ6qR6xdIah10JLg==}
@@ -4761,12 +4489,6 @@ packages:
'@types/keyv@3.1.4':
resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==}
- '@types/lodash@4.14.191':
- resolution: {integrity: sha512-BdZ5BCCvho3EIXw6wUCXHe7rS53AIDPLE+JzwgT+OsJk53oBfbSmZZ7CX4VaRoN78N+TJpFi9QPlfIVNmJYWxQ==}
-
- '@types/matter-js@0.19.6':
- resolution: {integrity: sha512-ffk6tqJM5scla+ThXmnox+mdfCo3qYk6yMjQsNcrbo6eQ5DqorVdtnaL+1agCoYzxUjmHeiNB7poBMAmhuLY7w==}
-
'@types/matter-js@0.19.7':
resolution: {integrity: sha512-dlh50YEh1lQS4fiCDGBnK75ocHQIq/1E371Qk6hASJImICIivdZQC2GkOqnfBm0Hac2xLk5+yrqRFDAEfj/yLA==}
@@ -4794,23 +4516,11 @@ packages:
'@types/ms@0.7.34':
resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==}
- '@types/mute-stream@0.0.4':
- resolution: {integrity: sha512-CPM9nzrCPPJHQNA9keH9CVkVI+WR5kMa+7XEs5jcGQ0VoAGnLv242w8lIVgwAEfmE4oufJRaTc9PNLQl0ioAow==}
-
- '@types/mysql@2.15.22':
- resolution: {integrity: sha512-wK1pzsJVVAjYCSZWQoWHziQZbNggXFDUEIGf54g4ZM/ERuP86uGdWeKZWMYlqTPMZfHJJvLPyogXGvCOg87yLQ==}
-
- '@types/node@20.11.5':
- resolution: {integrity: sha512-g557vgQjUUfN76MZAN/dt1z3dzcUsimuysco0KeluHgrPdJXkP/XdAURgyO2W9fZWHRtRBiVKzKn8vyOAwlG+w==}
-
- '@types/node@20.14.12':
- resolution: {integrity: sha512-r7wNXakLeSsGT0H1AU863vS2wa5wBOK4bWMjZz2wj+8nBx+m5PeIn0k8AloSLpRuiwdRQZwarZqHE4FNArPuJQ==}
-
- '@types/node@20.9.1':
- resolution: {integrity: sha512-HhmzZh5LSJNS5O8jQKpJ/3ZcrrlG6L70hpGqMIAoM9YVD0YBRNWYsfwcXq8VnSjlNpCpgLzMXdiPo+dxcvSmiA==}
+ '@types/mysql@2.15.26':
+ resolution: {integrity: sha512-DSLCOXhkvfS5WNNPbfn2KdICAmk8lLc+/PNvnPnF7gOdMZCxopXduqv0OQ13y/yA/zXTSikZZqVgybUxOEg6YQ==}
- '@types/node@22.7.5':
- resolution: {integrity: sha512-jML7s2NAzMWc//QSJ1a3prpk78cOPchGvXJsC3C6R6PSMoooztvRVQEz89gmBTBY1SPMaqo5teB4uNHPdetShQ==}
+ '@types/node@22.9.0':
+ resolution: {integrity: sha512-vuyHg81vvWA1Z1ELfvLko2c8f34gyA0zaic0+Rllc5lbCnbSyuvb2Oxpm6TAUAC/2xZN3QGqxBNggD1nNR2AfQ==}
'@types/nodemailer@6.4.16':
resolution: {integrity: sha512-uz6hN6Pp0upXMcilM61CoKyjT7sskBoOWpptkjjJp8jIMlTdc3xG01U7proKkXzruMS4hS0zqtHNkNPFB20rKQ==}
@@ -4827,14 +4537,17 @@ packages:
'@types/oauth@0.9.5':
resolution: {integrity: sha512-+oQ3C2Zx6ambINOcdIARF5Z3Tu3x//HipE889/fqo3sgpQZbe9c6ExdQFtN6qlhpR7p83lTZfPJt0tCAW29dog==}
+ '@types/oauth@0.9.6':
+ resolution: {integrity: sha512-H9TRCVKBNOhZZmyHLqFt9drPM9l+ShWiqqJijU1B8P3DX3ub84NjxDuy+Hjrz+fEca5Kwip3qPMKNyiLgNJtIA==}
+
'@types/object-assign-deep@0.4.3':
resolution: {integrity: sha512-d9Gxaj5j1hzrxJ61EFEg13B4g4FgrT/DYtcDWFXPehR8DF2SUZbVMFtZIs8exkVRiqrqBpdTc/lUUZjncsPpMw==}
'@types/parse-link-header@2.0.3':
resolution: {integrity: sha512-ffLAxD6Xqcf2gSbtEJehj8yJ5R/2OZqD4liodQvQQ+hhO4kg1mk9ToEZQPMtNTm/zIQj2GNleQbsjPp9+UQm4Q==}
- '@types/pg-pool@2.0.4':
- resolution: {integrity: sha512-qZAvkv1K3QbmHHFYSNRYPkRjOWRLBYrL4B9c+wG0GSVGBw0NtJwPcgx/DSddeDJvRGMHCEQ4VMEVfuJ/0gZ3XQ==}
+ '@types/pg-pool@2.0.6':
+ resolution: {integrity: sha512-TaAUE5rq2VQYxab5Ts7WZhKNmuN78Q6PiFonTDdpbx8a1H0M1vhy3rhiMjl+e2iHmogyMw7jZF4FrE6eJUy5HQ==}
'@types/pg@8.11.10':
resolution: {integrity: sha512-LczQUW4dbOQzsH2RQ5qoeJ6qJPdrcM/DcMLoqWQkMLMsq83J5lAX3LXjdkWdpscFy67JSOWDnh7Ny/sPFykmkg==}
@@ -4905,6 +4618,9 @@ packages:
'@types/shimmer@1.0.5':
resolution: {integrity: sha512-9Hp0ObzwwO57DpLFF0InUjUm/II8GmKAvzbefxQTihCb7KI6yc9yzf0nLc4mVdby5N4DRCgQM2wCup9KTieeww==}
+ '@types/shimmer@1.2.0':
+ resolution: {integrity: sha512-UE7oxhQLLd9gub6JKIAhDq06T0F6FnztwMNRvYgjeQSBeMc1ZG/tA47EwfduvkuQS8apbkM/lpLpWsaCeYsXVg==}
+
'@types/simple-oauth2@5.0.7':
resolution: {integrity: sha512-8JbWVJbiTSBQP/7eiyGKyXWAqp3dKQZpaA+pdW16FCi32ujkzRMG8JfjoAzdWt6W8U591ZNdHcPtP2D7ILTKuA==}
@@ -4926,6 +4642,9 @@ packages:
'@types/statuses@2.0.4':
resolution: {integrity: sha512-eqNDvZsCNY49OAXB0Firg/Sc2BgoWsntsLUdybGFOhAfCD6QJ2n9HXUIHGqt5qjrxmMv4wS8WLAw43ZkKcJ8Pw==}
+ '@types/tedious@4.0.14':
+ resolution: {integrity: sha512-KHPsfX/FoVbUGbyYvk1q9MMQHLPeRZhRJZdO45Q4YjvFkv4hMNghCWTvy7rdKessBsmtz4euWCWAB6/tVpI1Iw==}
+
'@types/throttle-debounce@5.0.2':
resolution: {integrity: sha512-pDzSNulqooSKvSNcksnV72nk8p7gRqN8As71Sp28nov1IgmPKWbOEIwAWvBME5pPTtaXJAvG3O4oc76HlQ4kqQ==}
@@ -4953,17 +4672,14 @@ packages:
'@types/vary@1.1.3':
resolution: {integrity: sha512-XJT8/ZQCL7NUut9QDLf6l24JfAEl7bnNdgxfj50cHIpEPRJLHHDDFOAq6i+GsEmeFfH7NamhBE4c4Thtb2egWg==}
- '@types/web-push@3.6.3':
- resolution: {integrity: sha512-v3oT4mMJsHeJ/rraliZ+7TbZtr5bQQuxcgD7C3/1q/zkAj29c8RE0F9lVZVu3hiQe5Z9fYcBreV7TLnfKR+4mg==}
-
- '@types/wrap-ansi@3.0.0':
- resolution: {integrity: sha512-ltIpx+kM7g/MLRZfkbL7EsCEjfzCcScLpkg37eXEtx5kmrAKBkTJwd1GIAjDSL8wTpM6Hzn5YO4pSb91BEwu1g==}
+ '@types/web-push@3.6.4':
+ resolution: {integrity: sha512-GnJmSr40H3RAnj0s34FNTcJi1hmWFV5KXugE0mYWnYhgTAHLJ/dJKAwDmvPJYMke0RplY2XE9LnM4hqSqKIjhQ==}
'@types/ws@8.5.11':
resolution: {integrity: sha512-4+q7P5h3SpJxaBft0Dzpbr6lmMaqh0Jr2tbhJZ/luAwvD7ohSCniYkwz/pLxuT2h0EOa6QADgJj1Ko+TzRfZ+w==}
- '@types/ws@8.5.12':
- resolution: {integrity: sha512-3tPRkv1EtkDpzlgyKyI8pGsGZAGPEaXeu0DOj5DI25Ja91bdAYddYHbADRYVrZMRbfW+1l5YwXVDKohDJNQxkQ==}
+ '@types/ws@8.5.13':
+ resolution: {integrity: sha512-osM/gWBTPKgHV8XkTunnegTRIsvF6owmf5w+JtAfOw472dptdm0dlGv4xCt6GwQRcC2XVOvvRE/0bAoQcL2QkA==}
'@types/yargs-parser@21.0.0':
resolution: {integrity: sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==}
@@ -5151,8 +4867,8 @@ packages:
'@ungap/structured-clone@1.2.0':
resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==}
- '@vitejs/plugin-vue@5.1.4':
- resolution: {integrity: sha512-N2XSI2n3sQqp5w7Y/AN/L2XDjBIRGqXko+eDp42sydYSBeJuSm5a1sLf8zakmo8u7tA8NmBgoDLA1HeOESjp9A==}
+ '@vitejs/plugin-vue@5.2.0':
+ resolution: {integrity: sha512-7n7KdUEtx/7Yl7I/WVAMZ1bEb0eVvXF3ummWTeLcs/9gvo9pJhuLdouSXGjdZ/MKD1acf1I272+X0RMua4/R3g==}
engines: {node: ^18.0.0 || >=20.0.0}
peerDependencies:
vite: ^5.0.0
@@ -5199,50 +4915,38 @@ packages:
'@volar/language-core@2.2.0':
resolution: {integrity: sha512-a8WG9+4OdeNDW4ywABZIM6S6UN7em8uIlM/BZ2pWQUYrVmX+m8sj/X+QadvO+Li/t/LjAqbWJQtVgxdpEWLALQ==}
- '@volar/language-core@2.4.6':
- resolution: {integrity: sha512-FxUfxaB8sCqvY46YjyAAV6c3mMIq/NWQMVvJ+uS4yxr1KzOvyg61gAuOnNvgCvO4TZ7HcLExBEsWcDu4+K4E8A==}
+ '@volar/language-core@2.4.10':
+ resolution: {integrity: sha512-hG3Z13+nJmGaT+fnQzAkS0hjJRa2FCeqZt6Bd+oGNhUkQ+mTFsDETg5rqUTxyzIh5pSOGY7FHCWUS8G82AzLCA==}
'@volar/source-map@2.2.0':
resolution: {integrity: sha512-HQlPRlHOVqCCHK8wI76ZldHkEwKsjp7E6idUc36Ekni+KJDNrqgSqPvyHQixybXPHNU7CI9Uxd9/IkxO7LuNBw==}
- '@volar/source-map@2.4.6':
- resolution: {integrity: sha512-Nsh7UW2ruK+uURIPzjJgF0YRGP5CX9nQHypA2OMqdM2FKy7rh+uv3XgPnWPw30JADbKvZ5HuBzG4gSbVDYVtiw==}
+ '@volar/source-map@2.4.10':
+ resolution: {integrity: sha512-OCV+b5ihV0RF3A7vEvNyHPi4G4kFa6ukPmyVocmqm5QzOd8r5yAtiNvaPEjl8dNvgC/lj4JPryeeHLdXd62rWA==}
'@volar/typescript@2.2.0':
resolution: {integrity: sha512-wC6l4zLiiCLxF+FGaHCbWlQYf4vMsnRxYhcI6WgvaNppOD6r1g+Ef1RKRJUApALWU46Yy/JDU/TbdV6w/X6Liw==}
- '@volar/typescript@2.4.6':
- resolution: {integrity: sha512-NMIrA7y5OOqddL9VtngPWYmdQU03htNKFtAYidbYfWA0TOhyGVd9tfcP4TsLWQ+RBWDZCbBqsr8xzU0ZOxYTCQ==}
-
- '@vue/compiler-core@3.4.37':
- resolution: {integrity: sha512-ZDDT/KiLKuCRXyzWecNzC5vTcubGz4LECAtfGPENpo0nrmqJHwuWtRLxk/Sb9RAKtR9iFflFycbkjkY+W/PZUQ==}
-
- '@vue/compiler-core@3.5.10':
- resolution: {integrity: sha512-iXWlk+Cg/ag7gLvY0SfVucU8Kh2CjysYZjhhP70w9qI4MvSox4frrP+vDGvtQuzIcgD8+sxM6lZvCtdxGunTAA==}
+ '@volar/typescript@2.4.10':
+ resolution: {integrity: sha512-F8ZtBMhSXyYKuBfGpYwqA5rsONnOwAVvjyE7KPYJ7wgZqo2roASqNWUnianOomJX5u1cxeRooHV59N0PhvEOgw==}
'@vue/compiler-core@3.5.11':
resolution: {integrity: sha512-PwAdxs7/9Hc3ieBO12tXzmTD+Ln4qhT/56S+8DvrrZ4kLDn4Z/AMUr8tXJD0axiJBS0RKIoNaR0yMuQB9v9Udg==}
- '@vue/compiler-dom@3.4.37':
- resolution: {integrity: sha512-rIiSmL3YrntvgYV84rekAtU/xfogMUJIclUMeIKEtVBFngOL3IeZHhsH3UaFEgB5iFGpj6IW+8YuM/2Up+vVag==}
-
- '@vue/compiler-dom@3.5.10':
- resolution: {integrity: sha512-DyxHC6qPcktwYGKOIy3XqnHRrrXyWR2u91AjP+nLkADko380srsC2DC3s7Y1Rk6YfOlxOlvEQKa9XXmLI+W4ZA==}
+ '@vue/compiler-core@3.5.12':
+ resolution: {integrity: sha512-ISyBTRMmMYagUxhcpyEH0hpXRd/KqDU4ymofPgl2XAkY9ZhQ+h0ovEZJIiPop13UmR/54oA2cgMDjgroRelaEw==}
'@vue/compiler-dom@3.5.11':
resolution: {integrity: sha512-pyGf8zdbDDRkBrEzf8p7BQlMKNNF5Fk/Cf/fQ6PiUz9at4OaUfyXW0dGJTo2Vl1f5U9jSLCNf0EZJEogLXoeew==}
- '@vue/compiler-sfc@3.4.37':
- resolution: {integrity: sha512-vCfetdas40Wk9aK/WWf8XcVESffsbNkBQwS5t13Y/PcfqKfIwJX2gF+82th6dOpnpbptNMlMjAny80li7TaCIg==}
-
- '@vue/compiler-sfc@3.5.11':
- resolution: {integrity: sha512-gsbBtT4N9ANXXepprle+X9YLg2htQk1sqH/qGJ/EApl+dgpUBdTv3yP7YlR535uHZY3n6XaR0/bKo0BgwwDniw==}
+ '@vue/compiler-dom@3.5.12':
+ resolution: {integrity: sha512-9G6PbJ03uwxLHKQ3P42cMTi85lDRvGLB2rSGOiQqtXELat6uI4n8cNz9yjfVHRPIu+MsK6TE418Giruvgptckg==}
- '@vue/compiler-ssr@3.4.37':
- resolution: {integrity: sha512-TyAgYBWrHlFrt4qpdACh8e9Ms6C/AZQ6A6xLJaWrCL8GCX5DxMzxyeFAEMfU/VFr4tylHm+a2NpfJpcd7+20XA==}
+ '@vue/compiler-sfc@3.5.12':
+ resolution: {integrity: sha512-2k973OGo2JuAa5+ZlekuQJtitI5CgLMOwgl94BzMCsKZCX/xiqzJYzapl4opFogKHqwJk34vfsaKpfEhd1k5nw==}
- '@vue/compiler-ssr@3.5.11':
- resolution: {integrity: sha512-P4+GPjOuC2aFTk1Z4WANvEhyOykcvEd5bIj2KVNGKGfM745LaXGr++5njpdBTzVz5pZifdlR1kpYSJJpIlSePA==}
+ '@vue/compiler-ssr@3.5.12':
+ resolution: {integrity: sha512-eLwc7v6bfGBSM7wZOGPmRavSWzNFF6+PdRhE+VFJhNCgHiF8AM7ccoqcv5kBXA2eWUfigD7byekvf/JsOfKvPA==}
'@vue/compiler-vue2@2.7.16':
resolution: {integrity: sha512-qYC3Psj9S/mfu9uVi5WvNZIzq+xnXMhOwbTFKKDD7b1lhpnn71jXSFdTQ+WsIEk0ONCd7VV2IMm7ONl6tbQ86A==}
@@ -5255,51 +4959,34 @@ packages:
typescript:
optional: true
- '@vue/language-core@2.1.6':
- resolution: {integrity: sha512-MW569cSky9R/ooKMh6xa2g1D0AtRKbL56k83dzus/bx//RDJk24RHWkMzbAlXjMdDNyxAaagKPRquBIxkxlCkg==}
+ '@vue/language-core@2.1.10':
+ resolution: {integrity: sha512-DAI289d0K3AB5TUG3xDp9OuQ71CnrujQwJrQnfuZDwo6eGNf0UoRlPuaVNO+Zrn65PC3j0oB2i7mNmVPggeGeQ==}
peerDependencies:
typescript: '*'
peerDependenciesMeta:
typescript:
optional: true
- '@vue/reactivity@3.4.37':
- resolution: {integrity: sha512-UmdKXGx0BZ5kkxPqQr3PK3tElz6adTey4307NzZ3whZu19i5VavYal7u2FfOmAzlcDVgE8+X0HZ2LxLb/jgbYw==}
-
- '@vue/reactivity@3.5.11':
- resolution: {integrity: sha512-Nqo5VZEn8MJWlCce8XoyVqHZbd5P2NH+yuAaFzuNSR96I+y1cnuUiq7xfSG+kyvLSiWmaHTKP1r3OZY4mMD50w==}
+ '@vue/reactivity@3.5.12':
+ resolution: {integrity: sha512-UzaN3Da7xnJXdz4Okb/BGbAaomRHc3RdoWqTzlvd9+WBR5m3J39J1fGcHes7U3za0ruYn/iYy/a1euhMEHvTAg==}
- '@vue/runtime-core@3.4.37':
- resolution: {integrity: sha512-MNjrVoLV/sirHZoD7QAilU1Ifs7m/KJv4/84QVbE6nyAZGQNVOa1HGxaOzp9YqCG+GpLt1hNDC4RbH+KtanV7w==}
+ '@vue/runtime-core@3.5.12':
+ resolution: {integrity: sha512-hrMUYV6tpocr3TL3Ad8DqxOdpDe4zuQY4HPY3X/VRh+L2myQO8MFXPAMarIOSGNu0bFAjh1yBkMPXZBqCk62Uw==}
- '@vue/runtime-core@3.5.11':
- resolution: {integrity: sha512-7PsxFGqwfDhfhh0OcDWBG1DaIQIVOLgkwA5q6MtkPiDFjp5gohVnJEahSktwSFLq7R5PtxDKy6WKURVN1UDbzA==}
+ '@vue/runtime-dom@3.5.12':
+ resolution: {integrity: sha512-q8VFxR9A2MRfBr6/55Q3umyoN7ya836FzRXajPB6/Vvuv0zOPL+qltd9rIMzG/DbRLAIlREmnLsplEF/kotXKA==}
- '@vue/runtime-dom@3.4.37':
- resolution: {integrity: sha512-Mg2EwgGZqtwKrqdL/FKMF2NEaOHuH+Ks9TQn3DHKyX//hQTYOun+7Tqp1eo0P4Ds+SjltZshOSRq6VsU0baaNg==}
-
- '@vue/runtime-dom@3.5.11':
- resolution: {integrity: sha512-GNghjecT6IrGf0UhuYmpgaOlN7kxzQBhxWEn08c/SQDxv1yy4IXI1bn81JgEpQ4IXjRxWtPyI8x0/7TF5rPfYQ==}
-
- '@vue/server-renderer@3.4.37':
- resolution: {integrity: sha512-jZ5FAHDR2KBq2FsRUJW6GKDOAG9lUTX8aBEGq4Vf6B/35I9fPce66BornuwmqmKgfiSlecwuOb6oeoamYMohkg==}
+ '@vue/server-renderer@3.5.12':
+ resolution: {integrity: sha512-I3QoeDDeEPZm8yR28JtY+rk880Oqmj43hreIBVTicisFTx/Dl7JpG72g/X7YF8hnQD3IFhkky5i2bPonwrTVPg==}
peerDependencies:
- vue: 3.4.37
-
- '@vue/server-renderer@3.5.11':
- resolution: {integrity: sha512-cVOwYBxR7Wb1B1FoxYvtjJD8X/9E5nlH4VSkJy2uMA1MzYNdzAAB//l8nrmN9py/4aP+3NjWukf9PZ3TeWULaA==}
- peerDependencies:
- vue: 3.5.11
-
- '@vue/shared@3.4.37':
- resolution: {integrity: sha512-nIh8P2fc3DflG8+5Uw8PT/1i17ccFn0xxN/5oE9RfV5SVnd7G0XEFRwakrnNFE/jlS95fpGXDVG5zDETS26nmg==}
-
- '@vue/shared@3.5.10':
- resolution: {integrity: sha512-VkkBhU97Ki+XJ0xvl4C9YJsIZ2uIlQ7HqPpZOS3m9VCvmROPaChZU6DexdMJqvz9tbgG+4EtFVrSuailUq5KGQ==}
+ vue: 3.5.12
'@vue/shared@3.5.11':
resolution: {integrity: sha512-W8GgysJVnFo81FthhzurdRAWP/byq3q2qIw70e0JWblzVhjgOMiC2GyovXrZTFQJnFVryYaKGP3Tc9vYzYm6PQ==}
+ '@vue/shared@3.5.12':
+ resolution: {integrity: sha512-L2RPSAwUFbgZH20etwrXyVyCBu9OxRSi8T/38QsvnkJyvq2LufW2lDCOzm7t/U9C1mkhJGWYfCuFBCmIuNivrg==}
+
'@vue/test-utils@2.4.1':
resolution: {integrity: sha512-VO8nragneNzUZUah6kOjiFmD/gwRjUauG9DROh6oaOeFwX1cZRUNHhdeogE8635cISigXFTtGLUQWx5KCb0xeg==}
peerDependencies:
@@ -5327,11 +5014,6 @@ packages:
resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==}
engines: {node: '>= 0.6'}
- acorn-import-assertions@1.9.0:
- resolution: {integrity: sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==}
- peerDependencies:
- acorn: ^8
-
acorn-import-attributes@1.9.5:
resolution: {integrity: sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==}
peerDependencies:
@@ -5342,10 +5024,6 @@ packages:
peerDependencies:
acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
- acorn-walk@7.2.0:
- resolution: {integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==}
- engines: {node: '>=0.4.0'}
-
acorn-walk@8.3.2:
resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==}
engines: {node: '>=0.4.0'}
@@ -5355,8 +5033,8 @@ packages:
engines: {node: '>=0.4.0'}
hasBin: true
- acorn@8.12.1:
- resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==}
+ acorn@8.14.0:
+ resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==}
engines: {node: '>=0.4.0'}
hasBin: true
@@ -5405,6 +5083,9 @@ packages:
ajv@8.17.1:
resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==}
+ alien-signals@0.2.2:
+ resolution: {integrity: sha512-cZIRkbERILsBOXTQmMrxc9hgpxglstn69zm+F1ARf4aPAzdAFYd6sBq87ErO0Fj3DV94tglcyHG5kQz9nDC/8A==}
+
ansi-colors@4.1.3:
resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==}
engines: {node: '>=6'}
@@ -5770,8 +5451,8 @@ packages:
resolution: {integrity: sha512-4T53u4PdgsXqKaIctwF8ifXlRTTmEPJ8iEPWFdGZvcf7sbwYo6FKFEX9eNNAnzFZ7EzJAQ3CJeOtCRA4rDp7Pw==}
engines: {node: '>=6.14.2'}
- bullmq@5.15.0:
- resolution: {integrity: sha512-h53shVjx8s6wxYGtUfzAfENpSP7N5T0D4PMTvbZncozLjb8yUKhopfpa7PmcpQfq7SSO9dm/OZ9XQuGOCSGNug==}
+ bullmq@5.26.1:
+ resolution: {integrity: sha512-XuxCGFlC1PQ2i1JHQiB9dqkqKQILMwQpU7ipi+cT/dzJaoXVcS0/IByUz6SsZ3xyOQY3twPt6G7J2d5GrsJuEA==}
buraha@0.0.1:
resolution: {integrity: sha512-G563A0mTbzknm2jDaNxfZuNKIdeArs8T+XQN6t+KbmgnOoevXSXhKDkyf8Md/36Jrx99ikwbCag37VGe3myExQ==}
@@ -5911,8 +5592,8 @@ packages:
character-parser@2.2.0:
resolution: {integrity: sha512-+UqJQjFEFaTAs3bNsF2j2kEN1baG/zghZbdqoYEDxGZtJo9LBzl1A+m0D4n3qKx8N2FNv8/Xp6yV9mQmBuptaw==}
- chart.js@4.4.4:
- resolution: {integrity: sha512-emICKGBABnxhMjUjlYRR12PmOXhJ2eJjEHL2/dZlWjxRAZT1D8xplLFq5M0tMQK8ja+wBS/tuVEJB5C6r7VxJA==}
+ chart.js@4.4.6:
+ resolution: {integrity: sha512-8Y406zevUPbbIBA/HRk33khEmQPk5+cxeflWE/2rx1NJsjVWMPw/9mSP9rxHP5eqi6LNoPBVMfZHxbwLSgldYA==}
engines: {pnpm: '>=8'}
chartjs-adapter-date-fns@3.0.0:
@@ -5966,8 +5647,8 @@ packages:
resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==}
engines: {node: '>=10'}
- chromatic@11.11.0:
- resolution: {integrity: sha512-mwmYsNMsZlRLtlfFUEtac5zhoVRhc+O/lsuMdOpwkiDQiKX6WdSNIhic+dkLenfuzao2r18s50nphcOgFoatBg==}
+ chromatic@11.18.1:
+ resolution: {integrity: sha512-hkNT9vA6K9+PnE/khhZYBnRCOm8NonaQDs7RZ8YHFo7/lh1b/x/uFMkTjWjaj/mkM6QOR/evu5VcZMtcaauSlw==}
hasBin: true
peerDependencies:
'@chromatic-com/cypress': ^0.*.* || ^1.0.0
@@ -5982,6 +5663,10 @@ packages:
resolution: {integrity: sha512-4jYS4MOAaCIStSRwiuxc4B8MYhIe676yO1sYGzARnjXkWpmzZMMYxY6zu8WYWDhSuth5zhrQ1rhNSibyyvv4/w==}
engines: {node: '>=8'}
+ ci-info@4.1.0:
+ resolution: {integrity: sha512-HutrvTNsF48wnxkzERIXOe5/mlcfFcbfCmwcg6CJnizbSue78AbDt+1cgl26zwn61WFxhcPykPfZrbqjGmBb4A==}
+ engines: {node: '>=8'}
+
cjs-module-lexer@1.2.2:
resolution: {integrity: sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==}
@@ -6002,10 +5687,6 @@ packages:
engines: {node: '>=8.0.0', npm: '>=5.0.0'}
hasBin: true
- cli-spinners@2.9.2:
- resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==}
- engines: {node: '>=6'}
-
cli-table3@0.6.3:
resolution: {integrity: sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==}
engines: {node: 10.* || >= 12.*}
@@ -6110,9 +5791,6 @@ packages:
resolution: {integrity: sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==}
engines: {node: '>=4.0.0'}
- commondir@1.0.1:
- resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==}
-
compare-versions@6.1.1:
resolution: {integrity: sha512-4hm4VPpIecmlg59CHXnRDnqGplJFrbLG4aFEl5vl6cK1u76ws3LLvX7ikFnTDl5vo39sjWD6AaDPYodJp/NNHg==}
@@ -6157,22 +5835,22 @@ 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'}
-
- cookie@0.5.0:
- resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==}
- engines: {node: '>= 0.6'}
-
cookie@0.6.0:
resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==}
engines: {node: '>= 0.6'}
+ cookie@0.7.1:
+ resolution: {integrity: sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==}
+ engines: {node: '>= 0.6'}
+
cookie@0.7.2:
resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==}
engines: {node: '>= 0.6'}
+ cookie@1.0.2:
+ resolution: {integrity: sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==}
+ engines: {node: '>=18'}
+
core-util-is@1.0.2:
resolution: {integrity: sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==}
@@ -6280,13 +5958,8 @@ packages:
csstype@3.1.3:
resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==}
- cypress@13.14.2:
- resolution: {integrity: sha512-lsiQrN17vHMB2fnvxIrKLAjOr9bPwsNbPZNrWf99s4u+DVmCY6U+w7O3GGG9FvP4EUVYaDu+guWeNLiUzBrqvA==}
- engines: {node: ^16.0.0 || ^18.0.0 || >=20.0.0}
- hasBin: true
-
- cypress@13.15.0:
- resolution: {integrity: sha512-53aO7PwOfi604qzOkCSzNlWquCynLlKE/rmmpSPcziRH6LNfaDUAklQT6WJIsD8ywxlIy+uVZsnTMCCQVd2kTw==}
+ cypress@13.15.2:
+ resolution: {integrity: sha512-ARbnUorjcCM3XiPwgHKuqsyr5W9Qn+pIIBPaoilnoBkLdSC2oLQjV1BUpnmc7KR+b7Avah3Ly2RMFnfxr96E/A==}
engines: {node: ^16.0.0 || ^18.0.0 || >=20.0.0}
hasBin: true
@@ -6618,10 +6291,6 @@ packages:
resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==}
engines: {node: '>=0.12'}
- entities@5.0.0:
- resolution: {integrity: sha512-BeJFvFRJddxobhvEdm5GqHzRV/X+ACeuw0/BuuxsCh1EUZcAIz8+kYmBp/LrQuloy6K1f3a0M7+IhmZ7QnkISA==}
- engines: {node: '>=0.12'}
-
env-paths@2.2.1:
resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==}
engines: {node: '>=6'}
@@ -6651,9 +6320,6 @@ packages:
es-get-iterator@1.1.3:
resolution: {integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==}
- es-module-lexer@1.5.4:
- resolution: {integrity: sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==}
-
es-object-atoms@1.0.0:
resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==}
engines: {node: '>= 0.4'}
@@ -6676,6 +6342,9 @@ packages:
resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==}
engines: {node: '>= 0.4'}
+ es-toolkit@1.27.0:
+ resolution: {integrity: sha512-ETSFA+ZJArcuSCpzD2TjAy6UHpx4E4uqFsoDg9F/nTLogrLmVVZQ+zNxco5h7cWnA1nNak07IXsLcaSMih+ZPQ==}
+
esbuild-register@3.5.0:
resolution: {integrity: sha512-+4G/XmakeBAsvJuDugJvtyF1x+XJT4FMocynNpxrvEBViirpfUn2PgNpCHedfWhF4WokNsO/OvMKrmJOIJsI5A==}
peerDependencies:
@@ -6686,23 +6355,13 @@ packages:
engines: {node: '>=12'}
hasBin: true
- esbuild@0.19.11:
- resolution: {integrity: sha512-HJ96Hev2hX/6i5cDVwcqiJBBtuo9+FeIJOtZ9W1kA5M6AMJRHUZlpYZ1/SbEwtO0ioNAW8rUooVpC/WehY2SfA==}
- engines: {node: '>=12'}
- hasBin: true
-
esbuild@0.21.5:
resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==}
engines: {node: '>=12'}
hasBin: true
- esbuild@0.23.0:
- resolution: {integrity: sha512-1lvV17H2bMYda/WaFb2jLPeHU3zml2k4/yagNMG8Q/YtfMjCwEUZa2eXXMgZTVSL5q1n4H7sQ0X6CdJDqqeCFA==}
- engines: {node: '>=18'}
- hasBin: true
-
- esbuild@0.23.1:
- resolution: {integrity: sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==}
+ esbuild@0.24.0:
+ resolution: {integrity: sha512-FuLPevChGDshgSicjisSooU0cemp/sGXR841D5LHMB7mTVOmsEHcAxaH3irL53+8YDIeVNQEySh4DaYU/iuPqQ==}
engines: {node: '>=18'}
hasBin: true
@@ -6736,11 +6395,6 @@ packages:
resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==}
engines: {node: '>=12'}
- escodegen@2.1.0:
- resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==}
- engines: {node: '>=6.0'}
- hasBin: true
-
eslint-config-prettier@9.1.0:
resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==}
hasBin: true
@@ -6795,14 +6449,8 @@ packages:
'@typescript-eslint/parser':
optional: true
- eslint-plugin-vue@9.27.0:
- resolution: {integrity: sha512-5Dw3yxEyuBSXTzT5/Ge1X5kIkRTQ3nvBn/VwPwInNiZBSJOO/timWMUaflONnFBzU6NhB68lxnCda7ULV5N7LA==}
- engines: {node: ^14.17.0 || >=16.0.0}
- peerDependencies:
- eslint: ^6.2.0 || ^7.0.0 || ^8.0.0 || ^9.0.0
-
- eslint-plugin-vue@9.28.0:
- resolution: {integrity: sha512-ShrihdjIhOTxs+MfWun6oJWuk+g/LAhN+CiuOl/jjkG3l0F2AuK5NMTaWqyvBgkFtpYmyks6P4603mLmhNJW8g==}
+ eslint-plugin-vue@9.31.0:
+ resolution: {integrity: sha512-aYMUCgivhz1o4tLkRHj5oq9YgYPM4/EJc0M7TAKRLCUA5OYxRLAhYEVD2nLtTwLyixEFI+/QXSvKU9ESZFgqjQ==}
engines: {node: ^14.17.0 || >=16.0.0}
peerDependencies:
eslint: ^6.2.0 || ^7.0.0 || ^8.0.0 || ^9.0.0
@@ -6814,16 +6462,16 @@ packages:
resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
- eslint-scope@8.0.2:
- resolution: {integrity: sha512-6E4xmrTw5wtxnLA5wYL3WDfhZ/1bUBGOXV0zQvVRDOtrR8D0p6W7fs3JweNYhwRYeGvd/1CKX2se0/2s7Q/nJA==}
+ eslint-scope@8.2.0:
+ resolution: {integrity: sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
eslint-visitor-keys@3.4.3:
resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
- eslint-visitor-keys@4.0.0:
- resolution: {integrity: sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==}
+ eslint-visitor-keys@4.2.0:
+ resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
eslint@8.57.0:
@@ -6832,13 +6480,18 @@ packages:
deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options.
hasBin: true
- eslint@9.8.0:
- resolution: {integrity: sha512-K8qnZ/QJzT2dLKdZJVX6W4XOwBzutMYmt0lqUS+JdXgd+HTYFlonFgkJ8s44d/zMPPCnOOk0kMWCApCPhiOy9A==}
+ eslint@9.14.0:
+ resolution: {integrity: sha512-c2FHsVBr87lnUtjP4Yhvk4yEhKrQavGafRA/Se1ouse8PfbfC/Qh9Mxa00yWsZRlqeUB9raXip0aiiUZkgnr9g==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
hasBin: true
+ peerDependencies:
+ jiti: '*'
+ peerDependenciesMeta:
+ jiti:
+ optional: true
- espree@10.1.0:
- resolution: {integrity: sha512-M1M6CpiE6ffoigIOWYO9UDP8TMUw9kqb21tf+08IgDYjCsOvCuDt4jQcZmoYxx+w7zlKw9/N0KXfto+I8/FrXA==}
+ espree@10.3.0:
+ resolution: {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
espree@9.6.1:
@@ -6920,10 +6573,6 @@ packages:
resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==}
engines: {node: '>=16.17'}
- execa@9.4.0:
- resolution: {integrity: sha512-yKHlle2YGxZE842MERVIplWwNH5VYmqqcPFgtnlU//K8gxuFFXu0pwd/CrfXTumFpeEiufsP7+opT/bPJa1yVw==}
- engines: {node: ^18.19.0 || >=20.5.0}
-
executable@4.1.1:
resolution: {integrity: sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==}
engines: {node: '>=4'}
@@ -6943,6 +6592,10 @@ packages:
resolution: {integrity: sha512-VqcNGcj/Id5ZT1LZ/cfihi3ttTn+NJmkli2eZADigjq29qTlWi/hAQ43t/VLPq8+UX06FCEx3ByOYet6ZFblng==}
engines: {node: '>= 0.10.0'}
+ express@4.21.1:
+ resolution: {integrity: sha512-YSFlK1Ee0/GC8QaO91tHcDxJiE/X4FbpAyQWkxAvG6AXCuR65YzK8ua6D9hvi/TzUfZMpc+BwuM1IPw8fmQBiQ==}
+ engines: {node: '>= 0.10.0'}
+
ext-list@2.2.2:
resolution: {integrity: sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA==}
engines: {node: '>=0.10.0'}
@@ -7053,10 +6706,6 @@ packages:
resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==}
engines: {node: '>=8'}
- figures@6.1.0:
- resolution: {integrity: sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==}
- engines: {node: '>=18'}
-
file-entry-cache@6.0.1:
resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==}
engines: {node: ^10.12.0 || >=12.0.0}
@@ -7069,8 +6718,8 @@ packages:
resolution: {integrity: sha512-hlDw5Ev+9e883s0pwUsuuYNu4tD7GgpUnOvykjv1Gya0ZIjuKumthDRua90VUn6/nlRKAjcxLUnHNTIUWwWIiw==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
- file-type@19.5.0:
- resolution: {integrity: sha512-dMuq6WWnP6BpQY0zYJNpTtQWgeCImSMG0BTIzUBXvxbwc1HWP/E7AE4UWU9XSCOPGJuOHda0HpDnwM2FW+d90A==}
+ file-type@19.6.0:
+ resolution: {integrity: sha512-VZR5I7k5wkD0HgFnMsq5hOsSc710MJMu5Nc5QYsbe38NN5iPV/XTObYLc/cpttRTf6lX538+5uO1ZQRhYibiZQ==}
engines: {node: '>=18'}
filelist@1.0.4:
@@ -7096,10 +6745,6 @@ packages:
resolution: {integrity: sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==}
engines: {node: '>= 0.8'}
- find-cache-dir@3.3.2:
- resolution: {integrity: sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==}
- engines: {node: '>=8'}
-
find-my-way@9.1.0:
resolution: {integrity: sha512-Y5jIsuYR4BwWDYYQ2A/RWWE6gD8a0FMgtU+HOq1WKku+Cwdz8M1v8wcAmRXXM1/iqtoqg06v+LjAxMYbCjViMw==}
engines: {node: '>=14'}
@@ -7178,6 +6823,10 @@ packages:
resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==}
engines: {node: '>= 6'}
+ form-data@4.0.1:
+ resolution: {integrity: sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==}
+ engines: {node: '>= 6'}
+
formdata-polyfill@4.0.10:
resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==}
engines: {node: '>=12.20.0'}
@@ -7193,10 +6842,6 @@ packages:
from@0.1.7:
resolution: {integrity: sha512-twe20eF1OxVxp/ML/kq2p1uc6KvFK/+vs8WjEbeKmV2He22MKm7YF2ANIt+EOqhJ5L3K/SuuPhk0hWQDjOM23g==}
- fs-extra@11.1.1:
- resolution: {integrity: sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==}
- engines: {node: '>=14.14'}
-
fs-extra@7.0.1:
resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==}
engines: {node: '>=6 <7 || >=8'}
@@ -7298,9 +6943,6 @@ packages:
getpass@0.1.7:
resolution: {integrity: sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==}
- github-slugger@2.0.0:
- resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==}
-
glob-parent@5.1.2:
resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
engines: {node: '>= 6'}
@@ -7350,8 +6992,8 @@ packages:
resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==}
engines: {node: '>=18'}
- globals@15.9.0:
- resolution: {integrity: sha512-SmSKyLLKFbSr6rptvP8izbyxJL4ILwqO9Jg23UA0sDlGlu58V59D1//I3vlc0KJphVdUR7vMjHIplYnzBxorQA==}
+ globals@15.12.0:
+ resolution: {integrity: sha512-1+gLErljJFhbOVyaetcwJiJ4+eLe45S2E7P5UiZ9xGfeq3ATQf5DOv9G7MH3gGbKQLkzmNh2DxfZwLdw+j6oTQ==}
engines: {node: '>=18'}
globalthis@1.0.3:
@@ -7373,8 +7015,8 @@ packages:
resolution: {integrity: sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ==}
engines: {node: '>=14.16'}
- got@14.4.2:
- resolution: {integrity: sha512-+Te/qEZ6hr7i+f0FNgXx/6WQteSM/QqueGvxeYQQFm0GDfoxLVJ/oiwUKYMTeioColWUTdewZ06hmrBjw6F7tw==}
+ got@14.4.4:
+ resolution: {integrity: sha512-tqiF7eSgTBwQkxb1LxsEpva8TaMYVisbhplrFVmw9GQE3855Z+MH/mnsXLLOkDxR6hZJRFMj5VTAZ8lmTF8ZOA==}
engines: {node: '>=20'}
graceful-fs@4.2.11:
@@ -7397,8 +7039,8 @@ packages:
happy-dom@10.0.3:
resolution: {integrity: sha512-WkCP+Z5fX6U5PY+yHP3ElV5D9PoxRAHRWPFq3pG9rg/6Hjf5ak7dozAgSCywsTRUq2qfa8vV8OQvUy5pRXy8EQ==}
- happy-dom@15.7.4:
- resolution: {integrity: sha512-r1vadDYGMtsHAAsqhDuk4IpPvr6N8MGKy5ntBo7tSdim+pWDxus2PNqOcOt8LuDZ4t3KJHE+gCuzupcx/GKnyQ==}
+ happy-dom@15.11.4:
+ resolution: {integrity: sha512-AU6tzh3ADd28vSmXahgLsGyGGihXPGeKH0owDn9lhHolB6vIwEhag//T+TBzDoAcHhmVEwlxwSgtW1KZep+1MA==}
engines: {node: '>=18.0.0'}
hard-rejection@2.1.0:
@@ -7457,18 +7099,9 @@ packages:
resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==}
engines: {node: '>= 0.4'}
- hast-util-heading-rank@3.0.0:
- resolution: {integrity: sha512-EJKb8oMUXVHcWZTDepnr+WNbfnXKFNf9duMesmr4S8SXTJBJ9M4Yok08pu9vxdJwdlGRhVumk9mEhkEvKGifwA==}
-
- hast-util-is-element@3.0.0:
- resolution: {integrity: sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==}
-
hast-util-to-html@9.0.3:
resolution: {integrity: sha512-M17uBDzMJ9RPCqLMO92gNNUDuBSq10a25SDBI08iCCxmorf4Yy6sYHK57n9WAbRAAaU+DuR4W6GN9K4DFZesYg==}
- hast-util-to-string@3.0.0:
- resolution: {integrity: sha512-OGkAxX1Ua3cbcW6EJ5pT/tslVb90uViVkcJ4ZZIMW/R33DX/AkcJcRrPebPwJkHYwlDHXz4aIwvAAaAdtrACFA==}
-
hast-util-whitespace@3.0.0:
resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==}
@@ -7507,10 +7140,6 @@ packages:
html-escaper@2.0.2:
resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==}
- html-tags@3.2.0:
- resolution: {integrity: sha512-vy7ClnArOZwCnqZgvv+ddgHgJiAFXe3Ge9ML5/mBctVJoUoYPCdxVucOywjDARn6CVoh3dRSFdPHy2sX80L0Wg==}
- engines: {node: '>=8'}
-
html-void-elements@3.0.0:
resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==}
@@ -7582,10 +7211,6 @@ packages:
resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==}
engines: {node: '>=16.17.0'}
- human-signals@8.0.0:
- resolution: {integrity: sha512-/1/GPCpDUCCYwlERiYjxoczfP0zfvZMU/OWgQPMya9AbAE24vseigFdhAMObpc8Q4lc/kjutPfUddDYyAmejnA==}
- engines: {node: '>=18.18.0'}
-
iconv-lite@0.4.24:
resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==}
engines: {node: '>=0.10.0'}
@@ -7618,11 +7243,8 @@ packages:
resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==}
engines: {node: '>=6'}
- import-in-the-middle@1.10.0:
- resolution: {integrity: sha512-Z1jumVdF2GwnnYfM0a/y2ts7mZbwFMgt5rRuVmLgobgahC6iKgN5MBuXjzfTIOUpq5LSU10vJIPpVKe0X89fIw==}
-
- import-in-the-middle@1.7.1:
- resolution: {integrity: sha512-1LrZPDtW+atAxH42S6288qyDFNQ2YCty+2mxEPRtfazH6Z5QwkaBSTS2ods7hnVJioF6rkRfNoA6A/MstpFXLg==}
+ import-in-the-middle@1.11.2:
+ resolution: {integrity: sha512-gK6Rr6EykBcc6cVWRSBR5TWf8nn6hZMYSRYqCcHa0l0d1fPK7JSYo6+Mlmck76jIX9aL/IZ71c06U2VpFwl1zA==}
import-lazy@4.0.0:
resolution: {integrity: sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==}
@@ -7708,10 +7330,6 @@ packages:
resolution: {integrity: sha512-1ANGLZ+Nkv1ptFb2pa8oG8Lem4krflKuX/gINiHJHjJUKaJHk/SXk5x6K3J+39/p0h1RQ2saROclJJ+QLvETCQ==}
engines: {node: '>=8'}
- is-absolute-url@4.0.1:
- resolution: {integrity: sha512-/51/TKE88Lmm7Gc4/8btclNXWS+g50wXhYJq8HWIBAGUBnoAdRu1aXeh364t/O7wXDAcTJDP8PNuNKWUDWie+A==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
-
is-arguments@1.1.1:
resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==}
engines: {node: '>= 0.4'}
@@ -7744,10 +7362,6 @@ packages:
resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==}
engines: {node: '>= 0.4'}
- is-ci@3.0.1:
- resolution: {integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==}
- hasBin: true
-
is-core-module@2.13.1:
resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==}
@@ -7906,10 +7520,6 @@ packages:
resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==}
engines: {node: '>=10'}
- is-unicode-supported@2.0.0:
- resolution: {integrity: sha512-FRdAyx5lusK1iHG0TWpVtk9+1i+GjrzRffhDg4ovQ7mcidMQ6mj+MhKPmvh7Xwyv5gIS06ns49CA7Sqg7lC22Q==}
- engines: {node: '>=18'}
-
is-weakmap@2.0.1:
resolution: {integrity: sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==}
@@ -8444,10 +8054,6 @@ packages:
mailcheck@1.1.1:
resolution: {integrity: sha512-3WjL8+ZDouZwKlyJBMp/4LeziLFXgleOdsYu87piGcMLqhBzCsy2QFdbtAwv757TFC/rtqd738fgJw1tFQCSgA==}
- make-dir@3.1.0:
- resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==}
- engines: {node: '>=8'}
-
make-dir@4.0.0:
resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==}
engines: {node: '>=10'}
@@ -8479,12 +8085,6 @@ packages:
markdown-table@3.0.3:
resolution: {integrity: sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==}
- markdown-to-jsx@7.4.7:
- resolution: {integrity: sha512-0+ls1IQZdU6cwM1yu0ZjjiVWYtkbExSyUIFU2ZeDIFuZM1W42Mh4OlJ4nb4apX4H8smxDHRdFaoIVJGwfv5hkg==}
- engines: {node: '>= 10'}
- peerDependencies:
- react: '>= 0.14.0'
-
marked@4.3.0:
resolution: {integrity: sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==}
engines: {node: '>= 12'}
@@ -8539,8 +8139,8 @@ packages:
resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==}
engines: {node: '>= 0.6'}
- meilisearch@0.42.0:
- resolution: {integrity: sha512-pXaOPx/uhVGYVpejNuOcXifQVJlRVSxtvpgrGKb7ygmYo4qSNXkQXPxq1p0Tv+4/RsPJug3W04pcNnYXiqungA==}
+ meilisearch@0.45.0:
+ resolution: {integrity: sha512-+zCzEqE+CumY4icB0Vox180adZqaNtnr60hJWGiEdmol5eWmksfY8rYsTcz87styXC2ZOg+2yF56gdH6oyIBTA==}
memoizerific@1.11.3:
resolution: {integrity: sha512-/EuHYwAPdLtXwAwSZkh/Gutery6pD2KYd44oQLhAvQp/50mpyduZh8Q7PYHXTCJ+wuXxt7oij2LXyIJOOYFPog==}
@@ -8825,26 +8425,16 @@ packages:
resolution: {integrity: sha512-SdzXp4kD/Qf8agZ9+iTu6eql0m3kWm1A2y1hkpTeVNENutaB0BwHlSvAIaMxwntmRUAUjon2V4L8Z/njd0Ct8A==}
hasBin: true
- msgpackr@1.10.1:
- resolution: {integrity: sha512-r5VRLv9qouXuLiIBrLpl2d5ZvPt8svdQTl5/vMvE4nzDMyEX4sgW5yWhuBBj5UmgwOTWj8CIdSXn5sAfsHAWIQ==}
+ msgpackr@1.11.2:
+ resolution: {integrity: sha512-F9UngXRlPyWCDEASDpTf6c9uNhGPTqnTeLVt7bN+bU1eajoR/8V9ys2BRaV5C/e5ihE6sJ9uPIKaYt6bFuO32g==}
- msw-storybook-addon@2.0.3:
- resolution: {integrity: sha512-CzHmGO32JeOPnyUnRWnB0PFTXCY1HKfHiEB/6fYoUYiFm2NYosLjzs9aBd3XJUryYEN0avJqMNh7nCRDxE5JjQ==}
+ msw-storybook-addon@2.0.4:
+ resolution: {integrity: sha512-rstO8+r01sRMg6PPP7OxM8LG5/6r4+wmp2uapHeHvm9TQQRHvpPXOU/Y9/Somysz8Oi4Ea1aummXH3JlnP2LIA==}
peerDependencies:
msw: ^2.0.0
- msw@2.3.4:
- resolution: {integrity: sha512-sHMlwrajgmZSA2l1o7qRSe+azm/I+x9lvVVcOxAzi4vCtH8uVPJk1K5BQYDkzGl+tt0RvM9huEXXdeGrgcc79g==}
- engines: {node: '>=18'}
- hasBin: true
- peerDependencies:
- typescript: '>= 4.7.x'
- peerDependenciesMeta:
- typescript:
- optional: true
-
- msw@2.4.9:
- resolution: {integrity: sha512-1m8xccT6ipN4PTqLinPwmzhxQREuxaEJYdx4nIbggxP8aM7r1e71vE7RtOUSQoAm1LydjGfZKy7370XD/tsuYg==}
+ msw@2.6.4:
+ resolution: {integrity: sha512-Pm4LmWQeytDsNCR+A7gt39XAdtH6zQb6jnIKRig0FlvYOn8eksn3s1nXxUfz5KYUjbckof7Z4p2ewzgffPoCbg==}
engines: {node: '>=18'}
hasBin: true
peerDependencies:
@@ -8860,9 +8450,9 @@ packages:
resolution: {integrity: sha512-WeSGziVj6+Z2/MwQo3GvqzgR+9Uc+qt8SwHKh3gvNPiISKfsMfG4SvCOFYlxxgkXt7yIV2i1yczehm0EOKIxIg==}
engines: {node: '>= 6.0.0'}
- mute-stream@1.0.0:
- resolution: {integrity: sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==}
- engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
+ mute-stream@2.0.0:
+ resolution: {integrity: sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==}
+ engines: {node: ^18.17.0 || >=20.5.0}
mylas@2.1.13:
resolution: {integrity: sha512-+MrqnJRtxdF+xngFfUUkIMQrUUL0KsxbADUkn23Z/4ibGg192Q+z+CQyiYwvWTsYjJygmMR8+w3ZDa98Zh6ESg==}
@@ -8879,8 +8469,8 @@ packages:
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
hasBin: true
- nanoid@5.0.7:
- resolution: {integrity: sha512-oLxFY2gd2IqnjcYyOXD8XGCftpGtZP2AbHbOkthDkvRywH5ayNtPVy9YlOPcHckXzbLTCHpkb7FB+yuxKV13pQ==}
+ nanoid@5.0.8:
+ resolution: {integrity: sha512-TcJPw+9RV9dibz1hHUzlLVy8N4X9TnwirAjrU08Juo6BNKggzVfP2ZJ/3ZUSq15Xl5i85i+Z89XBO90pB2PghQ==}
engines: {node: ^18 || >=20}
hasBin: true
@@ -8968,15 +8558,10 @@ packages:
node-releases@2.0.14:
resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==}
- nodemailer@6.9.15:
- resolution: {integrity: sha512-AHf04ySLC6CIfuRtRiEYtGEXgRfa6INgWGluDhnxTZhHSKvrBu7lc1VVchQ0d8nPc4cFaZoPq8vkyNoZr0TpGQ==}
+ nodemailer@6.9.16:
+ resolution: {integrity: sha512-psAuZdTIRN08HKVd/E8ObdV6NO7NTBY3KsC30F7M4H1OnmLCUNaS56FpYxyb26zWLSyYF9Ozch9KYHhHegsiOQ==}
engines: {node: '>=6.0.0'}
- nodemon@3.0.2:
- resolution: {integrity: sha512-9qIN2LNTrEzpOPBaWHTm4Asy1LxXLSickZStAQ4IZe7zsoIpD/A7LWxhZV3t4Zu352uBcqVnRsDXSMR2Sc3lTA==}
- engines: {node: '>=10'}
- hasBin: true
-
nodemon@3.1.7:
resolution: {integrity: sha512-hLj7fuMow6f0lbB0cD14Lz2xNjwsyruH251Pk4t/yIitCFJbmY1myuLlHm/q06aST4jg6EgAh74PIBBrRqpVAQ==}
engines: {node: '>=10'}
@@ -9035,10 +8620,6 @@ packages:
resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
- npm-run-path@6.0.0:
- resolution: {integrity: sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==}
- engines: {node: '>=18'}
-
nth-check@2.1.1:
resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==}
@@ -9140,12 +8721,6 @@ packages:
resolution: {integrity: sha512-es3mGcDXV6TKPo6n3aohzHm0qxhLyR39MhF6mkD1FwFGjhxnqMqfSIgM0eCpInZvqatve4CxmXcMZw3jnnsaXw==}
hasBin: true
- opentelemetry-instrumentation-fetch-node@1.2.3:
- resolution: {integrity: sha512-Qb11T7KvoCevMaSeuamcLsAD+pZnavkhDnlVL0kRozfhl42dKG5Q3anUklAFKJZjY3twLR+BnRa6DlwwkIE/+A==}
- engines: {node: '>18.0.0'}
- peerDependencies:
- '@opentelemetry/api': ^1.6.0
-
optionator@0.9.4:
resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==}
engines: {node: '>= 0.8.0'}
@@ -9163,9 +8738,6 @@ packages:
otpauth@9.3.4:
resolution: {integrity: sha512-qXv+lpsCUO9ewitLYfeDKbLYt7UUCivnU/fwGK2OqhgrCBsRkTUNKWsgKAhkXG3aistOY+jEeuL90JEBu6W3mQ==}
- outvariant@1.4.2:
- resolution: {integrity: sha512-Ou3dJ6bA/UJ5GVHxah4LnqDwZRwAmWxrG3wtrHrbGnP4RnLCtA64A4F+ae7Y8ww660JaddSoArUR5HjipWSHAQ==}
-
outvariant@1.4.3:
resolution: {integrity: sha512-+Sl2UErvtsoajRDKCE5/dBz4DIvHXQQnAxtQTF04OJxY0+DyZXSo5P5Bb7XYWOh81syohlYL24hbDwxedPUJCA==}
@@ -9235,10 +8807,6 @@ packages:
parse-link-header@2.0.0:
resolution: {integrity: sha512-xjU87V0VyHZybn2RrCX5TIFGxTVZE6zqqZWMPlIKiSKuWh/X5WZdt+w1Ki1nXB+8L/KtL+nZ4iq+sfI6MrhhMw==}
- parse-ms@4.0.0:
- resolution: {integrity: sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==}
- engines: {node: '>=18'}
-
parse-srcset@1.0.2:
resolution: {integrity: sha512-/2qh0lav6CmI15FzA3i/2Bzk2zCgQhGMkvhOhKNcBVQ1ldgpbfiNTVslmooUmWJcADi1f1kIeynbDRVzNlfR6Q==}
@@ -9257,8 +8825,8 @@ packages:
parse5@6.0.1:
resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==}
- parse5@7.1.2:
- resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==}
+ parse5@7.2.1:
+ resolution: {integrity: sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==}
parseurl@1.3.3:
resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==}
@@ -9307,9 +8875,6 @@ packages:
path-to-regexp@3.3.0:
resolution: {integrity: sha512-qyCH421YQPS2WFDxDjftfc1ZR5WKQzVzqsp4n9M2kQhVOo/ByahFoUNJfl58kOcEGfQ//7weFTDhm+ss8Ecxgw==}
- path-to-regexp@6.2.1:
- resolution: {integrity: sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==}
-
path-to-regexp@6.3.0:
resolution: {integrity: sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==}
@@ -9330,14 +8895,14 @@ packages:
pause-stream@0.0.11:
resolution: {integrity: sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A==}
- peek-readable@5.1.3:
- resolution: {integrity: sha512-kCsc9HwH5RgVA3H3VqkWFyGQwsxUxLdiSX1d5nqAm7hnMFjNFX1VhBLmJoUY0hZNc8gmDNgBkLjfhiWPsziXWA==}
- engines: {node: '>=14.16'}
-
peek-readable@5.2.0:
resolution: {integrity: sha512-U94a+eXHzct7vAd19GH3UQ2dH4Satbng0MyYTMaQatL0pvYYL5CTPR25HBhKtecl+4bfu1/i3vC6k0hydO5Vcw==}
engines: {node: '>=14.16'}
+ peek-readable@5.3.1:
+ resolution: {integrity: sha512-GVlENSDW6KHaXcd9zkZltB7tCLosKB/4Hg0fqBJkAoBgYG2Tn1xtMgXtSUuMU9AK/gCm/tTdT8mgAeF4YNeeqw==}
+ engines: {node: '>=14.16'}
+
pend@1.2.0:
resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==}
@@ -9377,8 +8942,8 @@ packages:
resolution: {integrity: sha512-hRCSDuLII9/LE3smys1hRHcu5QGcLs9ggT7I/TCs0IE+2Eesxi9+9RWAAwZ0yaGjxoWICF/YHLOEjydGujoJ+g==}
engines: {node: '>=10'}
- pg@8.13.0:
- resolution: {integrity: sha512-34wkUTh3SxTClfoHB3pQ7bIMvw9dpFU1audQQeZG837fmHfHpr14n/AELVDoOYVDW2h5RDWU78tFjkD+erSBsw==}
+ pg@8.13.1:
+ resolution: {integrity: sha512-OUir1A0rPNZlX//c7ksiu7crsGZTKSOXJPgtNiHGIlC9H0lO+NC6ZDYksSgBYY/thSWhnSRBv8w1lieNNGATNQ==}
engines: {node: '>= 8.0.0'}
peerDependencies:
pg-native: '>=3.0.1'
@@ -9402,10 +8967,17 @@ packages:
picocolors@1.1.0:
resolution: {integrity: sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==}
+ picocolors@1.1.1:
+ resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
+
picomatch@2.3.1:
resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
engines: {node: '>=8.6'}
+ picomatch@4.0.2:
+ resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==}
+ engines: {node: '>=12'}
+
pid-port@1.0.0:
resolution: {integrity: sha512-LSNBeKChRPA4Xlrs6+zV588G1hSrFvANtPV5rt/5MPfSPK3V9XPWxx1d29svsrOjngT9ifLisXWCLS7DvO9ZhQ==}
engines: {node: '>=18'}
@@ -9638,6 +9210,10 @@ packages:
resolution: {integrity: sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==}
engines: {node: ^10 || ^12 || >=14}
+ postcss@8.4.49:
+ resolution: {integrity: sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==}
+ engines: {node: ^10 || ^12 || >=14}
+
postgres-array@2.0.0:
resolution: {integrity: sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==}
engines: {node: '>=4'}
@@ -9694,10 +9270,6 @@ packages:
resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- pretty-ms@9.0.0:
- resolution: {integrity: sha512-E9e9HJ9R9NasGOgPaPE8VMeiPKAyWR5jcFpNnwIejslIhWqdqOrb2wShBsncMPUb+BcCd2OPYfh7p2W6oemTng==}
- engines: {node: '>=18'}
-
private-ip@2.3.3:
resolution: {integrity: sha512-5zyFfekIVUOTVbL92hc8LJOtE/gyGHeREHkJ2yTyByP8Q2YZVoBqLg3EfYLeF0oVvGqtaEX2t2Qovja0/gStXw==}
@@ -9742,9 +9314,6 @@ packages:
resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==}
engines: {node: '>= 6'}
- prop-types@15.8.1:
- resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==}
-
property-information@6.5.0:
resolution: {integrity: sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==}
@@ -9893,12 +9462,6 @@ packages:
re2@1.21.4:
resolution: {integrity: sha512-MVIfXWJmsP28mRsSt8HeL750ifb8H5+oF2UDIxGaiJCr8fkMqhLZ7kcX9ADRk2dC8qeGKedB7UVYRfBVpEiLfA==}
- react-colorful@5.6.1:
- resolution: {integrity: sha512-1exovf0uGTGyq5mXQT0zgQ80uvj2PCwvF8zY1RN9/vbJVSjSo3fsB/4L3ObbF7u70NduSiK4xu4Y6q1MHoUGEw==}
- peerDependencies:
- react: '>=16.8.0'
- react-dom: '>=16.8.0'
-
react-docgen-typescript@2.2.2:
resolution: {integrity: sha512-tvg2ZtOpOi6QDwsb3GZhOjDkkX0h8Z2gipvTg6OVMUyoYoURhEiRNePT8NZItTVCDh39JJHnLdfCOkzoLbFnTg==}
peerDependencies:
@@ -9913,21 +9476,9 @@ packages:
peerDependencies:
react: ^18.3.1
- react-element-to-jsx-string@15.0.0:
- resolution: {integrity: sha512-UDg4lXB6BzlobN60P8fHWVPX3Kyw8ORrTeBtClmIlGdkOOE+GYQSFvmEU5iLLpwp/6v42DINwNcwOhOLfQ//FQ==}
- peerDependencies:
- react: ^0.14.8 || ^15.0.1 || ^16.0.0 || ^17.0.1 || ^18.0.0
- react-dom: ^0.14.8 || ^15.0.1 || ^16.0.0 || ^17.0.1 || ^18.0.0
-
- react-is@16.13.1:
- resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==}
-
react-is@17.0.2:
resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==}
- react-is@18.1.0:
- resolution: {integrity: sha512-Fl7FuabXsJnV5Q1qIOQwx/sagGF18kogb4gpfcG4gjLBWO0WDiiz1ko/ExayuxE7InyQkBLkxRFG5oxY6Uu3Kg==}
-
react-is@18.2.0:
resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==}
@@ -10012,12 +9563,6 @@ packages:
resolution: {integrity: sha512-vqlC04+RQoFalODCbCumG2xIOvapzVMHwsyIGM/SIE8fRhFFsXeH8/QQ+s0T0kDAhKc4k30s73/0ydkHQz6HlQ==}
engines: {node: '>= 0.4'}
- rehype-external-links@3.0.0:
- resolution: {integrity: sha512-yp+e5N9V3C6bwBeAC4n796kc86M4gJCdlVhiMTxIrJG5UHDMh+PJANf9heqORJbt1nrCbDwIlAZKjANIaVBbvw==}
-
- rehype-slug@6.0.0:
- resolution: {integrity: sha512-lWyvf/jwu+oS5+hL5eClVd3hNdmwM1kAC0BUvEGD19pajQMIzcNUd/k9GsfQ+FfECvX+JE+e9/btsKH0EjJT6A==}
-
remark-gfm@4.0.0:
resolution: {integrity: sha512-U92vJgBPkbw4Zfu/IiW2oTZLSL3Zpv+uI7My2eq8JxKgqraFdU8YUGicEJCEgSbeaG+QDFqIcwwfMTOEelPxuA==}
@@ -10100,9 +9645,6 @@ packages:
resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
- rfdc@1.3.0:
- resolution: {integrity: sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==}
-
rfdc@1.4.1:
resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==}
@@ -10111,8 +9653,8 @@ packages:
deprecated: Rimraf versions prior to v4 are no longer supported
hasBin: true
- rollup@4.22.5:
- resolution: {integrity: sha512-WoinX7GeQOFMGznEcWA1WrTQCd/tpEbMkc3nuMs9BT0CPjMdSjPMTVClwWd4pgSQwJdP65SK9mTCNvItlr5o7w==}
+ rollup@4.26.0:
+ resolution: {integrity: sha512-ilcl12hnWonG8f+NxU6BlgysVA0gvY2l8N0R84S1HcINbW20bvwuCngJkkInV6LXhwRpucsW5k1ovDwEdBVrNg==}
engines: {node: '>=18.0.0', npm: '>=8.0.0'}
hasBin: true
@@ -10280,8 +9822,8 @@ packages:
shiki@0.14.7:
resolution: {integrity: sha512-dNPAPrxSc87ua2sKJ3H5dQ/6ZaY8RNnaAqK+t0eG7p0Soi2ydiqbGOTaZCqaYvA/uZYfS1LJnemt3Q+mSfcPCg==}
- shiki@1.21.0:
- resolution: {integrity: sha512-apCH5BoWTrmHDPGgg3RF8+HAAbEL/CdbYr8rMw7eIrdhCkZHdVGat5mMNlRtd1erNG01VPMIKHNQ0Pj2HMAiog==}
+ shiki@1.22.2:
+ resolution: {integrity: sha512-3IZau0NdGKXhH2bBlUk4w1IHNxPh6A5B2sUpyY+8utLu2j/h1QpFkAaUA1bAMxOWWGtTWcAh531vnS4NJKS/lA==}
shimmer@1.2.1:
resolution: {integrity: sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==}
@@ -10550,9 +10092,14 @@ packages:
react-dom:
optional: true
- storybook@8.3.4:
- resolution: {integrity: sha512-nzvuK5TsEgJwcWGLGgafabBOxKn37lfJVv7ZoUVPgJIjk2mNRyJDFwYRJzUZaD37eiR/c/lQ6MoaeqlGwiXoxw==}
+ storybook@8.4.4:
+ resolution: {integrity: sha512-xBOq3q/MuUUg3zM0imMMaK5ziKq3TO388jsnaiemJ4Uf0ZGwcHjM8HDBCDt0s5/CfsOQ49zo1ouZ3aNlu0qsUg==}
hasBin: true
+ peerDependencies:
+ prettier: ^2 || ^3
+ peerDependenciesMeta:
+ prettier:
+ optional: true
stream-browserify@3.0.0:
resolution: {integrity: sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==}
@@ -10653,10 +10200,6 @@ packages:
resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==}
engines: {node: '>=12'}
- strip-final-newline@4.0.0:
- resolution: {integrity: sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==}
- engines: {node: '>=18'}
-
strip-indent@3.0.0:
resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==}
engines: {node: '>=8'}
@@ -10683,8 +10226,8 @@ packages:
resolution: {integrity: sha512-pQ+V+nYQdC5H3Q7qBZAz/MO6lwGhoC2gOAjuouGf/VO0m7vQRh8QNMl2Uf6SwAtzZ9bOw3UIeBukEGNJl5dtXQ==}
engines: {node: '>=14.16'}
- strtok3@8.1.0:
- resolution: {integrity: sha512-ExzDvHYPj6F6QkSNe/JxSlBxTh3OrI6wrAIz53ulxo1c4hBJ1bT9C/JrAthEKHWG9riVH3Xzg7B03Oxty6S2Lw==}
+ strtok3@9.0.1:
+ resolution: {integrity: sha512-ERPW+XkvX9W2A+ov07iy+ZFJpVdik04GhDA4eVogiG9hpC97Kem2iucyzhFxbFRvQ5o2UckFtKZdp1hkGvnrEw==}
engines: {node: '>=16'}
stylehacks@6.1.1:
@@ -10742,11 +10285,8 @@ packages:
resolution: {integrity: sha512-+HRtZ40Vc+6YfCDWCeAsixwxJgMbPY4HHuTgzPYH3JXvqHWUlsCfy+ylXlAKhFNcuLp4xVeWeFBUhDk+7KYUvQ==}
engines: {node: '>=14.16'}
- telejson@7.2.0:
- resolution: {integrity: sha512-1QTEcJkJEhc8OnStBx/ILRu5J2p0GjvWsBx56bmZRqnrkdBMUe+nX92jxV+p3dB4CP6PZCdJMQJwCggkNBMzkQ==}
-
- terser@5.33.0:
- resolution: {integrity: sha512-JuPVaB7s1gdFKPKTelwUyRq5Sid2A3Gko2S0PncwdBq7kN9Ti9HPWDQ06MPsEDGsZeVESjKEnyGy68quBk1w6g==}
+ terser@5.36.0:
+ resolution: {integrity: sha512-IYV9eNMuFAV4THUspIRXkLakHnV6XO7FEdtKjf/mDyrnqUg9LnlOn6/RwRvM9SZjR4GUq8Nk8zj67FzVARr74w==}
engines: {node: '>=10'}
hasBin: true
@@ -10811,6 +10351,13 @@ packages:
resolution: {integrity: sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==}
engines: {node: '>=14.0.0'}
+ tldts-core@6.1.63:
+ resolution: {integrity: sha512-H1XCt54xY+QPbwhTgmxLkepX0MVHu3USfMmejiCOdkMbRcP22Pn2FVF127r/GWXVDmXTRezyF3Ckvhn4Fs6j7Q==}
+
+ tldts@6.1.63:
+ resolution: {integrity: sha512-YWwhsjyn9sB/1rOkSRYxvkN/wl5LFM1QDv6F2pVR+pb/jFne4EOBxHfkKVWvDIBEAw9iGOwwubHtQTm0WRT5sQ==}
+ hasBin: true
+
tmp@0.2.3:
resolution: {integrity: sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==}
engines: {node: '>=14.14'}
@@ -10856,6 +10403,10 @@ packages:
resolution: {integrity: sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==}
engines: {node: '>=6'}
+ tough-cookie@5.0.0:
+ resolution: {integrity: sha512-FRKsF7cz96xIIeMZ82ehjC3xW2E+O2+v11udrDYewUbszngYhsGa8z6YUMMzO9QJZzzyd0nGGXnML/TReX6W8Q==}
+ engines: {node: '>=16'}
+
tr46@0.0.3:
resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==}
@@ -10866,6 +10417,10 @@ packages:
trace-redirect@1.0.6:
resolution: {integrity: sha512-UUfa1DjjU5flcjMdaFIiIEGDTyu2y/IiMjOX4uGXa7meKBS4vD4f2Uy/tken9Qkd4Jsm4sRsfZcIIPqrRVF3Mg==}
+ tree-kill@1.2.2:
+ resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==}
+ hasBin: true
+
trim-lines@3.0.1:
resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==}
@@ -10886,8 +10441,8 @@ packages:
peerDependencies:
typescript: '>=4.2.0'
- ts-case-convert@2.0.7:
- resolution: {integrity: sha512-Kqj8wrkuduWsKUOUNRczrkdHCDt4ZNNd6HKjVw42EnMIGHQUABS4pqfy0acETVLwUTppc1fzo/yi11+uMTaqzw==}
+ ts-case-convert@2.1.0:
+ resolution: {integrity: sha512-Ye79el/pHYXfoew6kqhMwCoxp4NWjKNcm2kBzpmEMIU9dd9aBmHNNFtZ+WTm0rz1ngyDmfqDXDlyUnBXayiD0w==}
ts-dedent@2.2.0:
resolution: {integrity: sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==}
@@ -10985,8 +10540,8 @@ packages:
resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==}
engines: {node: '>=12.20'}
- type-fest@4.20.1:
- resolution: {integrity: sha512-R6wDsVsoS9xYOpy8vgeBlqpdOyzJ12HNfQhC/aAKWM3YoCV9TtunJzh/QpkMgeDhkoynDcw5f1y+qF9yc/HHyg==}
+ type-fest@4.27.0:
+ resolution: {integrity: sha512-3IMSWgP7C5KSQqmo1wjhKrwsvXAtF33jO3QY+Uy++ia7hqvgSK6iXbbg5PbDBc1P2ZbNEDgejOrN4YooXvhwCw==}
engines: {node: '>=16'}
type-is@1.6.18:
@@ -11097,23 +10652,13 @@ packages:
engines: {node: '>=14.17'}
hasBin: true
- typescript@5.3.3:
- resolution: {integrity: sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==}
- engines: {node: '>=14.17'}
- hasBin: true
-
typescript@5.4.2:
resolution: {integrity: sha512-+2/g0Fds1ERlP6JsakQQDXjZdZMM+rqpamFZJEKh4kwTIn3iDkgKtby0CeNd5ATNZ4Ry1ax15TMx0W2V+miizQ==}
engines: {node: '>=14.17'}
hasBin: true
- typescript@5.5.4:
- resolution: {integrity: sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==}
- engines: {node: '>=14.17'}
- hasBin: true
-
- typescript@5.6.2:
- resolution: {integrity: sha512-NW8ByodCSNCwZeghjN3o+JX5OFH0Ojg6sadjEKY4huZ52TqbJTJnDo5+Tw98lSy63NZvi4n+ez5m2u5d4PkZyw==}
+ typescript@5.6.3:
+ resolution: {integrity: sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==}
engines: {node: '>=14.17'}
hasBin: true
@@ -11141,9 +10686,6 @@ packages:
undefsafe@2.0.5:
resolution: {integrity: sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==}
- undici-types@5.26.5:
- resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==}
-
undici-types@6.19.8:
resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==}
@@ -11155,10 +10697,6 @@ packages:
resolution: {integrity: sha512-AITZfPuxubm31Sx0vr8bteSalEbs9wQb/BOBi9FPlD9Qpd6HxZ4Q0+hI742jBhkPb4RT2v5MQzaW5VhRVyj+9A==}
engines: {node: '>=18.17'}
- unicorn-magic@0.3.0:
- resolution: {integrity: sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==}
- engines: {node: '>=18'}
-
unified@11.0.4:
resolution: {integrity: sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==}
@@ -11295,8 +10833,8 @@ packages:
vite-plugin-turbosnap@1.0.3:
resolution: {integrity: sha512-p4D8CFVhZS412SyQX125qxyzOgIFouwOcvjZWk6bQbNPR1wtaEzFT6jZxAjf1dejlGqa6fqHcuCvQea6EWUkUA==}
- vite@5.4.8:
- resolution: {integrity: sha512-FqrItQ4DT1NC4zCUqMB4c4AZORMKIa0m8/URVCZ77OZ/QSNeJ54bU1vrFADbDsuwfIPcgknRkmqakQcgnL4GiQ==}
+ vite@5.4.11:
+ resolution: {integrity: sha512-c7jFQRklXua0mTzneGW9QVyxFjUgwcihC4bXEtujIo2ouWCe1Ajt/amn2PCxYnhYfd5k09JX3SB7OYWFKYqj8Q==}
engines: {node: ^18.0.0 || >=20.0.0}
hasBin: true
peerDependencies:
@@ -11408,9 +10946,6 @@ packages:
vue-component-type-helpers@2.1.10:
resolution: {integrity: sha512-lfgdSLQKrUmADiSV6PbBvYgQ33KF3Ztv6gP85MfGaGaSGMTXORVaHT1EHfsqCgzRNBstPKYDmvAV9Do5CmJ07A==}
- vue-component-type-helpers@2.1.6:
- resolution: {integrity: sha512-ng11B8B/ZADUMMOsRbqv0arc442q7lifSubD0v8oDXIFoMg/mXwAPUunrroIDkY+mcD0dHKccdaznSVp8EoX3w==}
-
vue-demi@0.14.7:
resolution: {integrity: sha512-EOG8KXDQNwkJILkx/gPcoL/7vH+hORoBaKgGe+6W7VFMvCYJfmF2dGbvgDroVnI8LU7/kTu8mbjRZGBU1z9NTA==}
engines: {node: '>=12'}
@@ -11441,22 +10976,14 @@ packages:
vue-template-compiler@2.7.14:
resolution: {integrity: sha512-zyA5Y3ArvVG0NacJDkkzJuPQDF8RFeRlzV2vLeSnhSpieO6LK2OVbdLPi5MPPs09Ii+gMO8nY4S3iKQxBxDmWQ==}
- vue-tsc@2.1.6:
- resolution: {integrity: sha512-f98dyZp5FOukcYmbFpuSCJ4Z0vHSOSmxGttZJCsFeX0M4w/Rsq0s4uKXjcSRsZqsRgQa6z7SfuO+y0HVICE57Q==}
+ vue-tsc@2.1.10:
+ resolution: {integrity: sha512-RBNSfaaRHcN5uqVqJSZh++Gy/YUzryuv9u1aFWhsammDJXNtUiJMNoJ747lZcQ68wUQFx6E73y4FY3D8E7FGMA==}
hasBin: true
peerDependencies:
typescript: '>=5.0.0'
- vue@3.4.37:
- resolution: {integrity: sha512-3vXvNfkKTBsSJ7JP+LyR7GBuwQuckbWvuwAid3xbqK9ppsKt/DUvfqgZ48fgOLEfpy1IacL5f8QhUVl77RaI7A==}
- peerDependencies:
- typescript: '*'
- peerDependenciesMeta:
- typescript:
- optional: true
-
- vue@3.5.11:
- resolution: {integrity: sha512-/8Wurrd9J3lb72FTQS7gRMNQD4nztTtKPmuDuPuhqXmmpD6+skVjAeahNpVzsuky6Sy9gy7wn8UadqPtt9SQIg==}
+ vue@3.5.12:
+ resolution: {integrity: sha512-CLVZtXtn2ItBIi/zHZ0Sg1Xkb7+PU32bJJ8Bmy7ts3jxXTcbfsEfBivFYYWz1Hur+lalqGAh65Coin0r+HRUfg==}
peerDependencies:
typescript: '*'
peerDependenciesMeta:
@@ -11702,8 +11229,8 @@ packages:
resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==}
engines: {node: '>=12.20'}
- yoctocolors@2.0.2:
- resolution: {integrity: sha512-Ct97huExsu7cWeEjmrXlofevF8CvzUglJ4iGUet5B8xn1oumtAZBpHU4GzYuoE6PVqcZ5hghtBrSlhwHuR1Jmw==}
+ yoctocolors-cjs@2.1.2:
+ resolution: {integrity: sha512-cYVsTjKl8b+FrnidjibDWskAv7UKOfcwaVZdp/it9n1s9fU3IkgDbhdIRKCW4JDsAlECJY0ytoVPT3sK6kideA==}
engines: {node: '>=18'}
zip-stream@6.0.1:
@@ -11751,7 +11278,7 @@ snapshots:
'@aws-sdk/types': 3.609.0
'@aws-sdk/util-locate-window': 3.208.0
'@smithy/util-utf8': 2.0.0
- tslib: 2.6.3
+ tslib: 2.7.0
'@aws-crypto/sha256-browser@5.2.0':
dependencies:
@@ -11761,13 +11288,13 @@ snapshots:
'@aws-sdk/types': 3.609.0
'@aws-sdk/util-locate-window': 3.208.0
'@smithy/util-utf8': 2.0.0
- tslib: 2.6.3
+ tslib: 2.7.0
'@aws-crypto/sha256-js@5.2.0':
dependencies:
'@aws-crypto/util': 5.2.0
'@aws-sdk/types': 3.609.0
- tslib: 2.6.3
+ tslib: 2.7.0
'@aws-crypto/supports-web-crypto@5.2.0':
dependencies:
@@ -11883,7 +11410,7 @@ snapshots:
'@smithy/util-middleware': 3.0.3
'@smithy/util-retry': 3.0.3
'@smithy/util-utf8': 3.0.0
- tslib: 2.6.3
+ tslib: 2.7.0
transitivePeerDependencies:
- aws-crt
@@ -11971,7 +11498,7 @@ snapshots:
'@smithy/util-middleware': 3.0.3
'@smithy/util-retry': 3.0.3
'@smithy/util-utf8': 3.0.0
- tslib: 2.6.3
+ tslib: 2.7.0
transitivePeerDependencies:
- aws-crt
@@ -11983,7 +11510,7 @@ snapshots:
'@smithy/smithy-client': 3.1.11
'@smithy/types': 3.3.0
fast-xml-parser: 4.2.5
- tslib: 2.6.3
+ tslib: 2.7.0
'@aws-sdk/credential-provider-env@3.609.0':
dependencies:
@@ -12035,7 +11562,7 @@ snapshots:
'@smithy/property-provider': 3.1.3
'@smithy/shared-ini-file-loader': 3.1.4
'@smithy/types': 3.3.0
- tslib: 2.6.3
+ tslib: 2.7.0
transitivePeerDependencies:
- '@aws-sdk/client-sso-oidc'
- '@aws-sdk/client-sts'
@@ -12089,14 +11616,14 @@ snapshots:
'@smithy/protocol-http': 4.1.0
'@smithy/types': 3.3.0
'@smithy/util-config-provider': 3.0.0
- tslib: 2.6.3
+ tslib: 2.7.0
'@aws-sdk/middleware-expect-continue@3.620.0':
dependencies:
'@aws-sdk/types': 3.609.0
'@smithy/protocol-http': 4.1.0
'@smithy/types': 3.3.0
- tslib: 2.6.3
+ tslib: 2.7.0
'@aws-sdk/middleware-flexible-checksums@3.620.0':
dependencies:
@@ -12107,33 +11634,33 @@ snapshots:
'@smithy/protocol-http': 4.1.0
'@smithy/types': 3.3.0
'@smithy/util-utf8': 3.0.0
- tslib: 2.6.3
+ tslib: 2.7.0
'@aws-sdk/middleware-host-header@3.620.0':
dependencies:
'@aws-sdk/types': 3.609.0
'@smithy/protocol-http': 4.1.0
'@smithy/types': 3.3.0
- tslib: 2.6.3
+ tslib: 2.7.0
'@aws-sdk/middleware-location-constraint@3.609.0':
dependencies:
'@aws-sdk/types': 3.609.0
'@smithy/types': 3.3.0
- tslib: 2.6.3
+ tslib: 2.7.0
'@aws-sdk/middleware-logger@3.609.0':
dependencies:
'@aws-sdk/types': 3.609.0
'@smithy/types': 3.3.0
- tslib: 2.6.3
+ tslib: 2.7.0
'@aws-sdk/middleware-recursion-detection@3.620.0':
dependencies:
'@aws-sdk/types': 3.609.0
'@smithy/protocol-http': 4.1.0
'@smithy/types': 3.3.0
- tslib: 2.6.3
+ tslib: 2.7.0
'@aws-sdk/middleware-sdk-s3@3.620.0':
dependencies:
@@ -12147,7 +11674,7 @@ snapshots:
'@smithy/util-config-provider': 3.0.0
'@smithy/util-stream': 3.1.3
'@smithy/util-utf8': 3.0.0
- tslib: 2.6.3
+ tslib: 2.7.0
'@aws-sdk/middleware-signing@3.620.0':
dependencies:
@@ -12157,13 +11684,13 @@ snapshots:
'@smithy/signature-v4': 4.1.0
'@smithy/types': 3.3.0
'@smithy/util-middleware': 3.0.3
- tslib: 2.6.3
+ tslib: 2.7.0
'@aws-sdk/middleware-ssec@3.609.0':
dependencies:
'@aws-sdk/types': 3.609.0
'@smithy/types': 3.3.0
- tslib: 2.6.3
+ tslib: 2.7.0
'@aws-sdk/middleware-user-agent@3.620.0':
dependencies:
@@ -12171,7 +11698,7 @@ snapshots:
'@aws-sdk/util-endpoints': 3.614.0
'@smithy/protocol-http': 4.1.0
'@smithy/types': 3.3.0
- tslib: 2.6.3
+ tslib: 2.7.0
'@aws-sdk/region-config-resolver@3.614.0':
dependencies:
@@ -12180,7 +11707,7 @@ snapshots:
'@smithy/types': 3.3.0
'@smithy/util-config-provider': 3.0.0
'@smithy/util-middleware': 3.0.3
- tslib: 2.6.3
+ tslib: 2.7.0
'@aws-sdk/signature-v4-multi-region@3.620.0':
dependencies:
@@ -12189,7 +11716,7 @@ snapshots:
'@smithy/protocol-http': 4.1.0
'@smithy/signature-v4': 4.1.0
'@smithy/types': 3.3.0
- tslib: 2.6.3
+ tslib: 2.7.0
'@aws-sdk/token-providers@3.614.0(@aws-sdk/client-sso-oidc@3.620.0(@aws-sdk/client-sts@3.620.0))':
dependencies:
@@ -12203,7 +11730,7 @@ snapshots:
'@aws-sdk/types@3.609.0':
dependencies:
'@smithy/types': 3.3.0
- tslib: 2.6.3
+ tslib: 2.7.0
'@aws-sdk/util-arn-parser@3.568.0':
dependencies:
@@ -12214,7 +11741,7 @@ snapshots:
'@aws-sdk/types': 3.609.0
'@smithy/types': 3.3.0
'@smithy/util-endpoints': 2.0.5
- tslib: 2.6.3
+ tslib: 2.7.0
'@aws-sdk/util-locate-window@3.208.0':
dependencies:
@@ -12225,19 +11752,19 @@ snapshots:
'@aws-sdk/types': 3.609.0
'@smithy/types': 3.3.0
bowser: 2.11.0
- tslib: 2.6.3
+ tslib: 2.7.0
'@aws-sdk/util-user-agent-node@3.614.0':
dependencies:
'@aws-sdk/types': 3.609.0
'@smithy/node-config-provider': 3.1.4
'@smithy/types': 3.3.0
- tslib: 2.6.3
+ tslib: 2.7.0
'@aws-sdk/xml-builder@3.609.0':
dependencies:
'@smithy/types': 3.3.0
- tslib: 2.6.3
+ tslib: 2.7.0
'@babel/code-frame@7.23.5':
dependencies:
@@ -12266,7 +11793,7 @@ snapshots:
'@babel/traverse': 7.23.5
'@babel/types': 7.24.7
convert-source-map: 2.0.0
- debug: 4.3.5(supports-color@8.1.1)
+ debug: 4.3.5(supports-color@5.5.0)
gensync: 1.0.0-beta.2
json5: 2.2.3
semver: 6.3.1
@@ -12281,12 +11808,12 @@ snapshots:
'@babel/helper-compilation-targets': 7.24.7
'@babel/helper-module-transforms': 7.24.7(@babel/core@7.24.7)
'@babel/helpers': 7.24.7
- '@babel/parser': 7.24.7
+ '@babel/parser': 7.25.7
'@babel/template': 7.24.7
'@babel/traverse': 7.24.7
- '@babel/types': 7.24.7
+ '@babel/types': 7.25.7
convert-source-map: 2.0.0
- debug: 4.3.5(supports-color@8.1.1)
+ debug: 4.3.7(supports-color@8.1.1)
gensync: 1.0.0-beta.2
json5: 2.2.3
semver: 6.3.1
@@ -12323,11 +11850,11 @@ snapshots:
'@babel/helper-function-name@7.24.7':
dependencies:
'@babel/template': 7.24.7
- '@babel/types': 7.24.7
+ '@babel/types': 7.25.7
'@babel/helper-hoist-variables@7.24.7':
dependencies:
- '@babel/types': 7.24.7
+ '@babel/types': 7.25.7
'@babel/helper-module-imports@7.22.15':
dependencies:
@@ -12336,7 +11863,7 @@ snapshots:
'@babel/helper-module-imports@7.24.7':
dependencies:
'@babel/traverse': 7.24.7
- '@babel/types': 7.24.7
+ '@babel/types': 7.25.7
transitivePeerDependencies:
- supports-color
@@ -12356,7 +11883,7 @@ snapshots:
'@babel/helper-module-imports': 7.24.7
'@babel/helper-simple-access': 7.24.7
'@babel/helper-split-export-declaration': 7.24.7
- '@babel/helper-validator-identifier': 7.24.7
+ '@babel/helper-validator-identifier': 7.25.7
transitivePeerDependencies:
- supports-color
@@ -12369,7 +11896,7 @@ snapshots:
'@babel/helper-simple-access@7.24.7':
dependencies:
'@babel/traverse': 7.24.7
- '@babel/types': 7.24.7
+ '@babel/types': 7.25.7
transitivePeerDependencies:
- supports-color
@@ -12400,7 +11927,7 @@ snapshots:
'@babel/helpers@7.24.7':
dependencies:
'@babel/template': 7.24.7
- '@babel/types': 7.24.7
+ '@babel/types': 7.25.7
'@babel/highlight@7.24.7':
dependencies:
@@ -12578,8 +12105,8 @@ snapshots:
'@babel/template@7.24.7':
dependencies:
'@babel/code-frame': 7.24.7
- '@babel/parser': 7.24.7
- '@babel/types': 7.24.7
+ '@babel/parser': 7.25.7
+ '@babel/types': 7.25.7
'@babel/traverse@7.23.5':
dependencies:
@@ -12591,7 +12118,7 @@ snapshots:
'@babel/helper-split-export-declaration': 7.24.7
'@babel/parser': 7.24.7
'@babel/types': 7.24.7
- debug: 4.3.5(supports-color@8.1.1)
+ debug: 4.3.5(supports-color@5.5.0)
globals: 11.12.0
transitivePeerDependencies:
- supports-color
@@ -12606,7 +12133,7 @@ snapshots:
'@babel/helper-split-export-declaration': 7.24.7
'@babel/parser': 7.24.7
'@babel/types': 7.24.7
- debug: 4.3.5(supports-color@8.1.1)
+ debug: 4.3.5(supports-color@5.5.0)
globals: 11.12.0
transitivePeerDependencies:
- supports-color
@@ -12623,30 +12150,28 @@ snapshots:
'@babel/helper-validator-identifier': 7.25.7
to-fast-properties: 2.0.0
- '@base2/pretty-print-object@1.0.1': {}
-
'@bcoe/v8-coverage@0.2.3': {}
- '@bull-board/api@6.0.0(@bull-board/ui@6.0.0)':
+ '@bull-board/api@6.5.0(@bull-board/ui@6.5.0)':
dependencies:
- '@bull-board/ui': 6.0.0
+ '@bull-board/ui': 6.5.0
redis-info: 3.1.0
- '@bull-board/fastify@6.0.0':
+ '@bull-board/fastify@6.5.0':
dependencies:
- '@bull-board/api': 6.0.0(@bull-board/ui@6.0.0)
- '@bull-board/ui': 6.0.0
- '@fastify/static': 8.0.1
+ '@bull-board/api': 6.5.0(@bull-board/ui@6.5.0)
+ '@bull-board/ui': 6.5.0
+ '@fastify/static': 8.0.2
'@fastify/view': 10.0.1
ejs: 3.1.10
- '@bull-board/ui@6.0.0':
+ '@bull-board/ui@6.5.0':
dependencies:
- '@bull-board/api': 6.0.0(@bull-board/ui@6.0.0)
+ '@bull-board/api': 6.5.0(@bull-board/ui@6.5.0)
- '@bundled-es-modules/cookie@2.0.0':
+ '@bundled-es-modules/cookie@2.0.1':
dependencies:
- cookie: 0.5.0
+ cookie: 0.7.2
'@bundled-es-modules/statuses@1.0.1':
dependencies:
@@ -12728,7 +12253,7 @@ snapshots:
'@cropper/utils@2.0.0-rc.2': {}
- '@cypress/request@3.0.5':
+ '@cypress/request@3.0.6':
dependencies:
aws-sign2: 0.7.0
aws4: 1.12.0
@@ -12736,7 +12261,7 @@ snapshots:
combined-stream: 1.0.8
extend: 3.0.2
forever-agent: 0.6.1
- form-data: 4.0.0
+ form-data: 4.0.1
http-signature: 1.4.0
is-typedarray: 1.0.0
isstream: 0.1.2
@@ -12745,7 +12270,7 @@ snapshots:
performance-now: 2.1.0
qs: 6.13.0
safe-buffer: 5.2.1
- tough-cookie: 4.1.4
+ tough-cookie: 5.0.0
tunnel-agent: 0.6.0
uuid: 8.3.2
@@ -12776,352 +12301,211 @@ snapshots:
tslib: 2.7.0
optional: true
- '@esbuild/aix-ppc64@0.19.11':
- optional: true
-
'@esbuild/aix-ppc64@0.21.5':
optional: true
- '@esbuild/aix-ppc64@0.23.0':
- optional: true
-
- '@esbuild/aix-ppc64@0.23.1':
+ '@esbuild/aix-ppc64@0.24.0':
optional: true
'@esbuild/android-arm64@0.18.20':
optional: true
- '@esbuild/android-arm64@0.19.11':
- optional: true
-
'@esbuild/android-arm64@0.21.5':
optional: true
- '@esbuild/android-arm64@0.23.0':
- optional: true
-
- '@esbuild/android-arm64@0.23.1':
+ '@esbuild/android-arm64@0.24.0':
optional: true
'@esbuild/android-arm@0.18.20':
optional: true
- '@esbuild/android-arm@0.19.11':
- optional: true
-
'@esbuild/android-arm@0.21.5':
optional: true
- '@esbuild/android-arm@0.23.0':
- optional: true
-
- '@esbuild/android-arm@0.23.1':
+ '@esbuild/android-arm@0.24.0':
optional: true
'@esbuild/android-x64@0.18.20':
optional: true
- '@esbuild/android-x64@0.19.11':
- optional: true
-
'@esbuild/android-x64@0.21.5':
optional: true
- '@esbuild/android-x64@0.23.0':
- optional: true
-
- '@esbuild/android-x64@0.23.1':
+ '@esbuild/android-x64@0.24.0':
optional: true
'@esbuild/darwin-arm64@0.18.20':
optional: true
- '@esbuild/darwin-arm64@0.19.11':
- optional: true
-
'@esbuild/darwin-arm64@0.21.5':
optional: true
- '@esbuild/darwin-arm64@0.23.0':
- optional: true
-
- '@esbuild/darwin-arm64@0.23.1':
+ '@esbuild/darwin-arm64@0.24.0':
optional: true
'@esbuild/darwin-x64@0.18.20':
optional: true
- '@esbuild/darwin-x64@0.19.11':
- optional: true
-
'@esbuild/darwin-x64@0.21.5':
optional: true
- '@esbuild/darwin-x64@0.23.0':
- optional: true
-
- '@esbuild/darwin-x64@0.23.1':
+ '@esbuild/darwin-x64@0.24.0':
optional: true
'@esbuild/freebsd-arm64@0.18.20':
optional: true
- '@esbuild/freebsd-arm64@0.19.11':
- optional: true
-
'@esbuild/freebsd-arm64@0.21.5':
optional: true
- '@esbuild/freebsd-arm64@0.23.0':
- optional: true
-
- '@esbuild/freebsd-arm64@0.23.1':
+ '@esbuild/freebsd-arm64@0.24.0':
optional: true
'@esbuild/freebsd-x64@0.18.20':
optional: true
- '@esbuild/freebsd-x64@0.19.11':
- optional: true
-
'@esbuild/freebsd-x64@0.21.5':
optional: true
- '@esbuild/freebsd-x64@0.23.0':
- optional: true
-
- '@esbuild/freebsd-x64@0.23.1':
+ '@esbuild/freebsd-x64@0.24.0':
optional: true
'@esbuild/linux-arm64@0.18.20':
optional: true
- '@esbuild/linux-arm64@0.19.11':
- optional: true
-
'@esbuild/linux-arm64@0.21.5':
optional: true
- '@esbuild/linux-arm64@0.23.0':
- optional: true
-
- '@esbuild/linux-arm64@0.23.1':
+ '@esbuild/linux-arm64@0.24.0':
optional: true
'@esbuild/linux-arm@0.18.20':
optional: true
- '@esbuild/linux-arm@0.19.11':
- optional: true
-
'@esbuild/linux-arm@0.21.5':
optional: true
- '@esbuild/linux-arm@0.23.0':
- optional: true
-
- '@esbuild/linux-arm@0.23.1':
+ '@esbuild/linux-arm@0.24.0':
optional: true
'@esbuild/linux-ia32@0.18.20':
optional: true
- '@esbuild/linux-ia32@0.19.11':
- optional: true
-
'@esbuild/linux-ia32@0.21.5':
optional: true
- '@esbuild/linux-ia32@0.23.0':
- optional: true
-
- '@esbuild/linux-ia32@0.23.1':
+ '@esbuild/linux-ia32@0.24.0':
optional: true
'@esbuild/linux-loong64@0.18.20':
optional: true
- '@esbuild/linux-loong64@0.19.11':
- optional: true
-
'@esbuild/linux-loong64@0.21.5':
optional: true
- '@esbuild/linux-loong64@0.23.0':
- optional: true
-
- '@esbuild/linux-loong64@0.23.1':
+ '@esbuild/linux-loong64@0.24.0':
optional: true
'@esbuild/linux-mips64el@0.18.20':
optional: true
- '@esbuild/linux-mips64el@0.19.11':
- optional: true
-
'@esbuild/linux-mips64el@0.21.5':
optional: true
- '@esbuild/linux-mips64el@0.23.0':
- optional: true
-
- '@esbuild/linux-mips64el@0.23.1':
+ '@esbuild/linux-mips64el@0.24.0':
optional: true
'@esbuild/linux-ppc64@0.18.20':
optional: true
- '@esbuild/linux-ppc64@0.19.11':
- optional: true
-
'@esbuild/linux-ppc64@0.21.5':
optional: true
- '@esbuild/linux-ppc64@0.23.0':
- optional: true
-
- '@esbuild/linux-ppc64@0.23.1':
+ '@esbuild/linux-ppc64@0.24.0':
optional: true
'@esbuild/linux-riscv64@0.18.20':
optional: true
- '@esbuild/linux-riscv64@0.19.11':
- optional: true
-
'@esbuild/linux-riscv64@0.21.5':
optional: true
- '@esbuild/linux-riscv64@0.23.0':
- optional: true
-
- '@esbuild/linux-riscv64@0.23.1':
+ '@esbuild/linux-riscv64@0.24.0':
optional: true
'@esbuild/linux-s390x@0.18.20':
optional: true
- '@esbuild/linux-s390x@0.19.11':
- optional: true
-
'@esbuild/linux-s390x@0.21.5':
optional: true
- '@esbuild/linux-s390x@0.23.0':
- optional: true
-
- '@esbuild/linux-s390x@0.23.1':
+ '@esbuild/linux-s390x@0.24.0':
optional: true
'@esbuild/linux-x64@0.18.20':
optional: true
- '@esbuild/linux-x64@0.19.11':
- optional: true
-
'@esbuild/linux-x64@0.21.5':
optional: true
- '@esbuild/linux-x64@0.23.0':
- optional: true
-
- '@esbuild/linux-x64@0.23.1':
+ '@esbuild/linux-x64@0.24.0':
optional: true
'@esbuild/netbsd-x64@0.18.20':
optional: true
- '@esbuild/netbsd-x64@0.19.11':
- optional: true
-
'@esbuild/netbsd-x64@0.21.5':
optional: true
- '@esbuild/netbsd-x64@0.23.0':
- optional: true
-
- '@esbuild/netbsd-x64@0.23.1':
+ '@esbuild/netbsd-x64@0.24.0':
optional: true
- '@esbuild/openbsd-arm64@0.23.0':
- optional: true
-
- '@esbuild/openbsd-arm64@0.23.1':
+ '@esbuild/openbsd-arm64@0.24.0':
optional: true
'@esbuild/openbsd-x64@0.18.20':
optional: true
- '@esbuild/openbsd-x64@0.19.11':
- optional: true
-
'@esbuild/openbsd-x64@0.21.5':
optional: true
- '@esbuild/openbsd-x64@0.23.0':
- optional: true
-
- '@esbuild/openbsd-x64@0.23.1':
+ '@esbuild/openbsd-x64@0.24.0':
optional: true
'@esbuild/sunos-x64@0.18.20':
optional: true
- '@esbuild/sunos-x64@0.19.11':
- optional: true
-
'@esbuild/sunos-x64@0.21.5':
optional: true
- '@esbuild/sunos-x64@0.23.0':
- optional: true
-
- '@esbuild/sunos-x64@0.23.1':
+ '@esbuild/sunos-x64@0.24.0':
optional: true
'@esbuild/win32-arm64@0.18.20':
optional: true
- '@esbuild/win32-arm64@0.19.11':
- optional: true
-
'@esbuild/win32-arm64@0.21.5':
optional: true
- '@esbuild/win32-arm64@0.23.0':
- optional: true
-
- '@esbuild/win32-arm64@0.23.1':
+ '@esbuild/win32-arm64@0.24.0':
optional: true
'@esbuild/win32-ia32@0.18.20':
optional: true
- '@esbuild/win32-ia32@0.19.11':
- optional: true
-
'@esbuild/win32-ia32@0.21.5':
optional: true
- '@esbuild/win32-ia32@0.23.0':
- optional: true
-
- '@esbuild/win32-ia32@0.23.1':
+ '@esbuild/win32-ia32@0.24.0':
optional: true
'@esbuild/win32-x64@0.18.20':
optional: true
- '@esbuild/win32-x64@0.19.11':
- optional: true
-
'@esbuild/win32-x64@0.21.5':
optional: true
- '@esbuild/win32-x64@0.23.0':
- optional: true
-
- '@esbuild/win32-x64@0.23.1':
+ '@esbuild/win32-x64@0.24.0':
optional: true
'@eslint-community/eslint-utils@4.4.0(eslint@8.57.0)':
@@ -13129,29 +12513,33 @@ snapshots:
eslint: 8.57.0
eslint-visitor-keys: 3.4.3
- '@eslint-community/eslint-utils@4.4.0(eslint@9.8.0)':
+ '@eslint-community/eslint-utils@4.4.0(eslint@9.14.0)':
dependencies:
- eslint: 9.8.0
+ eslint: 9.14.0
eslint-visitor-keys: 3.4.3
'@eslint-community/regexpp@4.11.0': {}
+ '@eslint-community/regexpp@4.12.1': {}
+
'@eslint-community/regexpp@4.6.2': {}
'@eslint/compat@1.1.1': {}
- '@eslint/config-array@0.17.1':
+ '@eslint/config-array@0.18.0':
dependencies:
'@eslint/object-schema': 2.1.4
- debug: 4.3.5(supports-color@8.1.1)
+ debug: 4.3.7(supports-color@8.1.1)
minimatch: 3.1.2
transitivePeerDependencies:
- supports-color
+ '@eslint/core@0.7.0': {}
+
'@eslint/eslintrc@2.1.4':
dependencies:
ajv: 6.12.6
- debug: 4.3.5(supports-color@8.1.1)
+ debug: 4.3.5(supports-color@5.5.0)
espree: 9.6.1
globals: 13.24.0
ignore: 5.3.1
@@ -13165,8 +12553,8 @@ snapshots:
'@eslint/eslintrc@3.1.0':
dependencies:
ajv: 6.12.6
- debug: 4.3.5(supports-color@8.1.1)
- espree: 10.1.0
+ debug: 4.3.7(supports-color@8.1.1)
+ espree: 10.3.0
globals: 14.0.0
ignore: 5.3.1
import-fresh: 3.3.0
@@ -13178,10 +12566,14 @@ snapshots:
'@eslint/js@8.57.0': {}
- '@eslint/js@9.8.0': {}
+ '@eslint/js@9.14.0': {}
'@eslint/object-schema@2.1.4': {}
+ '@eslint/plugin-kit@0.2.3':
+ dependencies:
+ levn: 0.4.1
+
'@fastify/accept-negotiator@2.0.0': {}
'@fastify/accepts@5.0.1':
@@ -13203,9 +12595,9 @@ snapshots:
'@fastify/busboy@3.0.0': {}
- '@fastify/cookie@10.0.1':
+ '@fastify/cookie@11.0.1':
dependencies:
- cookie-signature: 1.2.1
+ cookie: 1.0.2
fastify-plugin: 5.0.1
'@fastify/cors@10.0.1':
@@ -13228,7 +12620,7 @@ snapshots:
dependencies:
fast-json-stringify: 6.0.0
- '@fastify/http-proxy@10.0.0(bufferutil@4.0.7)(utf-8-validate@6.0.3)':
+ '@fastify/http-proxy@10.0.1(bufferutil@4.0.7)(utf-8-validate@6.0.3)':
dependencies:
'@fastify/reply-from': 11.0.1
fast-querystring: 1.1.2
@@ -13268,7 +12660,7 @@ snapshots:
http-errors: 2.0.0
mime: 3.0.0
- '@fastify/static@8.0.1':
+ '@fastify/static@8.0.2':
dependencies:
'@fastify/accept-negotiator': 2.0.0
'@fastify/send': 3.1.1
@@ -13306,10 +12698,17 @@ snapshots:
'@hexagon/base64@1.1.27': {}
+ '@humanfs/core@0.19.1': {}
+
+ '@humanfs/node@0.16.6':
+ dependencies:
+ '@humanfs/core': 0.19.1
+ '@humanwhocodes/retry': 0.3.0
+
'@humanwhocodes/config-array@0.11.14':
dependencies:
'@humanwhocodes/object-schema': 2.0.3
- debug: 4.3.5(supports-color@8.1.1)
+ debug: 4.3.5(supports-color@5.5.0)
minimatch: 3.1.2
transitivePeerDependencies:
- supports-color
@@ -13322,6 +12721,8 @@ snapshots:
'@humanwhocodes/retry@0.3.0': {}
+ '@humanwhocodes/retry@0.4.1': {}
+
'@img/sharp-darwin-arm64@0.33.5':
optionalDependencies:
'@img/sharp-libvips-darwin-arm64': 1.0.4
@@ -13397,30 +12798,31 @@ snapshots:
'@img/sharp-win32-x64@0.33.5':
optional: true
- '@inquirer/confirm@3.1.6':
+ '@inquirer/confirm@5.0.2(@types/node@22.9.0)':
dependencies:
- '@inquirer/core': 8.1.0
- '@inquirer/type': 1.3.1
+ '@inquirer/core': 10.1.0(@types/node@22.9.0)
+ '@inquirer/type': 3.0.1(@types/node@22.9.0)
+ '@types/node': 22.9.0
- '@inquirer/core@8.1.0':
+ '@inquirer/core@10.1.0(@types/node@22.9.0)':
dependencies:
- '@inquirer/figures': 1.0.1
- '@inquirer/type': 1.3.1
- '@types/mute-stream': 0.0.4
- '@types/node': 20.14.12
- '@types/wrap-ansi': 3.0.0
+ '@inquirer/figures': 1.0.8
+ '@inquirer/type': 3.0.1(@types/node@22.9.0)
ansi-escapes: 4.3.2
- chalk: 4.1.2
- cli-spinners: 2.9.2
cli-width: 4.1.0
- mute-stream: 1.0.0
+ mute-stream: 2.0.0
signal-exit: 4.1.0
strip-ansi: 6.0.1
wrap-ansi: 6.2.0
+ yoctocolors-cjs: 2.1.2
+ transitivePeerDependencies:
+ - '@types/node'
- '@inquirer/figures@1.0.1': {}
+ '@inquirer/figures@1.0.8': {}
- '@inquirer/type@1.3.1': {}
+ '@inquirer/type@3.0.1(@types/node@22.9.0)':
+ dependencies:
+ '@types/node': 22.9.0
'@ioredis/commands@1.2.0': {}
@@ -13446,7 +12848,7 @@ snapshots:
'@jest/console@29.7.0':
dependencies:
'@jest/types': 29.6.3
- '@types/node': 20.14.12
+ '@types/node': 22.9.0
chalk: 4.1.2
jest-message-util: 29.7.0
jest-util: 29.7.0
@@ -13459,14 +12861,14 @@ snapshots:
'@jest/test-result': 29.7.0
'@jest/transform': 29.7.0
'@jest/types': 29.6.3
- '@types/node': 20.14.12
+ '@types/node': 22.9.0
ansi-escapes: 4.3.2
chalk: 4.1.2
ci-info: 3.7.1
exit: 0.1.2
graceful-fs: 4.2.11
jest-changed-files: 29.7.0
- jest-config: 29.7.0(@types/node@20.14.12)
+ jest-config: 29.7.0(@types/node@22.9.0)
jest-haste-map: 29.7.0
jest-message-util: 29.7.0
jest-regex-util: 29.6.3
@@ -13495,7 +12897,7 @@ snapshots:
dependencies:
'@jest/fake-timers': 29.7.0
'@jest/types': 29.6.3
- '@types/node': 20.14.12
+ '@types/node': 22.9.0
jest-mock: 29.7.0
'@jest/expect-utils@29.7.0':
@@ -13513,7 +12915,7 @@ snapshots:
dependencies:
'@jest/types': 29.6.3
'@sinonjs/fake-timers': 10.3.0
- '@types/node': 20.14.12
+ '@types/node': 22.9.0
jest-message-util: 29.7.0
jest-mock: 29.7.0
jest-util: 29.7.0
@@ -13535,7 +12937,7 @@ snapshots:
'@jest/transform': 29.7.0
'@jest/types': 29.6.3
'@jridgewell/trace-mapping': 0.3.18
- '@types/node': 20.14.12
+ '@types/node': 22.9.0
chalk: 4.1.2
collect-v8-coverage: 1.0.1
exit: 0.1.2
@@ -13605,19 +13007,19 @@ snapshots:
'@jest/schemas': 29.6.3
'@types/istanbul-lib-coverage': 2.0.4
'@types/istanbul-reports': 3.0.1
- '@types/node': 20.14.12
+ '@types/node': 22.9.0
'@types/yargs': 17.0.19
chalk: 4.1.2
- '@joshwooding/vite-plugin-react-docgen-typescript@0.3.0(typescript@5.6.2)(vite@5.4.8(@types/node@20.14.12)(sass@1.79.3)(terser@5.33.0))':
+ '@joshwooding/vite-plugin-react-docgen-typescript@0.3.0(typescript@5.6.3)(vite@5.4.11(@types/node@22.9.0)(sass@1.79.3)(terser@5.36.0))':
dependencies:
glob: 7.2.3
glob-promise: 4.2.2(glob@7.2.3)
magic-string: 0.27.0
- react-docgen-typescript: 2.2.2(typescript@5.6.2)
- vite: 5.4.8(@types/node@20.14.12)(sass@1.79.3)(terser@5.33.0)
+ react-docgen-typescript: 2.2.2(typescript@5.6.3)
+ vite: 5.4.11(@types/node@22.9.0)(sass@1.79.3)(terser@5.36.0)
optionalDependencies:
- typescript: 5.6.2
+ typescript: 5.6.3
'@jridgewell/gen-mapping@0.3.5':
dependencies:
@@ -13672,23 +13074,23 @@ snapshots:
'@types/react': 18.0.28
react: 18.3.1
- '@microsoft/api-extractor-model@7.29.8(@types/node@20.14.12)':
+ '@microsoft/api-extractor-model@7.29.8(@types/node@22.9.0)':
dependencies:
'@microsoft/tsdoc': 0.15.0
'@microsoft/tsdoc-config': 0.17.0
- '@rushstack/node-core-library': 5.9.0(@types/node@20.14.12)
+ '@rushstack/node-core-library': 5.9.0(@types/node@22.9.0)
transitivePeerDependencies:
- '@types/node'
- '@microsoft/api-extractor@7.47.9(@types/node@20.14.12)':
+ '@microsoft/api-extractor@7.47.11(@types/node@22.9.0)':
dependencies:
- '@microsoft/api-extractor-model': 7.29.8(@types/node@20.14.12)
+ '@microsoft/api-extractor-model': 7.29.8(@types/node@22.9.0)
'@microsoft/tsdoc': 0.15.0
'@microsoft/tsdoc-config': 0.17.0
- '@rushstack/node-core-library': 5.9.0(@types/node@20.14.12)
+ '@rushstack/node-core-library': 5.9.0(@types/node@22.9.0)
'@rushstack/rig-package': 0.5.3
- '@rushstack/terminal': 0.14.2(@types/node@20.14.12)
- '@rushstack/ts-command-line': 4.22.8(@types/node@20.14.12)
+ '@rushstack/terminal': 0.14.2(@types/node@22.9.0)
+ '@rushstack/ts-command-line': 4.23.0(@types/node@22.9.0)
lodash: 4.17.21
minimatch: 3.0.8
resolve: 1.22.8
@@ -13709,14 +13111,14 @@ snapshots:
'@misskey-dev/browser-image-resizer@2024.1.0': {}
- '@misskey-dev/eslint-plugin@2.0.3(@eslint/compat@1.1.1)(@typescript-eslint/eslint-plugin@7.17.0(@typescript-eslint/parser@7.17.0(eslint@9.8.0)(typescript@5.6.2))(eslint@9.8.0)(typescript@5.6.2))(@typescript-eslint/parser@7.17.0(eslint@9.8.0)(typescript@5.6.2))(eslint-plugin-import@2.31.0(@typescript-eslint/parser@7.17.0(eslint@9.8.0)(typescript@5.6.2))(eslint@9.8.0))(eslint@9.8.0)(globals@15.9.0)':
+ '@misskey-dev/eslint-plugin@2.0.3(@eslint/compat@1.1.1)(@typescript-eslint/eslint-plugin@7.17.0(@typescript-eslint/parser@7.17.0(eslint@9.14.0)(typescript@5.6.3))(eslint@9.14.0)(typescript@5.6.3))(@typescript-eslint/parser@7.17.0(eslint@9.14.0)(typescript@5.6.3))(eslint-plugin-import@2.31.0(@typescript-eslint/parser@7.17.0(eslint@9.14.0)(typescript@5.6.3))(eslint@9.14.0))(eslint@9.14.0)(globals@15.12.0)':
dependencies:
'@eslint/compat': 1.1.1
- '@typescript-eslint/eslint-plugin': 7.17.0(@typescript-eslint/parser@7.17.0(eslint@9.8.0)(typescript@5.6.2))(eslint@9.8.0)(typescript@5.6.2)
- '@typescript-eslint/parser': 7.17.0(eslint@9.8.0)(typescript@5.6.2)
- eslint: 9.8.0
- eslint-plugin-import: 2.31.0(@typescript-eslint/parser@7.17.0(eslint@9.8.0)(typescript@5.6.2))(eslint@9.8.0)
- globals: 15.9.0
+ '@typescript-eslint/eslint-plugin': 7.17.0(@typescript-eslint/parser@7.17.0(eslint@9.14.0)(typescript@5.6.3))(eslint@9.14.0)(typescript@5.6.3)
+ '@typescript-eslint/parser': 7.17.0(eslint@9.14.0)(typescript@5.6.3)
+ eslint: 9.14.0
+ eslint-plugin-import: 2.31.0(@typescript-eslint/parser@7.17.0(eslint@9.14.0)(typescript@5.6.3))(eslint@9.14.0)
+ globals: 15.12.0
'@misskey-dev/sharp-read-bmp@1.2.0':
dependencies:
@@ -13764,16 +13166,7 @@ snapshots:
'@msgpackr-extract/msgpackr-extract-win32-x64@3.0.2':
optional: true
- '@mswjs/interceptors@0.29.1':
- dependencies:
- '@open-draft/deferred-promise': 2.2.0
- '@open-draft/logger': 0.3.0
- '@open-draft/until': 2.1.0
- is-node-process: 1.2.0
- outvariant: 1.4.2
- strict-event-emitter: 0.5.1
-
- '@mswjs/interceptors@0.35.9':
+ '@mswjs/interceptors@0.36.10':
dependencies:
'@open-draft/deferred-promise': 2.2.0
'@open-draft/logger': 0.3.0
@@ -13821,7 +13214,7 @@ snapshots:
'@napi-rs/canvas-linux-x64-musl': 0.1.56
'@napi-rs/canvas-win32-x64-msvc': 0.1.56
- '@nestjs/common@10.4.4(reflect-metadata@0.2.2)(rxjs@7.8.1)':
+ '@nestjs/common@10.4.7(reflect-metadata@0.2.2)(rxjs@7.8.1)':
dependencies:
iterare: 1.2.1
reflect-metadata: 0.2.2
@@ -13829,9 +13222,9 @@ snapshots:
tslib: 2.7.0
uid: 2.0.2
- '@nestjs/core@10.4.4(@nestjs/common@10.4.4(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.4.4)(encoding@0.1.13)(reflect-metadata@0.2.2)(rxjs@7.8.1)':
+ '@nestjs/core@10.4.7(@nestjs/common@10.4.7(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.4.7)(encoding@0.1.13)(reflect-metadata@0.2.2)(rxjs@7.8.1)':
dependencies:
- '@nestjs/common': 10.4.4(reflect-metadata@0.2.2)(rxjs@7.8.1)
+ '@nestjs/common': 10.4.7(reflect-metadata@0.2.2)(rxjs@7.8.1)
'@nuxtjs/opencollective': 0.3.2(encoding@0.1.13)
fast-safe-stringify: 2.1.1
iterare: 1.2.1
@@ -13841,29 +13234,29 @@ snapshots:
tslib: 2.7.0
uid: 2.0.2
optionalDependencies:
- '@nestjs/platform-express': 10.4.4(@nestjs/common@10.4.4(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.4)
+ '@nestjs/platform-express': 10.4.7(@nestjs/common@10.4.7(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.7)
transitivePeerDependencies:
- encoding
- '@nestjs/platform-express@10.4.4(@nestjs/common@10.4.4(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.4)':
+ '@nestjs/platform-express@10.4.7(@nestjs/common@10.4.7(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.7)':
dependencies:
- '@nestjs/common': 10.4.4(reflect-metadata@0.2.2)(rxjs@7.8.1)
- '@nestjs/core': 10.4.4(@nestjs/common@10.4.4(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.4.4)(encoding@0.1.13)(reflect-metadata@0.2.2)(rxjs@7.8.1)
+ '@nestjs/common': 10.4.7(reflect-metadata@0.2.2)(rxjs@7.8.1)
+ '@nestjs/core': 10.4.7(@nestjs/common@10.4.7(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.4.7)(encoding@0.1.13)(reflect-metadata@0.2.2)(rxjs@7.8.1)
body-parser: 1.20.3
cors: 2.8.5
- express: 4.21.0
+ express: 4.21.1
multer: 1.4.4-lts.1
tslib: 2.7.0
transitivePeerDependencies:
- supports-color
- '@nestjs/testing@10.4.4(@nestjs/common@10.4.4(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.4(@nestjs/common@10.4.4(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.4.4)(encoding@0.1.13)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.4.4(@nestjs/common@10.4.4(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.4))':
+ '@nestjs/testing@10.4.7(@nestjs/common@10.4.7(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.7(@nestjs/common@10.4.7(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.4.7)(encoding@0.1.13)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.4.7(@nestjs/common@10.4.7(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.7))':
dependencies:
- '@nestjs/common': 10.4.4(reflect-metadata@0.2.2)(rxjs@7.8.1)
- '@nestjs/core': 10.4.4(@nestjs/common@10.4.4(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.4.4)(encoding@0.1.13)(reflect-metadata@0.2.2)(rxjs@7.8.1)
+ '@nestjs/common': 10.4.7(reflect-metadata@0.2.2)(rxjs@7.8.1)
+ '@nestjs/core': 10.4.7(@nestjs/common@10.4.7(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.4.7)(encoding@0.1.13)(reflect-metadata@0.2.2)(rxjs@7.8.1)
tslib: 2.7.0
optionalDependencies:
- '@nestjs/platform-express': 10.4.4(@nestjs/common@10.4.4(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.4)
+ '@nestjs/platform-express': 10.4.7(@nestjs/common@10.4.7(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.7)
'@noble/hashes@1.5.0': {}
@@ -13908,7 +13301,7 @@ snapshots:
'@open-draft/logger@0.3.0':
dependencies:
is-node-process: 1.2.0
- outvariant: 1.4.2
+ outvariant: 1.4.3
'@open-draft/until@2.1.0': {}
@@ -13916,214 +13309,298 @@ snapshots:
dependencies:
'@opentelemetry/api': 1.9.0
- '@opentelemetry/api@1.9.0': {}
+ '@opentelemetry/api-logs@0.53.0':
+ dependencies:
+ '@opentelemetry/api': 1.9.0
- '@opentelemetry/context-async-hooks@1.25.1(@opentelemetry/api@1.9.0)':
+ '@opentelemetry/api-logs@0.54.2':
dependencies:
'@opentelemetry/api': 1.9.0
- '@opentelemetry/core@1.24.1(@opentelemetry/api@1.9.0)':
+ '@opentelemetry/api@1.9.0': {}
+
+ '@opentelemetry/context-async-hooks@1.25.1(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
- '@opentelemetry/semantic-conventions': 1.24.1
'@opentelemetry/core@1.25.1(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
'@opentelemetry/semantic-conventions': 1.25.1
- '@opentelemetry/instrumentation-connect@0.38.0(@opentelemetry/api@1.9.0)':
+ '@opentelemetry/core@1.26.0(@opentelemetry/api@1.9.0)':
+ dependencies:
+ '@opentelemetry/api': 1.9.0
+ '@opentelemetry/semantic-conventions': 1.27.0
+
+ '@opentelemetry/core@1.28.0(@opentelemetry/api@1.9.0)':
+ dependencies:
+ '@opentelemetry/api': 1.9.0
+ '@opentelemetry/semantic-conventions': 1.27.0
+
+ '@opentelemetry/instrumentation-amqplib@0.43.0(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
'@opentelemetry/core': 1.25.1(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0)
- '@opentelemetry/semantic-conventions': 1.25.1
- '@types/connect': 3.4.36
+ '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0)
+ '@opentelemetry/semantic-conventions': 1.28.0
transitivePeerDependencies:
- supports-color
- '@opentelemetry/instrumentation-express@0.41.0(@opentelemetry/api@1.9.0)':
+ '@opentelemetry/instrumentation-connect@0.40.0(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
'@opentelemetry/core': 1.25.1(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0)
- '@opentelemetry/semantic-conventions': 1.25.1
+ '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0)
+ '@opentelemetry/semantic-conventions': 1.28.0
+ '@types/connect': 3.4.36
+ transitivePeerDependencies:
+ - supports-color
+
+ '@opentelemetry/instrumentation-dataloader@0.12.0(@opentelemetry/api@1.9.0)':
+ dependencies:
+ '@opentelemetry/api': 1.9.0
+ '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0)
transitivePeerDependencies:
- supports-color
- '@opentelemetry/instrumentation-fastify@0.38.0(@opentelemetry/api@1.9.0)':
+ '@opentelemetry/instrumentation-express@0.44.0(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
'@opentelemetry/core': 1.25.1(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0)
- '@opentelemetry/semantic-conventions': 1.25.1
+ '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0)
+ '@opentelemetry/semantic-conventions': 1.28.0
transitivePeerDependencies:
- supports-color
- '@opentelemetry/instrumentation-graphql@0.42.0(@opentelemetry/api@1.9.0)':
+ '@opentelemetry/instrumentation-fastify@0.41.0(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
- '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0)
+ '@opentelemetry/core': 1.25.1(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0)
+ '@opentelemetry/semantic-conventions': 1.28.0
transitivePeerDependencies:
- supports-color
- '@opentelemetry/instrumentation-hapi@0.40.0(@opentelemetry/api@1.9.0)':
+ '@opentelemetry/instrumentation-fs@0.16.0(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
'@opentelemetry/core': 1.25.1(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0)
- '@opentelemetry/semantic-conventions': 1.25.1
+ '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0)
+ transitivePeerDependencies:
+ - supports-color
+
+ '@opentelemetry/instrumentation-generic-pool@0.39.0(@opentelemetry/api@1.9.0)':
+ dependencies:
+ '@opentelemetry/api': 1.9.0
+ '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0)
+ transitivePeerDependencies:
+ - supports-color
+
+ '@opentelemetry/instrumentation-graphql@0.44.0(@opentelemetry/api@1.9.0)':
+ dependencies:
+ '@opentelemetry/api': 1.9.0
+ '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0)
transitivePeerDependencies:
- supports-color
- '@opentelemetry/instrumentation-http@0.52.1(@opentelemetry/api@1.9.0)':
+ '@opentelemetry/instrumentation-hapi@0.41.0(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
'@opentelemetry/core': 1.25.1(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0)
- '@opentelemetry/semantic-conventions': 1.25.1
- semver: 7.6.0
+ '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/semantic-conventions': 1.28.0
transitivePeerDependencies:
- supports-color
- '@opentelemetry/instrumentation-ioredis@0.42.0(@opentelemetry/api@1.9.0)':
+ '@opentelemetry/instrumentation-http@0.53.0(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
- '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0)
+ '@opentelemetry/core': 1.26.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/semantic-conventions': 1.27.0
+ semver: 7.6.3
+ transitivePeerDependencies:
+ - supports-color
+
+ '@opentelemetry/instrumentation-ioredis@0.43.0(@opentelemetry/api@1.9.0)':
+ dependencies:
+ '@opentelemetry/api': 1.9.0
+ '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0)
'@opentelemetry/redis-common': 0.36.2
- '@opentelemetry/semantic-conventions': 1.25.1
+ '@opentelemetry/semantic-conventions': 1.28.0
transitivePeerDependencies:
- supports-color
- '@opentelemetry/instrumentation-koa@0.42.0(@opentelemetry/api@1.9.0)':
+ '@opentelemetry/instrumentation-kafkajs@0.4.0(@opentelemetry/api@1.9.0)':
+ dependencies:
+ '@opentelemetry/api': 1.9.0
+ '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0)
+ '@opentelemetry/semantic-conventions': 1.28.0
+ transitivePeerDependencies:
+ - supports-color
+
+ '@opentelemetry/instrumentation-knex@0.41.0(@opentelemetry/api@1.9.0)':
+ dependencies:
+ '@opentelemetry/api': 1.9.0
+ '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0)
+ '@opentelemetry/semantic-conventions': 1.28.0
+ transitivePeerDependencies:
+ - supports-color
+
+ '@opentelemetry/instrumentation-koa@0.43.0(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
'@opentelemetry/core': 1.25.1(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0)
- '@opentelemetry/semantic-conventions': 1.25.1
+ '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/semantic-conventions': 1.28.0
transitivePeerDependencies:
- supports-color
- '@opentelemetry/instrumentation-mongodb@0.46.0(@opentelemetry/api@1.9.0)':
+ '@opentelemetry/instrumentation-lru-memoizer@0.40.0(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
- '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0)
- '@opentelemetry/sdk-metrics': 1.24.1(@opentelemetry/api@1.9.0)
- '@opentelemetry/semantic-conventions': 1.25.1
+ '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0)
transitivePeerDependencies:
- supports-color
- '@opentelemetry/instrumentation-mongoose@0.40.0(@opentelemetry/api@1.9.0)':
+ '@opentelemetry/instrumentation-mongodb@0.48.0(@opentelemetry/api@1.9.0)':
+ dependencies:
+ '@opentelemetry/api': 1.9.0
+ '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0)
+ '@opentelemetry/semantic-conventions': 1.28.0
+ transitivePeerDependencies:
+ - supports-color
+
+ '@opentelemetry/instrumentation-mongoose@0.42.0(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
'@opentelemetry/core': 1.25.1(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0)
- '@opentelemetry/semantic-conventions': 1.25.1
+ '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/semantic-conventions': 1.28.0
transitivePeerDependencies:
- supports-color
- '@opentelemetry/instrumentation-mysql2@0.40.0(@opentelemetry/api@1.9.0)':
+ '@opentelemetry/instrumentation-mysql2@0.41.0(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
- '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0)
- '@opentelemetry/semantic-conventions': 1.25.1
+ '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/semantic-conventions': 1.28.0
'@opentelemetry/sql-common': 0.40.1(@opentelemetry/api@1.9.0)
transitivePeerDependencies:
- supports-color
- '@opentelemetry/instrumentation-mysql@0.40.0(@opentelemetry/api@1.9.0)':
+ '@opentelemetry/instrumentation-mysql@0.41.0(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
- '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0)
- '@opentelemetry/semantic-conventions': 1.25.1
- '@types/mysql': 2.15.22
+ '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/semantic-conventions': 1.28.0
+ '@types/mysql': 2.15.26
transitivePeerDependencies:
- supports-color
- '@opentelemetry/instrumentation-nestjs-core@0.39.0(@opentelemetry/api@1.9.0)':
+ '@opentelemetry/instrumentation-nestjs-core@0.40.0(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
- '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0)
- '@opentelemetry/semantic-conventions': 1.25.1
+ '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/semantic-conventions': 1.28.0
transitivePeerDependencies:
- supports-color
- '@opentelemetry/instrumentation-pg@0.43.0(@opentelemetry/api@1.9.0)':
+ '@opentelemetry/instrumentation-pg@0.44.0(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
- '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0)
- '@opentelemetry/semantic-conventions': 1.25.1
+ '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/semantic-conventions': 1.28.0
'@opentelemetry/sql-common': 0.40.1(@opentelemetry/api@1.9.0)
'@types/pg': 8.6.1
- '@types/pg-pool': 2.0.4
+ '@types/pg-pool': 2.0.6
transitivePeerDependencies:
- supports-color
- '@opentelemetry/instrumentation-redis-4@0.41.0(@opentelemetry/api@1.9.0)':
+ '@opentelemetry/instrumentation-redis-4@0.42.0(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
- '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0)
'@opentelemetry/redis-common': 0.36.2
- '@opentelemetry/semantic-conventions': 1.25.1
+ '@opentelemetry/semantic-conventions': 1.28.0
transitivePeerDependencies:
- supports-color
- '@opentelemetry/instrumentation@0.46.0(@opentelemetry/api@1.9.0)':
+ '@opentelemetry/instrumentation-tedious@0.15.0(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
- '@types/shimmer': 1.0.5
- import-in-the-middle: 1.7.1
- require-in-the-middle: 7.3.0
- semver: 7.6.0
- shimmer: 1.2.1
+ '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0)
+ '@opentelemetry/semantic-conventions': 1.28.0
+ '@types/tedious': 4.0.14
+ transitivePeerDependencies:
+ - supports-color
+
+ '@opentelemetry/instrumentation-undici@0.6.0(@opentelemetry/api@1.9.0)':
+ dependencies:
+ '@opentelemetry/api': 1.9.0
+ '@opentelemetry/core': 1.25.1(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0)
transitivePeerDependencies:
- supports-color
- optional: true
'@opentelemetry/instrumentation@0.52.1(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
'@opentelemetry/api-logs': 0.52.1
'@types/shimmer': 1.0.5
- import-in-the-middle: 1.10.0
+ import-in-the-middle: 1.11.2
require-in-the-middle: 7.3.0
- semver: 7.6.0
+ semver: 7.6.3
shimmer: 1.2.1
transitivePeerDependencies:
- supports-color
- '@opentelemetry/redis-common@0.36.2': {}
-
- '@opentelemetry/resources@1.24.1(@opentelemetry/api@1.9.0)':
+ '@opentelemetry/instrumentation@0.53.0(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
- '@opentelemetry/core': 1.24.1(@opentelemetry/api@1.9.0)
- '@opentelemetry/semantic-conventions': 1.24.1
+ '@opentelemetry/api-logs': 0.53.0
+ '@types/shimmer': 1.2.0
+ import-in-the-middle: 1.11.2
+ require-in-the-middle: 7.3.0
+ semver: 7.6.3
+ shimmer: 1.2.1
+ transitivePeerDependencies:
+ - supports-color
- '@opentelemetry/resources@1.25.1(@opentelemetry/api@1.9.0)':
+ '@opentelemetry/instrumentation@0.54.2(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
- '@opentelemetry/core': 1.25.1(@opentelemetry/api@1.9.0)
- '@opentelemetry/semantic-conventions': 1.25.1
+ '@opentelemetry/api-logs': 0.54.2
+ '@types/shimmer': 1.2.0
+ import-in-the-middle: 1.11.2
+ require-in-the-middle: 7.3.0
+ semver: 7.6.3
+ shimmer: 1.2.1
+ transitivePeerDependencies:
+ - supports-color
- '@opentelemetry/sdk-metrics@1.24.1(@opentelemetry/api@1.9.0)':
+ '@opentelemetry/redis-common@0.36.2': {}
+
+ '@opentelemetry/resources@1.28.0(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
- '@opentelemetry/core': 1.24.1(@opentelemetry/api@1.9.0)
- '@opentelemetry/resources': 1.24.1(@opentelemetry/api@1.9.0)
- lodash.merge: 4.6.2
+ '@opentelemetry/core': 1.28.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/semantic-conventions': 1.27.0
- '@opentelemetry/sdk-trace-base@1.25.1(@opentelemetry/api@1.9.0)':
+ '@opentelemetry/sdk-trace-base@1.28.0(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
- '@opentelemetry/core': 1.25.1(@opentelemetry/api@1.9.0)
- '@opentelemetry/resources': 1.25.1(@opentelemetry/api@1.9.0)
- '@opentelemetry/semantic-conventions': 1.25.1
-
- '@opentelemetry/semantic-conventions@1.24.1': {}
+ '@opentelemetry/core': 1.28.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/resources': 1.28.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/semantic-conventions': 1.27.0
'@opentelemetry/semantic-conventions@1.25.1': {}
+ '@opentelemetry/semantic-conventions@1.27.0': {}
+
+ '@opentelemetry/semantic-conventions@1.28.0': {}
+
'@opentelemetry/sql-common@0.40.1(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
@@ -14133,27 +13610,27 @@ snapshots:
dependencies:
'@peculiar/asn1-schema': 2.3.8
asn1js: 3.0.5
- tslib: 2.6.3
+ tslib: 2.7.0
'@peculiar/asn1-ecc@2.3.8':
dependencies:
'@peculiar/asn1-schema': 2.3.8
'@peculiar/asn1-x509': 2.3.8
asn1js: 3.0.5
- tslib: 2.6.3
+ tslib: 2.7.0
'@peculiar/asn1-rsa@2.3.8':
dependencies:
'@peculiar/asn1-schema': 2.3.8
'@peculiar/asn1-x509': 2.3.8
asn1js: 3.0.5
- tslib: 2.6.3
+ tslib: 2.7.0
'@peculiar/asn1-schema@2.3.8':
dependencies:
asn1js: 3.0.5
pvtsutils: 1.3.5
- tslib: 2.6.3
+ tslib: 2.7.0
'@peculiar/asn1-x509@2.3.8':
dependencies:
@@ -14161,7 +13638,7 @@ snapshots:
asn1js: 3.0.5
ipaddr.js: 2.2.0
pvtsutils: 1.3.5
- tslib: 2.6.3
+ tslib: 2.7.0
'@peertube/http-signature@1.7.0':
dependencies:
@@ -14176,11 +13653,11 @@ snapshots:
'@pkgjs/parseargs@0.11.0':
optional: true
- '@prisma/instrumentation@5.17.0':
+ '@prisma/instrumentation@5.19.1':
dependencies:
'@opentelemetry/api': 1.9.0
'@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0)
- '@opentelemetry/sdk-trace-base': 1.25.1(@opentelemetry/api@1.9.0)
+ '@opentelemetry/sdk-trace-base': 1.28.0(@opentelemetry/api@1.9.0)
transitivePeerDependencies:
- supports-color
@@ -14216,78 +13693,84 @@ snapshots:
'@readme/openapi-schemas@3.1.0': {}
- '@rollup/plugin-json@6.1.0(rollup@4.22.5)':
+ '@rollup/plugin-json@6.1.0(rollup@4.26.0)':
dependencies:
- '@rollup/pluginutils': 5.1.2(rollup@4.22.5)
+ '@rollup/pluginutils': 5.1.3(rollup@4.26.0)
optionalDependencies:
- rollup: 4.22.5
+ rollup: 4.26.0
- '@rollup/plugin-replace@5.0.7(rollup@4.22.5)':
+ '@rollup/plugin-replace@5.0.7(rollup@4.26.0)':
dependencies:
- '@rollup/pluginutils': 5.1.2(rollup@4.22.5)
+ '@rollup/pluginutils': 5.1.3(rollup@4.26.0)
magic-string: 0.30.10
optionalDependencies:
- rollup: 4.22.5
+ rollup: 4.26.0
- '@rollup/pluginutils@5.1.2(rollup@4.22.5)':
+ '@rollup/pluginutils@5.1.3(rollup@4.26.0)':
dependencies:
'@types/estree': 1.0.6
estree-walker: 2.0.2
- picomatch: 2.3.1
+ picomatch: 4.0.2
optionalDependencies:
- rollup: 4.22.5
+ rollup: 4.26.0
+
+ '@rollup/rollup-android-arm-eabi@4.26.0':
+ optional: true
+
+ '@rollup/rollup-android-arm64@4.26.0':
+ optional: true
- '@rollup/rollup-android-arm-eabi@4.22.5':
+ '@rollup/rollup-darwin-arm64@4.26.0':
optional: true
- '@rollup/rollup-android-arm64@4.22.5':
+ '@rollup/rollup-darwin-x64@4.26.0':
optional: true
- '@rollup/rollup-darwin-arm64@4.22.5':
+ '@rollup/rollup-freebsd-arm64@4.26.0':
optional: true
- '@rollup/rollup-darwin-x64@4.22.5':
+ '@rollup/rollup-freebsd-x64@4.26.0':
optional: true
- '@rollup/rollup-linux-arm-gnueabihf@4.22.5':
+ '@rollup/rollup-linux-arm-gnueabihf@4.26.0':
optional: true
- '@rollup/rollup-linux-arm-musleabihf@4.22.5':
+ '@rollup/rollup-linux-arm-musleabihf@4.26.0':
optional: true
- '@rollup/rollup-linux-arm64-gnu@4.22.5':
+ '@rollup/rollup-linux-arm64-gnu@4.26.0':
optional: true
- '@rollup/rollup-linux-arm64-musl@4.22.5':
+ '@rollup/rollup-linux-arm64-musl@4.26.0':
optional: true
- '@rollup/rollup-linux-powerpc64le-gnu@4.22.5':
+ '@rollup/rollup-linux-powerpc64le-gnu@4.26.0':
optional: true
- '@rollup/rollup-linux-riscv64-gnu@4.22.5':
+ '@rollup/rollup-linux-riscv64-gnu@4.26.0':
optional: true
- '@rollup/rollup-linux-s390x-gnu@4.22.5':
+ '@rollup/rollup-linux-s390x-gnu@4.26.0':
optional: true
- '@rollup/rollup-linux-x64-gnu@4.22.5':
+ '@rollup/rollup-linux-x64-gnu@4.26.0':
optional: true
- '@rollup/rollup-linux-x64-musl@4.22.5':
+ '@rollup/rollup-linux-x64-musl@4.26.0':
optional: true
- '@rollup/rollup-win32-arm64-msvc@4.22.5':
+ '@rollup/rollup-win32-arm64-msvc@4.26.0':
optional: true
- '@rollup/rollup-win32-ia32-msvc@4.22.5':
+ '@rollup/rollup-win32-ia32-msvc@4.26.0':
optional: true
- '@rollup/rollup-win32-x64-msvc@4.22.5':
+ '@rollup/rollup-win32-x64-msvc@4.26.0':
optional: true
'@rtsao/scc@1.1.0': {}
- '@rushstack/node-core-library@5.9.0(@types/node@20.14.12)':
+ '@rushstack/node-core-library@5.9.0(@types/node@22.9.0)':
dependencies:
ajv: 8.13.0
ajv-draft-04: 1.0.0(ajv@8.13.0)
@@ -14298,23 +13781,23 @@ snapshots:
resolve: 1.22.8
semver: 7.5.4
optionalDependencies:
- '@types/node': 20.14.12
+ '@types/node': 22.9.0
'@rushstack/rig-package@0.5.3':
dependencies:
resolve: 1.22.8
strip-json-comments: 3.1.1
- '@rushstack/terminal@0.14.2(@types/node@20.14.12)':
+ '@rushstack/terminal@0.14.2(@types/node@22.9.0)':
dependencies:
- '@rushstack/node-core-library': 5.9.0(@types/node@20.14.12)
+ '@rushstack/node-core-library': 5.9.0(@types/node@22.9.0)
supports-color: 8.1.1
optionalDependencies:
- '@types/node': 20.14.12
+ '@types/node': 22.9.0
- '@rushstack/ts-command-line@4.22.8(@types/node@20.14.12)':
+ '@rushstack/ts-command-line@4.23.0(@types/node@22.9.0)':
dependencies:
- '@rushstack/terminal': 0.14.2(@types/node@20.14.12)
+ '@rushstack/terminal': 0.14.2(@types/node@22.9.0)
'@types/argparse': 1.0.38
argparse: 1.0.10
string-argv: 0.3.1
@@ -14323,95 +13806,102 @@ snapshots:
'@sec-ant/readable-stream@0.4.1': {}
- '@sentry/core@8.20.0':
+ '@sentry/core@8.38.0':
dependencies:
- '@sentry/types': 8.20.0
- '@sentry/utils': 8.20.0
+ '@sentry/types': 8.38.0
+ '@sentry/utils': 8.38.0
- '@sentry/node@8.20.0':
+ '@sentry/node@8.38.0':
dependencies:
'@opentelemetry/api': 1.9.0
'@opentelemetry/context-async-hooks': 1.25.1(@opentelemetry/api@1.9.0)
'@opentelemetry/core': 1.25.1(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation-connect': 0.38.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation-express': 0.41.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation-fastify': 0.38.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation-graphql': 0.42.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation-hapi': 0.40.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation-http': 0.52.1(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation-ioredis': 0.42.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation-koa': 0.42.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation-mongodb': 0.46.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation-mongoose': 0.40.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation-mysql': 0.40.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation-mysql2': 0.40.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation-nestjs-core': 0.39.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation-pg': 0.43.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation-redis-4': 0.41.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/resources': 1.25.1(@opentelemetry/api@1.9.0)
- '@opentelemetry/sdk-trace-base': 1.25.1(@opentelemetry/api@1.9.0)
- '@opentelemetry/semantic-conventions': 1.25.1
- '@prisma/instrumentation': 5.17.0
- '@sentry/core': 8.20.0
- '@sentry/opentelemetry': 8.20.0(@opentelemetry/api@1.9.0)(@opentelemetry/core@1.25.1(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.52.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.25.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.25.1)
- '@sentry/types': 8.20.0
- '@sentry/utils': 8.20.0
- import-in-the-middle: 1.10.0
- optionalDependencies:
- opentelemetry-instrumentation-fetch-node: 1.2.3(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation-amqplib': 0.43.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation-connect': 0.40.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation-dataloader': 0.12.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation-express': 0.44.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation-fastify': 0.41.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation-fs': 0.16.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation-generic-pool': 0.39.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation-graphql': 0.44.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation-hapi': 0.41.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation-http': 0.53.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation-ioredis': 0.43.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation-kafkajs': 0.4.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation-knex': 0.41.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation-koa': 0.43.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation-lru-memoizer': 0.40.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation-mongodb': 0.48.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation-mongoose': 0.42.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation-mysql': 0.41.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation-mysql2': 0.41.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation-nestjs-core': 0.40.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation-pg': 0.44.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation-redis-4': 0.42.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation-tedious': 0.15.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation-undici': 0.6.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/resources': 1.28.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/sdk-trace-base': 1.28.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/semantic-conventions': 1.28.0
+ '@prisma/instrumentation': 5.19.1
+ '@sentry/core': 8.38.0
+ '@sentry/opentelemetry': 8.38.0(@opentelemetry/api@1.9.0)(@opentelemetry/core@1.25.1(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.54.2(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.28.0(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.28.0)
+ '@sentry/types': 8.38.0
+ '@sentry/utils': 8.38.0
+ import-in-the-middle: 1.11.2
transitivePeerDependencies:
- supports-color
- '@sentry/opentelemetry@8.20.0(@opentelemetry/api@1.9.0)(@opentelemetry/core@1.25.1(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.52.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.25.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.25.1)':
+ '@sentry/opentelemetry@8.38.0(@opentelemetry/api@1.9.0)(@opentelemetry/core@1.25.1(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.54.2(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.28.0(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.28.0)':
dependencies:
'@opentelemetry/api': 1.9.0
'@opentelemetry/core': 1.25.1(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0)
- '@opentelemetry/sdk-trace-base': 1.25.1(@opentelemetry/api@1.9.0)
- '@opentelemetry/semantic-conventions': 1.25.1
- '@sentry/core': 8.20.0
- '@sentry/types': 8.20.0
- '@sentry/utils': 8.20.0
+ '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0)
+ '@opentelemetry/sdk-trace-base': 1.28.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/semantic-conventions': 1.28.0
+ '@sentry/core': 8.38.0
+ '@sentry/types': 8.38.0
+ '@sentry/utils': 8.38.0
- '@sentry/profiling-node@8.20.0':
+ '@sentry/profiling-node@8.38.0':
dependencies:
- '@sentry/core': 8.20.0
- '@sentry/node': 8.20.0
- '@sentry/types': 8.20.0
- '@sentry/utils': 8.20.0
+ '@sentry/core': 8.38.0
+ '@sentry/node': 8.38.0
+ '@sentry/types': 8.38.0
+ '@sentry/utils': 8.38.0
detect-libc: 2.0.3
node-abi: 3.62.0
transitivePeerDependencies:
- supports-color
- '@sentry/types@8.20.0': {}
+ '@sentry/types@8.38.0': {}
- '@sentry/utils@8.20.0':
+ '@sentry/utils@8.38.0':
dependencies:
- '@sentry/types': 8.20.0
+ '@sentry/types': 8.38.0
- '@shikijs/core@1.21.0':
+ '@shikijs/core@1.22.2':
dependencies:
- '@shikijs/engine-javascript': 1.21.0
- '@shikijs/engine-oniguruma': 1.21.0
- '@shikijs/types': 1.21.0
+ '@shikijs/engine-javascript': 1.22.2
+ '@shikijs/engine-oniguruma': 1.22.2
+ '@shikijs/types': 1.22.2
'@shikijs/vscode-textmate': 9.3.0
'@types/hast': 3.0.4
hast-util-to-html: 9.0.3
- '@shikijs/engine-javascript@1.21.0':
+ '@shikijs/engine-javascript@1.22.2':
dependencies:
- '@shikijs/types': 1.21.0
+ '@shikijs/types': 1.22.2
'@shikijs/vscode-textmate': 9.3.0
oniguruma-to-js: 0.4.3
- '@shikijs/engine-oniguruma@1.21.0':
+ '@shikijs/engine-oniguruma@1.22.2':
dependencies:
- '@shikijs/types': 1.21.0
+ '@shikijs/types': 1.22.2
'@shikijs/vscode-textmate': 9.3.0
- '@shikijs/types@1.21.0':
+ '@shikijs/types@1.22.2':
dependencies:
'@shikijs/vscode-textmate': 9.3.0
'@types/hast': 3.0.4
@@ -14446,15 +13936,15 @@ snapshots:
'@simplewebauthn/types@10.0.0': {}
+ '@simplewebauthn/types@11.0.0': {}
+
'@sinclair/typebox@0.27.8': {}
'@sindresorhus/is@4.6.0': {}
'@sindresorhus/is@5.3.0': {}
- '@sindresorhus/is@7.0.0': {}
-
- '@sindresorhus/merge-streams@4.0.0': {}
+ '@sindresorhus/is@7.0.1': {}
'@sinonjs/commons@2.0.0':
dependencies:
@@ -14483,12 +13973,12 @@ snapshots:
'@smithy/abort-controller@2.2.0':
dependencies:
'@smithy/types': 2.12.0
- tslib: 2.6.2
+ tslib: 2.7.0
'@smithy/abort-controller@3.1.1':
dependencies:
'@smithy/types': 3.3.0
- tslib: 2.6.3
+ tslib: 2.7.0
'@smithy/chunked-blob-reader-native@3.0.0':
dependencies:
@@ -14505,7 +13995,7 @@ snapshots:
'@smithy/types': 3.3.0
'@smithy/util-config-provider': 3.0.0
'@smithy/util-middleware': 3.0.3
- tslib: 2.6.3
+ tslib: 2.7.0
'@smithy/core@2.3.1':
dependencies:
@@ -14516,7 +14006,7 @@ snapshots:
'@smithy/smithy-client': 3.1.11
'@smithy/types': 3.3.0
'@smithy/util-middleware': 3.0.3
- tslib: 2.6.3
+ tslib: 2.7.0
'@smithy/credential-provider-imds@3.2.0':
dependencies:
@@ -14537,18 +14027,18 @@ snapshots:
dependencies:
'@smithy/eventstream-serde-universal': 3.0.4
'@smithy/types': 3.3.0
- tslib: 2.6.3
+ tslib: 2.7.0
'@smithy/eventstream-serde-config-resolver@3.0.3':
dependencies:
'@smithy/types': 3.3.0
- tslib: 2.6.3
+ tslib: 2.7.0
'@smithy/eventstream-serde-node@3.0.4':
dependencies:
'@smithy/eventstream-serde-universal': 3.0.4
'@smithy/types': 3.3.0
- tslib: 2.6.3
+ tslib: 2.7.0
'@smithy/eventstream-serde-universal@3.0.4':
dependencies:
@@ -14562,32 +14052,32 @@ snapshots:
'@smithy/querystring-builder': 3.0.3
'@smithy/types': 3.3.0
'@smithy/util-base64': 3.0.0
- tslib: 2.6.3
+ tslib: 2.7.0
'@smithy/hash-blob-browser@3.1.2':
dependencies:
'@smithy/chunked-blob-reader': 3.0.0
'@smithy/chunked-blob-reader-native': 3.0.0
'@smithy/types': 3.3.0
- tslib: 2.6.3
+ tslib: 2.7.0
'@smithy/hash-node@3.0.3':
dependencies:
'@smithy/types': 3.3.0
'@smithy/util-buffer-from': 3.0.0
'@smithy/util-utf8': 3.0.0
- tslib: 2.6.3
+ tslib: 2.7.0
'@smithy/hash-stream-node@3.1.2':
dependencies:
'@smithy/types': 3.3.0
'@smithy/util-utf8': 3.0.0
- tslib: 2.6.3
+ tslib: 2.7.0
'@smithy/invalid-dependency@3.0.3':
dependencies:
'@smithy/types': 3.3.0
- tslib: 2.6.3
+ tslib: 2.7.0
'@smithy/is-array-buffer@2.0.0':
dependencies:
@@ -14601,13 +14091,13 @@ snapshots:
dependencies:
'@smithy/types': 3.3.0
'@smithy/util-utf8': 3.0.0
- tslib: 2.6.3
+ tslib: 2.7.0
'@smithy/middleware-content-length@3.0.5':
dependencies:
'@smithy/protocol-http': 4.1.0
'@smithy/types': 3.3.0
- tslib: 2.6.3
+ tslib: 2.7.0
'@smithy/middleware-endpoint@3.1.0':
dependencies:
@@ -14617,7 +14107,7 @@ snapshots:
'@smithy/types': 3.3.0
'@smithy/url-parser': 3.0.3
'@smithy/util-middleware': 3.0.3
- tslib: 2.6.3
+ tslib: 2.7.0
'@smithy/middleware-retry@3.0.13':
dependencies:
@@ -14628,25 +14118,25 @@ snapshots:
'@smithy/types': 3.3.0
'@smithy/util-middleware': 3.0.3
'@smithy/util-retry': 3.0.3
- tslib: 2.6.3
+ tslib: 2.7.0
uuid: 9.0.1
'@smithy/middleware-serde@3.0.3':
dependencies:
'@smithy/types': 3.3.0
- tslib: 2.6.3
+ tslib: 2.7.0
'@smithy/middleware-stack@3.0.3':
dependencies:
'@smithy/types': 3.3.0
- tslib: 2.6.3
+ tslib: 2.7.0
'@smithy/node-config-provider@3.1.4':
dependencies:
'@smithy/property-provider': 3.1.3
'@smithy/shared-ini-file-loader': 3.1.4
'@smithy/types': 3.3.0
- tslib: 2.6.3
+ tslib: 2.7.0
'@smithy/node-http-handler@2.5.0':
dependencies:
@@ -14662,7 +14152,7 @@ snapshots:
'@smithy/protocol-http': 4.1.0
'@smithy/querystring-builder': 3.0.3
'@smithy/types': 3.3.0
- tslib: 2.6.3
+ tslib: 2.7.0
'@smithy/property-provider@3.1.3':
dependencies:
@@ -14672,18 +14162,18 @@ snapshots:
'@smithy/protocol-http@3.3.0':
dependencies:
'@smithy/types': 2.12.0
- tslib: 2.6.2
+ tslib: 2.7.0
'@smithy/protocol-http@4.1.0':
dependencies:
'@smithy/types': 3.3.0
- tslib: 2.6.3
+ tslib: 2.7.0
'@smithy/querystring-builder@2.2.0':
dependencies:
'@smithy/types': 2.12.0
'@smithy/util-uri-escape': 2.2.0
- tslib: 2.6.2
+ tslib: 2.7.0
'@smithy/querystring-builder@3.0.3':
dependencies:
@@ -14723,35 +14213,35 @@ snapshots:
'@smithy/protocol-http': 4.1.0
'@smithy/types': 3.3.0
'@smithy/util-stream': 3.1.3
- tslib: 2.6.3
+ tslib: 2.7.0
'@smithy/types@2.12.0':
dependencies:
- tslib: 2.6.2
+ tslib: 2.7.0
'@smithy/types@3.3.0':
dependencies:
- tslib: 2.6.3
+ tslib: 2.7.0
'@smithy/url-parser@3.0.3':
dependencies:
'@smithy/querystring-parser': 3.0.3
'@smithy/types': 3.3.0
- tslib: 2.6.3
+ tslib: 2.7.0
'@smithy/util-base64@3.0.0':
dependencies:
'@smithy/util-buffer-from': 3.0.0
'@smithy/util-utf8': 3.0.0
- tslib: 2.6.3
+ tslib: 2.7.0
'@smithy/util-body-length-browser@3.0.0':
dependencies:
- tslib: 2.6.3
+ tslib: 2.7.0
'@smithy/util-body-length-node@3.0.0':
dependencies:
- tslib: 2.6.3
+ tslib: 2.7.0
'@smithy/util-buffer-from@2.0.0':
dependencies:
@@ -14773,7 +14263,7 @@ snapshots:
'@smithy/smithy-client': 3.1.11
'@smithy/types': 3.3.0
bowser: 2.11.0
- tslib: 2.6.3
+ tslib: 2.7.0
'@smithy/util-defaults-mode-node@3.0.13':
dependencies:
@@ -14783,13 +14273,13 @@ snapshots:
'@smithy/property-provider': 3.1.3
'@smithy/smithy-client': 3.1.11
'@smithy/types': 3.3.0
- tslib: 2.6.3
+ tslib: 2.7.0
'@smithy/util-endpoints@2.0.5':
dependencies:
'@smithy/node-config-provider': 3.1.4
'@smithy/types': 3.3.0
- tslib: 2.6.3
+ tslib: 2.7.0
'@smithy/util-hex-encoding@3.0.0':
dependencies:
@@ -14804,7 +14294,7 @@ snapshots:
dependencies:
'@smithy/service-error-classification': 3.0.3
'@smithy/types': 3.3.0
- tslib: 2.6.3
+ tslib: 2.7.0
'@smithy/util-stream@3.1.3':
dependencies:
@@ -14815,7 +14305,7 @@ snapshots:
'@smithy/util-buffer-from': 3.0.0
'@smithy/util-hex-encoding': 3.0.0
'@smithy/util-utf8': 3.0.0
- tslib: 2.6.3
+ tslib: 2.7.0
'@smithy/util-uri-escape@2.2.0':
dependencies:
@@ -14833,199 +14323,176 @@ snapshots:
'@smithy/util-utf8@3.0.0':
dependencies:
'@smithy/util-buffer-from': 3.0.0
- tslib: 2.6.3
+ tslib: 2.7.0
'@smithy/util-waiter@3.1.2':
dependencies:
'@smithy/abort-controller': 3.1.1
'@smithy/types': 3.3.0
- tslib: 2.6.3
+ tslib: 2.7.0
'@sqltools/formatter@1.2.5': {}
- '@storybook/addon-actions@8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
+ '@storybook/addon-actions@8.4.4(storybook@8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4))':
dependencies:
'@storybook/global': 5.0.0
'@types/uuid': 9.0.8
dequal: 2.0.3
polished: 4.2.2
- storybook: 8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4)
+ storybook: 8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4)
uuid: 9.0.1
- '@storybook/addon-backgrounds@8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
+ '@storybook/addon-backgrounds@8.4.4(storybook@8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4))':
dependencies:
'@storybook/global': 5.0.0
memoizerific: 1.11.3
- storybook: 8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4)
+ storybook: 8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4)
ts-dedent: 2.2.0
- '@storybook/addon-controls@8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
+ '@storybook/addon-controls@8.4.4(storybook@8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4))':
dependencies:
'@storybook/global': 5.0.0
dequal: 2.0.3
- lodash: 4.17.21
- storybook: 8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4)
+ storybook: 8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4)
ts-dedent: 2.2.0
- '@storybook/addon-docs@8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
+ '@storybook/addon-docs@8.4.4(@types/react@18.0.28)(storybook@8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4))':
dependencies:
'@mdx-js/react': 3.0.1(@types/react@18.0.28)(react@18.3.1)
- '@storybook/blocks': 8.3.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))
- '@storybook/csf-plugin': 8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))
- '@storybook/global': 5.0.0
- '@storybook/react-dom-shim': 8.3.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))
- '@types/react': 18.0.28
- fs-extra: 11.1.1
+ '@storybook/blocks': 8.4.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4))
+ '@storybook/csf-plugin': 8.4.4(storybook@8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4))
+ '@storybook/react-dom-shim': 8.4.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4))
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
- rehype-external-links: 3.0.0
- rehype-slug: 6.0.0
- storybook: 8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4)
+ storybook: 8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4)
ts-dedent: 2.2.0
+ transitivePeerDependencies:
+ - '@types/react'
- '@storybook/addon-essentials@8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
+ '@storybook/addon-essentials@8.4.4(@types/react@18.0.28)(storybook@8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4))':
dependencies:
- '@storybook/addon-actions': 8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))
- '@storybook/addon-backgrounds': 8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))
- '@storybook/addon-controls': 8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))
- '@storybook/addon-docs': 8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))
- '@storybook/addon-highlight': 8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))
- '@storybook/addon-measure': 8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))
- '@storybook/addon-outline': 8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))
- '@storybook/addon-toolbars': 8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))
- '@storybook/addon-viewport': 8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))
- storybook: 8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4)
+ '@storybook/addon-actions': 8.4.4(storybook@8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4))
+ '@storybook/addon-backgrounds': 8.4.4(storybook@8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4))
+ '@storybook/addon-controls': 8.4.4(storybook@8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4))
+ '@storybook/addon-docs': 8.4.4(@types/react@18.0.28)(storybook@8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4))
+ '@storybook/addon-highlight': 8.4.4(storybook@8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4))
+ '@storybook/addon-measure': 8.4.4(storybook@8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4))
+ '@storybook/addon-outline': 8.4.4(storybook@8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4))
+ '@storybook/addon-toolbars': 8.4.4(storybook@8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4))
+ '@storybook/addon-viewport': 8.4.4(storybook@8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4))
+ storybook: 8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4)
ts-dedent: 2.2.0
+ transitivePeerDependencies:
+ - '@types/react'
- '@storybook/addon-highlight@8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
+ '@storybook/addon-highlight@8.4.4(storybook@8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4))':
dependencies:
'@storybook/global': 5.0.0
- storybook: 8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4)
+ storybook: 8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4)
- '@storybook/addon-interactions@8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
+ '@storybook/addon-interactions@8.4.4(storybook@8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4))':
dependencies:
'@storybook/global': 5.0.0
- '@storybook/instrumenter': 8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))
- '@storybook/test': 8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))
+ '@storybook/instrumenter': 8.4.4(storybook@8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4))
+ '@storybook/test': 8.4.4(storybook@8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4))
polished: 4.2.2
- storybook: 8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4)
+ storybook: 8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4)
ts-dedent: 2.2.0
- '@storybook/addon-links@8.3.4(react@18.3.1)(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
+ '@storybook/addon-links@8.4.4(react@18.3.1)(storybook@8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4))':
dependencies:
'@storybook/csf': 0.1.11
'@storybook/global': 5.0.0
- storybook: 8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4)
+ storybook: 8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4)
ts-dedent: 2.2.0
optionalDependencies:
react: 18.3.1
- '@storybook/addon-mdx-gfm@8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
+ '@storybook/addon-mdx-gfm@8.4.4(storybook@8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4))':
dependencies:
remark-gfm: 4.0.0
- storybook: 8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4)
+ storybook: 8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4)
ts-dedent: 2.2.0
transitivePeerDependencies:
- supports-color
- '@storybook/addon-measure@8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
+ '@storybook/addon-measure@8.4.4(storybook@8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4))':
dependencies:
'@storybook/global': 5.0.0
- storybook: 8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4)
+ storybook: 8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4)
tiny-invariant: 1.3.3
- '@storybook/addon-outline@8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
+ '@storybook/addon-outline@8.4.4(storybook@8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4))':
dependencies:
'@storybook/global': 5.0.0
- storybook: 8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4)
+ storybook: 8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4)
ts-dedent: 2.2.0
- '@storybook/addon-storysource@8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
+ '@storybook/addon-storysource@8.4.4(storybook@8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4))':
dependencies:
- '@storybook/source-loader': 8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))
+ '@storybook/source-loader': 8.4.4(storybook@8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4))
estraverse: 5.3.0
- storybook: 8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4)
+ storybook: 8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4)
tiny-invariant: 1.3.3
- '@storybook/addon-toolbars@8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
+ '@storybook/addon-toolbars@8.4.4(storybook@8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4))':
dependencies:
- storybook: 8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4)
+ storybook: 8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4)
- '@storybook/addon-viewport@8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
+ '@storybook/addon-viewport@8.4.4(storybook@8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4))':
dependencies:
memoizerific: 1.11.3
- storybook: 8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4)
+ storybook: 8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4)
- '@storybook/blocks@8.3.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
+ '@storybook/blocks@8.4.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4))':
dependencies:
'@storybook/csf': 0.1.11
- '@storybook/global': 5.0.0
'@storybook/icons': 1.2.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@types/lodash': 4.14.191
- color-convert: 2.0.1
- dequal: 2.0.3
- lodash: 4.17.21
- markdown-to-jsx: 7.4.7(react@18.3.1)
- memoizerific: 1.11.3
- polished: 4.2.2
- react-colorful: 5.6.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- storybook: 8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4)
- telejson: 7.2.0
+ storybook: 8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4)
ts-dedent: 2.2.0
- util-deprecate: 1.0.2
optionalDependencies:
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
- '@storybook/builder-vite@8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))(typescript@5.6.2)(vite@5.4.8(@types/node@20.14.12)(sass@1.79.3)(terser@5.33.0))':
+ '@storybook/builder-vite@8.4.4(storybook@8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4))(vite@5.4.11(@types/node@22.9.0)(sass@1.79.3)(terser@5.36.0))':
dependencies:
- '@storybook/csf-plugin': 8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))
- '@types/find-cache-dir': 3.2.1
+ '@storybook/csf-plugin': 8.4.4(storybook@8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4))
browser-assert: 1.2.1
- es-module-lexer: 1.5.4
- express: 4.21.0
- find-cache-dir: 3.3.2
- fs-extra: 11.1.1
- magic-string: 0.30.11
- storybook: 8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4)
+ storybook: 8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4)
ts-dedent: 2.2.0
- vite: 5.4.8(@types/node@20.14.12)(sass@1.79.3)(terser@5.33.0)
- optionalDependencies:
- typescript: 5.6.2
- transitivePeerDependencies:
- - supports-color
+ vite: 5.4.11(@types/node@22.9.0)(sass@1.79.3)(terser@5.36.0)
- '@storybook/components@8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
+ '@storybook/components@8.4.4(storybook@8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4))':
dependencies:
- storybook: 8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4)
+ storybook: 8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4)
- '@storybook/core-events@8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
+ '@storybook/core-events@8.4.4(storybook@8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4))':
dependencies:
- storybook: 8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4)
+ storybook: 8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4)
- '@storybook/core@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4)':
+ '@storybook/core@8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4)':
dependencies:
'@storybook/csf': 0.1.11
- '@types/express': 4.17.21
better-opn: 3.0.2
browser-assert: 1.2.1
- esbuild: 0.23.1
- esbuild-register: 3.5.0(esbuild@0.23.1)
- express: 4.21.0
+ esbuild: 0.24.0
+ esbuild-register: 3.5.0(esbuild@0.24.0)
jsdoc-type-pratt-parser: 4.1.0
process: 0.11.10
recast: 0.23.6
semver: 7.6.3
util: 0.12.5
ws: 8.18.0(bufferutil@4.0.8)(utf-8-validate@6.0.4)
+ optionalDependencies:
+ prettier: 3.3.3
transitivePeerDependencies:
- bufferutil
- supports-color
- utf-8-validate
- '@storybook/csf-plugin@8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
+ '@storybook/csf-plugin@8.4.4(storybook@8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4))':
dependencies:
- storybook: 8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4)
+ storybook: 8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4)
unplugin: 1.4.0
'@storybook/csf@0.1.11':
@@ -15039,143 +14506,122 @@ snapshots:
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
- '@storybook/instrumenter@8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
+ '@storybook/instrumenter@8.4.4(storybook@8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4))':
dependencies:
'@storybook/global': 5.0.0
'@vitest/utils': 2.1.2
- storybook: 8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4)
- util: 0.12.5
+ storybook: 8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4)
- '@storybook/manager-api@8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
+ '@storybook/manager-api@8.4.4(storybook@8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4))':
dependencies:
- storybook: 8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4)
+ storybook: 8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4)
- '@storybook/preview-api@8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
+ '@storybook/preview-api@8.4.4(storybook@8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4))':
dependencies:
- storybook: 8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4)
+ storybook: 8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4)
- '@storybook/react-dom-shim@8.3.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
+ '@storybook/react-dom-shim@8.4.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4))':
dependencies:
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
- storybook: 8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4)
+ storybook: 8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4)
- '@storybook/react-vite@8.3.4(@storybook/test@8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.22.5)(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))(typescript@5.6.2)(vite@5.4.8(@types/node@20.14.12)(sass@1.79.3)(terser@5.33.0))':
+ '@storybook/react-vite@8.4.4(@storybook/test@8.4.4(storybook@8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.26.0)(storybook@8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4))(typescript@5.6.3)(vite@5.4.11(@types/node@22.9.0)(sass@1.79.3)(terser@5.36.0))':
dependencies:
- '@joshwooding/vite-plugin-react-docgen-typescript': 0.3.0(typescript@5.6.2)(vite@5.4.8(@types/node@20.14.12)(sass@1.79.3)(terser@5.33.0))
- '@rollup/pluginutils': 5.1.2(rollup@4.22.5)
- '@storybook/builder-vite': 8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))(typescript@5.6.2)(vite@5.4.8(@types/node@20.14.12)(sass@1.79.3)(terser@5.33.0))
- '@storybook/react': 8.3.4(@storybook/test@8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))(typescript@5.6.2)
+ '@joshwooding/vite-plugin-react-docgen-typescript': 0.3.0(typescript@5.6.3)(vite@5.4.11(@types/node@22.9.0)(sass@1.79.3)(terser@5.36.0))
+ '@rollup/pluginutils': 5.1.3(rollup@4.26.0)
+ '@storybook/builder-vite': 8.4.4(storybook@8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4))(vite@5.4.11(@types/node@22.9.0)(sass@1.79.3)(terser@5.36.0))
+ '@storybook/react': 8.4.4(@storybook/test@8.4.4(storybook@8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4))(typescript@5.6.3)
find-up: 5.0.0
magic-string: 0.30.11
react: 18.3.1
react-docgen: 7.0.1
react-dom: 18.3.1(react@18.3.1)
resolve: 1.22.8
- storybook: 8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4)
+ storybook: 8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4)
tsconfig-paths: 4.2.0
- vite: 5.4.8(@types/node@20.14.12)(sass@1.79.3)(terser@5.33.0)
+ vite: 5.4.11(@types/node@22.9.0)(sass@1.79.3)(terser@5.36.0)
transitivePeerDependencies:
- - '@preact/preset-vite'
- '@storybook/test'
- rollup
- supports-color
- typescript
- - vite-plugin-glimmerx
- '@storybook/react@8.3.4(@storybook/test@8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))(typescript@5.6.2)':
+ '@storybook/react@8.4.4(@storybook/test@8.4.4(storybook@8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4))(typescript@5.6.3)':
dependencies:
- '@storybook/components': 8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))
+ '@storybook/components': 8.4.4(storybook@8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4))
'@storybook/global': 5.0.0
- '@storybook/manager-api': 8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))
- '@storybook/preview-api': 8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))
- '@storybook/react-dom-shim': 8.3.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))
- '@storybook/theming': 8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))
- '@types/escodegen': 0.0.6
- '@types/estree': 0.0.51
- '@types/node': 22.7.5
- acorn: 7.4.1
- acorn-jsx: 5.3.2(acorn@7.4.1)
- acorn-walk: 7.2.0
- escodegen: 2.1.0
- html-tags: 3.2.0
- prop-types: 15.8.1
+ '@storybook/manager-api': 8.4.4(storybook@8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4))
+ '@storybook/preview-api': 8.4.4(storybook@8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4))
+ '@storybook/react-dom-shim': 8.4.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4))
+ '@storybook/theming': 8.4.4(storybook@8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4))
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
- react-element-to-jsx-string: 15.0.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- semver: 7.6.3
- storybook: 8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4)
- ts-dedent: 2.2.0
- type-fest: 2.19.0
- util-deprecate: 1.0.2
+ storybook: 8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4)
optionalDependencies:
- '@storybook/test': 8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))
- typescript: 5.6.2
+ '@storybook/test': 8.4.4(storybook@8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4))
+ typescript: 5.6.3
- '@storybook/source-loader@8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
+ '@storybook/source-loader@8.4.4(storybook@8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4))':
dependencies:
'@storybook/csf': 0.1.11
+ es-toolkit: 1.27.0
estraverse: 5.3.0
- lodash: 4.17.21
prettier: 3.3.3
- storybook: 8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4)
+ storybook: 8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4)
- '@storybook/test@8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
+ '@storybook/test@8.4.4(storybook@8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4))':
dependencies:
'@storybook/csf': 0.1.11
'@storybook/global': 5.0.0
- '@storybook/instrumenter': 8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))
+ '@storybook/instrumenter': 8.4.4(storybook@8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4))
'@testing-library/dom': 10.4.0
'@testing-library/jest-dom': 6.5.0
'@testing-library/user-event': 14.5.2(@testing-library/dom@10.4.0)
'@vitest/expect': 2.0.5
'@vitest/spy': 2.0.5
- storybook: 8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4)
- util: 0.12.5
+ storybook: 8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4)
- '@storybook/theming@8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
+ '@storybook/theming@8.4.4(storybook@8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4))':
dependencies:
- storybook: 8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4)
+ storybook: 8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4)
- '@storybook/types@8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
+ '@storybook/types@8.4.4(storybook@8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4))':
dependencies:
- storybook: 8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4)
+ storybook: 8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4)
- '@storybook/vue3-vite@8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))(vite@5.4.8(@types/node@20.14.12)(sass@1.79.3)(terser@5.33.0))(vue@3.5.11(typescript@5.6.2))':
+ '@storybook/vue3-vite@8.4.4(storybook@8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4))(vite@5.4.11(@types/node@22.9.0)(sass@1.79.3)(terser@5.36.0))(vue@3.5.12(typescript@5.6.3))':
dependencies:
- '@storybook/builder-vite': 8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))(typescript@5.6.2)(vite@5.4.8(@types/node@20.14.12)(sass@1.79.3)(terser@5.33.0))
- '@storybook/vue3': 8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))(vue@3.5.11(typescript@5.6.2))
+ '@storybook/builder-vite': 8.4.4(storybook@8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4))(vite@5.4.11(@types/node@22.9.0)(sass@1.79.3)(terser@5.36.0))
+ '@storybook/vue3': 8.4.4(storybook@8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4))(vue@3.5.12(typescript@5.6.3))
find-package-json: 1.2.0
magic-string: 0.30.11
- storybook: 8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4)
- typescript: 5.6.2
- vite: 5.4.8(@types/node@20.14.12)(sass@1.79.3)(terser@5.33.0)
- vue-component-meta: 2.0.16(typescript@5.6.2)
- vue-docgen-api: 4.75.1(vue@3.5.11(typescript@5.6.2))
+ storybook: 8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4)
+ typescript: 5.6.3
+ vite: 5.4.11(@types/node@22.9.0)(sass@1.79.3)(terser@5.36.0)
+ vue-component-meta: 2.0.16(typescript@5.6.3)
+ vue-docgen-api: 4.75.1(vue@3.5.12(typescript@5.6.3))
transitivePeerDependencies:
- - '@preact/preset-vite'
- - supports-color
- - vite-plugin-glimmerx
- vue
- '@storybook/vue3@8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))(vue@3.5.11(typescript@5.6.2))':
+ '@storybook/vue3@8.4.4(storybook@8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4))(vue@3.5.12(typescript@5.6.3))':
dependencies:
- '@storybook/components': 8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))
+ '@storybook/components': 8.4.4(storybook@8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4))
'@storybook/global': 5.0.0
- '@storybook/manager-api': 8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))
- '@storybook/preview-api': 8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))
- '@storybook/theming': 8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))
- '@vue/compiler-core': 3.5.10
- storybook: 8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4)
+ '@storybook/manager-api': 8.4.4(storybook@8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4))
+ '@storybook/preview-api': 8.4.4(storybook@8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4))
+ '@storybook/theming': 8.4.4(storybook@8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4))
+ '@vue/compiler-core': 3.5.11
+ storybook: 8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4)
ts-dedent: 2.2.0
type-fest: 2.19.0
- vue: 3.5.11(typescript@5.6.2)
+ vue: 3.5.12(typescript@5.6.3)
vue-component-type-helpers: 2.1.10
- '@swc/cli@0.3.12(@swc/core@1.6.6)(chokidar@3.5.3)':
+ '@swc/cli@0.3.12(@swc/core@1.9.2)(chokidar@3.5.3)':
dependencies:
'@mole-inc/bin-wrapper': 8.0.1
- '@swc/core': 1.6.6
+ '@swc/core': 1.9.2
'@swc/counter': 0.1.3
commander: 8.3.0
fast-glob: 3.3.2
@@ -15195,19 +14641,13 @@ snapshots:
'@swc/core-darwin-arm64@1.3.56':
optional: true
- '@swc/core-darwin-arm64@1.6.13':
- optional: true
-
- '@swc/core-darwin-arm64@1.6.6':
+ '@swc/core-darwin-arm64@1.9.2':
optional: true
'@swc/core-darwin-x64@1.3.56':
optional: true
- '@swc/core-darwin-x64@1.6.13':
- optional: true
-
- '@swc/core-darwin-x64@1.6.6':
+ '@swc/core-darwin-x64@1.9.2':
optional: true
'@swc/core-freebsd-x64@1.3.11':
@@ -15218,124 +14658,77 @@ snapshots:
'@swc/core-linux-arm-gnueabihf@1.3.56':
optional: true
- '@swc/core-linux-arm-gnueabihf@1.6.13':
- optional: true
-
- '@swc/core-linux-arm-gnueabihf@1.6.6':
+ '@swc/core-linux-arm-gnueabihf@1.9.2':
optional: true
'@swc/core-linux-arm64-gnu@1.3.56':
optional: true
- '@swc/core-linux-arm64-gnu@1.6.13':
- optional: true
-
- '@swc/core-linux-arm64-gnu@1.6.6':
+ '@swc/core-linux-arm64-gnu@1.9.2':
optional: true
'@swc/core-linux-arm64-musl@1.3.56':
optional: true
- '@swc/core-linux-arm64-musl@1.6.13':
- optional: true
-
- '@swc/core-linux-arm64-musl@1.6.6':
+ '@swc/core-linux-arm64-musl@1.9.2':
optional: true
'@swc/core-linux-x64-gnu@1.3.56':
optional: true
- '@swc/core-linux-x64-gnu@1.6.13':
- optional: true
-
- '@swc/core-linux-x64-gnu@1.6.6':
+ '@swc/core-linux-x64-gnu@1.9.2':
optional: true
'@swc/core-linux-x64-musl@1.3.56':
optional: true
- '@swc/core-linux-x64-musl@1.6.13':
- optional: true
-
- '@swc/core-linux-x64-musl@1.6.6':
+ '@swc/core-linux-x64-musl@1.9.2':
optional: true
'@swc/core-win32-arm64-msvc@1.3.56':
optional: true
- '@swc/core-win32-arm64-msvc@1.6.13':
- optional: true
-
- '@swc/core-win32-arm64-msvc@1.6.6':
+ '@swc/core-win32-arm64-msvc@1.9.2':
optional: true
'@swc/core-win32-ia32-msvc@1.3.56':
optional: true
- '@swc/core-win32-ia32-msvc@1.6.13':
- optional: true
-
- '@swc/core-win32-ia32-msvc@1.6.6':
+ '@swc/core-win32-ia32-msvc@1.9.2':
optional: true
'@swc/core-win32-x64-msvc@1.3.56':
optional: true
- '@swc/core-win32-x64-msvc@1.6.13':
- optional: true
-
- '@swc/core-win32-x64-msvc@1.6.6':
+ '@swc/core-win32-x64-msvc@1.9.2':
optional: true
- '@swc/core@1.6.13':
- dependencies:
- '@swc/counter': 0.1.3
- '@swc/types': 0.1.9
- optionalDependencies:
- '@swc/core-darwin-arm64': 1.6.13
- '@swc/core-darwin-x64': 1.6.13
- '@swc/core-linux-arm-gnueabihf': 1.6.13
- '@swc/core-linux-arm64-gnu': 1.6.13
- '@swc/core-linux-arm64-musl': 1.6.13
- '@swc/core-linux-x64-gnu': 1.6.13
- '@swc/core-linux-x64-musl': 1.6.13
- '@swc/core-win32-arm64-msvc': 1.6.13
- '@swc/core-win32-ia32-msvc': 1.6.13
- '@swc/core-win32-x64-msvc': 1.6.13
-
- '@swc/core@1.6.6':
+ '@swc/core@1.9.2':
dependencies:
'@swc/counter': 0.1.3
- '@swc/types': 0.1.9
+ '@swc/types': 0.1.17
optionalDependencies:
- '@swc/core-darwin-arm64': 1.6.6
- '@swc/core-darwin-x64': 1.6.6
- '@swc/core-linux-arm-gnueabihf': 1.6.6
- '@swc/core-linux-arm64-gnu': 1.6.6
- '@swc/core-linux-arm64-musl': 1.6.6
- '@swc/core-linux-x64-gnu': 1.6.6
- '@swc/core-linux-x64-musl': 1.6.6
- '@swc/core-win32-arm64-msvc': 1.6.6
- '@swc/core-win32-ia32-msvc': 1.6.6
- '@swc/core-win32-x64-msvc': 1.6.6
+ '@swc/core-darwin-arm64': 1.9.2
+ '@swc/core-darwin-x64': 1.9.2
+ '@swc/core-linux-arm-gnueabihf': 1.9.2
+ '@swc/core-linux-arm64-gnu': 1.9.2
+ '@swc/core-linux-arm64-musl': 1.9.2
+ '@swc/core-linux-x64-gnu': 1.9.2
+ '@swc/core-linux-x64-musl': 1.9.2
+ '@swc/core-win32-arm64-msvc': 1.9.2
+ '@swc/core-win32-ia32-msvc': 1.9.2
+ '@swc/core-win32-x64-msvc': 1.9.2
'@swc/counter@0.1.3': {}
- '@swc/jest@0.2.36(@swc/core@1.6.13)':
+ '@swc/jest@0.2.37(@swc/core@1.9.2)':
dependencies:
'@jest/create-cache-key-function': 29.7.0
- '@swc/core': 1.6.13
+ '@swc/core': 1.9.2
'@swc/counter': 0.1.3
jsonc-parser: 3.2.0
- '@swc/jest@0.2.36(@swc/core@1.6.6)':
- dependencies:
- '@jest/create-cache-key-function': 29.7.0
- '@swc/core': 1.6.6
- '@swc/counter': 0.1.3
- jsonc-parser: 3.2.0
-
- '@swc/types@0.1.9':
+ '@swc/types@0.1.17':
dependencies:
'@swc/counter': 0.1.3
@@ -15392,14 +14785,14 @@ snapshots:
dependencies:
'@testing-library/dom': 10.4.0
- '@testing-library/vue@8.1.0(@vue/compiler-sfc@3.5.11)(@vue/server-renderer@3.5.11(vue@3.5.11(typescript@5.6.2)))(vue@3.5.11(typescript@5.6.2))':
+ '@testing-library/vue@8.1.0(@vue/compiler-sfc@3.5.12)(@vue/server-renderer@3.5.12(vue@3.5.12(typescript@5.6.3)))(vue@3.5.12(typescript@5.6.3))':
dependencies:
'@babel/runtime': 7.23.4
'@testing-library/dom': 9.3.4
- '@vue/test-utils': 2.4.1(@vue/server-renderer@3.5.11(vue@3.5.11(typescript@5.6.2)))(vue@3.5.11(typescript@5.6.2))
- vue: 3.5.11(typescript@5.6.2)
+ '@vue/test-utils': 2.4.1(@vue/server-renderer@3.5.12(vue@3.5.12(typescript@5.6.3)))(vue@3.5.12(typescript@5.6.3))
+ vue: 3.5.12(typescript@5.6.3)
optionalDependencies:
- '@vue/compiler-sfc': 3.5.11
+ '@vue/compiler-sfc': 3.5.12
transitivePeerDependencies:
- '@vue/server-renderer'
@@ -15421,9 +14814,9 @@ snapshots:
'@types/accepts@1.3.7':
dependencies:
- '@types/node': 20.14.12
+ '@types/node': 22.9.0
- '@types/archiver@6.0.2':
+ '@types/archiver@6.0.3':
dependencies:
'@types/readdir-glob': 1.1.1
@@ -15457,7 +14850,7 @@ snapshots:
'@types/body-parser@1.19.5':
dependencies:
'@types/connect': 3.4.35
- '@types/node': 20.14.12
+ '@types/node': 22.9.0
'@types/braces@3.0.1': {}
@@ -15465,7 +14858,7 @@ snapshots:
dependencies:
'@types/http-cache-semantics': 4.0.4
'@types/keyv': 3.1.4
- '@types/node': 20.14.12
+ '@types/node': 22.9.0
'@types/responselike': 1.0.0
'@types/canvas-confetti@1.6.4': {}
@@ -15478,11 +14871,11 @@ snapshots:
'@types/connect@3.4.35':
dependencies:
- '@types/node': 20.14.12
+ '@types/node': 22.9.0
'@types/connect@3.4.36':
dependencies:
- '@types/node': 20.14.12
+ '@types/node': 22.9.0
'@types/content-disposition@0.5.8': {}
@@ -15498,20 +14891,16 @@ snapshots:
'@types/doctrine@0.0.9': {}
- '@types/escodegen@0.0.6': {}
-
'@types/eslint@7.29.0':
dependencies:
'@types/estree': 1.0.6
'@types/json-schema': 7.0.15
- '@types/estree@0.0.51': {}
-
'@types/estree@1.0.6': {}
'@types/express-serve-static-core@4.17.33':
dependencies:
- '@types/node': 20.14.12
+ '@types/node': 22.9.0
'@types/qs': 6.9.7
'@types/range-parser': 1.2.4
@@ -15522,31 +14911,22 @@ snapshots:
'@types/qs': 6.9.7
'@types/serve-static': 1.15.1
- '@types/express@4.17.21':
+ '@types/fluent-ffmpeg@2.1.27':
dependencies:
- '@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
-
- '@types/find-cache-dir@3.2.1': {}
-
- '@types/fluent-ffmpeg@2.1.26':
- dependencies:
- '@types/node': 20.14.12
+ '@types/node': 22.9.0
'@types/form-data@2.5.0':
dependencies:
- form-data: 4.0.0
+ form-data: 4.0.1
'@types/glob@7.2.0':
dependencies:
'@types/minimatch': 5.1.2
- '@types/node': 20.14.12
+ '@types/node': 22.9.0
'@types/graceful-fs@4.1.6':
dependencies:
- '@types/node': 20.14.12
+ '@types/node': 22.9.0
'@types/hast@3.0.4':
dependencies:
@@ -15558,7 +14938,7 @@ snapshots:
'@types/http-link-header@1.0.7':
dependencies:
- '@types/node': 20.14.12
+ '@types/node': 22.9.0
'@types/istanbul-lib-coverage@2.0.4': {}
@@ -15575,7 +14955,7 @@ snapshots:
expect: 29.7.0
pretty-format: 29.7.0
- '@types/jest@29.5.13':
+ '@types/jest@29.5.14':
dependencies:
expect: 29.7.0
pretty-format: 29.7.0
@@ -15584,9 +14964,9 @@ snapshots:
'@types/jsdom@21.1.7':
dependencies:
- '@types/node': 20.14.12
+ '@types/node': 22.9.0
'@types/tough-cookie': 4.0.2
- parse5: 7.1.2
+ parse5: 7.2.1
'@types/json-schema@7.0.12': {}
@@ -15602,11 +14982,7 @@ snapshots:
'@types/keyv@3.1.4':
dependencies:
- '@types/node': 20.14.12
-
- '@types/lodash@4.14.191': {}
-
- '@types/matter-js@0.19.6': {}
+ '@types/node': 22.9.0
'@types/matter-js@0.19.7': {}
@@ -15630,33 +15006,17 @@ snapshots:
'@types/ms@0.7.34': {}
- '@types/mute-stream@0.0.4':
- dependencies:
- '@types/node': 20.14.12
-
- '@types/mysql@2.15.22':
- dependencies:
- '@types/node': 20.14.12
-
- '@types/node@20.11.5':
- dependencies:
- undici-types: 5.26.5
-
- '@types/node@20.14.12':
- dependencies:
- undici-types: 5.26.5
-
- '@types/node@20.9.1':
+ '@types/mysql@2.15.26':
dependencies:
- undici-types: 5.26.5
+ '@types/node': 22.9.0
- '@types/node@22.7.5':
+ '@types/node@22.9.0':
dependencies:
undici-types: 6.19.8
'@types/nodemailer@6.4.16':
dependencies:
- '@types/node': 20.14.12
+ '@types/node': 22.9.0
'@types/normalize-package-data@2.4.1': {}
@@ -15667,37 +15027,41 @@ snapshots:
'@types/oauth2orize@1.11.5':
dependencies:
'@types/express': 4.17.17
- '@types/node': 20.14.12
+ '@types/node': 22.9.0
'@types/oauth@0.9.5':
dependencies:
- '@types/node': 20.14.12
+ '@types/node': 22.9.0
+
+ '@types/oauth@0.9.6':
+ dependencies:
+ '@types/node': 22.9.0
'@types/object-assign-deep@0.4.3': {}
'@types/parse-link-header@2.0.3': {}
- '@types/pg-pool@2.0.4':
+ '@types/pg-pool@2.0.6':
dependencies:
'@types/pg': 8.11.10
'@types/pg@8.11.10':
dependencies:
- '@types/node': 20.14.12
+ '@types/node': 22.9.0
pg-protocol: 1.6.1
pg-types: 4.0.1
'@types/pg@8.6.1':
dependencies:
- '@types/node': 20.14.12
- pg-protocol: 1.6.1
+ '@types/node': 22.9.0
+ pg-protocol: 1.7.0
pg-types: 2.2.0
'@types/prop-types@15.7.5': {}
'@types/proxy-addr@2.0.3':
dependencies:
- '@types/node': 20.14.12
+ '@types/node': 22.9.0
'@types/pug@2.0.10': {}
@@ -15705,7 +15069,7 @@ snapshots:
'@types/qrcode@1.5.5':
dependencies:
- '@types/node': 20.14.12
+ '@types/node': 22.9.0
'@types/qs@6.9.7': {}
@@ -15723,7 +15087,7 @@ snapshots:
'@types/readdir-glob@1.1.1':
dependencies:
- '@types/node': 20.14.12
+ '@types/node': 22.9.0
'@types/rename@1.0.7': {}
@@ -15731,7 +15095,7 @@ snapshots:
'@types/responselike@1.0.0':
dependencies:
- '@types/node': 20.14.12
+ '@types/node': 22.9.0
'@types/sanitize-html@2.13.0':
dependencies:
@@ -15746,12 +15110,14 @@ snapshots:
'@types/serve-static@1.15.1':
dependencies:
'@types/mime': 3.0.1
- '@types/node': 20.14.12
+ '@types/node': 22.9.0
'@types/serviceworker@0.0.67': {}
'@types/shimmer@1.0.5': {}
+ '@types/shimmer@1.2.0': {}
+
'@types/simple-oauth2@5.0.7': {}
'@types/sinon@10.0.13':
@@ -15768,6 +15134,10 @@ snapshots:
'@types/statuses@2.0.4': {}
+ '@types/tedious@4.0.14':
+ dependencies:
+ '@types/node': 22.9.0
+
'@types/throttle-debounce@5.0.2': {}
'@types/tinycolor2@1.4.6': {}
@@ -15786,21 +15156,19 @@ snapshots:
'@types/vary@1.1.3':
dependencies:
- '@types/node': 20.14.12
+ '@types/node': 22.9.0
- '@types/web-push@3.6.3':
+ '@types/web-push@3.6.4':
dependencies:
- '@types/node': 20.14.12
-
- '@types/wrap-ansi@3.0.0': {}
+ '@types/node': 22.9.0
'@types/ws@8.5.11':
dependencies:
- '@types/node': 20.14.12
+ '@types/node': 22.9.0
- '@types/ws@8.5.12':
+ '@types/ws@8.5.13':
dependencies:
- '@types/node': 20.14.12
+ '@types/node': 22.9.0
'@types/yargs-parser@21.0.0': {}
@@ -15810,7 +15178,7 @@ snapshots:
'@types/yauzl@2.10.0':
dependencies:
- '@types/node': 20.14.12
+ '@types/node': 22.9.0
optional: true
'@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.1.6))(eslint@8.57.0)(typescript@5.1.6)':
@@ -15821,7 +15189,7 @@ snapshots:
'@typescript-eslint/type-utils': 6.21.0(eslint@8.57.0)(typescript@5.1.6)
'@typescript-eslint/utils': 6.21.0(eslint@8.57.0)(typescript@5.1.6)
'@typescript-eslint/visitor-keys': 6.21.0
- debug: 4.3.5(supports-color@8.1.1)
+ debug: 4.3.5(supports-color@5.5.0)
eslint: 8.57.0
graphemer: 1.4.0
ignore: 5.3.1
@@ -15833,59 +15201,41 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/eslint-plugin@7.1.0(@typescript-eslint/parser@7.1.0(eslint@9.8.0)(typescript@5.3.3))(eslint@9.8.0)(typescript@5.3.3)':
+ '@typescript-eslint/eslint-plugin@7.1.0(@typescript-eslint/parser@7.1.0(eslint@9.14.0)(typescript@5.6.3))(eslint@9.14.0)(typescript@5.6.3)':
dependencies:
'@eslint-community/regexpp': 4.6.2
- '@typescript-eslint/parser': 7.1.0(eslint@9.8.0)(typescript@5.3.3)
+ '@typescript-eslint/parser': 7.1.0(eslint@9.14.0)(typescript@5.6.3)
'@typescript-eslint/scope-manager': 7.1.0
- '@typescript-eslint/type-utils': 7.1.0(eslint@9.8.0)(typescript@5.3.3)
- '@typescript-eslint/utils': 7.1.0(eslint@9.8.0)(typescript@5.3.3)
+ '@typescript-eslint/type-utils': 7.1.0(eslint@9.14.0)(typescript@5.6.3)
+ '@typescript-eslint/utils': 7.1.0(eslint@9.14.0)(typescript@5.6.3)
'@typescript-eslint/visitor-keys': 7.1.0
- debug: 4.3.4(supports-color@5.5.0)
- eslint: 9.8.0
+ debug: 4.3.4
+ eslint: 9.14.0
graphemer: 1.4.0
ignore: 5.3.1
natural-compare: 1.4.0
semver: 7.6.0
- ts-api-utils: 1.3.0(typescript@5.3.3)
- optionalDependencies:
- typescript: 5.3.3
- transitivePeerDependencies:
- - supports-color
-
- '@typescript-eslint/eslint-plugin@7.17.0(@typescript-eslint/parser@7.17.0(eslint@9.8.0)(typescript@5.5.4))(eslint@9.8.0)(typescript@5.5.4)':
- dependencies:
- '@eslint-community/regexpp': 4.11.0
- '@typescript-eslint/parser': 7.17.0(eslint@9.8.0)(typescript@5.5.4)
- '@typescript-eslint/scope-manager': 7.17.0
- '@typescript-eslint/type-utils': 7.17.0(eslint@9.8.0)(typescript@5.5.4)
- '@typescript-eslint/utils': 7.17.0(eslint@9.8.0)(typescript@5.5.4)
- '@typescript-eslint/visitor-keys': 7.17.0
- eslint: 9.8.0
- graphemer: 1.4.0
- ignore: 5.3.1
- natural-compare: 1.4.0
- ts-api-utils: 1.3.0(typescript@5.5.4)
+ ts-api-utils: 1.3.0(typescript@5.6.3)
optionalDependencies:
- typescript: 5.5.4
+ typescript: 5.6.3
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/eslint-plugin@7.17.0(@typescript-eslint/parser@7.17.0(eslint@9.8.0)(typescript@5.6.2))(eslint@9.8.0)(typescript@5.6.2)':
+ '@typescript-eslint/eslint-plugin@7.17.0(@typescript-eslint/parser@7.17.0(eslint@9.14.0)(typescript@5.6.3))(eslint@9.14.0)(typescript@5.6.3)':
dependencies:
'@eslint-community/regexpp': 4.11.0
- '@typescript-eslint/parser': 7.17.0(eslint@9.8.0)(typescript@5.6.2)
+ '@typescript-eslint/parser': 7.17.0(eslint@9.14.0)(typescript@5.6.3)
'@typescript-eslint/scope-manager': 7.17.0
- '@typescript-eslint/type-utils': 7.17.0(eslint@9.8.0)(typescript@5.6.2)
- '@typescript-eslint/utils': 7.17.0(eslint@9.8.0)(typescript@5.6.2)
+ '@typescript-eslint/type-utils': 7.17.0(eslint@9.14.0)(typescript@5.6.3)
+ '@typescript-eslint/utils': 7.17.0(eslint@9.14.0)(typescript@5.6.3)
'@typescript-eslint/visitor-keys': 7.17.0
- eslint: 9.8.0
+ eslint: 9.14.0
graphemer: 1.4.0
ignore: 5.3.1
natural-compare: 1.4.0
- ts-api-utils: 1.3.0(typescript@5.6.2)
+ ts-api-utils: 1.3.0(typescript@5.6.3)
optionalDependencies:
- typescript: 5.6.2
+ typescript: 5.6.3
transitivePeerDependencies:
- supports-color
@@ -15895,49 +15245,36 @@ snapshots:
'@typescript-eslint/types': 6.21.0
'@typescript-eslint/typescript-estree': 6.21.0(typescript@5.1.6)
'@typescript-eslint/visitor-keys': 6.21.0
- debug: 4.3.5(supports-color@8.1.1)
+ debug: 4.3.5(supports-color@5.5.0)
eslint: 8.57.0
optionalDependencies:
typescript: 5.1.6
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/parser@7.1.0(eslint@9.8.0)(typescript@5.3.3)':
+ '@typescript-eslint/parser@7.1.0(eslint@9.14.0)(typescript@5.6.3)':
dependencies:
'@typescript-eslint/scope-manager': 7.1.0
'@typescript-eslint/types': 7.1.0
- '@typescript-eslint/typescript-estree': 7.1.0(typescript@5.3.3)
+ '@typescript-eslint/typescript-estree': 7.1.0(typescript@5.6.3)
'@typescript-eslint/visitor-keys': 7.1.0
- debug: 4.3.4(supports-color@5.5.0)
- eslint: 9.8.0
+ debug: 4.3.4
+ eslint: 9.14.0
optionalDependencies:
- typescript: 5.3.3
+ typescript: 5.6.3
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/parser@7.17.0(eslint@9.8.0)(typescript@5.5.4)':
+ '@typescript-eslint/parser@7.17.0(eslint@9.14.0)(typescript@5.6.3)':
dependencies:
'@typescript-eslint/scope-manager': 7.17.0
'@typescript-eslint/types': 7.17.0
- '@typescript-eslint/typescript-estree': 7.17.0(typescript@5.5.4)
+ '@typescript-eslint/typescript-estree': 7.17.0(typescript@5.6.3)
'@typescript-eslint/visitor-keys': 7.17.0
- debug: 4.3.5(supports-color@8.1.1)
- eslint: 9.8.0
- optionalDependencies:
- typescript: 5.5.4
- transitivePeerDependencies:
- - supports-color
-
- '@typescript-eslint/parser@7.17.0(eslint@9.8.0)(typescript@5.6.2)':
- dependencies:
- '@typescript-eslint/scope-manager': 7.17.0
- '@typescript-eslint/types': 7.17.0
- '@typescript-eslint/typescript-estree': 7.17.0(typescript@5.6.2)
- '@typescript-eslint/visitor-keys': 7.17.0
- debug: 4.3.5(supports-color@8.1.1)
- eslint: 9.8.0
+ debug: 4.3.5(supports-color@5.5.0)
+ eslint: 9.14.0
optionalDependencies:
- typescript: 5.6.2
+ typescript: 5.6.3
transitivePeerDependencies:
- supports-color
@@ -15960,7 +15297,7 @@ snapshots:
dependencies:
'@typescript-eslint/typescript-estree': 6.21.0(typescript@5.1.6)
'@typescript-eslint/utils': 6.21.0(eslint@8.57.0)(typescript@5.1.6)
- debug: 4.3.5(supports-color@8.1.1)
+ debug: 4.3.5(supports-color@5.5.0)
eslint: 8.57.0
ts-api-utils: 1.3.0(typescript@5.1.6)
optionalDependencies:
@@ -15968,39 +15305,27 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/type-utils@7.1.0(eslint@9.8.0)(typescript@5.3.3)':
+ '@typescript-eslint/type-utils@7.1.0(eslint@9.14.0)(typescript@5.6.3)':
dependencies:
- '@typescript-eslint/typescript-estree': 7.1.0(typescript@5.3.3)
- '@typescript-eslint/utils': 7.1.0(eslint@9.8.0)(typescript@5.3.3)
- debug: 4.3.4(supports-color@5.5.0)
- eslint: 9.8.0
- ts-api-utils: 1.3.0(typescript@5.3.3)
+ '@typescript-eslint/typescript-estree': 7.1.0(typescript@5.6.3)
+ '@typescript-eslint/utils': 7.1.0(eslint@9.14.0)(typescript@5.6.3)
+ debug: 4.3.4
+ eslint: 9.14.0
+ ts-api-utils: 1.3.0(typescript@5.6.3)
optionalDependencies:
- typescript: 5.3.3
+ typescript: 5.6.3
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/type-utils@7.17.0(eslint@9.8.0)(typescript@5.5.4)':
+ '@typescript-eslint/type-utils@7.17.0(eslint@9.14.0)(typescript@5.6.3)':
dependencies:
- '@typescript-eslint/typescript-estree': 7.17.0(typescript@5.5.4)
- '@typescript-eslint/utils': 7.17.0(eslint@9.8.0)(typescript@5.5.4)
- debug: 4.3.5(supports-color@8.1.1)
- eslint: 9.8.0
- ts-api-utils: 1.3.0(typescript@5.5.4)
- optionalDependencies:
- typescript: 5.5.4
- transitivePeerDependencies:
- - supports-color
-
- '@typescript-eslint/type-utils@7.17.0(eslint@9.8.0)(typescript@5.6.2)':
- dependencies:
- '@typescript-eslint/typescript-estree': 7.17.0(typescript@5.6.2)
- '@typescript-eslint/utils': 7.17.0(eslint@9.8.0)(typescript@5.6.2)
- debug: 4.3.5(supports-color@8.1.1)
- eslint: 9.8.0
- ts-api-utils: 1.3.0(typescript@5.6.2)
+ '@typescript-eslint/typescript-estree': 7.17.0(typescript@5.6.3)
+ '@typescript-eslint/utils': 7.17.0(eslint@9.14.0)(typescript@5.6.3)
+ debug: 4.3.5(supports-color@5.5.0)
+ eslint: 9.14.0
+ ts-api-utils: 1.3.0(typescript@5.6.3)
optionalDependencies:
- typescript: 5.6.2
+ typescript: 5.6.3
transitivePeerDependencies:
- supports-color
@@ -16014,7 +15339,7 @@ snapshots:
dependencies:
'@typescript-eslint/types': 6.21.0
'@typescript-eslint/visitor-keys': 6.21.0
- debug: 4.3.5(supports-color@8.1.1)
+ debug: 4.3.5(supports-color@5.5.0)
globby: 11.1.0
is-glob: 4.0.3
minimatch: 9.0.3
@@ -16025,48 +15350,33 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/typescript-estree@7.1.0(typescript@5.3.3)':
+ '@typescript-eslint/typescript-estree@7.1.0(typescript@5.6.3)':
dependencies:
'@typescript-eslint/types': 7.1.0
'@typescript-eslint/visitor-keys': 7.1.0
- debug: 4.3.4(supports-color@5.5.0)
+ debug: 4.3.4
globby: 11.1.0
is-glob: 4.0.3
minimatch: 9.0.3
semver: 7.6.0
- ts-api-utils: 1.3.0(typescript@5.3.3)
- optionalDependencies:
- typescript: 5.3.3
- transitivePeerDependencies:
- - supports-color
-
- '@typescript-eslint/typescript-estree@7.17.0(typescript@5.5.4)':
- dependencies:
- '@typescript-eslint/types': 7.17.0
- '@typescript-eslint/visitor-keys': 7.17.0
- debug: 4.3.5(supports-color@8.1.1)
- globby: 11.1.0
- is-glob: 4.0.3
- minimatch: 9.0.4
- semver: 7.6.0
- ts-api-utils: 1.3.0(typescript@5.5.4)
+ ts-api-utils: 1.3.0(typescript@5.6.3)
optionalDependencies:
- typescript: 5.5.4
+ typescript: 5.6.3
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/typescript-estree@7.17.0(typescript@5.6.2)':
+ '@typescript-eslint/typescript-estree@7.17.0(typescript@5.6.3)':
dependencies:
'@typescript-eslint/types': 7.17.0
'@typescript-eslint/visitor-keys': 7.17.0
- debug: 4.3.5(supports-color@8.1.1)
+ debug: 4.3.5(supports-color@5.5.0)
globby: 11.1.0
is-glob: 4.0.3
minimatch: 9.0.4
semver: 7.6.0
- ts-api-utils: 1.3.0(typescript@5.6.2)
+ ts-api-utils: 1.3.0(typescript@5.6.3)
optionalDependencies:
- typescript: 5.6.2
+ typescript: 5.6.3
transitivePeerDependencies:
- supports-color
@@ -16084,38 +15394,27 @@ snapshots:
- supports-color
- typescript
- '@typescript-eslint/utils@7.1.0(eslint@9.8.0)(typescript@5.3.3)':
+ '@typescript-eslint/utils@7.1.0(eslint@9.14.0)(typescript@5.6.3)':
dependencies:
- '@eslint-community/eslint-utils': 4.4.0(eslint@9.8.0)
+ '@eslint-community/eslint-utils': 4.4.0(eslint@9.14.0)
'@types/json-schema': 7.0.12
'@types/semver': 7.5.8
'@typescript-eslint/scope-manager': 7.1.0
'@typescript-eslint/types': 7.1.0
- '@typescript-eslint/typescript-estree': 7.1.0(typescript@5.3.3)
- eslint: 9.8.0
+ '@typescript-eslint/typescript-estree': 7.1.0(typescript@5.6.3)
+ eslint: 9.14.0
semver: 7.6.0
transitivePeerDependencies:
- supports-color
- typescript
- '@typescript-eslint/utils@7.17.0(eslint@9.8.0)(typescript@5.5.4)':
+ '@typescript-eslint/utils@7.17.0(eslint@9.14.0)(typescript@5.6.3)':
dependencies:
- '@eslint-community/eslint-utils': 4.4.0(eslint@9.8.0)
+ '@eslint-community/eslint-utils': 4.4.0(eslint@9.14.0)
'@typescript-eslint/scope-manager': 7.17.0
'@typescript-eslint/types': 7.17.0
- '@typescript-eslint/typescript-estree': 7.17.0(typescript@5.5.4)
- eslint: 9.8.0
- transitivePeerDependencies:
- - supports-color
- - typescript
-
- '@typescript-eslint/utils@7.17.0(eslint@9.8.0)(typescript@5.6.2)':
- dependencies:
- '@eslint-community/eslint-utils': 4.4.0(eslint@9.8.0)
- '@typescript-eslint/scope-manager': 7.17.0
- '@typescript-eslint/types': 7.17.0
- '@typescript-eslint/typescript-estree': 7.17.0(typescript@5.6.2)
- eslint: 9.8.0
+ '@typescript-eslint/typescript-estree': 7.17.0(typescript@5.6.3)
+ eslint: 9.14.0
transitivePeerDependencies:
- supports-color
- typescript
@@ -16137,21 +15436,21 @@ snapshots:
'@ungap/structured-clone@1.2.0': {}
- '@vitejs/plugin-vue@5.1.4(vite@5.4.8(@types/node@20.14.12)(sass@1.79.3)(terser@5.33.0))(vue@3.5.11(typescript@5.6.2))':
+ '@vitejs/plugin-vue@5.2.0(vite@5.4.11(@types/node@22.9.0)(sass@1.79.3)(terser@5.36.0))(vue@3.5.12(typescript@5.6.3))':
dependencies:
- vite: 5.4.8(@types/node@20.14.12)(sass@1.79.3)(terser@5.33.0)
- vue: 3.5.11(typescript@5.6.2)
+ vite: 5.4.11(@types/node@22.9.0)(sass@1.79.3)(terser@5.36.0)
+ vue: 3.5.12(typescript@5.6.3)
- '@vitejs/plugin-vue@5.1.4(vite@5.4.8(@types/node@20.14.12)(sass@1.79.4)(terser@5.33.0))(vue@3.5.11(typescript@5.6.2))':
+ '@vitejs/plugin-vue@5.2.0(vite@5.4.11(@types/node@22.9.0)(sass@1.79.4)(terser@5.36.0))(vue@3.5.12(typescript@5.6.3))':
dependencies:
- vite: 5.4.8(@types/node@20.14.12)(sass@1.79.4)(terser@5.33.0)
- vue: 3.5.11(typescript@5.6.2)
+ vite: 5.4.11(@types/node@22.9.0)(sass@1.79.4)(terser@5.36.0)
+ vue: 3.5.12(typescript@5.6.3)
- '@vitest/coverage-v8@1.6.0(vitest@1.6.0(@types/node@20.14.12)(happy-dom@10.0.3)(jsdom@24.1.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(sass@1.79.3)(terser@5.33.0))':
+ '@vitest/coverage-v8@1.6.0(vitest@1.6.0(@types/node@22.9.0)(happy-dom@10.0.3)(jsdom@24.1.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(sass@1.79.3)(terser@5.36.0))':
dependencies:
'@ampproject/remapping': 2.2.1
'@bcoe/v8-coverage': 0.2.3
- debug: 4.3.5(supports-color@8.1.1)
+ debug: 4.3.5(supports-color@5.5.0)
istanbul-lib-coverage: 3.2.2
istanbul-lib-report: 3.0.1
istanbul-lib-source-maps: 5.0.4
@@ -16162,15 +15461,15 @@ snapshots:
std-env: 3.7.0
strip-literal: 2.1.0
test-exclude: 6.0.0
- vitest: 1.6.0(@types/node@20.14.12)(happy-dom@10.0.3)(jsdom@24.1.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(sass@1.79.3)(terser@5.33.0)
+ vitest: 1.6.0(@types/node@22.9.0)(happy-dom@10.0.3)(jsdom@24.1.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(sass@1.79.3)(terser@5.36.0)
transitivePeerDependencies:
- supports-color
- '@vitest/coverage-v8@1.6.0(vitest@1.6.0(@types/node@20.14.12)(happy-dom@10.0.3)(jsdom@24.1.1)(sass@1.79.4)(terser@5.33.0))':
+ '@vitest/coverage-v8@1.6.0(vitest@1.6.0(@types/node@22.9.0)(happy-dom@10.0.3)(jsdom@24.1.1)(sass@1.79.4)(terser@5.36.0))':
dependencies:
'@ampproject/remapping': 2.2.1
'@bcoe/v8-coverage': 0.2.3
- debug: 4.3.5(supports-color@8.1.1)
+ debug: 4.3.5(supports-color@5.5.0)
istanbul-lib-coverage: 3.2.2
istanbul-lib-report: 3.0.1
istanbul-lib-source-maps: 5.0.4
@@ -16181,7 +15480,7 @@ snapshots:
std-env: 3.7.0
strip-literal: 2.1.0
test-exclude: 6.0.0
- vitest: 1.6.0(@types/node@20.14.12)(happy-dom@10.0.3)(jsdom@24.1.1)(sass@1.79.4)(terser@5.33.0)
+ vitest: 1.6.0(@types/node@22.9.0)(happy-dom@10.0.3)(jsdom@24.1.1)(sass@1.79.4)(terser@5.36.0)
transitivePeerDependencies:
- supports-color
@@ -16214,7 +15513,7 @@ snapshots:
'@vitest/snapshot@1.6.0':
dependencies:
- magic-string: 0.30.10
+ magic-string: 0.30.11
pathe: 1.1.2
pretty-format: 29.7.0
@@ -16250,187 +15549,133 @@ snapshots:
dependencies:
'@volar/source-map': 2.2.0
- '@volar/language-core@2.4.6':
+ '@volar/language-core@2.4.10':
dependencies:
- '@volar/source-map': 2.4.6
+ '@volar/source-map': 2.4.10
'@volar/source-map@2.2.0':
dependencies:
muggle-string: 0.4.1
- '@volar/source-map@2.4.6': {}
+ '@volar/source-map@2.4.10': {}
'@volar/typescript@2.2.0':
dependencies:
'@volar/language-core': 2.2.0
path-browserify: 1.0.1
- '@volar/typescript@2.4.6':
+ '@volar/typescript@2.4.10':
dependencies:
- '@volar/language-core': 2.4.6
+ '@volar/language-core': 2.4.10
path-browserify: 1.0.1
vscode-uri: 3.0.8
- '@vue/compiler-core@3.4.37':
- dependencies:
- '@babel/parser': 7.25.7
- '@vue/shared': 3.4.37
- entities: 5.0.0
- estree-walker: 2.0.2
- source-map-js: 1.2.1
-
- '@vue/compiler-core@3.5.10':
+ '@vue/compiler-core@3.5.11':
dependencies:
'@babel/parser': 7.25.7
- '@vue/shared': 3.5.10
+ '@vue/shared': 3.5.11
entities: 4.5.0
estree-walker: 2.0.2
source-map-js: 1.2.1
- '@vue/compiler-core@3.5.11':
+ '@vue/compiler-core@3.5.12':
dependencies:
'@babel/parser': 7.25.7
- '@vue/shared': 3.5.11
+ '@vue/shared': 3.5.12
entities: 4.5.0
estree-walker: 2.0.2
source-map-js: 1.2.1
- '@vue/compiler-dom@3.4.37':
- dependencies:
- '@vue/compiler-core': 3.4.37
- '@vue/shared': 3.4.37
-
- '@vue/compiler-dom@3.5.10':
- dependencies:
- '@vue/compiler-core': 3.5.10
- '@vue/shared': 3.5.10
-
'@vue/compiler-dom@3.5.11':
dependencies:
'@vue/compiler-core': 3.5.11
'@vue/shared': 3.5.11
- '@vue/compiler-sfc@3.4.37':
+ '@vue/compiler-dom@3.5.12':
dependencies:
- '@babel/parser': 7.25.7
- '@vue/compiler-core': 3.4.37
- '@vue/compiler-dom': 3.4.37
- '@vue/compiler-ssr': 3.4.37
- '@vue/shared': 3.4.37
- estree-walker: 2.0.2
- magic-string: 0.30.11
- postcss: 8.4.47
- source-map-js: 1.2.1
+ '@vue/compiler-core': 3.5.12
+ '@vue/shared': 3.5.12
- '@vue/compiler-sfc@3.5.11':
+ '@vue/compiler-sfc@3.5.12':
dependencies:
'@babel/parser': 7.25.7
- '@vue/compiler-core': 3.5.11
- '@vue/compiler-dom': 3.5.11
- '@vue/compiler-ssr': 3.5.11
- '@vue/shared': 3.5.11
+ '@vue/compiler-core': 3.5.12
+ '@vue/compiler-dom': 3.5.12
+ '@vue/compiler-ssr': 3.5.12
+ '@vue/shared': 3.5.12
estree-walker: 2.0.2
magic-string: 0.30.11
- postcss: 8.4.47
+ postcss: 8.4.49
source-map-js: 1.2.1
- '@vue/compiler-ssr@3.4.37':
+ '@vue/compiler-ssr@3.5.12':
dependencies:
- '@vue/compiler-dom': 3.4.37
- '@vue/shared': 3.4.37
-
- '@vue/compiler-ssr@3.5.11':
- dependencies:
- '@vue/compiler-dom': 3.5.11
- '@vue/shared': 3.5.11
+ '@vue/compiler-dom': 3.5.12
+ '@vue/shared': 3.5.12
'@vue/compiler-vue2@2.7.16':
dependencies:
de-indent: 1.0.2
he: 1.2.0
- '@vue/language-core@2.0.16(typescript@5.6.2)':
+ '@vue/language-core@2.0.16(typescript@5.6.3)':
dependencies:
'@volar/language-core': 2.2.0
- '@vue/compiler-dom': 3.5.10
- '@vue/shared': 3.5.10
+ '@vue/compiler-dom': 3.5.11
+ '@vue/shared': 3.5.11
computeds: 0.0.1
minimatch: 9.0.4
path-browserify: 1.0.1
vue-template-compiler: 2.7.14
optionalDependencies:
- typescript: 5.6.2
+ typescript: 5.6.3
- '@vue/language-core@2.1.6(typescript@5.6.2)':
+ '@vue/language-core@2.1.10(typescript@5.6.3)':
dependencies:
- '@volar/language-core': 2.4.6
- '@vue/compiler-dom': 3.4.37
+ '@volar/language-core': 2.4.10
+ '@vue/compiler-dom': 3.5.11
'@vue/compiler-vue2': 2.7.16
- '@vue/shared': 3.4.37
- computeds: 0.0.1
+ '@vue/shared': 3.5.11
+ alien-signals: 0.2.2
minimatch: 9.0.4
muggle-string: 0.4.1
path-browserify: 1.0.1
optionalDependencies:
- typescript: 5.6.2
-
- '@vue/reactivity@3.4.37':
- dependencies:
- '@vue/shared': 3.4.37
-
- '@vue/reactivity@3.5.11':
- dependencies:
- '@vue/shared': 3.5.11
-
- '@vue/runtime-core@3.4.37':
- dependencies:
- '@vue/reactivity': 3.4.37
- '@vue/shared': 3.4.37
+ typescript: 5.6.3
- '@vue/runtime-core@3.5.11':
+ '@vue/reactivity@3.5.12':
dependencies:
- '@vue/reactivity': 3.5.11
- '@vue/shared': 3.5.11
+ '@vue/shared': 3.5.12
- '@vue/runtime-dom@3.4.37':
+ '@vue/runtime-core@3.5.12':
dependencies:
- '@vue/reactivity': 3.4.37
- '@vue/runtime-core': 3.4.37
- '@vue/shared': 3.4.37
- csstype: 3.1.3
+ '@vue/reactivity': 3.5.12
+ '@vue/shared': 3.5.12
- '@vue/runtime-dom@3.5.11':
+ '@vue/runtime-dom@3.5.12':
dependencies:
- '@vue/reactivity': 3.5.11
- '@vue/runtime-core': 3.5.11
- '@vue/shared': 3.5.11
+ '@vue/reactivity': 3.5.12
+ '@vue/runtime-core': 3.5.12
+ '@vue/shared': 3.5.12
csstype: 3.1.3
- '@vue/server-renderer@3.4.37(vue@3.4.37(typescript@5.5.4))':
- dependencies:
- '@vue/compiler-ssr': 3.4.37
- '@vue/shared': 3.4.37
- vue: 3.4.37(typescript@5.5.4)
-
- '@vue/server-renderer@3.5.11(vue@3.5.11(typescript@5.6.2))':
+ '@vue/server-renderer@3.5.12(vue@3.5.12(typescript@5.6.3))':
dependencies:
- '@vue/compiler-ssr': 3.5.11
- '@vue/shared': 3.5.11
- vue: 3.5.11(typescript@5.6.2)
-
- '@vue/shared@3.4.37': {}
-
- '@vue/shared@3.5.10': {}
+ '@vue/compiler-ssr': 3.5.12
+ '@vue/shared': 3.5.12
+ vue: 3.5.12(typescript@5.6.3)
'@vue/shared@3.5.11': {}
- '@vue/test-utils@2.4.1(@vue/server-renderer@3.5.11(vue@3.5.11(typescript@5.6.2)))(vue@3.5.11(typescript@5.6.2))':
+ '@vue/shared@3.5.12': {}
+
+ '@vue/test-utils@2.4.1(@vue/server-renderer@3.5.12(vue@3.5.12(typescript@5.6.3)))(vue@3.5.12(typescript@5.6.3))':
dependencies:
js-beautify: 1.14.9
- vue: 3.5.11(typescript@5.6.2)
+ vue: 3.5.12(typescript@5.6.3)
vue-component-type-helpers: 1.8.4
optionalDependencies:
- '@vue/server-renderer': 3.5.11(vue@3.5.11(typescript@5.6.2))
+ '@vue/server-renderer': 3.5.12(vue@3.5.12(typescript@5.6.3))
abbrev@1.1.1: {}
@@ -16447,34 +15692,23 @@ snapshots:
mime-types: 2.1.35
negotiator: 0.6.3
- acorn-import-assertions@1.9.0(acorn@8.12.1):
- dependencies:
- acorn: 8.12.1
- optional: true
-
- acorn-import-attributes@1.9.5(acorn@8.12.1):
- dependencies:
- acorn: 8.12.1
-
- acorn-jsx@5.3.2(acorn@7.4.1):
+ acorn-import-attributes@1.9.5(acorn@8.14.0):
dependencies:
- acorn: 7.4.1
+ acorn: 8.14.0
- acorn-jsx@5.3.2(acorn@8.12.1):
+ acorn-jsx@5.3.2(acorn@8.14.0):
dependencies:
- acorn: 8.12.1
-
- acorn-walk@7.2.0: {}
+ acorn: 8.14.0
acorn-walk@8.3.2: {}
acorn@7.4.1: {}
- acorn@8.12.1: {}
+ acorn@8.14.0: {}
agent-base@7.1.0:
dependencies:
- debug: 4.3.5(supports-color@8.1.1)
+ debug: 4.3.5(supports-color@5.5.0)
transitivePeerDependencies:
- supports-color
@@ -16537,6 +15771,8 @@ snapshots:
json-schema-traverse: 1.0.0
require-from-string: 2.0.2
+ alien-signals@0.2.2: {}
+
ansi-colors@4.1.3: {}
ansi-escapes@4.3.2:
@@ -16763,7 +15999,7 @@ snapshots:
axios@1.7.4:
dependencies:
follow-redirects: 1.15.9(debug@4.3.7)
- form-data: 4.0.0
+ form-data: 4.0.1
proxy-from-env: 1.1.0
transitivePeerDependencies:
- debug
@@ -16771,7 +16007,7 @@ snapshots:
axios@1.7.7(debug@4.3.7):
dependencies:
follow-redirects: 1.15.9(debug@4.3.7)
- form-data: 4.0.0
+ form-data: 4.0.1
proxy-from-env: 1.1.0
transitivePeerDependencies:
- debug
@@ -16896,7 +16132,7 @@ snapshots:
bin-version-check@5.0.0:
dependencies:
bin-version: 6.0.0
- semver: 7.6.0
+ semver: 7.6.3
semver-truncate: 2.0.0
bin-version@6.0.0:
@@ -17016,11 +16252,11 @@ snapshots:
node-gyp-build: 4.8.1
optional: true
- bullmq@5.15.0:
+ bullmq@5.26.1:
dependencies:
cron-parser: 4.8.1
ioredis: 5.4.1
- msgpackr: 1.10.1
+ msgpackr: 1.11.2
node-abort-controller: 3.1.1
semver: 7.6.3
tslib: 2.7.0
@@ -17191,26 +16427,26 @@ snapshots:
dependencies:
is-regex: 1.1.4
- chart.js@4.4.4:
+ chart.js@4.4.6:
dependencies:
'@kurkle/color': 0.3.2
- chartjs-adapter-date-fns@3.0.0(chart.js@4.4.4)(date-fns@2.30.0):
+ chartjs-adapter-date-fns@3.0.0(chart.js@4.4.6)(date-fns@2.30.0):
dependencies:
- chart.js: 4.4.4
+ chart.js: 4.4.6
date-fns: 2.30.0
- chartjs-chart-matrix@2.0.1(chart.js@4.4.4):
+ chartjs-chart-matrix@2.0.1(chart.js@4.4.6):
dependencies:
- chart.js: 4.4.4
+ chart.js: 4.4.6
- chartjs-plugin-gradient@0.6.1(chart.js@4.4.4):
+ chartjs-plugin-gradient@0.6.1(chart.js@4.4.6):
dependencies:
- chart.js: 4.4.4
+ chart.js: 4.4.6
- chartjs-plugin-zoom@2.0.1(chart.js@4.4.4):
+ chartjs-plugin-zoom@2.0.1(chart.js@4.4.6):
dependencies:
- chart.js: 4.4.4
+ chart.js: 4.4.6
hammerjs: 2.0.8
check-error@1.0.3:
@@ -17238,7 +16474,7 @@ snapshots:
domutils: 3.1.0
encoding-sniffer: 0.2.0
htmlparser2: 9.1.0
- parse5: 7.1.2
+ parse5: 7.2.1
parse5-htmlparser2-tree-adapter: 7.0.0
parse5-parser-stream: 7.1.2
undici: 6.20.0
@@ -17251,7 +16487,7 @@ snapshots:
domhandler: 5.0.3
domutils: 3.0.1
htmlparser2: 8.0.1
- parse5: 7.1.2
+ parse5: 7.2.1
parse5-htmlparser2-tree-adapter: 7.0.0
chokidar@3.5.3:
@@ -17268,10 +16504,12 @@ snapshots:
chownr@2.0.0: {}
- chromatic@11.11.0: {}
+ chromatic@11.18.1: {}
ci-info@3.7.1: {}
+ ci-info@4.1.0: {}
+
cjs-module-lexer@1.2.2: {}
clean-stack@2.2.0: {}
@@ -17293,8 +16531,6 @@ snapshots:
parse5-htmlparser2-tree-adapter: 6.0.1
yargs: 16.2.0
- cli-spinners@2.9.2: {}
-
cli-table3@0.6.3:
dependencies:
string-width: 4.2.3
@@ -17386,8 +16622,6 @@ snapshots:
common-tags@1.8.2: {}
- commondir@1.0.1: {}
-
compare-versions@6.1.1: {}
compress-commons@6.0.2:
@@ -17438,14 +16672,14 @@ snapshots:
cookie-signature@1.0.6: {}
- cookie-signature@1.2.1: {}
-
- cookie@0.5.0: {}
-
cookie@0.6.0: {}
+ cookie@0.7.1: {}
+
cookie@0.7.2: {}
+ cookie@1.0.2: {}
+
core-util-is@1.0.2: {}
core-util-is@1.0.3: {}
@@ -17462,13 +16696,13 @@ snapshots:
crc-32: 1.2.2
readable-stream: 4.3.0
- create-jest@29.7.0(@types/node@20.14.12):
+ create-jest@29.7.0(@types/node@22.9.0):
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.14.12)
+ jest-config: 29.7.0(@types/node@22.9.0)
jest-util: 29.7.0
prompts: 2.4.2
transitivePeerDependencies:
@@ -17514,9 +16748,9 @@ snapshots:
shebang-command: 2.0.0
which: 2.0.2
- css-declaration-sorter@7.2.0(postcss@8.4.47):
+ css-declaration-sorter@7.2.0(postcss@8.4.49):
dependencies:
- postcss: 8.4.47
+ postcss: 8.4.49
css-select@5.1.0:
dependencies:
@@ -17542,49 +16776,49 @@ snapshots:
cssesc@3.0.0: {}
- cssnano-preset-default@6.1.2(postcss@8.4.47):
+ cssnano-preset-default@6.1.2(postcss@8.4.49):
dependencies:
browserslist: 4.23.0
- css-declaration-sorter: 7.2.0(postcss@8.4.47)
- cssnano-utils: 4.0.2(postcss@8.4.47)
- postcss: 8.4.47
- postcss-calc: 9.0.1(postcss@8.4.47)
- postcss-colormin: 6.1.0(postcss@8.4.47)
- postcss-convert-values: 6.1.0(postcss@8.4.47)
- postcss-discard-comments: 6.0.2(postcss@8.4.47)
- postcss-discard-duplicates: 6.0.3(postcss@8.4.47)
- postcss-discard-empty: 6.0.3(postcss@8.4.47)
- postcss-discard-overridden: 6.0.2(postcss@8.4.47)
- postcss-merge-longhand: 6.0.5(postcss@8.4.47)
- postcss-merge-rules: 6.1.1(postcss@8.4.47)
- postcss-minify-font-values: 6.1.0(postcss@8.4.47)
- postcss-minify-gradients: 6.0.3(postcss@8.4.47)
- postcss-minify-params: 6.1.0(postcss@8.4.47)
- postcss-minify-selectors: 6.0.4(postcss@8.4.47)
- postcss-normalize-charset: 6.0.2(postcss@8.4.47)
- postcss-normalize-display-values: 6.0.2(postcss@8.4.47)
- postcss-normalize-positions: 6.0.2(postcss@8.4.47)
- postcss-normalize-repeat-style: 6.0.2(postcss@8.4.47)
- postcss-normalize-string: 6.0.2(postcss@8.4.47)
- postcss-normalize-timing-functions: 6.0.2(postcss@8.4.47)
- postcss-normalize-unicode: 6.1.0(postcss@8.4.47)
- postcss-normalize-url: 6.0.2(postcss@8.4.47)
- postcss-normalize-whitespace: 6.0.2(postcss@8.4.47)
- postcss-ordered-values: 6.0.2(postcss@8.4.47)
- postcss-reduce-initial: 6.1.0(postcss@8.4.47)
- postcss-reduce-transforms: 6.0.2(postcss@8.4.47)
- postcss-svgo: 6.0.3(postcss@8.4.47)
- postcss-unique-selectors: 6.0.4(postcss@8.4.47)
+ css-declaration-sorter: 7.2.0(postcss@8.4.49)
+ cssnano-utils: 4.0.2(postcss@8.4.49)
+ postcss: 8.4.49
+ postcss-calc: 9.0.1(postcss@8.4.49)
+ postcss-colormin: 6.1.0(postcss@8.4.49)
+ postcss-convert-values: 6.1.0(postcss@8.4.49)
+ postcss-discard-comments: 6.0.2(postcss@8.4.49)
+ postcss-discard-duplicates: 6.0.3(postcss@8.4.49)
+ postcss-discard-empty: 6.0.3(postcss@8.4.49)
+ postcss-discard-overridden: 6.0.2(postcss@8.4.49)
+ postcss-merge-longhand: 6.0.5(postcss@8.4.49)
+ postcss-merge-rules: 6.1.1(postcss@8.4.49)
+ postcss-minify-font-values: 6.1.0(postcss@8.4.49)
+ postcss-minify-gradients: 6.0.3(postcss@8.4.49)
+ postcss-minify-params: 6.1.0(postcss@8.4.49)
+ postcss-minify-selectors: 6.0.4(postcss@8.4.49)
+ postcss-normalize-charset: 6.0.2(postcss@8.4.49)
+ postcss-normalize-display-values: 6.0.2(postcss@8.4.49)
+ postcss-normalize-positions: 6.0.2(postcss@8.4.49)
+ postcss-normalize-repeat-style: 6.0.2(postcss@8.4.49)
+ postcss-normalize-string: 6.0.2(postcss@8.4.49)
+ postcss-normalize-timing-functions: 6.0.2(postcss@8.4.49)
+ postcss-normalize-unicode: 6.1.0(postcss@8.4.49)
+ postcss-normalize-url: 6.0.2(postcss@8.4.49)
+ postcss-normalize-whitespace: 6.0.2(postcss@8.4.49)
+ postcss-ordered-values: 6.0.2(postcss@8.4.49)
+ postcss-reduce-initial: 6.1.0(postcss@8.4.49)
+ postcss-reduce-transforms: 6.0.2(postcss@8.4.49)
+ postcss-svgo: 6.0.3(postcss@8.4.49)
+ postcss-unique-selectors: 6.0.4(postcss@8.4.49)
- cssnano-utils@4.0.2(postcss@8.4.47):
+ cssnano-utils@4.0.2(postcss@8.4.49):
dependencies:
- postcss: 8.4.47
+ postcss: 8.4.49
- cssnano@6.1.2(postcss@8.4.47):
+ cssnano@6.1.2(postcss@8.4.49):
dependencies:
- cssnano-preset-default: 6.1.2(postcss@8.4.47)
+ cssnano-preset-default: 6.1.2(postcss@8.4.49)
lilconfig: 3.1.1
- postcss: 8.4.47
+ postcss: 8.4.49
csso@5.0.5:
dependencies:
@@ -17596,9 +16830,9 @@ snapshots:
csstype@3.1.3: {}
- cypress@13.14.2:
+ cypress@13.15.2:
dependencies:
- '@cypress/request': 3.0.5
+ '@cypress/request': 3.0.6
'@cypress/xvfb': 1.2.4(supports-color@8.1.1)
'@types/sinonjs__fake-timers': 8.1.1
'@types/sizzle': 2.3.3
@@ -17609,12 +16843,13 @@ snapshots:
cachedir: 2.3.0
chalk: 4.1.2
check-more-types: 2.24.0
+ ci-info: 4.1.0
cli-cursor: 3.1.0
cli-table3: 0.6.3
commander: 6.2.1
common-tags: 1.8.2
dayjs: 1.11.10
- debug: 4.3.5(supports-color@8.1.1)
+ debug: 4.3.7(supports-color@8.1.1)
enquirer: 2.3.6
eventemitter2: 6.4.7
execa: 4.1.0
@@ -17623,7 +16858,6 @@ snapshots:
figures: 3.2.0
fs-extra: 9.1.0
getos: 3.2.1
- is-ci: 3.0.1
is-installed-globally: 0.4.0
lazy-ass: 1.6.0
listr2: 3.14.0(enquirer@2.3.6)
@@ -17635,54 +16869,10 @@ snapshots:
process: 0.11.10
proxy-from-env: 1.0.0
request-progress: 3.0.0
- semver: 7.6.0
- supports-color: 8.1.1
- tmp: 0.2.3
- untildify: 4.0.0
- yauzl: 2.10.0
-
- cypress@13.15.0:
- dependencies:
- '@cypress/request': 3.0.5
- '@cypress/xvfb': 1.2.4(supports-color@8.1.1)
- '@types/sinonjs__fake-timers': 8.1.1
- '@types/sizzle': 2.3.3
- arch: 2.2.0
- blob-util: 2.0.2
- bluebird: 3.7.2
- buffer: 5.7.1
- cachedir: 2.3.0
- chalk: 4.1.2
- check-more-types: 2.24.0
- cli-cursor: 3.1.0
- cli-table3: 0.6.3
- commander: 6.2.1
- common-tags: 1.8.2
- dayjs: 1.11.10
- debug: 4.3.5(supports-color@8.1.1)
- enquirer: 2.3.6
- eventemitter2: 6.4.7
- execa: 4.1.0
- executable: 4.1.1
- extract-zip: 2.0.1(supports-color@8.1.1)
- figures: 3.2.0
- fs-extra: 9.1.0
- getos: 3.2.1
- is-ci: 3.0.1
- is-installed-globally: 0.4.0
- lazy-ass: 1.6.0
- listr2: 3.14.0(enquirer@2.3.6)
- lodash: 4.17.21
- log-symbols: 4.1.0
- minimist: 1.2.8
- ospath: 1.2.2
- pretty-bytes: 5.6.0
- process: 0.11.10
- proxy-from-env: 1.0.0
- request-progress: 3.0.0
- semver: 7.6.0
+ semver: 7.6.3
supports-color: 8.1.1
tmp: 0.2.3
+ tree-kill: 1.2.2
untildify: 4.0.0
yauzl: 2.10.0
@@ -17733,11 +16923,9 @@ snapshots:
optionalDependencies:
supports-color: 8.1.1
- debug@4.3.4(supports-color@5.5.0):
+ debug@4.3.4:
dependencies:
ms: 2.1.2
- optionalDependencies:
- supports-color: 5.5.0
debug@4.3.5(supports-color@5.5.0):
dependencies:
@@ -17745,16 +16933,12 @@ snapshots:
optionalDependencies:
supports-color: 5.5.0
- debug@4.3.5(supports-color@8.1.1):
+ debug@4.3.7(supports-color@8.1.1):
dependencies:
- ms: 2.1.2
+ ms: 2.1.3
optionalDependencies:
supports-color: 8.1.1
- debug@4.3.7:
- dependencies:
- ms: 2.1.3
-
decamelize-keys@1.1.1:
dependencies:
decamelize: 1.2.0
@@ -18001,8 +17185,6 @@ snapshots:
entities@4.5.0: {}
- entities@5.0.0: {}
-
env-paths@2.2.1: {}
err-code@2.0.3: {}
@@ -18120,8 +17302,6 @@ snapshots:
isarray: 2.0.5
stop-iteration-iterator: 1.0.0
- es-module-lexer@1.5.4: {}
-
es-object-atoms@1.0.0:
dependencies:
es-errors: 1.3.0
@@ -18152,10 +17332,12 @@ snapshots:
is-date-object: 1.0.5
is-symbol: 1.0.4
- esbuild-register@3.5.0(esbuild@0.23.1):
+ es-toolkit@1.27.0: {}
+
+ esbuild-register@3.5.0(esbuild@0.24.0):
dependencies:
- debug: 4.3.7
- esbuild: 0.23.1
+ debug: 4.3.7(supports-color@8.1.1)
+ esbuild: 0.24.0
transitivePeerDependencies:
- supports-color
@@ -18184,32 +17366,6 @@ snapshots:
'@esbuild/win32-ia32': 0.18.20
'@esbuild/win32-x64': 0.18.20
- esbuild@0.19.11:
- optionalDependencies:
- '@esbuild/aix-ppc64': 0.19.11
- '@esbuild/android-arm': 0.19.11
- '@esbuild/android-arm64': 0.19.11
- '@esbuild/android-x64': 0.19.11
- '@esbuild/darwin-arm64': 0.19.11
- '@esbuild/darwin-x64': 0.19.11
- '@esbuild/freebsd-arm64': 0.19.11
- '@esbuild/freebsd-x64': 0.19.11
- '@esbuild/linux-arm': 0.19.11
- '@esbuild/linux-arm64': 0.19.11
- '@esbuild/linux-ia32': 0.19.11
- '@esbuild/linux-loong64': 0.19.11
- '@esbuild/linux-mips64el': 0.19.11
- '@esbuild/linux-ppc64': 0.19.11
- '@esbuild/linux-riscv64': 0.19.11
- '@esbuild/linux-s390x': 0.19.11
- '@esbuild/linux-x64': 0.19.11
- '@esbuild/netbsd-x64': 0.19.11
- '@esbuild/openbsd-x64': 0.19.11
- '@esbuild/sunos-x64': 0.19.11
- '@esbuild/win32-arm64': 0.19.11
- '@esbuild/win32-ia32': 0.19.11
- '@esbuild/win32-x64': 0.19.11
-
esbuild@0.21.5:
optionalDependencies:
'@esbuild/aix-ppc64': 0.21.5
@@ -18236,59 +17392,32 @@ snapshots:
'@esbuild/win32-ia32': 0.21.5
'@esbuild/win32-x64': 0.21.5
- esbuild@0.23.0:
+ esbuild@0.24.0:
optionalDependencies:
- '@esbuild/aix-ppc64': 0.23.0
- '@esbuild/android-arm': 0.23.0
- '@esbuild/android-arm64': 0.23.0
- '@esbuild/android-x64': 0.23.0
- '@esbuild/darwin-arm64': 0.23.0
- '@esbuild/darwin-x64': 0.23.0
- '@esbuild/freebsd-arm64': 0.23.0
- '@esbuild/freebsd-x64': 0.23.0
- '@esbuild/linux-arm': 0.23.0
- '@esbuild/linux-arm64': 0.23.0
- '@esbuild/linux-ia32': 0.23.0
- '@esbuild/linux-loong64': 0.23.0
- '@esbuild/linux-mips64el': 0.23.0
- '@esbuild/linux-ppc64': 0.23.0
- '@esbuild/linux-riscv64': 0.23.0
- '@esbuild/linux-s390x': 0.23.0
- '@esbuild/linux-x64': 0.23.0
- '@esbuild/netbsd-x64': 0.23.0
- '@esbuild/openbsd-arm64': 0.23.0
- '@esbuild/openbsd-x64': 0.23.0
- '@esbuild/sunos-x64': 0.23.0
- '@esbuild/win32-arm64': 0.23.0
- '@esbuild/win32-ia32': 0.23.0
- '@esbuild/win32-x64': 0.23.0
-
- esbuild@0.23.1:
- optionalDependencies:
- '@esbuild/aix-ppc64': 0.23.1
- '@esbuild/android-arm': 0.23.1
- '@esbuild/android-arm64': 0.23.1
- '@esbuild/android-x64': 0.23.1
- '@esbuild/darwin-arm64': 0.23.1
- '@esbuild/darwin-x64': 0.23.1
- '@esbuild/freebsd-arm64': 0.23.1
- '@esbuild/freebsd-x64': 0.23.1
- '@esbuild/linux-arm': 0.23.1
- '@esbuild/linux-arm64': 0.23.1
- '@esbuild/linux-ia32': 0.23.1
- '@esbuild/linux-loong64': 0.23.1
- '@esbuild/linux-mips64el': 0.23.1
- '@esbuild/linux-ppc64': 0.23.1
- '@esbuild/linux-riscv64': 0.23.1
- '@esbuild/linux-s390x': 0.23.1
- '@esbuild/linux-x64': 0.23.1
- '@esbuild/netbsd-x64': 0.23.1
- '@esbuild/openbsd-arm64': 0.23.1
- '@esbuild/openbsd-x64': 0.23.1
- '@esbuild/sunos-x64': 0.23.1
- '@esbuild/win32-arm64': 0.23.1
- '@esbuild/win32-ia32': 0.23.1
- '@esbuild/win32-x64': 0.23.1
+ '@esbuild/aix-ppc64': 0.24.0
+ '@esbuild/android-arm': 0.24.0
+ '@esbuild/android-arm64': 0.24.0
+ '@esbuild/android-x64': 0.24.0
+ '@esbuild/darwin-arm64': 0.24.0
+ '@esbuild/darwin-x64': 0.24.0
+ '@esbuild/freebsd-arm64': 0.24.0
+ '@esbuild/freebsd-x64': 0.24.0
+ '@esbuild/linux-arm': 0.24.0
+ '@esbuild/linux-arm64': 0.24.0
+ '@esbuild/linux-ia32': 0.24.0
+ '@esbuild/linux-loong64': 0.24.0
+ '@esbuild/linux-mips64el': 0.24.0
+ '@esbuild/linux-ppc64': 0.24.0
+ '@esbuild/linux-riscv64': 0.24.0
+ '@esbuild/linux-s390x': 0.24.0
+ '@esbuild/linux-x64': 0.24.0
+ '@esbuild/netbsd-x64': 0.24.0
+ '@esbuild/openbsd-arm64': 0.24.0
+ '@esbuild/openbsd-x64': 0.24.0
+ '@esbuild/sunos-x64': 0.24.0
+ '@esbuild/win32-arm64': 0.24.0
+ '@esbuild/win32-ia32': 0.24.0
+ '@esbuild/win32-x64': 0.24.0
escalade@3.1.1: {}
@@ -18306,14 +17435,6 @@ snapshots:
escape-string-regexp@5.0.0: {}
- escodegen@2.1.0:
- dependencies:
- esprima: 4.0.1
- estraverse: 5.3.0
- esutils: 2.0.3
- optionalDependencies:
- source-map: 0.6.1
-
eslint-config-prettier@9.1.0(eslint@8.57.0):
dependencies:
eslint: 8.57.0
@@ -18337,17 +17458,17 @@ snapshots:
transitivePeerDependencies:
- supports-color
- eslint-module-utils@2.12.0(@typescript-eslint/parser@7.17.0(eslint@9.8.0)(typescript@5.6.2))(eslint-import-resolver-node@0.3.9)(eslint@9.8.0):
+ eslint-module-utils@2.12.0(@typescript-eslint/parser@7.17.0(eslint@9.14.0)(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint@9.14.0):
dependencies:
debug: 3.2.7(supports-color@8.1.1)
optionalDependencies:
- '@typescript-eslint/parser': 7.17.0(eslint@9.8.0)(typescript@5.6.2)
- eslint: 9.8.0
+ '@typescript-eslint/parser': 7.17.0(eslint@9.14.0)(typescript@5.6.3)
+ eslint: 9.14.0
eslint-import-resolver-node: 0.3.9
transitivePeerDependencies:
- supports-color
- eslint-plugin-import@2.30.0(@typescript-eslint/parser@7.17.0(eslint@9.8.0)(typescript@5.6.2))(eslint@9.8.0):
+ eslint-plugin-import@2.30.0(@typescript-eslint/parser@7.17.0(eslint@9.14.0)(typescript@5.6.3))(eslint@9.14.0):
dependencies:
'@rtsao/scc': 1.1.0
array-includes: 3.1.8
@@ -18356,9 +17477,9 @@ snapshots:
array.prototype.flatmap: 1.3.2
debug: 3.2.7(supports-color@8.1.1)
doctrine: 2.1.0
- eslint: 9.8.0
+ eslint: 9.14.0
eslint-import-resolver-node: 0.3.9
- eslint-module-utils: 2.12.0(@typescript-eslint/parser@7.17.0(eslint@9.8.0)(typescript@5.6.2))(eslint-import-resolver-node@0.3.9)(eslint@9.8.0)
+ eslint-module-utils: 2.12.0(@typescript-eslint/parser@7.17.0(eslint@9.14.0)(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint@9.14.0)
hasown: 2.0.2
is-core-module: 2.15.1
is-glob: 4.0.3
@@ -18369,13 +17490,13 @@ snapshots:
semver: 6.3.1
tsconfig-paths: 3.15.0
optionalDependencies:
- '@typescript-eslint/parser': 7.17.0(eslint@9.8.0)(typescript@5.6.2)
+ '@typescript-eslint/parser': 7.17.0(eslint@9.14.0)(typescript@5.6.3)
transitivePeerDependencies:
- eslint-import-resolver-typescript
- eslint-import-resolver-webpack
- supports-color
- eslint-plugin-import@2.31.0(@typescript-eslint/parser@7.17.0(eslint@9.8.0)(typescript@5.6.2))(eslint@9.8.0):
+ eslint-plugin-import@2.31.0(@typescript-eslint/parser@7.17.0(eslint@9.14.0)(typescript@5.6.3))(eslint@9.14.0):
dependencies:
'@rtsao/scc': 1.1.0
array-includes: 3.1.8
@@ -18384,9 +17505,9 @@ snapshots:
array.prototype.flatmap: 1.3.2
debug: 3.2.7(supports-color@8.1.1)
doctrine: 2.1.0
- eslint: 9.8.0
+ eslint: 9.14.0
eslint-import-resolver-node: 0.3.9
- eslint-module-utils: 2.12.0(@typescript-eslint/parser@7.17.0(eslint@9.8.0)(typescript@5.6.2))(eslint-import-resolver-node@0.3.9)(eslint@9.8.0)
+ eslint-module-utils: 2.12.0(@typescript-eslint/parser@7.17.0(eslint@9.14.0)(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint@9.14.0)
hasown: 2.0.2
is-core-module: 2.15.1
is-glob: 4.0.3
@@ -18398,36 +17519,22 @@ snapshots:
string.prototype.trimend: 1.0.8
tsconfig-paths: 3.15.0
optionalDependencies:
- '@typescript-eslint/parser': 7.17.0(eslint@9.8.0)(typescript@5.6.2)
+ '@typescript-eslint/parser': 7.17.0(eslint@9.14.0)(typescript@5.6.3)
transitivePeerDependencies:
- eslint-import-resolver-typescript
- eslint-import-resolver-webpack
- supports-color
- eslint-plugin-vue@9.27.0(eslint@9.8.0):
- dependencies:
- '@eslint-community/eslint-utils': 4.4.0(eslint@9.8.0)
- eslint: 9.8.0
- globals: 13.24.0
- natural-compare: 1.4.0
- nth-check: 2.1.1
- postcss-selector-parser: 6.0.16
- semver: 7.6.0
- vue-eslint-parser: 9.4.3(eslint@9.8.0)
- xml-name-validator: 4.0.0
- transitivePeerDependencies:
- - supports-color
-
- eslint-plugin-vue@9.28.0(eslint@9.8.0):
+ eslint-plugin-vue@9.31.0(eslint@9.14.0):
dependencies:
- '@eslint-community/eslint-utils': 4.4.0(eslint@9.8.0)
- eslint: 9.8.0
+ '@eslint-community/eslint-utils': 4.4.0(eslint@9.14.0)
+ eslint: 9.14.0
globals: 13.24.0
natural-compare: 1.4.0
nth-check: 2.1.1
postcss-selector-parser: 6.0.16
semver: 7.6.3
- vue-eslint-parser: 9.4.3(eslint@9.8.0)
+ vue-eslint-parser: 9.4.3(eslint@9.14.0)
xml-name-validator: 4.0.0
transitivePeerDependencies:
- supports-color
@@ -18439,14 +17546,14 @@ snapshots:
esrecurse: 4.3.0
estraverse: 5.3.0
- eslint-scope@8.0.2:
+ eslint-scope@8.2.0:
dependencies:
esrecurse: 4.3.0
estraverse: 5.3.0
eslint-visitor-keys@3.4.3: {}
- eslint-visitor-keys@4.0.0: {}
+ eslint-visitor-keys@4.2.0: {}
eslint@8.57.0:
dependencies:
@@ -18461,7 +17568,7 @@ snapshots:
ajv: 6.12.6
chalk: 4.1.2
cross-spawn: 7.0.3
- debug: 4.3.5(supports-color@8.1.1)
+ debug: 4.3.5(supports-color@5.5.0)
doctrine: 3.0.0
escape-string-regexp: 4.0.0
eslint-scope: 7.2.2
@@ -18491,24 +17598,28 @@ snapshots:
transitivePeerDependencies:
- supports-color
- eslint@9.8.0:
+ eslint@9.14.0:
dependencies:
- '@eslint-community/eslint-utils': 4.4.0(eslint@9.8.0)
- '@eslint-community/regexpp': 4.11.0
- '@eslint/config-array': 0.17.1
+ '@eslint-community/eslint-utils': 4.4.0(eslint@9.14.0)
+ '@eslint-community/regexpp': 4.12.1
+ '@eslint/config-array': 0.18.0
+ '@eslint/core': 0.7.0
'@eslint/eslintrc': 3.1.0
- '@eslint/js': 9.8.0
+ '@eslint/js': 9.14.0
+ '@eslint/plugin-kit': 0.2.3
+ '@humanfs/node': 0.16.6
'@humanwhocodes/module-importer': 1.0.1
- '@humanwhocodes/retry': 0.3.0
- '@nodelib/fs.walk': 1.2.8
+ '@humanwhocodes/retry': 0.4.1
+ '@types/estree': 1.0.6
+ '@types/json-schema': 7.0.15
ajv: 6.12.6
chalk: 4.1.2
cross-spawn: 7.0.3
- debug: 4.3.5(supports-color@8.1.1)
+ debug: 4.3.7(supports-color@8.1.1)
escape-string-regexp: 4.0.0
- eslint-scope: 8.0.2
- eslint-visitor-keys: 4.0.0
- espree: 10.1.0
+ eslint-scope: 8.2.0
+ eslint-visitor-keys: 4.2.0
+ espree: 10.3.0
esquery: 1.6.0
esutils: 2.0.3
fast-deep-equal: 3.1.3
@@ -18518,28 +17629,25 @@ snapshots:
ignore: 5.3.1
imurmurhash: 0.1.4
is-glob: 4.0.3
- is-path-inside: 3.0.3
json-stable-stringify-without-jsonify: 1.0.1
- levn: 0.4.1
lodash.merge: 4.6.2
minimatch: 3.1.2
natural-compare: 1.4.0
optionator: 0.9.4
- strip-ansi: 6.0.1
text-table: 0.2.0
transitivePeerDependencies:
- supports-color
- espree@10.1.0:
+ espree@10.3.0:
dependencies:
- acorn: 8.12.1
- acorn-jsx: 5.3.2(acorn@8.12.1)
- eslint-visitor-keys: 4.0.0
+ acorn: 8.14.0
+ acorn-jsx: 5.3.2(acorn@8.14.0)
+ eslint-visitor-keys: 4.2.0
espree@9.6.1:
dependencies:
- acorn: 8.12.1
- acorn-jsx: 5.3.2(acorn@8.12.1)
+ acorn: 8.14.0
+ acorn-jsx: 5.3.2(acorn@8.14.0)
eslint-visitor-keys: 3.4.3
esprima@4.0.1: {}
@@ -18646,21 +17754,6 @@ snapshots:
signal-exit: 4.1.0
strip-final-newline: 3.0.0
- execa@9.4.0:
- dependencies:
- '@sindresorhus/merge-streams': 4.0.0
- cross-spawn: 7.0.3
- figures: 6.1.0
- get-stream: 9.0.1
- human-signals: 8.0.0
- is-plain-obj: 4.1.0
- is-stream: 4.0.1
- npm-run-path: 6.0.0
- pretty-ms: 9.0.0
- signal-exit: 4.1.0
- strip-final-newline: 4.0.0
- yoctocolors: 2.0.2
-
executable@4.1.1:
dependencies:
pify: 2.3.0
@@ -18713,6 +17806,42 @@ snapshots:
transitivePeerDependencies:
- supports-color
+ express@4.21.1:
+ dependencies:
+ accepts: 1.3.8
+ array-flatten: 1.1.1
+ body-parser: 1.20.3
+ content-disposition: 0.5.4
+ content-type: 1.0.5
+ cookie: 0.7.1
+ cookie-signature: 1.0.6
+ debug: 2.6.9
+ depd: 2.0.0
+ encodeurl: 2.0.0
+ escape-html: 1.0.3
+ etag: 1.8.1
+ finalhandler: 1.3.1
+ fresh: 0.5.2
+ http-errors: 2.0.0
+ merge-descriptors: 1.0.3
+ methods: 1.1.2
+ on-finished: 2.4.1
+ parseurl: 1.3.3
+ path-to-regexp: 0.1.10
+ proxy-addr: 2.0.7
+ qs: 6.13.0
+ range-parser: 1.2.1
+ safe-buffer: 5.2.1
+ send: 0.19.0
+ serve-static: 1.16.2
+ setprototypeof: 1.2.0
+ statuses: 2.0.1
+ type-is: 1.6.18
+ utils-merge: 1.0.1
+ vary: 1.1.2
+ transitivePeerDependencies:
+ - supports-color
+
ext-list@2.2.2:
dependencies:
mime-db: 1.52.0
@@ -18726,7 +17855,7 @@ snapshots:
extract-zip@2.0.1(supports-color@8.1.1):
dependencies:
- debug: 4.3.5(supports-color@8.1.1)
+ debug: 4.3.7(supports-color@8.1.1)
get-stream: 5.2.0
yauzl: 2.10.0
optionalDependencies:
@@ -18854,10 +17983,6 @@ snapshots:
dependencies:
escape-string-regexp: 1.0.5
- figures@6.1.0:
- dependencies:
- is-unicode-supported: 2.0.0
-
file-entry-cache@6.0.1:
dependencies:
flat-cache: 3.2.0
@@ -18872,10 +17997,10 @@ snapshots:
strtok3: 7.0.0
token-types: 5.0.1
- file-type@19.5.0:
+ file-type@19.6.0:
dependencies:
get-stream: 9.0.1
- strtok3: 8.1.0
+ strtok3: 9.0.1
token-types: 6.0.0
uint8array-extras: 1.4.0
@@ -18911,12 +18036,6 @@ snapshots:
transitivePeerDependencies:
- supports-color
- find-cache-dir@3.3.2:
- dependencies:
- commondir: 1.0.1
- make-dir: 3.1.0
- pkg-dir: 4.2.0
-
find-my-way@9.1.0:
dependencies:
fast-deep-equal: 3.1.3
@@ -18970,7 +18089,7 @@ snapshots:
follow-redirects@1.15.9(debug@4.3.7):
optionalDependencies:
- debug: 4.3.7
+ debug: 4.3.7(supports-color@8.1.1)
for-each@0.3.3:
dependencies:
@@ -18993,6 +18112,12 @@ snapshots:
combined-stream: 1.0.8
mime-types: 2.1.35
+ form-data@4.0.1:
+ dependencies:
+ asynckit: 0.4.0
+ combined-stream: 1.0.8
+ mime-types: 2.1.35
+
formdata-polyfill@4.0.10:
dependencies:
fetch-blob: 3.2.0
@@ -19003,12 +18128,6 @@ snapshots:
from@0.1.7: {}
- fs-extra@11.1.1:
- dependencies:
- graceful-fs: 4.2.11
- jsonfile: 6.1.0
- universalify: 2.0.0
-
fs-extra@7.0.1:
dependencies:
graceful-fs: 4.2.11
@@ -19120,8 +18239,6 @@ snapshots:
dependencies:
assert-plus: 1.0.0
- github-slugger@2.0.0: {}
-
glob-parent@5.1.2:
dependencies:
is-glob: 4.0.3
@@ -19181,7 +18298,7 @@ snapshots:
globals@14.0.0: {}
- globals@15.9.0: {}
+ globals@15.12.0: {}
globalthis@1.0.3:
dependencies:
@@ -19228,9 +18345,9 @@ snapshots:
p-cancelable: 3.0.0
responselike: 3.0.0
- got@14.4.2:
+ got@14.4.4:
dependencies:
- '@sindresorhus/is': 7.0.0
+ '@sindresorhus/is': 7.0.1
'@szmarczak/http-timer': 5.0.1
cacheable-lookup: 7.0.0
cacheable-request: 12.0.1
@@ -19240,7 +18357,7 @@ snapshots:
lowercase-keys: 3.0.0
p-cancelable: 4.0.1
responselike: 3.0.0
- type-fest: 4.20.1
+ type-fest: 4.27.0
graceful-fs@4.2.11: {}
@@ -19261,7 +18378,7 @@ snapshots:
whatwg-encoding: 2.0.0
whatwg-mimetype: 3.0.0
- happy-dom@15.7.4:
+ happy-dom@15.11.4:
dependencies:
entities: 4.5.0
webidl-conversions: 7.0.0
@@ -19311,14 +18428,6 @@ snapshots:
dependencies:
function-bind: 1.1.2
- hast-util-heading-rank@3.0.0:
- dependencies:
- '@types/hast': 3.0.4
-
- hast-util-is-element@3.0.0:
- dependencies:
- '@types/hast': 3.0.4
-
hast-util-to-html@9.0.3:
dependencies:
'@types/hast': 3.0.4
@@ -19333,10 +18442,6 @@ snapshots:
stringify-entities: 4.0.4
zwitch: 2.0.4
- hast-util-to-string@3.0.0:
- dependencies:
- '@types/hast': 3.0.4
-
hast-util-whitespace@3.0.0:
dependencies:
'@types/hast': 3.0.4
@@ -19365,8 +18470,6 @@ snapshots:
html-escaper@2.0.2: {}
- html-tags@3.2.0: {}
-
html-void-elements@3.0.0: {}
htmlescape@1.1.1: {}
@@ -19407,7 +18510,7 @@ snapshots:
http-proxy-agent@7.0.2:
dependencies:
agent-base: 7.1.0
- debug: 4.3.5(supports-color@8.1.1)
+ debug: 4.3.5(supports-color@5.5.0)
transitivePeerDependencies:
- supports-color
@@ -19432,14 +18535,14 @@ snapshots:
https-proxy-agent@7.0.2:
dependencies:
agent-base: 7.1.0
- debug: 4.3.4(supports-color@5.5.0)
+ debug: 4.3.4
transitivePeerDependencies:
- supports-color
https-proxy-agent@7.0.5:
dependencies:
agent-base: 7.1.0
- debug: 4.3.5(supports-color@8.1.1)
+ debug: 4.3.5(supports-color@5.5.0)
transitivePeerDependencies:
- supports-color
@@ -19451,8 +18554,6 @@ snapshots:
human-signals@5.0.0: {}
- human-signals@8.0.0: {}
-
iconv-lite@0.4.24:
dependencies:
safer-buffer: 2.1.2
@@ -19480,21 +18581,13 @@ snapshots:
parent-module: 1.0.1
resolve-from: 4.0.0
- import-in-the-middle@1.10.0:
+ import-in-the-middle@1.11.2:
dependencies:
- acorn: 8.12.1
- acorn-import-attributes: 1.9.5(acorn@8.12.1)
+ acorn: 8.14.0
+ acorn-import-attributes: 1.9.5(acorn@8.14.0)
cjs-module-lexer: 1.2.2
module-details-from-path: 1.0.3
- import-in-the-middle@1.7.1:
- dependencies:
- acorn: 8.12.1
- acorn-import-assertions: 1.9.0(acorn@8.12.1)
- cjs-module-lexer: 1.2.2
- module-details-from-path: 1.0.3
- optional: true
-
import-lazy@4.0.0: {}
import-local@3.1.0:
@@ -19541,7 +18634,7 @@ snapshots:
dependencies:
'@ioredis/commands': 1.2.0
cluster-key-slot: 1.1.2
- debug: 4.3.4(supports-color@5.5.0)
+ debug: 4.3.4
denque: 2.1.0
lodash.defaults: 4.2.0
lodash.isarguments: 3.1.0
@@ -19570,8 +18663,6 @@ snapshots:
irregular-plurals@3.5.0: {}
- is-absolute-url@4.0.1: {}
-
is-arguments@1.1.1:
dependencies:
call-bind: 1.0.2
@@ -19607,10 +18698,6 @@ snapshots:
is-callable@1.2.7: {}
- is-ci@3.0.1:
- dependencies:
- ci-info: 3.7.1
-
is-core-module@2.13.1:
dependencies:
hasown: 2.0.0
@@ -19738,8 +18825,6 @@ snapshots:
is-unicode-supported@0.1.0: {}
- is-unicode-supported@2.0.0: {}
-
is-weakmap@2.0.1: {}
is-weakref@1.0.2:
@@ -19772,7 +18857,7 @@ snapshots:
istanbul-lib-instrument@5.2.1:
dependencies:
'@babel/core': 7.24.7
- '@babel/parser': 7.24.7
+ '@babel/parser': 7.25.7
'@istanbuljs/schema': 0.1.3
istanbul-lib-coverage: 3.2.2
semver: 6.3.1
@@ -19797,7 +18882,7 @@ snapshots:
istanbul-lib-source-maps@4.0.1:
dependencies:
- debug: 4.3.7
+ debug: 4.3.7(supports-color@8.1.1)
istanbul-lib-coverage: 3.2.2
source-map: 0.6.1
transitivePeerDependencies:
@@ -19806,7 +18891,7 @@ snapshots:
istanbul-lib-source-maps@5.0.4:
dependencies:
'@jridgewell/trace-mapping': 0.3.25
- debug: 4.3.5(supports-color@8.1.1)
+ debug: 4.3.5(supports-color@5.5.0)
istanbul-lib-coverage: 3.2.2
transitivePeerDependencies:
- supports-color
@@ -19849,7 +18934,7 @@ snapshots:
'@jest/expect': 29.7.0
'@jest/test-result': 29.7.0
'@jest/types': 29.6.3
- '@types/node': 20.14.12
+ '@types/node': 22.9.0
chalk: 4.1.2
co: 4.6.0
dedent: 1.3.0
@@ -19869,16 +18954,16 @@ snapshots:
- babel-plugin-macros
- supports-color
- jest-cli@29.7.0(@types/node@20.14.12):
+ jest-cli@29.7.0(@types/node@22.9.0):
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(@types/node@20.14.12)
+ create-jest: 29.7.0(@types/node@22.9.0)
exit: 0.1.2
import-local: 3.1.0
- jest-config: 29.7.0(@types/node@20.14.12)
+ jest-config: 29.7.0(@types/node@22.9.0)
jest-util: 29.7.0
jest-validate: 29.7.0
yargs: 17.7.2
@@ -19888,7 +18973,7 @@ snapshots:
- supports-color
- ts-node
- jest-config@29.7.0(@types/node@20.14.12):
+ jest-config@29.7.0(@types/node@22.9.0):
dependencies:
'@babel/core': 7.23.5
'@jest/test-sequencer': 29.7.0
@@ -19913,7 +18998,7 @@ snapshots:
slash: 3.0.0
strip-json-comments: 3.1.1
optionalDependencies:
- '@types/node': 20.14.12
+ '@types/node': 22.9.0
transitivePeerDependencies:
- babel-plugin-macros
- supports-color
@@ -19942,7 +19027,7 @@ snapshots:
'@jest/environment': 29.7.0
'@jest/fake-timers': 29.7.0
'@jest/types': 29.6.3
- '@types/node': 20.14.12
+ '@types/node': 22.9.0
jest-mock: 29.7.0
jest-util: 29.7.0
@@ -19959,7 +19044,7 @@ snapshots:
dependencies:
'@jest/types': 29.6.3
'@types/graceful-fs': 4.1.6
- '@types/node': 20.14.12
+ '@types/node': 22.9.0
anymatch: 3.1.3
fb-watchman: 2.0.2
graceful-fs: 4.2.11
@@ -19998,7 +19083,7 @@ snapshots:
jest-mock@29.7.0:
dependencies:
'@jest/types': 29.6.3
- '@types/node': 20.14.12
+ '@types/node': 22.9.0
jest-util: 29.7.0
jest-pnp-resolver@1.2.3(jest-resolve@29.7.0):
@@ -20033,7 +19118,7 @@ snapshots:
'@jest/test-result': 29.7.0
'@jest/transform': 29.7.0
'@jest/types': 29.6.3
- '@types/node': 20.14.12
+ '@types/node': 22.9.0
chalk: 4.1.2
emittery: 0.13.1
graceful-fs: 4.2.11
@@ -20061,7 +19146,7 @@ snapshots:
'@jest/test-result': 29.7.0
'@jest/transform': 29.7.0
'@jest/types': 29.6.3
- '@types/node': 20.14.12
+ '@types/node': 22.9.0
chalk: 4.1.2
cjs-module-lexer: 1.2.2
collect-v8-coverage: 1.0.1
@@ -20107,7 +19192,7 @@ snapshots:
jest-util@29.7.0:
dependencies:
'@jest/types': 29.6.3
- '@types/node': 20.14.12
+ '@types/node': 22.9.0
chalk: 4.1.2
ci-info: 3.7.1
graceful-fs: 4.2.11
@@ -20126,7 +19211,7 @@ snapshots:
dependencies:
'@jest/test-result': 29.7.0
'@jest/types': 29.6.3
- '@types/node': 20.14.12
+ '@types/node': 22.9.0
ansi-escapes: 4.3.2
chalk: 4.1.2
emittery: 0.13.1
@@ -20140,17 +19225,17 @@ snapshots:
jest-worker@29.7.0:
dependencies:
- '@types/node': 20.14.12
+ '@types/node': 22.9.0
jest-util: 29.7.0
merge-stream: 2.0.0
supports-color: 8.1.1
- jest@29.7.0(@types/node@20.14.12):
+ jest@29.7.0(@types/node@22.9.0):
dependencies:
'@jest/core': 29.7.0
'@jest/types': 29.6.3
import-local: 3.1.0
- jest-cli: 29.7.0(@types/node@20.14.12)
+ jest-cli: 29.7.0(@types/node@22.9.0)
transitivePeerDependencies:
- '@types/node'
- babel-plugin-macros
@@ -20210,13 +19295,13 @@ snapshots:
cssstyle: 4.0.1
data-urls: 5.0.0
decimal.js: 10.4.3
- form-data: 4.0.0
+ form-data: 4.0.1
html-encoding-sniffer: 4.0.0
http-proxy-agent: 7.0.2
https-proxy-agent: 7.0.5
is-potential-custom-element-name: 1.0.1
nwsapi: 2.2.12
- parse5: 7.1.2
+ parse5: 7.2.1
rrweb-cssom: 0.7.1
saxes: 6.0.0
symbol-tree: 3.2.4
@@ -20239,13 +19324,13 @@ snapshots:
cssstyle: 4.0.1
data-urls: 5.0.0
decimal.js: 10.4.3
- form-data: 4.0.0
+ form-data: 4.0.1
html-encoding-sniffer: 4.0.0
http-proxy-agent: 7.0.2
https-proxy-agent: 7.0.5
is-potential-custom-element-name: 1.0.1
nwsapi: 2.2.12
- parse5: 7.1.2
+ parse5: 7.2.1
rrweb-cssom: 0.7.1
saxes: 6.0.0
symbol-tree: 3.2.4
@@ -20267,13 +19352,13 @@ snapshots:
cssstyle: 4.0.1
data-urls: 5.0.0
decimal.js: 10.4.3
- form-data: 4.0.0
+ form-data: 4.0.1
html-encoding-sniffer: 4.0.0
http-proxy-agent: 7.0.2
https-proxy-agent: 7.0.5
is-potential-custom-element-name: 1.0.1
nwsapi: 2.2.12
- parse5: 7.1.2
+ parse5: 7.2.1
rrweb-cssom: 0.7.1
saxes: 6.0.0
symbol-tree: 3.2.4
@@ -20444,7 +19529,7 @@ snapshots:
colorette: 2.0.19
log-update: 4.0.0
p-map: 4.0.0
- rfdc: 1.3.0
+ rfdc: 1.4.1
rxjs: 7.8.1
through: 2.3.8
wrap-ansi: 7.0.0
@@ -20553,10 +19638,6 @@ snapshots:
mailcheck@1.1.1: {}
- make-dir@3.1.0:
- dependencies:
- semver: 6.3.1
-
make-dir@4.0.0:
dependencies:
semver: 7.6.0
@@ -20593,10 +19674,6 @@ snapshots:
markdown-table@3.0.3: {}
- markdown-to-jsx@7.4.7(react@18.3.1):
- dependencies:
- react: 18.3.1
-
marked@4.3.0: {}
matter-js@0.19.0: {}
@@ -20720,11 +19797,7 @@ snapshots:
media-typer@0.3.0: {}
- meilisearch@0.42.0(encoding@0.1.13):
- dependencies:
- cross-fetch: 3.1.6(encoding@0.1.13)
- transitivePeerDependencies:
- - encoding
+ meilisearch@0.45.0: {}
memoizerific@1.11.3:
dependencies:
@@ -20757,7 +19830,7 @@ snapshots:
microformats-parser@2.0.2:
dependencies:
- parse5: 7.1.2
+ parse5: 7.2.1
micromark-core-commonmark@2.0.0:
dependencies:
@@ -20931,7 +20004,7 @@ snapshots:
micromark@4.0.0:
dependencies:
'@types/debug': 4.1.12
- debug: 4.3.7
+ debug: 4.3.7(supports-color@8.1.1)
decode-named-character-reference: 1.0.2
devlop: 1.1.0
micromark-core-commonmark: 2.0.0
@@ -21066,7 +20139,7 @@ snapshots:
mlly@1.5.0:
dependencies:
- acorn: 8.12.1
+ acorn: 8.14.0
pathe: 1.1.2
pkg-types: 1.0.3
ufo: 1.3.2
@@ -21099,44 +20172,23 @@ snapshots:
'@msgpackr-extract/msgpackr-extract-win32-x64': 3.0.2
optional: true
- msgpackr@1.10.1:
+ msgpackr@1.11.2:
optionalDependencies:
msgpackr-extract: 3.0.2
- msw-storybook-addon@2.0.3(msw@2.4.9(typescript@5.6.2)):
+ msw-storybook-addon@2.0.4(msw@2.6.4(@types/node@22.9.0)(typescript@5.6.3)):
dependencies:
is-node-process: 1.2.0
- msw: 2.4.9(typescript@5.6.2)
-
- msw@2.3.4(typescript@5.6.2):
- dependencies:
- '@bundled-es-modules/cookie': 2.0.0
- '@bundled-es-modules/statuses': 1.0.1
- '@bundled-es-modules/tough-cookie': 0.1.6
- '@inquirer/confirm': 3.1.6
- '@mswjs/interceptors': 0.29.1
- '@open-draft/until': 2.1.0
- '@types/cookie': 0.6.0
- '@types/statuses': 2.0.4
- chalk: 4.1.2
- graphql: 16.8.1
- headers-polyfill: 4.0.2
- is-node-process: 1.2.0
- outvariant: 1.4.2
- path-to-regexp: 6.2.1
- strict-event-emitter: 0.5.1
- type-fest: 4.20.1
- yargs: 17.7.2
- optionalDependencies:
- typescript: 5.6.2
+ msw: 2.6.4(@types/node@22.9.0)(typescript@5.6.3)
- msw@2.4.9(typescript@5.6.2):
+ msw@2.6.4(@types/node@22.9.0)(typescript@5.6.3):
dependencies:
- '@bundled-es-modules/cookie': 2.0.0
+ '@bundled-es-modules/cookie': 2.0.1
'@bundled-es-modules/statuses': 1.0.1
'@bundled-es-modules/tough-cookie': 0.1.6
- '@inquirer/confirm': 3.1.6
- '@mswjs/interceptors': 0.35.9
+ '@inquirer/confirm': 5.0.2(@types/node@22.9.0)
+ '@mswjs/interceptors': 0.36.10
+ '@open-draft/deferred-promise': 2.2.0
'@open-draft/until': 2.1.0
'@types/cookie': 0.6.0
'@types/statuses': 2.0.4
@@ -21144,13 +20196,15 @@ snapshots:
graphql: 16.8.1
headers-polyfill: 4.0.2
is-node-process: 1.2.0
- outvariant: 1.4.2
+ outvariant: 1.4.3
path-to-regexp: 6.3.0
strict-event-emitter: 0.5.1
- type-fest: 4.20.1
+ type-fest: 4.27.0
yargs: 17.7.2
optionalDependencies:
- typescript: 5.6.2
+ typescript: 5.6.3
+ transitivePeerDependencies:
+ - '@types/node'
muggle-string@0.4.1: {}
@@ -21164,7 +20218,7 @@ snapshots:
type-is: 1.6.18
xtend: 4.0.2
- mute-stream@1.0.0: {}
+ mute-stream@2.0.0: {}
mylas@2.1.13: {}
@@ -21178,7 +20232,7 @@ snapshots:
nanoid@3.3.7: {}
- nanoid@5.0.7: {}
+ nanoid@5.0.8: {}
natural-compare@1.4.0: {}
@@ -21214,7 +20268,7 @@ snapshots:
node-abi@3.62.0:
dependencies:
- semver: 7.6.0
+ semver: 7.6.3
node-abort-controller@3.1.1: {}
@@ -21264,20 +20318,7 @@ snapshots:
node-releases@2.0.14: {}
- nodemailer@6.9.15: {}
-
- nodemon@3.0.2:
- dependencies:
- chokidar: 3.5.3
- debug: 4.3.4(supports-color@5.5.0)
- ignore-by-default: 1.0.1
- minimatch: 3.1.2
- pstree.remy: 1.1.8
- semver: 7.5.4
- simple-update-notifier: 2.0.0
- supports-color: 5.5.0
- touch: 3.1.0
- undefsafe: 2.0.5
+ nodemailer@6.9.16: {}
nodemon@3.1.7:
dependencies:
@@ -21342,11 +20383,6 @@ snapshots:
dependencies:
path-key: 4.0.0
- npm-run-path@6.0.0:
- dependencies:
- path-key: 4.0.0
- unicorn-magic: 0.3.0
-
nth-check@2.1.1:
dependencies:
boolbase: 1.0.0
@@ -21458,15 +20494,6 @@ snapshots:
undici: 5.28.2
yargs-parser: 21.1.1
- opentelemetry-instrumentation-fetch-node@1.2.3(@opentelemetry/api@1.9.0):
- dependencies:
- '@opentelemetry/api': 1.9.0
- '@opentelemetry/instrumentation': 0.46.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/semantic-conventions': 1.25.1
- transitivePeerDependencies:
- - supports-color
- optional: true
-
optionator@0.9.4:
dependencies:
deep-is: 0.1.4
@@ -21488,8 +20515,6 @@ snapshots:
dependencies:
'@noble/hashes': 1.5.0
- outvariant@1.4.2: {}
-
outvariant@1.4.3: {}
p-cancelable@2.1.1: {}
@@ -21552,8 +20577,6 @@ snapshots:
dependencies:
xtend: 4.0.2
- parse-ms@4.0.0: {}
-
parse-srcset@1.0.2: {}
parse5-htmlparser2-tree-adapter@6.0.1:
@@ -21563,17 +20586,17 @@ snapshots:
parse5-htmlparser2-tree-adapter@7.0.0:
dependencies:
domhandler: 5.0.3
- parse5: 7.1.2
+ parse5: 7.2.1
parse5-parser-stream@7.1.2:
dependencies:
- parse5: 7.1.2
+ parse5: 7.2.1
parse5@5.1.1: {}
parse5@6.0.1: {}
- parse5@7.1.2:
+ parse5@7.2.1:
dependencies:
entities: 4.5.0
@@ -21611,8 +20634,6 @@ snapshots:
path-to-regexp@3.3.0: {}
- path-to-regexp@6.2.1: {}
-
path-to-regexp@6.3.0: {}
path-type@4.0.0: {}
@@ -21627,10 +20648,10 @@ snapshots:
dependencies:
through: 2.3.8
- peek-readable@5.1.3: {}
-
peek-readable@5.2.0: {}
+ peek-readable@5.3.1: {}
+
pend@1.2.0: {}
performance-now@2.1.0: {}
@@ -21644,9 +20665,9 @@ snapshots:
pg-numeric@1.0.2: {}
- pg-pool@3.7.0(pg@8.13.0):
+ pg-pool@3.7.0(pg@8.13.1):
dependencies:
- pg: 8.13.0
+ pg: 8.13.1
pg-protocol@1.6.1: {}
@@ -21670,10 +20691,10 @@ snapshots:
postgres-interval: 3.0.0
postgres-range: 1.1.3
- pg@8.13.0:
+ pg@8.13.1:
dependencies:
pg-connection-string: 2.7.0
- pg-pool: 3.7.0(pg@8.13.0)
+ pg-pool: 3.7.0(pg@8.13.1)
pg-protocol: 1.7.0
pg-types: 2.2.0
pgpass: 1.0.5
@@ -21692,8 +20713,12 @@ snapshots:
picocolors@1.1.0: {}
+ picocolors@1.1.1: {}
+
picomatch@2.3.1: {}
+ picomatch@4.0.2: {}
+
pid-port@1.0.0:
dependencies:
execa: 8.0.1
@@ -21755,140 +20780,140 @@ snapshots:
possible-typed-array-names@1.0.0: {}
- postcss-calc@9.0.1(postcss@8.4.47):
+ postcss-calc@9.0.1(postcss@8.4.49):
dependencies:
- postcss: 8.4.47
+ postcss: 8.4.49
postcss-selector-parser: 6.0.15
postcss-value-parser: 4.2.0
- postcss-colormin@6.1.0(postcss@8.4.47):
+ postcss-colormin@6.1.0(postcss@8.4.49):
dependencies:
browserslist: 4.23.0
caniuse-api: 3.0.0
colord: 2.9.3
- postcss: 8.4.47
+ postcss: 8.4.49
postcss-value-parser: 4.2.0
- postcss-convert-values@6.1.0(postcss@8.4.47):
+ postcss-convert-values@6.1.0(postcss@8.4.49):
dependencies:
browserslist: 4.23.0
- postcss: 8.4.47
+ postcss: 8.4.49
postcss-value-parser: 4.2.0
- postcss-discard-comments@6.0.2(postcss@8.4.47):
+ postcss-discard-comments@6.0.2(postcss@8.4.49):
dependencies:
- postcss: 8.4.47
+ postcss: 8.4.49
- postcss-discard-duplicates@6.0.3(postcss@8.4.47):
+ postcss-discard-duplicates@6.0.3(postcss@8.4.49):
dependencies:
- postcss: 8.4.47
+ postcss: 8.4.49
- postcss-discard-empty@6.0.3(postcss@8.4.47):
+ postcss-discard-empty@6.0.3(postcss@8.4.49):
dependencies:
- postcss: 8.4.47
+ postcss: 8.4.49
- postcss-discard-overridden@6.0.2(postcss@8.4.47):
+ postcss-discard-overridden@6.0.2(postcss@8.4.49):
dependencies:
- postcss: 8.4.47
+ postcss: 8.4.49
- postcss-merge-longhand@6.0.5(postcss@8.4.47):
+ postcss-merge-longhand@6.0.5(postcss@8.4.49):
dependencies:
- postcss: 8.4.47
+ postcss: 8.4.49
postcss-value-parser: 4.2.0
- stylehacks: 6.1.1(postcss@8.4.47)
+ stylehacks: 6.1.1(postcss@8.4.49)
- postcss-merge-rules@6.1.1(postcss@8.4.47):
+ postcss-merge-rules@6.1.1(postcss@8.4.49):
dependencies:
browserslist: 4.23.0
caniuse-api: 3.0.0
- cssnano-utils: 4.0.2(postcss@8.4.47)
- postcss: 8.4.47
+ cssnano-utils: 4.0.2(postcss@8.4.49)
+ postcss: 8.4.49
postcss-selector-parser: 6.0.16
- postcss-minify-font-values@6.1.0(postcss@8.4.47):
+ postcss-minify-font-values@6.1.0(postcss@8.4.49):
dependencies:
- postcss: 8.4.47
+ postcss: 8.4.49
postcss-value-parser: 4.2.0
- postcss-minify-gradients@6.0.3(postcss@8.4.47):
+ postcss-minify-gradients@6.0.3(postcss@8.4.49):
dependencies:
colord: 2.9.3
- cssnano-utils: 4.0.2(postcss@8.4.47)
- postcss: 8.4.47
+ cssnano-utils: 4.0.2(postcss@8.4.49)
+ postcss: 8.4.49
postcss-value-parser: 4.2.0
- postcss-minify-params@6.1.0(postcss@8.4.47):
+ postcss-minify-params@6.1.0(postcss@8.4.49):
dependencies:
browserslist: 4.23.0
- cssnano-utils: 4.0.2(postcss@8.4.47)
- postcss: 8.4.47
+ cssnano-utils: 4.0.2(postcss@8.4.49)
+ postcss: 8.4.49
postcss-value-parser: 4.2.0
- postcss-minify-selectors@6.0.4(postcss@8.4.47):
+ postcss-minify-selectors@6.0.4(postcss@8.4.49):
dependencies:
- postcss: 8.4.47
+ postcss: 8.4.49
postcss-selector-parser: 6.0.16
- postcss-normalize-charset@6.0.2(postcss@8.4.47):
+ postcss-normalize-charset@6.0.2(postcss@8.4.49):
dependencies:
- postcss: 8.4.47
+ postcss: 8.4.49
- postcss-normalize-display-values@6.0.2(postcss@8.4.47):
+ postcss-normalize-display-values@6.0.2(postcss@8.4.49):
dependencies:
- postcss: 8.4.47
+ postcss: 8.4.49
postcss-value-parser: 4.2.0
- postcss-normalize-positions@6.0.2(postcss@8.4.47):
+ postcss-normalize-positions@6.0.2(postcss@8.4.49):
dependencies:
- postcss: 8.4.47
+ postcss: 8.4.49
postcss-value-parser: 4.2.0
- postcss-normalize-repeat-style@6.0.2(postcss@8.4.47):
+ postcss-normalize-repeat-style@6.0.2(postcss@8.4.49):
dependencies:
- postcss: 8.4.47
+ postcss: 8.4.49
postcss-value-parser: 4.2.0
- postcss-normalize-string@6.0.2(postcss@8.4.47):
+ postcss-normalize-string@6.0.2(postcss@8.4.49):
dependencies:
- postcss: 8.4.47
+ postcss: 8.4.49
postcss-value-parser: 4.2.0
- postcss-normalize-timing-functions@6.0.2(postcss@8.4.47):
+ postcss-normalize-timing-functions@6.0.2(postcss@8.4.49):
dependencies:
- postcss: 8.4.47
+ postcss: 8.4.49
postcss-value-parser: 4.2.0
- postcss-normalize-unicode@6.1.0(postcss@8.4.47):
+ postcss-normalize-unicode@6.1.0(postcss@8.4.49):
dependencies:
browserslist: 4.23.0
- postcss: 8.4.47
+ postcss: 8.4.49
postcss-value-parser: 4.2.0
- postcss-normalize-url@6.0.2(postcss@8.4.47):
+ postcss-normalize-url@6.0.2(postcss@8.4.49):
dependencies:
- postcss: 8.4.47
+ postcss: 8.4.49
postcss-value-parser: 4.2.0
- postcss-normalize-whitespace@6.0.2(postcss@8.4.47):
+ postcss-normalize-whitespace@6.0.2(postcss@8.4.49):
dependencies:
- postcss: 8.4.47
+ postcss: 8.4.49
postcss-value-parser: 4.2.0
- postcss-ordered-values@6.0.2(postcss@8.4.47):
+ postcss-ordered-values@6.0.2(postcss@8.4.49):
dependencies:
- cssnano-utils: 4.0.2(postcss@8.4.47)
- postcss: 8.4.47
+ cssnano-utils: 4.0.2(postcss@8.4.49)
+ postcss: 8.4.49
postcss-value-parser: 4.2.0
- postcss-reduce-initial@6.1.0(postcss@8.4.47):
+ postcss-reduce-initial@6.1.0(postcss@8.4.49):
dependencies:
browserslist: 4.23.0
caniuse-api: 3.0.0
- postcss: 8.4.47
+ postcss: 8.4.49
- postcss-reduce-transforms@6.0.2(postcss@8.4.47):
+ postcss-reduce-transforms@6.0.2(postcss@8.4.49):
dependencies:
- postcss: 8.4.47
+ postcss: 8.4.49
postcss-value-parser: 4.2.0
postcss-selector-parser@6.0.15:
@@ -21901,15 +20926,15 @@ snapshots:
cssesc: 3.0.0
util-deprecate: 1.0.2
- postcss-svgo@6.0.3(postcss@8.4.47):
+ postcss-svgo@6.0.3(postcss@8.4.49):
dependencies:
- postcss: 8.4.47
+ postcss: 8.4.49
postcss-value-parser: 4.2.0
svgo: 3.2.0
- postcss-unique-selectors@6.0.4(postcss@8.4.47):
+ postcss-unique-selectors@6.0.4(postcss@8.4.49):
dependencies:
- postcss: 8.4.47
+ postcss: 8.4.49
postcss-selector-parser: 6.0.16
postcss-value-parser@4.2.0: {}
@@ -21920,6 +20945,12 @@ snapshots:
picocolors: 1.1.0
source-map-js: 1.2.1
+ postcss@8.4.49:
+ dependencies:
+ nanoid: 3.3.7
+ picocolors: 1.1.1
+ source-map-js: 1.2.1
+
postgres-array@2.0.0: {}
postgres-array@3.0.2: {}
@@ -21960,10 +20991,6 @@ snapshots:
ansi-styles: 5.2.0
react-is: 18.2.0
- pretty-ms@9.0.0:
- dependencies:
- parse-ms: 4.0.0
-
private-ip@2.3.3:
dependencies:
ip-regex: 4.3.0
@@ -22011,12 +21038,6 @@ snapshots:
kleur: 3.0.3
sisteransi: 1.0.5
- prop-types@15.8.1:
- dependencies:
- loose-envify: 1.4.0
- object-assign: 4.1.1
- react-is: 16.13.1
-
property-information@6.5.0: {}
proto-list@1.2.4: {}
@@ -22184,14 +21205,9 @@ snapshots:
transitivePeerDependencies:
- supports-color
- react-colorful@5.6.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
+ react-docgen-typescript@2.2.2(typescript@5.6.3):
dependencies:
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
-
- react-docgen-typescript@2.2.2(typescript@5.6.2):
- dependencies:
- typescript: 5.6.2
+ typescript: 5.6.3
react-docgen@7.0.1:
dependencies:
@@ -22214,20 +21230,8 @@ snapshots:
react: 18.3.1
scheduler: 0.23.2
- react-element-to-jsx-string@15.0.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
- dependencies:
- '@base2/pretty-print-object': 1.0.1
- is-plain-object: 5.0.0
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
- react-is: 18.1.0
-
- react-is@16.13.1: {}
-
react-is@17.0.2: {}
- react-is@18.1.0: {}
-
react-is@18.2.0: {}
react@18.3.1:
@@ -22330,23 +21334,6 @@ snapshots:
es-errors: 1.3.0
set-function-name: 2.0.2
- rehype-external-links@3.0.0:
- dependencies:
- '@types/hast': 3.0.4
- '@ungap/structured-clone': 1.2.0
- hast-util-is-element: 3.0.0
- is-absolute-url: 4.0.1
- space-separated-tokens: 2.0.2
- unist-util-visit: 5.0.0
-
- rehype-slug@6.0.0:
- dependencies:
- '@types/hast': 3.0.4
- github-slugger: 2.0.0
- hast-util-heading-rank: 3.0.0
- hast-util-to-string: 3.0.0
- unist-util-visit: 5.0.0
-
remark-gfm@4.0.0:
dependencies:
'@types/mdast': 4.0.3
@@ -22389,7 +21376,7 @@ snapshots:
require-in-the-middle@7.3.0:
dependencies:
- debug: 4.3.5(supports-color@8.1.1)
+ debug: 4.3.7(supports-color@8.1.1)
module-details-from-path: 1.0.3
resolve: 1.22.8
transitivePeerDependencies:
@@ -22438,34 +21425,34 @@ snapshots:
reusify@1.0.4: {}
- rfdc@1.3.0: {}
-
rfdc@1.4.1: {}
rimraf@3.0.2:
dependencies:
glob: 7.2.3
- rollup@4.22.5:
+ rollup@4.26.0:
dependencies:
'@types/estree': 1.0.6
optionalDependencies:
- '@rollup/rollup-android-arm-eabi': 4.22.5
- '@rollup/rollup-android-arm64': 4.22.5
- '@rollup/rollup-darwin-arm64': 4.22.5
- '@rollup/rollup-darwin-x64': 4.22.5
- '@rollup/rollup-linux-arm-gnueabihf': 4.22.5
- '@rollup/rollup-linux-arm-musleabihf': 4.22.5
- '@rollup/rollup-linux-arm64-gnu': 4.22.5
- '@rollup/rollup-linux-arm64-musl': 4.22.5
- '@rollup/rollup-linux-powerpc64le-gnu': 4.22.5
- '@rollup/rollup-linux-riscv64-gnu': 4.22.5
- '@rollup/rollup-linux-s390x-gnu': 4.22.5
- '@rollup/rollup-linux-x64-gnu': 4.22.5
- '@rollup/rollup-linux-x64-musl': 4.22.5
- '@rollup/rollup-win32-arm64-msvc': 4.22.5
- '@rollup/rollup-win32-ia32-msvc': 4.22.5
- '@rollup/rollup-win32-x64-msvc': 4.22.5
+ '@rollup/rollup-android-arm-eabi': 4.26.0
+ '@rollup/rollup-android-arm64': 4.26.0
+ '@rollup/rollup-darwin-arm64': 4.26.0
+ '@rollup/rollup-darwin-x64': 4.26.0
+ '@rollup/rollup-freebsd-arm64': 4.26.0
+ '@rollup/rollup-freebsd-x64': 4.26.0
+ '@rollup/rollup-linux-arm-gnueabihf': 4.26.0
+ '@rollup/rollup-linux-arm-musleabihf': 4.26.0
+ '@rollup/rollup-linux-arm64-gnu': 4.26.0
+ '@rollup/rollup-linux-arm64-musl': 4.26.0
+ '@rollup/rollup-linux-powerpc64le-gnu': 4.26.0
+ '@rollup/rollup-linux-riscv64-gnu': 4.26.0
+ '@rollup/rollup-linux-s390x-gnu': 4.26.0
+ '@rollup/rollup-linux-x64-gnu': 4.26.0
+ '@rollup/rollup-linux-x64-musl': 4.26.0
+ '@rollup/rollup-win32-arm64-msvc': 4.26.0
+ '@rollup/rollup-win32-ia32-msvc': 4.26.0
+ '@rollup/rollup-win32-x64-msvc': 4.26.0
fsevents: 2.3.3
rrweb-cssom@0.6.0: {}
@@ -22681,12 +21668,12 @@ snapshots:
vscode-oniguruma: 1.7.0
vscode-textmate: 8.0.0
- shiki@1.21.0:
+ shiki@1.22.2:
dependencies:
- '@shikijs/core': 1.21.0
- '@shikijs/engine-javascript': 1.21.0
- '@shikijs/engine-oniguruma': 1.21.0
- '@shikijs/types': 1.21.0
+ '@shikijs/core': 1.22.2
+ '@shikijs/engine-javascript': 1.22.2
+ '@shikijs/engine-oniguruma': 1.22.2
+ '@shikijs/types': 1.22.2
'@shikijs/vscode-textmate': 9.3.0
'@types/hast': 3.0.4
@@ -22715,7 +21702,7 @@ snapshots:
dependencies:
'@hapi/hoek': 11.0.4
'@hapi/wreck': 18.0.1
- debug: 4.3.5(supports-color@8.1.1)
+ debug: 4.3.5(supports-color@5.5.0)
joi: 17.11.0
transitivePeerDependencies:
- supports-color
@@ -22815,7 +21802,7 @@ snapshots:
socks-proxy-agent@8.0.2:
dependencies:
agent-base: 7.1.0
- debug: 4.3.5(supports-color@8.1.1)
+ debug: 4.3.5(supports-color@5.5.0)
socks: 2.7.1
transitivePeerDependencies:
- supports-color
@@ -22924,7 +21911,7 @@ snapshots:
arg: 5.0.2
bluebird: 3.7.2
check-more-types: 2.24.0
- debug: 4.3.7
+ debug: 4.3.7(supports-color@8.1.1)
execa: 5.1.1
lazy-ass: 1.6.0
ps-tree: 1.2.0
@@ -22940,22 +21927,24 @@ snapshots:
dependencies:
internal-slot: 1.0.5
- storybook-addon-misskey-theme@https://codeload.github.com/misskey-dev/storybook-addon-misskey-theme/tar.gz/cf583db098365b2ccc81a82f63ca9c93bc32b640(@storybook/blocks@8.3.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(@storybook/components@8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(@storybook/core-events@8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(@storybook/manager-api@8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(@storybook/preview-api@8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(@storybook/theming@8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(@storybook/types@8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
+ storybook-addon-misskey-theme@https://codeload.github.com/misskey-dev/storybook-addon-misskey-theme/tar.gz/cf583db098365b2ccc81a82f63ca9c93bc32b640(@storybook/blocks@8.4.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4)))(@storybook/components@8.4.4(storybook@8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4)))(@storybook/core-events@8.4.4(storybook@8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4)))(@storybook/manager-api@8.4.4(storybook@8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4)))(@storybook/preview-api@8.4.4(storybook@8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4)))(@storybook/theming@8.4.4(storybook@8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4)))(@storybook/types@8.4.4(storybook@8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
dependencies:
- '@storybook/blocks': 8.3.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))
- '@storybook/components': 8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))
- '@storybook/core-events': 8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))
- '@storybook/manager-api': 8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))
- '@storybook/preview-api': 8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))
- '@storybook/theming': 8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))
- '@storybook/types': 8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))
+ '@storybook/blocks': 8.4.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4))
+ '@storybook/components': 8.4.4(storybook@8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4))
+ '@storybook/core-events': 8.4.4(storybook@8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4))
+ '@storybook/manager-api': 8.4.4(storybook@8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4))
+ '@storybook/preview-api': 8.4.4(storybook@8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4))
+ '@storybook/theming': 8.4.4(storybook@8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4))
+ '@storybook/types': 8.4.4(storybook@8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4))
optionalDependencies:
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
- storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4):
+ storybook@8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4):
dependencies:
- '@storybook/core': 8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4)
+ '@storybook/core': 8.4.4(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@6.0.4)
+ optionalDependencies:
+ prettier: 3.3.3
transitivePeerDependencies:
- bufferutil
- supports-color
@@ -23078,8 +22067,6 @@ snapshots:
strip-final-newline@3.0.0: {}
- strip-final-newline@4.0.0: {}
-
strip-indent@3.0.0:
dependencies:
min-indent: 1.0.1
@@ -23101,17 +22088,17 @@ snapshots:
strtok3@7.0.0:
dependencies:
'@tokenizer/token': 0.3.0
- peek-readable: 5.1.3
+ peek-readable: 5.2.0
- strtok3@8.1.0:
+ strtok3@9.0.1:
dependencies:
'@tokenizer/token': 0.3.0
- peek-readable: 5.2.0
+ peek-readable: 5.3.1
- stylehacks@6.1.1(postcss@8.4.47):
+ stylehacks@6.1.1(postcss@8.4.49):
dependencies:
browserslist: 4.23.0
- postcss: 8.4.47
+ postcss: 8.4.49
postcss-selector-parser: 6.0.16
supports-color@5.5.0:
@@ -23168,14 +22155,10 @@ snapshots:
dependencies:
execa: 6.1.0
- telejson@7.2.0:
- dependencies:
- memoizerific: 1.11.3
-
- terser@5.33.0:
+ terser@5.36.0:
dependencies:
'@jridgewell/source-map': 0.3.6
- acorn: 8.12.1
+ acorn: 8.14.0
commander: 2.20.3
source-map-support: 0.5.21
@@ -23225,6 +22208,12 @@ snapshots:
tinyspy@3.0.2: {}
+ tldts-core@6.1.63: {}
+
+ tldts@6.1.63:
+ dependencies:
+ tldts-core: 6.1.63
+
tmp@0.2.3: {}
tmpl@1.0.5: {}
@@ -23264,6 +22253,10 @@ snapshots:
universalify: 0.2.0
url-parse: 1.5.10
+ tough-cookie@5.0.0:
+ dependencies:
+ tldts: 6.1.63
+
tr46@0.0.3: {}
tr46@5.0.0:
@@ -23272,6 +22265,8 @@ snapshots:
trace-redirect@1.0.6: {}
+ tree-kill@1.2.2: {}
+
trim-lines@3.0.1: {}
trim-newlines@3.0.1: {}
@@ -23286,27 +22281,19 @@ snapshots:
dependencies:
typescript: 5.1.6
- ts-api-utils@1.3.0(typescript@5.3.3):
- dependencies:
- typescript: 5.3.3
-
- ts-api-utils@1.3.0(typescript@5.5.4):
+ ts-api-utils@1.3.0(typescript@5.6.3):
dependencies:
- typescript: 5.5.4
+ typescript: 5.6.3
- ts-api-utils@1.3.0(typescript@5.6.2):
- dependencies:
- typescript: 5.6.2
-
- ts-case-convert@2.0.7: {}
+ ts-case-convert@2.1.0: {}
ts-dedent@2.2.0: {}
- ts-jest@29.1.2(@babel/core@7.24.7)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.7))(esbuild@0.23.1)(jest@29.7.0(@types/node@20.14.12))(typescript@5.1.6):
+ ts-jest@29.1.2(@babel/core@7.24.7)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.7))(esbuild@0.24.0)(jest@29.7.0(@types/node@22.9.0))(typescript@5.1.6):
dependencies:
bs-logger: 0.2.6
fast-json-stable-stringify: 2.1.0
- jest: 29.7.0(@types/node@20.14.12)
+ jest: 29.7.0(@types/node@22.9.0)
jest-util: 29.7.0
json5: 2.2.3
lodash.memoize: 4.1.2
@@ -23318,7 +22305,7 @@ snapshots:
'@babel/core': 7.24.7
'@jest/types': 29.6.3
babel-jest: 29.7.0(@babel/core@7.24.7)
- esbuild: 0.23.1
+ esbuild: 0.24.0
ts-map@1.0.3: {}
@@ -23391,7 +22378,7 @@ snapshots:
type-fest@2.19.0: {}
- type-fest@4.20.1: {}
+ type-fest@4.27.0: {}
type-is@1.6.18:
dependencies:
@@ -23467,7 +22454,7 @@ snapshots:
shiki: 0.14.7
typescript: 5.1.6
- typeorm@0.3.20(ioredis@5.4.1)(pg@8.13.0):
+ typeorm@0.3.20(ioredis@5.4.1)(pg@8.13.1):
dependencies:
'@sqltools/formatter': 1.2.5
app-root-path: 3.1.0
@@ -23475,7 +22462,7 @@ snapshots:
chalk: 4.1.2
cli-highlight: 2.1.11
dayjs: 1.11.10
- debug: 4.3.4(supports-color@5.5.0)
+ debug: 4.3.4
dotenv: 16.0.3
glob: 10.3.10
mkdirp: 2.1.6
@@ -23486,19 +22473,15 @@ snapshots:
yargs: 17.7.2
optionalDependencies:
ioredis: 5.4.1
- pg: 8.13.0
+ pg: 8.13.1
transitivePeerDependencies:
- supports-color
typescript@5.1.6: {}
- typescript@5.3.3: {}
-
typescript@5.4.2: {}
- typescript@5.5.4: {}
-
- typescript@5.6.2: {}
+ typescript@5.6.3: {}
ufo@1.3.2: {}
@@ -23521,8 +22504,6 @@ snapshots:
undefsafe@2.0.5: {}
- undici-types@5.26.5: {}
-
undici-types@6.19.8: {}
undici@5.28.2:
@@ -23531,8 +22512,6 @@ snapshots:
undici@6.20.0: {}
- unicorn-magic@0.3.0: {}
-
unified@11.0.4:
dependencies:
'@types/unist': 3.0.2
@@ -23586,7 +22565,7 @@ snapshots:
unplugin@1.4.0:
dependencies:
- acorn: 8.12.1
+ acorn: 8.14.0
chokidar: 3.5.3
webpack-sources: 3.2.3
webpack-virtual-modules: 0.5.0
@@ -23642,13 +22621,13 @@ snapshots:
uuid@9.0.1: {}
- v-code-diff@1.13.1(vue@3.5.11(typescript@5.6.2)):
+ v-code-diff@1.13.1(vue@3.5.12(typescript@5.6.3)):
dependencies:
diff: 5.2.0
diff-match-patch: 1.0.5
highlight.js: 11.10.0
- vue: 3.5.11(typescript@5.6.2)
- vue-demi: 0.14.7(vue@3.5.11(typescript@5.6.2))
+ vue: 3.5.12(typescript@5.6.3)
+ vue-demi: 0.14.7(vue@3.5.12(typescript@5.6.3))
v8-to-istanbul@9.2.0:
dependencies:
@@ -23682,13 +22661,13 @@ snapshots:
unist-util-stringify-position: 4.0.0
vfile-message: 4.0.2
- vite-node@1.6.0(@types/node@20.14.12)(sass@1.79.3)(terser@5.33.0):
+ vite-node@1.6.0(@types/node@22.9.0)(sass@1.79.3)(terser@5.36.0):
dependencies:
cac: 6.7.14
- debug: 4.3.5(supports-color@8.1.1)
+ debug: 4.3.7(supports-color@8.1.1)
pathe: 1.1.2
picocolors: 1.0.1
- vite: 5.4.8(@types/node@20.14.12)(sass@1.79.3)(terser@5.33.0)
+ vite: 5.4.11(@types/node@22.9.0)(sass@1.79.3)(terser@5.36.0)
transitivePeerDependencies:
- '@types/node'
- less
@@ -23700,13 +22679,13 @@ snapshots:
- supports-color
- terser
- vite-node@1.6.0(@types/node@20.14.12)(sass@1.79.4)(terser@5.33.0):
+ vite-node@1.6.0(@types/node@22.9.0)(sass@1.79.4)(terser@5.36.0):
dependencies:
cac: 6.7.14
- debug: 4.3.5(supports-color@8.1.1)
+ debug: 4.3.7(supports-color@8.1.1)
pathe: 1.1.2
picocolors: 1.0.1
- vite: 5.4.8(@types/node@20.14.12)(sass@1.79.4)(terser@5.33.0)
+ vite: 5.4.11(@types/node@22.9.0)(sass@1.79.4)(terser@5.36.0)
transitivePeerDependencies:
- '@types/node'
- less
@@ -23720,36 +22699,36 @@ snapshots:
vite-plugin-turbosnap@1.0.3: {}
- vite@5.4.8(@types/node@20.14.12)(sass@1.79.3)(terser@5.33.0):
+ vite@5.4.11(@types/node@22.9.0)(sass@1.79.3)(terser@5.36.0):
dependencies:
esbuild: 0.21.5
- postcss: 8.4.47
- rollup: 4.22.5
+ postcss: 8.4.49
+ rollup: 4.26.0
optionalDependencies:
- '@types/node': 20.14.12
+ '@types/node': 22.9.0
fsevents: 2.3.3
sass: 1.79.3
- terser: 5.33.0
+ terser: 5.36.0
- vite@5.4.8(@types/node@20.14.12)(sass@1.79.4)(terser@5.33.0):
+ vite@5.4.11(@types/node@22.9.0)(sass@1.79.4)(terser@5.36.0):
dependencies:
esbuild: 0.21.5
- postcss: 8.4.47
- rollup: 4.22.5
+ postcss: 8.4.49
+ rollup: 4.26.0
optionalDependencies:
- '@types/node': 20.14.12
+ '@types/node': 22.9.0
fsevents: 2.3.3
sass: 1.79.4
- terser: 5.33.0
+ terser: 5.36.0
- vitest-fetch-mock@0.2.2(encoding@0.1.13)(vitest@1.6.0(@types/node@20.14.12)(happy-dom@10.0.3)(jsdom@24.1.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(sass@1.79.3)(terser@5.33.0)):
+ vitest-fetch-mock@0.2.2(encoding@0.1.13)(vitest@1.6.0(@types/node@22.9.0)(happy-dom@10.0.3)(jsdom@24.1.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(sass@1.79.3)(terser@5.36.0)):
dependencies:
cross-fetch: 3.1.6(encoding@0.1.13)
- vitest: 1.6.0(@types/node@20.14.12)(happy-dom@10.0.3)(jsdom@24.1.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(sass@1.79.3)(terser@5.33.0)
+ vitest: 1.6.0(@types/node@22.9.0)(happy-dom@10.0.3)(jsdom@24.1.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(sass@1.79.3)(terser@5.36.0)
transitivePeerDependencies:
- encoding
- vitest@1.6.0(@types/node@20.14.12)(happy-dom@10.0.3)(jsdom@24.1.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(sass@1.79.3)(terser@5.33.0):
+ vitest@1.6.0(@types/node@22.9.0)(happy-dom@10.0.3)(jsdom@24.1.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(sass@1.79.3)(terser@5.36.0):
dependencies:
'@vitest/expect': 1.6.0
'@vitest/runner': 1.6.0
@@ -23758,7 +22737,7 @@ snapshots:
'@vitest/utils': 1.6.0
acorn-walk: 8.3.2
chai: 4.3.10
- debug: 4.3.4(supports-color@5.5.0)
+ debug: 4.3.4
execa: 8.0.1
local-pkg: 0.5.0
magic-string: 0.30.10
@@ -23768,11 +22747,11 @@ snapshots:
strip-literal: 2.1.0
tinybench: 2.6.0
tinypool: 0.8.4
- vite: 5.4.8(@types/node@20.14.12)(sass@1.79.3)(terser@5.33.0)
- vite-node: 1.6.0(@types/node@20.14.12)(sass@1.79.3)(terser@5.33.0)
+ vite: 5.4.11(@types/node@22.9.0)(sass@1.79.3)(terser@5.36.0)
+ vite-node: 1.6.0(@types/node@22.9.0)(sass@1.79.3)(terser@5.36.0)
why-is-node-running: 2.2.2
optionalDependencies:
- '@types/node': 20.14.12
+ '@types/node': 22.9.0
happy-dom: 10.0.3
jsdom: 24.1.1(bufferutil@4.0.8)(utf-8-validate@6.0.4)
transitivePeerDependencies:
@@ -23785,7 +22764,7 @@ snapshots:
- supports-color
- terser
- vitest@1.6.0(@types/node@20.14.12)(happy-dom@10.0.3)(jsdom@24.1.1)(sass@1.79.4)(terser@5.33.0):
+ vitest@1.6.0(@types/node@22.9.0)(happy-dom@10.0.3)(jsdom@24.1.1)(sass@1.79.4)(terser@5.36.0):
dependencies:
'@vitest/expect': 1.6.0
'@vitest/runner': 1.6.0
@@ -23794,7 +22773,7 @@ snapshots:
'@vitest/utils': 1.6.0
acorn-walk: 8.3.2
chai: 4.3.10
- debug: 4.3.4(supports-color@5.5.0)
+ debug: 4.3.4
execa: 8.0.1
local-pkg: 0.5.0
magic-string: 0.30.10
@@ -23804,11 +22783,11 @@ snapshots:
strip-literal: 2.1.0
tinybench: 2.6.0
tinypool: 0.8.4
- vite: 5.4.8(@types/node@20.14.12)(sass@1.79.4)(terser@5.33.0)
- vite-node: 1.6.0(@types/node@20.14.12)(sass@1.79.4)(terser@5.33.0)
+ vite: 5.4.11(@types/node@22.9.0)(sass@1.79.4)(terser@5.36.0)
+ vite-node: 1.6.0(@types/node@22.9.0)(sass@1.79.4)(terser@5.36.0)
why-is-node-running: 2.2.2
optionalDependencies:
- '@types/node': 20.14.12
+ '@types/node': 22.9.0
happy-dom: 10.0.3
jsdom: 24.1.1
transitivePeerDependencies:
@@ -23850,14 +22829,14 @@ snapshots:
vscode-uri@3.0.8: {}
- vue-component-meta@2.0.16(typescript@5.6.2):
+ vue-component-meta@2.0.16(typescript@5.6.3):
dependencies:
'@volar/typescript': 2.2.0
- '@vue/language-core': 2.0.16(typescript@5.6.2)
+ '@vue/language-core': 2.0.16(typescript@5.6.3)
path-browserify: 1.0.1
vue-component-type-helpers: 2.0.16
optionalDependencies:
- typescript: 5.6.2
+ typescript: 5.6.3
vue-component-type-helpers@1.8.4: {}
@@ -23865,31 +22844,29 @@ snapshots:
vue-component-type-helpers@2.1.10: {}
- vue-component-type-helpers@2.1.6: {}
-
- vue-demi@0.14.7(vue@3.5.11(typescript@5.6.2)):
+ vue-demi@0.14.7(vue@3.5.12(typescript@5.6.3)):
dependencies:
- vue: 3.5.11(typescript@5.6.2)
+ vue: 3.5.12(typescript@5.6.3)
- vue-docgen-api@4.75.1(vue@3.5.11(typescript@5.6.2)):
+ vue-docgen-api@4.75.1(vue@3.5.12(typescript@5.6.3)):
dependencies:
'@babel/parser': 7.25.7
'@babel/types': 7.25.7
- '@vue/compiler-dom': 3.5.10
- '@vue/compiler-sfc': 3.5.11
+ '@vue/compiler-dom': 3.5.11
+ '@vue/compiler-sfc': 3.5.12
ast-types: 0.16.1
hash-sum: 2.0.0
lru-cache: 8.0.4
pug: 3.0.3
recast: 0.23.6
ts-map: 1.0.3
- vue: 3.5.11(typescript@5.6.2)
- vue-inbrowser-compiler-independent-utils: 4.71.1(vue@3.5.11(typescript@5.6.2))
+ vue: 3.5.12(typescript@5.6.3)
+ vue-inbrowser-compiler-independent-utils: 4.71.1(vue@3.5.12(typescript@5.6.3))
- vue-eslint-parser@9.4.3(eslint@9.8.0):
+ vue-eslint-parser@9.4.3(eslint@9.14.0):
dependencies:
- debug: 4.3.4(supports-color@5.5.0)
- eslint: 9.8.0
+ debug: 4.3.4
+ eslint: 9.14.0
eslint-scope: 7.2.2
eslint-visitor-keys: 3.4.3
espree: 9.6.1
@@ -23899,46 +22876,36 @@ snapshots:
transitivePeerDependencies:
- supports-color
- vue-inbrowser-compiler-independent-utils@4.71.1(vue@3.5.11(typescript@5.6.2)):
+ vue-inbrowser-compiler-independent-utils@4.71.1(vue@3.5.12(typescript@5.6.3)):
dependencies:
- vue: 3.5.11(typescript@5.6.2)
+ vue: 3.5.12(typescript@5.6.3)
vue-template-compiler@2.7.14:
dependencies:
de-indent: 1.0.2
he: 1.2.0
- vue-tsc@2.1.6(typescript@5.6.2):
+ vue-tsc@2.1.10(typescript@5.6.3):
dependencies:
- '@volar/typescript': 2.4.6
- '@vue/language-core': 2.1.6(typescript@5.6.2)
- semver: 7.6.0
- typescript: 5.6.2
-
- vue@3.4.37(typescript@5.5.4):
- dependencies:
- '@vue/compiler-dom': 3.4.37
- '@vue/compiler-sfc': 3.4.37
- '@vue/runtime-dom': 3.4.37
- '@vue/server-renderer': 3.4.37(vue@3.4.37(typescript@5.5.4))
- '@vue/shared': 3.4.37
- optionalDependencies:
- typescript: 5.5.4
+ '@volar/typescript': 2.4.10
+ '@vue/language-core': 2.1.10(typescript@5.6.3)
+ semver: 7.6.3
+ typescript: 5.6.3
- vue@3.5.11(typescript@5.6.2):
+ vue@3.5.12(typescript@5.6.3):
dependencies:
- '@vue/compiler-dom': 3.5.11
- '@vue/compiler-sfc': 3.5.11
- '@vue/runtime-dom': 3.5.11
- '@vue/server-renderer': 3.5.11(vue@3.5.11(typescript@5.6.2))
- '@vue/shared': 3.5.11
+ '@vue/compiler-dom': 3.5.12
+ '@vue/compiler-sfc': 3.5.12
+ '@vue/runtime-dom': 3.5.12
+ '@vue/server-renderer': 3.5.12(vue@3.5.12(typescript@5.6.3))
+ '@vue/shared': 3.5.12
optionalDependencies:
- typescript: 5.6.2
+ typescript: 5.6.3
- vuedraggable@4.1.0(vue@3.5.11(typescript@5.6.2)):
+ vuedraggable@4.1.0(vue@3.5.12(typescript@5.6.3)):
dependencies:
sortablejs: 1.14.0
- vue: 3.5.11(typescript@5.6.2)
+ vue: 3.5.12(typescript@5.6.3)
w3c-xmlserializer@5.0.0:
dependencies:
@@ -24193,7 +23160,7 @@ snapshots:
yocto-queue@1.0.0: {}
- yoctocolors@2.0.2: {}
+ yoctocolors-cjs@2.1.2: {}
zip-stream@6.0.1:
dependencies: